From dc23295d6e33a694fab35bea8d93029b9e717c15 Mon Sep 17 00:00:00 2001 From: Kgothatso Ngako Date: Sun, 26 Jul 2026 02:40:42 +0200 Subject: [PATCH] Rename TranslationDetail screen family to TranslationArtifactVersionDetail Rename the screen and its ViewModel, UI state, and route to reflect that they describe a MantraTranslationArtifactVersion: - TranslationDetailScreen -> TranslationArtifactVersionDetailScreen - TranslationDetailViewModel -> TranslationArtifactVersionDetailViewModel - TranslationDetailUIState -> TranslationArtifactVersionDetailUIState - TranslationDetailRoute -> TranslationArtifactVersionDetailRoute Files moved with git mv to preserve history; all references (nav host, artifact detail screen) updated. Co-Authored-By: Claude Opus 4.8 --- .../ui/composable/ArtifactDetailScreen.kt | 4 +-- ...TranslationArtifactVersionDetailScreen.kt} | 30 +++++++++---------- .../ui/composable/navigation/MantraNavHost.kt | 10 +++---- ... TranslationArtifactVersionDetailRoute.kt} | 2 +- ...nslationArtifactVersionDetailViewModel.kt} | 24 +++++++-------- ...ranslationArtifactVersionDetailUIState.kt} | 8 ++--- 6 files changed, 39 insertions(+), 39 deletions(-) rename composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/{TranslationDetailScreen.kt => TranslationArtifactVersionDetailScreen.kt} (87%) rename composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/{TranslationDetailRoute.kt => TranslationArtifactVersionDetailRoute.kt} (84%) rename composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/{TranslationDetailViewModel.kt => TranslationArtifactVersionDetailViewModel.kt} (70%) rename composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/{TranslationDetailUIState.kt => TranslationArtifactVersionDetailUIState.kt} (73%) diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/ArtifactDetailScreen.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/ArtifactDetailScreen.kt index d94425f6..dca6ffc2 100644 --- a/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/ArtifactDetailScreen.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/ArtifactDetailScreen.kt @@ -43,7 +43,7 @@ import press.mantra.compose.ui.composable.navigation.routes.AddChapterRoute import press.mantra.compose.ui.composable.navigation.routes.AddTranslationRoute import press.mantra.compose.ui.composable.navigation.routes.ChapterDetailRoute import press.mantra.compose.ui.composable.navigation.routes.Route -import press.mantra.compose.ui.composable.navigation.routes.TranslationDetailRoute +import press.mantra.compose.ui.composable.navigation.routes.TranslationArtifactVersionDetailRoute import press.mantra.compose.ui.composable.widgets.LoadingDataIndicator import press.mantra.compose.ui.theme.TorchTheme import press.mantra.compose.ui.view.model.ArtifactDetailViewModel @@ -233,7 +233,7 @@ fun ArtifactDetailScreen( Card( onClick = { onNavigateToRoute.invoke( - TranslationDetailRoute( + TranslationArtifactVersionDetailRoute( activeUserPublicKey = activeUserPublicKey, translationArtifactVersionId = translation.id, chatRoomId = chatRoomId, diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/TranslationDetailScreen.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/TranslationArtifactVersionDetailScreen.kt similarity index 87% rename from composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/TranslationDetailScreen.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/TranslationArtifactVersionDetailScreen.kt index 61c2fa0c..122b9b3c 100644 --- a/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/TranslationDetailScreen.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/TranslationArtifactVersionDetailScreen.kt @@ -39,34 +39,34 @@ import press.mantra.compose.ui.composable.navigation.routes.TranslationChapterRo import press.mantra.compose.ui.composable.widgets.DetailRow import press.mantra.compose.ui.composable.widgets.LoadingDataIndicator import press.mantra.compose.ui.theme.TorchTheme -import press.mantra.compose.ui.view.model.TranslationDetailViewModel -import press.mantra.compose.ui.view.state.TranslationDetailUIState +import press.mantra.compose.ui.view.model.TranslationArtifactVersionDetailViewModel +import press.mantra.compose.ui.view.state.TranslationArtifactVersionDetailUIState @OptIn(ExperimentalMaterial3Api::class) @Composable -fun TranslationDetailScreen( +fun TranslationArtifactVersionDetailScreen( activeUserPublicKey: HexKey, translationArtifactVersionId: String, chatRoomId: String, relayHint: String?, - initialTranslationDetailUIState: TranslationDetailUIState = TranslationDetailUIState.Loading, + initialTranslationArtifactVersionDetailUIState: TranslationArtifactVersionDetailUIState = TranslationArtifactVersionDetailUIState.Loading, mantraRepository: MantraRepository, onNavigateToRoute: (Route) -> Unit, onNavigateBack: () -> Unit, ) { - val translationDetailViewModel: TranslationDetailViewModel = viewModel( - factory = TranslationDetailViewModel.factory( + val translationDetailViewModel: TranslationArtifactVersionDetailViewModel = viewModel( + factory = TranslationArtifactVersionDetailViewModel.factory( activeUserPublicKey = activeUserPublicKey, translationArtifactVersionId = translationArtifactVersionId, chatRoomId = chatRoomId, relayHint = relayHint, - initialTranslationDetailUIState = initialTranslationDetailUIState, + initialTranslationArtifactVersionDetailUIState = initialTranslationArtifactVersionDetailUIState, mantraRepository = mantraRepository, ) ) when (val translationDetailUIState = translationDetailViewModel.translationDetailUIState) { - is TranslationDetailUIState.Error -> { + is TranslationArtifactVersionDetailUIState.Error -> { Column( modifier = Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally @@ -76,7 +76,7 @@ fun TranslationDetailScreen( } } - is TranslationDetailUIState.Loaded -> { + is TranslationArtifactVersionDetailUIState.Loaded -> { val translation = translationDetailUIState.translation Scaffold( topBar = { @@ -163,7 +163,7 @@ fun TranslationDetailScreen( } } - TranslationDetailUIState.Loading -> { + TranslationArtifactVersionDetailUIState.Loading -> { Column( modifier = Modifier.fillMaxWidth().padding(20.dp), horizontalAlignment = Alignment.CenterHorizontally, @@ -182,23 +182,23 @@ fun TranslationDetailScreen( } LaunchedEffect(true) { - if (initialTranslationDetailUIState == TranslationDetailUIState.Loading) { - translationDetailViewModel.initiateTranslationDetail() + if (initialTranslationArtifactVersionDetailUIState == TranslationArtifactVersionDetailUIState.Loading) { + translationDetailViewModel.initiateTranslationArtifactVersionDetail() } } } @Preview @Composable -private fun TranslationDetailScreenPreview() { +private fun TranslationArtifactVersionDetailScreenPreview() { TorchTheme { Surface(modifier = Modifier.fillMaxSize()) { - TranslationDetailScreen( + TranslationArtifactVersionDetailScreen( activeUserPublicKey = "", translationArtifactVersionId = "translationId", chatRoomId = "chatRoomId", relayHint = null, - initialTranslationDetailUIState = TranslationDetailUIState.Loaded( + initialTranslationArtifactVersionDetailUIState = TranslationArtifactVersionDetailUIState.Loaded( translation = MantraTranslationArtifactVersion( id = "translationId", publicKey = "author", diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/MantraNavHost.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/MantraNavHost.kt index 0f432256..7a224b85 100644 --- a/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/MantraNavHost.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/MantraNavHost.kt @@ -95,14 +95,14 @@ import press.mantra.compose.ui.composable.navigation.routes.ArtifactDetailRoute import press.mantra.compose.ui.composable.navigation.routes.ChapterDetailRoute import press.mantra.compose.ui.composable.navigation.routes.TranslateChunkRoute import press.mantra.compose.ui.composable.navigation.routes.TranslationChapterRoute -import press.mantra.compose.ui.composable.navigation.routes.TranslationDetailRoute +import press.mantra.compose.ui.composable.navigation.routes.TranslationArtifactVersionDetailRoute import press.mantra.compose.ui.composable.ArtifactDetailScreen import press.mantra.compose.ui.composable.AddChapterScreen import press.mantra.compose.ui.composable.AddTranslationScreen import press.mantra.compose.ui.composable.ChapterDetailScreen import press.mantra.compose.ui.composable.TranslateChunkScreen import press.mantra.compose.ui.composable.TranslationChapterScreen -import press.mantra.compose.ui.composable.TranslationDetailScreen +import press.mantra.compose.ui.composable.TranslationArtifactVersionDetailScreen @Composable fun MantraNavHost( @@ -722,10 +722,10 @@ fun MantraNavHost( } ) } - composable { backStackEntry -> - val route = backStackEntry.toRoute() + composable { backStackEntry -> + val route = backStackEntry.toRoute() - TranslationDetailScreen( + TranslationArtifactVersionDetailScreen( activeUserPublicKey = route.activeUserPublicKey, translationArtifactVersionId = route.translationArtifactVersionId, chatRoomId = route.chatRoomId, diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/TranslationDetailRoute.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/TranslationArtifactVersionDetailRoute.kt similarity index 84% rename from composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/TranslationDetailRoute.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/TranslationArtifactVersionDetailRoute.kt index f69b4796..3fb1d491 100644 --- a/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/TranslationDetailRoute.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/TranslationArtifactVersionDetailRoute.kt @@ -3,7 +3,7 @@ package press.mantra.compose.ui.composable.navigation.routes import kotlinx.serialization.Serializable @Serializable -data class TranslationDetailRoute( +data class TranslationArtifactVersionDetailRoute( val activeUserPublicKey: String, val translationArtifactVersionId: String, val chatRoomId: String, diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/TranslationDetailViewModel.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/TranslationArtifactVersionDetailViewModel.kt similarity index 70% rename from composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/TranslationDetailViewModel.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/TranslationArtifactVersionDetailViewModel.kt index 1a8429f5..3e0acde8 100644 --- a/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/TranslationDetailViewModel.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/TranslationArtifactVersionDetailViewModel.kt @@ -15,29 +15,29 @@ import kotlinx.coroutines.IO import kotlinx.coroutines.launch import press.mantra.compose.repository.MantraRepository import press.mantra.compose.ui.view.state.TranslationChapterProgress -import press.mantra.compose.ui.view.state.TranslationDetailUIState +import press.mantra.compose.ui.view.state.TranslationArtifactVersionDetailUIState -class TranslationDetailViewModel( +class TranslationArtifactVersionDetailViewModel( val translationArtifactVersionId: String, val chatRoomId: String, val activeUserPublicKey: HexKey, val relayHint: String?, - initialTranslationDetailUIState: TranslationDetailUIState, + initialTranslationArtifactVersionDetailUIState: TranslationArtifactVersionDetailUIState, val mantraRepository: MantraRepository, ): ViewModel() { - var translationDetailUIState: TranslationDetailUIState by mutableStateOf(initialTranslationDetailUIState) + var translationDetailUIState: TranslationArtifactVersionDetailUIState by mutableStateOf(initialTranslationArtifactVersionDetailUIState) private set private val logger = Logger.withTag(TAG) - fun initiateTranslationDetail() { - logger.d("initiateTranslationDetail: $translationArtifactVersionId") + fun initiateTranslationArtifactVersionDetail() { + logger.d("initiateTranslationArtifactVersionDetail: $translationArtifactVersionId") viewModelScope.launch(Dispatchers.IO) { val translation = mantraRepository.getTranslation(translationArtifactVersionId) translationDetailUIState = if (translation == null) { - TranslationDetailUIState.Error("Couldn't find the translation") + TranslationArtifactVersionDetailUIState.Error("Couldn't find the translation") } else { val chapters = mantraRepository.getTranslationChapters(translationArtifactVersionId) .map { chapter -> @@ -48,7 +48,7 @@ class TranslationDetailViewModel( translatedChunks = chunks.count { it.text.isNotBlank() }, ) } - TranslationDetailUIState.Loaded( + TranslationArtifactVersionDetailUIState.Loaded( translation = translation, chapters = chapters, ) @@ -57,23 +57,23 @@ class TranslationDetailViewModel( } companion object { - private const val TAG = "TranslationDetailViewModel" + private const val TAG = "TranslationArtifactVersionDetailViewModel" fun factory( activeUserPublicKey: HexKey, translationArtifactVersionId: String, chatRoomId: String, relayHint: String?, - initialTranslationDetailUIState: TranslationDetailUIState = TranslationDetailUIState.Loading, + initialTranslationArtifactVersionDetailUIState: TranslationArtifactVersionDetailUIState = TranslationArtifactVersionDetailUIState.Loading, mantraRepository: MantraRepository, ): ViewModelProvider.Factory = viewModelFactory { initializer { - TranslationDetailViewModel( + TranslationArtifactVersionDetailViewModel( activeUserPublicKey = activeUserPublicKey, translationArtifactVersionId = translationArtifactVersionId, chatRoomId = chatRoomId, relayHint = relayHint, - initialTranslationDetailUIState = initialTranslationDetailUIState, + initialTranslationArtifactVersionDetailUIState = initialTranslationArtifactVersionDetailUIState, mantraRepository = mantraRepository, ) } diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/TranslationDetailUIState.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/TranslationArtifactVersionDetailUIState.kt similarity index 73% rename from composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/TranslationDetailUIState.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/TranslationArtifactVersionDetailUIState.kt index 094071a6..94204fc8 100644 --- a/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/TranslationDetailUIState.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/TranslationArtifactVersionDetailUIState.kt @@ -10,15 +10,15 @@ data class TranslationChapterProgress( val translatedChunks: Int, ) -sealed interface TranslationDetailUIState { +sealed interface TranslationArtifactVersionDetailUIState { data class Loaded( val translation: MantraTranslationArtifactVersion, val chapters: List = emptyList(), - ): TranslationDetailUIState + ): TranslationArtifactVersionDetailUIState data class Error( val message: String - ): TranslationDetailUIState + ): TranslationArtifactVersionDetailUIState - data object Loading: TranslationDetailUIState + data object Loading: TranslationArtifactVersionDetailUIState }