Skip to content

Commit 7c3a476

Browse files
Refactor save dialog handling to use selectedLink instead of saveDialogInfo (#89)
1 parent 58177ae commit 7c3a476

File tree

2 files changed

+21
-20
lines changed

2 files changed

+21
-20
lines changed

app/src/main/java/com/yogeshpaliyal/deepr/ui/screens/home/Home.kt

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ fun HomeScreen(
8787
var isSearchActive by remember { mutableStateOf(false) }
8888
var isTagsSelectionActive by remember { mutableStateOf(false) }
8989
var searchQuery by remember { mutableStateOf("") }
90-
var saveDialogInfo by remember { mutableStateOf<SaveDialogInfo?>(null) }
90+
var selectedLink by remember { mutableStateOf<GetLinksAndTags?>(null) }
9191
val selectedTag = viewModel.selectedTagFilter.collectAsStateWithLifecycle()
9292
val hazeState = rememberHazeState()
9393
val context = LocalContext.current
@@ -99,7 +99,7 @@ fun HomeScreen(
9999
Toast.makeText(context, "No Data found", Toast.LENGTH_SHORT).show()
100100
} else {
101101
if (isValidDeeplink(result.contents)) {
102-
saveDialogInfo = SaveDialogInfo(createDeeprObject(link = result.contents), false)
102+
selectedLink = createDeeprObject(link = result.contents)
103103
} else {
104104
Toast.makeText(context, "Invalid deeplink", Toast.LENGTH_SHORT).show()
105105
}
@@ -108,9 +108,9 @@ fun HomeScreen(
108108

109109
// Handle shared text from other apps
110110
LaunchedEffect(sharedText) {
111-
if (!sharedText.isNullOrBlank() && saveDialogInfo == null) {
111+
if (!sharedText.isNullOrBlank() && selectedLink == null) {
112112
if (isValidDeeplink(sharedText)) {
113-
saveDialogInfo = SaveDialogInfo(createDeeprObject(link = sharedText), false)
113+
selectedLink = createDeeprObject(link = sharedText)
114114
} else {
115115
Toast
116116
.makeText(context, "Invalid deeplink from shared content", Toast.LENGTH_SHORT)
@@ -206,7 +206,7 @@ fun HomeScreen(
206206
},
207207
floatingActionButton = {
208208
FloatingActionButton(onClick = {
209-
saveDialogInfo = SaveDialogInfo(createDeeprObject(), true)
209+
selectedLink = createDeeprObject()
210210
}) {
211211
Icon(
212212
TablerIcons.Plus,
@@ -227,22 +227,22 @@ fun HomeScreen(
227227
contentPaddingValues = contentPadding,
228228
selectedTag = selectedTag.value,
229229
editDeepr = {
230-
saveDialogInfo = SaveDialogInfo(it, false)
230+
selectedLink = it
231231
},
232232
)
233233
}
234234

235-
saveDialogInfo?.let {
235+
selectedLink?.let {
236236
HomeBottomContent(
237237
deeprQueries = deeprQueries,
238-
saveDialogInfo = it,
238+
selectedLink = it,
239239
) { updatedValue ->
240240
if (updatedValue != null) {
241241
if (updatedValue.executeAfterSave) {
242242
openDeeplink(context, updatedValue.deepr.link)
243243
}
244244
}
245-
saveDialogInfo = null
245+
selectedLink = null
246246
resetSharedText()
247247
}
248248
}

app/src/main/java/com/yogeshpaliyal/deepr/ui/screens/home/HomeBottomContent.kt

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ import androidx.compose.ui.platform.LocalContext
4141
import androidx.compose.ui.res.stringResource
4242
import androidx.compose.ui.unit.dp
4343
import com.yogeshpaliyal.deepr.DeeprQueries
44+
import com.yogeshpaliyal.deepr.GetLinksAndTags
4445
import com.yogeshpaliyal.deepr.R
4546
import com.yogeshpaliyal.deepr.Tags
4647
import com.yogeshpaliyal.deepr.util.isValidDeeplink
@@ -59,14 +60,14 @@ import kotlin.text.clear
5960
@Composable
6061
fun HomeBottomContent(
6162
deeprQueries: DeeprQueries,
62-
saveDialogInfo: SaveDialogInfo,
63+
selectedLink: GetLinksAndTags,
6364
modifier: Modifier = Modifier,
6465
viewModel: AccountViewModel = koinInject(),
6566
onSaveDialogInfoChange: ((SaveDialogInfo?) -> Unit) = {},
6667
) {
67-
var deeprInfo by remember(saveDialogInfo) {
68+
var deeprInfo by remember(selectedLink) {
6869
mutableStateOf(
69-
saveDialogInfo.deepr,
70+
selectedLink,
7071
)
7172
}
7273
var isError by remember { mutableStateOf(false) }
@@ -76,16 +77,16 @@ fun HomeBottomContent(
7677
val allTags by viewModel.allTags.collectAsState()
7778
val selectedTags = remember { mutableStateListOf<Tags>() }
7879
val initialSelectedTags = remember { mutableStateListOf<Tags>() }
79-
val isCreate = saveDialogInfo.deepr.id == 0L
80+
val isCreate = selectedLink.id == 0L
8081

8182
// Initialize selected tags if in edit mode
8283
LaunchedEffect(isCreate) {
8384
if (isCreate.not()) {
8485
val existingTags =
85-
saveDialogInfo.deepr.tagsIds?.split(",")?.mapIndexed { index, tagId ->
86+
selectedLink.tagsIds?.split(",")?.mapIndexed { index, tagId ->
8687
Tags(
8788
tagId.trim().toLong(),
88-
saveDialogInfo.deepr.tagsNames
89+
selectedLink.tagsNames
8990
?.split(",")
9091
?.getOrNull(index)
9192
?.trim()
@@ -101,7 +102,7 @@ fun HomeBottomContent(
101102
}
102103
}
103104

104-
val save = {
105+
val save: (executeAfterSave: Boolean) -> Unit = { executeAfterSave ->
105106
// Remove unselected tags
106107
val initialTagIds = initialSelectedTags.map { it.id }.toSet()
107108
val currentTagIds = selectedTags.map { it.id }.toSet()
@@ -123,12 +124,12 @@ fun HomeBottomContent(
123124

124125
if (deeprInfo.id == 0L) {
125126
// New Account
126-
viewModel.insertAccount(deeprInfo.link, deeprInfo.name, saveDialogInfo.executeAfterSave)
127+
viewModel.insertAccount(deeprInfo.link, deeprInfo.name, executeAfterSave)
127128
} else {
128129
// Edit
129130
viewModel.updateDeeplink(deeprInfo.id, deeprInfo.link, deeprInfo.name)
130131
}
131-
onSaveDialogInfoChange(SaveDialogInfo(deeprInfo, saveDialogInfo.executeAfterSave))
132+
onSaveDialogInfoChange(SaveDialogInfo(deeprInfo, executeAfterSave))
132133
}
133134

134135
val context = LocalContext.current
@@ -315,7 +316,7 @@ fun HomeBottomContent(
315316
Toast.LENGTH_SHORT,
316317
).show()
317318
} else {
318-
save()
319+
save(false)
319320
}
320321
} else {
321322
isError = true
@@ -347,7 +348,7 @@ fun HomeBottomContent(
347348
Toast.LENGTH_SHORT,
348349
).show()
349350
} else {
350-
save()
351+
save(true)
351352
}
352353
} else {
353354
isError = true

0 commit comments

Comments
 (0)