From d52e61413d398769bc6f347c60bff387f1858a5d Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 4 Jan 2022 14:32:03 +0100 Subject: [PATCH 1/2] Ask for user confirmation before deleting Widget --- .../java/im/vector/app/features/widgets/WidgetFragment.kt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/widgets/WidgetFragment.kt b/vector/src/main/java/im/vector/app/features/widgets/WidgetFragment.kt index afe34a9b7f..90eb9491a6 100644 --- a/vector/src/main/java/im/vector/app/features/widgets/WidgetFragment.kt +++ b/vector/src/main/java/im/vector/app/features/widgets/WidgetFragment.kt @@ -160,7 +160,7 @@ class WidgetFragment @Inject constructor() : return@withState true } R.id.action_delete -> { - viewModel.handle(WidgetAction.DeleteWidget) + deleteWidget() return@withState true } R.id.action_refresh -> if (state.formattedURL.complete) { @@ -172,7 +172,7 @@ class WidgetFragment @Inject constructor() : return@withState true } R.id.action_revoke -> if (state.status == WidgetStatus.WIDGET_ALLOWED) { - viewModel.handle(WidgetAction.RevokeWidget) + revokeWidget() return@withState true } } @@ -306,7 +306,7 @@ class WidgetFragment @Inject constructor() : ) } - fun deleteWidget() { + private fun deleteWidget() { MaterialAlertDialogBuilder(requireContext()) .setMessage(R.string.widget_delete_message_confirmation) .setPositiveButton(R.string.remove) { _, _ -> @@ -316,7 +316,7 @@ class WidgetFragment @Inject constructor() : .show() } - fun revokeWidget() { + private fun revokeWidget() { viewModel.handle(WidgetAction.RevokeWidget) } } From df957971a87ed861046cdcefc734306bd605d0ca Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 4 Jan 2022 14:44:08 +0100 Subject: [PATCH 2/2] Add some logs to try to understand an error on the production app. Also propagate the exception if this is not a registration flow response. --- .../session/terms/DefaultTermsService.kt | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/terms/DefaultTermsService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/terms/DefaultTermsService.kt index c52c6a404e..313fb6319d 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/terms/DefaultTermsService.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/terms/DefaultTermsService.kt @@ -36,6 +36,7 @@ import org.matrix.android.sdk.internal.session.sync.model.accountdata.AcceptedTe import org.matrix.android.sdk.internal.session.user.accountdata.UpdateUserAccountDataTask import org.matrix.android.sdk.internal.session.user.accountdata.UserAccountDataDataSource import org.matrix.android.sdk.internal.util.ensureTrailingSlash +import timber.log.Timber import javax.inject.Inject internal class DefaultTermsService @Inject constructor( @@ -63,19 +64,28 @@ internal class DefaultTermsService @Inject constructor( */ override suspend fun getHomeserverTerms(baseUrl: String): TermsResponse { return try { + val request = baseUrl + NetworkConstants.URI_API_PREFIX_PATH_R0 + "register" executeRequest(null) { - termsAPI.register(baseUrl + NetworkConstants.URI_API_PREFIX_PATH_R0 + "register") + termsAPI.register(request) } // Return empty result if it succeed, but it should never happen + Timber.w("Request $request succeeded, it should never happen") TermsResponse() } catch (throwable: Throwable) { - @Suppress("UNCHECKED_CAST") - TermsResponse( - policies = (throwable.toRegistrationFlowResponse() - ?.params - ?.get(LoginFlowTypes.TERMS) as? JsonDict) - ?.get("policies") as? JsonDict - ) + val registrationFlowResponse = throwable.toRegistrationFlowResponse() + if (registrationFlowResponse != null) { + @Suppress("UNCHECKED_CAST") + TermsResponse( + policies = (registrationFlowResponse + .params + ?.get(LoginFlowTypes.TERMS) as? JsonDict) + ?.get("policies") as? JsonDict + ) + } else { + // Other error + Timber.e(throwable, "Error while getting homeserver terms") + throw throwable + } } }