Skip to content

Commit ab5bacf

Browse files
committed
feat: backup & restore activity tags
1 parent 3fb3b06 commit ab5bacf

File tree

5 files changed

+37
-13
lines changed

5 files changed

+37
-13
lines changed

app/src/main/java/to/bitkit/ext/TagMetadata.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ fun TagMetadataEntity.toActivityTagsMetadata() = ActivityTagsMetadata(
1313
createdAt.toULong(),
1414
)
1515

16-
fun ActivityTagsMetadata.TagMetadataEntity() = TagMetadataEntity(
16+
fun ActivityTagsMetadata.toTagMetadataEntity() = TagMetadataEntity(
1717
id,
1818
paymentHash,
1919
txId,

app/src/main/java/to/bitkit/models/BackupPayloads.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package to.bitkit.models
22

33
import com.synonym.bitkitcore.Activity
4+
import com.synonym.bitkitcore.ActivityTags
45
import com.synonym.bitkitcore.ActivityTagsMetadata
56
import com.synonym.bitkitcore.ClosedChannelDetails
67
import com.synonym.bitkitcore.IBtInfo
@@ -39,5 +40,6 @@ data class ActivityBackupV1(
3940
val version: Int = 1,
4041
val createdAt: Long,
4142
val activities: List<Activity>,
43+
val activityTags: List<ActivityTags>,
4244
val closedChannels: List<ClosedChannelDetails>,
4345
)

app/src/main/java/to/bitkit/repositories/ActivityRepo.kt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package to.bitkit.repositories
22

33
import com.synonym.bitkitcore.Activity
44
import com.synonym.bitkitcore.ActivityFilter
5+
import com.synonym.bitkitcore.ActivityTags
56
import com.synonym.bitkitcore.ClosedChannelDetails
67
import com.synonym.bitkitcore.IcJitEntry
78
import com.synonym.bitkitcore.LightningActivity
@@ -622,6 +623,17 @@ class ActivityRepo @Inject constructor(
622623
}
623624
}
624625

626+
/**
627+
* Get all [ActivityTags] for backup
628+
*/
629+
suspend fun getAllActivityTags(): Result<List<ActivityTags>> = withContext(bgDispatcher) {
630+
return@withContext runCatching {
631+
coreService.activity.getAllActivityTags()
632+
}.onFailure { e ->
633+
Logger.error("getAllActivityTags error", e, context = TAG)
634+
}
635+
}
636+
625637
suspend fun saveTagsMetadata(
626638
id: String,
627639
paymentHash: String? = null,
@@ -652,6 +664,7 @@ class ActivityRepo @Inject constructor(
652664
suspend fun restoreFromBackup(backup: ActivityBackupV1): Result<Unit> = withContext(bgDispatcher) {
653665
return@withContext runCatching {
654666
coreService.activity.upsertList(backup.activities)
667+
coreService.activity.upsertTags(backup.activityTags)
655668
coreService.activity.upsertClosedChannelList(backup.closedChannels)
656669
}
657670
}

app/src/main/java/to/bitkit/repositories/BackupRepo.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ import to.bitkit.di.json
3232
import to.bitkit.ext.formatPlural
3333
import to.bitkit.ext.nowMillis
3434
import to.bitkit.ext.toActivityTagsMetadata
35-
import to.bitkit.ext.TagMetadataEntity
35+
import to.bitkit.ext.toTagMetadataEntity
3636
import to.bitkit.models.ActivityBackupV1
3737
import to.bitkit.models.BackupCategory
3838
import to.bitkit.models.BackupItemStatus
@@ -396,10 +396,12 @@ class BackupRepo @Inject constructor(
396396
BackupCategory.ACTIVITY -> {
397397
val activities = activityRepo.getActivities().getOrDefault(emptyList())
398398
val closedChannels = activityRepo.getClosedChannels().getOrDefault(emptyList())
399+
val activityTags = activityRepo.getAllActivityTags().getOrDefault(emptyList())
399400

400401
val payload = ActivityBackupV1(
401402
createdAt = currentTimeMillis(),
402403
activities = activities,
404+
activityTags = activityTags,
403405
closedChannels = closedChannels,
404406
)
405407

@@ -424,7 +426,7 @@ class BackupRepo @Inject constructor(
424426
}
425427
Logger.debug("Restored caches: ${jsonLogOf(parsed.cache.copy(cachedRates = emptyList()))}", TAG)
426428
onCacheRestored()
427-
val tagMetadata = parsed.tagMetadata.map { it.TagMetadataEntity() }
429+
val tagMetadata = parsed.tagMetadata.map { it.toTagMetadataEntity() }
428430
db.tagMetadataDao().upsert(tagMetadata)
429431
Logger.debug("Restored caches and ${tagMetadata.size} tags metadata records", TAG)
430432
}
@@ -452,7 +454,8 @@ class BackupRepo @Inject constructor(
452454
val parsed = json.decodeFromString<ActivityBackupV1>(String(dataBytes))
453455
activityRepo.restoreFromBackup(parsed).onSuccess {
454456
Logger.debug(
455-
"Restored ${parsed.activities.size} activities, ${parsed.closedChannels.size} closed channels",
457+
"Restored ${parsed.activities.size} activities, ${parsed.activityTags.size} activity tags, " +
458+
"${parsed.closedChannels.size} closed channels",
456459
context = TAG,
457460
)
458461
}

app/src/main/java/to/bitkit/services/CoreService.kt

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ package to.bitkit.services
22

33
import com.synonym.bitkitcore.Activity
44
import com.synonym.bitkitcore.ActivityFilter
5+
import com.synonym.bitkitcore.ActivityTags
6+
import com.synonym.bitkitcore.ActivityTagsMetadata
57
import com.synonym.bitkitcore.BtOrderState2
68
import com.synonym.bitkitcore.CJitStateEnum
79
import com.synonym.bitkitcore.ClosedChannelDetails
@@ -28,6 +30,7 @@ import com.synonym.bitkitcore.estimateOrderFeeFull
2830
import com.synonym.bitkitcore.getActivities
2931
import com.synonym.bitkitcore.getActivityById
3032
import com.synonym.bitkitcore.getAllClosedChannels
33+
import com.synonym.bitkitcore.getAllTagMetadata
3134
import com.synonym.bitkitcore.getAllUniqueTags
3235
import com.synonym.bitkitcore.getCjitEntries
3336
import com.synonym.bitkitcore.getInfo
@@ -44,7 +47,6 @@ import com.synonym.bitkitcore.updateBlocktankUrl
4447
import com.synonym.bitkitcore.upsertActivities
4548
import com.synonym.bitkitcore.upsertActivity
4649
import com.synonym.bitkitcore.upsertCjitEntries
47-
import com.synonym.bitkitcore.upsertClosedChannel
4850
import com.synonym.bitkitcore.upsertClosedChannels
4951
import com.synonym.bitkitcore.upsertInfo
5052
import com.synonym.bitkitcore.upsertOrders
@@ -215,14 +217,6 @@ class ActivityService(
215217
upsertActivities(activities)
216218
}
217219

218-
suspend fun upsertClosedChannelItem(closedChannel: ClosedChannelDetails) = ServiceQueue.CORE.background {
219-
upsertClosedChannel(closedChannel)
220-
}
221-
222-
suspend fun upsertClosedChannelList(closedChannels: List<ClosedChannelDetails>) = ServiceQueue.CORE.background {
223-
upsertClosedChannels(closedChannels)
224-
}
225-
226220
suspend fun getActivity(id: String): Activity? {
227221
return ServiceQueue.CORE.background {
228222
getActivityById(id)
@@ -285,6 +279,18 @@ class ActivityService(
285279
}
286280
}
287281

282+
suspend fun upsertTags(activityTags: List<ActivityTags>) = ServiceQueue.CORE.background {
283+
com.synonym.bitkitcore.upsertTags(activityTags)
284+
}
285+
286+
suspend fun getAllActivityTags(): List<ActivityTags> = ServiceQueue.CORE.background {
287+
getAllTagMetadata().map { ActivityTags(it.id, tags = it.tags) }
288+
}
289+
290+
suspend fun upsertClosedChannelList(closedChannels: List<ClosedChannelDetails>) = ServiceQueue.CORE.background {
291+
upsertClosedChannels(closedChannels)
292+
}
293+
288294
suspend fun closedChannels(
289295
sortDirection: SortDirection,
290296
): List<ClosedChannelDetails> = ServiceQueue.CORE.background {

0 commit comments

Comments
 (0)