mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-02-26 12:44:38 +00:00
Remove ConversationListTabs enum.
This commit is contained in:
committed by
Greyson Parrelli
parent
0b315220ee
commit
eb190f5f00
@@ -38,11 +38,11 @@ import org.thoughtcrime.securesms.conversationlist.RestoreCompleteBottomSheetDia
|
||||
import org.thoughtcrime.securesms.devicetransfer.olddevice.OldDeviceExitActivity
|
||||
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
||||
import org.thoughtcrime.securesms.main.MainActivityListHostFragment
|
||||
import org.thoughtcrime.securesms.main.MainNavigationDestination
|
||||
import org.thoughtcrime.securesms.main.MainNavigationDetailLocation
|
||||
import org.thoughtcrime.securesms.net.DeviceTransferBlockingInterceptor
|
||||
import org.thoughtcrime.securesms.notifications.VitalsViewModel
|
||||
import org.thoughtcrime.securesms.stories.Stories
|
||||
import org.thoughtcrime.securesms.stories.tabs.ConversationListTab
|
||||
import org.thoughtcrime.securesms.stories.tabs.ConversationListTabRepository
|
||||
import org.thoughtcrime.securesms.stories.tabs.ConversationListTabsFragment
|
||||
import org.thoughtcrime.securesms.stories.tabs.ConversationListTabsViewModel
|
||||
@@ -68,7 +68,7 @@ class MainActivity : PassphraseRequiredActivity(), VoiceNoteMediaControllerOwner
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun clearTopAndOpenTab(context: Context, startingTab: ConversationListTab): Intent {
|
||||
fun clearTopAndOpenTab(context: Context, startingTab: MainNavigationDestination): Intent {
|
||||
return clearTop(context).putExtra(KEY_STARTING_TAB, startingTab)
|
||||
}
|
||||
}
|
||||
@@ -83,8 +83,8 @@ class MainActivity : PassphraseRequiredActivity(), VoiceNoteMediaControllerOwner
|
||||
get() = mediaController
|
||||
|
||||
private val conversationListTabsViewModel: ConversationListTabsViewModel by viewModel {
|
||||
val startingTab = intent.extras?.getSerializableCompat(KEY_STARTING_TAB, ConversationListTab::class.java)
|
||||
ConversationListTabsViewModel(startingTab ?: ConversationListTab.CHATS, ConversationListTabRepository())
|
||||
val startingTab = intent.extras?.getSerializableCompat(KEY_STARTING_TAB, MainNavigationDestination::class.java)
|
||||
ConversationListTabsViewModel(startingTab ?: MainNavigationDestination.CHATS, ConversationListTabRepository())
|
||||
}
|
||||
|
||||
private val vitalsViewModel: VitalsViewModel by viewModel {
|
||||
@@ -165,12 +165,12 @@ class MainActivity : PassphraseRequiredActivity(), VoiceNoteMediaControllerOwner
|
||||
handleDeepLinkIntent(intent)
|
||||
|
||||
val extras = intent.extras ?: return
|
||||
val startingTab = extras.getSerializableCompat(KEY_STARTING_TAB, ConversationListTab::class.java)
|
||||
val startingTab = extras.getSerializableCompat(KEY_STARTING_TAB, MainNavigationDestination::class.java)
|
||||
|
||||
when (startingTab) {
|
||||
ConversationListTab.CHATS -> conversationListTabsViewModel.onChatsSelected()
|
||||
ConversationListTab.CALLS -> conversationListTabsViewModel.onCallsSelected()
|
||||
ConversationListTab.STORIES -> {
|
||||
MainNavigationDestination.CHATS -> conversationListTabsViewModel.onChatsSelected()
|
||||
MainNavigationDestination.CALLS -> conversationListTabsViewModel.onCallsSelected()
|
||||
MainNavigationDestination.STORIES -> {
|
||||
if (Stories.isFeatureEnabled()) {
|
||||
conversationListTabsViewModel.onStoriesSelected()
|
||||
}
|
||||
|
||||
@@ -50,11 +50,11 @@ import org.thoughtcrime.securesms.conversationlist.chatfilter.FilterLerp
|
||||
import org.thoughtcrime.securesms.conversationlist.chatfilter.FilterPullState
|
||||
import org.thoughtcrime.securesms.databinding.CallLogFragmentBinding
|
||||
import org.thoughtcrime.securesms.dependencies.AppDependencies
|
||||
import org.thoughtcrime.securesms.main.MainNavigationDestination
|
||||
import org.thoughtcrime.securesms.main.MainToolbarMode
|
||||
import org.thoughtcrime.securesms.main.MainToolbarViewModel
|
||||
import org.thoughtcrime.securesms.main.Material3OnScrollHelperBinder
|
||||
import org.thoughtcrime.securesms.recipients.Recipient
|
||||
import org.thoughtcrime.securesms.stories.tabs.ConversationListTab
|
||||
import org.thoughtcrime.securesms.stories.tabs.ConversationListTabsViewModel
|
||||
import org.thoughtcrime.securesms.util.CommunicationActions
|
||||
import org.thoughtcrime.securesms.util.ViewUtil
|
||||
@@ -226,7 +226,7 @@ class CallLogFragment : Fragment(R.layout.call_log_fragment), CallLogAdapter.Cal
|
||||
|
||||
private fun initializeTapToScrollToTop(scrollToPositionDelegate: ScrollToPositionDelegate) {
|
||||
disposables += tabsViewModel.tabClickEvents
|
||||
.filter { it == ConversationListTab.CALLS }
|
||||
.filter { it == MainNavigationDestination.CALLS }
|
||||
.subscribeBy(onNext = {
|
||||
scrollToPositionDelegate.resetScrollPosition()
|
||||
})
|
||||
|
||||
@@ -254,6 +254,7 @@ import org.thoughtcrime.securesms.keyvalue.SignalStore
|
||||
import org.thoughtcrime.securesms.linkpreview.LinkPreview
|
||||
import org.thoughtcrime.securesms.linkpreview.LinkPreviewViewModelV2
|
||||
import org.thoughtcrime.securesms.longmessage.LongMessageFragment
|
||||
import org.thoughtcrime.securesms.main.MainNavigationDestination
|
||||
import org.thoughtcrime.securesms.mediaoverview.MediaOverviewActivity
|
||||
import org.thoughtcrime.securesms.mediapreview.MediaIntentFactory
|
||||
import org.thoughtcrime.securesms.mediapreview.MediaPreviewV2Activity
|
||||
@@ -300,7 +301,6 @@ import org.thoughtcrime.securesms.stickers.StickerManagementActivity
|
||||
import org.thoughtcrime.securesms.stickers.StickerPackInstallEvent
|
||||
import org.thoughtcrime.securesms.stickers.StickerPackPreviewActivity
|
||||
import org.thoughtcrime.securesms.stories.StoryViewerArgs
|
||||
import org.thoughtcrime.securesms.stories.tabs.ConversationListTab
|
||||
import org.thoughtcrime.securesms.stories.viewer.StoryViewerActivity
|
||||
import org.thoughtcrime.securesms.util.BottomSheetUtil
|
||||
import org.thoughtcrime.securesms.util.BubbleUtil
|
||||
@@ -3031,7 +3031,7 @@ class ConversationFragment :
|
||||
} else if ("username_edit" == action) {
|
||||
startActivity(EditProfileActivity.getIntentForUsernameEdit(requireContext()))
|
||||
} else if ("calls_tab" == action) {
|
||||
startActivity(MainActivity.clearTopAndOpenTab(requireContext(), ConversationListTab.CALLS))
|
||||
startActivity(MainActivity.clearTopAndOpenTab(requireContext(), MainNavigationDestination.CALLS))
|
||||
} else if ("chat_folder" == action) {
|
||||
startActivity(AppSettingsActivity.chatFolders(requireContext()))
|
||||
}
|
||||
|
||||
@@ -143,6 +143,7 @@ import org.thoughtcrime.securesms.jobs.RefreshOwnProfileJob;
|
||||
import org.thoughtcrime.securesms.keyvalue.AccountValues;
|
||||
import org.thoughtcrime.securesms.keyvalue.SignalStore;
|
||||
import org.thoughtcrime.securesms.lock.v2.CreateSvrPinActivity;
|
||||
import org.thoughtcrime.securesms.main.MainNavigationDestination;
|
||||
import org.thoughtcrime.securesms.main.MainToolbarMode;
|
||||
import org.thoughtcrime.securesms.main.MainToolbarViewModel;
|
||||
import org.thoughtcrime.securesms.main.Material3OnScrollHelperBinder;
|
||||
@@ -161,7 +162,6 @@ import org.thoughtcrime.securesms.recipients.RecipientId;
|
||||
import org.thoughtcrime.securesms.search.MessageResult;
|
||||
import org.thoughtcrime.securesms.sms.MessageSender;
|
||||
import org.thoughtcrime.securesms.storage.StorageSyncHelper;
|
||||
import org.thoughtcrime.securesms.stories.tabs.ConversationListTab;
|
||||
import org.thoughtcrime.securesms.stories.tabs.ConversationListTabsViewModel;
|
||||
import org.thoughtcrime.securesms.util.AppForegroundObserver;
|
||||
import org.thoughtcrime.securesms.util.AppStartup;
|
||||
@@ -446,7 +446,7 @@ public class ConversationListFragment extends MainFragment implements ActionMode
|
||||
conversationListTabsViewModel = new ViewModelProvider(requireActivity()).get(ConversationListTabsViewModel.class);
|
||||
|
||||
lifecycleDisposable.bindTo(getViewLifecycleOwner());
|
||||
lifecycleDisposable.add(conversationListTabsViewModel.getTabClickEvents().filter(tab -> tab == ConversationListTab.CHATS)
|
||||
lifecycleDisposable.add(conversationListTabsViewModel.getTabClickEvents().filter(tab -> tab == MainNavigationDestination.CHATS)
|
||||
.subscribe(unused -> {
|
||||
LinearLayoutManager layoutManager = (LinearLayoutManager) list.getLayoutManager();
|
||||
int firstVisibleItemPosition = layoutManager.findFirstVisibleItemPosition();
|
||||
|
||||
@@ -38,7 +38,6 @@ import org.thoughtcrime.securesms.notifications.profiles.NotificationProfile
|
||||
import org.thoughtcrime.securesms.notifications.profiles.NotificationProfiles
|
||||
import org.thoughtcrime.securesms.service.KeyCachingService
|
||||
import org.thoughtcrime.securesms.stories.settings.StorySettingsActivity
|
||||
import org.thoughtcrime.securesms.stories.tabs.ConversationListTab
|
||||
import org.thoughtcrime.securesms.stories.tabs.ConversationListTabsState
|
||||
import org.thoughtcrime.securesms.stories.tabs.ConversationListTabsViewModel
|
||||
import org.thoughtcrime.securesms.util.BottomSheetUtil
|
||||
@@ -190,7 +189,7 @@ class MainActivityListHostFragment : Fragment(R.layout.main_activity_list_host_f
|
||||
}
|
||||
|
||||
private fun goToStateFromConversationList(state: ConversationListTabsState, navController: NavController) {
|
||||
if (state.tab == ConversationListTab.CHATS) {
|
||||
if (state.tab == MainNavigationDestination.CHATS) {
|
||||
return
|
||||
} else {
|
||||
val cameraFab = requireView().findViewById<View?>(R.id.camera_fab)
|
||||
@@ -210,7 +209,7 @@ class MainActivityListHostFragment : Fragment(R.layout.main_activity_list_host_f
|
||||
else -> null
|
||||
}
|
||||
|
||||
val destination = if (state.tab == ConversationListTab.STORIES) {
|
||||
val destination = if (state.tab == MainNavigationDestination.STORIES) {
|
||||
R.id.action_conversationListFragment_to_storiesLandingFragment
|
||||
} else {
|
||||
R.id.action_conversationListFragment_to_callLogFragment
|
||||
@@ -227,17 +226,17 @@ class MainActivityListHostFragment : Fragment(R.layout.main_activity_list_host_f
|
||||
|
||||
private fun goToStateFromCalling(state: ConversationListTabsState, navController: NavController) {
|
||||
when (state.tab) {
|
||||
ConversationListTab.CALLS -> return
|
||||
ConversationListTab.CHATS -> navController.popBackStack(R.id.conversationListFragment, false)
|
||||
ConversationListTab.STORIES -> navController.navigate(R.id.action_callLogFragment_to_storiesLandingFragment)
|
||||
MainNavigationDestination.CALLS -> return
|
||||
MainNavigationDestination.CHATS -> navController.popBackStack(R.id.conversationListFragment, false)
|
||||
MainNavigationDestination.STORIES -> navController.navigate(R.id.action_callLogFragment_to_storiesLandingFragment)
|
||||
}
|
||||
}
|
||||
|
||||
private fun goToStateFromStories(state: ConversationListTabsState, navController: NavController) {
|
||||
when (state.tab) {
|
||||
ConversationListTab.STORIES -> return
|
||||
ConversationListTab.CHATS -> navController.popBackStack(R.id.conversationListFragment, false)
|
||||
ConversationListTab.CALLS -> navController.navigate(R.id.action_storiesLandingFragment_to_callLogFragment)
|
||||
MainNavigationDestination.STORIES -> return
|
||||
MainNavigationDestination.CHATS -> navController.popBackStack(R.id.conversationListFragment, false)
|
||||
MainNavigationDestination.CALLS -> navController.navigate(R.id.action_storiesLandingFragment_to_callLogFragment)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -39,6 +39,7 @@ import org.thoughtcrime.securesms.conversation.mutiselect.forward.MultiselectFor
|
||||
import org.thoughtcrime.securesms.database.model.MmsMessageRecord
|
||||
import org.thoughtcrime.securesms.database.model.StoryViewState
|
||||
import org.thoughtcrime.securesms.dependencies.AppDependencies
|
||||
import org.thoughtcrime.securesms.main.MainNavigationDestination
|
||||
import org.thoughtcrime.securesms.main.MainToolbarMode
|
||||
import org.thoughtcrime.securesms.main.MainToolbarViewModel
|
||||
import org.thoughtcrime.securesms.main.Material3OnScrollHelperBinder
|
||||
@@ -51,7 +52,6 @@ import org.thoughtcrime.securesms.stories.StoryViewerArgs
|
||||
import org.thoughtcrime.securesms.stories.dialogs.StoryContextMenu
|
||||
import org.thoughtcrime.securesms.stories.dialogs.StoryDialogs
|
||||
import org.thoughtcrime.securesms.stories.my.MyStoriesActivity
|
||||
import org.thoughtcrime.securesms.stories.tabs.ConversationListTab
|
||||
import org.thoughtcrime.securesms.stories.tabs.ConversationListTabsViewModel
|
||||
import org.thoughtcrime.securesms.stories.viewer.StoryViewerActivity
|
||||
import org.thoughtcrime.securesms.util.ViewUtil
|
||||
@@ -213,7 +213,7 @@ class StoriesLandingFragment : DSLSettingsFragment(layoutId = R.layout.stories_l
|
||||
)
|
||||
|
||||
lifecycleDisposable += tabsViewModel.tabClickEvents
|
||||
.filter { it == ConversationListTab.STORIES }
|
||||
.filter { it == MainNavigationDestination.STORIES }
|
||||
.subscribeBy(onNext = {
|
||||
val layoutManager = recyclerView?.layoutManager as? LinearLayoutManager ?: return@subscribeBy
|
||||
if (layoutManager.findFirstVisibleItemPosition() <= LIST_SMOOTH_SCROLL_TO_TOP_THRESHOLD) {
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
package org.thoughtcrime.securesms.stories.tabs
|
||||
|
||||
enum class ConversationListTab {
|
||||
CHATS,
|
||||
CALLS,
|
||||
STORIES
|
||||
}
|
||||
@@ -31,9 +31,9 @@ class ConversationListTabsFragment : ComposeFragment() {
|
||||
storiesCount = state.unreadStoriesCount.toInt(),
|
||||
storyFailure = state.hasFailedStory,
|
||||
selectedDestination = when (state.tab) {
|
||||
ConversationListTab.CHATS -> MainNavigationDestination.CHATS
|
||||
ConversationListTab.CALLS -> MainNavigationDestination.CALLS
|
||||
ConversationListTab.STORIES -> MainNavigationDestination.STORIES
|
||||
MainNavigationDestination.CHATS -> MainNavigationDestination.CHATS
|
||||
MainNavigationDestination.CALLS -> MainNavigationDestination.CALLS
|
||||
MainNavigationDestination.STORIES -> MainNavigationDestination.STORIES
|
||||
},
|
||||
compact = state.compact
|
||||
)
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
package org.thoughtcrime.securesms.stories.tabs
|
||||
|
||||
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
||||
import org.thoughtcrime.securesms.main.MainNavigationDestination
|
||||
|
||||
data class ConversationListTabsState(
|
||||
val tab: ConversationListTab = ConversationListTab.CHATS,
|
||||
val prevTab: ConversationListTab = if (tab == ConversationListTab.CHATS) ConversationListTab.STORIES else ConversationListTab.CHATS,
|
||||
val tab: MainNavigationDestination = MainNavigationDestination.CHATS,
|
||||
val prevTab: MainNavigationDestination = if (tab == MainNavigationDestination.CHATS) MainNavigationDestination.STORIES else MainNavigationDestination.CHATS,
|
||||
val unreadMessagesCount: Long = 0L,
|
||||
val unreadCallsCount: Long = 0L,
|
||||
val unreadStoriesCount: Long = 0L,
|
||||
|
||||
@@ -12,11 +12,12 @@ 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.keyvalue.SignalStore
|
||||
import org.thoughtcrime.securesms.main.MainNavigationDestination
|
||||
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() {
|
||||
class ConversationListTabsViewModel(startingTab: MainNavigationDestination, repository: ConversationListTabRepository) : ViewModel() {
|
||||
|
||||
private val notificationProfilesRepository: NotificationProfilesRepository = NotificationProfilesRepository()
|
||||
|
||||
@@ -28,8 +29,8 @@ class ConversationListTabsViewModel(startingTab: ConversationListTab, repository
|
||||
val state: Flowable<ConversationListTabsState> = store.stateFlowable.distinctUntilChanged().observeOn(AndroidSchedulers.mainThread())
|
||||
val disposables = CompositeDisposable()
|
||||
|
||||
private val internalTabClickEvents: Subject<ConversationListTab> = PublishSubject.create()
|
||||
val tabClickEvents: Observable<ConversationListTab> = internalTabClickEvents.filter { Stories.isFeatureEnabled() }
|
||||
private val internalTabClickEvents: Subject<MainNavigationDestination> = PublishSubject.create()
|
||||
val tabClickEvents: Observable<MainNavigationDestination> = internalTabClickEvents.filter { Stories.isFeatureEnabled() }
|
||||
|
||||
init {
|
||||
disposables += performStoreUpdate(repository.getNumberOfUnreadMessages()) { unreadChats, state ->
|
||||
@@ -63,18 +64,18 @@ class ConversationListTabsViewModel(startingTab: ConversationListTab, repository
|
||||
}
|
||||
|
||||
fun onChatsSelected() {
|
||||
internalTabClickEvents.onNext(ConversationListTab.CHATS)
|
||||
performStoreUpdate { it.copy(tab = ConversationListTab.CHATS) }
|
||||
internalTabClickEvents.onNext(MainNavigationDestination.CHATS)
|
||||
performStoreUpdate { it.copy(tab = MainNavigationDestination.CHATS) }
|
||||
}
|
||||
|
||||
fun onCallsSelected() {
|
||||
internalTabClickEvents.onNext(ConversationListTab.CALLS)
|
||||
performStoreUpdate { it.copy(tab = ConversationListTab.CALLS) }
|
||||
internalTabClickEvents.onNext(MainNavigationDestination.CALLS)
|
||||
performStoreUpdate { it.copy(tab = MainNavigationDestination.CALLS) }
|
||||
}
|
||||
|
||||
fun onStoriesSelected() {
|
||||
internalTabClickEvents.onNext(ConversationListTab.STORIES)
|
||||
performStoreUpdate { it.copy(tab = ConversationListTab.STORIES) }
|
||||
internalTabClickEvents.onNext(MainNavigationDestination.STORIES)
|
||||
performStoreUpdate { it.copy(tab = MainNavigationDestination.STORIES) }
|
||||
}
|
||||
|
||||
fun onSearchOpened() {
|
||||
@@ -113,10 +114,10 @@ class ConversationListTabsViewModel(startingTab: ConversationListTab, repository
|
||||
}
|
||||
}
|
||||
|
||||
class Factory(private val startingTab: ConversationListTab?, private val repository: ConversationListTabRepository) : ViewModelProvider.Factory {
|
||||
class Factory(private val startingTab: MainNavigationDestination?, private val repository: ConversationListTabRepository) : ViewModelProvider.Factory {
|
||||
override fun <T : ViewModel> create(modelClass: Class<T>): T {
|
||||
val tab = if (startingTab == null || (startingTab == ConversationListTab.STORIES && !Stories.isFeatureEnabled())) {
|
||||
ConversationListTab.CHATS
|
||||
val tab = if (startingTab == null || (startingTab == MainNavigationDestination.STORIES && !Stories.isFeatureEnabled())) {
|
||||
MainNavigationDestination.CHATS
|
||||
} else {
|
||||
startingTab
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user