Skip to content

Commit 2cd831c

Browse files
committed
Fixed going back being called twice
Signed-off-by: Arnau Mora <arnyminerz@proton.me>
1 parent 30ce49c commit 2cd831c

3 files changed

Lines changed: 13 additions & 20 deletions

File tree

app/src/main/java/at/bitfire/icsdroid/model/EditSubscriptionModel.kt

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,8 @@ package at.bitfire.icsdroid.model
66

77
import android.content.Context
88
import android.util.Log
9-
import androidx.compose.runtime.getValue
10-
import androidx.compose.runtime.mutableStateOf
11-
import androidx.compose.runtime.setValue
9+
import android.widget.Toast
10+
import androidx.annotation.StringRes
1211
import androidx.lifecycle.ViewModel
1312
import androidx.lifecycle.viewModelScope
1413
import at.bitfire.icsdroid.Constants
@@ -26,6 +25,7 @@ import dagger.hilt.android.qualifiers.ApplicationContext
2625
import kotlinx.coroutines.Dispatchers
2726
import kotlinx.coroutines.flow.firstOrNull
2827
import kotlinx.coroutines.launch
28+
import kotlinx.coroutines.withContext
2929

3030
@HiltViewModel(assistedFactory = EditSubscriptionModel.EditSubscriptionModelFactory::class)
3131
class EditSubscriptionModel @AssistedInject constructor(
@@ -79,9 +79,6 @@ class EditSubscriptionModel @AssistedInject constructor(
7979
credentialsDirty || subscriptionsDirty
8080
}
8181

82-
var successMessage: String? by mutableStateOf(null)
83-
private set
84-
8582
val subscription = db.subscriptionsDao().getByIdFlow(subscriptionId)
8683
val subscriptionWithCredential = db.subscriptionsDao().getWithCredentialsByIdFlow(subscriptionId)
8784

@@ -126,6 +123,10 @@ class EditSubscriptionModel @AssistedInject constructor(
126123
initialRequiresAuthValue = uiState.requiresAuth
127124
}
128125

126+
private suspend fun showMessage(@StringRes message: Int) = withContext(Dispatchers.Main) {
127+
Toast.makeText(context, message, Toast.LENGTH_LONG).show()
128+
}
129+
129130
/**
130131
* Updates the loaded subscription from the data provided by the view models.
131132
*/
@@ -150,7 +151,7 @@ class EditSubscriptionModel @AssistedInject constructor(
150151
db.credentialsDao().removeBySubscriptionId(subscriptionId)
151152

152153
// notify UI about success
153-
successMessage = context.getString(R.string.edit_calendar_saved)
154+
showMessage(R.string.edit_calendar_saved)
154155

155156
// sync the subscription to reflect the changes in the calendar provider
156157
SyncWorker.run(context, forceResync = true)
@@ -170,7 +171,7 @@ class EditSubscriptionModel @AssistedInject constructor(
170171
SyncWorker.run(context)
171172

172173
// notify UI about success
173-
successMessage = context.getString(R.string.edit_calendar_deleted)
174+
showMessage(R.string.edit_calendar_deleted)
174175
} ?: Log.w(Constants.TAG, "There's no subscription to remove")
175176
}
176177
}

app/src/main/java/at/bitfire/icsdroid/ui/nav/MainApp.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ fun MainApp(
8282
val backStack = rememberNavBackStack(calculateInitialDestination(intentExtras))
8383

8484
fun goBack(depth: Int = 1) {
85+
println("Going back $depth times")
8586
if (backStack.size <= 1) onFinish()
8687
else repeat(depth) { backStack.removeAt(backStack.lastIndex) }
8788
}

app/src/main/java/at/bitfire/icsdroid/ui/screen/EditSubscriptionScreen.kt

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
package at.bitfire.icsdroid.ui.screen
66

7-
import android.widget.Toast
87
import androidx.activity.compose.BackHandler
98
import androidx.compose.animation.AnimatedVisibility
109
import androidx.compose.foundation.layout.Column
@@ -29,7 +28,6 @@ import androidx.compose.runtime.mutableStateOf
2928
import androidx.compose.runtime.remember
3029
import androidx.compose.runtime.setValue
3130
import androidx.compose.ui.Modifier
32-
import androidx.compose.ui.platform.LocalContext
3331
import androidx.compose.ui.res.stringResource
3432
import androidx.compose.ui.tooling.preview.Preview
3533
import androidx.compose.ui.unit.dp
@@ -60,9 +58,10 @@ fun EditSubscriptionScreen(
6058
EditSubscriptionScreen(
6159
inputValid = model.inputValid,
6260
modelsDirty = model.modelsDirty,
63-
successMessage = model.successMessage,
6461
onDelete = model::removeSubscription,
65-
onSave = model::updateSubscription,
62+
onSave = {
63+
model.updateSubscription().invokeOnCompletion { onExit() }
64+
},
6665
onShare = {
6766
subscription.value?.let {
6867
onShare(it)
@@ -102,7 +101,6 @@ fun EditSubscriptionScreen(
102101
fun EditSubscriptionScreen(
103102
inputValid: Boolean,
104103
modelsDirty: Boolean,
105-
successMessage: String?,
106104
onDelete: () -> Unit,
107105
onSave: () -> Unit,
108106
onShare: () -> Unit,
@@ -133,12 +131,6 @@ fun EditSubscriptionScreen(
133131
onUsernameChange: (String) -> Unit,
134132
onPasswordChange: (String) -> Unit
135133
) {
136-
// show success message
137-
successMessage?.let {
138-
Toast.makeText(LocalContext.current, successMessage, Toast.LENGTH_LONG).show()
139-
onExit()
140-
}
141-
142134
Scaffold(
143135
topBar = {
144136
AppBarComposable(
@@ -285,7 +277,6 @@ fun EditSubscriptionScreen_Preview() {
285277
EditSubscriptionScreen(
286278
inputValid = true,
287279
modelsDirty = false,
288-
successMessage = "yay!",
289280
onDelete = {},
290281
onSave = {},
291282
onShare = {},

0 commit comments

Comments
 (0)