浏览代码

Move some fragments to withEuiccChannel()

Peter Cai 1 年之前
父节点
当前提交
3b868e4f9a

+ 8 - 5
app-common/src/main/java/im/angry/openeuicc/ui/EuiccManagementFragment.kt

@@ -6,7 +6,6 @@ import android.content.ClipboardManager
 import android.content.Intent
 import android.os.Bundle
 import android.text.method.PasswordTransformationMethod
-import android.util.Log
 import android.view.LayoutInflater
 import android.view.Menu
 import android.view.MenuInflater
@@ -52,6 +51,7 @@ open class EuiccManagementFragment : Fragment(), EuiccProfilesChangedListener,
     private lateinit var swipeRefresh: SwipeRefreshLayout
     private lateinit var fab: FloatingActionButton
     private lateinit var profileList: RecyclerView
+    private var logicalSlotId: Int = -1
 
     private val adapter = EuiccProfileAdapter()
 
@@ -127,9 +127,11 @@ open class EuiccManagementFragment : Fragment(), EuiccProfilesChangedListener,
     override fun onOptionsItemSelected(item: MenuItem): Boolean =
         when (item.itemId) {
             R.id.show_notifications -> {
-                Intent(requireContext(), NotificationsActivity::class.java).apply {
-                    putExtra("logicalSlotId", channel.logicalSlotId)
-                    startActivity(this)
+                if (logicalSlotId != -1) {
+                    Intent(requireContext(), NotificationsActivity::class.java).apply {
+                        putExtra("logicalSlotId", logicalSlotId)
+                        startActivity(this)
+                    }
                 }
                 true
             }
@@ -162,7 +164,8 @@ open class EuiccManagementFragment : Fragment(), EuiccProfilesChangedListener,
                     preferenceRepository.disableSafeguardFlow.stateIn(lifecycleScope)
             }
 
-            val profiles = withContext(Dispatchers.IO) {
+            val profiles = withEuiccChannel { channel ->
+                logicalSlotId = channel.logicalSlotId
                 euiccChannelManager.notifyEuiccProfilesChanged(channel.logicalSlotId)
                 channel.lpa.profiles.operational
             }

+ 18 - 14
app-common/src/main/java/im/angry/openeuicc/ui/ProfileDownloadFragment.kt

@@ -159,22 +159,26 @@ class ProfileDownloadFragment : BaseMaterialDialogFragment(),
                 return@launch
             }
 
-            val imei = try {
-                telephonyManager.getImei(channel.logicalSlotId) ?: ""
-            } catch (e: Exception) {
-                ""
-            }
+            withEuiccChannel { channel ->
+                val imei = try {
+                    telephonyManager.getImei(channel.logicalSlotId) ?: ""
+                } catch (e: Exception) {
+                    ""
+                }
 
-            // Fetch remaining NVRAM
-            val str = channel.lpa.euiccInfo2?.freeNvram?.also {
-                freeNvram = it
-            }?.let { formatFreeSpace(it) }
+                // Fetch remaining NVRAM
+                val str = channel.lpa.euiccInfo2?.freeNvram?.also {
+                    freeNvram = it
+                }?.let { formatFreeSpace(it) }
 
-            withContext(Dispatchers.Main) {
-                profileDownloadFreeSpace.text = getString(R.string.profile_download_free_space,
-                    str ?: getText(R.string.unknown))
-                profileDownloadIMEI.editText!!.text =
-                    Editable.Factory.getInstance().newEditable(imei)
+                withContext(Dispatchers.Main) {
+                    profileDownloadFreeSpace.text = getString(
+                        R.string.profile_download_free_space,
+                        str ?: getText(R.string.unknown)
+                    )
+                    profileDownloadIMEI.editText!!.text =
+                        Editable.Factory.getInstance().newEditable(imei)
+                }
             }
         }
     }