diff --git a/app/src/main/java/io/nekohasekai/sfa/compose/screen/profile/EditProfileContentScreen.kt b/app/src/main/java/io/nekohasekai/sfa/compose/screen/profile/EditProfileContentScreen.kt index 1c883d0..def7b1f 100644 --- a/app/src/main/java/io/nekohasekai/sfa/compose/screen/profile/EditProfileContentScreen.kt +++ b/app/src/main/java/io/nekohasekai/sfa/compose/screen/profile/EditProfileContentScreen.kt @@ -92,12 +92,11 @@ fun EditProfileContentScreen( profileId: Long, onNavigateBack: () -> Unit, modifier: Modifier = Modifier, - profileName: String = "", isReadOnly: Boolean = false, ) { val viewModel: EditProfileContentViewModel = viewModel( - factory = EditProfileContentViewModel.Factory(profileId, profileName, isReadOnly), + factory = EditProfileContentViewModel.Factory(profileId, isReadOnly), ) val uiState by viewModel.uiState.collectAsState() val context = LocalContext.current diff --git a/app/src/main/java/io/nekohasekai/sfa/compose/screen/profile/EditProfileContentViewModel.kt b/app/src/main/java/io/nekohasekai/sfa/compose/screen/profile/EditProfileContentViewModel.kt index 1c19a9b..51a082e 100644 --- a/app/src/main/java/io/nekohasekai/sfa/compose/screen/profile/EditProfileContentViewModel.kt +++ b/app/src/main/java/io/nekohasekai/sfa/compose/screen/profile/EditProfileContentViewModel.kt @@ -38,11 +38,10 @@ data class EditProfileContentUiState( val profileName: String = "", // Add profile name ) -class EditProfileContentViewModel(private val profileId: Long, initialProfileName: String = "", initialIsReadOnly: Boolean = false) : ViewModel() { +class EditProfileContentViewModel(private val profileId: Long, initialIsReadOnly: Boolean = false) : ViewModel() { private val _uiState = MutableStateFlow( EditProfileContentUiState( - profileName = initialProfileName, isReadOnly = initialIsReadOnly, ), ) @@ -211,7 +210,7 @@ class EditProfileContentViewModel(private val profileId: Long, initialProfileNam originalContent = content, hasUnsavedChanges = false, isLoading = false, - // Keep profileName and isReadOnly from initial state - no need to update + profileName = loadedProfile.name, ) } } @@ -584,13 +583,12 @@ class EditProfileContentViewModel(private val profileId: Long, initialProfileNam class Factory( private val profileId: Long, - private val initialProfileName: String = "", private val initialIsReadOnly: Boolean = false, ) : ViewModelProvider.Factory { @Suppress("UNCHECKED_CAST") override fun create(modelClass: Class): T { if (modelClass.isAssignableFrom(EditProfileContentViewModel::class.java)) { - return EditProfileContentViewModel(profileId, initialProfileName, initialIsReadOnly) as T + return EditProfileContentViewModel(profileId, initialIsReadOnly) as T } throw IllegalArgumentException("Unknown ViewModel class") } diff --git a/app/src/main/java/io/nekohasekai/sfa/compose/screen/profile/EditProfileRoute.kt b/app/src/main/java/io/nekohasekai/sfa/compose/screen/profile/EditProfileRoute.kt index b617b43..a9a8cbc 100644 --- a/app/src/main/java/io/nekohasekai/sfa/compose/screen/profile/EditProfileRoute.kt +++ b/app/src/main/java/io/nekohasekai/sfa/compose/screen/profile/EditProfileRoute.kt @@ -10,6 +10,7 @@ import androidx.navigation.NavType import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController +import android.net.Uri import androidx.navigation.navArgument @Composable @@ -64,12 +65,12 @@ fun EditProfileRoute(profileId: Long, onNavigateBack: () -> Unit, modifier: Modi profileId = profileId, onNavigateBack = onNavigateBack, onNavigateToIconSelection = { currentIconId -> - navController.navigate("icon_selection/${currentIconId ?: "null"}") { + navController.navigate("icon_selection/${Uri.encode(currentIconId ?: "null")}") { launchSingleTop = true } }, - onNavigateToEditContent = { profileName, isReadOnly -> - navController.navigate("edit_content/$profileName/$isReadOnly") { + onNavigateToEditContent = { isReadOnly -> + navController.navigate("edit_content/$isReadOnly") { launchSingleTop = true } }, @@ -128,13 +129,9 @@ fun EditProfileRoute(profileId: Long, onNavigateBack: () -> Unit, modifier: Modi } composable( - route = "edit_content/{profileName}/{isReadOnly}", + route = "edit_content/{isReadOnly}", arguments = listOf( - navArgument("profileName") { - type = NavType.StringType - defaultValue = "" - }, navArgument("isReadOnly") { type = NavType.BoolType defaultValue = false @@ -165,7 +162,6 @@ fun EditProfileRoute(profileId: Long, onNavigateBack: () -> Unit, modifier: Modi ) }, ) { backStackEntry -> - val profileName = backStackEntry.arguments?.getString("profileName") ?: "" val isReadOnly = backStackEntry.arguments?.getBoolean("isReadOnly") ?: false EditProfileContentScreen( @@ -173,7 +169,6 @@ fun EditProfileRoute(profileId: Long, onNavigateBack: () -> Unit, modifier: Modi onNavigateBack = { navController.popBackStack("edit_profile", inclusive = false) }, - profileName = profileName, isReadOnly = isReadOnly, ) } diff --git a/app/src/main/java/io/nekohasekai/sfa/compose/screen/profile/EditProfileScreen.kt b/app/src/main/java/io/nekohasekai/sfa/compose/screen/profile/EditProfileScreen.kt index 84af0e0..d6a92fd 100644 --- a/app/src/main/java/io/nekohasekai/sfa/compose/screen/profile/EditProfileScreen.kt +++ b/app/src/main/java/io/nekohasekai/sfa/compose/screen/profile/EditProfileScreen.kt @@ -79,7 +79,7 @@ fun EditProfileScreen( profileId: Long, onNavigateBack: () -> Unit, onNavigateToIconSelection: (currentIconId: String?) -> Unit = {}, - onNavigateToEditContent: (profileName: String, isReadOnly: Boolean) -> Unit = { _, _ -> }, + onNavigateToEditContent: (isReadOnly: Boolean) -> Unit = {}, viewModel: EditProfileViewModel = viewModel(), ) { val uiState by viewModel.uiState.collectAsStateWithLifecycle() @@ -473,7 +473,6 @@ fun EditProfileScreen( .clip(RoundedCornerShape(12.dp)) .clickable { onNavigateToEditContent( - uiState.name, uiState.profileType == TypedProfile.Type.Remote, ) },