Skip to content

Commit

Permalink
Unify EventBus events for FCM and UnifiedPush
Browse files Browse the repository at this point in the history
  • Loading branch information
valldrac committed Oct 11, 2024
1 parent fe4d084 commit 1c471ae
Show file tree
Hide file tree
Showing 7 changed files with 32 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@ import androidx.core.content.ContextCompat
import androidx.lifecycle.ViewModelProvider
import androidx.navigation.fragment.findNavController
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
import org.signal.core.util.getParcelableExtraCompat
import org.signal.core.util.logging.Log
import org.thoughtcrime.securesms.R
Expand All @@ -33,6 +36,8 @@ import org.thoughtcrime.securesms.components.settings.RadioListPreference
import org.thoughtcrime.securesms.components.settings.RadioListPreferenceViewHolder
import org.thoughtcrime.securesms.components.settings.configure
import org.thoughtcrime.securesms.components.settings.models.Banner
import org.thoughtcrime.securesms.conversation.v2.registerForLifecycle
import org.thoughtcrime.securesms.events.PushServiceEvent
import org.thoughtcrime.securesms.keyvalue.SettingsValues.NotificationDeliveryMethod
import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.notifications.NotificationChannels
Expand Down Expand Up @@ -104,6 +109,13 @@ class NotificationsSettingsFragment : DSLSettingsFragment(R.string.preferences__
viewModel.state.observe(viewLifecycleOwner) {
adapter.submitList(getConfiguration(it).toMappingModelList())
}

EventBus.getDefault().registerForLifecycle(subscriber = this, lifecycleOwner = viewLifecycleOwner)
}

@Subscribe(threadMode = ThreadMode.MAIN)
fun onPushServiceEvent(event: PushServiceEvent) {
viewModel.refresh()
}

private fun getConfiguration(state: NotificationsSettingsState): DSLConfiguration {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
package org.thoughtcrime.securesms.events

data object PushServiceEvent
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,13 @@
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GoogleApiAvailability;

import org.greenrobot.eventbus.EventBus;
import org.signal.core.util.PendingIntentFlags;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.PlayServicesProblemActivity;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.dependencies.AppDependencies;
import org.thoughtcrime.securesms.events.PushServiceEvent;
import org.thoughtcrime.securesms.gcm.FcmUtil;
import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint;
Expand Down Expand Up @@ -102,6 +104,7 @@ public void onRun() throws Exception {

AppDependencies.getSignalServiceAccountManager().setGcmId(token);
SignalStore.account().setFcmToken(token.get());
EventBus.getDefault().post(PushServiceEvent.INSTANCE);
} else {
throw new RetryLaterException(new IOException("Failed to retrieve a token."));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,16 @@ import androidx.lifecycle.ViewModelProvider
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import im.molly.unifiedpush.model.UnifiedPushStatus
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.components.settings.DSLConfiguration
import org.thoughtcrime.securesms.components.settings.DSLSettingsFragment
import org.thoughtcrime.securesms.components.settings.DSLSettingsIcon
import org.thoughtcrime.securesms.components.settings.DSLSettingsText
import org.thoughtcrime.securesms.components.settings.configure
import org.thoughtcrime.securesms.conversation.v2.registerForLifecycle
import org.thoughtcrime.securesms.events.PushServiceEvent
import org.thoughtcrime.securesms.util.Util.writeTextToClipboard
import org.thoughtcrime.securesms.util.adapter.mapping.MappingAdapter

Expand All @@ -30,15 +34,13 @@ class UnifiedPushSettingsFragment : DSLSettingsFragment(R.string.NotificationsSe
viewModel.state.observe(viewLifecycleOwner) {
adapter.submitList(getConfiguration(it).toMappingModelList())
}
}
override fun onStart() {
super.onStart()
EventBus.getDefault().register(viewModel)

EventBus.getDefault().registerForLifecycle(subscriber = this, lifecycleOwner = viewLifecycleOwner)
}

override fun onStop() {
EventBus.getDefault().unregister(viewModel)
super.onStop()
@Subscribe(threadMode = ThreadMode.MAIN)
fun onPushServiceEvent(event: PushServiceEvent) {
viewModel.refresh()
}

private fun getConfiguration(state: UnifiedPushSettingsState): DSLConfiguration {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,9 @@ import android.os.Build
import androidx.lifecycle.LiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import im.molly.unifiedpush.events.UnifiedPushRegistrationEvent
import im.molly.unifiedpush.jobs.UnifiedPushRefreshJob
import im.molly.unifiedpush.model.UnifiedPushStatus
import im.molly.unifiedpush.util.MollySocketRequest
import org.greenrobot.eventbus.Subscribe
import org.signal.core.util.concurrent.SignalExecutors
import org.signal.core.util.logging.Log
import org.thoughtcrime.securesms.R
Expand All @@ -29,10 +27,7 @@ class UnifiedPushSettingsViewModel(private val application: Application) : ViewM

val state: LiveData<UnifiedPushSettingsState> = store.stateLiveData

@Subscribe
fun onStatusRefreshed(e: UnifiedPushRegistrationEvent) {
Log.d(TAG, "Received event to refresh.")
status = SignalStore.unifiedpush.status
fun refresh() {
store.update { getState() }
}

Expand Down Expand Up @@ -96,7 +91,7 @@ class UnifiedPushSettingsViewModel(private val application: Application) : ViewM
fun setUnifiedPushDistributor(distributor: String) {
UnifiedPush.saveDistributor(application, distributor)
UnifiedPush.registerApp(application)
store.update { getState() }
refresh()
}

fun setMollySocketUrl(url: String?) {
Expand All @@ -120,7 +115,7 @@ class UnifiedPushSettingsViewModel(private val application: Application) : ViewM
}

private fun processNewStatus() {
store.update { getState() }
refresh()
AppDependencies.jobManager.add(UnifiedPushRefreshJob())
}

Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@

package im.molly.unifiedpush.jobs

import im.molly.unifiedpush.events.UnifiedPushRegistrationEvent
import im.molly.unifiedpush.model.RegistrationStatus
import im.molly.unifiedpush.model.UnifiedPushStatus
import im.molly.unifiedpush.model.saveStatus
Expand All @@ -11,6 +10,7 @@ import im.molly.unifiedpush.util.UnifiedPushNotificationBuilder
import org.greenrobot.eventbus.EventBus
import org.signal.core.util.logging.Log
import org.thoughtcrime.securesms.ApplicationContext
import org.thoughtcrime.securesms.events.PushServiceEvent
import org.thoughtcrime.securesms.jobmanager.Job
import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint
import org.thoughtcrime.securesms.jobs.BaseJob
Expand Down Expand Up @@ -113,7 +113,7 @@ class UnifiedPushRefreshJob private constructor(parameters: Parameters) : BaseJo
}
}
}
EventBus.getDefault().post(UnifiedPushRegistrationEvent)
EventBus.getDefault().post(PushServiceEvent)
}

private fun reInitializeNotificationServices() {
Expand Down

0 comments on commit 1c471ae

Please sign in to comment.