From 2c26920b24c36efab82e3d40b71f5143e178221d Mon Sep 17 00:00:00 2001 From: Konstantin Ullrich Date: Tue, 22 Apr 2025 20:55:35 +0200 Subject: [PATCH] feat: Add Tari wallet support This commit introduces initial support for the Tari wallet, including new credential handling, transaction history setup, and wallet restoration. It also updates dependencies and adds a mock environment for testing Tari wallet services. --- assets/images/tari.png | Bin 0 -> 162514 bytes cw_core/lib/crypto_currency.dart | 2 +- cw_core/lib/node.dart | 18 ++ cw_core/lib/wallet_type.dart | 2 +- cw_tari/lib/tari_wallet.dart | 13 +- cw_tari/lib/tari_wallet_service.dart | 9 +- cw_tari/lib/transaction_credentials.dart | 8 + cw_tari/pubspec.yaml | 1 + cw_tari/test/mock/path_provider.dart | 29 ++++ cw_tari/test/tari_wallet_service_test.dart | 99 +++++++++++ ios/Podfile.lock | 52 +++--- ios/Runner.xcodeproj/project.pbxproj | 4 + .../dashboard/widgets/menu_widget.dart | 6 +- lib/tari/cw_tari.dart | 5 +- lib/utils/address_formatter.dart | 4 +- macos/Podfile.lock | 40 +++-- .../xcshareddata/xcschemes/Runner.xcscheme | 8 +- scripts/android/pubspec_gen.sh | 2 +- scripts/ios/app_config.sh | 2 +- scripts/ios/gen_framework_tari.sh | 157 ++++++++++++++++++ tool/configure.dart | 5 +- 21 files changed, 401 insertions(+), 65 deletions(-) create mode 100644 assets/images/tari.png create mode 100644 cw_tari/lib/transaction_credentials.dart create mode 100644 cw_tari/test/mock/path_provider.dart create mode 100644 cw_tari/test/tari_wallet_service_test.dart create mode 100755 scripts/ios/gen_framework_tari.sh diff --git a/assets/images/tari.png b/assets/images/tari.png new file mode 100644 index 0000000000000000000000000000000000000000..b7302b20400b34299fd4fe53bdae495dc174f065 GIT binary patch literal 162514 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∓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 JF5Zc~_&>dn?hF6` literal 0 HcmV?d00001 diff --git a/cw_core/lib/crypto_currency.dart b/cw_core/lib/crypto_currency.dart index 4e5367b82..454c35261 100644 --- a/cw_core/lib/crypto_currency.dart +++ b/cw_core/lib/crypto_currency.dart @@ -234,7 +234,7 @@ class CryptoCurrency extends EnumerableItem with Serializable implemen static const zano = CryptoCurrency(title: 'ZANO', tag: 'ZANO', fullName: 'Zano', raw: 96, name: 'zano', iconPath: 'assets/images/zano_icon.png', decimals: 12); static const flip = CryptoCurrency(title: 'FLIP', tag: 'ETH', fullName: 'Chainflip', raw: 97, name: 'flip', iconPath: 'assets/images/flip_icon.png', decimals: 18); static const deuro = CryptoCurrency(title: 'DEURO', tag: 'ETH', fullName: 'Digital Euro', raw: 98, name: 'deuro', iconPath: 'assets/images/deuro_icon.png', decimals: 18); - static const tari = CryptoCurrency(title: 'tXTR', fullName: 'Tari', raw: 99, name: 'tari', iconPath: 'assets/images/.png', decimals: 18); // ToDo + static const tari = CryptoCurrency(title: 'tXTR', fullName: 'Tari', raw: 99, name: 'tari', iconPath: 'assets/images/tari.png', decimals: 8); static final Map _rawCurrencyMap = [...all, ...havenCurrencies].fold>({}, (acc, item) { diff --git a/cw_core/lib/node.dart b/cw_core/lib/node.dart index 38fcde9e1..0f9ac249f 100644 --- a/cw_core/lib/node.dart +++ b/cw_core/lib/node.dart @@ -106,6 +106,7 @@ class Node extends HiveObject with Keyable { case WalletType.decred: return Uri.parse( "http${isSSL ? "s" : ""}://$uriRaw${path!.startsWith("/") || path!.isEmpty ? path : "/$path"}"); + case WalletType.tari: // ToDo: Maybe connect to node case WalletType.none: throw Exception('Unexpected type ${type.toString()} for Node uri'); } @@ -170,6 +171,8 @@ class Node extends HiveObject with Keyable { return requestZanoNode(); case WalletType.decred: return requestDecredNode(); + case WalletType.tari: + return requestTariNode(); case WalletType.none: return false; } @@ -373,6 +376,21 @@ class Node extends HiveObject with Keyable { return false; } } + + Future requestTariNode() async { + if (uri.host == "default-tari-seed-nodes") { + // Just show default port as ok. The wallet will connect to a list of known + // nodes automatically. + return true; + } + try { + final socket = await Socket.connect(uri.host, uri.port, timeout: Duration(seconds: 5)); + socket.destroy(); + return true; + } catch (_) { + return false; + } + } } /// https://github.com/ManyMath/digest_auth/ diff --git a/cw_core/lib/wallet_type.dart b/cw_core/lib/wallet_type.dart index 46f0b2163..b62c425d0 100644 --- a/cw_core/lib/wallet_type.dart +++ b/cw_core/lib/wallet_type.dart @@ -139,7 +139,7 @@ WalletType deserializeFromInt(int raw) { case 13: return WalletType.decred; case 14: - return WalletType.decred; + return WalletType.tari; default: throw Exception( 'Unexpected token: $raw for WalletType deserializeFromInt'); diff --git a/cw_tari/lib/tari_wallet.dart b/cw_tari/lib/tari_wallet.dart index ca834bcd8..8d1c77a14 100644 --- a/cw_tari/lib/tari_wallet.dart +++ b/cw_tari/lib/tari_wallet.dart @@ -13,6 +13,7 @@ import 'package:cw_tari/tari_balance.dart'; import 'package:cw_tari/tari_transaction_history.dart'; import 'package:cw_tari/tari_transaction_info.dart'; import 'package:cw_tari/tari_wallet_addresses.dart'; +import 'package:cw_tari/transaction_credentials.dart'; import 'package:mobx/mobx.dart'; import 'package:tari/tari.dart' as tari; @@ -37,6 +38,7 @@ abstract class TariWalletBase }), super(walletInfo) { this.walletInfo = walletInfo; + transactionHistory = TariTransactionHistory(); } final tari.TariWallet _walletFfi; @@ -54,6 +56,8 @@ abstract class TariWalletBase late ObservableMap balance; Future init() async { + walletInfo.address = _walletFfi.getEmojiID().emojiId; + await walletAddresses.init(); await transactionHistory.init(); @@ -94,7 +98,9 @@ abstract class TariWalletBase try { syncStatus = AttemptingSyncStatus(); - // ToDo + _walletFfi.startRecovery((_, int status, int val1, int val2) { + print('recoveryCallback called $status $val1 $val2'); + }); syncStatus = SyncedSyncStatus(); } catch (e) { @@ -104,6 +110,9 @@ abstract class TariWalletBase @override Future createTransaction(Object credentials) async { + final tariCredentials = credentials as TariTransactionCredentials; + + // _walletFfi.sendTx(destination, amount, feePerGram, message, isOneSided) // ToDo throw UnimplementedError(); } @@ -129,7 +138,7 @@ abstract class TariWalletBase } @override - String? get seed => _walletFfi.getMnemonic(); + String get seed => _walletFfi.getMnemonic(); @override String? get privateKey => null; diff --git a/cw_tari/lib/tari_wallet_service.dart b/cw_tari/lib/tari_wallet_service.dart index 2940bb09e..d0f744f30 100644 --- a/cw_tari/lib/tari_wallet_service.dart +++ b/cw_tari/lib/tari_wallet_service.dart @@ -1,7 +1,6 @@ import 'dart:io'; import 'package:cw_core/pathForWallet.dart'; -import 'package:cw_core/unspent_coins_info.dart'; import 'package:cw_core/utils/print_verbose.dart'; import 'package:cw_core/wallet_base.dart'; import 'package:cw_core/wallet_credentials.dart'; @@ -11,6 +10,7 @@ import 'package:cw_core/wallet_type.dart'; import 'package:cw_tari/callback.dart'; import 'package:cw_tari/tari_wallet.dart'; import 'package:hive/hive.dart'; +import 'package:tari/ffi.dart' as tariffi; import 'package:tari/tari.dart' as tari; class TariNewWalletCredentials extends WalletCredentials { @@ -73,7 +73,7 @@ class TariWalletService extends WalletService< try { final path = await pathForWallet(name: credentials.name, type: getType()); - final connection = tari.getTorConnection(); + final connection = tariffi.FFITariTransportConfig(); final config = tari.getWalletConfig( path: path, transport: connection, @@ -125,7 +125,7 @@ class TariWalletService extends WalletService< Future openWallet(String name, String password) async { try { final path = await pathForWallet(name: name, type: getType()); - final connection = tari.getTorConnection(); + final connection = tariffi.FFITariTransportConfig(); final config = tari.getWalletConfig( path: path, transport: connection, @@ -225,7 +225,7 @@ class TariWalletService extends WalletService< try { final path = await pathForWallet(name: credentials.name, type: getType()); - final connection = tari.getTorConnection(); + final connection = tariffi.FFITariTransportConfig(); final config = tari.getWalletConfig( path: path, transport: connection, @@ -234,7 +234,6 @@ class TariWalletService extends WalletService< commsConfig: config, passphrase: credentials.password!, mnemonic: credentials.mnemonic, - seedPassphrase: credentials.passphrase ?? "", logPath: "$path/logs/wallet.log", callbackReceivedTransaction: CallbackPlaceholders.callbackReceivedTransaction, callbackReceivedTransactionReply: CallbackPlaceholders.callbackReceivedTransactionReply, diff --git a/cw_tari/lib/transaction_credentials.dart b/cw_tari/lib/transaction_credentials.dart new file mode 100644 index 000000000..a8391351e --- /dev/null +++ b/cw_tari/lib/transaction_credentials.dart @@ -0,0 +1,8 @@ +import 'package:cw_core/output_info.dart'; + +class TariTransactionCredentials { + TariTransactionCredentials(this.outputs, {this.feeRate}); + + final List outputs; + final int? feeRate; +} diff --git a/cw_tari/pubspec.yaml b/cw_tari/pubspec.yaml index 8eeeb3fdb..7c4e7005e 100644 --- a/cw_tari/pubspec.yaml +++ b/cw_tari/pubspec.yaml @@ -23,5 +23,6 @@ dev_dependencies: flutter_lints: ^5.0.0 build_runner: ^2.4.7 mobx_codegen: ^2.0.7 + mockito: ^5.4.5 flutter: diff --git a/cw_tari/test/mock/path_provider.dart b/cw_tari/test/mock/path_provider.dart new file mode 100644 index 000000000..7902d5bf0 --- /dev/null +++ b/cw_tari/test/mock/path_provider.dart @@ -0,0 +1,29 @@ +import 'package:mockito/mockito.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:path_provider_platform_interface/path_provider_platform_interface.dart'; +import 'package:plugin_platform_interface/plugin_platform_interface.dart'; + +class MockPathProviderPlatform extends Mock + with MockPlatformInterfaceMixin + implements PathProviderPlatform { + Future getTemporaryPath() => throw UnimplementedError(); + + Future getApplicationSupportPath() => throw UnimplementedError(); + + Future getLibraryPath() => throw UnimplementedError(); + + Future getApplicationDocumentsPath() async => "./test/data"; + + Future getExternalStoragePath() => throw UnimplementedError(); + + Future> getExternalCachePaths() => throw UnimplementedError(); + + Future getDownloadsPath() => throw UnimplementedError(); + + @override + Future getApplicationCachePath() => throw UnimplementedError(); + + @override + Future?> getExternalStoragePaths({StorageDirectory? type}) => + throw UnimplementedError(); +} diff --git a/cw_tari/test/tari_wallet_service_test.dart b/cw_tari/test/tari_wallet_service_test.dart new file mode 100644 index 000000000..9774f2e4f --- /dev/null +++ b/cw_tari/test/tari_wallet_service_test.dart @@ -0,0 +1,99 @@ +import 'dart:io'; + +import 'package:cw_core/wallet_base.dart'; +import 'package:cw_core/wallet_info.dart'; +import 'package:cw_core/wallet_type.dart'; +import 'package:cw_tari/tari_wallet_service.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:hive/hive.dart'; +import 'package:path_provider_platform_interface/path_provider_platform_interface.dart'; + +import 'mock/path_provider.dart'; + +Future main() async { + print(Directory.current); + + group("TariWalletService Tests", () { + Hive.init('./test/data/db'); + late TariWalletService walletService; + + setUpAll(() async { + PathProviderPlatform.instance = MockPathProviderPlatform(); + + final Box walletInfoSource = + await Hive.openBox('testWalletInfo'); + + walletService = TariWalletService(walletInfoSource); + }); + + tearDownAll(() { + Directory('./test/data').deleteSync(recursive: true); + }); + + group("Create wallet", () { + test("Create Tari Wallet", () async { + final credentials = _getTestCreateCredentials(name: 'Create Wallet'); + final wallet = await walletService.create(credentials); + + expect(wallet.seed.split(" ").length, 24); + }); + }); + + group("Restore wallet", () { + test('Tari Seed', () async { + final credentials = _getTestRestoreCredentials( + name: 'Restore Wallet', + mnemonic: + 'park snow bring damp venture palm rocket cactus hole hunt save broken swallow coach state relief census pride penalty sound jazz romance obvious canyon'); + + final wallet = await walletService.restoreFromSeed(credentials); + expect(wallet.walletAddresses.primaryAddress, + '๐ŸŒˆ๐ŸŒŠ๐Ÿ๐Ÿšฒ๐ŸŒ๐Ÿ˜ฑ๐Ÿ’ฆ๐Ÿ”ซ๐Ÿ‹๐Ÿ“Ž๐Ÿ‘ฃ๐Ÿ›๐ŸŒ™๐Ÿค–๐Ÿ‘€๐Ÿ’ป๐ŸŒŠ๐Ÿฐ๐Ÿ†๐ŸŽท๐Ÿคข๐Ÿšœ๐ŸŽท๐ŸŽฏ๐Ÿบ๐Ÿ‘พ๐Ÿ›ต๐Ÿผ๐ŸŽฐ๐Ÿ’๐Ÿšฝ๐Ÿ””๐Ÿ‘๐ŸŽฐ๐Ÿ”จ๐Ÿฆ€๐Ÿฃ๐Ÿ๐Ÿญ๐Ÿ˜‡๐ŸŽป๐Ÿ€๐Ÿ’จ๐Ÿ‘–๐Ÿ‘›๐Ÿ’๐Ÿ”ง๐Ÿ๐ŸŽ๐Ÿฏ๐Ÿฐ๐Ÿš๐ŸŒฝ๐Ÿงข๐ŸŽก๐Ÿš‚๐ŸŽก๐Ÿฉ๐Ÿฎ๐Ÿšข๐Ÿšฆ๐Ÿ’ผ๐Ÿค ๐Ÿ’๐Ÿค ๐ŸŽ“๐Ÿ”’'); + }); + }); + }); +} + +TariRestoreWalletFromSeedCredentials _getTestRestoreCredentials({ + required String name, + required String mnemonic, +}) { + final credentials = TariRestoreWalletFromSeedCredentials( + name: name, mnemonic: mnemonic, passphrase: '', password: "test"); + + credentials.walletInfo = WalletInfo.external( + id: WalletBase.idFor(name, WalletType.monero), + name: name, + type: WalletType.monero, + isRecovery: true, + restoreHeight: credentials.height ?? 0, + date: DateTime.now(), + path: '', + dirPath: '', + address: '', + ); + return credentials; +} + +TariNewWalletCredentials _getTestCreateCredentials({ + required String name, +}) { + final credentials = TariNewWalletCredentials( + name: name, + password: "test", + passphrase: '', + ); + + credentials.walletInfo = WalletInfo.external( + id: WalletBase.idFor(name, WalletType.tari), + name: name, + type: WalletType.tari, + isRecovery: false, + restoreHeight: credentials.height ?? 0, + date: DateTime.now(), + path: '', + dirPath: '', + address: '', + ); + return credentials; +} diff --git a/ios/Podfile.lock b/ios/Podfile.lock index d3ba59827..e83f934f3 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -198,40 +198,40 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/wakelock_plus/ios" SPEC CHECKSUMS: - connectivity_plus: bf0076dd84a130856aa636df1c71ccaff908fa1d + connectivity_plus: 481668c94744c30c53b8895afb39159d1e619bdf CryptoSwift: e64e11850ede528a02a0f3e768cec8e9d92ecb90 - cw_decred: 9c0e1df74745b51a1289ec5e91fb9e24b68fa14a - cw_mweb: 22cd01dfb8ad2d39b15332006f22046aaa8352a3 - device_display_brightness: 1510e72c567a1f6ce6ffe393dcd9afd1426034f7 - device_info_plus: c6fb39579d0f423935b0c9ce7ee2f44b71b9fce6 - devicelocale: 35ba84dc7f45f527c3001535d8c8d104edd5d926 + cw_decred: a02cf30175a46971c1e2fa22c48407534541edc6 + cw_mweb: 3aea2fb35b2bd04d8b2d21b83216f3b8fb768d85 + device_display_brightness: 04374ebd653619292c1d996f00f42877ea19f17f + device_info_plus: 335f3ce08d2e174b9fdc3db3db0f4e3b1f66bd89 + devicelocale: bd64aa714485a8afdaded0892c1e7d5b7f680cf8 DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60 - fast_scanner: 44c00940355a51258cd6c2085734193cd23d95bc - file_picker: 09aa5ec1ab24135ccd7a1621c46c84134bfd6655 + fast_scanner: 2cb1ad3e69e645e9980fb4961396ce5804caa3e3 + file_picker: 9b3292d7c8bc68c8a7bf8eb78f730e49c8efc517 Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 - flutter_inappwebview_ios: 6f63631e2c62a7c350263b13fa5427aedefe81d4 - flutter_local_authentication: 1172a4dd88f6306dadce067454e2c4caf07977bb - flutter_mailer: 2ef5a67087bc8c6c4cefd04a178bf1ae2c94cd83 - flutter_secure_storage: 23fc622d89d073675f2eaa109381aefbcf5a49be - fluttertoast: 21eecd6935e7064cc1fcb733a4c5a428f3f24f0f - in_app_review: a31b5257259646ea78e0e35fc914979b0031d011 - integration_test: 252f60fa39af5e17c3aa9899d35d908a0721b573 + flutter_inappwebview_ios: b89ba3482b96fb25e00c967aae065701b66e9b99 + flutter_local_authentication: 989278c681612f1ee0e36019e149137f114b9d7f + flutter_mailer: 3a8cd4f36c960fb04528d5471097270c19fec1c4 + flutter_secure_storage: 2c2ff13db9e0a5647389bff88b0ecac56e3f3418 + fluttertoast: 2c67e14dce98bbdb200df9e1acf610d7a6264ea1 + in_app_review: 5596fe56fab799e8edb3561c03d053363ab13457 + integration_test: 4a889634ef21a45d28d50d622cf412dc6d9f586e OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94 - package_info_plus: c0502532a26c7662a62a356cebe2692ec5fe4ec4 - path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46 - permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2 + package_info_plus: af8e2ca6888548050f16fa2f1938db7b5a5df499 + path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564 + permission_handler_apple: 4ed2196e43d0651e8ff7ca3483a069d469701f2d ReachabilitySwift: 32793e867593cfc1177f5d16491e3a197d2fccda SDWebImage: 73c6079366fea25fa4bb9640d5fb58f0893facd8 - sensitive_clipboard: d4866e5d176581536c27bb1618642ee83adca986 - share_plus: 8b6f8b3447e494cca5317c8c3073de39b3600d1f - shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78 - sp_scanner: eaa617fa827396b967116b7f1f43549ca62e9a12 + sensitive_clipboard: 161e9abc3d56b3131309d8a321eb4690a803c16b + share_plus: 50da8cb520a8f0f65671c6c6a99b3617ed10a58a + shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7 + sp_scanner: b1bc9321690980bdb44bba7ec85d5543e716d1b5 SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4 - uni_links: d97da20c7701486ba192624d99bffaaffcfc298a - universal_ble: cf52a7b3fd2e7c14d6d7262e9fdadb72ab6b88a6 - url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe - wakelock_plus: 373cfe59b235a6dd5837d0fb88791d2f13a90d56 + uni_links: ed8c961e47ed9ce42b6d91e1de8049e38a4b3152 + universal_ble: ff19787898040d721109c6324472e5dd4bc86adc + url_launcher_ios: 694010445543906933d732453a59da0a173ae33d + wakelock_plus: e29112ab3ef0b318e58cfa5c32326458be66b556 PODFILE CHECKSUM: e448f662d4c41f0c0b1ccbb78afd57dbf895a597 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index d9ff6b66e..c70ecef49 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -33,6 +33,7 @@ CFEFC24F82F78FE747DF1D22 /* LnurlPayInfo.swift in Resources */ = {isa = PBXBuildFile; fileRef = 58C22CBD8C22B9D6023D59F8 /* LnurlPayInfo.swift */; settings = {ASSET_TAGS = (BreezSDK, ); }; }; D0D7A0D4E13F31C4E02E235B /* ReceivePayment.swift in Resources */ = {isa = PBXBuildFile; fileRef = 91C524F800843E0A3F17E004 /* ReceivePayment.swift */; settings = {ASSET_TAGS = (BreezSDK, ); }; }; D3AD73A327249AFE8F016A51 /* BreezSDK.swift in Resources */ = {isa = PBXBuildFile; fileRef = ABD6FCBB0F4244B090459128 /* BreezSDK.swift */; settings = {ASSET_TAGS = (BreezSDK, ); }; }; + D756D0B62DB7AC0C006F8689 /* TariWallet.xcframework in CopyFiles */ = {isa = PBXBuildFile; fileRef = D76455EF2DB7A0B000929BAA /* TariWallet.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; F5EE19868D6F10D814BF73AD /* SDKNotificationService.swift in Resources */ = {isa = PBXBuildFile; fileRef = 41102141140E57B1DC27FBA1 /* SDKNotificationService.swift */; settings = {ASSET_TAGS = (BreezSDK, ); }; }; /* End PBXBuildFile section */ @@ -43,6 +44,7 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( + D756D0B62DB7AC0C006F8689 /* TariWallet.xcframework in CopyFiles */, CE918BF82D533ECE007F186E /* MoneroWallet.xcframework in CopyFiles */, CE918BFA2D533ED4007F186E /* WowneroWallet.xcframework in CopyFiles */, CE918BFC2D533ED8007F186E /* ZanoWallet.xcframework in CopyFiles */, @@ -89,6 +91,7 @@ CE918BF92D533ED4007F186E /* WowneroWallet.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = WowneroWallet.xcframework; sourceTree = ""; }; CE918BFB2D533ED8007F186E /* ZanoWallet.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = ZanoWallet.xcframework; sourceTree = ""; }; D139E30AEB36740C21C00A9E /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + D76455EF2DB7A0B000929BAA /* TariWallet.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = TariWallet.xcframework; sourceTree = ""; }; D7CD6B6020744E8FA471915D /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; DCEA540E3586164FB47AD13E /* LnurlPayInvoice.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LnurlPayInvoice.swift; path = "../.symlinks/plugins/breez_sdk/ios/bindings-swift/Sources/BreezSDK/Task/LnurlPayInvoice.swift"; sourceTree = ""; }; F42258C3697CFE3C8C8D1933 /* ServiceLogger.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ServiceLogger.swift; path = "../.symlinks/plugins/breez_sdk/ios/bindings-swift/Sources/BreezSDK/ServiceLogger.swift"; sourceTree = ""; }; @@ -110,6 +113,7 @@ 06957875428D0F5AAE053765 /* Frameworks */ = { isa = PBXGroup; children = ( + D76455EF2DB7A0B000929BAA /* TariWallet.xcframework */, CE918BFB2D533ED8007F186E /* ZanoWallet.xcframework */, CE918BF92D533ED4007F186E /* WowneroWallet.xcframework */, CE918BF72D533ECE007F186E /* MoneroWallet.xcframework */, diff --git a/lib/src/screens/dashboard/widgets/menu_widget.dart b/lib/src/screens/dashboard/widgets/menu_widget.dart index dbf55d046..3ff14e1de 100644 --- a/lib/src/screens/dashboard/widgets/menu_widget.dart +++ b/lib/src/screens/dashboard/widgets/menu_widget.dart @@ -39,7 +39,8 @@ class MenuWidgetState extends State { this.tronIcon = Image.asset('assets/images/trx_icon.png'), this.wowneroIcon = Image.asset('assets/images/wownero_icon.png'), this.zanoIcon = Image.asset('assets/images/zano_icon.png'), - this.decredIcon = Image.asset('assets/images/decred_menu.png'); + this.decredIcon = Image.asset('assets/images/decred_menu.png'), + this.tariIcon = Image.asset('assets/images/tari.png'); final largeScreen = 731; @@ -66,6 +67,7 @@ class MenuWidgetState extends State { Image wowneroIcon; Image zanoIcon; Image decredIcon; + Image tariIcon; @override void initState() { @@ -254,6 +256,8 @@ class MenuWidgetState extends State { return zanoIcon; case WalletType.decred: return decredIcon; + case WalletType.tari: + return tariIcon; default: throw Exception('No icon for ${type.toString()}'); } diff --git a/lib/tari/cw_tari.dart b/lib/tari/cw_tari.dart index e75ece680..2c8ce7549 100644 --- a/lib/tari/cw_tari.dart +++ b/lib/tari/cw_tari.dart @@ -5,9 +5,8 @@ class CWTari extends Tari { return []; // ToDo } - WalletService createTariWalletService(Box walletInfoSource) { - return TariWalletService(walletInfoSource); - } + WalletService createTariWalletService(Box walletInfoSource) => + TariWalletService(walletInfoSource); WalletCredentials createTariNewWalletCredentials( {required String name, diff --git a/lib/utils/address_formatter.dart b/lib/utils/address_formatter.dart index f2083c772..5a728b07f 100644 --- a/lib/utils/address_formatter.dart +++ b/lib/utils/address_formatter.dart @@ -16,6 +16,8 @@ class AddressFormatter { final isMWEB = address.startsWith('ltcmweb'); final chunkSize = walletType != null ? _getChunkSize(walletType) : 4; + if (walletType == WalletType.tari) return Text(address, style: evenTextStyle,); + if (shouldTruncate) { return _buildTruncatedAddress( address: cleanAddress, @@ -158,4 +160,4 @@ class AddressFormatter { return 4; } } -} \ No newline at end of file +} diff --git a/macos/Podfile.lock b/macos/Podfile.lock index 689f0ea03..72576eb4d 100644 --- a/macos/Podfile.lock +++ b/macos/Podfile.lock @@ -2,6 +2,8 @@ PODS: - connectivity_plus (0.0.1): - FlutterMacOS - ReachabilitySwift + - cw_decred (0.0.1): + - FlutterMacOS - cw_mweb (0.0.1): - FlutterMacOS - device_info_plus (0.0.1): @@ -44,6 +46,7 @@ PODS: DEPENDENCIES: - connectivity_plus (from `Flutter/ephemeral/.symlinks/plugins/connectivity_plus/macos`) + - cw_decred (from `Flutter/ephemeral/.symlinks/plugins/cw_decred/macos`) - cw_mweb (from `Flutter/ephemeral/.symlinks/plugins/cw_mweb/macos`) - device_info_plus (from `Flutter/ephemeral/.symlinks/plugins/device_info_plus/macos`) - devicelocale (from `Flutter/ephemeral/.symlinks/plugins/devicelocale/macos`) @@ -70,6 +73,8 @@ SPEC REPOS: EXTERNAL SOURCES: connectivity_plus: :path: Flutter/ephemeral/.symlinks/plugins/connectivity_plus/macos + cw_decred: + :path: Flutter/ephemeral/.symlinks/plugins/cw_decred/macos cw_mweb: :path: Flutter/ephemeral/.symlinks/plugins/cw_mweb/macos device_info_plus: @@ -106,26 +111,27 @@ EXTERNAL SOURCES: :path: Flutter/ephemeral/.symlinks/plugins/wakelock_plus/macos SPEC CHECKSUMS: - connectivity_plus: 18d3c32514c886e046de60e9c13895109866c747 - cw_mweb: 7440b12ead811dda972a9918442ea2a458e8742c - device_info_plus: 5401765fde0b8d062a2f8eb65510fb17e77cf07f - devicelocale: 9f0f36ac651cabae2c33f32dcff4f32b61c38225 - fast_scanner: d31bae07e2653403a69dac99fb710c1722b16a97 - flutter_inappwebview_macos: bdf207b8f4ebd58e86ae06cd96b147de99a67c9b - flutter_local_authentication: 85674893931e1c9cfa7c9e4f5973cb8c56b018b0 - flutter_secure_storage_macos: d56e2d218c1130b262bef8b4a7d64f88d7f9c9ea + connectivity_plus: e74b9f74717d2d99d45751750e266e55912baeb5 + cw_decred: 246ada7e0020a6b29e769f7a26653fcfc0ad752f + cw_mweb: 4746a3b5cc5bd4afe6fadd2481c4f7b239e391d0 + device_info_plus: b0fafc687fb901e2af612763340f1b0d4352f8e5 + devicelocale: 456a07c045d3113938aa4983065bd8526e2af792 + fast_scanner: a4ead8e56f185cd565e25250fdb97fa669ea1d2e + flutter_inappwebview_macos: c2d68649f9f8f1831bfcd98d73fd6256366d9d1d + flutter_local_authentication: 2f9a2682f498abcc12d7e9729b5007a947170fdc + flutter_secure_storage_macos: 3dacac420d84c4d0dc5e868194ee43c8664ec797 FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24 - in_app_review: a6a031b9acd03c7d103e341aa334adf2c493fb93 + in_app_review: 0599bccaed5e02f6bed2b0d30d16f86b63ed8638 OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94 - package_info_plus: 12f1c5c2cfe8727ca46cbd0b26677728972d9a5b - path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46 + package_info_plus: f0052d280d17aa382b932f399edf32507174e870 + path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564 ReachabilitySwift: 32793e867593cfc1177f5d16491e3a197d2fccda - share_plus: 1fa619de8392a4398bfaf176d441853922614e89 - shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78 - sp_scanner: 269d96e0ec3173e69156be7239b95182be3b8303 - universal_ble: cf52a7b3fd2e7c14d6d7262e9fdadb72ab6b88a6 - url_launcher_macos: c82c93949963e55b228a30115bd219499a6fe404 - wakelock_plus: 4783562c9a43d209c458cb9b30692134af456269 + share_plus: 510bf0af1a42cd602274b4629920c9649c52f4cc + shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7 + sp_scanner: d9316427b628dd86d6e9e3c5d42ed6b4b410157c + universal_ble: ff19787898040d721109c6324472e5dd4bc86adc + url_launcher_macos: 0fba8ddabfc33ce0a9afe7c5fef5aab3d8d2d673 + wakelock_plus: 21ddc249ac4b8d018838dbdabd65c5976c308497 PODFILE CHECKSUM: 65ec1541137fb5b35d00490dec1bb48d4d9586bb diff --git a/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index f28097b88..47cc00a2b 100644 --- a/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -15,7 +15,7 @@ @@ -31,7 +31,7 @@ @@ -54,7 +54,7 @@ @@ -71,7 +71,7 @@ diff --git a/scripts/android/pubspec_gen.sh b/scripts/android/pubspec_gen.sh index b980f877d..8e74c8bb2 100755 --- a/scripts/android/pubspec_gen.sh +++ b/scripts/android/pubspec_gen.sh @@ -10,7 +10,7 @@ case $APP_ANDROID_TYPE in CONFIG_ARGS="--monero" ;; $CAKEWALLET) - CONFIG_ARGS="--monero --bitcoin --ethereum --polygon --nano --bitcoinCash --solana --tron --wownero --zano --decred" + CONFIG_ARGS="--monero --bitcoin --ethereum --polygon --nano --bitcoinCash --solana --tron --wownero --zano --decred --tari" ;; esac diff --git a/scripts/ios/app_config.sh b/scripts/ios/app_config.sh index b642d67e4..1b04b3acc 100755 --- a/scripts/ios/app_config.sh +++ b/scripts/ios/app_config.sh @@ -31,7 +31,7 @@ case $APP_IOS_TYPE in ;; $CAKEWALLET) - CONFIG_ARGS="--monero --bitcoin --ethereum --polygon --nano --bitcoinCash --solana --tron --wownero --zano --decred" + CONFIG_ARGS="--monero --bitcoin --ethereum --polygon --nano --bitcoinCash --solana --tron --wownero --zano --decred --tari" ;; esac diff --git a/scripts/ios/gen_framework_tari.sh b/scripts/ios/gen_framework_tari.sh new file mode 100755 index 000000000..720c460eb --- /dev/null +++ b/scripts/ios/gen_framework_tari.sh @@ -0,0 +1,157 @@ +#!/bin/sh +set -e + +IOS_DIR="$(pwd)/../../ios" +DYLIB_PATH="$(pwd)/../../scripts/tari" +TMP_DIR="${IOS_DIR}/tmp" + +rm -rf "${IOS_DIR:?}/TariWallet.xcframework" +rm -rf "${IOS_DIR:?}/TariWallet.framework" +rm -rf "$TMP_DIR" +mkdir -p "$TMP_DIR" + +write_info_plist() { + framework_bundle="$1" + framework_name="$2" + target="$3" + plist_path="${framework_bundle}/Info.plist" + + if [[ "x$target" = "xiossimulator" ]]; then + platform="iPhoneSimulator" + dtplatformname="iphonesimulator" + dtsdkname="iphonesimulator17.4" + else + platform="iPhoneOS" + dtplatformname="iphoneos" + dtsdkname="iphoneos17.4" + fi + + cat > "$plist_path" < + + + + BuildMachineOSBuild + 23E224 + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${framework_name} + CFBundleIdentifier + com.fotolockr.${framework_name} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${framework_name} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ??? + CFBundleSupportedPlatforms + + ${platform} + + CFBundleVersion + 1 + DTCompiler + com.apple.compilers.llvm.clang.1_0 + DTPlatformBuild + 21E210 + DTPlatformName + ${dtplatformname} + DTPlatformVersion + 17.4 + DTSDKBuild + 21E210 + DTSDKName + ${dtsdkname} + DTXcode + 1530 + DTXcodeBuild + 15E204a + MinimumOSVersion + 16.0 + UIDeviceFamily + + 1 + 2 + + UIRequiredDeviceCapabilities + + arm64 + + + +EOF + plutil -convert binary1 "$plist_path" +} + +create_framework() { + framework_name="$2" + target="$3" + out_dir="$4" + + echo "Creating ${framework_name}.framework for target ${target} in ${out_dir}..." + + framework_bundle="${out_dir}/${framework_name}.framework" + + rm -rf "$framework_bundle" + mkdir -p "$framework_bundle" + + input_dylib="${DYLIB_PATH}/aarch64-apple-ios/libminotari_wallet_ffi.dylib" + if [[ ! -f "$input_dylib" ]]; then + echo "Error: Input dylib not found: $input_dylib" + exit 1 + fi + + lipo -create "$input_dylib" -output "${framework_bundle}/${framework_name}" + echo "Created binary: ${framework_bundle}/${framework_name}" + + write_info_plist "$framework_bundle" "$framework_name" "$target" +} + +create_xcframework() { + framework_name="$1" + device_framework="$2" + simulator_framework="$3" + xcframework_output="$4" + + echo "Creating ${xcframework_output} by bundling:" + echo " Device framework: ${device_framework}" + echo " Simulator framework: ${simulator_framework}" + + xcodebuild -create-xcframework \ + -framework "$device_framework" \ + -output "$xcframework_output" + + echo "Created XCFramework: ${xcframework_output}" +} + +wallets=("tari") +framework_names=("TariWallet") + +for i in "${!wallets[@]}"; do + wallet="${wallets[$i]}" + framework_name="${framework_names[$i]}" + + device_out="${TMP_DIR}/${framework_name}_device" + simulator_out="${TMP_DIR}/${framework_name}_simulator" + rm -rf "$device_out" "$simulator_out" + mkdir -p "$device_out" "$simulator_out" + + create_framework "$wallet" "$framework_name" "ios" "$device_out" +# create_framework "$wallet" "$framework_name" "iossimulator" "$simulator_out" + + device_framework="${device_out}/${framework_name}.framework" + simulator_framework="${simulator_out}/${framework_name}.framework" + xcframework_output="${IOS_DIR}/${framework_name}.xcframework" + rm -rf "$xcframework_output" + + create_xcframework "$framework_name" "$device_framework" "$simulator_framework" "$xcframework_output" +done + +echo "All XCFrameworks created successfully." + +rm -rf "$TMP_DIR" diff --git a/tool/configure.dart b/tool/configure.dart index 9f104a992..faa677576 100644 --- a/tool/configure.dart +++ b/tool/configure.dart @@ -11,6 +11,7 @@ const tronOutputPath = 'lib/tron/tron.dart'; const wowneroOutputPath = 'lib/wownero/wownero.dart'; const zanoOutputPath = 'lib/zano/zano.dart'; const decredOutputPath = 'lib/decred/decred.dart'; +const tariOutputPath = 'lib/tari/tari.dart'; const walletTypesPath = 'lib/wallet_types.g.dart'; const secureStoragePath = 'lib/core/secure_storage.dart'; const pubspecDefaultPath = 'pubspec_default.yaml'; @@ -1386,7 +1387,7 @@ abstract class Decred { } Future generateTari(bool hasImplementation) async { - final outputFile = File(decredOutputPath); + final outputFile = File(tariOutputPath); const tariCommonHeaders = """ import 'package:cw_core/crypto_amount_format.dart'; import 'package:cw_core/transaction_priority.dart'; @@ -1674,7 +1675,7 @@ Future generateWalletTypes({ outputContent += '\tWalletType.wownero,\n'; } - if (hasWownero) { + if (hasTari) { outputContent += '\tWalletType.tari,\n'; }