Skip to content

Commit

Permalink
Impl. screenshot blocking logic
Browse files Browse the repository at this point in the history
  • Loading branch information
aritra-tech committed Mar 10, 2024
1 parent 793511b commit 799b94b
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,6 @@ class DataStoreUtil @Inject constructor(context: Context) {
companion object {
private val Context.dataStore: DataStore<Preferences> by preferencesDataStore("settings")
val IS_DARK_MODE_KEY = booleanPreferencesKey("dark_mode")
val IS_SS_BLOCK_KEY = booleanPreferencesKey("ss_block")
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ import com.geekymusketeers.uncrack.presentation.masterKey.UpdateMasterKey
import com.geekymusketeers.uncrack.presentation.password.PasswordScreen
import com.geekymusketeers.uncrack.presentation.profile.ProfileScreen
import com.geekymusketeers.uncrack.presentation.shield.ShieldScreen
import com.geekymusketeers.uncrack.sharedViewModel.ThemeViewModel
import com.geekymusketeers.uncrack.ui.theme.BackgroundLight
import com.geekymusketeers.uncrack.ui.theme.DMSansFontFamily
import com.geekymusketeers.uncrack.ui.theme.FadeIn
Expand All @@ -49,7 +50,8 @@ import kotlinx.collections.immutable.persistentListOf
fun Navigation(
modifier: Modifier = Modifier,
masterKeyViewModel: KeyViewModel = hiltViewModel(),
passwordGeneratorViewModel: PasswordGeneratorViewModel = hiltViewModel()
passwordGeneratorViewModel: PasswordGeneratorViewModel = hiltViewModel(),
themeViewModel: ThemeViewModel = hiltViewModel()
) {

val navController = rememberNavController()
Expand Down Expand Up @@ -101,7 +103,10 @@ fun Navigation(
}

composable(route = "account_screen") {
AccountScreen(navController)
AccountScreen(
navController,
themeViewModel
)
}

composable(route = "update_master_key_screen") {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ import com.geekymusketeers.uncrack.R
import com.geekymusketeers.uncrack.components.AccountOption
import com.geekymusketeers.uncrack.components.ProfileContainer
import com.geekymusketeers.uncrack.components.ThemeDialog
import com.geekymusketeers.uncrack.sharedViewModel.ThemeViewModel
import com.geekymusketeers.uncrack.ui.theme.OnPrimaryContainerLight
import com.geekymusketeers.uncrack.ui.theme.OnSurfaceVariantLight
import com.geekymusketeers.uncrack.ui.theme.SurfaceTintLight
Expand All @@ -50,7 +51,11 @@ import com.geekymusketeers.uncrack.util.Util
import java.io.ByteArrayOutputStream

@Composable
fun AccountScreen(navController: NavHostController, modifier: Modifier = Modifier) {
fun AccountScreen(
navController: NavHostController,
themeViewModel: ThemeViewModel,
modifier: Modifier = Modifier
) {

val context = LocalContext.current
var openThemeDialog by remember { mutableStateOf(false) }
Expand Down Expand Up @@ -177,7 +182,9 @@ fun AccountScreen(navController: NavHostController, modifier: Modifier = Modifie
AccountItems.CHANGE_MASTER_KEY -> {
navController.navigate("update_master_key_screen")
}
AccountItems.BLOCK_SS -> {}
AccountItems.BLOCK_SS -> {
themeViewModel.blockScreenShort()
}
else -> {}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,28 +5,35 @@ import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.geekymusketeers.uncrack.data.datastore.DataStoreUtil
import com.geekymusketeers.uncrack.data.datastore.DataStoreUtil.Companion.IS_DARK_MODE_KEY
import com.geekymusketeers.uncrack.data.datastore.DataStoreUtil.Companion.IS_SS_BLOCK_KEY
import com.geekymusketeers.uncrack.util.runIO
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.launch
import javax.inject.Inject

data class ThemeState(val isDarkMode: Boolean)
data class ThemeState(val isDarkMode: Boolean, val isSsBlocked: Boolean)

@HiltViewModel
class ThemeViewModel @Inject constructor(
dataStoreUtil: DataStoreUtil
): ViewModel() {

private val _themeState = MutableStateFlow(ThemeState(false))
private val _themeState = MutableStateFlow(ThemeState(isDarkMode = false, isSsBlocked = false))
val themeState: StateFlow<ThemeState> = _themeState

private val dataStore = dataStoreUtil.dataStore

init {
viewModelScope.launch(Dispatchers.IO) {
dataStore.data.map { preferences ->
ThemeState(preferences[IS_DARK_MODE_KEY] ?: false)
ThemeState(
isDarkMode = preferences[IS_DARK_MODE_KEY] ?: false,
isSsBlocked = preferences[IS_SS_BLOCK_KEY] ?: false
)
}.collect {
_themeState.value = it
}
Expand All @@ -40,4 +47,10 @@ class ThemeViewModel @Inject constructor(
}
}
}

fun blockScreenShort() = runIO {
dataStore.edit { preferences ->
preferences[IS_SS_BLOCK_KEY] = !(preferences[IS_SS_BLOCK_KEY] ?: false)
}
}
}

0 comments on commit 799b94b

Please sign in to comment.