Skip to content
This repository has been archived by the owner on Apr 12, 2022. It is now read-only.

Fix / Allow to export keys in airplane mode #3111

Merged
merged 2 commits into from
May 22, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGES.rst
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ Other changes:
- Piwik SDK has been replaced by Matomo SDK (#3163)

Bugfix:
- Fix / Illegal States exceptions when starting event stream service X
- Fix / Export keys not possible when no network (airplane)
- Fix / crash in logout success
- Fix / Crash when session store is null in event stream #3158

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,7 @@ import android.support.v7.app.AlertDialog
import im.vector.R
import im.vector.fragments.keysbackup.settings.KeysBackupSettingsFragment
import im.vector.fragments.keysbackup.settings.KeysBackupSettingsViewModel
import org.matrix.androidsdk.core.callback.ApiCallback
import org.matrix.androidsdk.core.model.MatrixError
import org.matrix.androidsdk.crypto.keysbackup.KeysBackupStateManager

class KeysBackupManageActivity : SimpleFragmentActivity() {

Expand Down Expand Up @@ -83,4 +82,15 @@ class KeysBackupManageActivity : SimpleFragmentActivity() {
})

}

override fun onBackPressed() {
// When there is no network we could get stuck in infinite loading
// because backup state will stay in CheckingBackUpOnHomeserver
if (viewModel.keyBackupState.value == KeysBackupStateManager.KeysBackupState.Unknown
|| viewModel.keyBackupState.value == KeysBackupStateManager.KeysBackupState.CheckingBackUpOnHomeserver) {
finish()
return
}
super.onBackPressed()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -628,6 +628,9 @@ class VectorSettingsPreferencesFragment : PreferenceFragmentCompat(), SharedPref
// Device list
refreshDevicesList()

//Refresh Key Management section
refreshKeysManagementSection()

// Advanced settings

// user account
Expand Down Expand Up @@ -2188,23 +2191,6 @@ class VectorSettingsPreferencesFragment : PreferenceFragmentCompat(), SharedPref
true
}


manageBackupPref.onPreferenceClickListener = Preference.OnPreferenceClickListener {
context?.let {
startActivity(KeysBackupManageActivity.intent(it, mSession.myUserId))
}
false
}

exportPref.onPreferenceClickListener = Preference.OnPreferenceClickListener {
exportKeys()
true
}

importPref.onPreferenceClickListener = Preference.OnPreferenceClickListener {
importKeys()
true
}
}

// crypto section: device key (fingerprint)
Expand Down Expand Up @@ -2249,6 +2235,27 @@ class VectorSettingsPreferencesFragment : PreferenceFragmentCompat(), SharedPref
}
}

private fun refreshKeysManagementSection() {
//If crypto is not enabled parent section will be removed
//TODO notice that this will not work when no network
manageBackupPref.onPreferenceClickListener = Preference.OnPreferenceClickListener {
context?.let {
startActivity(KeysBackupManageActivity.intent(it, mSession.myUserId))
}
false
}

exportPref.onPreferenceClickListener = Preference.OnPreferenceClickListener {
exportKeys()
true
}

importPref.onPreferenceClickListener = Preference.OnPreferenceClickListener {
importKeys()
true
}
}

//==============================================================================================================
// devices list
//==============================================================================================================
Expand Down Expand Up @@ -2881,7 +2888,7 @@ class VectorSettingsPreferencesFragment : PreferenceFragmentCompat(), SharedPref

/* ==========================================================================================
* Companion
* ========================================================================================== */
* ========================================================================================= */

companion object {
private val LOG_TAG = VectorSettingsPreferencesFragment::class.java.simpleName
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ class KeysBackupSettingsFragment : VectorBaseFragment(),
when (keysBackupState) {
KeysBackupStateManager.KeysBackupState.Unknown,
KeysBackupStateManager.KeysBackupState.CheckingBackUpOnHomeserver -> {
viewModel.loadingEvent.value = WaitingViewData("")
viewModel.loadingEvent.value = WaitingViewData(context!!.getString(R.string.keys_backup_settings_checking_backup_state))
}
else -> {
viewModel.loadingEvent.value = null
Expand All @@ -96,7 +96,6 @@ class KeysBackupSettingsFragment : VectorBaseFragment(),
recyclerViewAdapter?.updateWithTrust(session, it)
}
})

}

override fun didSelectSetupMessageRecovery() {
Expand Down
1 change: 1 addition & 0 deletions vector/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1378,6 +1378,7 @@ Why choose Riot.im?
<string name="keys_backup_settings_deleting_backup">Deleting backup…</string>
<string name="keys_backup_settings_delete_backup_error">Failed to delete backup (%s)</string>

<string name="keys_backup_settings_checking_backup_state">Checking backup state</string>
<string name="keys_backup_settings_delete_confirm_title">Delete Backup</string>
<string name="keys_backup_settings_delete_confirm_message">Delete your backed up encryption keys from the server? You will no longer be able to use your recovery key to read encrypted message history.</string>

Expand Down