diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java index 645c1a2d93..8f430e4689 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java @@ -1023,7 +1023,6 @@ public class ConversationListFragment extends MainFragment implements ActionMode lifecycleDisposable.add(viewModel.getMegaphoneState().subscribe(this::onMegaphoneChanged)); lifecycleDisposable.add(viewModel.getConversationsState().subscribe(this::onConversationListChanged)); lifecycleDisposable.add(viewModel.getHasNoConversations().subscribe(this::updateEmptyState)); - lifecycleDisposable.add(viewModel.getNotificationProfiles().subscribe(profiles -> requireCallback().updateNotificationProfileStatus(profiles))); lifecycleDisposable.add(viewModel.getWebSocketState().subscribe(pipeState -> requireCallback().updateProxyStatus(pipeState))); lifecycleDisposable.add(viewModel.getChatFolderState().subscribe(this::onChatFoldersChanged)); @@ -2035,8 +2034,6 @@ public class ConversationListFragment extends MainFragment implements ActionMode @NonNull Stub getBasicToolbar(); - void updateNotificationProfileStatus(@NonNull List notificationProfiles); - void updateProxyStatus(@NonNull WebSocketConnectionState state); void onMultiSelectStarted(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListViewModel.kt index 655aa9c869..0301fb468b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListViewModel.kt @@ -17,7 +17,6 @@ import org.signal.paging.PagingConfig import org.signal.paging.ProxyPagingController import org.thoughtcrime.securesms.components.settings.app.chats.folders.ChatFolderRecord import org.thoughtcrime.securesms.components.settings.app.chats.folders.ChatFoldersRepository -import org.thoughtcrime.securesms.components.settings.app.notifications.profiles.NotificationProfilesRepository import org.thoughtcrime.securesms.conversationlist.chatfilter.ConversationFilterRequest import org.thoughtcrime.securesms.conversationlist.chatfilter.ConversationFilterSource import org.thoughtcrime.securesms.conversationlist.model.Conversation @@ -31,7 +30,6 @@ import org.thoughtcrime.securesms.megaphone.Megaphone import org.thoughtcrime.securesms.megaphone.MegaphoneRepository import org.thoughtcrime.securesms.megaphone.Megaphones import org.thoughtcrime.securesms.notifications.MarkReadReceiver -import org.thoughtcrime.securesms.notifications.profiles.NotificationProfile import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.recipients.RecipientId import org.thoughtcrime.securesms.util.rx.RxStore @@ -40,8 +38,7 @@ import java.util.concurrent.TimeUnit class ConversationListViewModel( private val isArchived: Boolean, - private val megaphoneRepository: MegaphoneRepository = AppDependencies.megaphoneRepository, - private val notificationProfilesRepository: NotificationProfilesRepository = NotificationProfilesRepository() + private val megaphoneRepository: MegaphoneRepository = AppDependencies.megaphoneRepository ) : ViewModel() { companion object { @@ -241,11 +238,6 @@ class ConversationListViewModel( } } - fun getNotificationProfiles(): Flowable> { - return notificationProfilesRepository.getProfiles() - .observeOn(AndroidSchedulers.mainThread()) - } - private fun setSelection(newSelection: Collection) { store.update { val selection = newSelection.toSet() diff --git a/app/src/main/java/org/thoughtcrime/securesms/main/MainActivityListHostFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/main/MainActivityListHostFragment.kt index 7dd9c7982d..c7ac7cc662 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/main/MainActivityListHostFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/main/MainActivityListHostFragment.kt @@ -108,6 +108,10 @@ class MainActivityListHostFragment : Fragment(R.layout.main_activity_list_host_f R.id.callLogFragment -> goToStateFromCalling(state, controller) } } + + disposables += conversationListTabsViewModel.getNotificationProfiles().subscribeBy { profiles -> + updateNotificationProfileStatus(profiles) + } } private fun goToStateFromConversationList(state: ConversationListTabsState, navController: NavController) { @@ -314,7 +318,7 @@ class MainActivityListHostFragment : Fragment(R.layout.main_activity_list_host_f } } - override fun updateNotificationProfileStatus(notificationProfiles: List) { + private fun updateNotificationProfileStatus(notificationProfiles: List) { val activeProfile = NotificationProfiles.getActiveProfile(notificationProfiles) if (activeProfile != null) { if (activeProfile.id != SignalStore.notificationProfile.lastProfilePopup) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/tabs/ConversationListTabsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/tabs/ConversationListTabsViewModel.kt index 0f8a3d69c9..9575f3219f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/tabs/ConversationListTabsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/tabs/ConversationListTabsViewModel.kt @@ -10,10 +10,15 @@ import io.reactivex.rxjava3.disposables.Disposable import io.reactivex.rxjava3.kotlin.plusAssign import io.reactivex.rxjava3.subjects.PublishSubject import io.reactivex.rxjava3.subjects.Subject +import org.thoughtcrime.securesms.components.settings.app.notifications.profiles.NotificationProfilesRepository +import org.thoughtcrime.securesms.notifications.profiles.NotificationProfile import org.thoughtcrime.securesms.stories.Stories import org.thoughtcrime.securesms.util.rx.RxStore class ConversationListTabsViewModel(startingTab: ConversationListTab, repository: ConversationListTabRepository) : ViewModel() { + + private val notificationProfilesRepository: NotificationProfilesRepository = NotificationProfilesRepository() + private val store = RxStore(ConversationListTabsState(tab = startingTab)) val stateSnapshot: ConversationListTabsState @@ -47,6 +52,11 @@ class ConversationListTabsViewModel(startingTab: ConversationListTab, repository disposables.clear() } + fun getNotificationProfiles(): Flowable> { + return notificationProfilesRepository.getProfiles() + .observeOn(AndroidSchedulers.mainThread()) + } + fun onChatsSelected() { internalTabClickEvents.onNext(ConversationListTab.CHATS) performStoreUpdate { it.copy(tab = ConversationListTab.CHATS) }