mirror of
https://github.com/cake-tech/cake_wallet.git
synced 2024-11-17 09:47:35 +00:00
CW-349 MacOS UI issue when navigating to Transaction details screen (#921)
* Fix macos ui issues when navigatng to transaction detail screen * [skip ci] remove print and indent * Refactor previous approach based on PR review * Code Enhancements * Fix transaction page navigation * Fix disable secure app request for macos * Update background color * Update background color * Update background color * Remove unrelated format * Fix navigation UI glitch --------- Co-authored-by: OmarHatem <omarh.ismail1@gmail.com>
This commit is contained in:
parent
bf0c2c8f35
commit
b974458f1b
8 changed files with 112 additions and 131 deletions
|
@ -14,72 +14,75 @@ class DesktopDashboardActions extends StatelessWidget {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Observer(
|
return Container(
|
||||||
builder: (_) {
|
color: Theme.of(context).colorScheme.background,
|
||||||
return Column(
|
child: Observer(
|
||||||
children: [
|
builder: (_) {
|
||||||
const SizedBox(height: 16),
|
return Column(
|
||||||
DesktopActionButton(
|
children: [
|
||||||
title: MainActions.exchangeAction.name(context),
|
const SizedBox(height: 16),
|
||||||
image: MainActions.exchangeAction.image,
|
DesktopActionButton(
|
||||||
canShow: MainActions.exchangeAction.canShow?.call(dashboardViewModel),
|
title: MainActions.exchangeAction.name(context),
|
||||||
isEnabled: MainActions.exchangeAction.isEnabled?.call(dashboardViewModel),
|
image: MainActions.exchangeAction.image,
|
||||||
onTap: () async => await MainActions.exchangeAction.onTap(context, dashboardViewModel),
|
canShow: MainActions.exchangeAction.canShow?.call(dashboardViewModel),
|
||||||
),
|
isEnabled: MainActions.exchangeAction.isEnabled?.call(dashboardViewModel),
|
||||||
Row(
|
onTap: () async => await MainActions.exchangeAction.onTap(context, dashboardViewModel),
|
||||||
children: [
|
|
||||||
Expanded(
|
|
||||||
child: DesktopActionButton(
|
|
||||||
title: MainActions.receiveAction.name(context),
|
|
||||||
image: MainActions.receiveAction.image,
|
|
||||||
canShow: MainActions.receiveAction.canShow?.call(dashboardViewModel),
|
|
||||||
isEnabled: MainActions.receiveAction.isEnabled?.call(dashboardViewModel),
|
|
||||||
onTap: () async =>
|
|
||||||
await MainActions.receiveAction.onTap(context, dashboardViewModel),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Expanded(
|
|
||||||
child: DesktopActionButton(
|
|
||||||
title: MainActions.sendAction.name(context),
|
|
||||||
image: MainActions.sendAction.image,
|
|
||||||
canShow: MainActions.sendAction.canShow?.call(dashboardViewModel),
|
|
||||||
isEnabled: MainActions.sendAction.isEnabled?.call(dashboardViewModel),
|
|
||||||
onTap: () async => await MainActions.sendAction.onTap(context, dashboardViewModel),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
Row(
|
|
||||||
children: [
|
|
||||||
Expanded(
|
|
||||||
child: DesktopActionButton(
|
|
||||||
title: MainActions.buyAction.name(context),
|
|
||||||
image: MainActions.buyAction.image,
|
|
||||||
canShow: MainActions.buyAction.canShow?.call(dashboardViewModel),
|
|
||||||
isEnabled: MainActions.buyAction.isEnabled?.call(dashboardViewModel),
|
|
||||||
onTap: () async => await MainActions.buyAction.onTap(context, dashboardViewModel),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Expanded(
|
|
||||||
child: DesktopActionButton(
|
|
||||||
title: MainActions.sellAction.name(context),
|
|
||||||
image: MainActions.sellAction.image,
|
|
||||||
canShow: MainActions.sellAction.canShow?.call(dashboardViewModel),
|
|
||||||
isEnabled: MainActions.sellAction.isEnabled?.call(dashboardViewModel),
|
|
||||||
onTap: () async => await MainActions.sellAction.onTap(context, dashboardViewModel),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
Expanded(
|
|
||||||
child: MarketPlacePage(
|
|
||||||
dashboardViewModel: dashboardViewModel,
|
|
||||||
marketPlaceViewModel: getIt.get<MarketPlaceViewModel>(),
|
|
||||||
),
|
),
|
||||||
),
|
Row(
|
||||||
],
|
children: [
|
||||||
);
|
Expanded(
|
||||||
}
|
child: DesktopActionButton(
|
||||||
|
title: MainActions.receiveAction.name(context),
|
||||||
|
image: MainActions.receiveAction.image,
|
||||||
|
canShow: MainActions.receiveAction.canShow?.call(dashboardViewModel),
|
||||||
|
isEnabled: MainActions.receiveAction.isEnabled?.call(dashboardViewModel),
|
||||||
|
onTap: () async =>
|
||||||
|
await MainActions.receiveAction.onTap(context, dashboardViewModel),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
child: DesktopActionButton(
|
||||||
|
title: MainActions.sendAction.name(context),
|
||||||
|
image: MainActions.sendAction.image,
|
||||||
|
canShow: MainActions.sendAction.canShow?.call(dashboardViewModel),
|
||||||
|
isEnabled: MainActions.sendAction.isEnabled?.call(dashboardViewModel),
|
||||||
|
onTap: () async => await MainActions.sendAction.onTap(context, dashboardViewModel),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child: DesktopActionButton(
|
||||||
|
title: MainActions.buyAction.name(context),
|
||||||
|
image: MainActions.buyAction.image,
|
||||||
|
canShow: MainActions.buyAction.canShow?.call(dashboardViewModel),
|
||||||
|
isEnabled: MainActions.buyAction.isEnabled?.call(dashboardViewModel),
|
||||||
|
onTap: () async => await MainActions.buyAction.onTap(context, dashboardViewModel),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
child: DesktopActionButton(
|
||||||
|
title: MainActions.sellAction.name(context),
|
||||||
|
image: MainActions.sellAction.image,
|
||||||
|
canShow: MainActions.sellAction.canShow?.call(dashboardViewModel),
|
||||||
|
isEnabled: MainActions.sellAction.isEnabled?.call(dashboardViewModel),
|
||||||
|
onTap: () async => await MainActions.sellAction.onTap(context, dashboardViewModel),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
child: MarketPlacePage(
|
||||||
|
dashboardViewModel: dashboardViewModel,
|
||||||
|
marketPlaceViewModel: getIt.get<MarketPlaceViewModel>(),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -77,27 +77,21 @@ class DesktopSidebarWrapper extends BasePage {
|
||||||
SideMenuItem(
|
SideMenuItem(
|
||||||
imagePath: 'assets/images/wallet_outline.png',
|
imagePath: 'assets/images/wallet_outline.png',
|
||||||
isSelected: desktopSidebarViewModel.currentPage == SidebarItem.dashboard,
|
isSelected: desktopSidebarViewModel.currentPage == SidebarItem.dashboard,
|
||||||
onTap: () => desktopSidebarViewModel.onPageChange(SidebarItem.dashboard),
|
onTap: () {
|
||||||
|
desktopSidebarViewModel.onPageChange(SidebarItem.dashboard);
|
||||||
|
desktopNavigatorKey.currentState
|
||||||
|
?.pushNamedAndRemoveUntil(Routes.desktop_actions, (route) => false);
|
||||||
|
},
|
||||||
),
|
),
|
||||||
SideMenuItem(
|
SideMenuItem(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
String? currentPath;
|
if (desktopSidebarViewModel.currentPage == SidebarItem.transactions) {
|
||||||
|
desktopNavigatorKey.currentState
|
||||||
desktopNavigatorKey.currentState?.popUntil((route) {
|
?.pushNamedAndRemoveUntil(Routes.desktop_actions, (route) => false);
|
||||||
currentPath = route.settings.name;
|
desktopSidebarViewModel.resetSidebar();
|
||||||
return true;
|
} else {
|
||||||
});
|
desktopSidebarViewModel.onPageChange(SidebarItem.transactions);
|
||||||
|
desktopNavigatorKey.currentState?.pushNamed(Routes.transactionsPage);
|
||||||
switch (currentPath) {
|
|
||||||
case Routes.transactionsPage:
|
|
||||||
desktopSidebarViewModel.resetSidebar();
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
desktopSidebarViewModel.resetSidebar();
|
|
||||||
Future.delayed(Duration(milliseconds: 10), () {
|
|
||||||
desktopSidebarViewModel.onPageChange(SidebarItem.transactions);
|
|
||||||
desktopNavigatorKey.currentState?.pushNamed(Routes.transactionsPage);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
isSelected: desktopSidebarViewModel.currentPage == SidebarItem.transactions,
|
isSelected: desktopSidebarViewModel.currentPage == SidebarItem.transactions,
|
||||||
|
@ -156,20 +150,11 @@ class DesktopSidebarWrapper extends BasePage {
|
||||||
|
|
||||||
void _setEffects() async {
|
void _setEffects() async {
|
||||||
reaction<SidebarItem>((_) => desktopSidebarViewModel.currentPage, (page) {
|
reaction<SidebarItem>((_) => desktopSidebarViewModel.currentPage, (page) {
|
||||||
String? currentPath;
|
if (page == SidebarItem.dashboard) {
|
||||||
|
pageController.jumpToPage(0);
|
||||||
desktopNavigatorKey.currentState?.popUntil((route) {
|
|
||||||
currentPath = route.settings.name;
|
|
||||||
return true;
|
|
||||||
});
|
|
||||||
if (page == SidebarItem.transactions) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
pageController.jumpToPage(page.index - 1);
|
||||||
if (currentPath == Routes.transactionsPage) {
|
|
||||||
Navigator.of(desktopNavigatorKey.currentContext!).pop();
|
|
||||||
}
|
|
||||||
pageController.jumpToPage(page.index);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,9 +16,6 @@ class BalancePage extends StatelessWidget {
|
||||||
final DashboardViewModel dashboardViewModel;
|
final DashboardViewModel dashboardViewModel;
|
||||||
final SettingsStore settingsStore;
|
final SettingsStore settingsStore;
|
||||||
|
|
||||||
Color get backgroundLightColor =>
|
|
||||||
settingsStore.currentTheme.type == ThemeType.bright ? Colors.transparent : Colors.white;
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return GestureDetector(
|
return GestureDetector(
|
||||||
|
|
|
@ -118,19 +118,21 @@ class _AdvancedPrivacySettingsBodyState extends State<AdvancedPrivacySettingsBod
|
||||||
textColor: Colors.white,
|
textColor: Colors.white,
|
||||||
),
|
),
|
||||||
const SizedBox(height: 25),
|
const SizedBox(height: 25),
|
||||||
Padding(
|
LayoutBuilder(
|
||||||
padding: EdgeInsets.symmetric(horizontal: MediaQuery.of(context).size.width * 0.15),
|
builder: (_, constraints) => SizedBox(
|
||||||
child: Text(
|
width: constraints.maxWidth * 0.8,
|
||||||
S.of(context).settings_can_be_changed_later,
|
child: Text(
|
||||||
textAlign: TextAlign.center,
|
S.of(context).settings_can_be_changed_later,
|
||||||
style: TextStyle(
|
textAlign: TextAlign.center,
|
||||||
color: Theme.of(context)
|
style: TextStyle(
|
||||||
|
color: Theme.of(context)
|
||||||
.accentTextTheme!
|
.accentTextTheme!
|
||||||
.displayMedium!
|
.displayMedium!
|
||||||
.color,
|
.color,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
|
@ -115,6 +115,7 @@ class NodeCreateOrEditPage extends BasePage {
|
||||||
bottomSectionPadding: EdgeInsets.only(bottom: 24),
|
bottomSectionPadding: EdgeInsets.only(bottom: 24),
|
||||||
bottomSection: Observer(
|
bottomSection: Observer(
|
||||||
builder: (_) => Row(
|
builder: (_) => Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
Flexible(
|
Flexible(
|
||||||
child: Container(
|
child: Container(
|
||||||
|
|
|
@ -145,15 +145,13 @@ abstract class SettingsStoreBase with Store {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
reaction(
|
reaction((_) => disableBuy,
|
||||||
(_) => disableBuy,
|
(bool disableBuy) => sharedPreferences.setBool(PreferencesKey.disableBuyKey, disableBuy));
|
||||||
(bool disableBuy) => sharedPreferences.setBool(
|
|
||||||
PreferencesKey.disableBuyKey, disableBuy));
|
|
||||||
|
|
||||||
reaction(
|
reaction(
|
||||||
(_) => disableSell,
|
(_) => disableSell,
|
||||||
(bool disableSell) => sharedPreferences.setBool(
|
(bool disableSell) =>
|
||||||
PreferencesKey.disableSellKey, disableSell));
|
sharedPreferences.setBool(PreferencesKey.disableSellKey, disableSell));
|
||||||
|
|
||||||
reaction(
|
reaction(
|
||||||
(_) => fiatApiMode,
|
(_) => fiatApiMode,
|
||||||
|
@ -350,12 +348,9 @@ abstract class SettingsStoreBase with Store {
|
||||||
// FIX-ME: Check for which default value we should have here
|
// FIX-ME: Check for which default value we should have here
|
||||||
final shouldSaveRecipientAddress =
|
final shouldSaveRecipientAddress =
|
||||||
sharedPreferences.getBool(PreferencesKey.shouldSaveRecipientAddressKey) ?? false;
|
sharedPreferences.getBool(PreferencesKey.shouldSaveRecipientAddressKey) ?? false;
|
||||||
final isAppSecure =
|
final isAppSecure = sharedPreferences.getBool(PreferencesKey.isAppSecureKey) ?? false;
|
||||||
sharedPreferences.getBool(PreferencesKey.isAppSecureKey) ?? false;
|
final disableBuy = sharedPreferences.getBool(PreferencesKey.disableBuyKey) ?? false;
|
||||||
final disableBuy =
|
final disableSell = sharedPreferences.getBool(PreferencesKey.disableSellKey) ?? false;
|
||||||
sharedPreferences.getBool(PreferencesKey.disableBuyKey) ?? false;
|
|
||||||
final disableSell =
|
|
||||||
sharedPreferences.getBool(PreferencesKey.disableSellKey) ?? false;
|
|
||||||
final currentFiatApiMode = FiatApiMode.deserialize(
|
final currentFiatApiMode = FiatApiMode.deserialize(
|
||||||
raw: sharedPreferences.getInt(PreferencesKey.currentFiatApiModeKey) ??
|
raw: sharedPreferences.getInt(PreferencesKey.currentFiatApiModeKey) ??
|
||||||
FiatApiMode.enabled.raw);
|
FiatApiMode.enabled.raw);
|
||||||
|
@ -487,16 +482,14 @@ abstract class SettingsStoreBase with Store {
|
||||||
useTOTP2FA = sharedPreferences.getBool(PreferencesKey.useTOTP2FA) ?? useTOTP2FA;
|
useTOTP2FA = sharedPreferences.getBool(PreferencesKey.useTOTP2FA) ?? useTOTP2FA;
|
||||||
numberOfFailedTokenTrials =
|
numberOfFailedTokenTrials =
|
||||||
sharedPreferences.getInt(PreferencesKey.failedTotpTokenTrials) ?? numberOfFailedTokenTrials;
|
sharedPreferences.getInt(PreferencesKey.failedTotpTokenTrials) ?? numberOfFailedTokenTrials;
|
||||||
sharedPreferences.getBool(PreferencesKey.shouldSaveRecipientAddressKey) ?? shouldSaveRecipientAddress;
|
sharedPreferences.getBool(PreferencesKey.shouldSaveRecipientAddressKey) ??
|
||||||
isAppSecure =
|
shouldSaveRecipientAddress;
|
||||||
sharedPreferences.getBool(PreferencesKey.isAppSecureKey) ?? isAppSecure;
|
isAppSecure = sharedPreferences.getBool(PreferencesKey.isAppSecureKey) ?? isAppSecure;
|
||||||
disableBuy =
|
disableBuy = sharedPreferences.getBool(PreferencesKey.disableBuyKey) ?? disableBuy;
|
||||||
sharedPreferences.getBool(PreferencesKey.disableBuyKey) ?? disableBuy;
|
disableSell = sharedPreferences.getBool(PreferencesKey.disableSellKey) ?? disableSell;
|
||||||
disableSell =
|
allowBiometricalAuthentication =
|
||||||
sharedPreferences.getBool(PreferencesKey.disableSellKey) ?? disableSell;
|
sharedPreferences.getBool(PreferencesKey.allowBiometricalAuthenticationKey) ??
|
||||||
allowBiometricalAuthentication = sharedPreferences
|
allowBiometricalAuthentication;
|
||||||
.getBool(PreferencesKey.allowBiometricalAuthenticationKey) ??
|
|
||||||
allowBiometricalAuthentication;
|
|
||||||
shouldShowMarketPlaceInDashboard =
|
shouldShowMarketPlaceInDashboard =
|
||||||
sharedPreferences.getBool(PreferencesKey.shouldShowMarketPlaceInDashboard) ??
|
sharedPreferences.getBool(PreferencesKey.shouldShowMarketPlaceInDashboard) ??
|
||||||
shouldShowMarketPlaceInDashboard;
|
shouldShowMarketPlaceInDashboard;
|
||||||
|
|
|
@ -4,9 +4,9 @@ part 'desktop_sidebar_view_model.g.dart';
|
||||||
|
|
||||||
enum SidebarItem {
|
enum SidebarItem {
|
||||||
dashboard,
|
dashboard,
|
||||||
|
transactions,
|
||||||
support,
|
support,
|
||||||
settings,
|
settings,
|
||||||
transactions;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class DesktopSidebarViewModel = DesktopSidebarViewModelBase with _$DesktopSidebarViewModel;
|
class DesktopSidebarViewModel = DesktopSidebarViewModelBase with _$DesktopSidebarViewModel;
|
||||||
|
|
|
@ -115,10 +115,10 @@ SPEC CHECKSUMS:
|
||||||
platform_device_id_macos: f763bb55f088be804d61b96eb4710b8ab6598e94
|
platform_device_id_macos: f763bb55f088be804d61b96eb4710b8ab6598e94
|
||||||
ReachabilitySwift: 985039c6f7b23a1da463388634119492ff86c825
|
ReachabilitySwift: 985039c6f7b23a1da463388634119492ff86c825
|
||||||
share_plus_macos: 853ee48e7dce06b633998ca0735d482dd671ade4
|
share_plus_macos: 853ee48e7dce06b633998ca0735d482dd671ade4
|
||||||
shared_preferences_foundation: e2dae3258e06f44cc55f49d42024fd8dd03c590c
|
shared_preferences_foundation: 5b919d13b803cadd15ed2dc053125c68730e5126
|
||||||
url_launcher_macos: 5335912b679c073563f29d89d33d10d459f95451
|
url_launcher_macos: 5335912b679c073563f29d89d33d10d459f95451
|
||||||
wakelock_macos: bc3f2a9bd8d2e6c89fee1e1822e7ddac3bd004a9
|
wakelock_macos: bc3f2a9bd8d2e6c89fee1e1822e7ddac3bd004a9
|
||||||
|
|
||||||
PODFILE CHECKSUM: 5107934592df7813b33d744aebc8ddc6b5a5445f
|
PODFILE CHECKSUM: 5107934592df7813b33d744aebc8ddc6b5a5445f
|
||||||
|
|
||||||
COCOAPODS: 1.11.3
|
COCOAPODS: 1.12.1
|
||||||
|
|
Loading…
Reference in a new issue