From 4482cbdaa649ff299044a064fa1a9957a3db1819 Mon Sep 17 00:00:00 2001 From: Adam Brown Date: Fri, 24 Sep 2021 17:00:48 +0100 Subject: [PATCH] using dedicated pusher removal methods for the different types of pushers - also adds a separate removePusher which supports removing any type of pusher --- .../sdk/api/session/pushers/PushersService.kt | 18 +++++++++++++++--- .../session/pushers/DefaultPushersService.kt | 16 ++++++++++++++-- .../vector/app/core/pushers/PushersManager.kt | 4 ++-- .../settings/push/PushGatewaysViewModel.kt | 2 +- 4 files changed, 32 insertions(+), 8 deletions(-) diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/pushers/PushersService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/pushers/PushersService.kt index 625cff78c5..2cd17952c6 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/pushers/PushersService.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/pushers/PushersService.kt @@ -102,10 +102,22 @@ interface PushersService { eventId: String) /** - * Remove the pusher - * When the appId is m.email then an email address is expected in the pushkey + * Remove a registered pusher + * @param pusher the pusher to remove, can be http or email */ - suspend fun removePusher(pushkey: String, appId: String) + suspend fun removePusher(pusher: Pusher) + + /** + * Remove a Http pusher by its pushkey and appId + * @see addHttpPusher + */ + suspend fun removeHttpPusher(pushkey: String, appId: String) + + /** + * Remove an Email pusher + * @see addEmailPusher + */ + suspend fun removeEmailPusher(email: String) /** * Get the current pushers, as a LiveData diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/pushers/DefaultPushersService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/pushers/DefaultPushersService.kt index 4b546701db..9a50abfe35 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/pushers/DefaultPushersService.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/pushers/DefaultPushersService.kt @@ -120,8 +120,20 @@ internal class DefaultPushersService @Inject constructor( data?.url?.let { url -> if ("/_matrix/push/v1/notify" !in url) throw InvalidParameterException("url should contain '/_matrix/push/v1/notify'") } } - override suspend fun removePusher(pushkey: String, appId: String) { - val params = RemovePusherTask.Params(pushkey, appId) + override suspend fun removePusher(pusher: Pusher) { + removePusher(pusher.pushKey, pusher.appId) + } + + override suspend fun removeHttpPusher(pushkey: String, appId: String) { + removePusher(pushkey, appId) + } + + override suspend fun removeEmailPusher(email: String) { + removePusher(pushKey = email, Pusher.APP_ID_EMAIL) + } + + private suspend fun removePusher(pushKey: String, pushAppId: String) { + val params = RemovePusherTask.Params(pushKey, pushAppId) removePusherTask.execute(params) } diff --git a/vector/src/main/java/im/vector/app/core/pushers/PushersManager.kt b/vector/src/main/java/im/vector/app/core/pushers/PushersManager.kt index df4c2e4d5a..a27765bf4f 100644 --- a/vector/src/main/java/im/vector/app/core/pushers/PushersManager.kt +++ b/vector/src/main/java/im/vector/app/core/pushers/PushersManager.kt @@ -75,12 +75,12 @@ class PushersManager @Inject constructor( suspend fun unregisterEmailPusher(email: String) { val currentSession = activeSessionHolder.getSafeActiveSession() ?: return - currentSession.removePusher(email, appId = "m.email") + currentSession.removeEmailPusher(email) } suspend fun unregisterPusher(pushKey: String) { val currentSession = activeSessionHolder.getSafeActiveSession() ?: return - currentSession.removePusher(pushKey, stringProvider.getString(R.string.pusher_app_id)) + currentSession.removeHttpPusher(pushKey, stringProvider.getString(R.string.pusher_app_id)) } companion object { diff --git a/vector/src/main/java/im/vector/app/features/settings/push/PushGatewaysViewModel.kt b/vector/src/main/java/im/vector/app/features/settings/push/PushGatewaysViewModel.kt index 77dedbc490..9a47fa2a15 100644 --- a/vector/src/main/java/im/vector/app/features/settings/push/PushGatewaysViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/settings/push/PushGatewaysViewModel.kt @@ -79,7 +79,7 @@ class PushGatewaysViewModel @AssistedInject constructor(@Assisted initialState: private fun removePusher(pusher: Pusher) { viewModelScope.launch { kotlin.runCatching { - session.removePusher(pusher.pushKey, pusher.appId) + session.removePusher(pusher) }.onFailure { _viewEvents.post(PushGatewayViewEvents.RemovePusherFailed(it)) }