From 76136ec76a22f5c8a34bf7c57ce2383de4364082 Mon Sep 17 00:00:00 2001 From: Josh Date: Sat, 7 Feb 2026 10:35:42 -0500 Subject: [PATCH 1/2] fix(assistant): resolve LocalContext resource query in LaunchedEffect Extract string resource retrieval outside LaunchedEffect to ensure proper recomposition on configuration changes. This resolves the LocalContextGetResourceValueCall lint warning and prevents stale snackbar messages when configuration changes occur (e.g., language switches, dark mode toggles). The snackbar message string is now computed in the composable body where LocalContext.current changes trigger recomposition, ensuring the LaunchedEffect always receives up-to-date string values. Fixes lint error: "Querying resource values using LocalContext.current" Signed-off-by: Josh --- .../client/assistant/translate/TranslationScreen.kt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/nextcloud/client/assistant/translate/TranslationScreen.kt b/app/src/main/java/com/nextcloud/client/assistant/translate/TranslationScreen.kt index 9da714a95eec..bce1067cd600 100644 --- a/app/src/main/java/com/nextcloud/client/assistant/translate/TranslationScreen.kt +++ b/app/src/main/java/com/nextcloud/client/assistant/translate/TranslationScreen.kt @@ -67,6 +67,7 @@ fun TranslationScreen(viewModel: TranslationViewModel, assistantViewModel: Assis val context = LocalContext.current val state by viewModel.screenState.collectAsState() val messageId by viewModel.snackbarMessageId.collectAsState() + val snackbarMessage = messageId?.let { context.getString(it) } val snackbarHostState = remember { SnackbarHostState() } BackHandler { @@ -74,9 +75,9 @@ fun TranslationScreen(viewModel: TranslationViewModel, assistantViewModel: Assis assistantViewModel.updateScreenState(AssistantScreenState.TaskContent) } - LaunchedEffect(messageId) { - messageId?.let { - snackbarHostState.showSnackbar(context.getString(it)) + LaunchedEffect(snackbarMessage) { + snackbarMessage?.let { + snackbarHostState.showSnackbar(it) viewModel.updateSnackbarMessage(null) } } From e7148063c93cff5b33cb405f7bb678f76a01a91f Mon Sep 17 00:00:00 2001 From: alperozturk96 Date: Mon, 9 Feb 2026 09:52:55 +0100 Subject: [PATCH 2/2] fix lint Signed-off-by: alperozturk96 --- .../client/assistant/translate/TranslationScreen.kt | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/nextcloud/client/assistant/translate/TranslationScreen.kt b/app/src/main/java/com/nextcloud/client/assistant/translate/TranslationScreen.kt index bce1067cd600..63a75e7b36dd 100644 --- a/app/src/main/java/com/nextcloud/client/assistant/translate/TranslationScreen.kt +++ b/app/src/main/java/com/nextcloud/client/assistant/translate/TranslationScreen.kt @@ -64,10 +64,9 @@ import com.owncloud.android.utils.ClipboardUtil @OptIn(ExperimentalMaterial3Api::class) @Composable fun TranslationScreen(viewModel: TranslationViewModel, assistantViewModel: AssistantViewModel) { - val context = LocalContext.current val state by viewModel.screenState.collectAsState() val messageId by viewModel.snackbarMessageId.collectAsState() - val snackbarMessage = messageId?.let { context.getString(it) } + val message = messageId?.let { stringResource(it) } val snackbarHostState = remember { SnackbarHostState() } BackHandler { @@ -75,8 +74,8 @@ fun TranslationScreen(viewModel: TranslationViewModel, assistantViewModel: Assis assistantViewModel.updateScreenState(AssistantScreenState.TaskContent) } - LaunchedEffect(snackbarMessage) { - snackbarMessage?.let { + LaunchedEffect(message) { + message?.let { snackbarHostState.showSnackbar(it) viewModel.updateSnackbarMessage(null) }