diff --git a/vector/src/main/java/im/vector/riotx/features/settings/push/PushGatewayAction.kt b/vector/src/main/java/im/vector/riotx/features/settings/push/PushGatewayAction.kt new file mode 100644 index 0000000000..ab79d2e23b --- /dev/null +++ b/vector/src/main/java/im/vector/riotx/features/settings/push/PushGatewayAction.kt @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2020 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.riotx.features.settings.push + +import im.vector.riotx.core.platform.VectorViewModelAction + +sealed class PushGatewayAction : VectorViewModelAction { + object Refresh : PushGatewayAction() +} diff --git a/vector/src/main/java/im/vector/riotx/features/settings/push/PushGatewaysFragment.kt b/vector/src/main/java/im/vector/riotx/features/settings/push/PushGatewaysFragment.kt index d5c19e8781..92f1c9ce72 100644 --- a/vector/src/main/java/im/vector/riotx/features/settings/push/PushGatewaysFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/settings/push/PushGatewaysFragment.kt @@ -17,6 +17,7 @@ package im.vector.riotx.features.settings.push import android.os.Bundle +import android.view.MenuItem import android.view.View import com.airbnb.mvrx.fragmentViewModel import com.airbnb.mvrx.withState @@ -38,6 +39,19 @@ class PushGatewaysFragment @Inject constructor( private val viewModel: PushGatewaysViewModel by fragmentViewModel(PushGatewaysViewModel::class) + override fun getMenuRes() = R.menu.menu_push_gateways + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + return when (item.itemId) { + R.id.refresh -> { + viewModel.handle(PushGatewayAction.Refresh) + true + } + else -> + super.onOptionsItemSelected(item) + } + } + override fun onResume() { super.onResume() (activity as? VectorBaseActivity)?.supportActionBar?.setTitle(R.string.settings_notifications_targets) diff --git a/vector/src/main/java/im/vector/riotx/features/settings/push/PushGatewaysViewModel.kt b/vector/src/main/java/im/vector/riotx/features/settings/push/PushGatewaysViewModel.kt index 672e8e7874..8b1a551c13 100644 --- a/vector/src/main/java/im/vector/riotx/features/settings/push/PushGatewaysViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/settings/push/PushGatewaysViewModel.kt @@ -27,7 +27,7 @@ import com.squareup.inject.assisted.AssistedInject import im.vector.matrix.android.api.session.Session import im.vector.matrix.android.api.session.pushers.Pusher import im.vector.matrix.rx.RxSession -import im.vector.riotx.core.platform.EmptyAction +import im.vector.riotx.core.extensions.exhaustive import im.vector.riotx.core.platform.EmptyViewEvents import im.vector.riotx.core.platform.VectorViewModel @@ -37,7 +37,7 @@ data class PushGatewayViewState( class PushGatewaysViewModel @AssistedInject constructor(@Assisted initialState: PushGatewayViewState, private val session: Session) - : VectorViewModel(initialState) { + : VectorViewModel(initialState) { @AssistedInject.Factory interface Factory { @@ -55,6 +55,8 @@ class PushGatewaysViewModel @AssistedInject constructor(@Assisted initialState: init { observePushers() + // Force a refresh + session.refreshPushers() } private fun observePushers() { @@ -65,7 +67,13 @@ class PushGatewaysViewModel @AssistedInject constructor(@Assisted initialState: } } - override fun handle(action: EmptyAction) { - // No op + override fun handle(action: PushGatewayAction) { + when (action) { + is PushGatewayAction.Refresh -> handleRefresh() + }.exhaustive + } + + private fun handleRefresh() { + session.refreshPushers() } } diff --git a/vector/src/main/res/menu/menu_push_gateways.xml b/vector/src/main/res/menu/menu_push_gateways.xml new file mode 100644 index 0000000000..15709a1f1e --- /dev/null +++ b/vector/src/main/res/menu/menu_push_gateways.xml @@ -0,0 +1,11 @@ + + + + + + \ No newline at end of file diff --git a/vector/src/main/res/values/strings_riotX.xml b/vector/src/main/res/values/strings_riotX.xml index e842550dd1..cb2a29de28 100644 --- a/vector/src/main/res/values/strings_riotX.xml +++ b/vector/src/main/res/values/strings_riotX.xml @@ -18,7 +18,7 @@ When rooms are upgraded Troubleshoot Set notification importance by event - + Refresh