@@ -6,6 +6,7 @@ import kotlinx.coroutines.CoroutineDispatcher
66import kotlinx.coroutines.CoroutineScope
77import kotlinx.coroutines.Job
88import kotlinx.coroutines.SupervisorJob
9+ import kotlinx.coroutines.currentCoroutineContext
910import kotlinx.coroutines.delay
1011import kotlinx.coroutines.flow.MutableStateFlow
1112import kotlinx.coroutines.flow.StateFlow
@@ -15,6 +16,7 @@ import kotlinx.coroutines.flow.drop
1516import kotlinx.coroutines.flow.first
1617import kotlinx.coroutines.flow.map
1718import kotlinx.coroutines.flow.update
19+ import kotlinx.coroutines.isActive
1820import kotlinx.coroutines.launch
1921import kotlinx.coroutines.withContext
2022import kotlinx.datetime.Clock
@@ -190,6 +192,7 @@ class BackupRepo @Inject constructor(
190192 dataListenerJobs.add(tagMetadataJob)
191193
192194 // METADATA - Observe entire CacheStore excluding backup statuses
195+ // TODO use PreActivityMetadata
193196 val cacheMetadataJob = scope.launch {
194197 cacheStore.data
195198 .map { it.copy(backupStatuses = mapOf ()) }
@@ -244,7 +247,7 @@ class BackupRepo @Inject constructor(
244247
245248 private fun startPeriodicBackupFailureCheck () {
246249 periodicCheckJob = scope.launch {
247- while (true ) {
250+ while (currentCoroutineContext().isActive ) {
248251 delay(BACKUP_CHECK_INTERVAL )
249252 checkForFailedBackups()
250253 }
@@ -374,6 +377,8 @@ class BackupRepo @Inject constructor(
374377 BackupCategory .METADATA -> {
375378 val tagMetadata = db.tagMetadataDao().getAll().map { it.toActivityTagsMetadata() }
376379 val cacheData = cacheStore.data.first().copy(onchainAddress = " " ) // Force onchain address rotation
380+ // TODO use PreActivityMetadata
381+ // val preActivityMetadata = activityRepo.getAllPreActivityMetadata().getOrDefault(emptyList())
377382
378383 val payload = MetadataBackupV1 (
379384 createdAt = currentTimeMillis(),
@@ -400,7 +405,7 @@ class BackupRepo @Inject constructor(
400405 BackupCategory .ACTIVITY -> {
401406 val activities = activityRepo.getActivities().getOrDefault(emptyList())
402407 val closedChannels = activityRepo.getClosedChannels().getOrDefault(emptyList())
403- val activityTags = activityRepo.getAllActivityTags ().getOrDefault(emptyList())
408+ val activityTags = activityRepo.getAllActivitiesTags ().getOrDefault(emptyList())
404409
405410 val payload = ActivityBackupV1 (
406411 createdAt = currentTimeMillis(),
@@ -430,9 +435,11 @@ class BackupRepo @Inject constructor(
430435 }
431436 Logger .debug(" Restored caches: ${jsonLogOf(parsed.cache.copy(cachedRates = emptyList()))} " , TAG )
432437 onCacheRestored()
438+ // TODO use PreActivityMetadata
439+ // activityRepo.upsertPreActivityMetadata(parsed.tagMetadata)
433440 val tagMetadata = parsed.tagMetadata.map { it.toTagMetadataEntity() }
434441 db.tagMetadataDao().upsert(tagMetadata)
435- Logger .debug(" Restored caches and ${tagMetadata.size} tags metadata records " , TAG )
442+ Logger .debug(" Restored caches, ${tagMetadata.size} pre-activity metadata" , TAG )
436443 }
437444
438445 performRestore(BackupCategory .SETTINGS ) { dataBytes ->
@@ -456,13 +463,7 @@ class BackupRepo @Inject constructor(
456463 }
457464 performRestore(BackupCategory .ACTIVITY ) { dataBytes ->
458465 val parsed = json.decodeFromString<ActivityBackupV1 >(String (dataBytes))
459- activityRepo.restoreFromBackup(parsed).onSuccess {
460- Logger .debug(
461- " Restored ${parsed.activities.size} activities, ${parsed.activityTags.size} activity tags, " +
462- " ${parsed.closedChannels.size} closed channels" ,
463- context = TAG ,
464- )
465- }
466+ activityRepo.restoreFromBackup(parsed)
466467 }
467468
468469 Logger .info(" Full restore success" , context = TAG )
0 commit comments