Coverage Summary for Class: BackupPickerLauncher_androidKt (com.georgeci.moneysurfer.feature.settings.backup)
| Class |
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
| BackupPickerLauncher_androidKt |
0%
(0/3)
|
0%
(0/20)
|
0%
(0/16)
|
0%
(0/233)
|
| BackupPickerLauncher_androidKt$rememberBackupPickerLauncher$1$1 |
0%
(0/3)
|
|
0%
(0/3)
|
0%
(0/16)
|
| Total |
0%
(0/6)
|
0%
(0/20)
|
0%
(0/19)
|
0%
(0/249)
|
package com.georgeci.moneysurfer.feature.settings.backup
import androidx.activity.compose.rememberLauncherForActivityResult
import androidx.activity.result.contract.ActivityResultContracts
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.platform.LocalContext
import okio.BufferedSink
import okio.BufferedSource
import okio.buffer
import okio.sink
import okio.source
@Composable
actual fun rememberBackupPickerLauncher(
format: BackupPickerFormat,
onSavePicked: (BufferedSink?) -> Unit,
onOpenPicked: (BufferedSource?) -> Unit,
): BackupPickerLauncher {
val context = LocalContext.current
val resolver = context.contentResolver
val saveLauncher = rememberLauncherForActivityResult(
contract = ActivityResultContracts.CreateDocument(format.saveMimeType),
) { uri ->
val sink = uri?.let { resolver.openOutputStream(it)?.sink()?.buffer() }
onSavePicked(sink)
}
val openLauncher = rememberLauncherForActivityResult(
contract = ActivityResultContracts.OpenDocument(),
) { uri ->
val source = uri?.let { resolver.openInputStream(it)?.source()?.buffer() }
onOpenPicked(source)
}
return remember(saveLauncher, openLauncher, format) {
object : BackupPickerLauncher {
override fun launchSave(suggestedName: String) {
saveLauncher.launch(suggestedName)
}
override fun launchOpen() {
openLauncher.launch(format.openMimeTypes.toTypedArray())
}
}
}
}