mirror of
https://github.com/Such-Software/hash-wallet.git
synced 2026-11-12 08:53:57 +01:00
Monero update (#1325)
* New price API * Fix test app package id * Fix workflow * change environment variable to use pr number [skip ci] * Fix un-needed padding * Fix raw value for usdtSol * Remove duplicate fetching for balance and transactions at start [skip ci] * Fix address validation of spl tokens * Add Service Status * Update lib/src/widgets/service_status_tile.dart Co-authored-by: Konstantin Ullrich <konstantinullrich12@gmail.com> * Update lib/src/widgets/services_updates_widget.dart Co-authored-by: Konstantin Ullrich <konstantinullrich12@gmail.com> * Update monero version * update sodium script * Change automatic priority fee rate * New versions [skip ci] * Update monero version * Temp remove split per abi * Specifically build monero.com * Revert monero dependencies trial fix * Update Monero Fix Monero Automatic Priority * Fix android script * Fix build_monero.sh android Add svg notification icon * trial 1 * trial 2 * trial 3 * trial 4 * Trial 5 * Trial * revert --------- Co-authored-by: Konstantin Ullrich <konstantinullrich12@gmail.com>
This commit is contained in:
co-authored by
Konstantin Ullrich
parent
6414364602
commit
50b5ebc622
@@ -201,6 +201,9 @@ Future<void> defaultSettingsMigration(
|
||||
await changeSolanaCurrentNodeToDefault(
|
||||
sharedPreferences: sharedPreferences, nodes: nodes);
|
||||
break;
|
||||
case 28:
|
||||
await _updateMoneroPriority(sharedPreferences);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -215,6 +218,18 @@ Future<void> defaultSettingsMigration(
|
||||
await sharedPreferences.setInt(PreferencesKey.currentDefaultSettingsMigrationVersion, version);
|
||||
}
|
||||
|
||||
Future<void> _updateMoneroPriority(SharedPreferences sharedPreferences) async {
|
||||
final currentPriority =
|
||||
await sharedPreferences.getInt(PreferencesKey.moneroTransactionPriority) ??
|
||||
monero!.getDefaultTransactionPriority().serialize();
|
||||
|
||||
// was set to automatic but automatic should be 0
|
||||
if (currentPriority == 1) {
|
||||
sharedPreferences.setInt(PreferencesKey.moneroTransactionPriority,
|
||||
monero!.getDefaultTransactionPriority().serialize()); // 0
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _validateWalletInfoBoxData(Box<WalletInfo> walletInfoSource) async {
|
||||
try {
|
||||
final root = await getApplicationDocumentsDirectory();
|
||||
|
||||
+1
-1
@@ -163,7 +163,7 @@ Future<void> initializeAppConfigs() async {
|
||||
transactionDescriptions: transactionDescriptions,
|
||||
secureStorage: secureStorage,
|
||||
anonpayInvoiceInfo: anonpayInvoiceInfo,
|
||||
initialMigrationVersion: 27);
|
||||
initialMigrationVersion: 28);
|
||||
}
|
||||
|
||||
Future<void> initialSetup(
|
||||
|
||||
@@ -7,13 +7,15 @@ class SideMenuItem extends StatelessWidget {
|
||||
required this.onTap,
|
||||
this.imagePath,
|
||||
this.icon,
|
||||
this.widget,
|
||||
this.isSelected = false,
|
||||
}) : assert((icon != null && imagePath == null) || (icon == null && imagePath != null));
|
||||
}) : assert(widget != null || icon != null || imagePath != null);
|
||||
|
||||
final void Function() onTap;
|
||||
final String? imagePath;
|
||||
final IconData? icon;
|
||||
final bool isSelected;
|
||||
final Widget? widget;
|
||||
|
||||
Color _setColor(BuildContext context) {
|
||||
if (isSelected) {
|
||||
@@ -28,18 +30,7 @@ class SideMenuItem extends StatelessWidget {
|
||||
return InkWell(
|
||||
child: Padding(
|
||||
padding: EdgeInsets.all(20),
|
||||
child: icon != null
|
||||
? Icon(
|
||||
icon,
|
||||
color: _setColor(context),
|
||||
)
|
||||
: Image.asset(
|
||||
imagePath ?? '',
|
||||
fit: BoxFit.cover,
|
||||
height: 30,
|
||||
width: 30,
|
||||
color: _setColor(context),
|
||||
),
|
||||
child: widget ?? _getIcon(context),
|
||||
),
|
||||
onTap: () => onTap.call(),
|
||||
highlightColor: Colors.transparent,
|
||||
@@ -48,4 +39,19 @@ class SideMenuItem extends StatelessWidget {
|
||||
splashColor: Colors.transparent,
|
||||
);
|
||||
}
|
||||
|
||||
Widget _getIcon(BuildContext context) {
|
||||
return icon != null
|
||||
? Icon(
|
||||
icon,
|
||||
color: _setColor(context),
|
||||
)
|
||||
: Image.asset(
|
||||
imagePath ?? '',
|
||||
fit: BoxFit.cover,
|
||||
height: 30,
|
||||
width: 30,
|
||||
color: _setColor(context),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import 'package:cake_wallet/src/screens/dashboard/desktop_widgets/desktop_sideba
|
||||
import 'package:cake_wallet/src/screens/dashboard/desktop_widgets/desktop_wallet_selection_dropdown.dart';
|
||||
import 'package:cake_wallet/src/screens/dashboard/widgets/sync_indicator.dart';
|
||||
import 'package:cake_wallet/src/screens/wallet_connect/widgets/modals/bottom_sheet_listener.dart';
|
||||
import 'package:cake_wallet/src/widgets/services_updates_widget.dart';
|
||||
import 'package:cake_wallet/view_model/dashboard/dashboard_view_model.dart';
|
||||
import 'package:cake_wallet/view_model/dashboard/desktop_sidebar_view_model.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
@@ -105,12 +106,18 @@ class DesktopSidebarWrapper extends BasePage {
|
||||
? selectedIconPath
|
||||
: unselectedIconPath,
|
||||
),
|
||||
SideMenuItem(
|
||||
widget: ServicesUpdatesWidget(dashboardViewModel.getServicesStatus()),
|
||||
isSelected: desktopSidebarViewModel.currentPage == SidebarItem.status,
|
||||
onTap: () {},
|
||||
),
|
||||
],
|
||||
bottomItems: [
|
||||
SideMenuItem(
|
||||
imagePath: 'assets/images/support_icon.png',
|
||||
isSelected: desktopSidebarViewModel.currentPage == SidebarItem.support,
|
||||
onTap: () => desktopSidebarViewModel.onPageChange(SidebarItem.support)),
|
||||
imagePath: 'assets/images/support_icon.png',
|
||||
isSelected: desktopSidebarViewModel.currentPage == SidebarItem.support,
|
||||
onTap: () => desktopSidebarViewModel.onPageChange(SidebarItem.support),
|
||||
),
|
||||
SideMenuItem(
|
||||
imagePath: 'assets/images/settings_outline.png',
|
||||
isSelected: desktopSidebarViewModel.currentPage == SidebarItem.settings,
|
||||
|
||||
@@ -6,6 +6,7 @@ import 'package:cake_wallet/src/widgets/service_status_tile.dart';
|
||||
import 'package:cake_wallet/themes/extensions/dashboard_page_theme.dart';
|
||||
import 'package:cake_wallet/themes/extensions/wallet_list_theme.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
|
||||
@@ -96,15 +97,16 @@ class ServicesUpdatesWidget extends StatelessWidget {
|
||||
: null,
|
||||
child: Stack(
|
||||
children: [
|
||||
Image.asset(
|
||||
"assets/images/notification_icon.png",
|
||||
SvgPicture.asset(
|
||||
"assets/images/notification_icon.svg",
|
||||
color: Theme.of(context).extension<DashboardPageTheme>()!.pageTitleTextColor,
|
||||
width: 30,
|
||||
),
|
||||
if (state.hasData && state.data!.hasUpdates)
|
||||
Container(
|
||||
height: 7,
|
||||
width: 7,
|
||||
margin: EdgeInsetsDirectional.only(start: 8),
|
||||
margin: EdgeInsetsDirectional.only(start: 15),
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.red,
|
||||
shape: BoxShape.circle,
|
||||
|
||||
@@ -344,15 +344,13 @@ abstract class DashboardViewModelBase with Store {
|
||||
bool hasExchangeAction;
|
||||
|
||||
@computed
|
||||
bool get isEnabledBuyAction =>
|
||||
!settingsStore.disableBuy && availableBuyProviders.isNotEmpty;
|
||||
bool get isEnabledBuyAction => !settingsStore.disableBuy && availableBuyProviders.isNotEmpty;
|
||||
|
||||
@observable
|
||||
bool hasBuyAction;
|
||||
|
||||
@computed
|
||||
bool get isEnabledSellAction =>
|
||||
!settingsStore.disableSell && availableSellProviders.isNotEmpty;
|
||||
bool get isEnabledSellAction => !settingsStore.disableSell && availableSellProviders.isNotEmpty;
|
||||
|
||||
@observable
|
||||
bool hasSellAction;
|
||||
@@ -477,7 +475,8 @@ abstract class DashboardViewModelBase with Store {
|
||||
|
||||
Future<List<String>> checkAffectedWallets() async {
|
||||
// await load file
|
||||
final vulnerableSeedsString = await rootBundle.loadString('assets/text/cakewallet_weak_bitcoin_seeds_hashed_sorted_version1.txt');
|
||||
final vulnerableSeedsString = await rootBundle
|
||||
.loadString('assets/text/cakewallet_weak_bitcoin_seeds_hashed_sorted_version1.txt');
|
||||
final vulnerableSeeds = vulnerableSeedsString.split("\n");
|
||||
|
||||
final walletInfoSource = await CakeHive.openBox<WalletInfo>(WalletInfo.boxName);
|
||||
@@ -513,13 +512,16 @@ abstract class DashboardViewModelBase with Store {
|
||||
|
||||
final oldSha = sharedPreferences.getString(PreferencesKey.serviceStatusShaKey);
|
||||
|
||||
|
||||
final hash = await Cryptography.instance.sha256().hash(utf8.encode(res.body));
|
||||
final currentSha = bytesToHex(hash.bytes);
|
||||
|
||||
final hasUpdates = oldSha != currentSha;
|
||||
|
||||
return ServicesResponse.fromJson(json.decode(res.body) as Map<String, dynamic>, hasUpdates, currentSha);
|
||||
return ServicesResponse.fromJson(
|
||||
json.decode(res.body) as Map<String, dynamic>,
|
||||
hasUpdates,
|
||||
currentSha,
|
||||
);
|
||||
} catch (_) {
|
||||
return ServicesResponse([], false, '');
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ part 'desktop_sidebar_view_model.g.dart';
|
||||
enum SidebarItem {
|
||||
dashboard,
|
||||
transactions,
|
||||
status,
|
||||
support,
|
||||
settings,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user