diff --git a/app/build.gradle.kts b/app/build.gradle.kts index d2a3e37d..8e57bbcc 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -187,6 +187,7 @@ dependencies { } } + implementation("androidx.webkit:webkit:1.9.0") implementation(libs.androidx.core) implementation(libs.androidx.appcompat) implementation(libs.androidx.legacy.support) diff --git a/app/src/main/java/com/brainwallet/data/model/IntroLanguageResource.kt b/app/src/main/java/com/brainwallet/data/model/IntroLanguageResource.kt index ced5e39d..f1399dc1 100644 --- a/app/src/main/java/com/brainwallet/data/model/IntroLanguageResource.kt +++ b/app/src/main/java/com/brainwallet/data/model/IntroLanguageResource.kt @@ -133,14 +133,6 @@ class IntroLanguageResource { "Sei sicuro di voler cambiare la lingua in italiano?", Language.ITALIAN ), - IntroLanguage( - Language.BLANK.code, - Language.BLANK.title, - " ", - R.raw.english, - " ", - Language.BLANK - ), ) } diff --git a/app/src/main/java/com/brainwallet/data/model/Language.kt b/app/src/main/java/com/brainwallet/data/model/Language.kt index b94ccac3..97fdea37 100644 --- a/app/src/main/java/com/brainwallet/data/model/Language.kt +++ b/app/src/main/java/com/brainwallet/data/model/Language.kt @@ -23,7 +23,6 @@ enum class Language( CHINESE_SIMPLIFIED("zh-CN", "简化字", "选择语言"), HINDI("hi", "हिंदी", "भाषा चुने"), ITALIAN("it", "Italiano", "Seleziona la lingua"), - BLANK(" ", " ", " "), ; companion object { diff --git a/app/src/main/java/com/brainwallet/navigation/MainNav.kt b/app/src/main/java/com/brainwallet/navigation/MainNav.kt index d1a37a30..1d1fa5e1 100644 --- a/app/src/main/java/com/brainwallet/navigation/MainNav.kt +++ b/app/src/main/java/com/brainwallet/navigation/MainNav.kt @@ -10,6 +10,7 @@ import androidx.navigation.toRoute import com.brainwallet.ui.screens.inputwords.InputWordsScreen import com.brainwallet.ui.screens.ready.ReadyScreen import com.brainwallet.ui.screens.setpasscode.SetPasscodeScreen +import com.brainwallet.ui.screens.topup.TopUpScreen import com.brainwallet.ui.screens.unlock.UnLockScreen import com.brainwallet.ui.screens.welcome.WelcomeScreen import com.brainwallet.ui.screens.yourseedproveit.YourSeedProveItScreen @@ -65,6 +66,12 @@ fun NavGraphBuilder.mainNavGraph( composable { ReadyScreen(onNavigate = onNavigate) } + + composable { navBackStackEntry -> + val route: Route.TopUp = navBackStackEntry.toRoute() + TopUpScreen(onNavigate = onNavigate) + } + composable { navBackStackEntry -> val route: Route.SetPasscode = navBackStackEntry.toRoute() SetPasscodeScreen(onNavigate = onNavigate, passcode = route.passcode) @@ -90,6 +97,8 @@ fun NavGraphBuilder.mainNavGraph( seedWords = route.seedWords ) } + + /** * for now, still using old activity & fragment [com.brainwallet.presenter.activities.BreadActivity] */ diff --git a/app/src/main/java/com/brainwallet/navigation/Route.kt b/app/src/main/java/com/brainwallet/navigation/Route.kt index 2235eff5..905d1bb8 100644 --- a/app/src/main/java/com/brainwallet/navigation/Route.kt +++ b/app/src/main/java/com/brainwallet/navigation/Route.kt @@ -12,6 +12,9 @@ sealed class Route : JavaSerializable { @Serializable object Ready : Route() + @Serializable + object TopUp : Route() + @Serializable data class SetPasscode( val passcode: List = emptyList() @@ -37,4 +40,5 @@ sealed class Route : JavaSerializable { @Serializable object UnLock : Route() + } \ No newline at end of file diff --git a/app/src/main/java/com/brainwallet/presenter/activities/PaperKeyProveActivity.kt b/app/src/main/java/com/brainwallet/presenter/activities/PaperKeyProveActivity.kt index 5175fa61..b20ce2fe 100644 --- a/app/src/main/java/com/brainwallet/presenter/activities/PaperKeyProveActivity.kt +++ b/app/src/main/java/com/brainwallet/presenter/activities/PaperKeyProveActivity.kt @@ -4,10 +4,6 @@ import android.os.Bundle import androidx.compose.ui.platform.ViewCompositionStrategy import com.brainwallet.databinding.ActivityPaperKeyProveBinding import com.brainwallet.presenter.activities.util.BRActivity -import com.brainwallet.tools.animation.BRAnimator -import com.brainwallet.tools.manager.BRSharedPrefs -import com.brainwallet.ui.screens.yourseedproveit.YourSeedProveItEvent -import com.brainwallet.ui.screens.yourseedproveit.YourSeedProveItScreen import com.brainwallet.ui.theme.setContentWithTheme @Deprecated(message = "move to compose") diff --git a/app/src/main/java/com/brainwallet/presenter/fragments/FragmentMenu.java b/app/src/main/java/com/brainwallet/presenter/fragments/FragmentMenu.java index 2fcddd67..655a45e4 100644 --- a/app/src/main/java/com/brainwallet/presenter/fragments/FragmentMenu.java +++ b/app/src/main/java/com/brainwallet/presenter/fragments/FragmentMenu.java @@ -74,7 +74,7 @@ public View onCreateView(LayoutInflater inflater, itemList.add(new BRMenuItem(getString(R.string.MenuButton_support), R.drawable.faq_question_black, v -> { CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder(); CustomTabsIntent customTabsIntent = builder.build(); - customTabsIntent.launchUrl(getContext(), Uri.parse(BRConstants.CUSTOMER_SUPPORT_LINK)); + customTabsIntent.launchUrl(getContext(), Uri.parse(BRConstants.WEB_LINK)); AnalyticsManager.logCustomEvent(BRConstants._20201118_DTGS); })); diff --git a/app/src/main/java/com/brainwallet/tools/manager/BRApiManager.java b/app/src/main/java/com/brainwallet/tools/manager/BRApiManager.java index a44ad1e2..aa02b78b 100644 --- a/app/src/main/java/com/brainwallet/tools/manager/BRApiManager.java +++ b/app/src/main/java/com/brainwallet/tools/manager/BRApiManager.java @@ -119,16 +119,8 @@ public void startTimer(Context context) { timer.schedule(timerTask, 0, 4000); } - public void stopTimerTask() { - //stop the timer, if it's not already null - if (timer != null) { - timer.cancel(); - timer = null; - } - } - public JSONArray fetchRates(Activity activity) { - String jsonString = createGETRequestURL(activity, getBaseUrlProd() + "/api/v1/rates"); + String jsonString = createGETRequestURL(activity, BW_API_PROD_HOST + "/api/v1/rates"); JSONArray jsonArray = null; if (jsonString == null) return null; try { @@ -180,17 +172,14 @@ private String createGETRequestURL(Context app, String myURL) { Timber.i("timber: urlGET: %s resp is null", myURL); return null; } - response = resp.body().string(); - String strDate = resp.header("date"); - if (strDate == null) { - Timber.i("timber: urlGET: strDate is null!"); - return response; - } - SimpleDateFormat formatter = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.US); - Date date = formatter.parse(strDate); - long timeStamp = date.getTime(); + ///Set timestamp to prefs + long timeStamp = new Date().getTime(); BRSharedPrefs.putSecureTime(app, timeStamp); - } catch (ParseException | IOException e) { + + assert resp.body() != null; + response = resp.body().string(); + + } catch (IOException e) { Timber.e(e); } finally { if (resp != null) resp.close(); diff --git a/app/src/main/java/com/brainwallet/tools/util/BRConstants.java b/app/src/main/java/com/brainwallet/tools/util/BRConstants.java index b753a34f..4da18340 100644 --- a/app/src/main/java/com/brainwallet/tools/util/BRConstants.java +++ b/app/src/main/java/com/brainwallet/tools/util/BRConstants.java @@ -98,8 +98,8 @@ private BRConstants() { public static final String TWITTER_LINK = "https://twitter.com/Brainwallet_App"; public static final String INSTAGRAM_LINK = "https://www.instagram.com/brainwalletapp"; public static final String WEB_LINK = "https://brainwallet.co"; - public static final String TOS_LINK = "https://brainwallet.co/privacy"; - public static String CUSTOMER_SUPPORT_LINK = "https://support.brainwallet.co/hc/en-us/requests/new"; + public static final String TOS_LINK = "https://brainwallet.co/privacy-policy.html"; + public static final String MOBILE_MP_LINK = "https://brainwallet.co/mobile-top-up.html"; public static String BITREFILL_AFFILIATE_LINK = "https://www.bitrefill.com/"; /** diff --git a/app/src/main/java/com/brainwallet/ui/composable/FiatDropdown.kt b/app/src/main/java/com/brainwallet/ui/composable/FiatDropdown.kt deleted file mode 100644 index 766d4fea..00000000 --- a/app/src/main/java/com/brainwallet/ui/composable/FiatDropdown.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.brainwallet.ui.composable - -import androidx.compose.foundation.layout.Box -import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.ui.Alignment -import androidx.compose.foundation.background -import androidx.compose.foundation.border -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.width -import androidx.compose.foundation.layout.wrapContentSize -import androidx.compose.ui.Modifier -import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material3.Button -import androidx.compose.material3.ButtonDefaults -import androidx.compose.material3.DropdownMenu -import androidx.compose.material3.Text -import androidx.compose.runtime.setValue -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.sp -import com.brainwallet.ui.theme.BrainwalletAppTheme -import com.brainwallet.ui.theme.BrainwalletTheme - -@Composable -fun FiatDropdown( - selectedFiat: String, - isDarkTheme: Boolean, - onFiatSelected: (String) -> Unit -) { - var expanded by remember { mutableStateOf(false) } - val languages = listOf("EUR", "USD", "IDR", "¥") - val buttonFactor = 50 - val buttonWidth = 155 - - Box( - modifier = Modifier.wrapContentSize(Alignment.TopStart) - ) { - Button( - onClick = { expanded = true }, - shape = RoundedCornerShape(50), - colors = ButtonDefaults.buttonColors( - containerColor = BrainwalletTheme.colors.surface, - contentColor = BrainwalletTheme.colors.content - ), - modifier = Modifier - .width(buttonWidth.dp) - .border(1.dp, BrainwalletTheme.colors.border, - RoundedCornerShape(buttonFactor.dp)) - .height(50.dp) - ) { - Text(text = selectedFiat, - fontSize = 14.sp, - color = BrainwalletTheme.colors.content) - } - - DropdownMenu( - expanded = expanded, - onDismissRequest = { expanded = false }, - modifier = Modifier.background(Color.White) - ) { -// languages.forEach { language -> -// DropdownMenuItem(onClick = { -// onFiatSelected(language) -// expanded = false -// }) { -// Text(text = language) -// } -// } - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/brainwallet/ui/composable/LanguageDropdown.kt b/app/src/main/java/com/brainwallet/ui/composable/LanguageDropdown.kt deleted file mode 100644 index 43b9b21b..00000000 --- a/app/src/main/java/com/brainwallet/ui/composable/LanguageDropdown.kt +++ /dev/null @@ -1,91 +0,0 @@ -package com.brainwallet.ui.composable -import androidx.compose.foundation.background -import androidx.compose.foundation.border -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.width -import androidx.compose.foundation.layout.wrapContentSize -import androidx.compose.runtime.Composable -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.ui.Modifier -import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material3.Button -import androidx.compose.material3.ButtonDefaults -import androidx.compose.material3.DropdownMenu -import androidx.compose.material3.Text -import androidx.compose.runtime.getValue -import androidx.compose.runtime.setValue -import androidx.compose.ui.Alignment -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.sp -import androidx.compose.material3.DropdownMenuItem -import com.brainwallet.ui.theme.BrainwalletTheme - -@Composable -fun LanguageDropdown( - selectedLanguage: String, - isDarkTheme: Boolean, - onLanguageSelected: (String) -> Unit -) { - var expanded by remember { mutableStateOf(false) } - val languages = listOf("Français", "English", "Español", "Deutsch") - val buttonFactor = 50 - val buttonWidth = 155 - Box( - modifier = Modifier.wrapContentSize(Alignment.TopStart) - ) { - Button( - onClick = { expanded = true }, - shape = RoundedCornerShape(buttonFactor), - colors = ButtonDefaults.buttonColors( - containerColor = BrainwalletTheme.colors.surface, - contentColor = BrainwalletTheme.colors.content - ), - modifier = Modifier - .width(buttonWidth.dp) - .border(1.dp, BrainwalletTheme.colors.border, - RoundedCornerShape(buttonFactor.dp)) - .height(50.dp) - ) { - Text(text = selectedLanguage, - fontSize = 14.sp, - color = BrainwalletTheme.colors.content) - } - - DropdownMenu( - expanded = expanded, - onDismissRequest = { expanded = false }, - modifier = Modifier.background(Color.White) - ) { - languages.forEach { language -> -// DropdownMenuItem( -// onClick = { -// onLanguageSelected(language) -// }) { -// Text("land") -// } - -// DropdownMenuItem( -// onClick = { -// onLanguageSelected(language) -// } -// ) { -// Text(text = language) -// } - } - } - } -} - - -//DropdownMenuItem( -//onClick = { -// onLanguageSelected(language) -// expanded = false -//}) { -// Text(text = language) -//} diff --git a/app/src/main/java/com/brainwallet/ui/composable/MediumButton.kt b/app/src/main/java/com/brainwallet/ui/composable/MediumButton.kt new file mode 100644 index 00000000..03946098 --- /dev/null +++ b/app/src/main/java/com/brainwallet/ui/composable/MediumButton.kt @@ -0,0 +1,54 @@ +package com.brainwallet.ui.composable + +import androidx.compose.foundation.border +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.ButtonColors +import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.FilledTonalButton +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.drawWithContent +import androidx.compose.ui.graphics.Shape +import androidx.compose.ui.graphics.drawscope.ContentDrawScope +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.brainwallet.ui.screens.welcome.WelcomeScreen +import com.brainwallet.ui.theme.BrainwalletColors +import com.brainwallet.ui.theme.BrainwalletTheme + +@Composable +fun MediumTextButton( + modifier: Modifier = Modifier, + onClick: () -> Unit, + colors: ButtonColors = ButtonDefaults.buttonColors( + containerColor = BrainwalletTheme.colors.surface, + contentColor = BrainwalletTheme.colors.content + ), + shape: Shape = ButtonDefaults.shape, + content: @Composable RowScope.() -> Unit +) { + FilledTonalButton( + modifier = modifier + .fillMaxWidth() + .height(45.dp), + onClick = onClick, + colors = colors, + shape = shape, + content = content + ) +} +@Preview +@Composable +fun MediumTextButtonPreview() { + MediumTextButton( + modifier = TODO(), + onClick = TODO(), + colors = TODO(), + shape = TODO(), + content = TODO() + ) +} + \ No newline at end of file diff --git a/app/src/main/java/com/brainwallet/ui/screens/ready/ReadyScreen.kt b/app/src/main/java/com/brainwallet/ui/screens/ready/ReadyScreen.kt index de8f2868..531cbb01 100644 --- a/app/src/main/java/com/brainwallet/ui/screens/ready/ReadyScreen.kt +++ b/app/src/main/java/com/brainwallet/ui/screens/ready/ReadyScreen.kt @@ -124,7 +124,7 @@ fun ReadyScreen( BorderedLargeButton( onClick = { - onNavigate.invoke(UiEffect.Navigate(Route.SetPasscode())) + onNavigate.invoke(UiEffect.Navigate(Route.SetPasscode())) }, modifier = Modifier.fillMaxWidth() @@ -134,7 +134,6 @@ fun ReadyScreen( style = MaterialTheme.typography.bodyLarge ) } - Spacer(modifier = Modifier.weight(0.05f)) } } diff --git a/app/src/main/java/com/brainwallet/ui/screens/topup/TopUpScreen.kt b/app/src/main/java/com/brainwallet/ui/screens/topup/TopUpScreen.kt new file mode 100644 index 00000000..d5c92415 --- /dev/null +++ b/app/src/main/java/com/brainwallet/ui/screens/topup/TopUpScreen.kt @@ -0,0 +1,227 @@ +@file:OptIn(ExperimentalMaterial3Api::class) + +package com.brainwallet.ui.screens.topup + + +import android.graphics.Bitmap +import android.view.ViewGroup +import android.webkit.WebView +import android.webkit.WebViewClient +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.automirrored.filled.ArrowBack +import androidx.compose.material.icons.automirrored.filled.ArrowForward +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.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.draw.rotate +import androidx.compose.ui.graphics.graphicsLayer +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import androidx.compose.ui.viewinterop.AndroidView +import androidx.lifecycle.viewmodel.compose.viewModel +import com.brainwallet.R +import com.brainwallet.navigation.OnNavigate +import com.brainwallet.navigation.UiEffect +import com.brainwallet.tools.util.BRConstants +import com.brainwallet.ui.composable.BorderedLargeButton +import com.brainwallet.ui.composable.BrainwalletScaffold +import com.brainwallet.ui.composable.BrainwalletTopAppBar +import com.brainwallet.ui.composable.MediumTextButton +import com.brainwallet.ui.screens.yourseedproveit.YourSeedProveItEvent +import com.brainwallet.ui.screens.yourseedproveit.YourSeedProveItViewModel +import kotlinx.coroutines.delay + +@Composable +fun TopUpScreen( + onNavigate: OnNavigate, + viewModel: YourSeedProveItViewModel = viewModel() +) { + val state by viewModel.state.collectAsState() + val context = LocalContext.current + + /// Layout values + val leadingCopyPadding = 16 + val buttonRowHeight = 55 + val horizontalVerticalSpacing = 8 + val spacerHeight = 90 + val skipButtonWidth = 100 + + var shouldShowWebView by remember { mutableStateOf(false) } + var backEnabled by remember { mutableStateOf(false) } + var shouldSkipBeVisible by remember { mutableStateOf(false) } + + LaunchedEffect(Unit) { + delay(3000) + shouldSkipBeVisible = true + } + + BrainwalletScaffold( + topBar = { + BrainwalletTopAppBar( + navigationIcon = { + IconButton( + onClick = { onNavigate.invoke(UiEffect.Navigate.Back()) }, + ) { + Icon( + imageVector = Icons.AutoMirrored.Filled.ArrowBack, + contentDescription = stringResource(R.string.back), + ) + } + } + ) + } + + ) { paddingValues -> + + Spacer(modifier = Modifier.height(spacerHeight.dp)) + Column( + modifier = Modifier + .padding(paddingValues) + .padding(horizontal = leadingCopyPadding.dp) + .fillMaxSize(), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.spacedBy(horizontalVerticalSpacing.dp), + ) { + + if (!shouldShowWebView) { + Spacer(modifier = Modifier.weight(1f)) + Row { + Icon( + Icons.AutoMirrored.Filled.ArrowForward, + contentDescription = stringResource(R.string.down_left_arrow), + modifier = Modifier + .rotate(45f) + .graphicsLayer( + scaleX = 2f, + scaleY = 2f + ) + ) + Spacer(modifier = Modifier.weight(1f)) + } + + Text( + text = stringResource(R.string.top_up_title), + style = MaterialTheme.typography.displaySmall.copy(textAlign = TextAlign.Left), + modifier = Modifier.fillMaxWidth() + ) + + Text( + text = stringResource(R.string.top_up_detail_1), + style = MaterialTheme.typography.bodyLarge, + modifier = Modifier.fillMaxWidth() + ) + } + if (shouldShowWebView) { + AndroidView( + factory = { + WebView(it).apply { + setInitialScale(99) + settings.apply { + javaScriptEnabled = true + useWideViewPort = true + loadWithOverviewMode = true + builtInZoomControls = true + domStorageEnabled = true + allowContentAccess = true + } + webViewClient = object : WebViewClient() { + override fun onPageStarted(view: WebView, url: String?, favicon: Bitmap?) { + backEnabled = view.canGoBack() + } + } + layoutParams = ViewGroup.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.MATCH_PARENT) + + } + }, + update = { + it.loadUrl(BRConstants.MOBILE_MP_LINK) + }, + modifier = Modifier + .height(600.dp) + .weight(1f) + ) + Row( + modifier = Modifier + .fillMaxWidth() + .height(buttonRowHeight.dp), + + ){ + Spacer(modifier = Modifier.weight(1f)) + if(shouldSkipBeVisible) { + MediumTextButton( + onClick = { + viewModel.onEvent(YourSeedProveItEvent.OnGameAndSync) + }, + modifier = Modifier + .width(skipButtonWidth.dp) + .padding(vertical = horizontalVerticalSpacing.dp), + + ) { + + Text( + text = stringResource(R.string.top_up_button_3), + style = MaterialTheme.typography.bodyMedium, + textAlign = TextAlign.Right + ) + } + } + } + + } + if (!shouldShowWebView) { + BorderedLargeButton( + onClick = { + shouldShowWebView = true + }, + modifier = Modifier.fillMaxWidth() + + ) { + Text( + text = stringResource(R.string.top_up_button_1), + style = MaterialTheme.typography.bodyLarge + ) + } + BorderedLargeButton( + onClick = { + viewModel.onEvent(YourSeedProveItEvent.OnGameAndSync) + }, + modifier = Modifier.fillMaxWidth() + + ) { + Text( + text = stringResource(R.string.top_up_button_2), + style = MaterialTheme.typography.bodyMedium + ) + } + + } + + Spacer(modifier = Modifier.weight(0.05f)) + } + } +} + diff --git a/app/src/main/java/com/brainwallet/ui/screens/welcome/WelcomeScreen.kt b/app/src/main/java/com/brainwallet/ui/screens/welcome/WelcomeScreen.kt index cc49e0d7..819af07a 100644 --- a/app/src/main/java/com/brainwallet/ui/screens/welcome/WelcomeScreen.kt +++ b/app/src/main/java/com/brainwallet/ui/screens/welcome/WelcomeScreen.kt @@ -60,7 +60,6 @@ fun WelcomeScreen( viewModel: WelcomeViewModel = viewModel() ) { val state by viewModel.state.collectAsState() - // Global layout val configuration = LocalConfiguration.current val screenHeight = configuration.screenHeightDp @@ -68,6 +67,7 @@ fun WelcomeScreen( val thirdOfScreenHeight = (screenHeight * mainBoxFactor).toInt() //todo: the following sizing can be move to BrainwalletTheme + // Global layout val buttonFontSize = 16 val thinButtonFontSize = 14 val iconButtonSize = 32 @@ -76,11 +76,8 @@ fun WelcomeScreen( val halfLeadTrailPadding = leadTrailPadding / 2 val doubleLeadTrailPadding = leadTrailPadding * 2 val rowPadding = 8 - val tinyPad = 4 val activeRowHeight = 60 - var selectedLanguage by remember { mutableStateOf("Français") } - var selectedFiat by remember { mutableStateOf("EUR") } val composition by rememberLottieComposition(LottieCompositionSpec.RawRes(R.raw.welcomeemoji20250212)) val progress by animateLottieCompositionAsState( composition = composition, @@ -124,9 +121,7 @@ fun WelcomeScreen( progress = { progress } ) } - // Spacer(modifier = Modifier.weight(1f)) - -// TODO: implement later, for now just comment this + // TODO: implement later, for now just comment this Row( modifier = Modifier .fillMaxWidth() diff --git a/app/src/main/java/com/brainwallet/ui/screens/yourseedproveit/YourSeedProveItScreen.kt b/app/src/main/java/com/brainwallet/ui/screens/yourseedproveit/YourSeedProveItScreen.kt index 53d0ae66..95c3b72c 100644 --- a/app/src/main/java/com/brainwallet/ui/screens/yourseedproveit/YourSeedProveItScreen.kt +++ b/app/src/main/java/com/brainwallet/ui/screens/yourseedproveit/YourSeedProveItScreen.kt @@ -55,6 +55,7 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel import com.brainwallet.R import com.brainwallet.navigation.OnNavigate +import com.brainwallet.navigation.Route import com.brainwallet.navigation.UiEffect import com.brainwallet.ui.composable.BrainwalletScaffold import com.brainwallet.ui.composable.BrainwalletTopAppBar @@ -234,7 +235,7 @@ fun YourSeedProveItScreen( AnimatedVisibility(visible = state.orderCorrected) { LargeButton( onClick = { - viewModel.onEvent(YourSeedProveItEvent.OnGameAndSync) + onNavigate.invoke(UiEffect.Navigate(Route.TopUp)) }, ) { Text( diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index f39f3e64..25dce0c7 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -397,6 +397,7 @@ استخدم القياسات الحيوية لقد قمت بحفظ المفاتيح الخاصة بك. سحق المستوى التالي. + يتخطى استعادة قوتك يمكنك العودة من حيث بدأت استعادة محفظتي الدماغية @@ -410,4 +411,9 @@ سهم لأسفل لليسار شعار تبديل الوضع المظلم + اشحن رصيدك؟\n + عقلك فارغ الآن.. + احصل على عملة اللايتكوين في 5 دقائق + احصل على بعض اللايتكوين! + ربما في وقت لاحق. diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 69bf9fe0..2e34efe6 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -759,6 +759,7 @@ Verwenden Sie Biometrie Sie haben Ihre Schlüssel gespeichert. Zerstöre das nächste Level. + Überspringen Stellen Sie Ihre Kraft wieder her Sie können dorthin zurückkehren, wo Sie angefangen haben Stellen Sie mein Brainwallet wieder her @@ -772,4 +773,9 @@ Pfeil nach unten links Logo Dunkelmodus umschalten + Nachfüllen? + Im Moment ist dein Gehirn leer... + Holen Sie sich Litecoin in 5 Minuten + Holen Sie sich Litecoin! + Vielleicht später. diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 1297c870..9e988f91 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -758,6 +758,7 @@ Utilice la biometría Guardaste tus llaves. Aplasta el siguiente nivel. + Saltar Restaura tu poder Puedes volver desde donde empezaste. Restaurar mi Brainwallet @@ -771,4 +772,9 @@ flecha abajo-izquierda logo alternar-modo-oscuro + ¿Completar? + Ahora mismo tu cerebro está vacío... + Obtén Litecoin en 5 minutos + ¡Consigue algo de Litecoin! + Quizás más tarde. diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index c69c83bb..599f8762 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -759,6 +759,7 @@ Utiliser la biométrie Vous avez sauvegardé vos clés. Écrasez le niveau suivant. + Sauter Restaurez votre pouvoir Vous pouvez revenir d\'où vous avez commencé Restaurer mon Brainwallet @@ -772,4 +773,9 @@ flèche bas-gauche logo basculer en mode sombre + Recharger ? + En ce moment, votre cerveau est vide... + Obtenez du Litecoin en 5 minutes + Obtenez du Litecoin ! + Peut-être plus tard. diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index 2431e1af..b4259968 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -397,6 +397,7 @@ बायोमेट्रिक्स का प्रयोग करें आपने अपनी चाबियाँ सहेज लीं. अगले स्तर को कुचलें. + छोडना अपनी शक्ति पुनः स्थापित करें आप वहीं से वापस आ सकते हैं जहां से आपने शुरुआत की थी मेरा ब्रेनवॉलेट पुनर्स्थापित करें @@ -410,4 +411,9 @@ नीचे-बाएँ-तीर प्रतीक चिन्ह टॉगल-डार्क-मोड + लबालब भरना? + अभी तो तुम्हारा दिमाग खाली है... + 5 मिनट में लाइटकॉइन प्राप्त करें + कुछ लाइटकॉइन प्राप्त करें! + शायद बाद में. diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index 465c5550..b4685a5b 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -761,6 +761,7 @@ Gunakan biometrik Anda menyimpan kunci Anda. Hancurkan level berikutnya. + Melewati Kembalikan kekuatanmu Anda dapat kembali dari awal Pulihkan Dompet Otak saya @@ -774,4 +775,9 @@ panah kiri bawah logo beralih-mode gelap + Isi ulang? + Saat ini otakmu kosong... + Dapatkan Litecoin dalam 5 menit + Dapatkan beberapa Litecoin! + Mungkin nanti. diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 0ab274a8..daba2f4e 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -759,6 +759,7 @@ Usa la biometria Hai conservato le chiavi. Distruggi il livello successivo. + Saltare Ripristina il tuo potere Puoi tornare da dove hai iniziato Ripristina il mio Brainwallet @@ -772,4 +773,9 @@ freccia giù a sinistra logo attiva/disattiva la modalità oscura + Ricaricare? + In questo momento il tuo cervello è vuoto... + Ottieni Litecoin in 5 minuti + Prendi un po\' di Litecoin! + Forse più tardi. diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 58579947..7d8cb0d2 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -759,6 +759,7 @@ 生体認証を使用する キーを保存しました。 次のレベルを粉砕します。 + スキップ 力を回復してください スタート地点から戻れる ブレインウォレットを復元する @@ -772,4 +773,9 @@ 左下矢印 ロゴ ダークモードの切り替え + 補充しますか? + 今、あなたの脳は空っぽです... + 5分でライトコインをゲット + ライトコインをゲットしよう! + たぶん後で。 diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 31132da3..76a30c11 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -759,6 +759,7 @@ 생체 인식 사용 열쇠를 저장했습니다. 다음 레벨을 크러시하세요. + 건너뛰다 힘을 회복하세요 시작한 곳에서 다시 돌아올 수 있습니다. 내 Brainwallet을 복원하세요 @@ -772,4 +773,9 @@ 아래쪽 왼쪽 화살표 심벌 마크 토글 다크 모드 + 충전하시겠습니까? + 지금 당신의 뇌는 비어있습니다... + 5분 안에 라이트코인을 받으세요 + 라이트코인을 획득하세요! + 어쩌면 나중에. diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 07a08c71..483ed076 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -758,6 +758,7 @@ Use biometria Você salvou suas chaves. Esmague o próximo nível. + Pular Restaure seu poder Você pode voltar de onde começou Restaurar minha Brainwallet @@ -771,4 +772,9 @@ seta para baixo à esquerda logotipo alternar modo escuro + Recarregar? + Neste momento seu cérebro está vazio... + Obtenha Litecoin em 5 minutos + Obtenha um pouco de Litecoin! + Talvez mais tarde. diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 48f41350..447d9ddd 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -759,6 +759,7 @@ Используйте биометрию Вы сохранили свои ключи. Сокрушите следующий уровень. + Пропускать Восстановите свою силу Вы можете вернуться с того места, с которого начали Восстановить мой мозговой кошелек @@ -772,4 +773,9 @@ стрелка вниз-влево логотип переключить темный режим + Пополнить? + Сейчас в твоем мозгу пусто... + Получите Litecoin за 5 минут + Получите немного Litecoin! + Может быть, позже. diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index bf62d72e..ea2dca62 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -397,6 +397,7 @@ Använd biometri Du sparade dina nycklar. Krossa nästa nivå. + Hoppa Återställ din kraft Du kan komma tillbaka från där du började Återställ min Brainwallet @@ -410,4 +411,9 @@ ned-vänster-pil logotyp växla mellan mörkt läge + Fylla på? + Just nu är din hjärna tom... + Få Litecoin på 5 minuter + Skaffa lite Litecoin! + Kanske senare. diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index b23a36d7..b6761c13 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -2,7 +2,6 @@ - İnternet sitesi @@ -782,6 +781,7 @@ Biyometri kullan Anahtarlarınızı kaydettiniz. Bir sonraki seviyeyi ezin. + Atlamak Gücünüzü geri kazanın Başladığınız yerden geri dönebilirsiniz Brainwallet\'ımı geri yükle @@ -795,4 +795,10 @@ sol aşağı ok logo karanlık moda geçiş + Tamamlansın mı?\n + Tamamlansın mı?\n + Tamamlansın mı? + 5 dakikada Litecoin\'i edinin + Biraz Litecoin alın! + Belki daha sonra. diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index d9a209ae..fa6ead34 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -765,6 +765,7 @@ Використовуйте біометрію Ви зберегли свої ключі. Пройдіть наступний рівень. + Пропустити Відновіть свою силу Ви можете повернутися з того місця, з чого почали Відновіть мій Brainwallet @@ -778,4 +779,9 @@ стрілка вниз-ліворуч логотип перемикати темний режим + Поповнити? + Зараз ваш мозок порожній... + Отримайте Litecoin за 5 хвилин + Отримайте Litecoin! + Можливо пізніше. diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 4ed69fda..af648f66 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -759,6 +759,7 @@ 使用生物识别技术 你保存了你的钥匙。 粉碎下一个级别。 + 跳过 恢复你的力量 你可以从开始的地方返回 恢复我的脑钱包 @@ -772,4 +773,9 @@ 左下箭头 标识 切换暗模式 + 充值? + 现在你的大脑一片空白…… + 5 分钟内获得莱特币 + 获取一些莱特币! + 也许以后吧。 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index f19b97e9..c24b9137 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -759,6 +759,7 @@ 使用生物辨識技術 你保存了你的鑰匙。 粉碎下一個等級。 + 跳過 恢復你的力量 你可以從開始的地方返回 恢復我的腦錢包 @@ -772,4 +773,9 @@ 左下箭頭 標識 切換暗模式 + 儲值? + 現在你的大腦一片空白… + 5 分鐘內獲得萊特幣 + 取得一些萊特幣! + 也許以後吧。 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9ffbb7f2..cf13fe3f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -795,6 +795,12 @@ Use biometrics You saved your keys. Crush the next level. + Top up? + Right now your brain is empty... + Get Litecoin in 5 minutes + Get some Litecoin! + Maybe later. + Skip Restore your power You can get back from where you started Restore my Brainwallet diff --git a/app/src/test/java/com/brainwallet/tools/util/BRConstantsTest.kt b/app/src/test/java/com/brainwallet/tools/util/BRConstantsTest.kt index 3703d646..dce67c37 100644 --- a/app/src/test/java/com/brainwallet/tools/util/BRConstantsTest.kt +++ b/app/src/test/java/com/brainwallet/tools/util/BRConstantsTest.kt @@ -19,9 +19,9 @@ class BRConstantsTest { assertSame(BRConstants.TWITTER_LINK,"https://twitter.com/Brainwallet_App"); assertSame(BRConstants.INSTAGRAM_LINK,"https://www.instagram.com/brainwalletapp"); assertSame(BRConstants.WEB_LINK,"https://brainwallet.co"); - assertSame(BRConstants.TOS_LINK,"https://brainwallet.co/privacy"); - assertSame(BRConstants.BITREFILL_AFFILIATE_LINK,"https://www.bitrefill.com/") - assertSame(BRConstants.CUSTOMER_SUPPORT_LINK,"https://support.brainwallet.co/hc/en-us/requests/new"); + assertSame(BRConstants.TOS_LINK,"https://brainwallet.co/privacy-policy.html"); + assertSame(BRConstants.MOBILE_MP_LINK,"https://brainwallet.co/mobile-top-up.html"); + assertSame(BRConstants.BITREFILL_AFFILIATE_LINK,"https://www.bitrefill.com/"); } @Test diff --git a/app/src/test/java/com/brainwallet/tools/util/LocaleHelperTest.kt b/app/src/test/java/com/brainwallet/tools/util/LocaleHelperTest.kt index b9bf329f..3e017a1c 100644 --- a/app/src/test/java/com/brainwallet/tools/util/LocaleHelperTest.kt +++ b/app/src/test/java/com/brainwallet/tools/util/LocaleHelperTest.kt @@ -56,7 +56,7 @@ class LocaleHelperTest { fun `check all language codes`() { Language.entries .also { languages -> - assertEquals(17, languages.size) + assertEquals(16, languages.size) } .map { it.code } .also { langCodes -> @@ -78,7 +78,6 @@ class LocaleHelperTest { "zh-CN", "hi", "it", - " " ///Hack: implementation and allow the user to pick the last language ), langCodes )