diff --git a/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Template.kt b/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Template.kt index bfb961ef..c933e0d1 100644 --- a/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Template.kt +++ b/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Template.kt @@ -48,6 +48,7 @@ import com.ramcosta.composedestinations.annotation.Destination import com.ramcosta.composedestinations.navigation.DestinationsNavigator import com.ramcosta.composedestinations.result.ResultRecipient import com.ramcosta.composedestinations.result.getOr +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import me.weishu.kernelsu.R import me.weishu.kernelsu.ui.screen.destinations.TemplateEditorScreenDestination @@ -86,7 +87,9 @@ fun AppProfileTemplateScreen( val clipboardManager = LocalClipboardManager.current val context = LocalContext.current val showToast = fun(msg: String) { - Toast.makeText(context, msg, Toast.LENGTH_SHORT).show() + scope.launch(Dispatchers.Main) { + Toast.makeText(context, msg, Toast.LENGTH_SHORT).show() + } } TopBar(onBack = { navigator.popBackStack() }, onSync = { @@ -94,13 +97,18 @@ fun AppProfileTemplateScreen( }, onImport = { clipboardManager.getText()?.text?.let { + if (it.isEmpty()) { + showToast(context.getString(R.string.app_profile_template_import_empty)) + return@let + } scope.launch { - viewModel.importTemplates(it, { - showToast(context.getString(R.string.app_profile_template_import_success)) - scope.launch { + viewModel.importTemplates( + it, { + showToast(context.getString(R.string.app_profile_template_import_success)) viewModel.fetchTemplates(false) - } - }, showToast) + }, + showToast + ) } } }, diff --git a/manager/app/src/main/java/me/weishu/kernelsu/ui/viewmodel/TemplateViewModel.kt b/manager/app/src/main/java/me/weishu/kernelsu/ui/viewmodel/TemplateViewModel.kt index 44f451ba..2ccfa147 100644 --- a/manager/app/src/main/java/me/weishu/kernelsu/ui/viewmodel/TemplateViewModel.kt +++ b/manager/app/src/main/java/me/weishu/kernelsu/ui/viewmodel/TemplateViewModel.kt @@ -88,8 +88,8 @@ class TemplateViewModel : ViewModel() { suspend fun importTemplates( templates: String, - onSuccess: () -> Unit, - onFailure: (String) -> Unit + onSuccess: suspend () -> Unit, + onFailure: suspend (String) -> Unit ) { withContext(Dispatchers.IO) { runCatching { @@ -208,9 +208,9 @@ private fun getLocaleString(json: JSONObject, key: String): String { val fallback = json.getString(key) val locale = Locale.getDefault() val localeKey = "${locale.language}_${locale.country}" - json.optJSONObject("locales")?.let { locale -> - locale.optJSONObject(localeKey)?.let { - return it.optString(key, fallback) + json.optJSONObject("locales")?.let { + it.optJSONObject(localeKey)?.let { json-> + return json.optString(key, fallback) } } return fallback diff --git a/manager/app/src/main/res/values-zh-rCN/strings.xml b/manager/app/src/main/res/values-zh-rCN/strings.xml index 506f696e..d9676d26 100644 --- a/manager/app/src/main/res/values-zh-rCN/strings.xml +++ b/manager/app/src/main/res/values-zh-rCN/strings.xml @@ -100,4 +100,5 @@ 导入成功! 同步在线规则 模版保存失败! + 剪切板为空! \ No newline at end of file diff --git a/manager/app/src/main/res/values/strings.xml b/manager/app/src/main/res/values/strings.xml index 5633aa8f..a42e5af0 100644 --- a/manager/app/src/main/res/values/strings.xml +++ b/manager/app/src/main/res/values/strings.xml @@ -102,4 +102,5 @@ Imported successfully Sync online templates Failed to save template + Clipboard is empty!