mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-17 21:27:01 +05:30
app: add BackupHandler
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
This commit is contained in:
parent
d86d12f2db
commit
a08109d745
2 changed files with 53 additions and 0 deletions
|
@ -0,0 +1,32 @@
|
|||
package dev.msfjarvis.lobsters.data.backup
|
||||
|
||||
import com.squareup.moshi.Moshi
|
||||
import com.squareup.moshi.adapter
|
||||
import dev.msfjarvis.lobsters.data.local.SavedPost
|
||||
import dev.msfjarvis.lobsters.database.LobstersDatabase
|
||||
import javax.inject.Inject
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.withContext
|
||||
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
class BackupHandler
|
||||
@Inject
|
||||
constructor(
|
||||
private val database: LobstersDatabase,
|
||||
moshi: Moshi,
|
||||
) {
|
||||
private val adapter = moshi.adapter<List<SavedPost>>()
|
||||
|
||||
suspend fun exportSavedPosts(): String {
|
||||
val posts =
|
||||
withContext(Dispatchers.IO) { database.savedPostQueries.selectAllPosts().executeAsList() }
|
||||
return adapter.toJson(posts)
|
||||
}
|
||||
|
||||
suspend fun importSavedPosts(json: String) {
|
||||
withContext(Dispatchers.IO) {
|
||||
val posts = requireNotNull(adapter.fromJson(json))
|
||||
database.transaction { posts.forEach { database.savedPostQueries.insertOrReplacePost(it) } }
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
package dev.msfjarvis.lobsters.injection
|
||||
|
||||
import com.squareup.moshi.Moshi
|
||||
import dagger.Module
|
||||
import dagger.Provides
|
||||
import dagger.hilt.InstallIn
|
||||
import dagger.hilt.android.components.ActivityComponent
|
||||
import dev.msfjarvis.lobsters.data.backup.BackupHandler
|
||||
import dev.msfjarvis.lobsters.database.LobstersDatabase
|
||||
|
||||
@Module
|
||||
@InstallIn(ActivityComponent::class)
|
||||
object BackupModule {
|
||||
@Provides
|
||||
fun provideBackupHandler(
|
||||
database: LobstersDatabase,
|
||||
moshi: Moshi,
|
||||
): BackupHandler {
|
||||
return BackupHandler(database, moshi)
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue