manual cherry picking

This commit is contained in:
julian 2023-11-14 16:33:54 -06:00
parent b776ba0678
commit 28efe3e18d
5 changed files with 101 additions and 18 deletions

View file

@ -23,6 +23,7 @@ import 'package:stackwallet/providers/global/wallets_provider.dart';
import 'package:stackwallet/themes/stack_colors.dart'; import 'package:stackwallet/themes/stack_colors.dart';
import 'package:stackwallet/utilities/assets.dart'; import 'package:stackwallet/utilities/assets.dart';
import 'package:stackwallet/utilities/constants.dart'; import 'package:stackwallet/utilities/constants.dart';
import 'package:stackwallet/utilities/enums/coin_enum.dart';
import 'package:stackwallet/utilities/text_styles.dart'; import 'package:stackwallet/utilities/text_styles.dart';
import 'package:stackwallet/wallets/wallet/mixins/cash_fusion.dart'; import 'package:stackwallet/wallets/wallet/mixins/cash_fusion.dart';
import 'package:stackwallet/widgets/background.dart'; import 'package:stackwallet/widgets/background.dart';
@ -54,6 +55,7 @@ class _CashFusionViewState extends ConsumerState<CashFusionView> {
late final FocusNode portFocusNode; late final FocusNode portFocusNode;
late final TextEditingController fusionRoundController; late final TextEditingController fusionRoundController;
late final FocusNode fusionRoundFocusNode; late final FocusNode fusionRoundFocusNode;
Coin? coin;
bool _enableSSLCheckbox = false; bool _enableSSLCheckbox = false;
bool _enableStartButton = false; bool _enableStartButton = false;
@ -87,7 +89,11 @@ class _CashFusionViewState extends ConsumerState<CashFusionView> {
); );
// update user prefs (persistent) // update user prefs (persistent)
ref.read(prefsChangeNotifierProvider).fusionServerInfo = newInfo; if (coin == Coin.bitcoincash) {
ref.read(prefsChangeNotifierProvider).fusionServerInfoBch = newInfo;
} else {
ref.read(prefsChangeNotifierProvider).fusionServerInfoXec = newInfo;
}
unawaited( unawaited(
fusionWallet.fuse( fusionWallet.fuse(
@ -111,7 +117,16 @@ class _CashFusionViewState extends ConsumerState<CashFusionView> {
portFocusNode = FocusNode(); portFocusNode = FocusNode();
fusionRoundFocusNode = FocusNode(); fusionRoundFocusNode = FocusNode();
final info = ref.read(prefsChangeNotifierProvider).fusionServerInfo; coin = ref
.read(walletsChangeNotifierProvider)
.getManager(widget.walletId)
.wallet
.coin;
final info = (coin == Coin.bitcoincash)
? ref.read(prefsChangeNotifierProvider).fusionServerInfoBch
: ref.read(prefsChangeNotifierProvider).fusionServerInfoXec;
serverController.text = info.host; serverController.text = info.host;
portController.text = info.port.toString(); portController.text = info.port.toString();
_enableSSLCheckbox = info.ssl; _enableSSLCheckbox = info.ssl;
@ -212,7 +227,9 @@ class _CashFusionViewState extends ConsumerState<CashFusionView> {
CustomTextButton( CustomTextButton(
text: "Default", text: "Default",
onTap: () { onTap: () {
const def = FusionInfo.DEFAULTS; final def = (coin == Coin.bitcoincash)
? FusionInfo.BCH_DEFAULTS
: FusionInfo.XEC_DEFAULTS;
serverController.text = def.host; serverController.text = def.host;
portController.text = def.port.toString(); portController.text = def.port.toString();
fusionRoundController.text = fusionRoundController.text =

View file

@ -17,6 +17,7 @@ import 'package:stackwallet/providers/cash_fusion/fusion_progress_ui_state_provi
import 'package:stackwallet/providers/global/prefs_provider.dart'; import 'package:stackwallet/providers/global/prefs_provider.dart';
import 'package:stackwallet/providers/global/wallets_provider.dart'; import 'package:stackwallet/providers/global/wallets_provider.dart';
import 'package:stackwallet/themes/stack_colors.dart'; import 'package:stackwallet/themes/stack_colors.dart';
import 'package:stackwallet/utilities/enums/coin_enum.dart';
import 'package:stackwallet/utilities/show_loading.dart'; import 'package:stackwallet/utilities/show_loading.dart';
import 'package:stackwallet/utilities/text_styles.dart'; import 'package:stackwallet/utilities/text_styles.dart';
import 'package:stackwallet/utilities/util.dart'; import 'package:stackwallet/utilities/util.dart';
@ -37,12 +38,13 @@ class FusionProgressView extends ConsumerStatefulWidget {
static const routeName = "/cashFusionProgressView"; static const routeName = "/cashFusionProgressView";
final String walletId; final String walletId;
@override @override
ConsumerState<FusionProgressView> createState() => _FusionProgressViewState(); ConsumerState<FusionProgressView> createState() => _FusionProgressViewState();
} }
class _FusionProgressViewState extends ConsumerState<FusionProgressView> { class _FusionProgressViewState extends ConsumerState<FusionProgressView> {
Coin? coin;
Future<bool> _requestAndProcessCancel() async { Future<bool> _requestAndProcessCancel() async {
final shouldCancel = await showDialog<bool?>( final shouldCancel = await showDialog<bool?>(
context: context, context: context,
@ -98,6 +100,12 @@ class _FusionProgressViewState extends ConsumerState<FusionProgressView> {
.watch(fusionProgressUIStateProvider(widget.walletId)) .watch(fusionProgressUIStateProvider(widget.walletId))
.fusionRoundsCompleted; .fusionRoundsCompleted;
coin = ref
.read(walletsChangeNotifierProvider)
.getManager(widget.walletId)
.wallet
.coin;
return WillPopScope( return WillPopScope(
onWillPop: () async { onWillPop: () async {
return await _requestAndProcessCancel(); return await _requestAndProcessCancel();
@ -226,7 +234,9 @@ class _FusionProgressViewState extends ConsumerState<FusionProgressView> {
final fusionWallet = final fusionWallet =
ref.read(pWallets).getWallet(widget.walletId) as CashFusion; ref.read(pWallets).getWallet(widget.walletId) as CashFusion;
final fusionInfo = ref.read(prefsChangeNotifierProvider).fusionServerInfo; final fusionInfo = (coin == Coin.bitcoincash)
? ref.read(prefsChangeNotifierProvider).fusionServerInfoBch
: ref.read(prefsChangeNotifierProvider).fusionServerInfoXec;
try { try {
fusionWallet.uiState = ref.read( fusionWallet.uiState = ref.read(

View file

@ -25,6 +25,7 @@ import 'package:stackwallet/providers/global/wallets_provider.dart';
import 'package:stackwallet/themes/stack_colors.dart'; import 'package:stackwallet/themes/stack_colors.dart';
import 'package:stackwallet/utilities/assets.dart'; import 'package:stackwallet/utilities/assets.dart';
import 'package:stackwallet/utilities/constants.dart'; import 'package:stackwallet/utilities/constants.dart';
import 'package:stackwallet/utilities/enums/coin_enum.dart';
import 'package:stackwallet/utilities/text_styles.dart'; import 'package:stackwallet/utilities/text_styles.dart';
import 'package:stackwallet/wallets/wallet/mixins/cash_fusion.dart'; import 'package:stackwallet/wallets/wallet/mixins/cash_fusion.dart';
import 'package:stackwallet/widgets/custom_buttons/app_bar_icon_button.dart'; import 'package:stackwallet/widgets/custom_buttons/app_bar_icon_button.dart';
@ -58,6 +59,7 @@ class _DesktopCashFusion extends ConsumerState<DesktopCashFusionView> {
late final FocusNode portFocusNode; late final FocusNode portFocusNode;
late final TextEditingController fusionRoundController; late final TextEditingController fusionRoundController;
late final FocusNode fusionRoundFocusNode; late final FocusNode fusionRoundFocusNode;
late final Coin coin;
bool _enableStartButton = false; bool _enableStartButton = false;
bool _enableSSLCheckbox = false; bool _enableSSLCheckbox = false;
@ -91,7 +93,11 @@ class _DesktopCashFusion extends ConsumerState<DesktopCashFusionView> {
); );
// update user prefs (persistent) // update user prefs (persistent)
ref.read(prefsChangeNotifierProvider).fusionServerInfo = newInfo; if (coin == Coin.bitcoincash) {
ref.read(prefsChangeNotifierProvider).fusionServerInfoBch = newInfo;
} else {
ref.read(prefsChangeNotifierProvider).fusionServerInfoXec = newInfo;
}
unawaited( unawaited(
fusionWallet.fuse( fusionWallet.fuse(
@ -120,7 +126,16 @@ class _DesktopCashFusion extends ConsumerState<DesktopCashFusionView> {
portFocusNode = FocusNode(); portFocusNode = FocusNode();
fusionRoundFocusNode = FocusNode(); fusionRoundFocusNode = FocusNode();
final info = ref.read(prefsChangeNotifierProvider).fusionServerInfo; coin = ref
.read(walletsChangeNotifierProvider)
.getManager(widget.walletId)
.wallet
.coin;
final info = (coin == Coin.bitcoincash)
? ref.read(prefsChangeNotifierProvider).fusionServerInfoBch
: ref.read(prefsChangeNotifierProvider).fusionServerInfoXec;
serverController.text = info.host; serverController.text = info.host;
portController.text = info.port.toString(); portController.text = info.port.toString();
_enableSSLCheckbox = info.ssl; _enableSSLCheckbox = info.ssl;
@ -334,7 +349,9 @@ class _DesktopCashFusion extends ConsumerState<DesktopCashFusionView> {
CustomTextButton( CustomTextButton(
text: "Default", text: "Default",
onTap: () { onTap: () {
const def = FusionInfo.DEFAULTS; final def = (coin == Coin.bitcoincash)
? FusionInfo.BCH_DEFAULTS
: FusionInfo.XEC_DEFAULTS;
serverController.text = def.host; serverController.text = def.host;
portController.text = def.port.toString(); portController.text = def.port.toString();
fusionRoundController.text = fusionRoundController.text =

View file

@ -7,6 +7,7 @@ import 'package:stackwallet/providers/cash_fusion/fusion_progress_ui_state_provi
import 'package:stackwallet/providers/global/prefs_provider.dart'; import 'package:stackwallet/providers/global/prefs_provider.dart';
import 'package:stackwallet/providers/global/wallets_provider.dart'; import 'package:stackwallet/providers/global/wallets_provider.dart';
import 'package:stackwallet/themes/stack_colors.dart'; import 'package:stackwallet/themes/stack_colors.dart';
import 'package:stackwallet/utilities/enums/coin_enum.dart';
import 'package:stackwallet/utilities/show_loading.dart'; import 'package:stackwallet/utilities/show_loading.dart';
import 'package:stackwallet/utilities/text_styles.dart'; import 'package:stackwallet/utilities/text_styles.dart';
import 'package:stackwallet/wallets/wallet/mixins/cash_fusion.dart'; import 'package:stackwallet/wallets/wallet/mixins/cash_fusion.dart';
@ -39,6 +40,8 @@ class FusionDialogView extends ConsumerStatefulWidget {
} }
class _FusionDialogViewState extends ConsumerState<FusionDialogView> { class _FusionDialogViewState extends ConsumerState<FusionDialogView> {
Coin? coin;
Future<bool> _requestAndProcessCancel() async { Future<bool> _requestAndProcessCancel() async {
if (!ref.read(fusionProgressUIStateProvider(widget.walletId)).running) { if (!ref.read(fusionProgressUIStateProvider(widget.walletId)).running) {
return true; return true;
@ -151,6 +154,12 @@ class _FusionDialogViewState extends ConsumerState<FusionDialogView> {
.watch(fusionProgressUIStateProvider(widget.walletId)) .watch(fusionProgressUIStateProvider(widget.walletId))
.fusionRoundsCompleted; .fusionRoundsCompleted;
coin = ref
.read(walletsChangeNotifierProvider)
.getManager(widget.walletId)
.wallet
.coin;
return DesktopDialog( return DesktopDialog(
maxHeight: 600, maxHeight: 600,
child: SingleChildScrollView( child: SingleChildScrollView(
@ -284,7 +293,9 @@ class _FusionDialogViewState extends ConsumerState<FusionDialogView> {
final fusionWallet = final fusionWallet =
ref.read(pWallets).getWallet(widget.walletId) as CashFusion; ref.read(pWallets).getWallet(widget.walletId) as CashFusion;
final fusionInfo = ref.read(prefsChangeNotifierProvider).fusionServerInfo; final fusionInfo = (coin == Coin.bitcoincash)
? ref.read(prefsChangeNotifierProvider).fusionServerInfoBch
: ref.read(prefsChangeNotifierProvider).fusionServerInfoXec;
try { try {
fusionWallet.uiState = ref.read( fusionWallet.uiState = ref.read(

View file

@ -65,7 +65,8 @@ class Prefs extends ChangeNotifier {
await _setAmountUnits(); await _setAmountUnits();
await _setMaxDecimals(); await _setMaxDecimals();
_useTor = await _getUseTor(); _useTor = await _getUseTor();
_fusionServerInfo = await _getFusionServerInfo(); _fusionServerInfoBch = await _getFusionServerInfoBch();
_fusionServerInfoXec = await _getFusionServerInfoXec();
_initialized = true; _initialized = true;
} }
@ -936,32 +937,59 @@ class Prefs extends ChangeNotifier {
// fusion server info // fusion server info
FusionInfo _fusionServerInfo = FusionInfo.DEFAULTS; FusionInfo _fusionServerInfoBch = FusionInfo.BCH_DEFAULTS;
FusionInfo _fusionServerInfoXec = FusionInfo.XEC_DEFAULTS;
FusionInfo get fusionServerInfo => _fusionServerInfo; FusionInfo get fusionServerInfoBch => _fusionServerInfoBch;
FusionInfo get fusionServerInfoXec => _fusionServerInfoXec;
set fusionServerInfo(FusionInfo fusionServerInfo) { set fusionServerInfoBch(FusionInfo fusionServerInfo) {
if (this.fusionServerInfo != fusionServerInfo) { if (fusionServerInfoBch != fusionServerInfo) {
DB.instance.put<dynamic>( DB.instance.put<dynamic>(
boxName: DB.boxNamePrefs, boxName: DB.boxNamePrefs,
key: "fusionServerInfo", key: "fusionServerInfo",
value: fusionServerInfo.toJsonString(), value: fusionServerInfo.toJsonString(),
); );
_fusionServerInfo = fusionServerInfo; _fusionServerInfoBch = fusionServerInfo;
notifyListeners(); notifyListeners();
} }
} }
Future<FusionInfo> _getFusionServerInfo() async { set fusionServerInfoXec(FusionInfo fusionServerInfo) {
if (fusionServerInfoXec != fusionServerInfo) {
DB.instance.put<dynamic>(
boxName: DB.boxNamePrefs,
key: "fusionServerInfoXec",
value: fusionServerInfo.toJsonString(),
);
_fusionServerInfoXec = fusionServerInfo;
notifyListeners();
}
}
Future<FusionInfo> _getFusionServerInfoBch() async {
final saved = await DB.instance.get<dynamic>( final saved = await DB.instance.get<dynamic>(
boxName: DB.boxNamePrefs, boxName: DB.boxNamePrefs,
key: "fusionServerInfo", key: "fusionServerInfoBch",
) as String?; ) as String?;
try { try {
return FusionInfo.fromJsonString(saved!); return FusionInfo.fromJsonString(saved!);
} catch (_) { } catch (_) {
return FusionInfo.DEFAULTS; return FusionInfo.BCH_DEFAULTS;
}
}
Future<FusionInfo> _getFusionServerInfoXec() async {
final saved = await DB.instance.get<dynamic>(
boxName: DB.boxNamePrefs,
key: "fusionServerInfoXec",
) as String?;
try {
return FusionInfo.fromJsonString(saved!);
} catch (_) {
return FusionInfo.XEC_DEFAULTS;
} }
} }
} }