Merge pull request #928 from cypherstack/testing

firo changes
This commit is contained in:
julian-CStack 2024-07-09 10:05:09 -06:00 committed by GitHub
commit 2ee8d84543
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
44 changed files with 125 additions and 72 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

View file

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View file

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

View file

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

3
ios/.gitignore vendored
View file

@ -30,3 +30,6 @@ Runner/GeneratedPluginRegistrant.*
!default.mode2v3 !default.mode2v3
!default.pbxuser !default.pbxuser
!default.perspectivev3 !default.perspectivev3
# app specific, handled by scripts
Runner/Assets.xcassets/LaunchImage.imageset/*.png

View file

@ -174,7 +174,7 @@ class _NewWalletRecoveryPhraseWarningViewState
"write it down. Keep it safe and never share it with " "write it down. Keep it safe and never share it with "
"anyone. Your recovery phrase is the only way you can" "anyone. Your recovery phrase is the only way you can"
" access your funds if you forget your PIN, lose your" " access your funds if you forget your PIN, lose your"
" phone, etc.\n\nStack Wallet does not keep nor is " " phone, etc.\n\n${AppConfig.appName} does not keep nor is "
"able to restore your recover phrase. Only you have " "able to restore your recover phrase. Only you have "
"access to your wallet.", "access to your wallet.",
style: isDesktop style: isDesktop

View file

@ -1155,7 +1155,7 @@ class _BuyFormState extends ConsumerState<BuyForm> {
), ),
if (AppConfig.isStackCoin(selectedCrypto?.ticker)) if (AppConfig.isStackCoin(selectedCrypto?.ticker))
CustomTextButton( CustomTextButton(
text: "Choose from Stack", text: "Choose from ${AppConfig.prefix}",
onTap: () { onTap: () {
try { try {
final coin = AppConfig.getCryptoCurrencyForTicker( final coin = AppConfig.getCryptoCurrencyForTicker(

View file

@ -194,7 +194,7 @@ class _Step2ViewState extends ConsumerState<Step2View> {
), ),
if (AppConfig.isStackCoin(model.receiveTicker)) if (AppConfig.isStackCoin(model.receiveTicker))
CustomTextButton( CustomTextButton(
text: "Choose from Stack", text: "Choose from ${AppConfig.prefix}",
onTap: () { onTap: () {
try { try {
final coin = AppConfig.coins.firstWhere( final coin = AppConfig.coins.firstWhere(
@ -480,7 +480,7 @@ class _Step2ViewState extends ConsumerState<Step2View> {
), ),
if (AppConfig.isStackCoin(model.sendTicker)) if (AppConfig.isStackCoin(model.sendTicker))
CustomTextButton( CustomTextButton(
text: "Choose from Stack", text: "Choose from ${AppConfig.prefix}",
onTap: () { onTap: () {
try { try {
final coin = AppConfig.coins.firstWhere( final coin = AppConfig.coins.firstWhere(

View file

@ -14,10 +14,9 @@ import 'dart:io';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import '../../app_config.dart';
import '../../models/exchange/response_objects/trade.dart'; import '../../models/exchange/response_objects/trade.dart';
import 'confirm_change_now_send.dart';
import '../home_view/home_view.dart';
import '../send_view/sub_widgets/building_transaction_dialog.dart';
import '../../pages_desktop_specific/desktop_exchange/desktop_exchange_view.dart'; import '../../pages_desktop_specific/desktop_exchange/desktop_exchange_view.dart';
import '../../providers/providers.dart'; import '../../providers/providers.dart';
import '../../route_generator.dart'; import '../../route_generator.dart';
@ -43,6 +42,9 @@ import '../../widgets/desktop/desktop_dialog_close_button.dart';
import '../../widgets/expandable.dart'; import '../../widgets/expandable.dart';
import '../../widgets/rounded_white_container.dart'; import '../../widgets/rounded_white_container.dart';
import '../../widgets/stack_dialog.dart'; import '../../widgets/stack_dialog.dart';
import '../home_view/home_view.dart';
import '../send_view/sub_widgets/building_transaction_dialog.dart';
import 'confirm_change_now_send.dart';
class SendFromView extends ConsumerStatefulWidget { class SendFromView extends ConsumerStatefulWidget {
const SendFromView({ const SendFromView({
@ -135,7 +137,7 @@ class _SendFromViewState extends ConsumerState<SendFromView> {
left: 32, left: 32,
), ),
child: Text( child: Text(
"Send from Stack", "Send from ${AppConfig.prefix}",
style: STextStyles.desktopH3(context), style: STextStyles.desktopH3(context),
), ),
), ),

View file

@ -264,7 +264,7 @@ class _TradeDetailsViewState extends ConsumerState<TradeDetailsView> {
trade.status == "waiting" || trade.status == "waiting" ||
trade.status == "Waiting")) trade.status == "Waiting"))
SecondaryButton( SecondaryButton(
label: "Send from Stack", label: "Send from ${AppConfig.prefix}",
buttonHeight: ButtonHeight.l, buttonHeight: ButtonHeight.l,
onPressed: () { onPressed: () {
CryptoCurrency coin; CryptoCurrency coin;
@ -1379,7 +1379,7 @@ class _TradeDetailsViewState extends ConsumerState<TradeDetailsView> {
trade.status == "waiting" || trade.status == "waiting" ||
trade.status == "Waiting")) trade.status == "Waiting"))
SecondaryButton( SecondaryButton(
label: "Send from Stack", label: "Send from ${AppConfig.prefix}",
onPressed: () { onPressed: () {
CryptoCurrency coin; CryptoCurrency coin;
try { try {

View file

@ -171,7 +171,7 @@ class _IntroViewState extends ConsumerState<IntroView> {
), ),
if (isDesktop) if (isDesktop)
SecondaryButton( SecondaryButton(
label: "Restore from Stack backup", label: "Restore from ${AppConfig.prefix} backup",
onPressed: () { onPressed: () {
Navigator.of(context).pushNamed( Navigator.of(context).pushNamed(
CreatePasswordView.routeName, CreatePasswordView.routeName,
@ -314,7 +314,7 @@ class GetStartedButton extends StatelessWidget {
); );
}, },
child: Text( child: Text(
"Create new Stack", "Create new ${AppConfig.prefix}",
style: STextStyles.button(context).copyWith(fontSize: 20), style: STextStyles.button(context).copyWith(fontSize: 20),
), ),
), ),

View file

@ -12,6 +12,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:tuple/tuple.dart'; import 'package:tuple/tuple.dart';
import '../../../../app_config.dart';
import '../../../../providers/global/prefs_provider.dart'; import '../../../../providers/global/prefs_provider.dart';
import '../../../../themes/stack_colors.dart'; import '../../../../themes/stack_colors.dart';
import '../../../../utilities/constants.dart'; import '../../../../utilities/constants.dart';
@ -218,7 +219,7 @@ class AdvancedSettingsView extends StatelessWidget {
text: TextSpan( text: TextSpan(
children: [ children: [
TextSpan( TextSpan(
text: "Stack Experience", text: "${AppConfig.prefix} Experience",
style: STextStyles.titleBold12(context), style: STextStyles.titleBold12(context),
), ),
TextSpan( TextSpan(

View file

@ -99,7 +99,7 @@ class GlobalSettingsView extends StatelessWidget {
SettingsListButton( SettingsListButton(
iconAssetName: Assets.svg.downloadFolder, iconAssetName: Assets.svg.downloadFolder,
iconSize: 14, iconSize: 14,
title: "Stack backup & restore", title: "${AppConfig.prefix} backup & restore",
onPressed: () { onPressed: () {
Navigator.push( Navigator.push(
context, context,
@ -113,9 +113,9 @@ class GlobalSettingsView extends StatelessWidget {
biometricsCancelButtonString: biometricsCancelButtonString:
"CANCEL", "CANCEL",
biometricsLocalizedReason: biometricsLocalizedReason:
"Authenticate to access Stack backup & restore settings", "Authenticate to access ${AppConfig.prefix} backup & restore settings",
biometricsAuthenticationTitle: biometricsAuthenticationTitle:
"Stack backup", "${AppConfig.prefix} backup",
), ),
settings: const RouteSettings( settings: const RouteSettings(
name: "/swblockscreen", name: "/swblockscreen",

View file

@ -14,6 +14,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
import '../../../../app_config.dart';
import '../../../../providers/global/auto_swb_service_provider.dart'; import '../../../../providers/global/auto_swb_service_provider.dart';
import '../../../../providers/providers.dart'; import '../../../../providers/providers.dart';
import '../../../../themes/stack_colors.dart'; import '../../../../themes/stack_colors.dart';
@ -316,7 +317,7 @@ class _AutoBackupViewState extends ConsumerState<AutoBackupView> {
children: [ children: [
const TextSpan( const TextSpan(
text: text:
"Auto Backup is a custom Stack Wallet feature that offers a convenient backup of your data.\n\nTo ensure maximum security, we recommend using a unique password that you haven't used anywhere else on the internet before. Your password is not stored.\n\nFor more information, please see our website ", "Auto Backup is a custom ${AppConfig.appName} feature that offers a convenient backup of your data.\n\nTo ensure maximum security, we recommend using a unique password that you haven't used anywhere else on the internet before. Your password is not stored.\n\nFor more information, please see our website ",
), ),
TextSpan( TextSpan(
text: "stackwallet.com.", text: "stackwallet.com.",

View file

@ -18,6 +18,7 @@ import 'package:flutter_svg/svg.dart';
import 'package:stack_wallet_backup/stack_wallet_backup.dart'; import 'package:stack_wallet_backup/stack_wallet_backup.dart';
import 'package:zxcvbn/zxcvbn.dart'; import 'package:zxcvbn/zxcvbn.dart';
import '../../../../app_config.dart';
import '../../../../notifications/show_flush_bar.dart'; import '../../../../notifications/show_flush_bar.dart';
import '../../../../providers/global/prefs_provider.dart'; import '../../../../providers/global/prefs_provider.dart';
import '../../../../providers/global/secure_store_provider.dart'; import '../../../../providers/global/secure_store_provider.dart';
@ -651,12 +652,12 @@ class _EnableAutoBackupViewState extends ConsumerState<CreateAutoBackupView> {
builder: (_) => Platform.isAndroid builder: (_) => Platform.isAndroid
? StackOkDialog( ? StackOkDialog(
title: title:
"Stack Auto Backup enabled and saved to:", "${AppConfig.prefix} Auto Backup enabled and saved to:",
message: fileToSave, message: fileToSave,
) )
: const StackOkDialog( : const StackOkDialog(
title: title:
"Stack Auto Backup enabled!", "${AppConfig.prefix} Auto Backup enabled!",
), ),
); );
if (mounted) { if (mounted) {

View file

@ -17,6 +17,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:zxcvbn/zxcvbn.dart'; import 'package:zxcvbn/zxcvbn.dart';
import '../../../../app_config.dart';
import '../../../../notifications/show_flush_bar.dart'; import '../../../../notifications/show_flush_bar.dart';
import '../../../../providers/global/secure_store_provider.dart'; import '../../../../providers/global/secure_store_provider.dart';
import '../../../../themes/stack_colors.dart'; import '../../../../themes/stack_colors.dart';
@ -774,7 +775,7 @@ class _RestoreFromFileViewState extends State<CreateBackupView> {
height: 26, height: 26,
), ),
Text( Text(
"Stack backup saved to: \n", "${AppConfig.prefix} backup saved to: \n",
style: STextStyles style: STextStyles
.desktopH3(context), .desktopH3(context),
), ),

View file

@ -10,6 +10,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../../../../../app_config.dart';
import '../../../../../themes/stack_colors.dart'; import '../../../../../themes/stack_colors.dart';
import '../../../../../utilities/text_styles.dart'; import '../../../../../utilities/text_styles.dart';
import '../../../../../utilities/util.dart'; import '../../../../../utilities/util.dart';
@ -89,7 +90,7 @@ class CancelStackRestoreDialog extends StatelessWidget {
.snackBarBackError, .snackBarBackError,
child: Text( child: Text(
"If you cancel, the restore will not complete, and " "If you cancel, the restore will not complete, and "
"the wallets will not appear in your Stack.", "the wallets will not appear in your ${AppConfig.prefix}.",
style: STextStyles.desktopTextMedium(context), style: STextStyles.desktopTextMedium(context),
), ),
), ),

View file

@ -20,6 +20,7 @@ import 'package:flutter_svg/svg.dart';
import 'package:stack_wallet_backup/stack_wallet_backup.dart'; import 'package:stack_wallet_backup/stack_wallet_backup.dart';
import 'package:zxcvbn/zxcvbn.dart'; import 'package:zxcvbn/zxcvbn.dart';
import '../../../../app_config.dart';
import '../../../../notifications/show_flush_bar.dart'; import '../../../../notifications/show_flush_bar.dart';
import '../../../../providers/global/prefs_provider.dart'; import '../../../../providers/global/prefs_provider.dart';
import '../../../../providers/global/secure_store_provider.dart'; import '../../../../providers/global/secure_store_provider.dart';
@ -221,10 +222,11 @@ class _EditAutoBackupViewState extends ConsumerState<EditAutoBackupView> {
barrierDismissible: false, barrierDismissible: false,
builder: (_) => Platform.isAndroid builder: (_) => Platform.isAndroid
? StackOkDialog( ? StackOkDialog(
title: "Stack Auto Backup saved to:", title: "${AppConfig.prefix} Auto Backup saved to:",
message: fileToSave, message: fileToSave,
) )
: const StackOkDialog(title: "Stack Auto Backup saved"), : const StackOkDialog(
title: "${AppConfig.prefix} Auto Backup saved"),
); );
if (mounted) { if (mounted) {
passwordController.text = ""; passwordController.text = "";

View file

@ -14,6 +14,8 @@ import 'package:file_picker/file_picker.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:path_provider/path_provider.dart'; import 'package:path_provider/path_provider.dart';
import 'package:permission_handler/permission_handler.dart'; import 'package:permission_handler/permission_handler.dart';
import '../../../../../app_config.dart';
import '../../../../../utilities/util.dart'; import '../../../../../utilities/util.dart';
class SWBFileSystem { class SWBFileSystem {
@ -39,17 +41,18 @@ class SWBFileSystem {
// debugPrint(rootPath!.absolute.toString()); // debugPrint(rootPath!.absolute.toString());
late Directory sampleFolder; late Directory sampleFolder;
const dirName = "${AppConfig.prefix}_backup";
if (Platform.isIOS) { if (Platform.isIOS) {
sampleFolder = Directory(rootPath!.path); sampleFolder = Directory(rootPath!.path);
} else if (Platform.isAndroid) { } else if (Platform.isAndroid) {
sampleFolder = Directory('${rootPath!.path}Documents/Stack_backups'); sampleFolder = Directory('${rootPath!.path}Documents/$dirName');
} else if (Platform.isLinux) { } else if (Platform.isLinux) {
sampleFolder = Directory('${rootPath!.path}/Stack_backups'); sampleFolder = Directory('${rootPath!.path}/$dirName');
} else if (Platform.isWindows) { } else if (Platform.isWindows) {
sampleFolder = Directory('${rootPath!.path}/Stack_backups'); sampleFolder = Directory('${rootPath!.path}/$dirName');
} else if (Platform.isMacOS) { } else if (Platform.isMacOS) {
sampleFolder = Directory('${rootPath!.path}/Stack_backups'); sampleFolder = Directory('${rootPath!.path}/$dirName');
} }
try { try {

View file

@ -14,6 +14,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:tuple/tuple.dart'; import 'package:tuple/tuple.dart';
import '../../../../app_config.dart';
import '../../../../notifications/show_flush_bar.dart'; import '../../../../notifications/show_flush_bar.dart';
import '../../../../route_generator.dart'; import '../../../../route_generator.dart';
import '../../../../themes/stack_colors.dart'; import '../../../../themes/stack_colors.dart';
@ -205,7 +206,7 @@ class _RestoreFromEncryptedStringViewState
color: Colors.transparent, color: Colors.transparent,
child: Center( child: Center(
child: Text( child: Text(
"Decrypting Stack backup file", "Decrypting ${AppConfig.prefix} backup file",
style: style:
STextStyles.pageTitleH2( STextStyles.pageTitleH2(
context, context,

View file

@ -338,7 +338,7 @@ class _RestoreFromFileViewState extends ConsumerState<RestoreFromFileView> {
color: Colors.transparent, color: Colors.transparent,
child: Center( child: Center(
child: Text( child: Text(
"Decrypting Stack backup file", "Decrypting ${AppConfig.prefix} backup file",
style: STextStyles.pageTitleH2( style: STextStyles.pageTitleH2(
context, context,
).copyWith( ).copyWith(
@ -452,7 +452,7 @@ class _RestoreFromFileViewState extends ConsumerState<RestoreFromFileView> {
color: Colors.transparent, color: Colors.transparent,
child: Center( child: Center(
child: Text( child: Text(
"Decrypting Stack backup file", "Decrypting ${AppConfig.prefix} backup file",
style: STextStyles.pageTitleH2( style: STextStyles.pageTitleH2(
context, context,
).copyWith( ).copyWith(

View file

@ -10,9 +10,8 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'auto_backup_view.dart';
import 'create_backup_view.dart'; import '../../../../app_config.dart';
import 'restore_from_file_view.dart';
import '../../../../themes/stack_colors.dart'; import '../../../../themes/stack_colors.dart';
import '../../../../utilities/assets.dart'; import '../../../../utilities/assets.dart';
import '../../../../utilities/constants.dart'; import '../../../../utilities/constants.dart';
@ -20,6 +19,9 @@ import '../../../../utilities/text_styles.dart';
import '../../../../widgets/background.dart'; import '../../../../widgets/background.dart';
import '../../../../widgets/custom_buttons/app_bar_icon_button.dart'; import '../../../../widgets/custom_buttons/app_bar_icon_button.dart';
import '../../../../widgets/rounded_white_container.dart'; import '../../../../widgets/rounded_white_container.dart';
import 'auto_backup_view.dart';
import 'create_backup_view.dart';
import 'restore_from_file_view.dart';
class StackBackupView extends StatelessWidget { class StackBackupView extends StatelessWidget {
const StackBackupView({ const StackBackupView({
@ -42,7 +44,7 @@ class StackBackupView extends StatelessWidget {
}, },
), ),
title: Text( title: Text(
"Stack backup", "${AppConfig.prefix} backup",
style: STextStyles.navBarTitle(context), style: STextStyles.navBarTitle(context),
), ),
), ),

View file

@ -170,7 +170,11 @@ class _Mnemonic extends ConsumerWidget {
child: Padding( child: Padding(
padding: const EdgeInsets.all(12), padding: const EdgeInsets.all(12),
child: Text( child: Text(
"Please write down your backup key. Keep it safe and never share it with anyone. Your backup key is the only way you can access your funds if you forget your PIN, lose your phone, etc.\n\nStack Wallet does not keep nor is able to restore your backup key. Only you have access to your wallet.", "Please write down your backup key. Keep it safe and never share "
"it with anyone. Your backup key is the only way you can access"
" your funds if you forget your PIN, lose your phone, etc.\n\n"
"${AppConfig.appName} does not keep nor is able to restore your"
" backup key. Only you have access to your wallet.",
style: STextStyles.label(context), style: STextStyles.label(context),
), ),
), ),

View file

@ -11,6 +11,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../../../../app_config.dart';
import '../../../../providers/providers.dart'; import '../../../../providers/providers.dart';
import '../../../../themes/stack_colors.dart'; import '../../../../themes/stack_colors.dart';
import '../../../../utilities/text_styles.dart'; import '../../../../utilities/text_styles.dart';
@ -69,7 +70,11 @@ class DeleteWalletWarningView extends ConsumerWidget {
.extension<StackColors>()! .extension<StackColors>()!
.warningBackground, .warningBackground,
child: Text( child: Text(
"You are going to permanently delete your wallet.\n\nIf you delete your wallet, the only way you can have access to your funds is by using your backup key.\n\nStack Wallet does not keep nor is able to restore your backup key or your wallet.\n\nPLEASE SAVE YOUR BACKUP KEY.", "You are going to permanently delete your wallet.\n\n"
"If you delete your wallet, the only way you can have access"
" to your funds is by using your backup key.\n\n"
"${AppConfig.appName} does not keep nor is able to restore "
"your backup key or your wallet.\n\nPLEASE SAVE YOUR BACKUP KEY.",
style: STextStyles.baseXS(context).copyWith( style: STextStyles.baseXS(context).copyWith(
color: Theme.of(context) color: Theme.of(context)
.extension<StackColors>()! .extension<StackColors>()!

View file

@ -960,8 +960,7 @@ class _DesktopTransactionCardRowState
unawaited( unawaited(
showFloatingFlushBar( showFloatingFlushBar(
context: context, context: context,
message: message: "Restored Epic funds from your Seed have no Data.",
"Restored Epic funds from your Seed have no Data.\nUse Stack Backup to keep your transaction history.",
type: FlushBarType.warning, type: FlushBarType.warning,
duration: const Duration(seconds: 5), duration: const Duration(seconds: 5),
), ),

View file

@ -326,7 +326,7 @@ class _DesktopStep2State extends ConsumerState<DesktopStep2> {
), ),
)) ))
CustomTextButton( CustomTextButton(
text: "Choose from Stack", text: "Choose from ${AppConfig.prefix}",
onTap: selectRecipientAddressFromStack, onTap: selectRecipientAddressFromStack,
), ),
], ],
@ -472,7 +472,7 @@ class _DesktopStep2State extends ConsumerState<DesktopStep2> {
), ),
)) ))
CustomTextButton( CustomTextButton(
text: "Choose from Stack", text: "Choose from ${AppConfig.prefix}",
onTap: selectRefundAddressFromStack, onTap: selectRefundAddressFromStack,
), ),
], ],

View file

@ -13,6 +13,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:tuple/tuple.dart'; import 'package:tuple/tuple.dart';
import '../../../app_config.dart';
import '../../../providers/providers.dart'; import '../../../providers/providers.dart';
import '../../../themes/stack_colors.dart'; import '../../../themes/stack_colors.dart';
import '../../../utilities/amount/amount.dart'; import '../../../utilities/amount/amount.dart';
@ -87,7 +88,7 @@ class _DesktopChooseFromStackState
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( Text(
"Choose from Stack", "Choose from ${AppConfig.prefix}",
style: STextStyles.desktopH3(context), style: STextStyles.desktopH3(context),
), ),
const SizedBox( const SizedBox(

View file

@ -12,6 +12,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import '../../../../../app_config.dart';
import '../../../../../db/sqlite/firo_cache.dart'; import '../../../../../db/sqlite/firo_cache.dart';
import '../../../../../providers/db/main_db_provider.dart'; import '../../../../../providers/db/main_db_provider.dart';
import '../../../../../providers/global/prefs_provider.dart'; import '../../../../../providers/global/prefs_provider.dart';
@ -281,7 +282,7 @@ class _MoreFeaturesDialogState extends ConsumerState<MoreFeaturesDialog> {
if (wallet is OrdinalsInterface) if (wallet is OrdinalsInterface)
_MoreFeaturesItem( _MoreFeaturesItem(
label: "Ordinals", label: "Ordinals",
detail: "View and control your ordinals in Stack", detail: "View and control your ordinals in ${AppConfig.prefix}",
iconAsset: Assets.svg.ordinal, iconAsset: Assets.svg.ordinal,
onPressed: () async => widget.onOrdinalsPressed?.call(), onPressed: () async => widget.onOrdinalsPressed?.call(),
), ),

View file

@ -15,6 +15,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:isar/isar.dart'; import 'package:isar/isar.dart';
import '../../app_config.dart';
import '../../db/hive/db.dart'; import '../../db/hive/db.dart';
import '../../notifications/show_flush_bar.dart'; import '../../notifications/show_flush_bar.dart';
import '../../pages/intro_view.dart'; import '../../pages/intro_view.dart';
@ -143,7 +144,7 @@ class _ForgotPasswordDesktopViewState
), ),
TextSpan( TextSpan(
text: widget.shouldCreateNew text: widget.shouldCreateNew
? "create a new Stack" ? "create a new ${AppConfig.prefix}"
: "restore from backup", : "restore from backup",
style: STextStyles.desktopTextSmallBold(context), style: STextStyles.desktopTextSmallBold(context),
), ),

View file

@ -74,7 +74,9 @@ class _ForgotPasswordDesktopViewState
SizedBox( SizedBox(
width: 400, width: 400,
child: Text( child: Text(
"${AppConfig.appName} does not store your password. Create new wallet or use a Stack backup file to restore your wallet.", "${AppConfig.appName} does not store your password. "
"Create new wallet or use a ${AppConfig.prefix} "
"backup file to restore your wallet.",
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: STextStyles.desktopTextSmall(context).copyWith( style: STextStyles.desktopTextSmall(context).copyWith(
color: Theme.of(context) color: Theme.of(context)
@ -87,7 +89,7 @@ class _ForgotPasswordDesktopViewState
height: 48, height: 48,
), ),
PrimaryButton( PrimaryButton(
label: "Create new Stack", label: "Create new ${AppConfig.prefix}",
onPressed: () { onPressed: () {
const shouldCreateNew = true; const shouldCreateNew = true;
Navigator.of(context).pushNamed( Navigator.of(context).pushNamed(
@ -100,7 +102,7 @@ class _ForgotPasswordDesktopViewState
height: 24, height: 24,
), ),
SecondaryButton( SecondaryButton(
label: "Restore from Stack backup", label: "Restore from ${AppConfig.prefix} backup",
onPressed: () { onPressed: () {
const shouldCreateNew = false; const shouldCreateNew = false;
Navigator.of(context).pushNamed( Navigator.of(context).pushNamed(

View file

@ -94,7 +94,7 @@ class _ForgottenPassphraseRestoreFromSWBState
color: Colors.transparent, color: Colors.transparent,
child: Center( child: Center(
child: Text( child: Text(
"Decrypting Stack backup file", "Decrypting ${AppConfig.prefix} backup file",
style: STextStyles.pageTitleH2(context).copyWith( style: STextStyles.pageTitleH2(context).copyWith(
color: color:
Theme.of(context).extension<StackColors>()!.textWhite, Theme.of(context).extension<StackColors>()!.textWhite,
@ -245,7 +245,7 @@ class _ForgottenPassphraseRestoreFromSWBState
height: 32, height: 32,
), ),
Text( Text(
"Use your Stack backup file to restore your wallets, address book, and wallet preferences.", "Use your ${AppConfig.prefix} backup file to restore your wallets, address book, and wallet preferences.",
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: STextStyles.desktopTextSmall(context).copyWith( style: STextStyles.desktopTextSmall(context).copyWith(
color: Theme.of(context) color: Theme.of(context)

View file

@ -12,6 +12,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import '../../../../app_config.dart';
import '../../../../pages/settings_views/global_settings_view/advanced_views/manage_coin_units/manage_coin_units_view.dart'; import '../../../../pages/settings_views/global_settings_view/advanced_views/manage_coin_units/manage_coin_units_view.dart';
import '../../../../providers/global/prefs_provider.dart'; import '../../../../providers/global/prefs_provider.dart';
import '../../../../themes/stack_colors.dart'; import '../../../../themes/stack_colors.dart';
@ -184,7 +185,7 @@ class _AdvancedSettings extends ConsumerState<AdvancedSettings> {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( Text(
"Stack Experience", "${AppConfig.prefix} Experience",
style: STextStyles.desktopTextExtraSmall( style: STextStyles.desktopTextExtraSmall(
context, context,
).copyWith( ).copyWith(

View file

@ -20,6 +20,7 @@ import 'package:flutter_svg/svg.dart';
import 'package:stack_wallet_backup/stack_wallet_backup.dart'; import 'package:stack_wallet_backup/stack_wallet_backup.dart';
import 'package:zxcvbn/zxcvbn.dart'; import 'package:zxcvbn/zxcvbn.dart';
import '../../../../app_config.dart';
import '../../../../notifications/show_flush_bar.dart'; import '../../../../notifications/show_flush_bar.dart';
import '../../../../pages/settings_views/global_settings_view/stack_backup_views/helpers/restore_create_backup.dart'; import '../../../../pages/settings_views/global_settings_view/stack_backup_views/helpers/restore_create_backup.dart';
import '../../../../pages/settings_views/global_settings_view/stack_backup_views/helpers/swb_file_system.dart'; import '../../../../pages/settings_views/global_settings_view/stack_backup_views/helpers/swb_file_system.dart';
@ -776,7 +777,7 @@ class _CreateAutoBackup extends ConsumerState<CreateAutoBackup> {
if (Platform.isAndroid) { if (Platform.isAndroid) {
return StackOkDialog( return StackOkDialog(
title: title:
"Stack Auto Backup enabled and saved to:", "${AppConfig.prefix} Auto Backup enabled and saved to:",
message: fileToSave, message: fileToSave,
); );
} else if (Util.isDesktop) { } else if (Util.isDesktop) {
@ -800,7 +801,7 @@ class _CreateAutoBackup extends ConsumerState<CreateAutoBackup> {
.spaceBetween, .spaceBetween,
children: [ children: [
Text( Text(
"Stack Auto Backup enabled!", "${AppConfig.prefix} Auto Backup enabled!",
style: style:
STextStyles.desktopH3( STextStyles.desktopH3(
context, context,
@ -834,7 +835,8 @@ class _CreateAutoBackup extends ConsumerState<CreateAutoBackup> {
); );
} else { } else {
return const StackOkDialog( return const StackOkDialog(
title: "Stack Auto Backup enabled!", title:
"${AppConfig.prefix} Auto Backup enabled!",
); );
} }
}, },

View file

@ -15,6 +15,7 @@ import 'package:event_bus/event_bus.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:isar/isar.dart'; import 'package:isar/isar.dart';
import '../app_config.dart';
import '../models/isar/models/log.dart'; import '../models/isar/models/log.dart';
import '../utilities/logger.dart'; import '../utilities/logger.dart';
@ -98,7 +99,7 @@ class DebugService extends ChangeNotifier {
Future<String> exportToFile(String directory, EventBus eventBus) async { Future<String> exportToFile(String directory, EventBus eventBus) async {
final now = DateTime.now(); final now = DateTime.now();
final filename = final filename =
"Stack_Wallet_logs_${now.year}_${now.month}_${now.day}_${now.hour}_${now.minute}_${now.second}.txt"; "${AppConfig.prefix}_Wallet_logs_${now.year}_${now.month}_${now.day}_${now.hour}_${now.minute}_${now.second}.txt";
final filepath = "$directory/$filename"; final filepath = "$directory/$filename";
final File file = await File(filepath).create(); final File file = await File(filepath).create();

View file

@ -31,7 +31,7 @@ final pThemeService = Provider<ThemeService>((ref) {
}); });
class ThemeService { class ThemeService {
static const _currentDefaultThemeVersion = 11; static const _currentDefaultThemeVersion = 15;
ThemeService._(); ThemeService._();
static ThemeService? _instance; static ThemeService? _instance;
static ThemeService get instance => _instance ??= ThemeService._(); static ThemeService get instance => _instance ??= ThemeService._();

View file

@ -181,8 +181,7 @@ class _TransactionCardState extends ConsumerState<TransactionCard> {
unawaited( unawaited(
showFloatingFlushBar( showFloatingFlushBar(
context: context, context: context,
message: message: "Restored Epic funds from your Seed have no Data.",
"Restored Epic funds from your Seed have no Data.\nUse Stack Backup to keep your transaction history.",
type: FlushBarType.warning, type: FlushBarType.warning,
duration: const Duration(seconds: 5), duration: const Duration(seconds: 5),
), ),

View file

@ -1064,26 +1064,26 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: leak_tracker name: leak_tracker
sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa" sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "10.0.0" version: "10.0.4"
leak_tracker_flutter_testing: leak_tracker_flutter_testing:
dependency: transitive dependency: transitive
description: description:
name: leak_tracker_flutter_testing name: leak_tracker_flutter_testing
sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0 sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.0.1" version: "3.0.3"
leak_tracker_testing: leak_tracker_testing:
dependency: transitive dependency: transitive
description: description:
name: leak_tracker_testing name: leak_tracker_testing
sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47 sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.0.1" version: "3.0.1"
lelantus: lelantus:
dependency: "direct main" dependency: "direct main"
description: description:
@ -1151,10 +1151,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: meta name: meta
sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04 sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.11.0" version: "1.12.0"
mime: mime:
dependency: transitive dependency: transitive
description: description:
@ -1736,26 +1736,26 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: test name: test
sha256: a1f7595805820fcc05e5c52e3a231aedd0b72972cb333e8c738a8b1239448b6f sha256: "7ee446762c2c50b3bd4ea96fe13ffac69919352bd3b4b17bac3f3465edc58073"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.24.9" version: "1.25.2"
test_api: test_api:
dependency: transitive dependency: transitive
description: description:
name: test_api name: test_api
sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.6.1" version: "0.7.0"
test_core: test_core:
dependency: transitive dependency: transitive
description: description:
name: test_core name: test_core
sha256: a757b14fc47507060a162cc2530d9a4a2f92f5100a952c7443b5cad5ef5b106a sha256: "2bc4b4ecddd75309300d8096f781c0e3280ca1ef85beda558d33fcbedc2eead4"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.5.9" version: "0.6.0"
tezart: tezart:
dependency: "direct main" dependency: "direct main"
description: description:
@ -1954,10 +1954,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: vm_service name: vm_service
sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957 sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "13.0.0" version: "14.2.1"
wakelock: wakelock:
dependency: "direct main" dependency: "direct main"
description: description:

View file

@ -15,3 +15,22 @@ done
# Configure ios for Duo. # Configure ios for Duo.
sed -i '' "s/${APP_NAME_PLACEHOLDER}/${NEW_NAME}/g" "${APP_PROJECT_ROOT_DIR}/${IOS_TF_0}" sed -i '' "s/${APP_NAME_PLACEHOLDER}/${NEW_NAME}/g" "${APP_PROJECT_ROOT_DIR}/${IOS_TF_0}"
sed -i '' "s/${APP_ID_PLACEHOLDER}/${NEW_APP_ID}/g" "${APP_PROJECT_ROOT_DIR}/${IOS_TF_1}" sed -i '' "s/${APP_ID_PLACEHOLDER}/${NEW_APP_ID}/g" "${APP_PROJECT_ROOT_DIR}/${IOS_TF_1}"
# use app specific launch images
LAUNCH_IMAGES_DIR="${APP_PROJECT_ROOT_DIR}/ios/Runner/Assets.xcassets/LaunchImage.imageset"
for file in "${LAUNCH_IMAGES_DIR}"/*.png;
do
# Check if the file exists to avoid errors if no PNG files are found
if [ -f "${file}" ]; then
rm "${file}"
fi
done
LAUNCH_IMAGES_TEMPLATES_DIR="${APP_PROJECT_ROOT_DIR}/asset_sources/other/ios_launch_image/${NEW_BASIC_NAME}"
for file in "${LAUNCH_IMAGES_TEMPLATES_DIR}"/*.png;
do
# Check if the file exists to avoid errors if no PNG files are found
if [ -f "${file}" ]; then
cp "${file}" "${LAUNCH_IMAGES_DIR}/"
fi
done