Coverage Summary for Class: BackupPickerLauncher_jvmKt (com.georgeci.moneysurfer.feature.settings.backup)
| Class |
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
| BackupPickerLauncher_jvmKt |
0%
(0/2)
|
0%
(0/10)
|
0%
(0/10)
|
0%
(0/118)
|
| BackupPickerLauncher_jvmKt$rememberBackupPickerLauncher$1$1 |
0%
(0/3)
|
0%
(0/4)
|
0%
(0/7)
|
0%
(0/47)
|
| Total |
0%
(0/5)
|
0%
(0/14)
|
0%
(0/17)
|
0%
(0/165)
|
package com.georgeci.moneysurfer.feature.settings.backup
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import okio.BufferedSink
import okio.BufferedSource
import okio.buffer
import okio.sink
import okio.source
import java.awt.FileDialog
import java.awt.Frame
import java.io.File
@Composable
actual fun rememberBackupPickerLauncher(
@Suppress("UNUSED_PARAMETER") format: BackupPickerFormat,
onSavePicked: (BufferedSink?) -> Unit,
onOpenPicked: (BufferedSource?) -> Unit,
): BackupPickerLauncher = remember(onSavePicked, onOpenPicked) {
object : BackupPickerLauncher {
override fun launchSave(suggestedName: String) {
val file = chooseFile(mode = FileDialog.SAVE, defaultName = suggestedName)
val sink = file?.let { it.sink().buffer() }
onSavePicked(sink)
}
override fun launchOpen() {
val file = chooseFile(mode = FileDialog.LOAD)
val source = file?.let { it.source().buffer() }
onOpenPicked(source)
}
}
}
private fun chooseFile(mode: Int, defaultName: String? = null): File? {
val dialog = FileDialog(null as Frame?, "MoneySurfer backup", mode)
if (defaultName != null) dialog.file = defaultName
dialog.isVisible = true
val dir = dialog.directory ?: return null
val name = dialog.file ?: return null
return File(dir, name)
}