diff --git a/vector/src/main/java/im/vector/app/AppStateHandler.kt b/vector/src/main/java/im/vector/app/SpaceStateHandler.kt similarity index 95% rename from vector/src/main/java/im/vector/app/AppStateHandler.kt rename to vector/src/main/java/im/vector/app/SpaceStateHandler.kt index ebc9d36c1d..7a98025734 100644 --- a/vector/src/main/java/im/vector/app/AppStateHandler.kt +++ b/vector/src/main/java/im/vector/app/SpaceStateHandler.kt @@ -22,7 +22,7 @@ import kotlinx.coroutines.flow.Flow import org.matrix.android.sdk.api.session.Session import org.matrix.android.sdk.api.session.room.model.RoomSummary -interface AppStateHandler : DefaultLifecycleObserver { +interface SpaceStateHandler : DefaultLifecycleObserver { fun getCurrentSpace(): RoomSummary? diff --git a/vector/src/main/java/im/vector/app/AppStateHandlerImpl.kt b/vector/src/main/java/im/vector/app/SpaceStateHandlerImpl.kt similarity index 98% rename from vector/src/main/java/im/vector/app/AppStateHandlerImpl.kt rename to vector/src/main/java/im/vector/app/SpaceStateHandlerImpl.kt index 55a2a1a8bb..23c9d7e4c9 100644 --- a/vector/src/main/java/im/vector/app/AppStateHandlerImpl.kt +++ b/vector/src/main/java/im/vector/app/SpaceStateHandlerImpl.kt @@ -49,12 +49,12 @@ import javax.inject.Singleton * It is required that this class is added as an observer to ProcessLifecycleOwner.get().lifecycle in [VectorApplication] */ @Singleton -class AppStateHandlerImpl @Inject constructor( +class SpaceStateHandlerImpl @Inject constructor( private val sessionDataSource: ActiveSessionDataSource, private val uiStateRepository: UiStateRepository, private val activeSessionHolder: ActiveSessionHolder, private val analyticsTracker: AnalyticsTracker -) : AppStateHandler { +) : SpaceStateHandler { private val coroutineScope = CoroutineScope(SupervisorJob() + Dispatchers.Main) private val selectedSpaceDataSource = BehaviorDataSource>(Option.empty()) diff --git a/vector/src/main/java/im/vector/app/VectorApplication.kt b/vector/src/main/java/im/vector/app/VectorApplication.kt index 3cb0423ca8..a0a3b20e11 100644 --- a/vector/src/main/java/im/vector/app/VectorApplication.kt +++ b/vector/src/main/java/im/vector/app/VectorApplication.kt @@ -90,7 +90,7 @@ class VectorApplication : @Inject lateinit var vectorPreferences: VectorPreferences @Inject lateinit var versionProvider: VersionProvider @Inject lateinit var notificationUtils: NotificationUtils - @Inject lateinit var appStateHandler: AppStateHandler + @Inject lateinit var spaceStateHandler: SpaceStateHandler @Inject lateinit var popupAlertManager: PopupAlertManager @Inject lateinit var pinLocker: PinLocker @Inject lateinit var callManager: WebRtcCallManager @@ -187,7 +187,7 @@ class VectorApplication : fcmHelper.onEnterBackground(activeSessionHolder) } }) - ProcessLifecycleOwner.get().lifecycle.addObserver(appStateHandler) + ProcessLifecycleOwner.get().lifecycle.addObserver(spaceStateHandler) ProcessLifecycleOwner.get().lifecycle.addObserver(pinLocker) ProcessLifecycleOwner.get().lifecycle.addObserver(callManager) // This should be done as early as possible diff --git a/vector/src/main/java/im/vector/app/core/di/SingletonModule.kt b/vector/src/main/java/im/vector/app/core/di/SingletonModule.kt index c5e27af761..5c70e9be53 100644 --- a/vector/src/main/java/im/vector/app/core/di/SingletonModule.kt +++ b/vector/src/main/java/im/vector/app/core/di/SingletonModule.kt @@ -28,8 +28,8 @@ import dagger.Module import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent -import im.vector.app.AppStateHandler -import im.vector.app.AppStateHandlerImpl +import im.vector.app.SpaceStateHandler +import im.vector.app.SpaceStateHandlerImpl import im.vector.app.BuildConfig import im.vector.app.EmojiCompatWrapper import im.vector.app.EmojiSpanify @@ -112,7 +112,7 @@ abstract class VectorBindModule { abstract fun bindSystemSettingsProvide(provider: AndroidSystemSettingsProvider): SystemSettingsProvider @Binds - abstract fun bindAppStateHandler(appStateHandlerImpl: AppStateHandlerImpl): AppStateHandler + abstract fun bindSpaceStateHandler(spaceStateHandlerImpl: SpaceStateHandlerImpl): SpaceStateHandler } @InstallIn(SingletonComponent::class) diff --git a/vector/src/main/java/im/vector/app/features/home/HomeActivity.kt b/vector/src/main/java/im/vector/app/features/home/HomeActivity.kt index d82621977f..9d59ba1574 100644 --- a/vector/src/main/java/im/vector/app/features/home/HomeActivity.kt +++ b/vector/src/main/java/im/vector/app/features/home/HomeActivity.kt @@ -35,7 +35,7 @@ import com.airbnb.mvrx.Mavericks import com.airbnb.mvrx.viewModel import com.google.android.material.dialog.MaterialAlertDialogBuilder import dagger.hilt.android.AndroidEntryPoint -import im.vector.app.AppStateHandler +import im.vector.app.SpaceStateHandler import im.vector.app.R import im.vector.app.core.di.ActiveSessionHolder import im.vector.app.core.extensions.hideKeyboard @@ -129,7 +129,7 @@ class HomeActivity : @Inject lateinit var permalinkHandler: PermalinkHandler @Inject lateinit var avatarRenderer: AvatarRenderer @Inject lateinit var initSyncStepFormatter: InitSyncStepFormatter - @Inject lateinit var appStateHandler: AppStateHandler + @Inject lateinit var spaceStateHandler: SpaceStateHandler @Inject lateinit var unifiedPushHelper: UnifiedPushHelper @Inject lateinit var fcmHelper: FcmHelper diff --git a/vector/src/main/java/im/vector/app/features/home/HomeDetailFragment.kt b/vector/src/main/java/im/vector/app/features/home/HomeDetailFragment.kt index 828e4cc26c..54ff44d2c3 100644 --- a/vector/src/main/java/im/vector/app/features/home/HomeDetailFragment.kt +++ b/vector/src/main/java/im/vector/app/features/home/HomeDetailFragment.kt @@ -28,7 +28,7 @@ import com.airbnb.mvrx.activityViewModel import com.airbnb.mvrx.fragmentViewModel import com.airbnb.mvrx.withState import com.google.android.material.badge.BadgeDrawable -import im.vector.app.AppStateHandler +import im.vector.app.SpaceStateHandler import im.vector.app.R import im.vector.app.core.extensions.commitTransaction import im.vector.app.core.extensions.toMvRxBundle @@ -66,7 +66,7 @@ class HomeDetailFragment @Inject constructor( private val alertManager: PopupAlertManager, private val callManager: WebRtcCallManager, private val vectorPreferences: VectorPreferences, - private val appStateHandler: AppStateHandler + private val spaceStateHandler: SpaceStateHandler ) : VectorBaseFragment(), KeysBackupBanner.Delegate, CurrentCallsView.Callback, @@ -183,13 +183,13 @@ class HomeDetailFragment @Inject constructor( } private fun navigateBack() { - val previousSpaceId = appStateHandler.getSpaceBackstack().removeLastOrNull() - val parentSpaceId = appStateHandler.getCurrentSpace()?.flattenParentIds?.lastOrNull() + val previousSpaceId = spaceStateHandler.getSpaceBackstack().removeLastOrNull() + val parentSpaceId = spaceStateHandler.getCurrentSpace()?.flattenParentIds?.lastOrNull() setCurrentSpace(previousSpaceId ?: parentSpaceId) } private fun setCurrentSpace(spaceId: String?) { - appStateHandler.setCurrentSpace(spaceId, isForwardNavigation = false) + spaceStateHandler.setCurrentSpace(spaceId, isForwardNavigation = false) sharedActionViewModel.post(HomeActivitySharedAction.OnCloseSpace) } @@ -212,7 +212,7 @@ class HomeDetailFragment @Inject constructor( } private fun refreshSpaceState() { - appStateHandler.getCurrentSpace()?.let { + spaceStateHandler.getCurrentSpace()?.let { onSpaceChange(it) } } @@ -466,7 +466,7 @@ class HomeDetailFragment @Inject constructor( return this } - override fun onBackPressed(toolbarButton: Boolean) = if (appStateHandler.getCurrentSpace() != null) { + override fun onBackPressed(toolbarButton: Boolean) = if (spaceStateHandler.getCurrentSpace() != null) { navigateBack() true } else { diff --git a/vector/src/main/java/im/vector/app/features/home/HomeDetailViewModel.kt b/vector/src/main/java/im/vector/app/features/home/HomeDetailViewModel.kt index f16df17ead..ede9872a9b 100644 --- a/vector/src/main/java/im/vector/app/features/home/HomeDetailViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/home/HomeDetailViewModel.kt @@ -22,7 +22,7 @@ import com.airbnb.mvrx.ViewModelContext import dagger.assisted.Assisted import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject -import im.vector.app.AppStateHandler +import im.vector.app.SpaceStateHandler import im.vector.app.core.di.MavericksAssistedViewModelFactory import im.vector.app.core.di.hiltMavericksViewModelFactory import im.vector.app.core.extensions.singletonEntryPoint @@ -68,7 +68,7 @@ class HomeDetailViewModel @AssistedInject constructor( private val vectorDataStore: VectorDataStore, private val callManager: WebRtcCallManager, private val directRoomHelper: DirectRoomHelper, - private val appStateHandler: AppStateHandler, + private val spaceStateHandler: SpaceStateHandler, private val autoAcceptInvites: AutoAcceptInvites, private val vectorOverrides: VectorOverrides ) : VectorViewModel(initialState), @@ -207,7 +207,7 @@ class HomeDetailViewModel @AssistedInject constructor( } private fun observeRoomGroupingMethod() { - appStateHandler.getSelectedSpaceFlow() + spaceStateHandler.getSelectedSpaceFlow() .setOnEach { copy( selectedSpace = it.orNull() @@ -216,7 +216,7 @@ class HomeDetailViewModel @AssistedInject constructor( } private fun observeRoomSummaries() { - appStateHandler.getSelectedSpaceFlow().distinctUntilChanged().flatMapLatest { + spaceStateHandler.getSelectedSpaceFlow().distinctUntilChanged().flatMapLatest { // we use it as a trigger to all changes in room, but do not really load // the actual models session.roomService().getPagedRoomSummariesLive( @@ -228,7 +228,7 @@ class HomeDetailViewModel @AssistedInject constructor( } .throttleFirst(300) .onEach { - val activeSpaceRoomId = appStateHandler.getCurrentSpace()?.roomId + val activeSpaceRoomId = spaceStateHandler.getCurrentSpace()?.roomId var dmInvites = 0 var roomsInvite = 0 if (autoAcceptInvites.showInvites()) { diff --git a/vector/src/main/java/im/vector/app/features/home/UnreadMessagesSharedViewModel.kt b/vector/src/main/java/im/vector/app/features/home/UnreadMessagesSharedViewModel.kt index 074149a255..fca106d3a5 100644 --- a/vector/src/main/java/im/vector/app/features/home/UnreadMessagesSharedViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/home/UnreadMessagesSharedViewModel.kt @@ -22,7 +22,7 @@ import com.airbnb.mvrx.MavericksViewModelFactory import dagger.assisted.Assisted import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject -import im.vector.app.AppStateHandler +import im.vector.app.SpaceStateHandler import im.vector.app.core.di.MavericksAssistedViewModelFactory import im.vector.app.core.di.hiltMavericksViewModelFactory import im.vector.app.core.platform.EmptyAction @@ -58,7 +58,7 @@ class UnreadMessagesSharedViewModel @AssistedInject constructor( @Assisted initialState: UnreadMessagesState, session: Session, private val vectorPreferences: VectorPreferences, - appStateHandler: AppStateHandler, + spaceStateHandler: SpaceStateHandler, private val autoAcceptInvites: AutoAcceptInvites ) : VectorViewModel(initialState) { @@ -109,8 +109,8 @@ class UnreadMessagesSharedViewModel @AssistedInject constructor( } combine( - appStateHandler.getSelectedSpaceFlow().distinctUntilChanged(), - appStateHandler.getSelectedSpaceFlow().flatMapLatest { + spaceStateHandler.getSelectedSpaceFlow().distinctUntilChanged(), + spaceStateHandler.getSelectedSpaceFlow().flatMapLatest { roomService.getPagedRoomSummariesLive( roomSummaryQueryParams { this.memberships = Membership.activeMemberships() diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/TimelineViewModel.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/TimelineViewModel.kt index e305ccbec1..d562609e42 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/TimelineViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/TimelineViewModel.kt @@ -28,7 +28,7 @@ import com.airbnb.mvrx.Uninitialized import dagger.assisted.Assisted import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject -import im.vector.app.AppStateHandler +import im.vector.app.SpaceStateHandler import im.vector.app.R import im.vector.app.core.di.MavericksAssistedViewModelFactory import im.vector.app.core.di.hiltMavericksViewModelFactory @@ -136,7 +136,7 @@ class TimelineViewModel @AssistedInject constructor( private val locationSharingServiceConnection: LocationSharingServiceConnection, private val stopLiveLocationShareUseCase: StopLiveLocationShareUseCase, timelineFactory: TimelineFactory, - appStateHandler: AppStateHandler, + spaceStateHandler: SpaceStateHandler, ) : VectorViewModel(initialState), Timeline.Listener, ChatEffectManager.Delegate, CallProtocolsChecker.Listener, LocationSharingServiceConnection.Callback { @@ -218,16 +218,16 @@ class TimelineViewModel @AssistedInject constructor( if (initialState.switchToParentSpace) { // We are coming from a notification, try to switch to the most relevant space // so that when hitting back the room will appear in the list - appStateHandler.getCurrentSpace().let { currentSpace -> + spaceStateHandler.getCurrentSpace().let { currentSpace -> val currentRoomSummary = room.roomSummary() ?: return@let // nothing we are good if ((currentSpace == null && !vectorPreferences.prefSpacesShowAllRoomInHome()) || (currentSpace != null && !currentRoomSummary.flattenParentIds.contains(currentSpace.roomId))) { // take first one or switch to home - appStateHandler.setCurrentSpace( + spaceStateHandler.setCurrentSpace( currentRoomSummary .flattenParentIds.firstOrNull { it.isNotBlank() }, - // force persist, because if not on resume the AppStateHandler will resume + // force persist, because if not on resume the SpaceStateHandler will resume // the current space from what was persisted on enter background persistNow = true ) diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/RoomListSectionBuilder.kt b/vector/src/main/java/im/vector/app/features/home/room/list/RoomListSectionBuilder.kt index d91f8f6e5d..2408d157f3 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/RoomListSectionBuilder.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/RoomListSectionBuilder.kt @@ -23,7 +23,7 @@ import androidx.lifecycle.asFlow import androidx.lifecycle.liveData import androidx.paging.PagedList import com.airbnb.mvrx.Async -import im.vector.app.AppStateHandler +import im.vector.app.SpaceStateHandler import im.vector.app.R import im.vector.app.core.resources.StringProvider import im.vector.app.features.home.RoomListDisplayMode @@ -58,7 +58,7 @@ import timber.log.Timber class RoomListSectionBuilder( private val session: Session, private val stringProvider: StringProvider, - private val appStateHandler: AppStateHandler, + private val spaceStateHandler: SpaceStateHandler, private val viewModelScope: CoroutineScope, private val autoAcceptInvites: AutoAcceptInvites, private val onUpdatable: (UpdatableLivePageResult) -> Unit, @@ -94,7 +94,7 @@ class RoomListSectionBuilder( } } - appStateHandler.getSelectedSpaceFlow() + spaceStateHandler.getSelectedSpaceFlow() .distinctUntilChanged() .onEach { selectedSpaceOption -> val selectedSpace = selectedSpaceOption.orNull() @@ -186,7 +186,7 @@ class RoomListSectionBuilder( // add suggested rooms val suggestedRoomsFlow = // MutableLiveData>() - appStateHandler.getSelectedSpaceFlow() + spaceStateHandler.getSelectedSpaceFlow() .distinctUntilChanged() .flatMapLatest { selectedSpaceOption -> val selectedSpace = selectedSpaceOption.orNull() @@ -359,7 +359,7 @@ class RoomListSectionBuilder( query: (RoomSummaryQueryParams.Builder) -> Unit ) { withQueryParams(query) { roomQueryParams -> - val updatedQueryParams = roomQueryParams.process(spaceFilterStrategy, appStateHandler.getSafeActiveSpaceId()) + val updatedQueryParams = roomQueryParams.process(spaceFilterStrategy, spaceStateHandler.getSafeActiveSpaceId()) val liveQueryParams = MutableStateFlow(updatedQueryParams) val itemCountFlow = liveQueryParams .flatMapLatest { @@ -370,7 +370,7 @@ class RoomListSectionBuilder( val name = stringProvider.getString(nameRes) val filteredPagedRoomSummariesLive = session.roomService().getFilteredPagedRoomSummariesLive( - roomQueryParams.process(spaceFilterStrategy, appStateHandler.getSafeActiveSpaceId()), + roomQueryParams.process(spaceFilterStrategy, spaceStateHandler.getSafeActiveSpaceId()), pagedListConfig ) when (spaceFilterStrategy) { @@ -417,7 +417,7 @@ class RoomListSectionBuilder( RoomAggregateNotificationCount(it.size, it.size) } else { session.roomService().getNotificationCountForRooms( - roomQueryParams.process(spaceFilterStrategy, appStateHandler.getSafeActiveSpaceId()) + roomQueryParams.process(spaceFilterStrategy, spaceStateHandler.getSafeActiveSpaceId()) ) } ) diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/RoomListViewModel.kt b/vector/src/main/java/im/vector/app/features/home/room/list/RoomListViewModel.kt index e51bdc5841..4b76daf502 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/RoomListViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/RoomListViewModel.kt @@ -25,7 +25,7 @@ import com.airbnb.mvrx.Success import dagger.assisted.Assisted import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject -import im.vector.app.AppStateHandler +import im.vector.app.SpaceStateHandler import im.vector.app.core.di.MavericksAssistedViewModelFactory import im.vector.app.core.di.hiltMavericksViewModelFactory import im.vector.app.core.platform.VectorViewModel @@ -60,7 +60,7 @@ class RoomListViewModel @AssistedInject constructor( @Assisted initialState: RoomListViewState, private val session: Session, stringProvider: StringProvider, - appStateHandler: AppStateHandler, + spaceStateHandler: SpaceStateHandler, vectorPreferences: VectorPreferences, autoAcceptInvites: AutoAcceptInvites, private val analyticsTracker: AnalyticsTracker @@ -100,7 +100,7 @@ class RoomListViewModel @AssistedInject constructor( observeMembershipChanges() observeLocalRooms() - appStateHandler.getSelectedSpaceFlow() + spaceStateHandler.getSelectedSpaceFlow() .distinctUntilChanged() .execute { copy( @@ -148,7 +148,7 @@ class RoomListViewModel @AssistedInject constructor( private val roomListSectionBuilder = RoomListSectionBuilder( session, stringProvider, - appStateHandler, + spaceStateHandler, viewModelScope, autoAcceptInvites, { diff --git a/vector/src/main/java/im/vector/app/features/navigation/DefaultNavigator.kt b/vector/src/main/java/im/vector/app/features/navigation/DefaultNavigator.kt index 291eee307f..f851c75290 100644 --- a/vector/src/main/java/im/vector/app/features/navigation/DefaultNavigator.kt +++ b/vector/src/main/java/im/vector/app/features/navigation/DefaultNavigator.kt @@ -31,7 +31,7 @@ import androidx.core.app.TaskStackBuilder import androidx.core.util.Pair import androidx.core.view.ViewCompat import com.google.android.material.dialog.MaterialAlertDialogBuilder -import im.vector.app.AppStateHandler +import im.vector.app.SpaceStateHandler import im.vector.app.R import im.vector.app.core.di.ActiveSessionHolder import im.vector.app.core.error.fatalError @@ -120,7 +120,7 @@ class DefaultNavigator @Inject constructor( private val sessionHolder: ActiveSessionHolder, private val vectorPreferences: VectorPreferences, private val widgetArgsBuilder: WidgetArgsBuilder, - private val appStateHandler: AppStateHandler, + private val spaceStateHandler: SpaceStateHandler, private val supportedVerificationMethodsProvider: SupportedVerificationMethodsProvider, private val features: VectorFeatures, private val analyticsTracker: AnalyticsTracker @@ -167,7 +167,7 @@ class DefaultNavigator @Inject constructor( analyticsTracker.capture( sessionHolder.getActiveSession().getRoomSummary(roomId).toAnalyticsViewRoom( trigger = trigger, - selectedSpace = appStateHandler.getCurrentSpace() + selectedSpace = spaceStateHandler.getCurrentSpace() ) ) } @@ -182,7 +182,7 @@ class DefaultNavigator @Inject constructor( fatalError("Trying to open an unknown space $spaceId", vectorPreferences.failFast()) return } - appStateHandler.setCurrentSpace(spaceId) + spaceStateHandler.setCurrentSpace(spaceId) when (postSwitchSpaceAction) { Navigator.PostSwitchSpaceAction.None -> { // go back to home if we are showing room details? @@ -318,7 +318,7 @@ class DefaultNavigator @Inject constructor( } override fun openRoomDirectory(context: Context, initialFilter: String) { - when (val currentSpace = appStateHandler.getCurrentSpace()) { + when (val currentSpace = spaceStateHandler.getCurrentSpace()) { null -> RoomDirectoryActivity.getIntent(context, initialFilter) else -> SpaceExploreActivity.newIntent(context, currentSpace.roomId) }.start(context) @@ -330,14 +330,14 @@ class DefaultNavigator @Inject constructor( } override fun openCreateDirectRoom(context: Context) { - when (val currentSpace = appStateHandler.getCurrentSpace()) { + when (val currentSpace = spaceStateHandler.getCurrentSpace()) { null -> CreateDirectRoomActivity.getIntent(context) else -> SpacePeopleActivity.newIntent(context, currentSpace.roomId) }.start(context) } override fun openInviteUsersToRoom(context: Context, roomId: String) { - when (val currentSpace = appStateHandler.getCurrentSpace()) { + when (val currentSpace = spaceStateHandler.getCurrentSpace()) { null -> InviteUsersToRoomActivity.getIntent(context, roomId).start(context) else -> showInviteToDialog(context, currentSpace, roomId) } diff --git a/vector/src/main/java/im/vector/app/features/roomdirectory/createroom/CreateRoomViewModel.kt b/vector/src/main/java/im/vector/app/features/roomdirectory/createroom/CreateRoomViewModel.kt index 121007cf2a..2616d808f2 100644 --- a/vector/src/main/java/im/vector/app/features/roomdirectory/createroom/CreateRoomViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/roomdirectory/createroom/CreateRoomViewModel.kt @@ -25,7 +25,7 @@ import com.airbnb.mvrx.Uninitialized import dagger.assisted.Assisted import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject -import im.vector.app.AppStateHandler +import im.vector.app.SpaceStateHandler import im.vector.app.core.di.MavericksAssistedViewModelFactory import im.vector.app.core.di.hiltMavericksViewModelFactory import im.vector.app.core.platform.VectorViewModel @@ -58,7 +58,7 @@ class CreateRoomViewModel @AssistedInject constructor( @Assisted private val initialState: CreateRoomViewState, private val session: Session, private val rawService: RawService, - appStateHandler: AppStateHandler, + spaceStateHandler: SpaceStateHandler, private val analyticsTracker: AnalyticsTracker ) : VectorViewModel(initialState) { @@ -73,7 +73,7 @@ class CreateRoomViewModel @AssistedInject constructor( initHomeServerName() initAdminE2eByDefault() - val parentSpaceId = initialState.parentSpaceId ?: appStateHandler.getSafeActiveSpaceId() + val parentSpaceId = initialState.parentSpaceId ?: spaceStateHandler.getSafeActiveSpaceId() val restrictedSupport = session.homeServerCapabilitiesService().getHomeServerCapabilities() .isFeatureSupported(HomeServerCapabilities.ROOM_CAP_RESTRICTED) diff --git a/vector/src/main/java/im/vector/app/features/spaces/SpaceListViewModel.kt b/vector/src/main/java/im/vector/app/features/spaces/SpaceListViewModel.kt index a72c6cc0c2..e1b845e549 100644 --- a/vector/src/main/java/im/vector/app/features/spaces/SpaceListViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/spaces/SpaceListViewModel.kt @@ -23,7 +23,7 @@ import com.airbnb.mvrx.Success import dagger.assisted.Assisted import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject -import im.vector.app.AppStateHandler +import im.vector.app.SpaceStateHandler import im.vector.app.core.di.MavericksAssistedViewModelFactory import im.vector.app.core.di.hiltMavericksViewModelFactory import im.vector.app.core.platform.VectorViewModel @@ -61,7 +61,7 @@ import org.matrix.android.sdk.flow.flow class SpaceListViewModel @AssistedInject constructor( @Assisted initialState: SpaceListViewState, - private val appStateHandler: AppStateHandler, + private val spaceStateHandler: SpaceStateHandler, private val session: Session, private val vectorPreferences: VectorPreferences, private val autoAcceptInvites: AutoAcceptInvites, @@ -85,7 +85,7 @@ class SpaceListViewModel @AssistedInject constructor( } observeSpaceSummaries() - appStateHandler.getSelectedSpaceFlow() + spaceStateHandler.getSelectedSpaceFlow() .distinctUntilChanged() .setOnEach { selectedSpaceOption -> copy( @@ -217,7 +217,7 @@ class SpaceListViewModel @AssistedInject constructor( if (state.selectedSpace?.roomId != action.spaceSummary?.roomId) { analyticsTracker.capture(Interaction(null, null, Interaction.Name.SpacePanelSwitchSpace)) setState { copy(selectedSpace = action.spaceSummary) } - appStateHandler.setCurrentSpace(action.spaceSummary?.roomId) + spaceStateHandler.setCurrentSpace(action.spaceSummary?.roomId) _viewEvents.post(SpaceListViewEvents.CloseDrawer) } else { analyticsTracker.capture(Interaction(null, null, Interaction.Name.SpacePanelSelectedSpace)) diff --git a/vector/src/main/java/im/vector/app/features/spaces/SpaceMenuViewModel.kt b/vector/src/main/java/im/vector/app/features/spaces/SpaceMenuViewModel.kt index e50fa5540c..6b1f9f88d5 100644 --- a/vector/src/main/java/im/vector/app/features/spaces/SpaceMenuViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/spaces/SpaceMenuViewModel.kt @@ -24,7 +24,7 @@ import com.airbnb.mvrx.Uninitialized import dagger.assisted.Assisted import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject -import im.vector.app.AppStateHandler +import im.vector.app.SpaceStateHandler import im.vector.app.core.di.MavericksAssistedViewModelFactory import im.vector.app.core.di.hiltMavericksViewModelFactory import im.vector.app.core.platform.EmptyViewEvents @@ -50,7 +50,7 @@ import timber.log.Timber class SpaceMenuViewModel @AssistedInject constructor( @Assisted val initialState: SpaceMenuState, val session: Session, - val appStateHandler: AppStateHandler + val spaceStateHandler: SpaceStateHandler ) : VectorViewModel(initialState) { @AssistedFactory @@ -73,9 +73,9 @@ class SpaceMenuViewModel @AssistedInject constructor( it.getOrNull()?.let { if (it.membership == Membership.LEAVE) { setState { copy(leavingState = Success(Unit)) } - if (appStateHandler.getSafeActiveSpaceId() == initialState.spaceId) { + if (spaceStateHandler.getSafeActiveSpaceId() == initialState.spaceId) { // switch to home? - appStateHandler.setCurrentSpace(null, session) + spaceStateHandler.setCurrentSpace(null, session) } } } diff --git a/vector/src/main/java/im/vector/app/features/spaces/leave/SpaceLeaveAdvancedViewModel.kt b/vector/src/main/java/im/vector/app/features/spaces/leave/SpaceLeaveAdvancedViewModel.kt index 4b6657fc47..800447d4c5 100644 --- a/vector/src/main/java/im/vector/app/features/spaces/leave/SpaceLeaveAdvancedViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/spaces/leave/SpaceLeaveAdvancedViewModel.kt @@ -24,7 +24,7 @@ import com.airbnb.mvrx.Uninitialized import dagger.assisted.Assisted import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject -import im.vector.app.AppStateHandler +import im.vector.app.SpaceStateHandler import im.vector.app.core.di.MavericksAssistedViewModelFactory import im.vector.app.core.di.hiltMavericksViewModelFactory import im.vector.app.core.platform.EmptyViewEvents @@ -53,7 +53,7 @@ import timber.log.Timber class SpaceLeaveAdvancedViewModel @AssistedInject constructor( @Assisted val initialState: SpaceLeaveAdvanceViewState, private val session: Session, - private val appStateHandler: AppStateHandler + private val spaceStateHandler: SpaceStateHandler ) : VectorViewModel(initialState) { init { @@ -82,9 +82,9 @@ class SpaceLeaveAdvancedViewModel @AssistedInject constructor( ?.onEach { if (it.membership == Membership.LEAVE) { setState { copy(leaveState = Success(Unit)) } - if (appStateHandler.getSafeActiveSpaceId() == initialState.spaceId) { + if (spaceStateHandler.getSafeActiveSpaceId() == initialState.spaceId) { // switch to home? - appStateHandler.setCurrentSpace(null, session) + spaceStateHandler.setCurrentSpace(null, session) } } }?.launchIn(viewModelScope) diff --git a/vector/src/test/java/im/vector/app/AppStateHandlerImplTest.kt b/vector/src/test/java/im/vector/app/SpaceStateHandlerImplTest.kt similarity index 73% rename from vector/src/test/java/im/vector/app/AppStateHandlerImplTest.kt rename to vector/src/test/java/im/vector/app/SpaceStateHandlerImplTest.kt index 6f0c33f998..8c94d5912b 100644 --- a/vector/src/test/java/im/vector/app/AppStateHandlerImplTest.kt +++ b/vector/src/test/java/im/vector/app/SpaceStateHandlerImplTest.kt @@ -32,7 +32,7 @@ import org.junit.Before import org.junit.Test import org.matrix.android.sdk.api.session.room.model.RoomSummary -internal class AppStateHandlerImplTest { +internal class SpaceStateHandlerImplTest { private val spaceId = "spaceId" private val spaceSummary: RoomSummary = mockk() @@ -43,7 +43,7 @@ internal class AppStateHandlerImplTest { private val activeSessionHolder = FakeActiveSessionHolder(session) private val analyticsTracker = FakeAnalyticsTracker() - private val appStateHandler = AppStateHandlerImpl( + private val spaceStateHandler = SpaceStateHandlerImpl( sessionDataSource.instance, uiStateRepository, activeSessionHolder.instance, @@ -58,39 +58,39 @@ internal class AppStateHandlerImplTest { @Test fun `given selected space doesn't exist, when getCurrentSpace, then return null`() { - val currentSpace = appStateHandler.getCurrentSpace() + val currentSpace = spaceStateHandler.getCurrentSpace() currentSpace shouldBe null } @Test fun `given selected space exists, when getCurrentSpace, then return selected space`() { - appStateHandler.setCurrentSpace(spaceId, session) + spaceStateHandler.setCurrentSpace(spaceId, session) - val currentSpace = appStateHandler.getCurrentSpace() + val currentSpace = spaceStateHandler.getCurrentSpace() currentSpace shouldBe spaceSummary } @Test fun `given persistNow is true, when setCurrentSpace, then immediately persist to ui state`() { - appStateHandler.setCurrentSpace(spaceId, session, persistNow = true) + spaceStateHandler.setCurrentSpace(spaceId, session, persistNow = true) uiStateRepository.verifyStoreSelectedSpace(spaceId, session) } @Test fun `given persistNow is false, when setCurrentSpace, then don't immediately persist to ui state`() { - appStateHandler.setCurrentSpace(spaceId, session, persistNow = false) + spaceStateHandler.setCurrentSpace(spaceId, session, persistNow = false) uiStateRepository.verifyStoreSelectedSpace(spaceId, session, inverse = true) } @Test fun `given is forward navigation and no current space, when setCurrentSpace, then null added to backstack`() { - appStateHandler.setCurrentSpace(spaceId, session, isForwardNavigation = true) + spaceStateHandler.setCurrentSpace(spaceId, session, isForwardNavigation = true) - val backstack = appStateHandler.getSpaceBackstack() + val backstack = spaceStateHandler.getSpaceBackstack() backstack.size shouldBe 1 backstack.first() shouldBe null @@ -98,10 +98,10 @@ internal class AppStateHandlerImplTest { @Test fun `given is forward navigation and is in space, when setCurrentSpace, then previous space added to backstack`() { - appStateHandler.setCurrentSpace(spaceId, session, isForwardNavigation = true) - appStateHandler.setCurrentSpace("secondSpaceId", session, isForwardNavigation = true) + spaceStateHandler.setCurrentSpace(spaceId, session, isForwardNavigation = true) + spaceStateHandler.setCurrentSpace("secondSpaceId", session, isForwardNavigation = true) - val backstack = appStateHandler.getSpaceBackstack() + val backstack = spaceStateHandler.getSpaceBackstack() backstack.size shouldBe 2 backstack shouldBeEqualTo listOf(null, spaceId) @@ -109,34 +109,34 @@ internal class AppStateHandlerImplTest { @Test fun `given is not forward navigation, when setCurrentSpace, then previous space not added to backstack`() { - appStateHandler.setCurrentSpace(spaceId, session, isForwardNavigation = false) + spaceStateHandler.setCurrentSpace(spaceId, session, isForwardNavigation = false) - val backstack = appStateHandler.getSpaceBackstack() + val backstack = spaceStateHandler.getSpaceBackstack() backstack.size shouldBe 0 } @Test fun `when setCurrentSpace, then space is emitted to selectedSpaceFlow`() = runTest { - appStateHandler.setCurrentSpace(spaceId, session) + spaceStateHandler.setCurrentSpace(spaceId, session) - val currentSpace = appStateHandler.getSelectedSpaceFlow().first().orNull() + val currentSpace = spaceStateHandler.getSelectedSpaceFlow().first().orNull() currentSpace shouldBeEqualTo spaceSummary } @Test fun `given current space exists, when getSafeActiveSpaceId, then return current space id`() { - appStateHandler.setCurrentSpace(spaceId, session) + spaceStateHandler.setCurrentSpace(spaceId, session) - val activeSpaceId = appStateHandler.getSafeActiveSpaceId() + val activeSpaceId = spaceStateHandler.getSafeActiveSpaceId() activeSpaceId shouldBeEqualTo spaceId } @Test fun `given current space doesn't exist, when getSafeActiveSpaceId, then return current null`() { - val activeSpaceId = appStateHandler.getSafeActiveSpaceId() + val activeSpaceId = spaceStateHandler.getSafeActiveSpaceId() activeSpaceId shouldBe null }