Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ android {
applicationId = "ltd.grunt.brainwallet"
minSdk = 29
targetSdk = 35
versionCode = 202506341
versionName = "v4.10.3"
versionCode = 202506342
versionName = "v4.10.4"
multiDexEnabled = true
base.archivesName.set("${defaultConfig.versionName}(${defaultConfig.versionCode})")
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
Expand All @@ -47,7 +48,10 @@ import com.brainwallet.ui.screens.main.MainViewModel
import com.brainwallet.ui.theme.DesignTheme
import com.brainwallet.ui.theme.IBMPlexSans
import kotlinx.collections.immutable.ImmutableList
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import org.koin.compose.koinInject
import kotlin.time.Duration.Companion.milliseconds

@Composable
fun YourEmojisScreen(
Expand All @@ -60,6 +64,7 @@ fun YourEmojisScreen(
val horizontalVerticalSpacing = 8
val leadingCopyPadding = 8
val detailLineHeight = 24
val coroutineScope = rememberCoroutineScope()

BrainwalletScaffold(
topBar = {
Expand Down Expand Up @@ -121,6 +126,10 @@ fun YourEmojisScreen(
LargeButton(
onClick = {
viewModel.onEvent(MainScreenEvent.OnUserClearsEmojis)
coroutineScope.launch {
delay(200L.milliseconds)
onNavigate.invoke(UiEffect.Navigate.Back())
}
},
) {
Text(
Expand Down
28 changes: 21 additions & 7 deletions app/src/main/java/com/brainwallet/ui/screens/main/MainScreen.kt
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue
import androidx.compose.runtime.snapshotFlow
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
Expand Down Expand Up @@ -200,6 +201,24 @@ fun MainScreen(
}
}

LaunchedEffect(state.isDrawerOpen) {
if (state.isDrawerOpen) {
if (drawerState.isClosed) drawerState.open()
} else {
if (drawerState.isOpen) drawerState.close()
}
}

LaunchedEffect(drawerState) {
snapshotFlow { drawerState.currentValue }
.collect { value ->
val isOpen = value == DrawerValue.Open
if (isOpen != state.isDrawerOpen) {
viewModel.onEvent(MainScreenEvent.OnDrawerVisibilityChanged(isOpen))
}
}
}

ModalNavigationDrawer(
drawerState = drawerState,
gesturesEnabled = drawerState.isOpen,
Expand All @@ -213,6 +232,7 @@ fun MainScreen(
topNavStartEndPadding +
topNavButtonSize
),
isDrawerOpen = drawerState.isOpen
)
}
) {
Expand Down Expand Up @@ -307,13 +327,7 @@ fun MainScreen(
Spacer(modifier = Modifier.weight(1f))
SettingsButton(
isDarkMode = isDarkMode,
onClick = {
scope.launch {
drawerState.apply {
if (isClosed) open() else close()
}
}
}
onClick = { viewModel.onEvent(MainScreenEvent.OnToggleDrawer) }
)
}
LazyVerticalGrid(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ sealed class MainScreenEvent {
data object OnExportTransactions : MainScreenEvent()
data class OnCopyTransactions(val transactionItem: TxItem) : MainScreenEvent()
data object OnToggleGameHub : MainScreenEvent()
data object OnToggleDrawer : MainScreenEvent()
data class OnDrawerVisibilityChanged(val isOpen: Boolean) : MainScreenEvent()

data object OnUserClearsEmojis : MainScreenEvent()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ data class MainScreenState(
0f,
"$"
),
val isDrawerOpen: Boolean = false,
val isInternetReachable: Boolean = true,
val formattedCurrency: String = "",
val gameURLString: String = "",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -509,15 +509,22 @@ class MainViewModel(
Timber.e(e)
}
}
is MainScreenEvent.OnToggleDrawer -> {
_state.update { it.copy(isDrawerOpen = !it.isDrawerOpen) }
}

is MainScreenEvent.OnDrawerVisibilityChanged -> {
_state.update { it.copy(isDrawerOpen = event.isOpen) }
}
is MainScreenEvent.OnUserChoosesEmojis -> {
}
is MainScreenEvent.OnUserClearsEmojis -> {
BRSharedPrefs.putEmojisChosen(this.app, false)
BRSharedPrefs.putEmojisChosen(app, false)
val emptyBytes = "".toByteArray(Charsets.UTF_8)

BRKeyStore.putEmojis(
emptyBytes,
this.app,
app,
BWConstants.PUT_EMOJIS_REQUEST_CODE
)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.brainwallet.ui.screens.settings

import android.app.Application
import androidx.appcompat.app.AppCompatDelegate
import androidx.core.os.LocaleListCompat
import androidx.lifecycle.viewModelScope
Expand All @@ -9,6 +10,7 @@ import com.brainwallet.data.model.toFeeOptions
import com.brainwallet.data.repository.LtcRepository
import com.brainwallet.data.repository.SettingRepository
import com.brainwallet.domain.LanguageSwitcherUseCase
import com.brainwallet.tools.manager.BRSharedPrefs
import com.brainwallet.tools.manager.FeeManager
import com.brainwallet.ui.BrainwalletViewModel
import com.brainwallet.util.EventBus
Expand All @@ -34,6 +36,7 @@ class SettingsViewModel(
private val languageSwitcherUseCase: LanguageSwitcherUseCase,
private val ltcRepository: LtcRepository,
versionCodeProvider: VersionCodeProvider,
private val app: Application,
private val ioDispatcher: CoroutineDispatcher = Dispatchers.IO
) : BrainwalletViewModel<SettingsEvent>() {

Expand Down Expand Up @@ -87,6 +90,9 @@ class SettingsViewModel(
}
}
}
fun hasUserSetEmojis(): Boolean {
return BRSharedPrefs.wereEmojisChosen(app)
}

override fun onEvent(event: SettingsEvent) {
when (event) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.AbstractComposeView
Expand All @@ -44,28 +47,36 @@ import kotlinx.coroutines.flow.onEach
import org.koin.compose.koinInject
import org.koin.compose.viewmodel.koinViewModel
import org.koin.java.KoinJavaComponent.inject
import timber.log.Timber

@Composable
fun HomeSettingDrawerSheet(
modifier: Modifier = Modifier,
isDrawerOpen: Boolean = false,
syncAnalyticsRepository: SyncAnalyticsRepository = koinInject(),
viewModel: SettingsViewModel = koinViewModel()
) {
val state by viewModel.state.collectAsState()
val context = LocalContext.current
var hasUserSetEmojis by remember { mutableStateOf(false) }

LaunchedEffect(Unit) {
viewModel.onEvent(
SettingsEvent.OnLoad(
shareAnalyticsDataEnabled = BRSharedPrefs.getShareData(
context
), // currently just load analytics share data here
lastSyncMetadata = syncAnalyticsRepository.getLastSyncMetadata(), // currently just load sync metadata here
LaunchedEffect(isDrawerOpen) {
if (isDrawerOpen) {
Timber.d("timber drawer open")
viewModel.onEvent(
SettingsEvent.OnLoad(
shareAnalyticsDataEnabled = BRSharedPrefs.getShareData(context),
lastSyncMetadata = syncAnalyticsRepository.getLastSyncMetadata(),
)
)
)
hasUserSetEmojis = viewModel.hasUserSetEmojis()
} else {
hasUserSetEmojis = viewModel.hasUserSetEmojis()
Timber.d("timber drawer closed")
}
}

// / Layout values
// Layout values
val headerPadding = 56

ModalDrawerSheet(
Expand All @@ -89,6 +100,7 @@ fun HomeSettingDrawerSheet(
.fillMaxSize()
.wrapContentHeight(),
shareAnalyticsDataEnabled = state.shareAnalyticsDataEnabled,
userSetEmojis = hasUserSetEmojis,
onEvent = {
viewModel.onEvent(it)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import com.brainwallet.ui.screens.settings.SettingsEvent
fun SecurityDetail(
modifier: Modifier = Modifier,
shareAnalyticsDataEnabled: Boolean = false,
userSetEmojis: Boolean = false,
onEvent: (SettingsEvent) -> Unit
) {
// / Layout values
Expand Down Expand Up @@ -68,29 +69,31 @@ fun SecurityDetail(
}
}

Row(
modifier = Modifier
.height(contentHeight.dp),
verticalAlignment = Alignment.CenterVertically
) {
Text(stringResource(R.string.security_brainwallet_phrase_title))
Spacer(modifier = Modifier.weight(1f))
Button(onClick = {
onEvent.invoke(SettingsEvent.OnSecurityBrainwalletPhraseClick)
}) {
Text(
text = "πŸ˜…",
style = TextStyle(
fontWeight = FontWeight.Normal,
fontSize = 20.sp,
shadow = Shadow(
color = Color.Black.copy(alpha = 0.5f),
offset = Offset(x = 4f, y = 4f),
blurRadius = 4f
)
),
maxLines = 1
)
if (userSetEmojis) {
Row(
modifier = Modifier
.height(contentHeight.dp),
verticalAlignment = Alignment.CenterVertically
) {
Text(stringResource(R.string.security_brainwallet_phrase_title))
Spacer(modifier = Modifier.weight(1f))
Button(onClick = {
onEvent.invoke(SettingsEvent.OnSecurityBrainwalletPhraseClick)
}) {
Text(
text = "πŸ˜…",
style = TextStyle(
fontWeight = FontWeight.Normal,
fontSize = 20.sp,
shadow = Shadow(
color = Color.Black.copy(alpha = 0.5f),
offset = Offset(x = 4f, y = 4f),
blurRadius = 4f
)
),
maxLines = 1
)
}
}
}
Row(
Expand Down
Loading