Skip to content

Commit c87f383

Browse files
sentinelwebsentinelweb
authored andcommitted
#496 - go back up to remotes from top level of file dialog
1 parent 5ea80f4 commit c87f383

File tree

3 files changed

+36
-16
lines changed

3 files changed

+36
-16
lines changed

shared/src/commonMain/kotlin/uk/co/sentinelweb/cuer/app/ui/filebrowser/dialog/DefaultFileDialogInteractions.kt

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,17 @@ class DefaultFileDialogInteractions(
4747
val parent = viewModel.path
4848
?.let { platformFileOperation.parent(AFile(it)) }
4949
?.path
50+
?.takeIf { it.isNotEmpty() }
51+
5052
log.d("onUp: $parent")
51-
viewModel.setPath(
52-
node = null,
53-
path = parent
54-
)
53+
if (parent != null) {
54+
viewModel.setPath(
55+
node = null,
56+
path = parent
57+
)
58+
} else {
59+
selectedNode?.also { selectedListener.invoke(it, null) }
60+
}
5561
}
5662

5763
companion object Factory {

shared/src/commonMain/kotlin/uk/co/sentinelweb/cuer/app/ui/filebrowser/dialog/FilesDialogComposeables.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,9 @@ object FilesDialogComposeables {
5555
icon = Res.drawable.ic_up,
5656
modifier = Modifier
5757
.weight(0.3f)
58-
.padding(4.dp)
59-
) { viewModel.currentFolder?.playlist?.also { onUp() } }
58+
.padding(4.dp),
59+
action = { onUp() },
60+
)
6061

6162
HeaderButton(
6263
text = "OK",

shared/src/commonMain/kotlin/uk/co/sentinelweb/cuer/app/ui/filebrowser/transfers/TransfersViewModel.kt

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import uk.co.sentinelweb.cuer.core.wrapper.createLogger
1515
import uk.co.sentinelweb.cuer.domain.*
1616
import uk.co.sentinelweb.cuer.domain.PlatformDomain.FILESYSTEM
1717
import uk.co.sentinelweb.cuer.domain.PlaylistDomain.PlaylistTypeDomain.FOLDER
18+
import uk.co.sentinelweb.cuer.domain.TransferDomain.AddressDomain
1819
import uk.co.sentinelweb.cuer.domain.TransferDomain.Status.Confirmed
1920
import uk.co.sentinelweb.cuer.domain.TransferDomain.Status.Initial
2021
import uk.co.sentinelweb.cuer.domain.ext.mapFilePath
@@ -87,19 +88,31 @@ class TransfersViewModel(
8788

8889
private fun onSet(isSource: Boolean) {
8990
val copy = if (isSource)
90-
{ t: TransferDomain, a: TransferDomain.AddressDomain -> t.copy(source = a) }
91+
{ t: TransferDomain, a: AddressDomain? -> t.copy(source = a) }
9192
else
92-
{ t: TransferDomain, a: TransferDomain.AddressDomain -> t.copy(target = a) }
93+
{ t: TransferDomain, a: AddressDomain? -> t.copy(target = a) }
9394

9495
val fileNodeSelected: (NodeDomain, Domain?) -> Unit = { fbNode, fbPath ->
95-
val updated = _stateObservable.value.selectedTransfer
96-
?.let { copy(it, TransferDomain.AddressDomain(fbNode, fbPath)) }
97-
?.also { service.addReplaceTransfer(it) }
98-
99-
_stateObservable.update { last ->
100-
last.copy(selectedTransfer = updated)
96+
log.d("fileNodeSelected \n$fbNode \n$fbPath")
97+
if (fbPath != null) {
98+
val updated = _stateObservable.value.selectedTransfer
99+
?.let { copy(it, AddressDomain(fbNode, fbPath)) }
100+
?.also { service.addReplaceTransfer(it) }
101+
102+
_stateObservable.update { last ->
103+
last.copy(selectedTransfer = updated)
104+
}
105+
filesDialogLauncher.hideDialog()
106+
} else {
107+
log.d("fileNodeSelected path is null")
108+
val updated = _stateObservable.value.selectedTransfer
109+
?.let { copy(it, null) }
110+
_stateObservable.updateAndGet { last ->
111+
last.copy(selectedTransfer = updated)
112+
}
113+
filesDialogLauncher.hideDialog()
114+
onSet(isSource)
101115
}
102-
filesDialogLauncher.hideDialog()
103116
}
104117

105118
val address = _stateObservable.value.selectedTransfer
@@ -108,7 +121,7 @@ class TransfersViewModel(
108121
}
109122

110123
private fun showDialog(
111-
address: TransferDomain.AddressDomain?,
124+
address: AddressDomain?,
112125
fileSelected: (NodeDomain, Domain?) -> Unit
113126
) {
114127
val path = address?.path

0 commit comments

Comments
 (0)