Parcourir la source

Fix: operate clipboard on main thread

kr328 il y a 3 ans
Parent
commit
a405372f6a

+ 7 - 12
app/src/main/java/com/github/kr328/clash/AccessControlActivity.kt

@@ -76,11 +76,8 @@ class AccessControlActivity : BaseActivity<AccessControlDesign>() {
                             val data = clipboard?.primaryClip
 
                             if (data != null && data.itemCount > 0) {
-                                val all = withContext(Dispatchers.IO) {
-                                    val packages = data.getItemAt(0).text.split("\n").toSet()
-
-                                    design.apps.map(AppInfo::packageName).intersect(packages)
-                                }
+                                val packages = data.getItemAt(0).text.split("\n").toSet()
+                                val all = design.apps.map(AppInfo::packageName).intersect(packages)
 
                                 selected.clear()
                                 selected.addAll(all)
@@ -91,14 +88,12 @@ class AccessControlActivity : BaseActivity<AccessControlDesign>() {
                         AccessControlDesign.Request.Export -> {
                             val clipboard = getSystemService<ClipboardManager>()
 
-                            withContext(Dispatchers.IO) {
-                                val data = ClipData.newPlainText(
-                                    "packages",
-                                    selected.joinToString("\n")
-                                )
+                            val data = ClipData.newPlainText(
+                                "packages",
+                                selected.joinToString("\n")
+                            )
 
-                                clipboard?.setPrimaryClip(data)
-                            }
+                            clipboard?.setPrimaryClip(data)
                         }
                     }
                 }

+ 1 - 1
design/src/main/java/com/github/kr328/clash/design/LogcatDesign.kt

@@ -26,7 +26,7 @@ class LogcatDesign(
     private val binding = DesignLogcatBinding
         .inflate(context.layoutInflater, context.root, false)
     private val adapter = LogMessageAdapter(context) {
-        launch(Dispatchers.IO) {
+        launch {
             val data = ClipData.newPlainText("log_message", it.message)
 
             context.getSystemService<ClipboardManager>()?.setPrimaryClip(data)