From fe63647716308b43a93731c0f6625803d07d36ec Mon Sep 17 00:00:00 2001 From: Taras <tarassmakula@gmail.com> Date: Fri, 2 Sep 2022 19:04:35 +0300 Subject: [PATCH] Add Element logout restart hack --- app/src/main/java/org/futo/circles/MainActivity.kt | 13 ++++++++++++- .../circles/feature/settings/SettingsFragment.kt | 4 ++-- .../futo/circles/provider/MatrixSessionProvider.kt | 4 ++++ .../main/res/navigation/nav_graph_start_host.xml | 10 +--------- 4 files changed, 19 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/org/futo/circles/MainActivity.kt b/app/src/main/java/org/futo/circles/MainActivity.kt index 4e0ffb5b1..414eb7ee8 100644 --- a/app/src/main/java/org/futo/circles/MainActivity.kt +++ b/app/src/main/java/org/futo/circles/MainActivity.kt @@ -1,6 +1,17 @@ package org.futo.circles +import android.content.Intent import org.futo.circles.core.BaseActivity +import org.futo.circles.provider.MatrixSessionProvider -class MainActivity : BaseActivity(R.layout.activity_main) \ No newline at end of file +class MainActivity : BaseActivity(R.layout.activity_main) { + + // Special action to clear cache and/or clear credentials (Element workaround to clear database) + fun restartForLogout() { + MatrixSessionProvider.clearSession() + val intent = Intent(this, MainActivity::class.java) + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) + this.startActivity(intent) + } +} \ No newline at end of file diff --git a/app/src/main/java/org/futo/circles/feature/settings/SettingsFragment.kt b/app/src/main/java/org/futo/circles/feature/settings/SettingsFragment.kt index baf1404aa..531b837b7 100644 --- a/app/src/main/java/org/futo/circles/feature/settings/SettingsFragment.kt +++ b/app/src/main/java/org/futo/circles/feature/settings/SettingsFragment.kt @@ -8,11 +8,11 @@ import androidx.fragment.app.Fragment import androidx.navigation.fragment.findNavController import by.kirich1409.viewbindingdelegate.viewBinding import com.amulyakhare.textdrawable.TextDrawable +import org.futo.circles.MainActivity import org.futo.circles.R import org.futo.circles.core.matrix.pass_phrase.LoadingDialog import org.futo.circles.databinding.FragmentSettingsBinding import org.futo.circles.extensions.* -import org.futo.circles.feature.bottom_navigation.BottomNavigationFragmentDirections import org.futo.circles.feature.bottom_navigation.SystemNoticesCountSharedViewModel import org.futo.circles.feature.settings.confirm_auth.ConfirmAuthDialog import org.koin.androidx.viewmodel.ext.android.sharedViewModel @@ -78,7 +78,7 @@ class SettingsFragment : Fragment(R.layout.fragment_settings) { } private fun navigateToLogin() { - findParentNavController()?.navigate(BottomNavigationFragmentDirections.toLogInFragment()) + (activity as? MainActivity)?.restartForLogout() } private fun navigateToActiveSessions() { diff --git a/app/src/main/java/org/futo/circles/provider/MatrixSessionProvider.kt b/app/src/main/java/org/futo/circles/provider/MatrixSessionProvider.kt index a2904882a..9ec30ad9d 100644 --- a/app/src/main/java/org/futo/circles/provider/MatrixSessionProvider.kt +++ b/app/src/main/java/org/futo/circles/provider/MatrixSessionProvider.kt @@ -28,6 +28,10 @@ object MatrixSessionProvider { lastSession?.let { startSession(it) } } + fun clearSession() { + currentSession = null + } + private fun startSession(session: Session, listener: Session.Listener? = null) { listener?.let { session.addListener(it) } currentSession = session.apply { open(); syncService().startSync(true) } diff --git a/app/src/main/res/navigation/nav_graph_start_host.xml b/app/src/main/res/navigation/nav_graph_start_host.xml index 5949da062..e26c97588 100644 --- a/app/src/main/res/navigation/nav_graph_start_host.xml +++ b/app/src/main/res/navigation/nav_graph_start_host.xml @@ -52,15 +52,7 @@ android:id="@+id/bottomNavigationFragment" android:name="org.futo.circles.feature.bottom_navigation.BottomNavigationFragment" android:label="Bottom Navigation" - tools:layout="@layout/fragment_bottom_navigation"> - - <action - android:id="@+id/to_logInFragment" - app:destination="@id/logInFragment" - app:popUpTo="@id/bottomNavigationFragment" - app:popUpToInclusive="true" /> - - </fragment> + tools:layout="@layout/fragment_bottom_navigation"/> <fragment android:id="@+id/setupProfileFragment" android:name="org.futo.circles.feature.sign_up.setup_profile.SetupProfileFragment" -- GitLab