Compare commits
2 commits
f3391bb8ee
...
4790f87b65
Author | SHA1 | Date | |
---|---|---|---|
4790f87b65 | |||
a29b068035 |
2 changed files with 11 additions and 1 deletions
|
@ -47,6 +47,10 @@ open class EuiccManagementFragment : Fragment(), EuiccProfilesChangedListener,
|
||||||
|
|
||||||
private val adapter = EuiccProfileAdapter()
|
private val adapter = EuiccProfileAdapter()
|
||||||
|
|
||||||
|
// Marker for when this fragment might enter an invalid state
|
||||||
|
// e.g. after a failed enable / disable operation
|
||||||
|
private var invalid = false
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
setHasOptionsMenu(true)
|
setHasOptionsMenu(true)
|
||||||
|
@ -106,6 +110,7 @@ open class EuiccManagementFragment : Fragment(), EuiccProfilesChangedListener,
|
||||||
|
|
||||||
@SuppressLint("NotifyDataSetChanged")
|
@SuppressLint("NotifyDataSetChanged")
|
||||||
private fun refresh() {
|
private fun refresh() {
|
||||||
|
if (invalid) return
|
||||||
swipeRefresh.isRefreshing = true
|
swipeRefresh.isRefreshing = true
|
||||||
|
|
||||||
lifecycleScope.launch {
|
lifecycleScope.launch {
|
||||||
|
@ -151,6 +156,8 @@ open class EuiccManagementFragment : Fragment(), EuiccProfilesChangedListener,
|
||||||
euiccChannelManager.waitForReconnect(slotId, portId, timeoutMillis = 30 * 1000)
|
euiccChannelManager.waitForReconnect(slotId, portId, timeoutMillis = 30 * 1000)
|
||||||
} catch (e: TimeoutCancellationException) {
|
} catch (e: TimeoutCancellationException) {
|
||||||
withContext(Dispatchers.Main) {
|
withContext(Dispatchers.Main) {
|
||||||
|
// Prevent this Fragment from being used again
|
||||||
|
invalid = true
|
||||||
// Timed out waiting for SIM to come back online, we can no longer assume that the LPA is still valid
|
// Timed out waiting for SIM to come back online, we can no longer assume that the LPA is still valid
|
||||||
AlertDialog.Builder(requireContext()).apply {
|
AlertDialog.Builder(requireContext()).apply {
|
||||||
setMessage(R.string.enable_disable_timeout)
|
setMessage(R.string.enable_disable_timeout)
|
||||||
|
@ -247,6 +254,9 @@ open class EuiccManagementFragment : Fragment(), EuiccProfilesChangedListener,
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun showOptionsMenu() {
|
private fun showOptionsMenu() {
|
||||||
|
// Prevent users from doing multiple things at once
|
||||||
|
if (invalid || swipeRefresh.isRefreshing) return
|
||||||
|
|
||||||
PopupMenu(root.context, profileMenu).apply {
|
PopupMenu(root.context, profileMenu).apply {
|
||||||
setOnMenuItemClickListener(::onMenuItemClicked)
|
setOnMenuItemClickListener(::onMenuItemClicked)
|
||||||
populatePopupWithProfileActions(this, profile)
|
populatePopupWithProfileActions(this, profile)
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
<string name="delete">Delete</string>
|
<string name="delete">Delete</string>
|
||||||
<string name="rename">Rename</string>
|
<string name="rename">Rename</string>
|
||||||
|
|
||||||
<string name="enable_disable_timeout">Timed out waiting for the eSIM chip to switch profiles. You might want to restart the application or even the phone.</string>
|
<string name="enable_disable_timeout">Timed out waiting for the eSIM chip to switch profiles. This may be a bug in your phone\'s modem firmware. Try toggling airplane mode, restarting the application, or rebooting the phone.</string>
|
||||||
|
|
||||||
<string name="toast_profile_enable_failed">Cannot switch to new eSIM profile.</string>
|
<string name="toast_profile_enable_failed">Cannot switch to new eSIM profile.</string>
|
||||||
<string name="toast_profile_name_too_long">Nickname cannot be longer than 64 characters</string>
|
<string name="toast_profile_name_too_long">Nickname cannot be longer than 64 characters</string>
|
||||||
|
|
Loading…
Add table
Reference in a new issue