Skip to content
This repository was archived by the owner on Jan 30, 2025. It is now read-only.

Commit b987985

Browse files
committed
Merge branch 'release/0.9.8'
2 parents 35626cc + ec434c3 commit b987985

33 files changed

+256
-141
lines changed

CHANGES.rst

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,13 @@
1+
Changes in Riot 0.9.8 (2019-10-09)
2+
===================================================
3+
4+
MatrixSdk 🚀:
5+
- Upgrade to version 0.9.30.
6+
7+
Bugfix 🐛:
8+
- App crashes for some users (#3348, #3349)
9+
10+
111
Changes in Riot 0.9.7 (2019-10-07)
212
===================================================
313

build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ buildscript {
2323

2424
// global properties used in sub modules
2525
ext {
26-
versionCodeProp = 90700
27-
versionNameProp = "0.9.7-dev"
26+
versionCodeProp = 90800
27+
versionNameProp = "0.9.8"
2828
versionBuild = System.getenv("BUILD_NUMBER") as Integer ?: 0
2929
buildNumberProp = "${versionBuild}"
3030
}

vector/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ dependencies {
245245
/************* Matrix SDK management **************/
246246
// update settings.gradle
247247
// use the matrix SDK as external dependency
248-
implementation 'com.github.matrix-org:matrix-android-sdk:v0.9.29'
248+
implementation 'com.github.matrix-org:matrix-android-sdk:v0.9.30'
249249
// use the matrix SDK as a sub project
250250
// you have to uncomment some lines in settings.gradle
251251
//implementation project(':matrix-sdk')

vector/src/main/AndroidManifest.xml

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -340,22 +340,22 @@
340340
android:theme="@style/GroupAppTheme.Light"
341341
android:windowSoftInputMode="adjustResize" />
342342
<activity android:name=".activity.VectorUniversalLinkActivity">
343-
<intent-filter>
344-
<action android:name="android.intent.action.VIEW" />
345-
346-
<category android:name="android.intent.category.DEFAULT" />
347-
<category android:name="android.intent.category.BROWSABLE" />
348-
349-
<data android:scheme="http" />
350-
<data android:scheme="https" />
351-
<data android:host="vector.im" />
352-
<data android:pathPrefix="/app/" />
353-
<data android:pathPrefix="/beta/" />
354-
<data android:pathPrefix="/develop/" />
355-
<data android:pathPrefix="/staging/" />
356-
<!-- mail validation -->
357-
<data android:pathPrefix="/_matrix/" />
358-
</intent-filter>
343+
<!-- <intent-filter>-->
344+
<!-- <action android:name="android.intent.action.VIEW" />-->
345+
346+
<!-- <category android:name="android.intent.category.DEFAULT" />-->
347+
<!-- <category android:name="android.intent.category.BROWSABLE" />-->
348+
349+
<!-- <data android:scheme="http" />-->
350+
<!-- <data android:scheme="https" />-->
351+
<!-- <data android:host="vector.im" />-->
352+
<!-- <data android:pathPrefix="/app/" />-->
353+
<!-- <data android:pathPrefix="/beta/" />-->
354+
<!-- <data android:pathPrefix="/develop/" />-->
355+
<!-- <data android:pathPrefix="/staging/" />-->
356+
<!-- &lt;!&ndash; mail validation &ndash;&gt;-->
357+
<!-- <data android:pathPrefix="/_matrix/" />-->
358+
<!-- </intent-filter>-->
359359
<intent-filter>
360360
<action android:name="android.intent.action.VIEW" />
361361

vector/src/main/java/im/vector/activity/VectorRoomActivity.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2610,8 +2610,12 @@ public void onSelectedEventChange(@Nullable Event currentSelectedEvent) {
26102610
*/
26112611
private void refreshNotificationsArea() {
26122612
// sanity check
2613-
// might happen when the application is logged out
2614-
if ((null == mSession.getDataHandler()) || (null == mRoom) || (null != sRoomPreviewData)) {
2613+
// might happen when the application is logged out (NPE reported on store)
2614+
if (null == mSession
2615+
|| (null == mSession.getDataHandler())
2616+
|| (null == mSession.getDataHandler().getStore())
2617+
|| (null == mRoom)
2618+
|| (null != sRoomPreviewData)) {
26152619
return;
26162620
}
26172621
final LimitResourceState limitResourceState = mResourceLimitEventListener.getLimitResourceState();

vector/src/main/java/im/vector/features/hhs/ResourceLimitEventListener.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,10 +90,10 @@ class ResourceLimitEventListener(private val dataHandler: MXDataHandler, private
9090
*/
9191
private fun loadServerNoticeRooms(): List<Room> {
9292
Log.v("ResourceLimitEventListener", "Load server notice rooms")
93-
return dataHandler.store.rooms.filter {
93+
return dataHandler.store?.rooms?.filter {
9494
val tags = it.accountData?.keys ?: emptySet()
9595
tags.contains(RoomTag.ROOM_TAG_SERVER_NOTICE)
96-
}
96+
} ?: emptyList()
9797
}
9898

9999
private fun processPinnedEvents(room: Room) {

vector/src/main/java/im/vector/fragments/VectorSettingsPreferencesFragment.kt

Lines changed: 17 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -277,18 +277,6 @@ class VectorSettingsPreferencesFragment : PreferenceFragmentCompat(), SharedPref
277277
findPreference(PreferencesManager.SETTINGS_ENCRYPTION_INFORMATION_DEVICE_ID_PREFERENCE_KEY)
278278
}
279279

280-
private val manageBackupPref by lazy {
281-
findPreference(PreferencesManager.SETTINGS_SECURE_MESSAGE_RECOVERY_PREFERENCE_KEY)
282-
}
283-
284-
private val exportPref by lazy {
285-
findPreference(PreferencesManager.SETTINGS_ENCRYPTION_EXPORT_E2E_ROOM_KEYS_PREFERENCE_KEY)
286-
}
287-
288-
private val importPref by lazy {
289-
findPreference(PreferencesManager.SETTINGS_ENCRYPTION_IMPORT_E2E_ROOM_KEYS_PREFERENCE_KEY)
290-
}
291-
292280
private val cryptoInfoTextPreference by lazy {
293281
findPreference(PreferencesManager.SETTINGS_ENCRYPTION_INFORMATION_DEVICE_KEY_PREFERENCE_KEY)
294282
}
@@ -2500,22 +2488,29 @@ class VectorSettingsPreferencesFragment : PreferenceFragmentCompat(), SharedPref
25002488
private fun refreshKeysManagementSection() {
25012489
//If crypto is not enabled parent section will be removed
25022490
//TODO notice that this will not work when no network
2503-
manageBackupPref.onPreferenceClickListener = Preference.OnPreferenceClickListener {
2504-
context?.let {
2505-
startActivity(KeysBackupManageActivity.intent(it, mSession.myUserId))
2491+
findPreference(PreferencesManager.SETTINGS_SECURE_MESSAGE_RECOVERY_PREFERENCE_KEY)?.let {
2492+
it.onPreferenceClickListener = Preference.OnPreferenceClickListener {
2493+
context?.let {
2494+
startActivity(KeysBackupManageActivity.intent(it, mSession.myUserId))
2495+
}
2496+
false
25062497
}
2507-
false
25082498
}
25092499

2510-
exportPref.onPreferenceClickListener = Preference.OnPreferenceClickListener {
2511-
exportKeys()
2512-
true
2500+
findPreference(PreferencesManager.SETTINGS_ENCRYPTION_EXPORT_E2E_ROOM_KEYS_PREFERENCE_KEY)?.let {
2501+
it.onPreferenceClickListener = Preference.OnPreferenceClickListener {
2502+
exportKeys()
2503+
true
2504+
}
25132505
}
25142506

2515-
importPref.onPreferenceClickListener = Preference.OnPreferenceClickListener {
2516-
importKeys()
2517-
true
2507+
findPreference(PreferencesManager.SETTINGS_ENCRYPTION_IMPORT_E2E_ROOM_KEYS_PREFERENCE_KEY)?.let {
2508+
it.onPreferenceClickListener = Preference.OnPreferenceClickListener {
2509+
importKeys()
2510+
true
2511+
}
25182512
}
2513+
25192514
}
25202515

25212516
//==============================================================================================================

vector/src/main/java/im/vector/fragments/discovery/DiscoverySettingsViewModel.kt

Lines changed: 45 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,12 @@
1515
*/
1616
package im.vector.fragments.discovery
1717

18+
import androidx.lifecycle.LiveData
19+
import androidx.lifecycle.MutableLiveData
1820
import com.airbnb.mvrx.*
1921
import com.google.i18n.phonenumbers.PhoneNumberUtil
2022
import im.vector.Matrix
23+
import im.vector.ui.arch.LiveEvent
2124
import org.matrix.androidsdk.MXSession
2225
import org.matrix.androidsdk.core.callback.ApiCallback
2326
import org.matrix.androidsdk.core.model.MatrixError
@@ -61,6 +64,10 @@ class DiscoverySettingsViewModel(initialState: DiscoverySettingsState, private v
6164
}
6265
}
6366

67+
private val _errorLiveEvent = MutableLiveData<LiveEvent<Throwable>>()
68+
val errorLiveEvent: LiveData<LiveEvent<Throwable>>
69+
get() = _errorLiveEvent
70+
6471
init {
6572
startListenToIdentityManager()
6673
refreshModel()
@@ -138,11 +145,11 @@ class DiscoverySettingsViewModel(initialState: DiscoverySettingsState, private v
138145
}
139146

140147
private fun handleDeleteError(e: Exception) {
148+
_errorLiveEvent.postValue(LiveEvent(e))
149+
141150
changeMailState(email, Fail(e))
142151
}
143-
144152
})
145-
146153
}
147154

148155
private fun changeMailState(address: String, state: Async<PidInfo.SharedState>, threePid: ThreePid?) {
@@ -203,7 +210,8 @@ class DiscoverySettingsViewModel(initialState: DiscoverySettingsState, private v
203210

204211
mxSession.identityServerManager.startUnBindSession(ThreePid.MEDIUM_EMAIL, email, null, object : ApiCallback<Pair<Boolean, ThreePid?>> {
205212
override fun onSuccess(info: Pair<Boolean, ThreePid?>) {
206-
if (info.first /*requires mail validation */) {
213+
if (info.first) {
214+
// requires mail validation
207215
changeMailState(email, Success(PidInfo.SharedState.NOT_VERIFIED_FOR_UNBIND), info.second)
208216
} else {
209217
changeMailState(email, Success(PidInfo.SharedState.NOT_SHARED))
@@ -223,6 +231,8 @@ class DiscoverySettingsViewModel(initialState: DiscoverySettingsState, private v
223231
}
224232

225233
private fun handleDeleteError(e: Exception) {
234+
_errorLiveEvent.postValue(LiveEvent(e))
235+
226236
changeMailState(email, Fail(e))
227237
}
228238

@@ -261,6 +271,8 @@ class DiscoverySettingsViewModel(initialState: DiscoverySettingsState, private v
261271
}
262272

263273
private fun handleDeleteError(e: Exception) {
274+
_errorLiveEvent.postValue(LiveEvent(e))
275+
264276
changeMsisdnState(msisdn, Fail(e))
265277
}
266278

@@ -296,6 +308,8 @@ class DiscoverySettingsViewModel(initialState: DiscoverySettingsState, private v
296308

297309

298310
private fun handleDeleteError(e: Exception) {
311+
_errorLiveEvent.postValue(LiveEvent(e))
312+
299313
changeMsisdnState(msisdn, Fail(e))
300314
}
301315

@@ -337,6 +351,8 @@ class DiscoverySettingsViewModel(initialState: DiscoverySettingsState, private v
337351

338352
mxSession.myUser.refreshThirdPartyIdentifiers(object : ApiCallback<Void> {
339353
override fun onUnexpectedError(e: Exception) {
354+
_errorLiveEvent.postValue(LiveEvent(e))
355+
340356
setState {
341357
copy(
342358
emailList = Fail(e),
@@ -346,6 +362,8 @@ class DiscoverySettingsViewModel(initialState: DiscoverySettingsState, private v
346362
}
347363

348364
override fun onNetworkError(e: Exception) {
365+
_errorLiveEvent.postValue(LiveEvent(e))
366+
349367
setState {
350368
copy(
351369
emailList = Fail(e),
@@ -355,6 +373,8 @@ class DiscoverySettingsViewModel(initialState: DiscoverySettingsState, private v
355373
}
356374

357375
override fun onMatrixError(e: MatrixError) {
376+
_errorLiveEvent.postValue(LiveEvent(Exception(e.message)))
377+
358378
setState {
359379
copy(
360380
emailList = Fail(Throwable(e.message)),
@@ -373,7 +393,7 @@ class DiscoverySettingsViewModel(initialState: DiscoverySettingsState, private v
373393
})
374394
}
375395

376-
private fun retrieveBinding() {
396+
fun retrieveBinding() {
377397
val linkedMailsInfo = mxSession.myUser.getlinkedEmails()
378398
val knownEmails = linkedMailsInfo.map { it.address }
379399
// Note: it will be a list of "email"
@@ -421,6 +441,8 @@ class DiscoverySettingsViewModel(initialState: DiscoverySettingsState, private v
421441
}
422442

423443
private fun onError(e: Throwable) {
444+
_errorLiveEvent.postValue(LiveEvent(e))
445+
424446
setState {
425447
copy(
426448
emailList = Success(knownEmails.map { PidInfo(it, Fail(e)) }),
@@ -449,26 +471,29 @@ class DiscoverySettingsViewModel(initialState: DiscoverySettingsState, private v
449471
code,
450472
object : ApiCallback<SuccessResult> {
451473
override fun onSuccess(info: SuccessResult) {
452-
add3pid(ThreePid.MEDIUM_MSISDN, msisdn, bind)
474+
finalizeBind3pid(ThreePid.MEDIUM_MSISDN, msisdn, bind)
453475
}
454476

455477
override fun onNetworkError(e: Exception) {
478+
_errorLiveEvent.postValue(LiveEvent(e))
456479
changeMsisdnState(msisdn, Fail(e))
457480
}
458481

459482
override fun onMatrixError(e: MatrixError) {
483+
_errorLiveEvent.postValue(LiveEvent(Exception(e.message)))
460484
changeMsisdnState(msisdn, Fail(Throwable(e.message)))
461485
}
462486

463487
override fun onUnexpectedError(e: Exception) {
488+
_errorLiveEvent.postValue(LiveEvent(e))
464489
changeMsisdnState(msisdn, Fail(e))
465490
}
466491

467492
}
468493
)
469494
}
470495

471-
fun add3pid(medium: String, address: String, bind: Boolean) = withState { state ->
496+
fun finalizeBind3pid(medium: String, address: String, bind: Boolean) = withState { state ->
472497
val _3pid: ThreePid
473498
if (medium == ThreePid.MEDIUM_EMAIL) {
474499
changeMailState(address, Loading())
@@ -498,6 +523,9 @@ class DiscoverySettingsViewModel(initialState: DiscoverySettingsState, private v
498523
}
499524

500525
private fun reportError(e: Exception) {
526+
_errorLiveEvent.postValue(LiveEvent(e))
527+
528+
// Restore previous state after an error
501529
val sharedState = Success(if (bind) PidInfo.SharedState.NOT_VERIFIED_FOR_BIND else PidInfo.SharedState.NOT_VERIFIED_FOR_UNBIND)
502530
if (medium == ThreePid.MEDIUM_EMAIL) {
503531
changeMailState(address, sharedState)
@@ -515,6 +543,17 @@ class DiscoverySettingsViewModel(initialState: DiscoverySettingsState, private v
515543

516544
}
517545

546+
fun refreshPendingEmailBindings() = withState { state ->
547+
state.emailList()?.forEach { info ->
548+
when (info.isShared()) {
549+
PidInfo.SharedState.NOT_VERIFIED_FOR_BIND -> finalizeBind3pid(ThreePid.MEDIUM_EMAIL, info.value, true)
550+
PidInfo.SharedState.NOT_VERIFIED_FOR_UNBIND -> finalizeBind3pid(ThreePid.MEDIUM_EMAIL, info.value, false)
551+
else -> Unit
552+
}
553+
}
554+
}
555+
556+
518557
companion object : MvRxViewModelFactory<DiscoverySettingsViewModel, DiscoverySettingsState> {
519558

520559
override fun create(viewModelContext: ViewModelContext, state: DiscoverySettingsState): DiscoverySettingsViewModel? {

vector/src/main/java/im/vector/fragments/discovery/SetIdentityServerFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ class SetIdentityServerFragment : VectorBaseMvRxFragment() {
121121

122122
when (event) {
123123
is NavigateEvent.NoTerms -> {
124-
AlertDialog.Builder(requireContext())
124+
AlertDialog.Builder(requireActivity())
125125
.setTitle(R.string.settings_discovery_no_terms_title)
126126
.setMessage(R.string.settings_discovery_no_terms)
127127
.setPositiveButton(R.string._continue) { dialog, which ->

vector/src/main/java/im/vector/fragments/discovery/SettingsButtonItem.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,10 @@ abstract class SettingsButtonItem : EpoxyModelWithHolder<SettingsButtonItem.Hold
5555
}
5656

5757
when (buttonStyle) {
58-
SettingsTextButtonItem.ButtonStyle.POSITIVE -> {
58+
SettingsTextButtonItem.ButtonStyle.POSITIVE -> {
5959
holder.button.setTextColor(ThemeUtils.getColor(holder.main.context, R.attr.colorAccent))
6060
}
61-
SettingsTextButtonItem.ButtonStyle.DESCTRUCTIVE -> {
61+
SettingsTextButtonItem.ButtonStyle.DESTRUCTIVE -> {
6262
holder.button.setTextColor(ContextCompat.getColor(holder.main.context, R.color.vector_error_color))
6363
}
6464
}

0 commit comments

Comments
 (0)