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!