diff --git a/app/src/main/java/com/iamnaran/firefly/di/SharedPrefModule.kt b/app/src/main/java/com/iamnaran/firefly/di/SharedPrefModule.kt index 138a47e..66c362a 100644 --- a/app/src/main/java/com/iamnaran/firefly/di/SharedPrefModule.kt +++ b/app/src/main/java/com/iamnaran/firefly/di/SharedPrefModule.kt @@ -39,23 +39,28 @@ object SharedPrefModule { @ApplicationContext context: Context, @SharedPrefInfoQualifier fileName: String ): SharedPreferences { - val sharedPreferences: SharedPreferences = try { - val masterKey: MasterKey = MasterKey.Builder(context) + try { + val masterKeyAlias = MasterKey.Builder(context) .setKeyScheme(MasterKey.KeyScheme.AES256_GCM) .build() - EncryptedSharedPreferences.create( + + return EncryptedSharedPreferences.create( context, fileName, - masterKey, + masterKeyAlias, EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV, EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM ) } catch (e: GeneralSecurityException) { - context.getSharedPreferences(fileName, Context.MODE_PRIVATE) + // Handle cryptographic exception + e.printStackTrace() } catch (e: IOException) { - context.getSharedPreferences(fileName, Context.MODE_PRIVATE) + // Handle IO exception + e.printStackTrace() } - return sharedPreferences + + // If an exception occurs, fallback to using regular SharedPreferences + return context.getSharedPreferences(fileName, Context.MODE_PRIVATE) } @Provides diff --git a/app/src/main/java/com/iamnaran/firefly/ui/appcomponent/common/TextInput.kt b/app/src/main/java/com/iamnaran/firefly/ui/appcomponent/common/TextInput.kt index 642c1a4..a3fe145 100644 --- a/app/src/main/java/com/iamnaran/firefly/ui/appcomponent/common/TextInput.kt +++ b/app/src/main/java/com/iamnaran/firefly/ui/appcomponent/common/TextInput.kt @@ -21,7 +21,7 @@ import androidx.compose.ui.text.input.KeyboardCapitalization import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.text.input.PasswordVisualTransformation import androidx.compose.ui.text.input.VisualTransformation -import com.iamnaran.firefly.ui.appcomponent.AppIcons +import com.iamnaran.firefly.ui.theme.AppIcons import com.iamnaran.firefly.ui.theme.Shapes @Composable diff --git a/app/src/main/java/com/iamnaran/firefly/ui/auth/login/LoginScreen.kt b/app/src/main/java/com/iamnaran/firefly/ui/auth/login/LoginScreen.kt index 16a761b..6773a4a 100644 --- a/app/src/main/java/com/iamnaran/firefly/ui/auth/login/LoginScreen.kt +++ b/app/src/main/java/com/iamnaran/firefly/ui/auth/login/LoginScreen.kt @@ -39,7 +39,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import com.iamnaran.firefly.R -import com.iamnaran.firefly.ui.appcomponent.AppIcons +import com.iamnaran.firefly.ui.theme.AppIcons import com.iamnaran.firefly.ui.appcomponent.common.EmailInput import com.iamnaran.firefly.ui.appcomponent.common.PasswordInput import com.iamnaran.firefly.ui.theme.FireflyComposeTheme diff --git a/app/src/main/java/com/iamnaran/firefly/ui/auth/login/LoginViewModel.kt b/app/src/main/java/com/iamnaran/firefly/ui/auth/login/LoginViewModel.kt index e348780..956bd66 100644 --- a/app/src/main/java/com/iamnaran/firefly/ui/auth/login/LoginViewModel.kt +++ b/app/src/main/java/com/iamnaran/firefly/ui/auth/login/LoginViewModel.kt @@ -63,91 +63,68 @@ class LoginViewModel @Inject constructor( ) ) ) - viewModelScope.launch { - postServerLoginUseCase( - _loginState.value.email, - _loginState.value.password - ) - .onStart { + doLoginWork() - } - .onCompletion { + } - } - .collectLatest { resource -> - when (resource) { - is Resource.Success -> { - if (resource.data != null) { - AppLog.showLog("----------LOGIN SUCCESS----------") - preferenceHelper.saveLoggedInUserDetails( - resource.data.id.toString(), - resource.data.token, - true, - ) - setLoggedInUserUseCase(resource.data) - _loginState.value = _loginState.value.copy( - isLoginSuccessful = true, - isLoading = false - ) + } + } - } - } + private fun doLoginWork() { - is Resource.Loading -> { - _loginState.value = _loginState.value.copy( - isLoading = true - ) - } + viewModelScope.launch { + postServerLoginUseCase( + _loginState.value.email, + _loginState.value.password + ) + .onStart { - else -> { + } + .onCompletion { + + } + .collectLatest { resource -> + when (resource) { + is Resource.Success -> { + if (resource.data != null) { + AppLog.showLog("----------LOGIN SUCCESS----------") + preferenceHelper.saveLoggedInUserDetails( + resource.data.id.toString(), + resource.data.token, + true, + ) + setLoggedInUserUseCase(resource.data) _loginState.value = _loginState.value.copy( - isLoginSuccessful = false, + isLoginSuccessful = true, isLoading = false ) - _loginState.value = _loginState.value.copy( - loginErrorState = LoginErrorState( - serverErrorState = ErrorState( - true, - serverErrorMsg = resource.message.toString() - ) + } + } + + is Resource.Loading -> { + _loginState.value = _loginState.value.copy( + isLoading = true + ) + } + + else -> { + _loginState.value = _loginState.value.copy( + isLoginSuccessful = false, + isLoading = false + ) + + _loginState.value = _loginState.value.copy( + loginErrorState = LoginErrorState( + serverErrorState = ErrorState( + true, + serverErrorMsg = resource.message.toString() ) ) - } + ) } } } - - } - } - } - - -// private fun validateInputs(): Boolean { -// val emailOrMobileString = _emailState.value.trim() -// val passwordString = _passwordState.value.trim() -// return when { -// -// // Email/Mobile empty -// emailOrMobileString.isEmpty() -> { -// -// false -// } -// -// //Password Empty -// passwordString.isEmpty() -> { -// -// false -// } -// -// // No errors -// else -> { -// // Set default error state -// true -// } -// } -// } - } \ No newline at end of file diff --git a/app/src/main/java/com/iamnaran/firefly/ui/auth/signup/SignUpScreen.kt b/app/src/main/java/com/iamnaran/firefly/ui/auth/signup/SignUpScreen.kt index 4c0bea8..01f9ebe 100644 --- a/app/src/main/java/com/iamnaran/firefly/ui/auth/signup/SignUpScreen.kt +++ b/app/src/main/java/com/iamnaran/firefly/ui/auth/signup/SignUpScreen.kt @@ -34,7 +34,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import com.iamnaran.firefly.R -import com.iamnaran.firefly.ui.appcomponent.AppIcons +import com.iamnaran.firefly.ui.theme.AppIcons import com.iamnaran.firefly.ui.appcomponent.common.EmailInput import com.iamnaran.firefly.ui.appcomponent.common.PasswordInput import com.iamnaran.firefly.ui.theme.FireflyComposeTheme diff --git a/app/src/main/java/com/iamnaran/firefly/ui/main/MainActivity.kt b/app/src/main/java/com/iamnaran/firefly/ui/main/MainActivity.kt index 8b4a859..577f141 100644 --- a/app/src/main/java/com/iamnaran/firefly/ui/main/MainActivity.kt +++ b/app/src/main/java/com/iamnaran/firefly/ui/main/MainActivity.kt @@ -5,27 +5,31 @@ import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.viewModels import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding +import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Scaffold import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHostState +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.material3.rememberTopAppBarState import androidx.compose.runtime.Composable -import androidx.compose.runtime.MutableState import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Modifier +import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen -import androidx.navigation.NavHostController import androidx.navigation.compose.currentBackStackEntryAsState import androidx.navigation.compose.rememberNavController -import com.iamnaran.firefly.ui.auth.login.LoginScreen import com.iamnaran.firefly.ui.navigation.AppScreen import com.iamnaran.firefly.ui.navigation.bottomappbar.BottomBar import com.iamnaran.firefly.ui.navigation.multiplebackstack.RootMultipleBackStackNavHost +import com.iamnaran.firefly.ui.navigation.topappbar.AppTopBar import com.iamnaran.firefly.ui.theme.FireflyComposeTheme import com.iamnaran.firefly.utils.AppLog import dagger.hilt.android.AndroidEntryPoint @@ -34,9 +38,7 @@ import dagger.hilt.android.AndroidEntryPoint class MainActivity : ComponentActivity() { private val TAG: String = AppLog.tagFor(this.javaClass) - private lateinit var navController: NavHostController private val mainViewModel: MainViewModel by viewModels() - private var isAuthenticated = false override fun onCreate(savedInstanceState: Bundle?) { @@ -45,42 +47,7 @@ class MainActivity : ComponentActivity() { isAuthenticated = mainViewModel.isUserAuthenticated() setContent { FireflyComposeTheme { - navController = rememberNavController() - - val navBackStackEntry by navController.currentBackStackEntryAsState() - val currentRoute = navBackStackEntry?.destination?.route - - val scope = rememberCoroutineScope() - val snackbarHostState = remember { SnackbarHostState() } - - val bottomBarState = rememberSaveable { (mutableStateOf(true)) } - val topBarState = rememberSaveable { (mutableStateOf(true)) } - - // Control TopBar and BottomBar - when (navBackStackEntry?.destination?.route) { - AppScreen.Main.Home.route -> { - bottomBarState.value = true - topBarState.value = true - } - - AppScreen.Main.Profile.route -> { - bottomBarState.value = true - topBarState.value = true - } - - AppScreen.Main.Notification.route -> { - bottomBarState.value = true - topBarState.value = true - } - - else -> { - bottomBarState.value = false - topBarState.value = false - } - } - - MainScreenContent(snackbarHostState,bottomBarState,navController,isAuthenticated) - + MainScreenContent(isAuthenticated) } } } @@ -88,18 +55,63 @@ class MainActivity : ComponentActivity() { } +@OptIn(ExperimentalMaterial3Api::class) @Composable private fun MainScreenContent( - snackbarHostState: SnackbarHostState, - bottomBarState: MutableState, - navController: NavHostController, isAuthenticated: Boolean ) { + val topAppbarTitle = remember { mutableStateOf("") } + val topAppBarState = rememberTopAppBarState() + val barScrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior(state = topAppBarState) + val navController = rememberNavController() + val navBackStackEntry by navController.currentBackStackEntryAsState() + val currentRoute = navBackStackEntry?.destination?.route + val scope = rememberCoroutineScope() + val snackbarHostState = remember { SnackbarHostState() } + val bottomBarState = rememberSaveable { (mutableStateOf(true)) } + val topBarState = rememberSaveable { (mutableStateOf(true)) } + + // Control TopBar and BottomBar + when (navBackStackEntry?.destination?.route) { + AppScreen.Main.Home.route -> { + bottomBarState.value = true + topBarState.value = true + topAppbarTitle.value = stringResource(AppScreen.Main.Home.title!!) + + } + + AppScreen.Main.Profile.route -> { + bottomBarState.value = true + topBarState.value = true + topAppbarTitle.value = stringResource(AppScreen.Main.Profile.title!!) + + } + + AppScreen.Main.Notification.route -> { + bottomBarState.value = true + topBarState.value = true + topAppbarTitle.value = stringResource(AppScreen.Main.Notification.title!!) + + } + + else -> { + bottomBarState.value = false + topBarState.value = false + } + } Scaffold( + modifier = Modifier + .fillMaxSize() + .nestedScroll(barScrollBehavior.nestedScrollConnection), snackbarHost = { SnackbarHost(hostState = snackbarHostState) }, + topBar = { + if (topBarState.value) { + AppTopBar(topAppbarTitle.value, barScrollBehavior) + } + }, bottomBar = { if (bottomBarState.value) { BottomBar(navController = navController) @@ -129,19 +141,13 @@ private fun MainScreenContent( } - - @Preview(showBackground = true) @Composable fun MainActivityPreview() { FireflyComposeTheme { - LoginScreen( - navigateToHome = {}, - navigateToSignUp = {}) + MainScreenContent(true) } } - - //https://gist.github.com/stevdza-san/5743a32dc1ec2d8eaf62c29d9bab1c43 \ No newline at end of file diff --git a/app/src/main/java/com/iamnaran/firefly/ui/main/home/HomeScreen.kt b/app/src/main/java/com/iamnaran/firefly/ui/main/home/HomeScreen.kt index ac42f78..26f1875 100644 --- a/app/src/main/java/com/iamnaran/firefly/ui/main/home/HomeScreen.kt +++ b/app/src/main/java/com/iamnaran/firefly/ui/main/home/HomeScreen.kt @@ -1,9 +1,12 @@ package com.iamnaran.firefly.ui.main.home import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import com.iamnaran.firefly.ui.main.home.components.ProductLazyList import com.iamnaran.firefly.utils.AppLog diff --git a/app/src/main/java/com/iamnaran/firefly/ui/main/home/components/ProductItem.kt b/app/src/main/java/com/iamnaran/firefly/ui/main/home/components/ProductItem.kt index fb6c944..4d51ac6 100644 --- a/app/src/main/java/com/iamnaran/firefly/ui/main/home/components/ProductItem.kt +++ b/app/src/main/java/com/iamnaran/firefly/ui/main/home/components/ProductItem.kt @@ -21,15 +21,13 @@ import com.iamnaran.firefly.data.local.entities.ProductEntity import com.iamnaran.firefly.ui.theme.FireflyComposeTheme import com.iamnaran.firefly.ui.theme.appTypography import com.iamnaran.firefly.ui.theme.dimens -import com.iamnaran.firefly.utils.effects.bounceClick -import com.iamnaran.firefly.utils.effects.customClick @Composable fun ProductItem(productEntity: ProductEntity, onProductItemClick: (String) -> Unit) { Card( modifier = Modifier - .padding(MaterialTheme.dimens.medium) + .padding(MaterialTheme.dimens.regular) .shadow( elevation = 5.dp, spotColor = MaterialTheme.colorScheme.secondaryContainer, diff --git a/app/src/main/java/com/iamnaran/firefly/ui/main/notification/NotificationScreen.kt b/app/src/main/java/com/iamnaran/firefly/ui/main/notification/NotificationScreen.kt index 6a00d07..d2e7c0d 100644 --- a/app/src/main/java/com/iamnaran/firefly/ui/main/notification/NotificationScreen.kt +++ b/app/src/main/java/com/iamnaran/firefly/ui/main/notification/NotificationScreen.kt @@ -25,7 +25,7 @@ fun NotificationScreen( Column( Modifier - .padding(start = 8.dp, end = 8.dp) + .padding(start = 4.dp, end = 4.dp) .fillMaxSize(), verticalArrangement = Arrangement.SpaceEvenly, horizontalAlignment = Alignment.CenterHorizontally diff --git a/app/src/main/java/com/iamnaran/firefly/ui/main/notification/recipe/RecipeHeroCard.kt b/app/src/main/java/com/iamnaran/firefly/ui/main/notification/recipe/RecipeHeroCard.kt index fa3741a..eeab307 100644 --- a/app/src/main/java/com/iamnaran/firefly/ui/main/notification/recipe/RecipeHeroCard.kt +++ b/app/src/main/java/com/iamnaran/firefly/ui/main/notification/recipe/RecipeHeroCard.kt @@ -48,7 +48,7 @@ fun RecipeHeroCard( Column( Modifier - .padding(start = 10.dp, top = 30.dp, end = 10.dp, bottom = 30.dp) + .padding(start = 8.dp, top = 8.dp, end = 8.dp, bottom = 8.dp) .fillMaxSize(), verticalArrangement = Arrangement.SpaceEvenly, horizontalAlignment = Alignment.CenterHorizontally diff --git a/app/src/main/java/com/iamnaran/firefly/ui/main/profile/component/ProfileCard.kt b/app/src/main/java/com/iamnaran/firefly/ui/main/profile/component/ProfileCard.kt index 09a3431..61a64ca 100644 --- a/app/src/main/java/com/iamnaran/firefly/ui/main/profile/component/ProfileCard.kt +++ b/app/src/main/java/com/iamnaran/firefly/ui/main/profile/component/ProfileCard.kt @@ -17,7 +17,6 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip -import androidx.compose.ui.draw.shadow import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp diff --git a/app/src/main/java/com/iamnaran/firefly/ui/navigation/AppRouter.kt b/app/src/main/java/com/iamnaran/firefly/ui/navigation/AppRouter.kt index f81c03a..2d1706f 100644 --- a/app/src/main/java/com/iamnaran/firefly/ui/navigation/AppRouter.kt +++ b/app/src/main/java/com/iamnaran/firefly/ui/navigation/AppRouter.kt @@ -5,7 +5,7 @@ import androidx.navigation.NamedNavArgument import androidx.navigation.NavType import androidx.navigation.navArgument import com.iamnaran.firefly.R -import com.iamnaran.firefly.ui.appcomponent.AppIcons +import com.iamnaran.firefly.ui.theme.AppIcons private object Routes { diff --git a/app/src/main/java/com/iamnaran/firefly/ui/navigation/topappbar/AppTopBar.kt b/app/src/main/java/com/iamnaran/firefly/ui/navigation/topappbar/AppTopBar.kt new file mode 100644 index 0000000..757f2d6 --- /dev/null +++ b/app/src/main/java/com/iamnaran/firefly/ui/navigation/topappbar/AppTopBar.kt @@ -0,0 +1,49 @@ +package com.iamnaran.firefly.ui.navigation.topappbar + +import androidx.compose.foundation.layout.Row +import androidx.compose.material3.CenterAlignedTopAppBar +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.material3.TopAppBarScrollBehavior +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import com.iamnaran.firefly.ui.theme.AppIcons + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun AppTopBar(toolbarTitle: String, barScrollBehavior: TopAppBarScrollBehavior) { + + + CenterAlignedTopAppBar( + scrollBehavior = barScrollBehavior, + title = { + Row( + verticalAlignment = Alignment.CenterVertically + ) { + Text(toolbarTitle, style = MaterialTheme.typography.titleMedium) + } + }, + navigationIcon = { + IconButton({}) { + Icon( + imageVector = AppIcons.Menu, + contentDescription = "menu items" + ) + } + }, + actions = { + IconButton(onClick = {}) { + Icon( + imageVector = AppIcons.Camera, + contentDescription = "video call", + ) + } + + }, + colors = TopAppBarDefaults.topAppBarColors(MaterialTheme.colorScheme.onSecondary), + ) +} \ No newline at end of file diff --git a/app/src/main/java/com/iamnaran/firefly/ui/navigation/topappbar/ChildAppTopBar.kt b/app/src/main/java/com/iamnaran/firefly/ui/navigation/topappbar/ChildAppTopBar.kt new file mode 100644 index 0000000..cfbac63 --- /dev/null +++ b/app/src/main/java/com/iamnaran/firefly/ui/navigation/topappbar/ChildAppTopBar.kt @@ -0,0 +1,39 @@ +package com.iamnaran.firefly.ui.navigation.topappbar + +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.material3.TopAppBarScrollBehavior +import androidx.compose.runtime.Composable +import androidx.navigation.NavHostController +import com.iamnaran.firefly.ui.theme.AppIcons + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun ChildAppTopBar( + toolbarTitle: String, + navController: NavHostController, + barScrollBehavior: TopAppBarScrollBehavior +) { + TopAppBar( + scrollBehavior = barScrollBehavior, + title = { + Text(toolbarTitle, style = MaterialTheme.typography.titleMedium) + }, + navigationIcon = { + IconButton(onClick = { + navController.navigateUp() + }) { + Icon( + imageVector = AppIcons.BackArrow, + contentDescription = AppIcons.BackArrow.name + ) + } + }, + colors = TopAppBarDefaults.topAppBarColors(MaterialTheme.colorScheme.onSecondary), + ) +} \ No newline at end of file diff --git a/app/src/main/java/com/iamnaran/firefly/ui/appcomponent/AppIcons.kt b/app/src/main/java/com/iamnaran/firefly/ui/theme/AppIcons.kt similarity index 64% rename from app/src/main/java/com/iamnaran/firefly/ui/appcomponent/AppIcons.kt rename to app/src/main/java/com/iamnaran/firefly/ui/theme/AppIcons.kt index d0766f8..7948913 100644 --- a/app/src/main/java/com/iamnaran/firefly/ui/appcomponent/AppIcons.kt +++ b/app/src/main/java/com/iamnaran/firefly/ui/theme/AppIcons.kt @@ -1,15 +1,21 @@ -package com.iamnaran.firefly.ui.appcomponent +package com.iamnaran.firefly.ui.theme import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Add import androidx.compose.material.icons.filled.Email +import androidx.compose.material.icons.filled.Explore import androidx.compose.material.icons.filled.Home import androidx.compose.material.icons.filled.Lock import androidx.compose.material.icons.filled.Notifications import androidx.compose.material.icons.filled.Person import androidx.compose.material.icons.filled.Visibility import androidx.compose.material.icons.filled.VisibilityOff +import androidx.compose.material.icons.outlined.ArrowBack +import androidx.compose.material.icons.outlined.ArrowBackIosNew +import androidx.compose.material.icons.outlined.CameraAlt +import androidx.compose.material.icons.outlined.Explore import androidx.compose.material.icons.outlined.Home +import androidx.compose.material.icons.outlined.Menu import androidx.compose.material.icons.outlined.Notifications import androidx.compose.material.icons.outlined.Person @@ -27,4 +33,13 @@ object AppIcons { val NotificationFilled = Icons.Filled.Notifications val NotificationOutlined = Icons.Outlined.Notifications + val ExploredFilled = Icons.Filled.Explore + val ExploredOutlined = Icons.Outlined.Explore + + val Camera = Icons.Outlined.CameraAlt + val Menu = Icons.Outlined.Menu + + val BackArrow = Icons.Outlined.ArrowBack + val BackArrowIos = Icons.Outlined.ArrowBackIosNew + } \ No newline at end of file diff --git a/app/src/main/java/com/iamnaran/firefly/ui/theme/Dimens.kt b/app/src/main/java/com/iamnaran/firefly/ui/theme/Dimens.kt index 542d67d..e11ef7b 100644 --- a/app/src/main/java/com/iamnaran/firefly/ui/theme/Dimens.kt +++ b/app/src/main/java/com/iamnaran/firefly/ui/theme/Dimens.kt @@ -14,6 +14,12 @@ data class Dimens( val medium: Dp = 10.dp, val large: Dp = 16.dp, val extraLarge: Dp = 32.dp, + + val paddingDefault: Dp = 2.dp, + val paddingSmall: Dp = 4.dp, + val paddingRegular: Dp = 8.dp, + val paddingExtraLarge: Dp = 32.dp, + ) val LocalDimens = compositionLocalOf { Dimens() } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1a83077..6d24bc6 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -19,7 +19,7 @@ Home Profile - Notification + Explore Notification Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam in scelerisque sem. Mauris