From b1fc97714b6ab4fe628c9bf733890a71a7edc4df Mon Sep 17 00:00:00 2001 From: Infi Date: Sun, 17 Sep 2023 00:17:36 +0200 Subject: [PATCH] fix: settings logout should have been impl-d long time ago Signed-off-by: Infi --- .../revolt/screens/chat/views/HomeScreen.kt | 77 +++++++++---------- .../revolt/screens/settings/SettingsScreen.kt | 38 ++++++--- 2 files changed, 66 insertions(+), 49 deletions(-) diff --git a/app/src/main/java/chat/revolt/screens/chat/views/HomeScreen.kt b/app/src/main/java/chat/revolt/screens/chat/views/HomeScreen.kt index f95d2b27..4f83839a 100644 --- a/app/src/main/java/chat/revolt/screens/chat/views/HomeScreen.kt +++ b/app/src/main/java/chat/revolt/screens/chat/views/HomeScreen.kt @@ -1,58 +1,55 @@ package chat.revolt.screens.chat.views +import androidx.compose.animation.core.LinearEasing +import androidx.compose.animation.core.RepeatMode +import androidx.compose.animation.core.animateFloat +import androidx.compose.animation.core.infiniteRepeatable +import androidx.compose.animation.core.rememberInfiniteTransition +import androidx.compose.animation.core.tween +import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.safeDrawingPadding -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Close +import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.testTag +import androidx.compose.ui.draw.rotate import androidx.compose.ui.res.stringResource -import androidx.hilt.navigation.compose.hiltViewModel -import androidx.lifecycle.ViewModel +import androidx.compose.ui.unit.sp import androidx.navigation.NavController import chat.revolt.R -import chat.revolt.api.RevoltAPI -import chat.revolt.api.settings.GlobalState import chat.revolt.components.generic.PageHeader -import chat.revolt.components.screens.home.LinkOnHome -import chat.revolt.persistence.KVStorage -import dagger.hilt.android.lifecycle.HiltViewModel -import kotlinx.coroutines.runBlocking -import javax.inject.Inject - -@HiltViewModel -class HomeScreenViewModel @Inject constructor( - private val kvStorage: KVStorage -) : ViewModel() { - fun logout() { - runBlocking { - kvStorage.remove("sessionToken") - GlobalState.reset() - RevoltAPI.logout() - } - } -} @Composable -fun HomeScreen(navController: NavController, viewModel: HomeScreenViewModel = hiltViewModel()) { +fun HomeScreen(navController: NavController) { + val catTransition = rememberInfiniteTransition(label = "cat") + val catRotation by catTransition.animateFloat( + initialValue = 0f, + targetValue = 360f, + animationSpec = infiniteRepeatable( + animation = tween(10000, easing = LinearEasing), + repeatMode = RepeatMode.Restart + ), + label = "catRotation" + ) + Column( modifier = Modifier.safeDrawingPadding() ) { PageHeader(text = stringResource(id = R.string.home)) - - LinkOnHome( - heading = stringResource(id = R.string.logout), - icon = Icons.Default.Close, - onClick = { - viewModel.logout() - navController.navigate("login/greeting") { - popUpTo("chat") { - inclusive = true - } - } - }, - modifier = Modifier.testTag("logout_from_home") - ) + Box( + modifier = Modifier + .weight(1f) + .fillMaxSize(), + contentAlignment = Alignment.Center, + ) { + Text( + text = "🐈", + fontSize = 100.sp, + modifier = Modifier.rotate(catRotation), + ) + } } } \ No newline at end of file diff --git a/app/src/main/java/chat/revolt/screens/settings/SettingsScreen.kt b/app/src/main/java/chat/revolt/screens/settings/SettingsScreen.kt index 05f8beeb..3803a1c8 100644 --- a/app/src/main/java/chat/revolt/screens/settings/SettingsScreen.kt +++ b/app/src/main/java/chat/revolt/screens/settings/SettingsScreen.kt @@ -2,7 +2,6 @@ package chat.revolt.screens.settings import android.content.Intent import android.net.Uri -import android.widget.Toast import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding @@ -26,17 +25,39 @@ import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp +import androidx.hilt.navigation.compose.hiltViewModel +import androidx.lifecycle.ViewModel import androidx.navigation.NavController import chat.revolt.BuildConfig import chat.revolt.R import chat.revolt.activities.InviteActivity +import chat.revolt.api.RevoltAPI +import chat.revolt.api.settings.GlobalState import chat.revolt.components.generic.PageHeader import chat.revolt.components.generic.SheetClickable import chat.revolt.components.screens.settings.SelfUserOverview +import chat.revolt.persistence.KVStorage +import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.runBlocking +import javax.inject.Inject + +@HiltViewModel +class SettingsScreenViewModel @Inject constructor( + private val kvStorage: KVStorage +) : ViewModel() { + fun logout() { + runBlocking { + kvStorage.remove("sessionToken") + GlobalState.reset() + RevoltAPI.logout() + } + } +} @Composable fun SettingsScreen( - navController: NavController + navController: NavController, + viewModel: SettingsScreenViewModel = hiltViewModel() ) { val context = LocalContext.current @@ -233,13 +254,12 @@ fun SettingsScreen( dangerous = true, modifier = Modifier.testTag("settings_view_logout") ) { - Toast - .makeText( - navController.context, - "Not implemented yet", - Toast.LENGTH_SHORT - ) - .show() + viewModel.logout() + navController.navigate("login/greeting") { + popUpTo("chat") { + inclusive = true + } + } } } }