feat: [DEEPLINK] add history (#248)

Co-authored-by: Florent Champigny <florent@bere.al>
This commit is contained in:
Florent CHAMPIGNY 2025-09-16 20:49:58 +02:00 committed by GitHub
parent 05045ef0b4
commit e52f5c1687
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
21 changed files with 332 additions and 24 deletions

View file

@ -9,4 +9,21 @@ interface DeeplinkLocalDataSource {
suspend fun update(deviceIdAndPackageNameDomainModel: DeviceIdAndPackageNameDomainModel, deeplinks: List<DeeplinkDomainModel>)
fun observe(deviceIdAndPackageNameDomainModel: DeviceIdAndPackageNameDomainModel): Flow<List<DeeplinkDomainModel>>
fun observeHistory(deviceIdAndPackageNameDomainModel: DeviceIdAndPackageNameDomainModel): Flow<List<DeeplinkDomainModel>>
suspend fun addToHistory(
deviceIdAndPackageName: DeviceIdAndPackageNameDomainModel,
item: DeeplinkDomainModel
)
suspend fun removeFromHistory(
deviceIdAndPackageName: DeviceIdAndPackageNameDomainModel,
deeplinkId: Long,
)
suspend fun getDeeplinkById(
deeplinkId: Long,
deviceIdAndPackageName: DeviceIdAndPackageNameDomainModel
): DeeplinkDomainModel?
}

View file

@ -11,6 +11,7 @@ import io.github.openflocon.domain.messages.models.FloconIncomingMessageDomainMo
import io.github.openflocon.domain.messages.repository.MessagesReceiverRepository
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flowOn
import kotlinx.coroutines.withContext
class DeeplinkRepositoryImpl(
private val localDeeplinkDataSource: DeeplinkLocalDataSource,
@ -46,4 +47,40 @@ class DeeplinkRepositoryImpl(
override fun observe(deviceIdAndPackageName: DeviceIdAndPackageNameDomainModel): Flow<List<DeeplinkDomainModel>> = localDeeplinkDataSource.observe(deviceIdAndPackageName)
.flowOn(dispatcherProvider.data)
override suspend fun getDeeplinkById(
deeplinkId: Long,
deviceIdAndPackageName: DeviceIdAndPackageNameDomainModel
): DeeplinkDomainModel? {
return withContext(dispatcherProvider.data) {
localDeeplinkDataSource.getDeeplinkById(deeplinkId, deviceIdAndPackageName)
}
}
override fun observeHistory(deviceIdAndPackageName: DeviceIdAndPackageNameDomainModel): Flow<List<DeeplinkDomainModel>> = localDeeplinkDataSource.observeHistory(deviceIdAndPackageName)
.flowOn(dispatcherProvider.data)
override suspend fun addToHistory(
item: DeeplinkDomainModel,
deviceIdAndPackageName: DeviceIdAndPackageNameDomainModel
) {
withContext(dispatcherProvider.data) {
localDeeplinkDataSource.addToHistory(
deviceIdAndPackageName = deviceIdAndPackageName,
item = item,
)
}
}
override suspend fun removeFromHistory(
deeplinkId: Long,
deviceIdAndPackageName: DeviceIdAndPackageNameDomainModel
) {
withContext(dispatcherProvider.data) {
localDeeplinkDataSource.removeFromHistory(
deviceIdAndPackageName = deviceIdAndPackageName,
deeplinkId = deeplinkId
)
}
}
}