Skip to content

Commit 492fb0b

Browse files
committed
Fix FileDestinationPickerActivity
1 parent 3c59a61 commit 492fb0b

3 files changed

Lines changed: 29 additions & 24 deletions

File tree

core/datastore/src/main/kotlin/com/w2sv/datastore/proto/navigatorconfig/NavigatorConfigMapper.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.w2sv.datastore.proto.navigatorconfig
22

3-
import com.w2sv.common.util.map
43
import com.w2sv.datastore.AutoMoveConfigProto
54
import com.w2sv.datastore.FileTypeConfigProto
65
import com.w2sv.datastore.NavigatorConfigProto
@@ -18,6 +17,7 @@ import com.w2sv.domain.model.navigatorconfig.AutoMoveConfig
1817
import com.w2sv.domain.model.navigatorconfig.FileTypeConfig
1918
import com.w2sv.domain.model.navigatorconfig.NavigatorConfig
2019
import com.w2sv.domain.model.navigatorconfig.SourceConfig
20+
import com.w2sv.kotlinutils.map
2121

2222
fun NavigatorConfig.toProto(hasBeenMigrated: Boolean): NavigatorConfigProto =
2323
NavigatorConfigMapper.toProto(this, hasBeenMigrated)

core/navigator/src/main/kotlin/com/w2sv/navigator/moving/api/activity/AbstractDestinationPickerActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ internal abstract class AbstractDestinationPickerActivity : AbstractMoveActivity
3131
val pickerStartDestination: DocumentUri?
3232

3333
companion object {
34-
const val EXTRA = "com.w2sv.navigator.extra.DestinationPickerActivity.Args"
34+
const val EXTRA = "com.w2sv.navigator.extra.AbstractDestinationPickerActivity.Args"
3535
}
3636
}
3737

core/navigator/src/main/kotlin/com/w2sv/navigator/notifications/appnotifications/movefile/FileDestinationPickerActivity.kt

Lines changed: 27 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -48,28 +48,33 @@ internal class FileDestinationPickerActivity : AbstractDestinationPickerActivity
4848
documentCreator.launch(args.moveFile.mediaStoreFileData.name)
4949
}
5050

51-
private val documentCreator = registerForActivityResult(
52-
object :
53-
ActivityResultContracts.CreateDocument(args.moveFile.fileType.simpleStorageMediaType.mimeType) {
54-
override fun createIntent(context: Context, input: String): Intent {
55-
return super.createIntent(context, input)
56-
.addCategory(Intent.CATEGORY_OPENABLE)
57-
.apply {
58-
// Set picker start location
59-
intent.putExtra(
60-
DocumentsContract.EXTRA_INITIAL_URI,
61-
args.pickerStartDestination?.uri
62-
)
63-
}
64-
}
65-
},
66-
callback = { contentUri ->
67-
if (contentUri != null) {
68-
onDocumentCreated(contentUri)
51+
/**
52+
* Must be lazy, as it accesses [args], which depend on the activity's [getIntent] being non-null, which is only guaranteed [onCreate].
53+
* Will be initialized during [onCreate], which calls [launchPicker].
54+
*/
55+
private val documentCreator by threadUnsafeLazy {
56+
registerForActivityResult(
57+
object :
58+
ActivityResultContracts.CreateDocument(args.moveFile.fileType.simpleStorageMediaType.mimeType) {
59+
override fun createIntent(context: Context, input: String): Intent =
60+
super.createIntent(context, input)
61+
.addCategory(Intent.CATEGORY_OPENABLE)
62+
.apply {
63+
// Set picker start location
64+
intent.putExtra(
65+
DocumentsContract.EXTRA_INITIAL_URI,
66+
args.pickerStartDestination?.uri
67+
)
68+
}
69+
},
70+
callback = { contentUri ->
71+
if (contentUri != null) {
72+
onDocumentCreated(contentUri)
73+
}
74+
finishAndRemoveTask()
6975
}
70-
finishAndRemoveTask()
71-
}
72-
)
76+
)
77+
}
7378

7479
/**
7580
* @param contentUri E.g.: __content://com.android.externalstorage.documents/document/primary%3AMoved%2FScreenshots%2FScreenshot_2024-09-08-01-29-28-913_com.w2sv.filenavigator.debug.jpg__
@@ -97,7 +102,7 @@ internal class FileDestinationPickerActivity : AbstractDestinationPickerActivity
97102
}
98103
}
99104

100-
MoveBroadcastReceiver.Companion.sendBroadcast(
105+
MoveBroadcastReceiver.sendBroadcast(
101106
moveBundle = MoveBundle.FileDestinationPicked(
102107
file = args.moveFile,
103108
destination = destination,

0 commit comments

Comments
 (0)