From b5eb15c7e3907030842f2389d48262e0b111a7e2 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 23 Sep 2022 15:54:30 +0200 Subject: [PATCH 01/11] Avoid using ActiveSessionHolder in a Fragment. Move the userId to `state.personalizationState` --- .../vector/app/features/onboarding/OnboardingViewModel.kt | 1 + .../vector/app/features/onboarding/OnboardingViewState.kt | 3 ++- .../ftueauth/FtueAuthChooseProfilePictureFragment.kt | 7 ++----- .../app/features/onboarding/OnboardingViewModelTest.kt | 5 +++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/onboarding/OnboardingViewModel.kt b/vector/src/main/java/im/vector/app/features/onboarding/OnboardingViewModel.kt index 9bb52fb1a5..93e2dfd154 100644 --- a/vector/src/main/java/im/vector/app/features/onboarding/OnboardingViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/onboarding/OnboardingViewModel.kt @@ -641,6 +641,7 @@ class OnboardingViewModel @AssistedInject constructor( val homeServerCapabilities = session.homeServerCapabilitiesService().getHomeServerCapabilities() val capabilityOverrides = vectorOverrides.forceHomeserverCapabilities?.firstOrNull() state.personalizationState.copy( + userId = session.myUserId, displayName = state.registrationState.selectedMatrixId?.let { MatrixPatterns.extractUserNameFromId(it) }, supportsChangingDisplayName = capabilityOverrides?.canChangeDisplayName ?: homeServerCapabilities.canChangeDisplayName, supportsChangingProfilePicture = capabilityOverrides?.canChangeAvatar ?: homeServerCapabilities.canChangeAvatar diff --git a/vector/src/main/java/im/vector/app/features/onboarding/OnboardingViewState.kt b/vector/src/main/java/im/vector/app/features/onboarding/OnboardingViewState.kt index 99678ea5c1..b078f41ae2 100644 --- a/vector/src/main/java/im/vector/app/features/onboarding/OnboardingViewState.kt +++ b/vector/src/main/java/im/vector/app/features/onboarding/OnboardingViewState.kt @@ -78,10 +78,11 @@ data class SelectedHomeserverState( @Parcelize data class PersonalizationState( + val userId: String = "", val supportsChangingDisplayName: Boolean = false, val supportsChangingProfilePicture: Boolean = false, val displayName: String? = null, - val selectedPictureUri: Uri? = null + val selectedPictureUri: Uri? = null, ) : Parcelable { fun supportsPersonalization() = supportsChangingDisplayName || supportsChangingProfilePicture diff --git a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthChooseProfilePictureFragment.kt b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthChooseProfilePictureFragment.kt index 92d0aa2a0f..5450c74095 100644 --- a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthChooseProfilePictureFragment.kt +++ b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthChooseProfilePictureFragment.kt @@ -26,7 +26,6 @@ import androidx.core.view.isInvisible import com.airbnb.mvrx.withState import dagger.hilt.android.AndroidEntryPoint import im.vector.app.R -import im.vector.app.core.di.ActiveSessionHolder import im.vector.app.core.dialogs.GalleryOrCameraDialogHelper import im.vector.app.core.dialogs.GalleryOrCameraDialogHelperFactory import im.vector.app.databinding.FragmentFtueProfilePictureBinding @@ -42,7 +41,6 @@ class FtueAuthChooseProfilePictureFragment : AbstractFtueAuthFragment(), GalleryOrCameraDialogHelper.Listener { - @Inject lateinit var activeSessionHolder: ActiveSessionHolder @Inject lateinit var galleryOrCameraDialogHelperFactory: GalleryOrCameraDialogHelperFactory @Inject lateinit var avatarRenderer: AvatarRenderer @@ -85,10 +83,9 @@ class FtueAuthChooseProfilePictureFragment : views.profilePictureSubmit.isEnabled = hasSetPicture views.changeProfilePictureIcon.setImageResource(if (hasSetPicture) R.drawable.ic_edit else R.drawable.ic_camera_plain) - val session = activeSessionHolder.getActiveSession() val matrixItem = MatrixItem.UserItem( - id = session.myUserId, - displayName = state.personalizationState.displayName ?: "" + id = state.personalizationState.userId, + displayName = state.personalizationState.displayName.orEmpty() ) avatarRenderer.render(matrixItem, localUri = state.personalizationState.selectedPictureUri, imageView = views.profilePictureView) } diff --git a/vector/src/test/java/im/vector/app/features/onboarding/OnboardingViewModelTest.kt b/vector/src/test/java/im/vector/app/features/onboarding/OnboardingViewModelTest.kt index 82adc70fe3..865f1c79d6 100644 --- a/vector/src/test/java/im/vector/app/features/onboarding/OnboardingViewModelTest.kt +++ b/vector/src/test/java/im/vector/app/features/onboarding/OnboardingViewModelTest.kt @@ -687,7 +687,7 @@ class OnboardingViewModelTest { .assertStatesChanges( initialState, { copy(isLoading = true) }, - { copy(isLoading = false, personalizationState = A_HOMESERVER_CAPABILITIES.toPersonalisationState(A_USERNAME)) } + { copy(isLoading = false, personalizationState = A_HOMESERVER_CAPABILITIES.toPersonalisationState(A_MATRIX_ID, A_USERNAME)) } ) .assertEvents(OnboardingViewEvents.OnAccountCreated) .finish() @@ -1196,7 +1196,8 @@ class OnboardingViewModelTest { } } -private fun HomeServerCapabilities.toPersonalisationState(displayName: String? = null) = PersonalizationState( +private fun HomeServerCapabilities.toPersonalisationState(userId: String, displayName: String? = null) = PersonalizationState( + userId = userId, supportsChangingDisplayName = canChangeDisplayName, supportsChangingProfilePicture = canChangeAvatar, displayName = displayName, From ae802dea315b594f9c02209b4bd681cf5a5635c8 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 23 Sep 2022 15:56:55 +0200 Subject: [PATCH 02/11] Avoid using ActiveSessionHolder in a Fragment. Use the userId from `state.personalizationState` --- .../ftueauth/FtueAuthAccountCreatedFragment.kt | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthAccountCreatedFragment.kt b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthAccountCreatedFragment.kt index a53ca52e85..2089dc5ad0 100644 --- a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthAccountCreatedFragment.kt +++ b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthAccountCreatedFragment.kt @@ -26,21 +26,17 @@ import androidx.core.view.isVisible import dagger.hilt.android.AndroidEntryPoint import im.vector.app.R import im.vector.app.core.animations.play -import im.vector.app.core.di.ActiveSessionHolder import im.vector.app.core.utils.isAnimationEnabled import im.vector.app.core.utils.styleMatchingText import im.vector.app.databinding.FragmentFtueAccountCreatedBinding import im.vector.app.features.onboarding.OnboardingAction import im.vector.app.features.onboarding.OnboardingViewEvents import im.vector.app.features.onboarding.OnboardingViewState -import javax.inject.Inject @AndroidEntryPoint class FtueAuthAccountCreatedFragment : AbstractFtueAuthFragment() { - @Inject lateinit var activeSessionHolder: ActiveSessionHolder - private var hasPlayedConfetti = false override fun getBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentFtueAccountCreatedBinding { @@ -53,15 +49,15 @@ class FtueAuthAccountCreatedFragment : } private fun setupViews() { - val userId = activeSessionHolder.getActiveSession().myUserId - val subtitle = getString(R.string.ftue_account_created_subtitle, userId).toSpannable().styleMatchingText(userId, Typeface.BOLD) - views.accountCreatedSubtitle.text = subtitle views.accountCreatedPersonalize.debouncedClicks { viewModel.handle(OnboardingAction.PersonalizeProfile) } views.accountCreatedTakeMeHome.debouncedClicks { viewModel.handle(OnboardingAction.PostViewEvent(OnboardingViewEvents.OnTakeMeHome)) } views.accountCreatedTakeMeHomeCta.debouncedClicks { viewModel.handle(OnboardingAction.PostViewEvent(OnboardingViewEvents.OnTakeMeHome)) } } override fun updateWithState(state: OnboardingViewState) { + val userId = state.personalizationState.userId + val subtitle = getString(R.string.ftue_account_created_subtitle, userId).toSpannable().styleMatchingText(userId, Typeface.BOLD) + views.accountCreatedSubtitle.text = subtitle val canPersonalize = state.personalizationState.supportsPersonalization() views.personalizeButtonGroup.isVisible = canPersonalize views.takeMeHomeButtonGroup.isVisible = !canPersonalize From f95d21ef1754ac1e471082244319c64c9b054b27 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 23 Sep 2022 16:32:50 +0200 Subject: [PATCH 03/11] Inject member in VectorBaseActivity instead of using SingletonEntryPoint --- .../app/core/platform/VectorBaseActivity.kt | 28 ++++++------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/vector/src/main/java/im/vector/app/core/platform/VectorBaseActivity.kt b/vector/src/main/java/im/vector/app/core/platform/VectorBaseActivity.kt index 7e61958565..413249e79c 100644 --- a/vector/src/main/java/im/vector/app/core/platform/VectorBaseActivity.kt +++ b/vector/src/main/java/im/vector/app/core/platform/VectorBaseActivity.kt @@ -105,7 +105,7 @@ abstract class VectorBaseActivity : AppCompatActivity(), Maver protected var analyticsScreenName: MobileScreen.ScreenName? = null - protected lateinit var analyticsTracker: AnalyticsTracker + @Inject lateinit var analyticsTracker: AnalyticsTracker /* ========================================================================================== * View @@ -149,26 +149,22 @@ abstract class VectorBaseActivity : AppCompatActivity(), Maver * ========================================================================================== */ private lateinit var configurationViewModel: ConfigurationViewModel - private lateinit var sessionListener: SessionListener - protected lateinit var bugReporter: BugReporter - private lateinit var pinLocker: PinLocker + @Inject lateinit var sessionListener: SessionListener + @Inject lateinit var bugReporter: BugReporter + @Inject lateinit var pinLocker: PinLocker @Inject lateinit var rageShake: RageShake @Inject lateinit var buildMeta: BuildMeta @Inject lateinit var fontScalePreferences: FontScalePreferences @Inject lateinit var vectorLocale: VectorLocaleProvider + @Inject lateinit var vectorFeatures: VectorFeatures + @Inject lateinit var navigator: Navigator + @Inject lateinit var activeSessionHolder: ActiveSessionHolder + @Inject lateinit var vectorPreferences: VectorPreferences // For debug only @Inject lateinit var debugReceiver: DebugReceiver - @Inject - lateinit var vectorFeatures: VectorFeatures - - lateinit var navigator: Navigator - private set - - private lateinit var activeSessionHolder: ActiveSessionHolder - private lateinit var vectorPreferences: VectorPreferences // Filter for multiple invalid token error private var mainActivityStarted = false @@ -205,7 +201,6 @@ abstract class VectorBaseActivity : AppCompatActivity(), Maver @CallSuper override fun onCreate(savedInstanceState: Bundle?) { Timber.i("onCreate Activity ${javaClass.simpleName}") - val singletonEntryPoint = singletonEntryPoint() val activityEntryPoint = EntryPointAccessors.fromActivity(this, ActivityEntryPoint::class.java) ThemeUtils.setActivityTheme(this, getOtherThemes()) viewModelFactory = activityEntryPoint.viewModelFactory() @@ -213,12 +208,6 @@ abstract class VectorBaseActivity : AppCompatActivity(), Maver addOnMultiWindowModeChangedListener(onMultiWindowModeChangedListener) setupMenu() configurationViewModel = viewModelProvider.get(ConfigurationViewModel::class.java) - bugReporter = singletonEntryPoint.bugReporter() - pinLocker = singletonEntryPoint.pinLocker() - analyticsTracker = singletonEntryPoint.analyticsTracker() - navigator = singletonEntryPoint.navigator() - activeSessionHolder = singletonEntryPoint.activeSessionHolder() - vectorPreferences = singletonEntryPoint.vectorPreferences() configurationViewModel.activityRestarter.observe(this) { if (!it.hasBeenHandled) { // Recreate the Activity because configuration has changed @@ -230,7 +219,6 @@ abstract class VectorBaseActivity : AppCompatActivity(), Maver navigator.openPinCode(this, pinStartForActivityResult, PinMode.AUTH) } } - sessionListener = singletonEntryPoint.sessionListener() sessionListener.globalErrorLiveData.observeEvent(this) { handleGlobalError(it) } From cbd0972eca266dbe8decd38221af196fffc7adcb Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 23 Sep 2022 16:16:37 +0200 Subject: [PATCH 04/11] Reuse injected members in parent activity. --- .../vector/app/features/debug/DebugMenuActivity.kt | 4 ---- .../java/im/vector/app/features/MainActivity.kt | 13 +++++-------- .../keysbackup/restore/KeysBackupRestoreActivity.kt | 4 ---- .../keysbackup/setup/KeysBackupSetupActivity.kt | 2 -- .../im/vector/app/features/home/HomeActivity.kt | 4 ---- .../vector/app/features/link/LinkHandlerActivity.kt | 10 ++++------ .../app/features/share/IncomingShareActivity.kt | 4 ---- .../app/features/webview/VectorWebViewActivity.kt | 3 --- .../vector/app/features/widgets/WidgetActivity.kt | 4 ---- 9 files changed, 9 insertions(+), 39 deletions(-) diff --git a/vector-app/src/debug/java/im/vector/app/features/debug/DebugMenuActivity.kt b/vector-app/src/debug/java/im/vector/app/features/debug/DebugMenuActivity.kt index 005e9c499b..e74caac299 100644 --- a/vector-app/src/debug/java/im/vector/app/features/debug/DebugMenuActivity.kt +++ b/vector-app/src/debug/java/im/vector/app/features/debug/DebugMenuActivity.kt @@ -26,7 +26,6 @@ import androidx.core.app.Person import androidx.core.content.getSystemService import dagger.hilt.android.AndroidEntryPoint import im.vector.app.R -import im.vector.app.core.di.ActiveSessionHolder import im.vector.app.core.extensions.registerStartForActivityResult import im.vector.app.core.platform.VectorBaseActivity import im.vector.app.core.time.Clock @@ -59,9 +58,6 @@ class DebugMenuActivity : VectorBaseActivity() { override fun getBinding() = ActivityDebugMenuBinding.inflate(layoutInflater) - @Inject - lateinit var activeSessionHolder: ActiveSessionHolder - @Inject lateinit var clock: Clock diff --git a/vector/src/main/java/im/vector/app/features/MainActivity.kt b/vector/src/main/java/im/vector/app/features/MainActivity.kt index 0040962b73..1040727722 100644 --- a/vector/src/main/java/im/vector/app/features/MainActivity.kt +++ b/vector/src/main/java/im/vector/app/features/MainActivity.kt @@ -131,13 +131,10 @@ class MainActivity : VectorBaseActivity(), UnlockedActivity private lateinit var args: MainActivityArgs @Inject lateinit var notificationDrawerManager: NotificationDrawerManager - @Inject lateinit var sessionHolder: ActiveSessionHolder @Inject lateinit var errorFormatter: ErrorFormatter - @Inject lateinit var vectorPreferences: VectorPreferences @Inject lateinit var uiStateRepository: UiStateRepository @Inject lateinit var shortcutsHandler: ShortcutsHandler @Inject lateinit var pinCodeHelper: PinCodeHelper - @Inject lateinit var pinLocker: PinLocker @Inject lateinit var popupAlertManager: PopupAlertManager @Inject lateinit var vectorAnalytics: VectorAnalytics @Inject lateinit var lockScreenKeyRepository: LockScreenKeyRepository @@ -232,7 +229,7 @@ class MainActivity : VectorBaseActivity(), UnlockedActivity } private fun doCleanUp() { - val session = sessionHolder.getSafeActiveSession() + val session = activeSessionHolder.getSafeActiveSession() if (session == null) { startNextActivityAndFinish() return @@ -244,7 +241,7 @@ class MainActivity : VectorBaseActivity(), UnlockedActivity lifecycleScope.launch { // Just do the local cleanup Timber.w("Account deactivated, start app") - sessionHolder.clearActiveSession() + activeSessionHolder.clearActiveSession() doLocalCleanup(clearPreferences = true, onboardingStore) startNextActivityAndFinish() } @@ -258,7 +255,7 @@ class MainActivity : VectorBaseActivity(), UnlockedActivity return@launch } Timber.w("SIGN_OUT: success, start app") - sessionHolder.clearActiveSession() + activeSessionHolder.clearActiveSession() doLocalCleanup(clearPreferences = true, onboardingStore) startNextActivityAndFinish() } @@ -330,10 +327,10 @@ class MainActivity : VectorBaseActivity(), UnlockedActivity args.isUserLoggedOut -> // the homeserver has invalidated the token (password changed, device deleted, other security reasons) SignedOutActivity.newIntent(this) - sessionHolder.hasActiveSession() -> + activeSessionHolder.hasActiveSession() -> // We have a session. // Check it can be opened - if (sessionHolder.getActiveSession().isOpenable) { + if (activeSessionHolder.getActiveSession().isOpenable) { HomeActivity.newIntent(this, firstStartMainActivity = false, existingSession = true) } else { // The token is still invalid diff --git a/vector/src/main/java/im/vector/app/features/crypto/keysbackup/restore/KeysBackupRestoreActivity.kt b/vector/src/main/java/im/vector/app/features/crypto/keysbackup/restore/KeysBackupRestoreActivity.kt index f7964cf0ed..4adccf3953 100644 --- a/vector/src/main/java/im/vector/app/features/crypto/keysbackup/restore/KeysBackupRestoreActivity.kt +++ b/vector/src/main/java/im/vector/app/features/crypto/keysbackup/restore/KeysBackupRestoreActivity.kt @@ -22,7 +22,6 @@ import com.airbnb.mvrx.viewModel import com.google.android.material.dialog.MaterialAlertDialogBuilder import dagger.hilt.android.AndroidEntryPoint import im.vector.app.R -import im.vector.app.core.di.ActiveSessionHolder import im.vector.app.core.extensions.addFragmentToBackstack import im.vector.app.core.extensions.observeEvent import im.vector.app.core.extensions.registerStartForActivityResult @@ -32,7 +31,6 @@ import im.vector.app.features.crypto.quads.SharedSecureStorageActivity import im.vector.app.features.workers.signout.ServerBackupStatusAction import im.vector.app.features.workers.signout.ServerBackupStatusViewModel import org.matrix.android.sdk.api.session.crypto.crosssigning.KEYBACKUP_SECRET_SSSS_NAME -import javax.inject.Inject @AndroidEntryPoint class KeysBackupRestoreActivity : SimpleFragmentActivity() { @@ -56,8 +54,6 @@ class KeysBackupRestoreActivity : SimpleFragmentActivity() { super.onBackPressed() } - @Inject lateinit var activeSessionHolder: ActiveSessionHolder - override fun initUiAndData() { super.initUiAndData() viewModel = viewModelProvider.get(KeysBackupRestoreSharedViewModel::class.java) diff --git a/vector/src/main/java/im/vector/app/features/crypto/keysbackup/setup/KeysBackupSetupActivity.kt b/vector/src/main/java/im/vector/app/features/crypto/keysbackup/setup/KeysBackupSetupActivity.kt index 8238da8245..4473d54765 100644 --- a/vector/src/main/java/im/vector/app/features/crypto/keysbackup/setup/KeysBackupSetupActivity.kt +++ b/vector/src/main/java/im/vector/app/features/crypto/keysbackup/setup/KeysBackupSetupActivity.kt @@ -25,7 +25,6 @@ import androidx.lifecycle.lifecycleScope import com.google.android.material.dialog.MaterialAlertDialogBuilder import dagger.hilt.android.AndroidEntryPoint import im.vector.app.R -import im.vector.app.core.di.ActiveSessionHolder import im.vector.app.core.dialogs.ExportKeysDialog import im.vector.app.core.extensions.observeEvent import im.vector.app.core.extensions.queryExportKeys @@ -45,7 +44,6 @@ class KeysBackupSetupActivity : SimpleFragmentActivity() { private lateinit var viewModel: KeysBackupSetupSharedViewModel @Inject lateinit var keysExporter: KeysExporter - @Inject lateinit var activeSessionHolder: ActiveSessionHolder private val session by lazy { activeSessionHolder.getActiveSession() 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 552b78bbb8..2df94fecad 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 @@ -37,7 +37,6 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder import dagger.hilt.android.AndroidEntryPoint import im.vector.app.R import im.vector.app.SpaceStateHandler -import im.vector.app.core.di.ActiveSessionHolder import im.vector.app.core.extensions.hideKeyboard import im.vector.app.core.extensions.registerStartForActivityResult import im.vector.app.core.extensions.replaceFragment @@ -77,7 +76,6 @@ import im.vector.app.features.popup.PopupAlertManager import im.vector.app.features.popup.VerificationVectorAlert import im.vector.app.features.rageshake.ReportType import im.vector.app.features.rageshake.VectorUncaughtExceptionHandler -import im.vector.app.features.settings.VectorPreferences import im.vector.app.features.settings.VectorSettingsActivity import im.vector.app.features.spaces.SpaceCreationActivity import im.vector.app.features.spaces.SpacePreviewActivity @@ -129,11 +127,9 @@ class HomeActivity : private val serverBackupStatusViewModel: ServerBackupStatusViewModel by viewModel() - @Inject lateinit var activeSessionHolder: ActiveSessionHolder @Inject lateinit var vectorUncaughtExceptionHandler: VectorUncaughtExceptionHandler @Inject lateinit var pushersManager: PushersManager @Inject lateinit var notificationDrawerManager: NotificationDrawerManager - @Inject lateinit var vectorPreferences: VectorPreferences @Inject lateinit var popupAlertManager: PopupAlertManager @Inject lateinit var shortcutsHandler: ShortcutsHandler @Inject lateinit var permalinkHandler: PermalinkHandler diff --git a/vector/src/main/java/im/vector/app/features/link/LinkHandlerActivity.kt b/vector/src/main/java/im/vector/app/features/link/LinkHandlerActivity.kt index 0bdec53f60..2526dc6ed7 100644 --- a/vector/src/main/java/im/vector/app/features/link/LinkHandlerActivity.kt +++ b/vector/src/main/java/im/vector/app/features/link/LinkHandlerActivity.kt @@ -24,7 +24,6 @@ import com.airbnb.mvrx.viewModel import com.google.android.material.dialog.MaterialAlertDialogBuilder import dagger.hilt.android.AndroidEntryPoint import im.vector.app.R -import im.vector.app.core.di.ActiveSessionHolder import im.vector.app.core.error.ErrorFormatter import im.vector.app.core.extensions.registerStartForActivityResult import im.vector.app.core.platform.VectorBaseActivity @@ -46,7 +45,6 @@ import javax.inject.Inject @AndroidEntryPoint class LinkHandlerActivity : VectorBaseActivity() { - @Inject lateinit var sessionHolder: ActiveSessionHolder @Inject lateinit var errorFormatter: ErrorFormatter @Inject lateinit var permalinkHandler: PermalinkHandler @@ -103,7 +101,7 @@ class LinkHandlerActivity : VectorBaseActivity() { } private fun handleConfigUrl(uri: Uri) { - if (sessionHolder.hasActiveSession()) { + if (activeSessionHolder.hasActiveSession()) { displayAlreadyLoginPopup(uri) } else { // user is not yet logged in, this is the nominal case @@ -114,7 +112,7 @@ class LinkHandlerActivity : VectorBaseActivity() { private fun handleSupportedHostUrl() { // If we are not logged in, open login screen. // In the future, we might want to relaunch the process after login. - if (!sessionHolder.hasActiveSession()) { + if (!activeSessionHolder.hasActiveSession()) { startLoginActivity() return } @@ -152,7 +150,7 @@ class LinkHandlerActivity : VectorBaseActivity() { } private fun safeSignout(uri: Uri) { - val session = sessionHolder.getSafeActiveSession() + val session = activeSessionHolder.getSafeActiveSession() if (session == null) { // Should not happen startLoginActivity(uri) @@ -161,7 +159,7 @@ class LinkHandlerActivity : VectorBaseActivity() { try { session.signOutService().signOut(true) Timber.d("## displayAlreadyLoginPopup(): logout succeeded") - sessionHolder.clearActiveSession() + activeSessionHolder.clearActiveSession() startLoginActivity(uri) } catch (failure: Throwable) { displayError(failure) diff --git a/vector/src/main/java/im/vector/app/features/share/IncomingShareActivity.kt b/vector/src/main/java/im/vector/app/features/share/IncomingShareActivity.kt index 3d603e3f6a..a78e6c95c0 100644 --- a/vector/src/main/java/im/vector/app/features/share/IncomingShareActivity.kt +++ b/vector/src/main/java/im/vector/app/features/share/IncomingShareActivity.kt @@ -20,22 +20,18 @@ import android.content.Intent import android.os.Bundle import com.airbnb.mvrx.viewModel import dagger.hilt.android.AndroidEntryPoint -import im.vector.app.core.di.ActiveSessionHolder import im.vector.app.core.extensions.addFragment import im.vector.app.core.extensions.registerStartForActivityResult import im.vector.app.core.platform.VectorBaseActivity import im.vector.app.databinding.ActivitySimpleBinding import im.vector.app.features.MainActivity import im.vector.app.features.start.StartAppViewModel -import javax.inject.Inject @AndroidEntryPoint class IncomingShareActivity : VectorBaseActivity() { private val startAppViewModel: StartAppViewModel by viewModel() - @Inject lateinit var activeSessionHolder: ActiveSessionHolder - private val launcher = registerStartForActivityResult { if (it.resultCode == RESULT_OK) { handleAppStarted() diff --git a/vector/src/main/java/im/vector/app/features/webview/VectorWebViewActivity.kt b/vector/src/main/java/im/vector/app/features/webview/VectorWebViewActivity.kt index c97f87972e..6f60ed9958 100644 --- a/vector/src/main/java/im/vector/app/features/webview/VectorWebViewActivity.kt +++ b/vector/src/main/java/im/vector/app/features/webview/VectorWebViewActivity.kt @@ -21,12 +21,10 @@ import android.content.Intent import android.webkit.WebChromeClient import android.webkit.WebView import dagger.hilt.android.AndroidEntryPoint -import im.vector.app.core.di.ActiveSessionHolder import im.vector.app.core.platform.VectorBaseActivity import im.vector.app.databinding.ActivityVectorWebViewBinding import im.vector.lib.core.utils.compat.getSerializableCompat import org.matrix.android.sdk.api.session.Session -import javax.inject.Inject /** * This class is responsible for managing a WebView @@ -39,7 +37,6 @@ class VectorWebViewActivity : VectorBaseActivity() override fun getBinding() = ActivityVectorWebViewBinding.inflate(layoutInflater) - @Inject lateinit var activeSessionHolder: ActiveSessionHolder val session: Session by lazy { activeSessionHolder.getActiveSession() } diff --git a/vector/src/main/java/im/vector/app/features/widgets/WidgetActivity.kt b/vector/src/main/java/im/vector/app/features/widgets/WidgetActivity.kt index 586e4dcc6e..eeb3959ef8 100644 --- a/vector/src/main/java/im/vector/app/features/widgets/WidgetActivity.kt +++ b/vector/src/main/java/im/vector/app/features/widgets/WidgetActivity.kt @@ -39,7 +39,6 @@ import im.vector.app.R import im.vector.app.core.extensions.addFragment import im.vector.app.core.platform.VectorBaseActivity import im.vector.app.databinding.ActivityWidgetBinding -import im.vector.app.features.settings.VectorPreferences import im.vector.app.features.widgets.permissions.RoomWidgetPermissionBottomSheet import im.vector.app.features.widgets.permissions.RoomWidgetPermissionViewEvents import im.vector.app.features.widgets.permissions.RoomWidgetPermissionViewModel @@ -48,7 +47,6 @@ import im.vector.lib.core.utils.compat.getSerializableCompat import org.matrix.android.sdk.api.extensions.orFalse import org.matrix.android.sdk.api.session.events.model.Content import java.io.Serializable -import javax.inject.Inject @AndroidEntryPoint class WidgetActivity : VectorBaseActivity() { @@ -83,8 +81,6 @@ class WidgetActivity : VectorBaseActivity() { private val viewModel: WidgetViewModel by viewModel() private val permissionViewModel: RoomWidgetPermissionViewModel by viewModel() - @Inject lateinit var vectorPreferences: VectorPreferences - override fun getBinding() = ActivityWidgetBinding.inflate(layoutInflater) override fun getTitleRes() = R.string.room_widget_activity_title From b3068c017da17d07f040c8060f9e3d8b369917db Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 23 Sep 2022 16:20:20 +0200 Subject: [PATCH 05/11] Inject ErrorFormatter in the parent Activity (often used) --- .../java/im/vector/app/core/platform/VectorBaseActivity.kt | 3 ++- vector/src/main/java/im/vector/app/features/MainActivity.kt | 5 ----- .../im/vector/app/features/call/dialpad/PstnDialActivity.kt | 2 -- .../app/features/call/transfer/CallTransferActivity.kt | 4 ---- .../app/features/createdirect/CreateDirectRoomActivity.kt | 3 --- .../features/crypto/quads/SharedSecureStorageActivity.kt | 3 --- .../vector/app/features/invite/InviteUsersToRoomActivity.kt | 3 --- .../java/im/vector/app/features/link/LinkHandlerActivity.kt | 2 -- .../roomprofile/settings/joinrule/RoomJoinRuleActivity.kt | 5 ----- .../vector/app/features/signout/soft/SoftLogoutActivity.kt | 2 -- .../app/features/spaces/leave/SpaceLeaveAdvancedActivity.kt | 6 +----- .../im/vector/app/features/terms/ReviewTermsActivity.kt | 4 ---- 12 files changed, 3 insertions(+), 39 deletions(-) diff --git a/vector/src/main/java/im/vector/app/core/platform/VectorBaseActivity.kt b/vector/src/main/java/im/vector/app/core/platform/VectorBaseActivity.kt index 413249e79c..4e5116eda9 100644 --- a/vector/src/main/java/im/vector/app/core/platform/VectorBaseActivity.kt +++ b/vector/src/main/java/im/vector/app/core/platform/VectorBaseActivity.kt @@ -56,6 +56,7 @@ import im.vector.app.core.di.ActiveSessionHolder import im.vector.app.core.di.ActivityEntryPoint import im.vector.app.core.dialogs.DialogLocker import im.vector.app.core.dialogs.UnrecognizedCertificateDialog +import im.vector.app.core.error.ErrorFormatter import im.vector.app.core.error.fatalError import im.vector.app.core.extensions.observeEvent import im.vector.app.core.extensions.observeNotNull @@ -161,11 +162,11 @@ abstract class VectorBaseActivity : AppCompatActivity(), Maver @Inject lateinit var navigator: Navigator @Inject lateinit var activeSessionHolder: ActiveSessionHolder @Inject lateinit var vectorPreferences: VectorPreferences + @Inject lateinit var errorFormatter: ErrorFormatter // For debug only @Inject lateinit var debugReceiver: DebugReceiver - // Filter for multiple invalid token error private var mainActivityStarted = false diff --git a/vector/src/main/java/im/vector/app/features/MainActivity.kt b/vector/src/main/java/im/vector/app/features/MainActivity.kt index 1040727722..c197cfccf3 100644 --- a/vector/src/main/java/im/vector/app/features/MainActivity.kt +++ b/vector/src/main/java/im/vector/app/features/MainActivity.kt @@ -30,8 +30,6 @@ import com.bumptech.glide.Glide import com.google.android.material.dialog.MaterialAlertDialogBuilder import dagger.hilt.android.AndroidEntryPoint import im.vector.app.R -import im.vector.app.core.di.ActiveSessionHolder -import im.vector.app.core.error.ErrorFormatter import im.vector.app.core.extensions.startSyncing import im.vector.app.core.extensions.vectorStore import im.vector.app.core.platform.VectorBaseActivity @@ -42,13 +40,11 @@ import im.vector.app.features.analytics.plan.ViewRoom import im.vector.app.features.home.HomeActivity import im.vector.app.features.home.ShortcutsHandler import im.vector.app.features.notifications.NotificationDrawerManager -import im.vector.app.features.pin.PinLocker import im.vector.app.features.pin.UnlockedActivity import im.vector.app.features.pin.lockscreen.crypto.LockScreenKeyRepository import im.vector.app.features.pin.lockscreen.pincode.PinCodeHelper import im.vector.app.features.popup.PopupAlertManager import im.vector.app.features.session.VectorSessionStore -import im.vector.app.features.settings.VectorPreferences import im.vector.app.features.signout.hard.SignedOutActivity import im.vector.app.features.start.StartAppAction import im.vector.app.features.start.StartAppAndroidService @@ -131,7 +127,6 @@ class MainActivity : VectorBaseActivity(), UnlockedActivity private lateinit var args: MainActivityArgs @Inject lateinit var notificationDrawerManager: NotificationDrawerManager - @Inject lateinit var errorFormatter: ErrorFormatter @Inject lateinit var uiStateRepository: UiStateRepository @Inject lateinit var shortcutsHandler: ShortcutsHandler @Inject lateinit var pinCodeHelper: PinCodeHelper diff --git a/vector/src/main/java/im/vector/app/features/call/dialpad/PstnDialActivity.kt b/vector/src/main/java/im/vector/app/features/call/dialpad/PstnDialActivity.kt index 251195ddc4..1a7571598e 100644 --- a/vector/src/main/java/im/vector/app/features/call/dialpad/PstnDialActivity.kt +++ b/vector/src/main/java/im/vector/app/features/call/dialpad/PstnDialActivity.kt @@ -23,7 +23,6 @@ import androidx.lifecycle.lifecycleScope import com.google.android.material.dialog.MaterialAlertDialogBuilder import dagger.hilt.android.AndroidEntryPoint import im.vector.app.R -import im.vector.app.core.error.ErrorFormatter import im.vector.app.core.extensions.addFragment import im.vector.app.core.platform.SimpleFragmentActivity import im.vector.app.features.call.webrtc.WebRtcCallManager @@ -39,7 +38,6 @@ class PstnDialActivity : SimpleFragmentActivity() { @Inject lateinit var callManager: WebRtcCallManager @Inject lateinit var directRoomHelper: DirectRoomHelper @Inject lateinit var session: Session - @Inject lateinit var errorFormatter: ErrorFormatter private var progress: AppCompatDialog? = null diff --git a/vector/src/main/java/im/vector/app/features/call/transfer/CallTransferActivity.kt b/vector/src/main/java/im/vector/app/features/call/transfer/CallTransferActivity.kt index 25bfb6c0e9..ae168c5f92 100644 --- a/vector/src/main/java/im/vector/app/features/call/transfer/CallTransferActivity.kt +++ b/vector/src/main/java/im/vector/app/features/call/transfer/CallTransferActivity.kt @@ -25,12 +25,10 @@ import com.airbnb.mvrx.viewModel import com.google.android.material.tabs.TabLayoutMediator import dagger.hilt.android.AndroidEntryPoint import im.vector.app.R -import im.vector.app.core.error.ErrorFormatter import im.vector.app.core.platform.VectorBaseActivity import im.vector.app.databinding.ActivityCallTransferBinding import im.vector.lib.core.utils.compat.getParcelableCompat import kotlinx.parcelize.Parcelize -import javax.inject.Inject @Parcelize data class CallTransferArgs(val callId: String) : Parcelable @@ -40,8 +38,6 @@ private const val USER_LIST_FRAGMENT_TAG = "USER_LIST_FRAGMENT_TAG" @AndroidEntryPoint class CallTransferActivity : VectorBaseActivity() { - @Inject lateinit var errorFormatter: ErrorFormatter - private lateinit var sectionsPagerAdapter: CallTransferPagerAdapter private val callTransferViewModel: CallTransferViewModel by viewModel() diff --git a/vector/src/main/java/im/vector/app/features/createdirect/CreateDirectRoomActivity.kt b/vector/src/main/java/im/vector/app/features/createdirect/CreateDirectRoomActivity.kt index fd28235a51..acaf24dca7 100644 --- a/vector/src/main/java/im/vector/app/features/createdirect/CreateDirectRoomActivity.kt +++ b/vector/src/main/java/im/vector/app/features/createdirect/CreateDirectRoomActivity.kt @@ -32,7 +32,6 @@ import com.airbnb.mvrx.viewModel import com.google.android.material.dialog.MaterialAlertDialogBuilder import dagger.hilt.android.AndroidEntryPoint import im.vector.app.R -import im.vector.app.core.error.ErrorFormatter import im.vector.app.core.extensions.addFragment import im.vector.app.core.extensions.addFragmentToBackstack import im.vector.app.core.platform.SimpleFragmentActivity @@ -58,7 +57,6 @@ import kotlinx.coroutines.flow.onEach import org.matrix.android.sdk.api.failure.Failure import org.matrix.android.sdk.api.session.room.failure.CreateRoomFailure import java.net.HttpURLConnection -import javax.inject.Inject @AndroidEntryPoint class CreateDirectRoomActivity : SimpleFragmentActivity() { @@ -67,7 +65,6 @@ class CreateDirectRoomActivity : SimpleFragmentActivity() { private val qrViewModel: QrCodeScannerViewModel by viewModel() private lateinit var sharedActionViewModel: UserListSharedActionViewModel - @Inject lateinit var errorFormatter: ErrorFormatter override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/vector/src/main/java/im/vector/app/features/crypto/quads/SharedSecureStorageActivity.kt b/vector/src/main/java/im/vector/app/features/crypto/quads/SharedSecureStorageActivity.kt index b39992256d..d393636a8e 100644 --- a/vector/src/main/java/im/vector/app/features/crypto/quads/SharedSecureStorageActivity.kt +++ b/vector/src/main/java/im/vector/app/features/crypto/quads/SharedSecureStorageActivity.kt @@ -30,13 +30,11 @@ import com.airbnb.mvrx.viewModel import com.google.android.material.dialog.MaterialAlertDialogBuilder import dagger.hilt.android.AndroidEntryPoint import im.vector.app.R -import im.vector.app.core.error.ErrorFormatter import im.vector.app.core.extensions.replaceFragment import im.vector.app.core.platform.SimpleFragmentActivity import im.vector.app.core.platform.VectorBaseBottomSheetDialogFragment import im.vector.app.features.crypto.recover.SetupMode import kotlinx.parcelize.Parcelize -import javax.inject.Inject import kotlin.reflect.KClass @AndroidEntryPoint @@ -54,7 +52,6 @@ class SharedSecureStorageActivity : ) : Parcelable private val viewModel: SharedSecureStorageViewModel by viewModel() - @Inject lateinit var errorFormatter: ErrorFormatter override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/vector/src/main/java/im/vector/app/features/invite/InviteUsersToRoomActivity.kt b/vector/src/main/java/im/vector/app/features/invite/InviteUsersToRoomActivity.kt index 86f061849b..7f514d2ad2 100644 --- a/vector/src/main/java/im/vector/app/features/invite/InviteUsersToRoomActivity.kt +++ b/vector/src/main/java/im/vector/app/features/invite/InviteUsersToRoomActivity.kt @@ -27,7 +27,6 @@ import com.airbnb.mvrx.viewModel import com.google.android.material.dialog.MaterialAlertDialogBuilder import dagger.hilt.android.AndroidEntryPoint import im.vector.app.R -import im.vector.app.core.error.ErrorFormatter import im.vector.app.core.extensions.addFragment import im.vector.app.core.extensions.addFragmentToBackstack import im.vector.app.core.platform.SimpleFragmentActivity @@ -47,7 +46,6 @@ import kotlinx.coroutines.flow.onEach import kotlinx.parcelize.Parcelize import org.matrix.android.sdk.api.failure.Failure import java.net.HttpURLConnection -import javax.inject.Inject @Parcelize data class InviteUsersToRoomArgs(val roomId: String) : Parcelable @@ -57,7 +55,6 @@ class InviteUsersToRoomActivity : SimpleFragmentActivity() { private val viewModel: InviteUsersToRoomViewModel by viewModel() private lateinit var sharedActionViewModel: UserListSharedActionViewModel - @Inject lateinit var errorFormatter: ErrorFormatter override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/vector/src/main/java/im/vector/app/features/link/LinkHandlerActivity.kt b/vector/src/main/java/im/vector/app/features/link/LinkHandlerActivity.kt index 2526dc6ed7..1ca67e1fb7 100644 --- a/vector/src/main/java/im/vector/app/features/link/LinkHandlerActivity.kt +++ b/vector/src/main/java/im/vector/app/features/link/LinkHandlerActivity.kt @@ -24,7 +24,6 @@ import com.airbnb.mvrx.viewModel import com.google.android.material.dialog.MaterialAlertDialogBuilder import dagger.hilt.android.AndroidEntryPoint import im.vector.app.R -import im.vector.app.core.error.ErrorFormatter import im.vector.app.core.extensions.registerStartForActivityResult import im.vector.app.core.platform.VectorBaseActivity import im.vector.app.core.utils.toast @@ -45,7 +44,6 @@ import javax.inject.Inject @AndroidEntryPoint class LinkHandlerActivity : VectorBaseActivity() { - @Inject lateinit var errorFormatter: ErrorFormatter @Inject lateinit var permalinkHandler: PermalinkHandler private val startAppViewModel: StartAppViewModel by viewModel() diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/settings/joinrule/RoomJoinRuleActivity.kt b/vector/src/main/java/im/vector/app/features/roomprofile/settings/joinrule/RoomJoinRuleActivity.kt index 205fb86377..818300ac72 100644 --- a/vector/src/main/java/im/vector/app/features/roomprofile/settings/joinrule/RoomJoinRuleActivity.kt +++ b/vector/src/main/java/im/vector/app/features/roomprofile/settings/joinrule/RoomJoinRuleActivity.kt @@ -29,7 +29,6 @@ import com.airbnb.mvrx.viewModel import com.airbnb.mvrx.withState import dagger.hilt.android.AndroidEntryPoint import im.vector.app.R -import im.vector.app.core.error.ErrorFormatter import im.vector.app.core.extensions.addFragment import im.vector.app.core.extensions.commitTransaction import im.vector.app.core.extensions.toMvRxBundle @@ -44,7 +43,6 @@ import im.vector.app.features.roomprofile.settings.joinrule.advanced.RoomJoinRul import im.vector.app.features.roomprofile.settings.joinrule.advanced.RoomJoinRuleChooseRestrictedState import im.vector.app.features.roomprofile.settings.joinrule.advanced.RoomJoinRuleChooseRestrictedViewModel import im.vector.lib.core.utils.compat.getParcelableCompat -import javax.inject.Inject @AndroidEntryPoint class RoomJoinRuleActivity : VectorBaseActivity() { @@ -53,9 +51,6 @@ class RoomJoinRuleActivity : VectorBaseActivity() { private lateinit var roomProfileArgs: RoomProfileArgs - @Inject - lateinit var errorFormatter: ErrorFormatter - val viewModel: RoomJoinRuleChooseRestrictedViewModel by viewModel() override fun initUiAndData() { diff --git a/vector/src/main/java/im/vector/app/features/signout/soft/SoftLogoutActivity.kt b/vector/src/main/java/im/vector/app/features/signout/soft/SoftLogoutActivity.kt index 729bd2541e..15a86c869b 100644 --- a/vector/src/main/java/im/vector/app/features/signout/soft/SoftLogoutActivity.kt +++ b/vector/src/main/java/im/vector/app/features/signout/soft/SoftLogoutActivity.kt @@ -25,7 +25,6 @@ import com.airbnb.mvrx.viewModel import com.google.android.material.dialog.MaterialAlertDialogBuilder import dagger.hilt.android.AndroidEntryPoint import im.vector.app.R -import im.vector.app.core.error.ErrorFormatter import im.vector.app.core.extensions.replaceFragment import im.vector.app.features.MainActivity import im.vector.app.features.MainActivityArgs @@ -45,7 +44,6 @@ class SoftLogoutActivity : LoginActivity() { private val softLogoutViewModel: SoftLogoutViewModel by viewModel() @Inject lateinit var session: Session - @Inject lateinit var errorFormatter: ErrorFormatter override fun initUiAndData() { super.initUiAndData() diff --git a/vector/src/main/java/im/vector/app/features/spaces/leave/SpaceLeaveAdvancedActivity.kt b/vector/src/main/java/im/vector/app/features/spaces/leave/SpaceLeaveAdvancedActivity.kt index 80959c61a1..6f9aef401d 100644 --- a/vector/src/main/java/im/vector/app/features/spaces/leave/SpaceLeaveAdvancedActivity.kt +++ b/vector/src/main/java/im/vector/app/features/spaces/leave/SpaceLeaveAdvancedActivity.kt @@ -29,7 +29,6 @@ import com.airbnb.mvrx.viewModel import com.google.android.material.dialog.MaterialAlertDialogBuilder import dagger.hilt.android.AndroidEntryPoint import im.vector.app.R -import im.vector.app.core.error.ErrorFormatter import im.vector.app.core.extensions.hideKeyboard import im.vector.app.core.extensions.replaceFragment import im.vector.app.core.extensions.setTextOrHide @@ -37,16 +36,13 @@ import im.vector.app.core.platform.VectorBaseActivity import im.vector.app.databinding.ActivitySimpleLoadingBinding import im.vector.app.features.spaces.SpaceBottomSheetSettingsArgs import im.vector.lib.core.utils.compat.getParcelableExtraCompat -import javax.inject.Inject @AndroidEntryPoint class SpaceLeaveAdvancedActivity : VectorBaseActivity() { override fun getBinding(): ActivitySimpleLoadingBinding = ActivitySimpleLoadingBinding.inflate(layoutInflater) - val leaveViewModel: SpaceLeaveAdvancedViewModel by viewModel() - - @Inject lateinit var errorFormatter: ErrorFormatter + private val leaveViewModel: SpaceLeaveAdvancedViewModel by viewModel() override fun showWaitingView(text: String?) { hideKeyboard() diff --git a/vector/src/main/java/im/vector/app/features/terms/ReviewTermsActivity.kt b/vector/src/main/java/im/vector/app/features/terms/ReviewTermsActivity.kt index d261a8d160..6e34113012 100644 --- a/vector/src/main/java/im/vector/app/features/terms/ReviewTermsActivity.kt +++ b/vector/src/main/java/im/vector/app/features/terms/ReviewTermsActivity.kt @@ -22,18 +22,14 @@ import com.airbnb.mvrx.viewModel import com.google.android.material.dialog.MaterialAlertDialogBuilder import dagger.hilt.android.AndroidEntryPoint import im.vector.app.R -import im.vector.app.core.error.ErrorFormatter import im.vector.app.core.extensions.replaceFragment import im.vector.app.core.platform.SimpleFragmentActivity import im.vector.lib.core.utils.compat.getParcelableExtraCompat import org.matrix.android.sdk.api.session.terms.TermsService -import javax.inject.Inject @AndroidEntryPoint class ReviewTermsActivity : SimpleFragmentActivity() { - @Inject lateinit var errorFormatter: ErrorFormatter - private val reviewTermsViewModel: ReviewTermsViewModel by viewModel() override fun initUiAndData() { From aa806ed2c61a7fd8cf4dcac36921cb61615d6730 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 23 Sep 2022 16:25:48 +0200 Subject: [PATCH 06/11] More cleanup on @Inject members --- .../vector/app/features/debug/DebugMenuActivity.kt | 3 +-- .../features/home/room/threads/ThreadsActivity.kt | 3 +-- .../media/VectorAttachmentViewerActivity.kt | 13 ++++--------- .../app/features/roomprofile/RoomProfileActivity.kt | 3 +-- 4 files changed, 7 insertions(+), 15 deletions(-) diff --git a/vector-app/src/debug/java/im/vector/app/features/debug/DebugMenuActivity.kt b/vector-app/src/debug/java/im/vector/app/features/debug/DebugMenuActivity.kt index e74caac299..f431192efd 100644 --- a/vector-app/src/debug/java/im/vector/app/features/debug/DebugMenuActivity.kt +++ b/vector-app/src/debug/java/im/vector/app/features/debug/DebugMenuActivity.kt @@ -58,8 +58,7 @@ class DebugMenuActivity : VectorBaseActivity() { override fun getBinding() = ActivityDebugMenuBinding.inflate(layoutInflater) - @Inject - lateinit var clock: Clock + @Inject lateinit var clock: Clock private lateinit var buffer: ByteArray diff --git a/vector/src/main/java/im/vector/app/features/home/room/threads/ThreadsActivity.kt b/vector/src/main/java/im/vector/app/features/home/room/threads/ThreadsActivity.kt index 0ee0beb2e6..b3f2ef1f75 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/threads/ThreadsActivity.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/threads/ThreadsActivity.kt @@ -40,8 +40,7 @@ import javax.inject.Inject @AndroidEntryPoint class ThreadsActivity : VectorBaseActivity() { - @Inject - lateinit var avatarRenderer: AvatarRenderer + @Inject lateinit var avatarRenderer: AvatarRenderer // private val roomThreadDetailFragment: RoomThreadDetailFragment? // get() { diff --git a/vector/src/main/java/im/vector/app/features/media/VectorAttachmentViewerActivity.kt b/vector/src/main/java/im/vector/app/features/media/VectorAttachmentViewerActivity.kt index d523d99d76..089fdcebd4 100644 --- a/vector/src/main/java/im/vector/app/features/media/VectorAttachmentViewerActivity.kt +++ b/vector/src/main/java/im/vector/app/features/media/VectorAttachmentViewerActivity.kt @@ -69,14 +69,9 @@ class VectorAttachmentViewerActivity : AttachmentViewerActivity(), AttachmentInt val sharedTransitionName: String? ) : Parcelable - @Inject - lateinit var sessionHolder: ActiveSessionHolder - - @Inject - lateinit var dataSourceFactory: AttachmentProviderFactory - - @Inject - lateinit var imageContentRenderer: ImageContentRenderer + @Inject lateinit var activeSessionHolder: ActiveSessionHolder + @Inject lateinit var dataSourceFactory: AttachmentProviderFactory + @Inject lateinit var imageContentRenderer: ImageContentRenderer private val viewModel: VectorAttachmentViewerViewModel by viewModel() private val errorFormatter by lazy(LazyThreadSafetyMode.NONE) { singletonEntryPoint().errorFormatter() } @@ -128,7 +123,7 @@ class VectorAttachmentViewerActivity : AttachmentViewerActivity(), AttachmentInt } } - val session = sessionHolder.getSafeActiveSession() ?: return Unit.also { finish() } + val session = activeSessionHolder.getSafeActiveSession() ?: return Unit.also { finish() } val room = args.roomId?.let { session.getRoom(it) } diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileActivity.kt b/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileActivity.kt index 2bb3e26384..526d676dee 100644 --- a/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileActivity.kt +++ b/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileActivity.kt @@ -69,8 +69,7 @@ class RoomProfileActivity : private val requireActiveMembershipViewModel: RequireActiveMembershipViewModel by viewModel() - @Inject - lateinit var roomDetailPendingActionStore: RoomDetailPendingActionStore + @Inject lateinit var roomDetailPendingActionStore: RoomDetailPendingActionStore override fun getBinding(): ActivitySimpleBinding { return ActivitySimpleBinding.inflate(layoutInflater) From cfca776d01954dc248f547b41bbd6b0400beb34c Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 23 Sep 2022 16:44:39 +0200 Subject: [PATCH 07/11] Create PermalinkUseCase to avoid injecting the Session in the View. --- .../app/features/home/HomeDrawerFragment.kt | 4 +- .../features/home/NewHomeDetailFragment.kt | 2 - .../home/room/detail/TimelineFragment.kt | 8 ++-- .../features/permalink/PermalinkUseCase.kt | 39 +++++++++++++++++++ .../roomdirectory/PublicRoomsFragment.kt | 6 +-- 5 files changed, 50 insertions(+), 9 deletions(-) create mode 100644 vector/src/main/java/im/vector/app/features/permalink/PermalinkUseCase.kt diff --git a/vector/src/main/java/im/vector/app/features/home/HomeDrawerFragment.kt b/vector/src/main/java/im/vector/app/features/home/HomeDrawerFragment.kt index 106fbc7281..b75d5c2e99 100644 --- a/vector/src/main/java/im/vector/app/features/home/HomeDrawerFragment.kt +++ b/vector/src/main/java/im/vector/app/features/home/HomeDrawerFragment.kt @@ -32,6 +32,7 @@ import im.vector.app.core.resources.BuildMeta import im.vector.app.core.utils.startSharePlainTextIntent import im.vector.app.databinding.FragmentHomeDrawerBinding import im.vector.app.features.analytics.plan.MobileScreen +import im.vector.app.features.permalink.PermalinkUseCase import im.vector.app.features.settings.VectorPreferences import im.vector.app.features.settings.VectorSettingsActivity import im.vector.app.features.spaces.SpaceListFragment @@ -49,6 +50,7 @@ class HomeDrawerFragment : @Inject lateinit var vectorPreferences: VectorPreferences @Inject lateinit var avatarRenderer: AvatarRenderer @Inject lateinit var buildMeta: BuildMeta + @Inject lateinit var permalinkUseCase: PermalinkUseCase private lateinit var sharedActionViewModel: HomeSharedActionViewModel @@ -101,7 +103,7 @@ class HomeDrawerFragment : } views.homeDrawerInviteFriendButton.debouncedClicks { - session.permalinkService().createPermalink(sharedActionViewModel.session.myUserId)?.let { permalink -> + permalinkUseCase.createPermalinkOfCurrentUser()?.let { permalink -> analyticsTracker.screen(MobileScreen(screenName = MobileScreen.ScreenName.InviteFriends)) val text = getString(R.string.invite_friends_text, permalink) diff --git a/vector/src/main/java/im/vector/app/features/home/NewHomeDetailFragment.kt b/vector/src/main/java/im/vector/app/features/home/NewHomeDetailFragment.kt index 66bb9ef876..5956646eab 100644 --- a/vector/src/main/java/im/vector/app/features/home/NewHomeDetailFragment.kt +++ b/vector/src/main/java/im/vector/app/features/home/NewHomeDetailFragment.kt @@ -61,7 +61,6 @@ import im.vector.app.features.workers.signout.ServerBackupStatusAction import im.vector.app.features.workers.signout.ServerBackupStatusViewModel import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach -import org.matrix.android.sdk.api.session.Session import org.matrix.android.sdk.api.session.crypto.model.DeviceInfo import org.matrix.android.sdk.api.session.room.model.RoomSummary import javax.inject.Inject @@ -80,7 +79,6 @@ class NewHomeDetailFragment : @Inject lateinit var callManager: WebRtcCallManager @Inject lateinit var vectorPreferences: VectorPreferences @Inject lateinit var spaceStateHandler: SpaceStateHandler - @Inject lateinit var session: Session @Inject lateinit var buildMeta: BuildMeta private val viewModel: HomeDetailViewModel by fragmentViewModel() diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/TimelineFragment.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/TimelineFragment.kt index ad8b2f28f3..b17cefa6b7 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/TimelineFragment.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/TimelineFragment.kt @@ -169,6 +169,7 @@ import im.vector.app.features.notifications.NotificationDrawerManager import im.vector.app.features.notifications.NotificationUtils import im.vector.app.features.permalink.NavigationInterceptor import im.vector.app.features.permalink.PermalinkHandler +import im.vector.app.features.permalink.PermalinkUseCase import im.vector.app.features.poll.PollMode import im.vector.app.features.reactions.EmojiReactionPickerActivity import im.vector.app.features.roomprofile.RoomProfileActivity @@ -247,6 +248,7 @@ class TimelineFragment : @Inject lateinit var clock: Clock @Inject lateinit var vectorFeatures: VectorFeatures @Inject lateinit var galleryOrCameraDialogHelperFactory: GalleryOrCameraDialogHelperFactory + @Inject lateinit var permalinkUseCase: PermalinkUseCase companion object { const val MAX_TYPING_MESSAGE_USERS_COUNT = 4 @@ -867,7 +869,7 @@ class TimelineFragment : } R.id.menu_thread_timeline_copy_link -> { getRootThreadEventId()?.let { - val permalink = session.permalinkService().createPermalink(timelineArgs.roomId, it) + val permalink = permalinkUseCase.createPermalink(timelineArgs.roomId, it) copyToClipboard(requireContext(), permalink, false) showSnackWithMessage(getString(R.string.copied_to_clipboard)) } @@ -879,7 +881,7 @@ class TimelineFragment : } R.id.menu_thread_timeline_share -> { getRootThreadEventId()?.let { - val permalink = session.permalinkService().createPermalink(timelineArgs.roomId, it) + val permalink = permalinkUseCase.createPermalink(timelineArgs.roomId, it) shareText(requireContext(), permalink) } true @@ -1788,7 +1790,7 @@ class TimelineFragment : } } is EventSharedAction.CopyPermalink -> { - val permalink = session.permalinkService().createPermalink(timelineArgs.roomId, action.eventId) + val permalink = permalinkUseCase.createPermalink(timelineArgs.roomId, action.eventId) copyToClipboard(requireContext(), permalink, false) showSnackWithMessage(getString(R.string.copied_to_clipboard)) } diff --git a/vector/src/main/java/im/vector/app/features/permalink/PermalinkUseCase.kt b/vector/src/main/java/im/vector/app/features/permalink/PermalinkUseCase.kt new file mode 100644 index 0000000000..d9c629d5d0 --- /dev/null +++ b/vector/src/main/java/im/vector/app/features/permalink/PermalinkUseCase.kt @@ -0,0 +1,39 @@ +/* + * Copyright 2022 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.app.features.permalink + +import org.matrix.android.sdk.api.session.Session +import javax.inject.Inject + +/** + * Contains synchronous methods to create permalinks from the Session. + */ +class PermalinkUseCase @Inject constructor( + private val session: Session, +) { + fun createPermalinkOfCurrentUser(): String? { + return createPermalink(session.myUserId) + } + + fun createPermalink(id: String): String? { + return session.permalinkService().createPermalink(id) + } + + fun createPermalink(roomId: String, eventId: String): String { + return session.permalinkService().createPermalink(roomId, eventId) + } +} diff --git a/vector/src/main/java/im/vector/app/features/roomdirectory/PublicRoomsFragment.kt b/vector/src/main/java/im/vector/app/features/roomdirectory/PublicRoomsFragment.kt index 7b5cc20910..89ee7434df 100644 --- a/vector/src/main/java/im/vector/app/features/roomdirectory/PublicRoomsFragment.kt +++ b/vector/src/main/java/im/vector/app/features/roomdirectory/PublicRoomsFragment.kt @@ -38,11 +38,11 @@ import im.vector.app.databinding.FragmentPublicRoomsBinding import im.vector.app.features.analytics.plan.ViewRoom import im.vector.app.features.permalink.NavigationInterceptor import im.vector.app.features.permalink.PermalinkHandler +import im.vector.app.features.permalink.PermalinkUseCase import kotlinx.coroutines.flow.debounce import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch -import org.matrix.android.sdk.api.session.Session import org.matrix.android.sdk.api.session.room.model.roomdirectory.PublicRoom import reactivecircus.flowbinding.appcompat.queryTextChanges import timber.log.Timber @@ -60,7 +60,7 @@ class PublicRoomsFragment : @Inject lateinit var publicRoomsController: PublicRoomsController @Inject lateinit var permalinkHandler: PermalinkHandler - @Inject lateinit var session: Session + @Inject lateinit var permalinkUseCase: PermalinkUseCase private val viewModel: RoomDirectoryViewModel by activityViewModel() private lateinit var sharedActionViewModel: RoomDirectorySharedActionViewModel @@ -128,7 +128,7 @@ class PublicRoomsFragment : override fun onUnknownRoomClicked(roomIdOrAlias: String) { viewLifecycleOwner.lifecycleScope.launch { - val permalink = session.permalinkService().createPermalink(roomIdOrAlias) + val permalink = permalinkUseCase.createPermalink(roomIdOrAlias) val isHandled = permalinkHandler .launch(requireActivity(), permalink, object : NavigationInterceptor { override fun navToRoom(roomId: String?, eventId: String?, deepLink: Uri?, rootThreadEventId: String?): Boolean { From 37f34dbdfd63434c9912e3dcc8f4ba2ea9de9391 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 26 Sep 2022 16:41:19 +0200 Subject: [PATCH 08/11] Expect the userId from the fakeSession --- .../vector/app/features/onboarding/OnboardingViewModelTest.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vector/src/test/java/im/vector/app/features/onboarding/OnboardingViewModelTest.kt b/vector/src/test/java/im/vector/app/features/onboarding/OnboardingViewModelTest.kt index 865f1c79d6..718f1ec7a9 100644 --- a/vector/src/test/java/im/vector/app/features/onboarding/OnboardingViewModelTest.kt +++ b/vector/src/test/java/im/vector/app/features/onboarding/OnboardingViewModelTest.kt @@ -687,7 +687,7 @@ class OnboardingViewModelTest { .assertStatesChanges( initialState, { copy(isLoading = true) }, - { copy(isLoading = false, personalizationState = A_HOMESERVER_CAPABILITIES.toPersonalisationState(A_MATRIX_ID, A_USERNAME)) } + { copy(isLoading = false, personalizationState = A_HOMESERVER_CAPABILITIES.toPersonalisationState("@fake:server.fake", A_USERNAME)) } ) .assertEvents(OnboardingViewEvents.OnAccountCreated) .finish() From 3bc3da1073b1c592755fa8af9365c470ca2ead33 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 4 Oct 2022 16:49:03 +0200 Subject: [PATCH 09/11] Rename `PermalinkUseCase` to `PermalinkFactory` --- .../im/vector/app/features/home/HomeDrawerFragment.kt | 6 +++--- .../app/features/home/room/detail/TimelineFragment.kt | 10 +++++----- .../{PermalinkUseCase.kt => PermalinkFactory.kt} | 2 +- .../app/features/roomdirectory/PublicRoomsFragment.kt | 6 +++--- 4 files changed, 12 insertions(+), 12 deletions(-) rename vector/src/main/java/im/vector/app/features/permalink/{PermalinkUseCase.kt => PermalinkFactory.kt} (96%) diff --git a/vector/src/main/java/im/vector/app/features/home/HomeDrawerFragment.kt b/vector/src/main/java/im/vector/app/features/home/HomeDrawerFragment.kt index b75d5c2e99..22d9709229 100644 --- a/vector/src/main/java/im/vector/app/features/home/HomeDrawerFragment.kt +++ b/vector/src/main/java/im/vector/app/features/home/HomeDrawerFragment.kt @@ -32,7 +32,7 @@ import im.vector.app.core.resources.BuildMeta import im.vector.app.core.utils.startSharePlainTextIntent import im.vector.app.databinding.FragmentHomeDrawerBinding import im.vector.app.features.analytics.plan.MobileScreen -import im.vector.app.features.permalink.PermalinkUseCase +import im.vector.app.features.permalink.PermalinkFactory import im.vector.app.features.settings.VectorPreferences import im.vector.app.features.settings.VectorSettingsActivity import im.vector.app.features.spaces.SpaceListFragment @@ -50,7 +50,7 @@ class HomeDrawerFragment : @Inject lateinit var vectorPreferences: VectorPreferences @Inject lateinit var avatarRenderer: AvatarRenderer @Inject lateinit var buildMeta: BuildMeta - @Inject lateinit var permalinkUseCase: PermalinkUseCase + @Inject lateinit var permalinkFactory: PermalinkFactory private lateinit var sharedActionViewModel: HomeSharedActionViewModel @@ -103,7 +103,7 @@ class HomeDrawerFragment : } views.homeDrawerInviteFriendButton.debouncedClicks { - permalinkUseCase.createPermalinkOfCurrentUser()?.let { permalink -> + permalinkFactory.createPermalinkOfCurrentUser()?.let { permalink -> analyticsTracker.screen(MobileScreen(screenName = MobileScreen.ScreenName.InviteFriends)) val text = getString(R.string.invite_friends_text, permalink) diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/TimelineFragment.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/TimelineFragment.kt index b17cefa6b7..59af00fac3 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/TimelineFragment.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/TimelineFragment.kt @@ -169,7 +169,7 @@ import im.vector.app.features.notifications.NotificationDrawerManager import im.vector.app.features.notifications.NotificationUtils import im.vector.app.features.permalink.NavigationInterceptor import im.vector.app.features.permalink.PermalinkHandler -import im.vector.app.features.permalink.PermalinkUseCase +import im.vector.app.features.permalink.PermalinkFactory import im.vector.app.features.poll.PollMode import im.vector.app.features.reactions.EmojiReactionPickerActivity import im.vector.app.features.roomprofile.RoomProfileActivity @@ -248,7 +248,7 @@ class TimelineFragment : @Inject lateinit var clock: Clock @Inject lateinit var vectorFeatures: VectorFeatures @Inject lateinit var galleryOrCameraDialogHelperFactory: GalleryOrCameraDialogHelperFactory - @Inject lateinit var permalinkUseCase: PermalinkUseCase + @Inject lateinit var permalinkFactory: PermalinkFactory companion object { const val MAX_TYPING_MESSAGE_USERS_COUNT = 4 @@ -869,7 +869,7 @@ class TimelineFragment : } R.id.menu_thread_timeline_copy_link -> { getRootThreadEventId()?.let { - val permalink = permalinkUseCase.createPermalink(timelineArgs.roomId, it) + val permalink = permalinkFactory.createPermalink(timelineArgs.roomId, it) copyToClipboard(requireContext(), permalink, false) showSnackWithMessage(getString(R.string.copied_to_clipboard)) } @@ -881,7 +881,7 @@ class TimelineFragment : } R.id.menu_thread_timeline_share -> { getRootThreadEventId()?.let { - val permalink = permalinkUseCase.createPermalink(timelineArgs.roomId, it) + val permalink = permalinkFactory.createPermalink(timelineArgs.roomId, it) shareText(requireContext(), permalink) } true @@ -1790,7 +1790,7 @@ class TimelineFragment : } } is EventSharedAction.CopyPermalink -> { - val permalink = permalinkUseCase.createPermalink(timelineArgs.roomId, action.eventId) + val permalink = permalinkFactory.createPermalink(timelineArgs.roomId, action.eventId) copyToClipboard(requireContext(), permalink, false) showSnackWithMessage(getString(R.string.copied_to_clipboard)) } diff --git a/vector/src/main/java/im/vector/app/features/permalink/PermalinkUseCase.kt b/vector/src/main/java/im/vector/app/features/permalink/PermalinkFactory.kt similarity index 96% rename from vector/src/main/java/im/vector/app/features/permalink/PermalinkUseCase.kt rename to vector/src/main/java/im/vector/app/features/permalink/PermalinkFactory.kt index d9c629d5d0..378ffc4569 100644 --- a/vector/src/main/java/im/vector/app/features/permalink/PermalinkUseCase.kt +++ b/vector/src/main/java/im/vector/app/features/permalink/PermalinkFactory.kt @@ -22,7 +22,7 @@ import javax.inject.Inject /** * Contains synchronous methods to create permalinks from the Session. */ -class PermalinkUseCase @Inject constructor( +class PermalinkFactory @Inject constructor( private val session: Session, ) { fun createPermalinkOfCurrentUser(): String? { diff --git a/vector/src/main/java/im/vector/app/features/roomdirectory/PublicRoomsFragment.kt b/vector/src/main/java/im/vector/app/features/roomdirectory/PublicRoomsFragment.kt index 89ee7434df..c7d799346b 100644 --- a/vector/src/main/java/im/vector/app/features/roomdirectory/PublicRoomsFragment.kt +++ b/vector/src/main/java/im/vector/app/features/roomdirectory/PublicRoomsFragment.kt @@ -38,7 +38,7 @@ import im.vector.app.databinding.FragmentPublicRoomsBinding import im.vector.app.features.analytics.plan.ViewRoom import im.vector.app.features.permalink.NavigationInterceptor import im.vector.app.features.permalink.PermalinkHandler -import im.vector.app.features.permalink.PermalinkUseCase +import im.vector.app.features.permalink.PermalinkFactory import kotlinx.coroutines.flow.debounce import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach @@ -60,7 +60,7 @@ class PublicRoomsFragment : @Inject lateinit var publicRoomsController: PublicRoomsController @Inject lateinit var permalinkHandler: PermalinkHandler - @Inject lateinit var permalinkUseCase: PermalinkUseCase + @Inject lateinit var permalinkFactory: PermalinkFactory private val viewModel: RoomDirectoryViewModel by activityViewModel() private lateinit var sharedActionViewModel: RoomDirectorySharedActionViewModel @@ -128,7 +128,7 @@ class PublicRoomsFragment : override fun onUnknownRoomClicked(roomIdOrAlias: String) { viewLifecycleOwner.lifecycleScope.launch { - val permalink = permalinkUseCase.createPermalink(roomIdOrAlias) + val permalink = permalinkFactory.createPermalink(roomIdOrAlias) val isHandled = permalinkHandler .launch(requireActivity(), permalink, object : NavigationInterceptor { override fun navToRoom(roomId: String?, eventId: String?, deepLink: Uri?, rootThreadEventId: String?): Boolean { From 822f06fef4c6ca24d5e7c5f4f62273529c119610 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 7 Oct 2022 14:57:06 +0200 Subject: [PATCH 10/11] Fix ktlint issue --- .../im/vector/app/features/home/room/detail/TimelineFragment.kt | 2 +- .../im/vector/app/features/roomdirectory/PublicRoomsFragment.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/TimelineFragment.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/TimelineFragment.kt index 59af00fac3..9d50cdb070 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/TimelineFragment.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/TimelineFragment.kt @@ -168,8 +168,8 @@ import im.vector.app.features.media.VideoContentRenderer import im.vector.app.features.notifications.NotificationDrawerManager import im.vector.app.features.notifications.NotificationUtils import im.vector.app.features.permalink.NavigationInterceptor -import im.vector.app.features.permalink.PermalinkHandler import im.vector.app.features.permalink.PermalinkFactory +import im.vector.app.features.permalink.PermalinkHandler import im.vector.app.features.poll.PollMode import im.vector.app.features.reactions.EmojiReactionPickerActivity import im.vector.app.features.roomprofile.RoomProfileActivity diff --git a/vector/src/main/java/im/vector/app/features/roomdirectory/PublicRoomsFragment.kt b/vector/src/main/java/im/vector/app/features/roomdirectory/PublicRoomsFragment.kt index c7d799346b..e541e7f879 100644 --- a/vector/src/main/java/im/vector/app/features/roomdirectory/PublicRoomsFragment.kt +++ b/vector/src/main/java/im/vector/app/features/roomdirectory/PublicRoomsFragment.kt @@ -37,8 +37,8 @@ import im.vector.app.core.utils.toast import im.vector.app.databinding.FragmentPublicRoomsBinding import im.vector.app.features.analytics.plan.ViewRoom import im.vector.app.features.permalink.NavigationInterceptor -import im.vector.app.features.permalink.PermalinkHandler import im.vector.app.features.permalink.PermalinkFactory +import im.vector.app.features.permalink.PermalinkHandler import kotlinx.coroutines.flow.debounce import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach From fa1d2bd8ab9cef1015cd83afbb2b42c246f15e0c Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 17 Oct 2022 15:12:41 +0200 Subject: [PATCH 11/11] Fix compilation issue after rebase. --- .../im/vector/app/features/settings/VectorSettingsActivity.kt | 2 -- 1 file changed, 2 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/settings/VectorSettingsActivity.kt b/vector/src/main/java/im/vector/app/features/settings/VectorSettingsActivity.kt index dcf8e7b3ae..4a9db49c67 100755 --- a/vector/src/main/java/im/vector/app/features/settings/VectorSettingsActivity.kt +++ b/vector/src/main/java/im/vector/app/features/settings/VectorSettingsActivity.kt @@ -63,8 +63,6 @@ class VectorSettingsActivity : VectorBaseActivity @Inject lateinit var session: Session - @Inject lateinit var vectorPreferences: VectorPreferences - override fun initUiAndData() { setupToolbar(views.settingsToolbar) .allowBack()