Skip to content

Commit 4d8583d

Browse files
committed
refactor: simplify and unify DatabaseFilePicker instantiation
- Remove the redundant `rememberDatabaseFilePicker` wrapper and promote `rememberPlatformDatabaseFilePicker` to public visibility. - Update `SettingsDetailScreen` and all platform implementations (Android, iOS, JVM, WasmJs) to use the unified `rememberPlatformDatabaseFilePicker` function. - Clean up implementation syntax in JVM and WasmJs modules for better readability. - Add explicit parameter names to `rememberLauncherForActivityResult` in the Android implementation.
1 parent e248b00 commit 4d8583d

File tree

6 files changed

+37
-45
lines changed

6 files changed

+37
-45
lines changed

feature/backup/ui/src/androidMain/kotlin/com/softartdev/notedelight/ui/settings/detail/DatabaseFilePicker.android.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,16 @@ import androidx.compose.runtime.mutableStateOf
77
import androidx.compose.runtime.remember
88

99
@Composable
10-
internal actual fun rememberPlatformDatabaseFilePicker(): DatabaseFilePicker {
10+
actual fun rememberPlatformDatabaseFilePicker(): DatabaseFilePicker {
1111
val exportCallback = remember { mutableStateOf<(String?) -> Unit>({}) }
1212
val importCallback = remember { mutableStateOf<(String?) -> Unit>({}) }
1313
val exportLauncher = rememberLauncherForActivityResult(
14-
ActivityResultContracts.CreateDocument("application/octet-stream")
14+
contract = ActivityResultContracts.CreateDocument("application/octet-stream")
1515
) { uri ->
1616
exportCallback.value(uri?.toString())
1717
}
1818
val importLauncher = rememberLauncherForActivityResult(
19-
ActivityResultContracts.OpenDocument()
19+
contract = ActivityResultContracts.OpenDocument()
2020
) { uri ->
2121
importCallback.value(uri?.toString())
2222
}

feature/backup/ui/src/commonMain/kotlin/com/softartdev/notedelight/ui/settings/detail/DatabaseFilePicker.kt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,4 @@ interface DatabaseFilePicker {
88
}
99

1010
@Composable
11-
fun rememberDatabaseFilePicker(): DatabaseFilePicker = rememberPlatformDatabaseFilePicker()
12-
13-
@Composable
14-
internal expect fun rememberPlatformDatabaseFilePicker(): DatabaseFilePicker
11+
expect fun rememberPlatformDatabaseFilePicker(): DatabaseFilePicker

feature/backup/ui/src/iosMain/kotlin/com/softartdev/notedelight/ui/settings/detail/DatabaseFilePicker.ios.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.softartdev.notedelight.ui.settings.detail
22

33
import androidx.compose.runtime.Composable
4+
import androidx.compose.runtime.MutableState
45
import androidx.compose.runtime.mutableStateOf
56
import androidx.compose.runtime.remember
67
import platform.Foundation.NSURL
@@ -12,8 +13,8 @@ import platform.UIKit.UIViewController
1213
import platform.darwin.NSObject
1314

1415
@Composable
15-
internal actual fun rememberPlatformDatabaseFilePicker(): DatabaseFilePicker {
16-
val delegateHolder = remember { mutableStateOf<NSObject?>(null) }
16+
actual fun rememberPlatformDatabaseFilePicker(): DatabaseFilePicker {
17+
val delegateHolder: MutableState<NSObject?> = remember { mutableStateOf(null) }
1718
return remember {
1819
object : DatabaseFilePicker {
1920
override fun launchExport(defaultFileName: String, onPicked: (String?) -> Unit) {

feature/backup/ui/src/jvmMain/kotlin/com/softartdev/notedelight/ui/settings/detail/DatabaseFilePicker.jvm.kt

Lines changed: 22 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -6,33 +6,30 @@ import java.awt.FileDialog
66
import java.io.File
77

88
@Composable
9-
internal actual fun rememberPlatformDatabaseFilePicker(): DatabaseFilePicker {
10-
return remember {
11-
object : DatabaseFilePicker {
12-
override fun launchExport(defaultFileName: String, onPicked: (String?) -> Unit) {
13-
val dialog = FileDialog(null as java.awt.Frame?, "Export Database", FileDialog.SAVE)
14-
dialog.file = defaultFileName
15-
dialog.isVisible = true
16-
val fileName = dialog.file
17-
val directory = dialog.directory
18-
if (fileName.isNullOrEmpty() || directory.isNullOrEmpty()) {
19-
onPicked(null)
20-
return
21-
}
22-
onPicked(File(directory, fileName).absolutePath)
9+
actual fun rememberPlatformDatabaseFilePicker(): DatabaseFilePicker = remember {
10+
object : DatabaseFilePicker {
11+
override fun launchExport(defaultFileName: String, onPicked: (String?) -> Unit) {
12+
val dialog = FileDialog(null as java.awt.Frame?, "Export Database", FileDialog.SAVE)
13+
dialog.file = defaultFileName
14+
dialog.isVisible = true
15+
val fileName = dialog.file
16+
val directory = dialog.directory
17+
if (fileName.isNullOrEmpty() || directory.isNullOrEmpty()) {
18+
onPicked(null)
19+
return
2320
}
24-
25-
override fun launchImport(onPicked: (String?) -> Unit) {
26-
val dialog = FileDialog(null as java.awt.Frame?, "Import Database", FileDialog.LOAD)
27-
dialog.isVisible = true
28-
val fileName = dialog.file
29-
val directory = dialog.directory
30-
if (fileName.isNullOrEmpty() || directory.isNullOrEmpty()) {
31-
onPicked(null)
32-
return
33-
}
34-
onPicked(File(directory, fileName).absolutePath)
21+
onPicked(File(directory, fileName).absolutePath)
22+
}
23+
override fun launchImport(onPicked: (String?) -> Unit) {
24+
val dialog = FileDialog(null as java.awt.Frame?, "Import Database", FileDialog.LOAD)
25+
dialog.isVisible = true
26+
val fileName = dialog.file
27+
val directory = dialog.directory
28+
if (fileName.isNullOrEmpty() || directory.isNullOrEmpty()) {
29+
onPicked(null)
30+
return
3531
}
32+
onPicked(File(directory, fileName).absolutePath)
3633
}
3734
}
3835
}

feature/backup/ui/src/wasmJsMain/kotlin/com/softartdev/notedelight/ui/settings/detail/DatabaseFilePicker.wasmJs.kt

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,13 @@ import androidx.compose.runtime.Composable
44
import androidx.compose.runtime.remember
55

66
@Composable
7-
internal actual fun rememberPlatformDatabaseFilePicker(): DatabaseFilePicker {
8-
return remember {
9-
object : DatabaseFilePicker {
10-
override fun launchExport(defaultFileName: String, onPicked: (String?) -> Unit) {
11-
onPicked(null)
12-
}
13-
14-
override fun launchImport(onPicked: (String?) -> Unit) {
15-
onPicked(null)
16-
}
7+
actual fun rememberPlatformDatabaseFilePicker(): DatabaseFilePicker = remember {
8+
object : DatabaseFilePicker {
9+
override fun launchExport(defaultFileName: String, onPicked: (String?) -> Unit) {
10+
onPicked(null)
11+
}
12+
override fun launchImport(onPicked: (String?) -> Unit) {
13+
onPicked(null)
1714
}
1815
}
1916
}

ui/shared/src/commonMain/kotlin/com/softartdev/notedelight/ui/settings/detail/SettingsDetailScreen.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ private fun InfoPreferences(
237237
@Composable
238238
private fun BackupPreferences(
239239
onAction: (SettingsAction) -> Unit,
240-
databaseFilePicker: DatabaseFilePicker = rememberDatabaseFilePicker(),
240+
databaseFilePicker: DatabaseFilePicker = rememberPlatformDatabaseFilePicker(),
241241
) {
242242
Preference(
243243
modifier = Modifier.testTag(EXPORT_DATABASE_BUTTON_TAG),

0 commit comments

Comments
 (0)