mirror of
https://github.com/cake-tech/cake_wallet.git
synced 2024-12-22 11:39:22 +00:00
fix conflicts with main
This commit is contained in:
commit
871c44a05f
132 changed files with 9216 additions and 1162 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -126,7 +126,7 @@ cw_shared_external/ios/External/
|
||||||
cw_haven/ios/External/
|
cw_haven/ios/External/
|
||||||
cw_haven/android/.externalNativeBuild/
|
cw_haven/android/.externalNativeBuild/
|
||||||
cw_haven/android/.cxx/
|
cw_haven/android/.cxx/
|
||||||
|
cw_zano/ios/External/
|
||||||
lib/bitcoin/bitcoin.dart
|
lib/bitcoin/bitcoin.dart
|
||||||
lib/monero/monero.dart
|
lib/monero/monero.dart
|
||||||
lib/haven/haven.dart
|
lib/haven/haven.dart
|
||||||
|
@ -137,6 +137,7 @@ lib/polygon/polygon.dart
|
||||||
lib/solana/solana.dart
|
lib/solana/solana.dart
|
||||||
lib/tron/tron.dart
|
lib/tron/tron.dart
|
||||||
lib/wownero/wownero.dart
|
lib/wownero/wownero.dart
|
||||||
|
lib/zano/zano.dart
|
||||||
|
|
||||||
ios/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_180.png
|
ios/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_180.png
|
||||||
ios/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_120.png
|
ios/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_120.png
|
||||||
|
|
BIN
assets/images/zano_icon.png
Normal file
BIN
assets/images/zano_icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.8 KiB |
4
assets/zano_node_list.yml
Normal file
4
assets/zano_node_list.yml
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
-
|
||||||
|
uri: zano.org
|
||||||
|
is_default: true
|
||||||
|
useSSL: true
|
|
@ -17,30 +17,22 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.7.0"
|
version: "4.7.0"
|
||||||
archive:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: archive
|
|
||||||
sha256: cb6a278ef2dbb298455e1a713bda08524a175630ec643a242c399c932a0a1f7d
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "3.6.1"
|
|
||||||
args:
|
args:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: args
|
name: args
|
||||||
sha256: bf9f5caeea8d8fe6721a9c358dd8a5c1947b27f1cfaa18b39c301273594919e6
|
sha256: "7cf60b9f0cc88203c5a190b4cd62a99feea42759a7fa695010eb5de1c0b2252a"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.6.0"
|
version: "2.5.0"
|
||||||
asn1lib:
|
asn1lib:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: asn1lib
|
name: asn1lib
|
||||||
sha256: "6b151826fcc95ff246cd219a0bf4c753ea14f4081ad71c61939becf3aba27f70"
|
sha256: "58082b3f0dca697204dbab0ef9ff208bfaea7767ea771076af9a343488428dda"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.5.5"
|
version: "1.5.3"
|
||||||
async:
|
async:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -50,10 +42,10 @@ packages:
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.11.0"
|
version: "2.11.0"
|
||||||
bech32:
|
bech32:
|
||||||
dependency: "direct main"
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
path: "."
|
path: "."
|
||||||
ref: HEAD
|
ref: "cake-0.2.2"
|
||||||
resolved-ref: "05755063b593aa6cca0a4820a318e0ce17de6192"
|
resolved-ref: "05755063b593aa6cca0a4820a318e0ce17de6192"
|
||||||
url: "https://github.com/cake-tech/bech32.git"
|
url: "https://github.com/cake-tech/bech32.git"
|
||||||
source: git
|
source: git
|
||||||
|
@ -84,31 +76,32 @@ packages:
|
||||||
source: git
|
source: git
|
||||||
version: "1.0.1"
|
version: "1.0.1"
|
||||||
bitcoin_base:
|
bitcoin_base:
|
||||||
dependency: "direct overridden"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
path: "."
|
path: "."
|
||||||
ref: cake-update-v9
|
ref: cake-update-v3
|
||||||
resolved-ref: "86969a14e337383e14965f5fb45a72a63e5009bc"
|
resolved-ref: cc99eedb1d28ee9376dda0465ef72aa627ac6149
|
||||||
url: "https://github.com/cake-tech/bitcoin_base"
|
url: "https://github.com/cake-tech/bitcoin_base"
|
||||||
source: git
|
source: git
|
||||||
version: "4.7.0"
|
version: "4.2.1"
|
||||||
|
bitcoin_flutter:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
path: "."
|
||||||
|
ref: cake-update-v4
|
||||||
|
resolved-ref: e19ffb7e7977278a75b27e0479b3c6f4034223b3
|
||||||
|
url: "https://github.com/cake-tech/bitcoin_flutter.git"
|
||||||
|
source: git
|
||||||
|
version: "2.1.0"
|
||||||
blockchain_utils:
|
blockchain_utils:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
path: "."
|
path: "."
|
||||||
ref: cake-update-v2
|
ref: cake-update-v1
|
||||||
resolved-ref: "59fdf29d72068e0522a96a8953ed7272833a9f57"
|
resolved-ref: cabd7e0e16c4da9920338c76eff3aeb8af0211f3
|
||||||
url: "https://github.com/cake-tech/blockchain_utils"
|
url: "https://github.com/cake-tech/blockchain_utils"
|
||||||
source: git
|
source: git
|
||||||
version: "3.3.0"
|
version: "2.1.2"
|
||||||
bluez:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: bluez
|
|
||||||
sha256: "203a1924e818a9dd74af2b2c7a8f375ab8e5edf0e486bba8f90a0d8a17ed9fce"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "0.8.2"
|
|
||||||
boolean_selector:
|
boolean_selector:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -145,10 +138,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: build_daemon
|
name: build_daemon
|
||||||
sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9"
|
sha256: "0343061a33da9c5810b2d6cee51945127d8f4c060b7fbdd9d54917f0a3feaaa1"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.0.2"
|
version: "4.0.1"
|
||||||
build_resolvers:
|
build_resolvers:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description:
|
description:
|
||||||
|
@ -161,10 +154,10 @@ packages:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description:
|
description:
|
||||||
name: build_runner
|
name: build_runner
|
||||||
sha256: "028819cfb90051c6b5440c7e574d1896f8037e3c96cf17aaeb054c9311cfbf4d"
|
sha256: "3ac61a79bfb6f6cc11f693591063a7f19a7af628dc52f141743edac5c16e8c22"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.4.13"
|
version: "2.4.9"
|
||||||
build_runner_core:
|
build_runner_core:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -189,15 +182,6 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "8.9.2"
|
version: "8.9.2"
|
||||||
cake_backup:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
path: "."
|
|
||||||
ref: main
|
|
||||||
resolved-ref: "3aba867dcab6737f6707782f5db15d71f303db38"
|
|
||||||
url: "https://github.com/cake-tech/cake_backup.git"
|
|
||||||
source: git
|
|
||||||
version: "1.0.0+1"
|
|
||||||
characters:
|
characters:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -250,18 +234,18 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: convert
|
name: convert
|
||||||
sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68
|
sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.2"
|
version: "3.1.1"
|
||||||
crypto:
|
crypto:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: crypto
|
name: crypto
|
||||||
sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855"
|
sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.6"
|
version: "3.0.3"
|
||||||
cryptography:
|
cryptography:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -270,14 +254,6 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.7.0"
|
version: "2.7.0"
|
||||||
cupertino_icons:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: cupertino_icons
|
|
||||||
sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.0.8"
|
|
||||||
cw_core:
|
cw_core:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -285,13 +261,6 @@ packages:
|
||||||
relative: true
|
relative: true
|
||||||
source: path
|
source: path
|
||||||
version: "0.0.1"
|
version: "0.0.1"
|
||||||
cw_mweb:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
path: "../cw_mweb"
|
|
||||||
relative: true
|
|
||||||
source: path
|
|
||||||
version: "0.0.1"
|
|
||||||
dart_style:
|
dart_style:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -308,14 +277,14 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.3"
|
version: "1.0.3"
|
||||||
dbus:
|
decimal:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: dbus
|
name: decimal
|
||||||
sha256: "365c771ac3b0e58845f39ec6deebc76e3276aa9922b0cc60840712094d9047ac"
|
sha256: "24a261d5d5c87e86c7651c417a5dbdf8bcd7080dd592533910e8d0505a279f21"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.7.10"
|
version: "2.3.3"
|
||||||
encrypt:
|
encrypt:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -333,37 +302,37 @@ packages:
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.1"
|
version: "1.3.1"
|
||||||
ffi:
|
ffi:
|
||||||
dependency: "direct overridden"
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: ffi
|
name: ffi
|
||||||
sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878"
|
sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.0"
|
version: "2.1.2"
|
||||||
ffigen:
|
ffigen:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: ffigen
|
name: ffigen
|
||||||
sha256: "3e12e80ccb6539bb3917217bb6f32709220efb737de0d0fa8736da0b7cb507da"
|
sha256: d3e76c2ad48a4e7f93a29a162006f00eba46ce7c08194a77bb5c5e97d1b5ff0a
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "12.0.0"
|
version: "8.0.2"
|
||||||
file:
|
file:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: file
|
name: file
|
||||||
sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4
|
sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "7.0.1"
|
version: "6.1.4"
|
||||||
fixnum:
|
fixnum:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: fixnum
|
name: fixnum
|
||||||
sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be
|
sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.1"
|
version: "1.1.0"
|
||||||
flutter:
|
flutter:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description: flutter
|
description: flutter
|
||||||
|
@ -377,21 +346,16 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.1+1"
|
version: "2.2.1+1"
|
||||||
flutter_test:
|
flutter_reactive_ble:
|
||||||
dependency: "direct dev"
|
|
||||||
description: flutter
|
|
||||||
source: sdk
|
|
||||||
version: "0.0.0"
|
|
||||||
flutter_web_bluetooth:
|
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: flutter_web_bluetooth
|
name: flutter_reactive_ble
|
||||||
sha256: fcd03e2e5f82edcedcbc940f1b6a0635a50757374183254f447640886c53208e
|
sha256: "247e2efa76de203d1ba11335c13754b5b9d0504b5423e5b0c93a600f016b24e0"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.2.4"
|
version: "5.3.1"
|
||||||
flutter_web_plugins:
|
flutter_test:
|
||||||
dependency: transitive
|
dependency: "direct dev"
|
||||||
description: flutter
|
description: flutter
|
||||||
source: sdk
|
source: sdk
|
||||||
version: "0.0.0"
|
version: "0.0.0"
|
||||||
|
@ -403,6 +367,14 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.0.0"
|
version: "4.0.0"
|
||||||
|
functional_data:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: functional_data
|
||||||
|
sha256: "76d17dc707c40e552014f5a49c0afcc3f1e3f05e800cd6b7872940bfe41a5039"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.2.0"
|
||||||
glob:
|
glob:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -411,38 +383,14 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.2"
|
version: "2.1.2"
|
||||||
google_identity_services_web:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: google_identity_services_web
|
|
||||||
sha256: "5be191523702ba8d7a01ca97c17fca096822ccf246b0a9f11923a6ded06199b6"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "0.3.1+4"
|
|
||||||
googleapis_auth:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: googleapis_auth
|
|
||||||
sha256: befd71383a955535060acde8792e7efc11d2fccd03dd1d3ec434e85b68775938
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.6.0"
|
|
||||||
graphs:
|
graphs:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: graphs
|
name: graphs
|
||||||
sha256: "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0"
|
sha256: aedc5a15e78fc65a6e23bcd927f24c64dd995062bcd1ca6eda65a3cff92a4d19
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.2"
|
version: "2.3.1"
|
||||||
grpc:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
name: grpc
|
|
||||||
sha256: e93ee3bce45c134bf44e9728119102358c7cd69de7832d9a874e2e74eb8cab40
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "3.2.4"
|
|
||||||
hex:
|
hex:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -471,18 +419,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: http
|
name: http
|
||||||
sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010
|
sha256: "761a297c042deedc1ffbb156d6e2af13886bb305c2a343a4d972504cd67dd938"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.2"
|
version: "1.2.1"
|
||||||
http2:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: http2
|
|
||||||
sha256: "9ced024a160b77aba8fb8674e38f70875e321d319e6f303ec18e87bd5a4b0c1d"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.3.0"
|
|
||||||
http_multi_server:
|
http_multi_server:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -503,10 +443,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: intl
|
name: intl
|
||||||
sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf
|
sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.19.0"
|
version: "0.18.1"
|
||||||
io:
|
io:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -535,68 +475,59 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: leak_tracker
|
name: leak_tracker
|
||||||
sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05"
|
sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "10.0.5"
|
version: "10.0.0"
|
||||||
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: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806"
|
sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.5"
|
version: "2.0.1"
|
||||||
leak_tracker_testing:
|
leak_tracker_testing:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: leak_tracker_testing
|
name: leak_tracker_testing
|
||||||
sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
|
sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.1"
|
version: "2.0.1"
|
||||||
ledger_bitcoin:
|
ledger_bitcoin:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
path: "packages/ledger-bitcoin"
|
path: "."
|
||||||
ref: HEAD
|
ref: HEAD
|
||||||
resolved-ref: "07cd61ef76a2a017b6d5ef233396740163265457"
|
resolved-ref: f819d37e235e239c315e93856abbf5e5d3b71dab
|
||||||
url: "https://github.com/cake-tech/ledger-flutter-plus-plugins"
|
url: "https://github.com/cake-tech/ledger-bitcoin"
|
||||||
source: git
|
|
||||||
version: "0.0.3"
|
|
||||||
ledger_flutter_plus:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
name: ledger_flutter_plus
|
|
||||||
sha256: c7b04008553193dbca7e17b430768eecc372a72b0ff3625b5e7fc5e5c8d3231b
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.4.1"
|
|
||||||
ledger_litecoin:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
path: "packages/ledger-litecoin"
|
|
||||||
ref: HEAD
|
|
||||||
resolved-ref: "3dee36713e6ebec9dceb59b9ccae7f243a53ea9e"
|
|
||||||
url: "https://github.com/cake-tech/ledger-flutter-plus-plugins"
|
|
||||||
source: git
|
source: git
|
||||||
version: "0.0.2"
|
version: "0.0.2"
|
||||||
ledger_usb_plus:
|
ledger_flutter:
|
||||||
dependency: transitive
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: ledger_usb_plus
|
name: ledger_flutter
|
||||||
sha256: "21cc5d976cf7edb3518bd2a0c4164139cbb0817d2e4f2054707fc4edfdf9ce87"
|
sha256: f1680060ed6ff78f275837e0024ccaf667715a59ba7aa29fa7354bc7752e71c8
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.4"
|
version: "1.0.1"
|
||||||
|
ledger_usb:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: ledger_usb
|
||||||
|
sha256: "52c92d03a4cffe06c82921c8e2f79f3cdad6e1cf78e1e9ca35444196ff8f14c2"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.0"
|
||||||
logging:
|
logging:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: logging
|
name: logging
|
||||||
sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61
|
sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.0"
|
version: "1.2.0"
|
||||||
matcher:
|
matcher:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -609,26 +540,26 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: material_color_utilities
|
name: material_color_utilities
|
||||||
sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
|
sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.11.1"
|
version: "0.8.0"
|
||||||
meta:
|
meta:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: meta
|
name: meta
|
||||||
sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7
|
sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.15.0"
|
version: "1.11.0"
|
||||||
mime:
|
mime:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: mime
|
name: mime
|
||||||
sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6"
|
sha256: "2e123074287cc9fd6c09de8336dae606d1ddb88d9ac47358826db698c176a1f2"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.0"
|
version: "1.0.5"
|
||||||
mobx:
|
mobx:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -673,18 +604,18 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: path_provider
|
name: path_provider
|
||||||
sha256: fec0d61223fba3154d87759e3cc27fe2c8dc498f6386c6d6fc80d1afdd1bf378
|
sha256: c9e7d3a4cd1410877472158bee69963a4579f78b68c65a2b7d40d1a7a88bb161
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.4"
|
version: "2.1.3"
|
||||||
path_provider_android:
|
path_provider_android:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path_provider_android
|
name: path_provider_android
|
||||||
sha256: c464428172cb986b758c6d1724c603097febb8fb855aa265aeecc9280c294d4a
|
sha256: a248d8146ee5983446bf03ed5ea8f6533129a12b11f12057ad1b4a67a2b3b41d
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.12"
|
version: "2.2.4"
|
||||||
path_provider_foundation:
|
path_provider_foundation:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -713,26 +644,18 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path_provider_windows
|
name: path_provider_windows
|
||||||
sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7
|
sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.0"
|
version: "2.2.1"
|
||||||
petitparser:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: petitparser
|
|
||||||
sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "6.0.2"
|
|
||||||
platform:
|
platform:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: platform
|
name: platform
|
||||||
sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984"
|
sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.6"
|
version: "3.1.4"
|
||||||
plugin_platform_interface:
|
plugin_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -742,13 +665,13 @@ packages:
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.8"
|
version: "2.1.8"
|
||||||
pointycastle:
|
pointycastle:
|
||||||
dependency: "direct overridden"
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: pointycastle
|
name: pointycastle
|
||||||
sha256: "43ac87de6e10afabc85c445745a7b799e04de84cebaa4fd7bf55a5e1e9604d29"
|
sha256: "4be0097fcf3fd3e8449e53730c631200ebc7b88016acecab2b0da2f0149222fe"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.7.4"
|
version: "3.9.1"
|
||||||
pool:
|
pool:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -758,13 +681,13 @@ packages:
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.5.1"
|
version: "1.5.1"
|
||||||
protobuf:
|
protobuf:
|
||||||
dependency: "direct overridden"
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: protobuf
|
name: protobuf
|
||||||
sha256: "68645b24e0716782e58948f8467fd42a880f255096a821f9e7d0ec625b00c84d"
|
sha256: "01dd9bd0fa02548bf2ceee13545d4a0ec6046459d847b6b061d8a27237108a08"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.0"
|
version: "2.1.0"
|
||||||
provider:
|
provider:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -785,82 +708,50 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: pubspec_parse
|
name: pubspec_parse
|
||||||
sha256: c799b721d79eb6ee6fa56f00c04b472dcd44a30d258fac2174a6ec57302678f8
|
sha256: c63b2876e58e194e4b0828fcb080ad0e06d051cb607a6be51a9e084f47cb9367
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.0"
|
version: "1.2.3"
|
||||||
quiver:
|
quiver:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: quiver
|
name: quiver
|
||||||
sha256: ea0b925899e64ecdfbf9c7becb60d5b50e706ade44a85b2363be2a22d88117d2
|
sha256: b1c1ac5ce6688d77f65f3375a9abb9319b3cb32486bdc7a1e0fdf004d7ba4e47
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.2.2"
|
version: "3.2.1"
|
||||||
|
rational:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: rational
|
||||||
|
sha256: cb808fb6f1a839e6fc5f7d8cb3b0a10e1db48b3be102de73938c627f0b636336
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.2.3"
|
||||||
|
reactive_ble_mobile:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: reactive_ble_mobile
|
||||||
|
sha256: "9ec2b4c9c725e439950838d551579750060258fbccd5536d0543b4d07d225798"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "5.3.1"
|
||||||
|
reactive_ble_platform_interface:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: reactive_ble_platform_interface
|
||||||
|
sha256: "632c92401a2d69c9b94bd48f8fd47488a7013f3d1f9b291884350291a4a81813"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "5.3.1"
|
||||||
rxdart:
|
rxdart:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: rxdart
|
name: rxdart
|
||||||
sha256: "5c3004a4a8dbb94bd4bf5412a4def4acdaa12e12f269737a5751369e12d1a962"
|
sha256: "0c7c0cedd93788d996e33041ffecda924cc54389199cde4e6a34b440f50044cb"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.28.0"
|
version: "0.27.7"
|
||||||
shared_preferences:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
name: shared_preferences
|
|
||||||
sha256: "746e5369a43170c25816cc472ee016d3a66bc13fcf430c0bc41ad7b4b2922051"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.3.2"
|
|
||||||
shared_preferences_android:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: shared_preferences_android
|
|
||||||
sha256: "3b9febd815c9ca29c9e3520d50ec32f49157711e143b7a4ca039eb87e8ade5ab"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.3.3"
|
|
||||||
shared_preferences_foundation:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: shared_preferences_foundation
|
|
||||||
sha256: "07e050c7cd39bad516f8d64c455f04508d09df104be326d8c02551590a0d513d"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.5.3"
|
|
||||||
shared_preferences_linux:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: shared_preferences_linux
|
|
||||||
sha256: "580abfd40f415611503cae30adf626e6656dfb2f0cee8f465ece7b6defb40f2f"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.4.1"
|
|
||||||
shared_preferences_platform_interface:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: shared_preferences_platform_interface
|
|
||||||
sha256: "57cbf196c486bc2cf1f02b85784932c6094376284b3ad5779d1b1c6c6a816b80"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.4.1"
|
|
||||||
shared_preferences_web:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: shared_preferences_web
|
|
||||||
sha256: d2ca4132d3946fec2184261726b355836a82c33d7d5b67af32692aff18a4684e
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.4.2"
|
|
||||||
shared_preferences_windows:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: shared_preferences_windows
|
|
||||||
sha256: "94ef0f72b2d71bc3e700e025db3710911bd51a71cefb65cc609dd0d9a982e3c1"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.4.1"
|
|
||||||
shelf:
|
shelf:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -873,10 +764,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: shelf_web_socket
|
name: shelf_web_socket
|
||||||
sha256: "073c147238594ecd0d193f3456a5fe91c4b0abbcc68bf5cd95b36c4e194ac611"
|
sha256: "9ca081be41c60190ebcb4766b2486a7d50261db7bd0f5d9615f2d653637a84c1"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.0"
|
version: "1.0.4"
|
||||||
sky_engine:
|
sky_engine:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description: flutter
|
description: flutter
|
||||||
|
@ -886,10 +777,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: socks5_proxy
|
name: socks5_proxy
|
||||||
sha256: "616818a0ea1064a4823b53c9f7eaf8da64ed82dcd51ed71371c7e54751ed5053"
|
sha256: "045cbba84f6e2b01c1c77634a63e926352bf110ef5f07fc462c6d43bbd4b6a83"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.6"
|
version: "1.0.5+dev.2"
|
||||||
source_gen:
|
source_gen:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -918,8 +809,8 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
path: "."
|
path: "."
|
||||||
ref: "sp_v4.0.0"
|
ref: "sp_v2.0.0"
|
||||||
resolved-ref: ca1add293bd1e06920aa049b655832da50d0dab2
|
resolved-ref: "62c152b9086cd968019128845371072f7e1168de"
|
||||||
url: "https://github.com/cake-tech/sp_scanner"
|
url: "https://github.com/cake-tech/sp_scanner"
|
||||||
source: git
|
source: git
|
||||||
version: "0.0.1"
|
version: "0.0.1"
|
||||||
|
@ -967,10 +858,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: test_api
|
name: test_api
|
||||||
sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb"
|
sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.7.2"
|
version: "0.6.1"
|
||||||
timing:
|
timing:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -979,38 +870,14 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.1"
|
version: "1.0.1"
|
||||||
tuple:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: tuple
|
|
||||||
sha256: a97ce2013f240b2f3807bcbaf218765b6f301c3eff91092bcfa23a039e7dd151
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.0.2"
|
|
||||||
typed_data:
|
typed_data:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: typed_data
|
name: typed_data
|
||||||
sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006
|
sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.4.0"
|
version: "1.3.2"
|
||||||
universal_ble:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: universal_ble
|
|
||||||
sha256: "0dfbd6b64bff3ad61ed7a895c232530d9614e9b01ab261a74433a43267edb7f3"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "0.12.0"
|
|
||||||
universal_platform:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: universal_platform
|
|
||||||
sha256: "64e16458a0ea9b99260ceb5467a214c1f298d647c659af1bff6d3bf82536b1ec"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.1.0"
|
|
||||||
unorm_dart:
|
unorm_dart:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1031,10 +898,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: vm_service
|
name: vm_service
|
||||||
sha256: f652077d0bdf60abe4c1f6377448e8655008eef28f128bc023f7b5e8dfeb48fc
|
sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "14.2.4"
|
version: "13.0.0"
|
||||||
watcher:
|
watcher:
|
||||||
dependency: "direct overridden"
|
dependency: "direct overridden"
|
||||||
description:
|
description:
|
||||||
|
@ -1047,42 +914,34 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: web
|
name: web
|
||||||
sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb
|
sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0"
|
version: "0.5.1"
|
||||||
web_socket:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: web_socket
|
|
||||||
sha256: "3c12d96c0c9a4eec095246debcea7b86c0324f22df69893d538fcc6f1b8cce83"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "0.1.6"
|
|
||||||
web_socket_channel:
|
web_socket_channel:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: web_socket_channel
|
name: web_socket_channel
|
||||||
sha256: "9f187088ed104edd8662ca07af4b124465893caf063ba29758f97af57e61da8f"
|
sha256: "58c6666b342a38816b2e7e50ed0f1e261959630becd4c879c4f26bfa14aa5a42"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.1"
|
version: "2.4.5"
|
||||||
|
win32:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: win32
|
||||||
|
sha256: "0eaf06e3446824099858367950a813472af675116bf63f008a4c2a75ae13e9cb"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "5.5.0"
|
||||||
xdg_directories:
|
xdg_directories:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: xdg_directories
|
name: xdg_directories
|
||||||
sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15"
|
sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0"
|
version: "1.0.4"
|
||||||
xml:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: xml
|
|
||||||
sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "6.5.0"
|
|
||||||
yaml:
|
yaml:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1100,5 +959,5 @@ packages:
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.1"
|
version: "2.2.1"
|
||||||
sdks:
|
sdks:
|
||||||
dart: ">=3.5.0 <4.0.0"
|
dart: ">=3.3.0 <4.0.0"
|
||||||
flutter: ">=3.24.0"
|
flutter: ">=3.16.6"
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import 'package:decimal/decimal.dart';
|
||||||
|
import 'package:decimal/intl.dart';
|
||||||
import 'package:intl/intl.dart';
|
import 'package:intl/intl.dart';
|
||||||
import 'package:cw_core/crypto_currency.dart';
|
import 'package:cw_core/crypto_currency.dart';
|
||||||
|
|
||||||
|
@ -43,6 +45,8 @@ class AmountConverter {
|
||||||
case CryptoCurrency.xnzd:
|
case CryptoCurrency.xnzd:
|
||||||
case CryptoCurrency.xusd:
|
case CryptoCurrency.xusd:
|
||||||
return _moneroAmountToString(amount);
|
return _moneroAmountToString(amount);
|
||||||
|
case CryptoCurrency.zano:
|
||||||
|
return _moneroAmountToStringUsingDecimals(amount);
|
||||||
default:
|
default:
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
@ -59,4 +63,10 @@ class AmountConverter {
|
||||||
|
|
||||||
static String _wowneroAmountToString(int amount) => _wowneroAmountFormat
|
static String _wowneroAmountToString(int amount) => _wowneroAmountFormat
|
||||||
.format(cryptoAmountToDouble(amount: amount, divider: _wowneroAmountDivider));
|
.format(cryptoAmountToDouble(amount: amount, divider: _wowneroAmountDivider));
|
||||||
|
|
||||||
|
static Decimal cryptoAmountToDecimal({required int amount, required int divider}) =>
|
||||||
|
(Decimal.fromInt(amount) / Decimal.fromInt(divider)).toDecimal();
|
||||||
|
|
||||||
|
static String _moneroAmountToStringUsingDecimals(int amount) => _moneroAmountFormat.format(
|
||||||
|
DecimalIntl(cryptoAmountToDecimal(amount: amount, divider: _moneroAmountDivider)));
|
||||||
}
|
}
|
||||||
|
|
|
@ -107,6 +107,7 @@ class CryptoCurrency extends EnumerableItem<int> with Serializable<int> implemen
|
||||||
CryptoCurrency.tbtc,
|
CryptoCurrency.tbtc,
|
||||||
CryptoCurrency.wow,
|
CryptoCurrency.wow,
|
||||||
CryptoCurrency.ton,
|
CryptoCurrency.ton,
|
||||||
|
CryptoCurrency.zano,
|
||||||
];
|
];
|
||||||
|
|
||||||
static const havenCurrencies = [
|
static const havenCurrencies = [
|
||||||
|
@ -225,6 +226,7 @@ class CryptoCurrency extends EnumerableItem<int> with Serializable<int> implemen
|
||||||
static const tbtc = CryptoCurrency(title: 'tBTC', fullName: 'Testnet Bitcoin', raw: 93, name: 'tbtc', iconPath: 'assets/images/tbtc.png', decimals: 8);
|
static const tbtc = CryptoCurrency(title: 'tBTC', fullName: 'Testnet Bitcoin', raw: 93, name: 'tbtc', iconPath: 'assets/images/tbtc.png', decimals: 8);
|
||||||
static const wow = CryptoCurrency(title: 'WOW', fullName: 'Wownero', raw: 94, name: 'wow', iconPath: 'assets/images/wownero_icon.png', decimals: 11);
|
static const wow = CryptoCurrency(title: 'WOW', fullName: 'Wownero', raw: 94, name: 'wow', iconPath: 'assets/images/wownero_icon.png', decimals: 11);
|
||||||
static const ton = CryptoCurrency(title: 'TON', fullName: 'Toncoin', raw: 95, name: 'ton', iconPath: 'assets/images/ton_icon.png', decimals: 8);
|
static const ton = CryptoCurrency(title: 'TON', fullName: 'Toncoin', raw: 95, name: 'ton', iconPath: 'assets/images/ton_icon.png', decimals: 8);
|
||||||
|
static const zano = CryptoCurrency(title: 'ZANO', tag: 'ZANO', fullName: 'Zano', raw: 96, name: 'zano', iconPath: 'assets/images/zano_icon.png', decimals: 12);
|
||||||
|
|
||||||
|
|
||||||
static final Map<int, CryptoCurrency> _rawCurrencyMap =
|
static final Map<int, CryptoCurrency> _rawCurrencyMap =
|
||||||
|
|
|
@ -30,8 +30,11 @@ CryptoCurrency currencyForWalletType(WalletType type, {bool? isTestnet}) {
|
||||||
return CryptoCurrency.trx;
|
return CryptoCurrency.trx;
|
||||||
case WalletType.wownero:
|
case WalletType.wownero:
|
||||||
return CryptoCurrency.wow;
|
return CryptoCurrency.wow;
|
||||||
|
case WalletType.zano:
|
||||||
|
return CryptoCurrency.zano;
|
||||||
case WalletType.none:
|
case WalletType.none:
|
||||||
throw Exception(
|
throw Exception(
|
||||||
|
|
||||||
'Unexpected wallet type: ${type.toString()} for CryptoCurrency currencyForWalletType');
|
'Unexpected wallet type: ${type.toString()} for CryptoCurrency currencyForWalletType');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,3 +20,5 @@ const TRON_TOKEN_TYPE_ID = 18;
|
||||||
const HARDWARE_WALLET_TYPE_TYPE_ID = 19;
|
const HARDWARE_WALLET_TYPE_TYPE_ID = 19;
|
||||||
const MWEB_UTXO_TYPE_ID = 20;
|
const MWEB_UTXO_TYPE_ID = 20;
|
||||||
const HAVEN_SEED_STORE_TYPE_ID = 21;
|
const HAVEN_SEED_STORE_TYPE_ID = 21;
|
||||||
|
const ZANO_ASSET_TYPE_ID = 22;
|
||||||
|
|
||||||
|
|
|
@ -108,6 +108,8 @@ class Node extends HiveObject with Keyable {
|
||||||
case WalletType.solana:
|
case WalletType.solana:
|
||||||
case WalletType.tron:
|
case WalletType.tron:
|
||||||
return Uri.https(uriRaw, path ?? '');
|
return Uri.https(uriRaw, path ?? '');
|
||||||
|
case WalletType.zano:
|
||||||
|
return Uri.https(uriRaw, '');
|
||||||
case WalletType.none:
|
case WalletType.none:
|
||||||
throw Exception('Unexpected type ${type.toString()} for Node uri');
|
throw Exception('Unexpected type ${type.toString()} for Node uri');
|
||||||
}
|
}
|
||||||
|
@ -167,6 +169,8 @@ class Node extends HiveObject with Keyable {
|
||||||
case WalletType.solana:
|
case WalletType.solana:
|
||||||
case WalletType.tron:
|
case WalletType.tron:
|
||||||
return requestElectrumServer();
|
return requestElectrumServer();
|
||||||
|
case WalletType.zano:
|
||||||
|
return requestZanoNode();
|
||||||
case WalletType.none:
|
case WalletType.none:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -175,6 +179,11 @@ class Node extends HiveObject with Keyable {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<bool> requestZanoNode() async {
|
||||||
|
// TODO: fix it
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
Future<bool> requestMoneroNode() async {
|
Future<bool> requestMoneroNode() async {
|
||||||
if (uri.toString().contains(".onion") || useSocksProxy) {
|
if (uri.toString().contains(".onion") || useSocksProxy) {
|
||||||
return await requestNodeWithProxy();
|
return await requestNodeWithProxy();
|
||||||
|
|
|
@ -16,6 +16,7 @@ const walletTypes = [
|
||||||
WalletType.polygon,
|
WalletType.polygon,
|
||||||
WalletType.solana,
|
WalletType.solana,
|
||||||
WalletType.tron,
|
WalletType.tron,
|
||||||
|
WalletType.zano,
|
||||||
];
|
];
|
||||||
|
|
||||||
@HiveType(typeId: WALLET_TYPE_TYPE_ID)
|
@HiveType(typeId: WALLET_TYPE_TYPE_ID)
|
||||||
|
@ -58,6 +59,10 @@ enum WalletType {
|
||||||
|
|
||||||
@HiveField(12)
|
@HiveField(12)
|
||||||
wownero,
|
wownero,
|
||||||
|
|
||||||
|
@HiveField(13)
|
||||||
|
zano,
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int serializeToInt(WalletType type) {
|
int serializeToInt(WalletType type) {
|
||||||
|
@ -86,6 +91,8 @@ int serializeToInt(WalletType type) {
|
||||||
return 10;
|
return 10;
|
||||||
case WalletType.wownero:
|
case WalletType.wownero:
|
||||||
return 11;
|
return 11;
|
||||||
|
case WalletType.zano:
|
||||||
|
return 12;
|
||||||
case WalletType.none:
|
case WalletType.none:
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -117,8 +124,11 @@ WalletType deserializeFromInt(int raw) {
|
||||||
return WalletType.tron;
|
return WalletType.tron;
|
||||||
case 11:
|
case 11:
|
||||||
return WalletType.wownero;
|
return WalletType.wownero;
|
||||||
|
case 12:
|
||||||
|
return WalletType.zano;
|
||||||
default:
|
default:
|
||||||
throw Exception('Unexpected token: $raw for WalletType deserializeFromInt');
|
throw Exception(
|
||||||
|
'Unexpected token: $raw for WalletType deserializeFromInt');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -148,6 +158,8 @@ String walletTypeToString(WalletType type) {
|
||||||
return 'Tron';
|
return 'Tron';
|
||||||
case WalletType.wownero:
|
case WalletType.wownero:
|
||||||
return 'Wownero';
|
return 'Wownero';
|
||||||
|
case WalletType.zano:
|
||||||
|
return 'Zano';
|
||||||
case WalletType.none:
|
case WalletType.none:
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
@ -179,6 +191,8 @@ String walletTypeToDisplayName(WalletType type) {
|
||||||
return 'Tron (TRX)';
|
return 'Tron (TRX)';
|
||||||
case WalletType.wownero:
|
case WalletType.wownero:
|
||||||
return 'Wownero (WOW)';
|
return 'Wownero (WOW)';
|
||||||
|
case WalletType.zano:
|
||||||
|
return 'Zano (ZANO)';
|
||||||
case WalletType.none:
|
case WalletType.none:
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
@ -213,6 +227,8 @@ CryptoCurrency walletTypeToCryptoCurrency(WalletType type, {bool isTestnet = fal
|
||||||
return CryptoCurrency.trx;
|
return CryptoCurrency.trx;
|
||||||
case WalletType.wownero:
|
case WalletType.wownero:
|
||||||
return CryptoCurrency.wow;
|
return CryptoCurrency.wow;
|
||||||
|
case WalletType.zano:
|
||||||
|
return CryptoCurrency.zano;
|
||||||
case WalletType.none:
|
case WalletType.none:
|
||||||
throw Exception(
|
throw Exception(
|
||||||
'Unexpected wallet type: ${type.toString()} for CryptoCurrency walletTypeToCryptoCurrency');
|
'Unexpected wallet type: ${type.toString()} for CryptoCurrency walletTypeToCryptoCurrency');
|
||||||
|
|
|
@ -5,39 +5,34 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: _fe_analyzer_shared
|
name: _fe_analyzer_shared
|
||||||
sha256: f256b0c0ba6c7577c15e2e4e114755640a875e885099367bf6e012b19314c834
|
sha256: eb376e9acf6938204f90eb3b1f00b578640d3188b4c8a8ec054f9f479af8d051
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "72.0.0"
|
version: "64.0.0"
|
||||||
_macros:
|
|
||||||
dependency: transitive
|
|
||||||
description: dart
|
|
||||||
source: sdk
|
|
||||||
version: "0.3.2"
|
|
||||||
analyzer:
|
analyzer:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: analyzer
|
name: analyzer
|
||||||
sha256: b652861553cd3990d8ed361f7979dc6d7053a9ac8843fa73820ab68ce5410139
|
sha256: "69f54f967773f6c26c7dcb13e93d7ccee8b17a641689da39e878d5cf13b06893"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.7.0"
|
version: "6.2.0"
|
||||||
args:
|
args:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: args
|
name: args
|
||||||
sha256: bf9f5caeea8d8fe6721a9c358dd8a5c1947b27f1cfaa18b39c301273594919e6
|
sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.6.0"
|
version: "2.4.2"
|
||||||
asn1lib:
|
asn1lib:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: asn1lib
|
name: asn1lib
|
||||||
sha256: "6b151826fcc95ff246cd219a0bf4c753ea14f4081ad71c61939becf3aba27f70"
|
sha256: "21afe4333076c02877d14f4a89df111e658a6d466cbfc802eb705eb91bd5adfd"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.5.5"
|
version: "1.5.0"
|
||||||
async:
|
async:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -74,10 +69,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: build_daemon
|
name: build_daemon
|
||||||
sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9"
|
sha256: "0343061a33da9c5810b2d6cee51945127d8f4c060b7fbdd9d54917f0a3feaaa1"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.0.2"
|
version: "4.0.1"
|
||||||
build_resolvers:
|
build_resolvers:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description:
|
description:
|
||||||
|
@ -90,18 +85,18 @@ packages:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description:
|
description:
|
||||||
name: build_runner
|
name: build_runner
|
||||||
sha256: "028819cfb90051c6b5440c7e574d1896f8037e3c96cf17aaeb054c9311cfbf4d"
|
sha256: "581bacf68f89ec8792f5e5a0b2c4decd1c948e97ce659dc783688c8a88fbec21"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.4.13"
|
version: "2.4.8"
|
||||||
build_runner_core:
|
build_runner_core:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: build_runner_core
|
name: build_runner_core
|
||||||
sha256: f8126682b87a7282a339b871298cc12009cb67109cfa1614d6436fb0289193e0
|
sha256: c9e32d21dd6626b5c163d48b037ce906bbe428bc23ab77bcd77bb21e593b6185
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "7.3.2"
|
version: "7.2.11"
|
||||||
built_collection:
|
built_collection:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -114,19 +109,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: built_value
|
name: built_value
|
||||||
sha256: c7913a9737ee4007efedaffc968c049fd0f3d0e49109e778edc10de9426005cb
|
sha256: c9aabae0718ec394e5bc3c7272e6bb0dc0b32201a08fe185ec1d8401d3e39309
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "8.9.2"
|
version: "8.8.1"
|
||||||
cake_backup:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
path: "."
|
|
||||||
ref: main
|
|
||||||
resolved-ref: "3aba867dcab6737f6707782f5db15d71f303db38"
|
|
||||||
url: "https://github.com/cake-tech/cake_backup.git"
|
|
||||||
source: git
|
|
||||||
version: "1.0.0+1"
|
|
||||||
characters:
|
characters:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -171,42 +157,34 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: convert
|
name: convert
|
||||||
sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68
|
sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.2"
|
version: "3.1.1"
|
||||||
crypto:
|
crypto:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: crypto
|
name: crypto
|
||||||
sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855"
|
sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.6"
|
version: "3.0.3"
|
||||||
cryptography:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: cryptography
|
|
||||||
sha256: d146b76d33d94548cf035233fbc2f4338c1242fa119013bead807d033fc4ae05
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.7.0"
|
|
||||||
cupertino_icons:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: cupertino_icons
|
|
||||||
sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.0.8"
|
|
||||||
dart_style:
|
dart_style:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: dart_style
|
name: dart_style
|
||||||
sha256: "7856d364b589d1f08986e140938578ed36ed948581fbc3bc9aef1805039ac5ab"
|
sha256: "40ae61a5d43feea6d24bd22c0537a6629db858963b99b4bc1c3db80676f32368"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.7"
|
version: "2.3.4"
|
||||||
|
decimal:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: decimal
|
||||||
|
sha256: "24a261d5d5c87e86c7651c417a5dbdf8bcd7080dd592533910e8d0505a279f21"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.3.3"
|
||||||
encrypt:
|
encrypt:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -227,26 +205,26 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: ffi
|
name: ffi
|
||||||
sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6"
|
sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.3"
|
version: "2.1.0"
|
||||||
file:
|
file:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: file
|
name: file
|
||||||
sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4
|
sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "7.0.1"
|
version: "6.1.4"
|
||||||
fixnum:
|
fixnum:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: fixnum
|
name: fixnum
|
||||||
sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be
|
sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.1"
|
version: "1.1.0"
|
||||||
flutter:
|
flutter:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description: flutter
|
description: flutter
|
||||||
|
@ -256,10 +234,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: flutter_mobx
|
name: flutter_mobx
|
||||||
sha256: "859fbf452fa9c2519d2700b125dd7fb14c508bbdd7fb65e26ca8ff6c92280e2e"
|
sha256: "4a5d062ff85ed3759f4aac6410ff0ffae32e324b2e71ca722ae1b37b32e865f4"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.1+1"
|
version: "2.2.0+2"
|
||||||
flutter_test:
|
flutter_test:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description: flutter
|
description: flutter
|
||||||
|
@ -269,10 +247,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: frontend_server_client
|
name: frontend_server_client
|
||||||
sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694
|
sha256: "408e3ca148b31c20282ad6f37ebfa6f4bdc8fede5b74bc2f08d9d92b55db3612"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.0.0"
|
version: "3.2.0"
|
||||||
glob:
|
glob:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -285,10 +263,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: graphs
|
name: graphs
|
||||||
sha256: "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0"
|
sha256: aedc5a15e78fc65a6e23bcd927f24c64dd995062bcd1ca6eda65a3cff92a4d19
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.2"
|
version: "2.3.1"
|
||||||
hive:
|
hive:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -309,10 +287,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: http
|
name: http
|
||||||
sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010
|
sha256: "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.2"
|
version: "1.1.0"
|
||||||
http_multi_server:
|
http_multi_server:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -333,10 +311,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: intl
|
name: intl
|
||||||
sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf
|
sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.19.0"
|
version: "0.18.1"
|
||||||
io:
|
io:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -357,50 +335,42 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: json_annotation
|
name: json_annotation
|
||||||
sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1"
|
sha256: b10a7b2ff83d83c777edba3c6a0f97045ddadd56c944e1a23a3fdf43a1bf4467
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.9.0"
|
version: "4.8.1"
|
||||||
leak_tracker:
|
leak_tracker:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: leak_tracker
|
name: leak_tracker
|
||||||
sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05"
|
sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "10.0.5"
|
version: "10.0.0"
|
||||||
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: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806"
|
sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.5"
|
version: "2.0.1"
|
||||||
leak_tracker_testing:
|
leak_tracker_testing:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: leak_tracker_testing
|
name: leak_tracker_testing
|
||||||
sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
|
sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.1"
|
version: "2.0.1"
|
||||||
logging:
|
logging:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: logging
|
name: logging
|
||||||
sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61
|
sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.0"
|
version: "1.2.0"
|
||||||
macros:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: macros
|
|
||||||
sha256: "0acaed5d6b7eab89f63350bccd82119e6c602df0f391260d0e32b5e23db79536"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "0.1.2-main.4"
|
|
||||||
matcher:
|
matcher:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -413,42 +383,42 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: material_color_utilities
|
name: material_color_utilities
|
||||||
sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
|
sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.11.1"
|
version: "0.8.0"
|
||||||
meta:
|
meta:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: meta
|
name: meta
|
||||||
sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7
|
sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.15.0"
|
version: "1.11.0"
|
||||||
mime:
|
mime:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: mime
|
name: mime
|
||||||
sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6"
|
sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.0"
|
version: "1.0.4"
|
||||||
mobx:
|
mobx:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: mobx
|
name: mobx
|
||||||
sha256: "63920b27b32ad1910adfe767ab1750e4c212e8923232a1f891597b362074ea5e"
|
sha256: "74ee54012dc7c1b3276eaa960a600a7418ef5f9997565deb8fca1fd88fb36b78"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.3+2"
|
version: "2.3.0+1"
|
||||||
mobx_codegen:
|
mobx_codegen:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description:
|
description:
|
||||||
name: mobx_codegen
|
name: mobx_codegen
|
||||||
sha256: "8e0d8653a0c720ad933cd8358f6f89f740ce89203657c13f25bea772ef1fff7c"
|
sha256: b26c7f9c20b38f0ea572c1ed3f29d8e027cb265538bbd1aed3ec198642cfca42
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.6.1"
|
version: "2.6.0+1"
|
||||||
nested:
|
nested:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -477,26 +447,26 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: path_provider
|
name: path_provider
|
||||||
sha256: fec0d61223fba3154d87759e3cc27fe2c8dc498f6386c6d6fc80d1afdd1bf378
|
sha256: b27217933eeeba8ff24845c34003b003b2b22151de3c908d0e679e8fe1aa078b
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.4"
|
version: "2.1.2"
|
||||||
path_provider_android:
|
path_provider_android:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path_provider_android
|
name: path_provider_android
|
||||||
sha256: c464428172cb986b758c6d1724c603097febb8fb855aa265aeecc9280c294d4a
|
sha256: "477184d672607c0a3bf68fbbf601805f92ef79c82b64b4d6eb318cbca4c48668"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.12"
|
version: "2.2.2"
|
||||||
path_provider_foundation:
|
path_provider_foundation:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path_provider_foundation
|
name: path_provider_foundation
|
||||||
sha256: f234384a3fdd67f989b4d54a5d73ca2a6c422fa55ae694381ae0f4375cd1ea16
|
sha256: "5a7999be66e000916500be4f15a3633ebceb8302719b47b9cc49ce924125350f"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.4.0"
|
version: "2.3.2"
|
||||||
path_provider_linux:
|
path_provider_linux:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -517,18 +487,18 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path_provider_windows
|
name: path_provider_windows
|
||||||
sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7
|
sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.0"
|
version: "2.2.1"
|
||||||
platform:
|
platform:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: platform
|
name: platform
|
||||||
sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984"
|
sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.6"
|
version: "3.1.4"
|
||||||
plugin_platform_interface:
|
plugin_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -541,10 +511,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: pointycastle
|
name: pointycastle
|
||||||
sha256: "4be0097fcf3fd3e8449e53730c631200ebc7b88016acecab2b0da2f0149222fe"
|
sha256: "43ac87de6e10afabc85c445745a7b799e04de84cebaa4fd7bf55a5e1e9604d29"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.9.1"
|
version: "3.7.4"
|
||||||
pool:
|
pool:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -557,10 +527,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: provider
|
name: provider
|
||||||
sha256: c8a055ee5ce3fd98d6fc872478b03823ffdb448699c6ebdbbc71d59b596fd48c
|
sha256: "9a96a0a19b594dbc5bf0f1f27d2bc67d5f95957359b461cd9feb44ed6ae75096"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.1.2"
|
version: "6.1.1"
|
||||||
pub_semver:
|
pub_semver:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -573,10 +543,18 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: pubspec_parse
|
name: pubspec_parse
|
||||||
sha256: c799b721d79eb6ee6fa56f00c04b472dcd44a30d258fac2174a6ec57302678f8
|
sha256: c63b2876e58e194e4b0828fcb080ad0e06d051cb607a6be51a9e084f47cb9367
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.0"
|
version: "1.2.3"
|
||||||
|
rational:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: rational
|
||||||
|
sha256: ba58e9e18df9abde280e8b10051e4bce85091e41e8e7e411b6cde2e738d357cf
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.2.2"
|
||||||
shelf:
|
shelf:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -589,10 +567,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: shelf_web_socket
|
name: shelf_web_socket
|
||||||
sha256: "073c147238594ecd0d193f3456a5fe91c4b0abbcc68bf5cd95b36c4e194ac611"
|
sha256: "9ca081be41c60190ebcb4766b2486a7d50261db7bd0f5d9615f2d653637a84c1"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.0"
|
version: "1.0.4"
|
||||||
sky_engine:
|
sky_engine:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description: flutter
|
description: flutter
|
||||||
|
@ -602,10 +580,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: socks5_proxy
|
name: socks5_proxy
|
||||||
sha256: "616818a0ea1064a4823b53c9f7eaf8da64ed82dcd51ed71371c7e54751ed5053"
|
sha256: "1d21b5606169654bbf4cfb904e8e6ed897e9f763358709f87310c757096d909a"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.6"
|
version: "1.0.4"
|
||||||
source_gen:
|
source_gen:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -674,10 +652,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: test_api
|
name: test_api
|
||||||
sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb"
|
sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.7.2"
|
version: "0.6.1"
|
||||||
timing:
|
timing:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -686,22 +664,14 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.1"
|
version: "1.0.1"
|
||||||
tuple:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: tuple
|
|
||||||
sha256: a97ce2013f240b2f3807bcbaf218765b6f301c3eff91092bcfa23a039e7dd151
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.0.2"
|
|
||||||
typed_data:
|
typed_data:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: typed_data
|
name: typed_data
|
||||||
sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006
|
sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.4.0"
|
version: "1.3.2"
|
||||||
unorm_dart:
|
unorm_dart:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -722,10 +692,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: vm_service
|
name: vm_service
|
||||||
sha256: f652077d0bdf60abe4c1f6377448e8655008eef28f128bc023f7b5e8dfeb48fc
|
sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "14.2.4"
|
version: "13.0.0"
|
||||||
watcher:
|
watcher:
|
||||||
dependency: "direct overridden"
|
dependency: "direct overridden"
|
||||||
description:
|
description:
|
||||||
|
@ -734,38 +704,30 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0"
|
version: "1.1.0"
|
||||||
web:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: web
|
|
||||||
sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.1.0"
|
|
||||||
web_socket:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: web_socket
|
|
||||||
sha256: "3c12d96c0c9a4eec095246debcea7b86c0324f22df69893d538fcc6f1b8cce83"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "0.1.6"
|
|
||||||
web_socket_channel:
|
web_socket_channel:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: web_socket_channel
|
name: web_socket_channel
|
||||||
sha256: "9f187088ed104edd8662ca07af4b124465893caf063ba29758f97af57e61da8f"
|
sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.1"
|
version: "2.4.0"
|
||||||
|
win32:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: win32
|
||||||
|
sha256: "350a11abd2d1d97e0cc7a28a81b781c08002aa2864d9e3f192ca0ffa18b06ed3"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "5.0.9"
|
||||||
xdg_directories:
|
xdg_directories:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: xdg_directories
|
name: xdg_directories
|
||||||
sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15"
|
sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0"
|
version: "1.0.4"
|
||||||
yaml:
|
yaml:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -775,5 +737,5 @@ packages:
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.2"
|
version: "3.1.2"
|
||||||
sdks:
|
sdks:
|
||||||
dart: ">=3.5.0 <4.0.0"
|
dart: ">=3.2.0-0 <4.0.0"
|
||||||
flutter: ">=3.24.0"
|
flutter: ">=3.10.0"
|
||||||
|
|
|
@ -24,6 +24,7 @@ dependencies:
|
||||||
url: https://github.com/cake-tech/cake_backup.git
|
url: https://github.com/cake-tech/cake_backup.git
|
||||||
ref: main
|
ref: main
|
||||||
version: 1.0.0
|
version: 1.0.0
|
||||||
|
decimal: ^2.3.3
|
||||||
socks5_proxy: ^1.0.4
|
socks5_proxy: ^1.0.4
|
||||||
unorm_dart: ^0.3.0
|
unorm_dart: ^0.3.0
|
||||||
# tor:
|
# tor:
|
||||||
|
|
|
@ -21,18 +21,18 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: args
|
name: args
|
||||||
sha256: bf9f5caeea8d8fe6721a9c358dd8a5c1947b27f1cfaa18b39c301273594919e6
|
sha256: "139d809800a412ebb26a3892da228b2d0ba36f0ef5d9a82166e5e52ec8d61611"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.6.0"
|
version: "2.3.2"
|
||||||
asn1lib:
|
asn1lib:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: asn1lib
|
name: asn1lib
|
||||||
sha256: "6b151826fcc95ff246cd219a0bf4c753ea14f4081ad71c61939becf3aba27f70"
|
sha256: ab96a1cb3beeccf8145c52e449233fe68364c9641623acd3adad66f8184f1039
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.5.5"
|
version: "1.4.0"
|
||||||
async:
|
async:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -53,10 +53,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: build
|
name: build
|
||||||
sha256: "80184af8b6cb3e5c1c4ec6d8544d27711700bc3e6d2efad04238c7b5290889f0"
|
sha256: "3fbda25365741f8251b39f3917fb3c8e286a96fd068a5a242e11c2012d495777"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.4.1"
|
version: "2.3.1"
|
||||||
build_config:
|
build_config:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -69,10 +69,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: build_daemon
|
name: build_daemon
|
||||||
sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9"
|
sha256: "5f02d73eb2ba16483e693f80bee4f088563a820e47d1027d4cdfe62b5bb43e65"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.0.2"
|
version: "4.0.0"
|
||||||
build_resolvers:
|
build_resolvers:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description:
|
description:
|
||||||
|
@ -85,18 +85,18 @@ packages:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description:
|
description:
|
||||||
name: build_runner
|
name: build_runner
|
||||||
sha256: "028819cfb90051c6b5440c7e574d1896f8037e3c96cf17aaeb054c9311cfbf4d"
|
sha256: "3ac61a79bfb6f6cc11f693591063a7f19a7af628dc52f141743edac5c16e8c22"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.4.13"
|
version: "2.4.9"
|
||||||
build_runner_core:
|
build_runner_core:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: build_runner_core
|
name: build_runner_core
|
||||||
sha256: "6d6ee4276b1c5f34f21fdf39425202712d2be82019983d52f351c94aafbc2c41"
|
sha256: "14febe0f5bac5ae474117a36099b4de6f1dbc52df6c5e55534b3da9591bf4292"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "7.2.10"
|
version: "7.2.7"
|
||||||
built_collection:
|
built_collection:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -109,19 +109,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: built_value
|
name: built_value
|
||||||
sha256: c7913a9737ee4007efedaffc968c049fd0f3d0e49109e778edc10de9426005cb
|
sha256: "169565c8ad06adb760c3645bf71f00bff161b00002cace266cad42c5d22a7725"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "8.9.2"
|
version: "8.4.3"
|
||||||
cake_backup:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
path: "."
|
|
||||||
ref: main
|
|
||||||
resolved-ref: "3aba867dcab6737f6707782f5db15d71f303db38"
|
|
||||||
url: "https://github.com/cake-tech/cake_backup.git"
|
|
||||||
source: git
|
|
||||||
version: "1.0.0+1"
|
|
||||||
characters:
|
characters:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -134,10 +125,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: checked_yaml
|
name: checked_yaml
|
||||||
sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff
|
sha256: "3d1505d91afa809d177efd4eed5bb0eb65805097a1463abdd2add076effae311"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.3"
|
version: "2.0.2"
|
||||||
clock:
|
clock:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -150,10 +141,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: code_builder
|
name: code_builder
|
||||||
sha256: f692079e25e7869c14132d39f223f8eec9830eb76131925143b2129c4bb01b37
|
sha256: "0d43dd1288fd145de1ecc9a3948ad4a6d5a82f0a14c4fdd0892260787d975cbe"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.10.0"
|
version: "4.4.0"
|
||||||
collection:
|
collection:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -166,34 +157,18 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: convert
|
name: convert
|
||||||
sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68
|
sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.2"
|
version: "3.1.1"
|
||||||
crypto:
|
crypto:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: crypto
|
name: crypto
|
||||||
sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855"
|
sha256: aa274aa7774f8964e4f4f38cc994db7b6158dd36e9187aaceaddc994b35c6c67
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.6"
|
version: "3.0.2"
|
||||||
cryptography:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: cryptography
|
|
||||||
sha256: d146b76d33d94548cf035233fbc2f4338c1242fa119013bead807d033fc4ae05
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.7.0"
|
|
||||||
cupertino_icons:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: cupertino_icons
|
|
||||||
sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.0.8"
|
|
||||||
cw_core:
|
cw_core:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -209,14 +184,22 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.4"
|
version: "2.2.4"
|
||||||
|
decimal:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: decimal
|
||||||
|
sha256: "24a261d5d5c87e86c7651c417a5dbdf8bcd7080dd592533910e8d0505a279f21"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.3.3"
|
||||||
encrypt:
|
encrypt:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: encrypt
|
name: encrypt
|
||||||
sha256: "62d9aa4670cc2a8798bab89b39fc71b6dfbacf615de6cf5001fb39f7e4a996a2"
|
sha256: "4fd4e4fdc21b9d7d4141823e1e6515cd94e7b8d84749504c232999fba25d9bbb"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "5.0.3"
|
version: "5.0.1"
|
||||||
fake_async:
|
fake_async:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -229,26 +212,26 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: ffi
|
name: ffi
|
||||||
sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6"
|
sha256: a38574032c5f1dd06c4aee541789906c12ccaab8ba01446e800d9c5b79c4a978
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.3"
|
version: "2.0.1"
|
||||||
file:
|
file:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: file
|
name: file
|
||||||
sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4
|
sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "7.0.1"
|
version: "6.1.4"
|
||||||
fixnum:
|
fixnum:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: fixnum
|
name: fixnum
|
||||||
sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be
|
sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.1"
|
version: "1.1.0"
|
||||||
flutter:
|
flutter:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description: flutter
|
description: flutter
|
||||||
|
@ -258,10 +241,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: flutter_mobx
|
name: flutter_mobx
|
||||||
sha256: "859fbf452fa9c2519d2700b125dd7fb14c508bbdd7fb65e26ca8ff6c92280e2e"
|
sha256: "0da4add0016387a7bf309a0d0c41d36c6b3ae25ed7a176409267f166509e723e"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.1+1"
|
version: "2.0.6+5"
|
||||||
flutter_test:
|
flutter_test:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description: flutter
|
description: flutter
|
||||||
|
@ -271,26 +254,26 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: frontend_server_client
|
name: frontend_server_client
|
||||||
sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694
|
sha256: "408e3ca148b31c20282ad6f37ebfa6f4bdc8fede5b74bc2f08d9d92b55db3612"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.0.0"
|
version: "3.2.0"
|
||||||
glob:
|
glob:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: glob
|
name: glob
|
||||||
sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63"
|
sha256: "4515b5b6ddb505ebdd242a5f2cc5d22d3d6a80013789debfbda7777f47ea308c"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.2"
|
version: "2.1.1"
|
||||||
graphs:
|
graphs:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: graphs
|
name: graphs
|
||||||
sha256: "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0"
|
sha256: f9e130f3259f52d26f0cfc0e964513796dafed572fa52e45d2f8d6ca14db39b2
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.2"
|
version: "2.2.0"
|
||||||
hive:
|
hive:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -311,10 +294,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: http
|
name: http
|
||||||
sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010
|
sha256: "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.2"
|
version: "1.1.0"
|
||||||
http_multi_server:
|
http_multi_server:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -335,10 +318,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: intl
|
name: intl
|
||||||
sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf
|
sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.19.0"
|
version: "0.18.1"
|
||||||
io:
|
io:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -359,42 +342,42 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: json_annotation
|
name: json_annotation
|
||||||
sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1"
|
sha256: c33da08e136c3df0190bd5bbe51ae1df4a7d96e7954d1d7249fea2968a72d317
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.9.0"
|
version: "4.8.0"
|
||||||
leak_tracker:
|
leak_tracker:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: leak_tracker
|
name: leak_tracker
|
||||||
sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05"
|
sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "10.0.5"
|
version: "10.0.0"
|
||||||
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: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806"
|
sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.5"
|
version: "2.0.1"
|
||||||
leak_tracker_testing:
|
leak_tracker_testing:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: leak_tracker_testing
|
name: leak_tracker_testing
|
||||||
sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
|
sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.1"
|
version: "2.0.1"
|
||||||
logging:
|
logging:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: logging
|
name: logging
|
||||||
sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61
|
sha256: "04094f2eb032cbb06c6f6e8d3607edcfcb0455e2bb6cbc010cb01171dcb64e6d"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.0"
|
version: "1.1.1"
|
||||||
matcher:
|
matcher:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -407,50 +390,42 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: material_color_utilities
|
name: material_color_utilities
|
||||||
sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
|
sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.11.1"
|
version: "0.8.0"
|
||||||
meta:
|
meta:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: meta
|
name: meta
|
||||||
sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7
|
sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.15.0"
|
version: "1.11.0"
|
||||||
mime:
|
mime:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: mime
|
name: mime
|
||||||
sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6"
|
sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.0"
|
version: "1.0.4"
|
||||||
mobx:
|
mobx:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: mobx
|
name: mobx
|
||||||
sha256: "63920b27b32ad1910adfe767ab1750e4c212e8923232a1f891597b362074ea5e"
|
sha256: f1862bd92c6a903fab67338f27e2f731117c3cb9ea37cee1a487f9e4e0de314a
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.3+2"
|
version: "2.1.3+1"
|
||||||
mobx_codegen:
|
mobx_codegen:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description:
|
description:
|
||||||
name: mobx_codegen
|
name: mobx_codegen
|
||||||
sha256: d4beb9cea4b7b014321235f8fdc7c2193ee0fe1d1198e9da7403f8bc85c4407c
|
sha256: "86122e410d8ea24dda0c69adb5c2a6ccadd5ce02ad46e144764e0d0184a06181"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.0"
|
version: "2.1.1"
|
||||||
nested:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: nested
|
|
||||||
sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.0.0"
|
|
||||||
package_config:
|
package_config:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -471,26 +446,26 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: path_provider
|
name: path_provider
|
||||||
sha256: fec0d61223fba3154d87759e3cc27fe2c8dc498f6386c6d6fc80d1afdd1bf378
|
sha256: a1aa8aaa2542a6bc57e381f132af822420216c80d4781f7aa085ca3229208aaa
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.4"
|
version: "2.1.1"
|
||||||
path_provider_android:
|
path_provider_android:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path_provider_android
|
name: path_provider_android
|
||||||
sha256: c464428172cb986b758c6d1724c603097febb8fb855aa265aeecc9280c294d4a
|
sha256: e595b98692943b4881b219f0a9e3945118d3c16bd7e2813f98ec6e532d905f72
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.12"
|
version: "2.2.1"
|
||||||
path_provider_foundation:
|
path_provider_foundation:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path_provider_foundation
|
name: path_provider_foundation
|
||||||
sha256: f234384a3fdd67f989b4d54a5d73ca2a6c422fa55ae694381ae0f4375cd1ea16
|
sha256: "19314d595120f82aca0ba62787d58dde2cc6b5df7d2f0daf72489e38d1b57f2d"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.4.0"
|
version: "2.3.1"
|
||||||
path_provider_linux:
|
path_provider_linux:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -503,42 +478,42 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path_provider_platform_interface
|
name: path_provider_platform_interface
|
||||||
sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334"
|
sha256: "94b1e0dd80970c1ce43d5d4e050a9918fce4f4a775e6142424c30a29a363265c"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.2"
|
version: "2.1.1"
|
||||||
path_provider_windows:
|
path_provider_windows:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path_provider_windows
|
name: path_provider_windows
|
||||||
sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7
|
sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.0"
|
version: "2.2.1"
|
||||||
platform:
|
platform:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: platform
|
name: platform
|
||||||
sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984"
|
sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.6"
|
version: "3.1.0"
|
||||||
plugin_platform_interface:
|
plugin_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: plugin_platform_interface
|
name: plugin_platform_interface
|
||||||
sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02"
|
sha256: dbf0f707c78beedc9200146ad3cb0ab4d5da13c246336987be6940f026500d3a
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.8"
|
version: "2.1.3"
|
||||||
pointycastle:
|
pointycastle:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: pointycastle
|
name: pointycastle
|
||||||
sha256: "4be0097fcf3fd3e8449e53730c631200ebc7b88016acecab2b0da2f0149222fe"
|
sha256: db7306cf0249f838d1a24af52b5a5887c5bf7f31d8bb4e827d071dc0939ad346
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.9.1"
|
version: "3.6.2"
|
||||||
pool:
|
pool:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -547,46 +522,54 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.5.1"
|
version: "1.5.1"
|
||||||
provider:
|
process:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: provider
|
name: process
|
||||||
sha256: c8a055ee5ce3fd98d6fc872478b03823ffdb448699c6ebdbbc71d59b596fd48c
|
sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.1.2"
|
version: "4.2.4"
|
||||||
pub_semver:
|
pub_semver:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: pub_semver
|
name: pub_semver
|
||||||
sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c"
|
sha256: "307de764d305289ff24ad257ad5c5793ce56d04947599ad68b3baa124105fc17"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.4"
|
version: "2.1.3"
|
||||||
pubspec_parse:
|
pubspec_parse:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: pubspec_parse
|
name: pubspec_parse
|
||||||
sha256: c799b721d79eb6ee6fa56f00c04b472dcd44a30d258fac2174a6ec57302678f8
|
sha256: "75f6614d6dde2dc68948dffbaa4fe5dae32cd700eb9fb763fe11dfb45a3c4d0a"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.0"
|
version: "1.2.1"
|
||||||
|
rational:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: rational
|
||||||
|
sha256: ba58e9e18df9abde280e8b10051e4bce85091e41e8e7e411b6cde2e738d357cf
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.2.2"
|
||||||
shelf:
|
shelf:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: shelf
|
name: shelf
|
||||||
sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4
|
sha256: c24a96135a2ccd62c64b69315a14adc5c3419df63b4d7c05832a346fdb73682c
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.4.1"
|
version: "1.4.0"
|
||||||
shelf_web_socket:
|
shelf_web_socket:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: shelf_web_socket
|
name: shelf_web_socket
|
||||||
sha256: "073c147238594ecd0d193f3456a5fe91c4b0abbcc68bf5cd95b36c4e194ac611"
|
sha256: a988c0e8d8ffbdb8a28aa7ec8e449c260f3deb808781fe1284d22c5bba7156e8
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.0"
|
version: "1.0.3"
|
||||||
sky_engine:
|
sky_engine:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description: flutter
|
description: flutter
|
||||||
|
@ -596,10 +579,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: socks5_proxy
|
name: socks5_proxy
|
||||||
sha256: "616818a0ea1064a4823b53c9f7eaf8da64ed82dcd51ed71371c7e54751ed5053"
|
sha256: "1d21b5606169654bbf4cfb904e8e6ed897e9f763358709f87310c757096d909a"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.6"
|
version: "1.0.4"
|
||||||
source_gen:
|
source_gen:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -668,10 +651,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: test_api
|
name: test_api
|
||||||
sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb"
|
sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.7.2"
|
version: "0.6.1"
|
||||||
timing:
|
timing:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -680,22 +663,14 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.1"
|
version: "1.0.1"
|
||||||
tuple:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: tuple
|
|
||||||
sha256: a97ce2013f240b2f3807bcbaf218765b6f301c3eff91092bcfa23a039e7dd151
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.0.2"
|
|
||||||
typed_data:
|
typed_data:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: typed_data
|
name: typed_data
|
||||||
sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006
|
sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.4.0"
|
version: "1.3.1"
|
||||||
unorm_dart:
|
unorm_dart:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -716,10 +691,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: vm_service
|
name: vm_service
|
||||||
sha256: f652077d0bdf60abe4c1f6377448e8655008eef28f128bc023f7b5e8dfeb48fc
|
sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "14.2.4"
|
version: "13.0.0"
|
||||||
watcher:
|
watcher:
|
||||||
dependency: "direct overridden"
|
dependency: "direct overridden"
|
||||||
description:
|
description:
|
||||||
|
@ -728,46 +703,38 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0"
|
version: "1.1.0"
|
||||||
web:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: web
|
|
||||||
sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.1.0"
|
|
||||||
web_socket:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: web_socket
|
|
||||||
sha256: "3c12d96c0c9a4eec095246debcea7b86c0324f22df69893d538fcc6f1b8cce83"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "0.1.6"
|
|
||||||
web_socket_channel:
|
web_socket_channel:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: web_socket_channel
|
name: web_socket_channel
|
||||||
sha256: "9f187088ed104edd8662ca07af4b124465893caf063ba29758f97af57e61da8f"
|
sha256: ca49c0bc209c687b887f30527fb6a9d80040b072cc2990f34b9bec3e7663101b
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.1"
|
version: "2.3.0"
|
||||||
|
win32:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: win32
|
||||||
|
sha256: c9ebe7ee4ab0c2194e65d3a07d8c54c5d00bb001b76081c4a04cdb8448b59e46
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.1.3"
|
||||||
xdg_directories:
|
xdg_directories:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: xdg_directories
|
name: xdg_directories
|
||||||
sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15"
|
sha256: bd512f03919aac5f1313eb8249f223bacf4927031bf60b02601f81f687689e86
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0"
|
version: "0.2.0+3"
|
||||||
yaml:
|
yaml:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: yaml
|
name: yaml
|
||||||
sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5"
|
sha256: "23812a9b125b48d4007117254bca50abb6c712352927eece9e155207b1db2370"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.2"
|
version: "3.1.1"
|
||||||
sdks:
|
sdks:
|
||||||
dart: ">=3.5.0 <4.0.0"
|
dart: ">=3.2.0-0 <4.0.0"
|
||||||
flutter: ">=3.24.0"
|
flutter: ">=3.7.0"
|
||||||
|
|
|
@ -21,18 +21,18 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: args
|
name: args
|
||||||
sha256: bf9f5caeea8d8fe6721a9c358dd8a5c1947b27f1cfaa18b39c301273594919e6
|
sha256: "139d809800a412ebb26a3892da228b2d0ba36f0ef5d9a82166e5e52ec8d61611"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.6.0"
|
version: "2.3.2"
|
||||||
asn1lib:
|
asn1lib:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: asn1lib
|
name: asn1lib
|
||||||
sha256: "6b151826fcc95ff246cd219a0bf4c753ea14f4081ad71c61939becf3aba27f70"
|
sha256: ab96a1cb3beeccf8145c52e449233fe68364c9641623acd3adad66f8184f1039
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.5.5"
|
version: "1.4.0"
|
||||||
async:
|
async:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -41,14 +41,6 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.11.0"
|
version: "2.11.0"
|
||||||
bluez:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: bluez
|
|
||||||
sha256: "203a1924e818a9dd74af2b2c7a8f375ab8e5edf0e486bba8f90a0d8a17ed9fce"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "0.8.2"
|
|
||||||
boolean_selector:
|
boolean_selector:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -61,10 +53,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: build
|
name: build
|
||||||
sha256: "80184af8b6cb3e5c1c4ec6d8544d27711700bc3e6d2efad04238c7b5290889f0"
|
sha256: "3fbda25365741f8251b39f3917fb3c8e286a96fd068a5a242e11c2012d495777"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.4.1"
|
version: "2.3.1"
|
||||||
build_config:
|
build_config:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -77,10 +69,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: build_daemon
|
name: build_daemon
|
||||||
sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9"
|
sha256: "5f02d73eb2ba16483e693f80bee4f088563a820e47d1027d4cdfe62b5bb43e65"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.0.2"
|
version: "4.0.0"
|
||||||
build_resolvers:
|
build_resolvers:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description:
|
description:
|
||||||
|
@ -93,18 +85,18 @@ packages:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description:
|
description:
|
||||||
name: build_runner
|
name: build_runner
|
||||||
sha256: "028819cfb90051c6b5440c7e574d1896f8037e3c96cf17aaeb054c9311cfbf4d"
|
sha256: "3ac61a79bfb6f6cc11f693591063a7f19a7af628dc52f141743edac5c16e8c22"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.4.13"
|
version: "2.4.9"
|
||||||
build_runner_core:
|
build_runner_core:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: build_runner_core
|
name: build_runner_core
|
||||||
sha256: "6d6ee4276b1c5f34f21fdf39425202712d2be82019983d52f351c94aafbc2c41"
|
sha256: "14febe0f5bac5ae474117a36099b4de6f1dbc52df6c5e55534b3da9591bf4292"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "7.2.10"
|
version: "7.2.7"
|
||||||
built_collection:
|
built_collection:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -117,19 +109,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: built_value
|
name: built_value
|
||||||
sha256: c7913a9737ee4007efedaffc968c049fd0f3d0e49109e778edc10de9426005cb
|
sha256: "169565c8ad06adb760c3645bf71f00bff161b00002cace266cad42c5d22a7725"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "8.9.2"
|
version: "8.4.3"
|
||||||
cake_backup:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
path: "."
|
|
||||||
ref: main
|
|
||||||
resolved-ref: "3aba867dcab6737f6707782f5db15d71f303db38"
|
|
||||||
url: "https://github.com/cake-tech/cake_backup.git"
|
|
||||||
source: git
|
|
||||||
version: "1.0.0+1"
|
|
||||||
characters:
|
characters:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -142,10 +125,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: checked_yaml
|
name: checked_yaml
|
||||||
sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff
|
sha256: "3d1505d91afa809d177efd4eed5bb0eb65805097a1463abdd2add076effae311"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.3"
|
version: "2.0.2"
|
||||||
clock:
|
clock:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -158,10 +141,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: code_builder
|
name: code_builder
|
||||||
sha256: f692079e25e7869c14132d39f223f8eec9830eb76131925143b2129c4bb01b37
|
sha256: "0d43dd1288fd145de1ecc9a3948ad4a6d5a82f0a14c4fdd0892260787d975cbe"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.10.0"
|
version: "4.4.0"
|
||||||
collection:
|
collection:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -174,34 +157,18 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: convert
|
name: convert
|
||||||
sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68
|
sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.2"
|
version: "3.1.1"
|
||||||
crypto:
|
crypto:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: crypto
|
name: crypto
|
||||||
sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855"
|
sha256: aa274aa7774f8964e4f4f38cc994db7b6158dd36e9187aaceaddc994b35c6c67
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.6"
|
version: "3.0.2"
|
||||||
cryptography:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: cryptography
|
|
||||||
sha256: d146b76d33d94548cf035233fbc2f4338c1242fa119013bead807d033fc4ae05
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.7.0"
|
|
||||||
cupertino_icons:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: cupertino_icons
|
|
||||||
sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.0.8"
|
|
||||||
cw_core:
|
cw_core:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -217,22 +184,22 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.4"
|
version: "2.2.4"
|
||||||
dbus:
|
decimal:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: dbus
|
name: decimal
|
||||||
sha256: "365c771ac3b0e58845f39ec6deebc76e3276aa9922b0cc60840712094d9047ac"
|
sha256: "24a261d5d5c87e86c7651c417a5dbdf8bcd7080dd592533910e8d0505a279f21"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.7.10"
|
version: "2.3.3"
|
||||||
encrypt:
|
encrypt:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: encrypt
|
name: encrypt
|
||||||
sha256: "62d9aa4670cc2a8798bab89b39fc71b6dfbacf615de6cf5001fb39f7e4a996a2"
|
sha256: "4fd4e4fdc21b9d7d4141823e1e6515cd94e7b8d84749504c232999fba25d9bbb"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "5.0.3"
|
version: "5.0.1"
|
||||||
fake_async:
|
fake_async:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -245,26 +212,26 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: ffi
|
name: ffi
|
||||||
sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6"
|
sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.3"
|
version: "2.1.0"
|
||||||
file:
|
file:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: file
|
name: file
|
||||||
sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4
|
sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "7.0.1"
|
version: "6.1.4"
|
||||||
fixnum:
|
fixnum:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: fixnum
|
name: fixnum
|
||||||
sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be
|
sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.1"
|
version: "1.1.0"
|
||||||
flutter:
|
flutter:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description: flutter
|
description: flutter
|
||||||
|
@ -274,63 +241,55 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: flutter_mobx
|
name: flutter_mobx
|
||||||
sha256: "859fbf452fa9c2519d2700b125dd7fb14c508bbdd7fb65e26ca8ff6c92280e2e"
|
sha256: "0da4add0016387a7bf309a0d0c41d36c6b3ae25ed7a176409267f166509e723e"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.1+1"
|
version: "2.0.6+5"
|
||||||
flutter_test:
|
flutter_test:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description: flutter
|
description: flutter
|
||||||
source: sdk
|
source: sdk
|
||||||
version: "0.0.0"
|
version: "0.0.0"
|
||||||
flutter_web_bluetooth:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: flutter_web_bluetooth
|
|
||||||
sha256: "52ce64f65d7321c4bf6abfe9dac02fb888731339a5e0ad6de59fb916c20c9f02"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "0.2.3"
|
|
||||||
frontend_server_client:
|
frontend_server_client:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: frontend_server_client
|
name: frontend_server_client
|
||||||
sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694
|
sha256: "408e3ca148b31c20282ad6f37ebfa6f4bdc8fede5b74bc2f08d9d92b55db3612"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.0.0"
|
version: "3.2.0"
|
||||||
glob:
|
glob:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: glob
|
name: glob
|
||||||
sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63"
|
sha256: "4515b5b6ddb505ebdd242a5f2cc5d22d3d6a80013789debfbda7777f47ea308c"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.2"
|
version: "2.1.1"
|
||||||
graphs:
|
graphs:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: graphs
|
name: graphs
|
||||||
sha256: "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0"
|
sha256: f9e130f3259f52d26f0cfc0e964513796dafed572fa52e45d2f8d6ca14db39b2
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.2"
|
version: "2.2.0"
|
||||||
hashlib:
|
hashlib:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: hashlib
|
name: hashlib
|
||||||
sha256: f572f2abce09fc7aee53f15927052b9732ea1053e540af8cae211111ee0b99b1
|
sha256: "71bf102329ddb8e50c8a995ee4645ae7f1728bb65e575c17196b4d8262121a96"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.21.0"
|
version: "1.12.0"
|
||||||
hashlib_codecs:
|
hashlib_codecs:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: hashlib_codecs
|
name: hashlib_codecs
|
||||||
sha256: "8cea9ccafcfeaa7324d2ae52c61c69f7ff71f4237507a018caab31b9e416e3b1"
|
sha256: "49e2a471f74b15f1854263e58c2ac11f2b631b5b12c836f9708a35397d36d626"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.6.0"
|
version: "2.2.0"
|
||||||
hive:
|
hive:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -351,10 +310,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: http
|
name: http
|
||||||
sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010
|
sha256: "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.2"
|
version: "1.1.0"
|
||||||
http_multi_server:
|
http_multi_server:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -375,10 +334,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: intl
|
name: intl
|
||||||
sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf
|
sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.19.0"
|
version: "0.18.1"
|
||||||
io:
|
io:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -399,58 +358,42 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: json_annotation
|
name: json_annotation
|
||||||
sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1"
|
sha256: c33da08e136c3df0190bd5bbe51ae1df4a7d96e7954d1d7249fea2968a72d317
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.9.0"
|
version: "4.8.0"
|
||||||
leak_tracker:
|
leak_tracker:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: leak_tracker
|
name: leak_tracker
|
||||||
sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05"
|
sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "10.0.5"
|
version: "10.0.0"
|
||||||
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: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806"
|
sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.5"
|
version: "2.0.1"
|
||||||
leak_tracker_testing:
|
leak_tracker_testing:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: leak_tracker_testing
|
name: leak_tracker_testing
|
||||||
sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
|
sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.1"
|
version: "2.0.1"
|
||||||
ledger_flutter_plus:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
name: ledger_flutter_plus
|
|
||||||
sha256: c7b04008553193dbca7e17b430768eecc372a72b0ff3625b5e7fc5e5c8d3231b
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.4.1"
|
|
||||||
ledger_usb_plus:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: ledger_usb_plus
|
|
||||||
sha256: "21cc5d976cf7edb3518bd2a0c4164139cbb0817d2e4f2054707fc4edfdf9ce87"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.0.4"
|
|
||||||
logging:
|
logging:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: logging
|
name: logging
|
||||||
sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61
|
sha256: "04094f2eb032cbb06c6f6e8d3607edcfcb0455e2bb6cbc010cb01171dcb64e6d"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.0"
|
version: "1.1.1"
|
||||||
matcher:
|
matcher:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -463,49 +406,49 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: material_color_utilities
|
name: material_color_utilities
|
||||||
sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
|
sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.11.1"
|
version: "0.8.0"
|
||||||
meta:
|
meta:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: meta
|
name: meta
|
||||||
sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7
|
sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.15.0"
|
version: "1.11.0"
|
||||||
mime:
|
mime:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: mime
|
name: mime
|
||||||
sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6"
|
sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.0"
|
version: "1.0.4"
|
||||||
mobx:
|
mobx:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: mobx
|
name: mobx
|
||||||
sha256: "63920b27b32ad1910adfe767ab1750e4c212e8923232a1f891597b362074ea5e"
|
sha256: f1862bd92c6a903fab67338f27e2f731117c3cb9ea37cee1a487f9e4e0de314a
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.3+2"
|
version: "2.1.3+1"
|
||||||
mobx_codegen:
|
mobx_codegen:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description:
|
description:
|
||||||
name: mobx_codegen
|
name: mobx_codegen
|
||||||
sha256: d4beb9cea4b7b014321235f8fdc7c2193ee0fe1d1198e9da7403f8bc85c4407c
|
sha256: "86122e410d8ea24dda0c69adb5c2a6ccadd5ce02ad46e144764e0d0184a06181"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.0"
|
version: "2.1.1"
|
||||||
monero:
|
monero:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
path: "impls/monero.dart"
|
path: "."
|
||||||
ref: af5277f96073917185864d3596e82b67bee54e78
|
ref: d46753eca865e9e56c2f0ef6fe485c42e11982c5
|
||||||
resolved-ref: af5277f96073917185864d3596e82b67bee54e78
|
resolved-ref: d46753eca865e9e56c2f0ef6fe485c42e11982c5
|
||||||
url: "https://github.com/mrcyjanek/monero_c"
|
url: "https://github.com/mrcyjanek/monero.dart"
|
||||||
source: git
|
source: git
|
||||||
version: "0.0.0"
|
version: "0.0.0"
|
||||||
mutex:
|
mutex:
|
||||||
|
@ -516,14 +459,6 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.0"
|
version: "3.1.0"
|
||||||
nested:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: nested
|
|
||||||
sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.0.0"
|
|
||||||
package_config:
|
package_config:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -544,26 +479,26 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: path_provider
|
name: path_provider
|
||||||
sha256: fec0d61223fba3154d87759e3cc27fe2c8dc498f6386c6d6fc80d1afdd1bf378
|
sha256: a1aa8aaa2542a6bc57e381f132af822420216c80d4781f7aa085ca3229208aaa
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.4"
|
version: "2.1.1"
|
||||||
path_provider_android:
|
path_provider_android:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path_provider_android
|
name: path_provider_android
|
||||||
sha256: c464428172cb986b758c6d1724c603097febb8fb855aa265aeecc9280c294d4a
|
sha256: e595b98692943b4881b219f0a9e3945118d3c16bd7e2813f98ec6e532d905f72
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.12"
|
version: "2.2.1"
|
||||||
path_provider_foundation:
|
path_provider_foundation:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path_provider_foundation
|
name: path_provider_foundation
|
||||||
sha256: f234384a3fdd67f989b4d54a5d73ca2a6c422fa55ae694381ae0f4375cd1ea16
|
sha256: "19314d595120f82aca0ba62787d58dde2cc6b5df7d2f0daf72489e38d1b57f2d"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.4.0"
|
version: "2.3.1"
|
||||||
path_provider_linux:
|
path_provider_linux:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -576,58 +511,50 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path_provider_platform_interface
|
name: path_provider_platform_interface
|
||||||
sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334"
|
sha256: "94b1e0dd80970c1ce43d5d4e050a9918fce4f4a775e6142424c30a29a363265c"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.2"
|
version: "2.1.1"
|
||||||
path_provider_windows:
|
path_provider_windows:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path_provider_windows
|
name: path_provider_windows
|
||||||
sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7
|
sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.0"
|
version: "2.2.1"
|
||||||
petitparser:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: petitparser
|
|
||||||
sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "6.0.2"
|
|
||||||
platform:
|
platform:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: platform
|
name: platform
|
||||||
sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984"
|
sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.6"
|
version: "3.1.0"
|
||||||
plugin_platform_interface:
|
plugin_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: plugin_platform_interface
|
name: plugin_platform_interface
|
||||||
sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02"
|
sha256: dbf0f707c78beedc9200146ad3cb0ab4d5da13c246336987be6940f026500d3a
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.8"
|
version: "2.1.3"
|
||||||
pointycastle:
|
pointycastle:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: pointycastle
|
name: pointycastle
|
||||||
sha256: "4be0097fcf3fd3e8449e53730c631200ebc7b88016acecab2b0da2f0149222fe"
|
sha256: "7c1e5f0d23c9016c5bbd8b1473d0d3fb3fc851b876046039509e18e0c7485f2c"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.9.1"
|
version: "3.7.3"
|
||||||
polyseed:
|
polyseed:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: polyseed
|
name: polyseed
|
||||||
sha256: "11d4dbee409db053c5e9cd77382b2f5115f43fc2529158a826a96f3ba505d770"
|
sha256: edf28042e7b0b28f97a0469aa98e6e4015937cef6b9340cd6ad2822139c95217
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.0.6"
|
version: "0.0.5"
|
||||||
pool:
|
pool:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -636,54 +563,54 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.5.1"
|
version: "1.5.1"
|
||||||
provider:
|
process:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: provider
|
name: process
|
||||||
sha256: c8a055ee5ce3fd98d6fc872478b03823ffdb448699c6ebdbbc71d59b596fd48c
|
sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.1.2"
|
version: "4.2.4"
|
||||||
pub_semver:
|
pub_semver:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: pub_semver
|
name: pub_semver
|
||||||
sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c"
|
sha256: "307de764d305289ff24ad257ad5c5793ce56d04947599ad68b3baa124105fc17"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.4"
|
version: "2.1.3"
|
||||||
pubspec_parse:
|
pubspec_parse:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: pubspec_parse
|
name: pubspec_parse
|
||||||
sha256: c799b721d79eb6ee6fa56f00c04b472dcd44a30d258fac2174a6ec57302678f8
|
sha256: "75f6614d6dde2dc68948dffbaa4fe5dae32cd700eb9fb763fe11dfb45a3c4d0a"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.0"
|
version: "1.2.1"
|
||||||
rxdart:
|
rational:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: rxdart
|
name: rational
|
||||||
sha256: "5c3004a4a8dbb94bd4bf5412a4def4acdaa12e12f269737a5751369e12d1a962"
|
sha256: ba58e9e18df9abde280e8b10051e4bce85091e41e8e7e411b6cde2e738d357cf
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.28.0"
|
version: "2.2.2"
|
||||||
shelf:
|
shelf:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: shelf
|
name: shelf
|
||||||
sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4
|
sha256: c24a96135a2ccd62c64b69315a14adc5c3419df63b4d7c05832a346fdb73682c
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.4.1"
|
version: "1.4.0"
|
||||||
shelf_web_socket:
|
shelf_web_socket:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: shelf_web_socket
|
name: shelf_web_socket
|
||||||
sha256: "073c147238594ecd0d193f3456a5fe91c4b0abbcc68bf5cd95b36c4e194ac611"
|
sha256: a988c0e8d8ffbdb8a28aa7ec8e449c260f3deb808781fe1284d22c5bba7156e8
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.0"
|
version: "1.0.3"
|
||||||
sky_engine:
|
sky_engine:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description: flutter
|
description: flutter
|
||||||
|
@ -693,10 +620,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: socks5_proxy
|
name: socks5_proxy
|
||||||
sha256: "616818a0ea1064a4823b53c9f7eaf8da64ed82dcd51ed71371c7e54751ed5053"
|
sha256: "1d21b5606169654bbf4cfb904e8e6ed897e9f763358709f87310c757096d909a"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.6"
|
version: "1.0.4"
|
||||||
source_gen:
|
source_gen:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -765,10 +692,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: test_api
|
name: test_api
|
||||||
sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb"
|
sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.7.2"
|
version: "0.6.1"
|
||||||
timing:
|
timing:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -777,38 +704,14 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.1"
|
version: "1.0.1"
|
||||||
tuple:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: tuple
|
|
||||||
sha256: a97ce2013f240b2f3807bcbaf218765b6f301c3eff91092bcfa23a039e7dd151
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.0.2"
|
|
||||||
typed_data:
|
typed_data:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: typed_data
|
name: typed_data
|
||||||
sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006
|
sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.4.0"
|
version: "1.3.1"
|
||||||
universal_ble:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: universal_ble
|
|
||||||
sha256: "0dfbd6b64bff3ad61ed7a895c232530d9614e9b01ab261a74433a43267edb7f3"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "0.12.0"
|
|
||||||
universal_platform:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: universal_platform
|
|
||||||
sha256: "64e16458a0ea9b99260ceb5467a214c1f298d647c659af1bff6d3bf82536b1ec"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.1.0"
|
|
||||||
unorm_dart:
|
unorm_dart:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -829,10 +732,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: vm_service
|
name: vm_service
|
||||||
sha256: f652077d0bdf60abe4c1f6377448e8655008eef28f128bc023f7b5e8dfeb48fc
|
sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "14.2.4"
|
version: "13.0.0"
|
||||||
watcher:
|
watcher:
|
||||||
dependency: "direct overridden"
|
dependency: "direct overridden"
|
||||||
description:
|
description:
|
||||||
|
@ -841,54 +744,38 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0"
|
version: "1.1.0"
|
||||||
web:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: web
|
|
||||||
sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.1.0"
|
|
||||||
web_socket:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: web_socket
|
|
||||||
sha256: "3c12d96c0c9a4eec095246debcea7b86c0324f22df69893d538fcc6f1b8cce83"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "0.1.6"
|
|
||||||
web_socket_channel:
|
web_socket_channel:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: web_socket_channel
|
name: web_socket_channel
|
||||||
sha256: "9f187088ed104edd8662ca07af4b124465893caf063ba29758f97af57e61da8f"
|
sha256: ca49c0bc209c687b887f30527fb6a9d80040b072cc2990f34b9bec3e7663101b
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.1"
|
version: "2.3.0"
|
||||||
|
win32:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: win32
|
||||||
|
sha256: c9ebe7ee4ab0c2194e65d3a07d8c54c5d00bb001b76081c4a04cdb8448b59e46
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.1.3"
|
||||||
xdg_directories:
|
xdg_directories:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: xdg_directories
|
name: xdg_directories
|
||||||
sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15"
|
sha256: bd512f03919aac5f1313eb8249f223bacf4927031bf60b02601f81f687689e86
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0"
|
version: "0.2.0+3"
|
||||||
xml:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: xml
|
|
||||||
sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "6.5.0"
|
|
||||||
yaml:
|
yaml:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: yaml
|
name: yaml
|
||||||
sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5"
|
sha256: "23812a9b125b48d4007117254bca50abb6c712352927eece9e155207b1db2370"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.2"
|
version: "3.1.1"
|
||||||
sdks:
|
sdks:
|
||||||
dart: ">=3.5.0 <4.0.0"
|
dart: ">=3.2.0-0 <4.0.0"
|
||||||
flutter: ">=3.24.0"
|
flutter: ">=3.7.0"
|
||||||
|
|
|
@ -21,18 +21,18 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: args
|
name: args
|
||||||
sha256: bf9f5caeea8d8fe6721a9c358dd8a5c1947b27f1cfaa18b39c301273594919e6
|
sha256: "139d809800a412ebb26a3892da228b2d0ba36f0ef5d9a82166e5e52ec8d61611"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.6.0"
|
version: "2.3.2"
|
||||||
asn1lib:
|
asn1lib:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: asn1lib
|
name: asn1lib
|
||||||
sha256: "6b151826fcc95ff246cd219a0bf4c753ea14f4081ad71c61939becf3aba27f70"
|
sha256: ab96a1cb3beeccf8145c52e449233fe68364c9641623acd3adad66f8184f1039
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.5.5"
|
version: "1.4.0"
|
||||||
async:
|
async:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -53,10 +53,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: build
|
name: build
|
||||||
sha256: "80184af8b6cb3e5c1c4ec6d8544d27711700bc3e6d2efad04238c7b5290889f0"
|
sha256: "3fbda25365741f8251b39f3917fb3c8e286a96fd068a5a242e11c2012d495777"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.4.1"
|
version: "2.3.1"
|
||||||
build_config:
|
build_config:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -69,10 +69,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: build_daemon
|
name: build_daemon
|
||||||
sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9"
|
sha256: "5f02d73eb2ba16483e693f80bee4f088563a820e47d1027d4cdfe62b5bb43e65"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.0.2"
|
version: "4.0.0"
|
||||||
build_resolvers:
|
build_resolvers:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description:
|
description:
|
||||||
|
@ -85,18 +85,18 @@ packages:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description:
|
description:
|
||||||
name: build_runner
|
name: build_runner
|
||||||
sha256: "028819cfb90051c6b5440c7e574d1896f8037e3c96cf17aaeb054c9311cfbf4d"
|
sha256: "3ac61a79bfb6f6cc11f693591063a7f19a7af628dc52f141743edac5c16e8c22"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.4.13"
|
version: "2.4.9"
|
||||||
build_runner_core:
|
build_runner_core:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: build_runner_core
|
name: build_runner_core
|
||||||
sha256: "6d6ee4276b1c5f34f21fdf39425202712d2be82019983d52f351c94aafbc2c41"
|
sha256: "14febe0f5bac5ae474117a36099b4de6f1dbc52df6c5e55534b3da9591bf4292"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "7.2.10"
|
version: "7.2.7"
|
||||||
built_collection:
|
built_collection:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -109,19 +109,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: built_value
|
name: built_value
|
||||||
sha256: c7913a9737ee4007efedaffc968c049fd0f3d0e49109e778edc10de9426005cb
|
sha256: "169565c8ad06adb760c3645bf71f00bff161b00002cace266cad42c5d22a7725"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "8.9.2"
|
version: "8.4.3"
|
||||||
cake_backup:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
path: "."
|
|
||||||
ref: main
|
|
||||||
resolved-ref: "3aba867dcab6737f6707782f5db15d71f303db38"
|
|
||||||
url: "https://github.com/cake-tech/cake_backup.git"
|
|
||||||
source: git
|
|
||||||
version: "1.0.0+1"
|
|
||||||
characters:
|
characters:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -134,10 +125,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: checked_yaml
|
name: checked_yaml
|
||||||
sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff
|
sha256: "3d1505d91afa809d177efd4eed5bb0eb65805097a1463abdd2add076effae311"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.3"
|
version: "2.0.2"
|
||||||
clock:
|
clock:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -150,10 +141,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: code_builder
|
name: code_builder
|
||||||
sha256: f692079e25e7869c14132d39f223f8eec9830eb76131925143b2129c4bb01b37
|
sha256: "0d43dd1288fd145de1ecc9a3948ad4a6d5a82f0a14c4fdd0892260787d975cbe"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.10.0"
|
version: "4.4.0"
|
||||||
collection:
|
collection:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -166,34 +157,18 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: convert
|
name: convert
|
||||||
sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68
|
sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.2"
|
version: "3.1.1"
|
||||||
crypto:
|
crypto:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: crypto
|
name: crypto
|
||||||
sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855"
|
sha256: aa274aa7774f8964e4f4f38cc994db7b6158dd36e9187aaceaddc994b35c6c67
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.6"
|
version: "3.0.2"
|
||||||
cryptography:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: cryptography
|
|
||||||
sha256: d146b76d33d94548cf035233fbc2f4338c1242fa119013bead807d033fc4ae05
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.7.0"
|
|
||||||
cupertino_icons:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: cupertino_icons
|
|
||||||
sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.0.8"
|
|
||||||
cw_core:
|
cw_core:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -209,14 +184,22 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.4"
|
version: "2.2.4"
|
||||||
|
decimal:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: decimal
|
||||||
|
sha256: "24a261d5d5c87e86c7651c417a5dbdf8bcd7080dd592533910e8d0505a279f21"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.3.3"
|
||||||
encrypt:
|
encrypt:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: encrypt
|
name: encrypt
|
||||||
sha256: "62d9aa4670cc2a8798bab89b39fc71b6dfbacf615de6cf5001fb39f7e4a996a2"
|
sha256: "4fd4e4fdc21b9d7d4141823e1e6515cd94e7b8d84749504c232999fba25d9bbb"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "5.0.3"
|
version: "5.0.1"
|
||||||
fake_async:
|
fake_async:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -229,26 +212,26 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: ffi
|
name: ffi
|
||||||
sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6"
|
sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.3"
|
version: "2.1.0"
|
||||||
file:
|
file:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: file
|
name: file
|
||||||
sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4
|
sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "7.0.1"
|
version: "6.1.4"
|
||||||
fixnum:
|
fixnum:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: fixnum
|
name: fixnum
|
||||||
sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be
|
sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.1"
|
version: "1.1.0"
|
||||||
flutter:
|
flutter:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description: flutter
|
description: flutter
|
||||||
|
@ -258,10 +241,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: flutter_mobx
|
name: flutter_mobx
|
||||||
sha256: "859fbf452fa9c2519d2700b125dd7fb14c508bbdd7fb65e26ca8ff6c92280e2e"
|
sha256: "0da4add0016387a7bf309a0d0c41d36c6b3ae25ed7a176409267f166509e723e"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.1+1"
|
version: "2.0.6+5"
|
||||||
flutter_test:
|
flutter_test:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description: flutter
|
description: flutter
|
||||||
|
@ -271,42 +254,42 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: frontend_server_client
|
name: frontend_server_client
|
||||||
sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694
|
sha256: "408e3ca148b31c20282ad6f37ebfa6f4bdc8fede5b74bc2f08d9d92b55db3612"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.0.0"
|
version: "3.2.0"
|
||||||
glob:
|
glob:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: glob
|
name: glob
|
||||||
sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63"
|
sha256: "4515b5b6ddb505ebdd242a5f2cc5d22d3d6a80013789debfbda7777f47ea308c"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.2"
|
version: "2.1.1"
|
||||||
graphs:
|
graphs:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: graphs
|
name: graphs
|
||||||
sha256: "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0"
|
sha256: f9e130f3259f52d26f0cfc0e964513796dafed572fa52e45d2f8d6ca14db39b2
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.2"
|
version: "2.2.0"
|
||||||
hashlib:
|
hashlib:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: hashlib
|
name: hashlib
|
||||||
sha256: f572f2abce09fc7aee53f15927052b9732ea1053e540af8cae211111ee0b99b1
|
sha256: "71bf102329ddb8e50c8a995ee4645ae7f1728bb65e575c17196b4d8262121a96"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.21.0"
|
version: "1.12.0"
|
||||||
hashlib_codecs:
|
hashlib_codecs:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: hashlib_codecs
|
name: hashlib_codecs
|
||||||
sha256: "8cea9ccafcfeaa7324d2ae52c61c69f7ff71f4237507a018caab31b9e416e3b1"
|
sha256: "49e2a471f74b15f1854263e58c2ac11f2b631b5b12c836f9708a35397d36d626"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.6.0"
|
version: "2.2.0"
|
||||||
hive:
|
hive:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -327,10 +310,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: http
|
name: http
|
||||||
sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010
|
sha256: "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.2"
|
version: "1.1.0"
|
||||||
http_multi_server:
|
http_multi_server:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -351,10 +334,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: intl
|
name: intl
|
||||||
sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf
|
sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.19.0"
|
version: "0.18.1"
|
||||||
io:
|
io:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -375,42 +358,42 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: json_annotation
|
name: json_annotation
|
||||||
sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1"
|
sha256: c33da08e136c3df0190bd5bbe51ae1df4a7d96e7954d1d7249fea2968a72d317
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.9.0"
|
version: "4.8.0"
|
||||||
leak_tracker:
|
leak_tracker:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: leak_tracker
|
name: leak_tracker
|
||||||
sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05"
|
sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "10.0.5"
|
version: "10.0.0"
|
||||||
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: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806"
|
sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.5"
|
version: "2.0.1"
|
||||||
leak_tracker_testing:
|
leak_tracker_testing:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: leak_tracker_testing
|
name: leak_tracker_testing
|
||||||
sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
|
sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.1"
|
version: "2.0.1"
|
||||||
logging:
|
logging:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: logging
|
name: logging
|
||||||
sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61
|
sha256: "04094f2eb032cbb06c6f6e8d3607edcfcb0455e2bb6cbc010cb01171dcb64e6d"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.0"
|
version: "1.1.1"
|
||||||
matcher:
|
matcher:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -423,49 +406,49 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: material_color_utilities
|
name: material_color_utilities
|
||||||
sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
|
sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.11.1"
|
version: "0.8.0"
|
||||||
meta:
|
meta:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: meta
|
name: meta
|
||||||
sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7
|
sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.15.0"
|
version: "1.11.0"
|
||||||
mime:
|
mime:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: mime
|
name: mime
|
||||||
sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6"
|
sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.0"
|
version: "1.0.4"
|
||||||
mobx:
|
mobx:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: mobx
|
name: mobx
|
||||||
sha256: "63920b27b32ad1910adfe767ab1750e4c212e8923232a1f891597b362074ea5e"
|
sha256: f1862bd92c6a903fab67338f27e2f731117c3cb9ea37cee1a487f9e4e0de314a
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.3+2"
|
version: "2.1.3+1"
|
||||||
mobx_codegen:
|
mobx_codegen:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description:
|
description:
|
||||||
name: mobx_codegen
|
name: mobx_codegen
|
||||||
sha256: d4beb9cea4b7b014321235f8fdc7c2193ee0fe1d1198e9da7403f8bc85c4407c
|
sha256: "86122e410d8ea24dda0c69adb5c2a6ccadd5ce02ad46e144764e0d0184a06181"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.0"
|
version: "2.1.1"
|
||||||
monero:
|
monero:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
path: "impls/monero.dart"
|
path: "."
|
||||||
ref: af5277f96073917185864d3596e82b67bee54e78
|
ref: d46753eca865e9e56c2f0ef6fe485c42e11982c5
|
||||||
resolved-ref: af5277f96073917185864d3596e82b67bee54e78
|
resolved-ref: d46753eca865e9e56c2f0ef6fe485c42e11982c5
|
||||||
url: "https://github.com/mrcyjanek/monero_c"
|
url: "https://github.com/mrcyjanek/monero.dart"
|
||||||
source: git
|
source: git
|
||||||
version: "0.0.0"
|
version: "0.0.0"
|
||||||
mutex:
|
mutex:
|
||||||
|
@ -476,14 +459,6 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.0"
|
version: "3.1.0"
|
||||||
nested:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: nested
|
|
||||||
sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.0.0"
|
|
||||||
package_config:
|
package_config:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -504,26 +479,26 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: path_provider
|
name: path_provider
|
||||||
sha256: fec0d61223fba3154d87759e3cc27fe2c8dc498f6386c6d6fc80d1afdd1bf378
|
sha256: a1aa8aaa2542a6bc57e381f132af822420216c80d4781f7aa085ca3229208aaa
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.4"
|
version: "2.1.1"
|
||||||
path_provider_android:
|
path_provider_android:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path_provider_android
|
name: path_provider_android
|
||||||
sha256: c464428172cb986b758c6d1724c603097febb8fb855aa265aeecc9280c294d4a
|
sha256: e595b98692943b4881b219f0a9e3945118d3c16bd7e2813f98ec6e532d905f72
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.12"
|
version: "2.2.1"
|
||||||
path_provider_foundation:
|
path_provider_foundation:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path_provider_foundation
|
name: path_provider_foundation
|
||||||
sha256: f234384a3fdd67f989b4d54a5d73ca2a6c422fa55ae694381ae0f4375cd1ea16
|
sha256: "19314d595120f82aca0ba62787d58dde2cc6b5df7d2f0daf72489e38d1b57f2d"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.4.0"
|
version: "2.3.1"
|
||||||
path_provider_linux:
|
path_provider_linux:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -536,50 +511,50 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path_provider_platform_interface
|
name: path_provider_platform_interface
|
||||||
sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334"
|
sha256: "94b1e0dd80970c1ce43d5d4e050a9918fce4f4a775e6142424c30a29a363265c"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.2"
|
version: "2.1.1"
|
||||||
path_provider_windows:
|
path_provider_windows:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path_provider_windows
|
name: path_provider_windows
|
||||||
sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7
|
sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.0"
|
version: "2.2.1"
|
||||||
platform:
|
platform:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: platform
|
name: platform
|
||||||
sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984"
|
sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.6"
|
version: "3.1.0"
|
||||||
plugin_platform_interface:
|
plugin_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: plugin_platform_interface
|
name: plugin_platform_interface
|
||||||
sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02"
|
sha256: dbf0f707c78beedc9200146ad3cb0ab4d5da13c246336987be6940f026500d3a
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.8"
|
version: "2.1.3"
|
||||||
pointycastle:
|
pointycastle:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: pointycastle
|
name: pointycastle
|
||||||
sha256: "4be0097fcf3fd3e8449e53730c631200ebc7b88016acecab2b0da2f0149222fe"
|
sha256: "7c1e5f0d23c9016c5bbd8b1473d0d3fb3fc851b876046039509e18e0c7485f2c"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.9.1"
|
version: "3.7.3"
|
||||||
polyseed:
|
polyseed:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: polyseed
|
name: polyseed
|
||||||
sha256: "11d4dbee409db053c5e9cd77382b2f5115f43fc2529158a826a96f3ba505d770"
|
sha256: edf28042e7b0b28f97a0469aa98e6e4015937cef6b9340cd6ad2822139c95217
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.0.6"
|
version: "0.0.5"
|
||||||
pool:
|
pool:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -588,46 +563,54 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.5.1"
|
version: "1.5.1"
|
||||||
provider:
|
process:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: provider
|
name: process
|
||||||
sha256: c8a055ee5ce3fd98d6fc872478b03823ffdb448699c6ebdbbc71d59b596fd48c
|
sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.1.2"
|
version: "4.2.4"
|
||||||
pub_semver:
|
pub_semver:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: pub_semver
|
name: pub_semver
|
||||||
sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c"
|
sha256: "307de764d305289ff24ad257ad5c5793ce56d04947599ad68b3baa124105fc17"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.4"
|
version: "2.1.3"
|
||||||
pubspec_parse:
|
pubspec_parse:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: pubspec_parse
|
name: pubspec_parse
|
||||||
sha256: c799b721d79eb6ee6fa56f00c04b472dcd44a30d258fac2174a6ec57302678f8
|
sha256: "75f6614d6dde2dc68948dffbaa4fe5dae32cd700eb9fb763fe11dfb45a3c4d0a"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.0"
|
version: "1.2.1"
|
||||||
|
rational:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: rational
|
||||||
|
sha256: cb808fb6f1a839e6fc5f7d8cb3b0a10e1db48b3be102de73938c627f0b636336
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.2.3"
|
||||||
shelf:
|
shelf:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: shelf
|
name: shelf
|
||||||
sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4
|
sha256: c24a96135a2ccd62c64b69315a14adc5c3419df63b4d7c05832a346fdb73682c
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.4.1"
|
version: "1.4.0"
|
||||||
shelf_web_socket:
|
shelf_web_socket:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: shelf_web_socket
|
name: shelf_web_socket
|
||||||
sha256: "073c147238594ecd0d193f3456a5fe91c4b0abbcc68bf5cd95b36c4e194ac611"
|
sha256: a988c0e8d8ffbdb8a28aa7ec8e449c260f3deb808781fe1284d22c5bba7156e8
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.0"
|
version: "1.0.3"
|
||||||
sky_engine:
|
sky_engine:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description: flutter
|
description: flutter
|
||||||
|
@ -637,10 +620,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: socks5_proxy
|
name: socks5_proxy
|
||||||
sha256: "616818a0ea1064a4823b53c9f7eaf8da64ed82dcd51ed71371c7e54751ed5053"
|
sha256: "1d21b5606169654bbf4cfb904e8e6ed897e9f763358709f87310c757096d909a"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.6"
|
version: "1.0.4"
|
||||||
source_gen:
|
source_gen:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -709,10 +692,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: test_api
|
name: test_api
|
||||||
sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb"
|
sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.7.2"
|
version: "0.6.1"
|
||||||
timing:
|
timing:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -721,22 +704,14 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.1"
|
version: "1.0.1"
|
||||||
tuple:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: tuple
|
|
||||||
sha256: a97ce2013f240b2f3807bcbaf218765b6f301c3eff91092bcfa23a039e7dd151
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.0.2"
|
|
||||||
typed_data:
|
typed_data:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: typed_data
|
name: typed_data
|
||||||
sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006
|
sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.4.0"
|
version: "1.3.1"
|
||||||
unorm_dart:
|
unorm_dart:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -757,10 +732,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: vm_service
|
name: vm_service
|
||||||
sha256: f652077d0bdf60abe4c1f6377448e8655008eef28f128bc023f7b5e8dfeb48fc
|
sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "14.2.4"
|
version: "13.0.0"
|
||||||
watcher:
|
watcher:
|
||||||
dependency: "direct overridden"
|
dependency: "direct overridden"
|
||||||
description:
|
description:
|
||||||
|
@ -769,46 +744,38 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0"
|
version: "1.1.0"
|
||||||
web:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: web
|
|
||||||
sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.1.0"
|
|
||||||
web_socket:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: web_socket
|
|
||||||
sha256: "3c12d96c0c9a4eec095246debcea7b86c0324f22df69893d538fcc6f1b8cce83"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "0.1.6"
|
|
||||||
web_socket_channel:
|
web_socket_channel:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: web_socket_channel
|
name: web_socket_channel
|
||||||
sha256: "9f187088ed104edd8662ca07af4b124465893caf063ba29758f97af57e61da8f"
|
sha256: ca49c0bc209c687b887f30527fb6a9d80040b072cc2990f34b9bec3e7663101b
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.1"
|
version: "2.3.0"
|
||||||
|
win32:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: win32
|
||||||
|
sha256: c9ebe7ee4ab0c2194e65d3a07d8c54c5d00bb001b76081c4a04cdb8448b59e46
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.1.3"
|
||||||
xdg_directories:
|
xdg_directories:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: xdg_directories
|
name: xdg_directories
|
||||||
sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15"
|
sha256: bd512f03919aac5f1313eb8249f223bacf4927031bf60b02601f81f687689e86
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0"
|
version: "0.2.0+3"
|
||||||
yaml:
|
yaml:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: yaml
|
name: yaml
|
||||||
sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5"
|
sha256: "23812a9b125b48d4007117254bca50abb6c712352927eece9e155207b1db2370"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.2"
|
version: "3.1.1"
|
||||||
sdks:
|
sdks:
|
||||||
dart: ">=3.5.0 <4.0.0"
|
dart: ">=3.2.0-0 <4.0.0"
|
||||||
flutter: ">=3.24.0"
|
flutter: ">=3.7.0"
|
||||||
|
|
7
cw_zano/.gitignore
vendored
Normal file
7
cw_zano/.gitignore
vendored
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
.DS_Store
|
||||||
|
.dart_tool/
|
||||||
|
|
||||||
|
.packages
|
||||||
|
.pub/
|
||||||
|
|
||||||
|
build/
|
10
cw_zano/.metadata
Normal file
10
cw_zano/.metadata
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# This file tracks properties of this Flutter project.
|
||||||
|
# Used by Flutter tool to assess capabilities and perform upgrades etc.
|
||||||
|
#
|
||||||
|
# This file should be version controlled and should not be manually edited.
|
||||||
|
|
||||||
|
version:
|
||||||
|
revision: 4d7946a68d26794349189cf21b3f68cc6fe61dcb
|
||||||
|
channel: stable
|
||||||
|
|
||||||
|
project_type: plugin
|
3
cw_zano/CHANGELOG.md
Normal file
3
cw_zano/CHANGELOG.md
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
## 0.0.1
|
||||||
|
|
||||||
|
* TODO: Describe initial release.
|
1
cw_zano/LICENSE
Normal file
1
cw_zano/LICENSE
Normal file
|
@ -0,0 +1 @@
|
||||||
|
TODO: Add your license here.
|
15
cw_zano/README.md
Normal file
15
cw_zano/README.md
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
# cw_zano
|
||||||
|
|
||||||
|
A new flutter plugin project.
|
||||||
|
|
||||||
|
## Getting Started
|
||||||
|
|
||||||
|
This project is a starting point for a Flutter
|
||||||
|
[plug-in package](https://flutter.dev/developing-packages/),
|
||||||
|
a specialized package that includes platform-specific implementation code for
|
||||||
|
Android and/or iOS.
|
||||||
|
|
||||||
|
For help getting started with Flutter, view our
|
||||||
|
[online documentation](https://flutter.dev/docs), which offers tutorials,
|
||||||
|
samples, guidance on mobile development, and a full API reference.
|
||||||
|
|
9
cw_zano/android/.gitignore
vendored
Normal file
9
cw_zano/android/.gitignore
vendored
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
*.iml
|
||||||
|
.gradle
|
||||||
|
/local.properties
|
||||||
|
/.idea/workspace.xml
|
||||||
|
/.idea/libraries
|
||||||
|
.DS_Store
|
||||||
|
/build
|
||||||
|
/captures
|
||||||
|
.cxx/
|
119
cw_zano/android/CMakeLists.txt
Normal file
119
cw_zano/android/CMakeLists.txt
Normal file
|
@ -0,0 +1,119 @@
|
||||||
|
cmake_minimum_required(VERSION 3.4.1)
|
||||||
|
|
||||||
|
add_library( cw_zano
|
||||||
|
SHARED
|
||||||
|
../ios/Classes/zano_api.cpp)
|
||||||
|
|
||||||
|
find_library( log-lib log )
|
||||||
|
|
||||||
|
set(EXTERNAL_LIBS_DIR ${CMAKE_SOURCE_DIR}/../../cw_shared_external/ios/External/android)
|
||||||
|
set(EXTERNAL_ZANO_ROOT ${CMAKE_SOURCE_DIR}/../../../zano)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
############
|
||||||
|
# OpenSSL
|
||||||
|
############
|
||||||
|
|
||||||
|
add_library(crypto STATIC IMPORTED)
|
||||||
|
set_target_properties(crypto PROPERTIES IMPORTED_LOCATION
|
||||||
|
${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/lib/libcrypto.a)
|
||||||
|
|
||||||
|
add_library(ssl STATIC IMPORTED)
|
||||||
|
set_target_properties(ssl PROPERTIES IMPORTED_LOCATION
|
||||||
|
${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/lib/libssl.a)
|
||||||
|
|
||||||
|
############
|
||||||
|
# Boost
|
||||||
|
############
|
||||||
|
|
||||||
|
add_library(boost_chrono STATIC IMPORTED)
|
||||||
|
set_target_properties(boost_chrono PROPERTIES IMPORTED_LOCATION
|
||||||
|
${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/lib/libboost_chrono.a)
|
||||||
|
|
||||||
|
add_library(boost_date_time STATIC IMPORTED)
|
||||||
|
set_target_properties(boost_date_time PROPERTIES IMPORTED_LOCATION
|
||||||
|
${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/lib/libboost_date_time.a)
|
||||||
|
|
||||||
|
add_library(boost_filesystem STATIC IMPORTED)
|
||||||
|
set_target_properties(boost_filesystem PROPERTIES IMPORTED_LOCATION
|
||||||
|
${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/lib/libboost_filesystem.a)
|
||||||
|
|
||||||
|
add_library(boost_program_options STATIC IMPORTED)
|
||||||
|
set_target_properties(boost_program_options PROPERTIES IMPORTED_LOCATION
|
||||||
|
${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/lib/libboost_program_options.a)
|
||||||
|
|
||||||
|
add_library(boost_regex STATIC IMPORTED)
|
||||||
|
set_target_properties(boost_regex PROPERTIES IMPORTED_LOCATION
|
||||||
|
${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/lib/libboost_regex.a)
|
||||||
|
|
||||||
|
add_library(boost_serialization STATIC IMPORTED)
|
||||||
|
set_target_properties(boost_serialization PROPERTIES IMPORTED_LOCATION
|
||||||
|
${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/lib/libboost_serialization.a)
|
||||||
|
|
||||||
|
add_library(boost_system STATIC IMPORTED)
|
||||||
|
set_target_properties(boost_system PROPERTIES IMPORTED_LOCATION
|
||||||
|
${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/lib/libboost_system.a)
|
||||||
|
|
||||||
|
add_library(boost_thread STATIC IMPORTED)
|
||||||
|
set_target_properties(boost_thread PROPERTIES IMPORTED_LOCATION
|
||||||
|
${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/lib/libboost_thread.a)
|
||||||
|
|
||||||
|
add_library(boost_wserialization STATIC IMPORTED)
|
||||||
|
set_target_properties(boost_wserialization PROPERTIES IMPORTED_LOCATION
|
||||||
|
${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/lib/libboost_wserialization.a)
|
||||||
|
|
||||||
|
add_library(boost_log STATIC IMPORTED)
|
||||||
|
set_target_properties(boost_log PROPERTIES IMPORTED_LOCATION
|
||||||
|
${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/lib/libboost_log.a)
|
||||||
|
|
||||||
|
#############
|
||||||
|
# Zano
|
||||||
|
#############
|
||||||
|
add_library(zano_common STATIC IMPORTED)
|
||||||
|
set_target_properties(zano_common PROPERTIES IMPORTED_LOCATION
|
||||||
|
${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/lib/zano/libcommon.a)
|
||||||
|
|
||||||
|
|
||||||
|
add_library(zano_crypto STATIC IMPORTED)
|
||||||
|
set_target_properties(zano_crypto PROPERTIES IMPORTED_LOCATION
|
||||||
|
${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/lib/zano/libcrypto.a)
|
||||||
|
|
||||||
|
add_library(zano_currency_core STATIC IMPORTED)
|
||||||
|
set_target_properties(zano_currency_core PROPERTIES IMPORTED_LOCATION
|
||||||
|
${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/lib/zano/libcurrency_core.a)
|
||||||
|
|
||||||
|
add_library(zano_z STATIC IMPORTED)
|
||||||
|
set_target_properties(zano_z PROPERTIES IMPORTED_LOCATION
|
||||||
|
${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/lib/zano/libz.a)
|
||||||
|
|
||||||
|
add_library(zano_wallet STATIC IMPORTED)
|
||||||
|
set_target_properties(zano_wallet PROPERTIES IMPORTED_LOCATION
|
||||||
|
${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/lib/zano/libwallet.a)
|
||||||
|
|
||||||
|
include_directories( ${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/include )
|
||||||
|
include_directories( ${EXTERNAL_ZANO_ROOT}/src/wallet )
|
||||||
|
|
||||||
|
|
||||||
|
target_link_libraries( cw_zano
|
||||||
|
zano_common
|
||||||
|
zano_crypto
|
||||||
|
zano_currency_core
|
||||||
|
zano_z
|
||||||
|
zano_wallet
|
||||||
|
|
||||||
|
boost_chrono
|
||||||
|
boost_date_time
|
||||||
|
boost_filesystem
|
||||||
|
boost_program_options
|
||||||
|
boost_regex
|
||||||
|
boost_serialization
|
||||||
|
boost_system
|
||||||
|
boost_thread
|
||||||
|
boost_wserialization
|
||||||
|
boost_log
|
||||||
|
|
||||||
|
ssl
|
||||||
|
crypto
|
||||||
|
${log-lib}
|
||||||
|
)
|
45
cw_zano/android/build.gradle
Normal file
45
cw_zano/android/build.gradle
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
group 'com.cakewallet.cw_zano'
|
||||||
|
version '1.0-SNAPSHOT'
|
||||||
|
|
||||||
|
buildscript {
|
||||||
|
ext.kotlin_version = '1.7.10'
|
||||||
|
repositories {
|
||||||
|
google()
|
||||||
|
jcenter()
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
classpath 'com.android.tools.build:gradle:4.1.0'
|
||||||
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
rootProject.allprojects {
|
||||||
|
repositories {
|
||||||
|
google()
|
||||||
|
jcenter()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
apply plugin: 'com.android.library'
|
||||||
|
apply plugin: 'kotlin-android'
|
||||||
|
|
||||||
|
android {
|
||||||
|
compileSdkVersion 28
|
||||||
|
|
||||||
|
sourceSets {
|
||||||
|
main.java.srcDirs += 'src/main/kotlin'
|
||||||
|
}
|
||||||
|
defaultConfig {
|
||||||
|
minSdkVersion 21
|
||||||
|
}
|
||||||
|
externalNativeBuild {
|
||||||
|
cmake {
|
||||||
|
path "CMakeLists.txt"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
||||||
|
}
|
3
cw_zano/android/gradle.properties
Normal file
3
cw_zano/android/gradle.properties
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
org.gradle.jvmargs=-Xmx1536M
|
||||||
|
android.useAndroidX=true
|
||||||
|
android.enableJetifier=true
|
5
cw_zano/android/gradle/wrapper/gradle-wrapper.properties
vendored
Normal file
5
cw_zano/android/gradle/wrapper/gradle-wrapper.properties
vendored
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
distributionBase=GRADLE_USER_HOME
|
||||||
|
distributionPath=wrapper/dists
|
||||||
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
|
zipStorePath=wrapper/dists
|
||||||
|
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
|
1
cw_zano/android/settings.gradle
Normal file
1
cw_zano/android/settings.gradle
Normal file
|
@ -0,0 +1 @@
|
||||||
|
rootProject.name = 'cw_zano'
|
3
cw_zano/android/src/main/AndroidManifest.xml
Normal file
3
cw_zano/android/src/main/AndroidManifest.xml
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
package="com.cakewallet.cw_zano">
|
||||||
|
</manifest>
|
|
@ -0,0 +1,36 @@
|
||||||
|
package com.cakewallet.cw_zano
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull
|
||||||
|
|
||||||
|
import io.flutter.embedding.engine.plugins.FlutterPlugin
|
||||||
|
import io.flutter.plugin.common.MethodCall
|
||||||
|
import io.flutter.plugin.common.MethodChannel
|
||||||
|
import io.flutter.plugin.common.MethodChannel.MethodCallHandler
|
||||||
|
import io.flutter.plugin.common.MethodChannel.Result
|
||||||
|
import io.flutter.plugin.common.PluginRegistry.Registrar
|
||||||
|
|
||||||
|
/** CwZanoPlugin */
|
||||||
|
class CwZanoPlugin: FlutterPlugin, MethodCallHandler {
|
||||||
|
/// The MethodChannel that will the communication between Flutter and native Android
|
||||||
|
///
|
||||||
|
/// This local reference serves to register the plugin with the Flutter Engine and unregister it
|
||||||
|
/// when the Flutter Engine is detached from the Activity
|
||||||
|
private lateinit var channel : MethodChannel
|
||||||
|
|
||||||
|
override fun onAttachedToEngine(@NonNull flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) {
|
||||||
|
channel = MethodChannel(flutterPluginBinding.binaryMessenger, "cw_zano")
|
||||||
|
channel.setMethodCallHandler(this)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onMethodCall(@NonNull call: MethodCall, @NonNull result: Result) {
|
||||||
|
if (call.method == "getPlatformVersion") {
|
||||||
|
result.success("Android ${android.os.Build.VERSION.RELEASE}")
|
||||||
|
} else {
|
||||||
|
result.notImplemented()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onDetachedFromEngine(@NonNull binding: FlutterPlugin.FlutterPluginBinding) {
|
||||||
|
channel.setMethodCallHandler(null)
|
||||||
|
}
|
||||||
|
}
|
37
cw_zano/ios/.gitignore
vendored
Normal file
37
cw_zano/ios/.gitignore
vendored
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
.idea/
|
||||||
|
.vagrant/
|
||||||
|
.sconsign.dblite
|
||||||
|
.svn/
|
||||||
|
|
||||||
|
.DS_Store
|
||||||
|
*.swp
|
||||||
|
profile
|
||||||
|
|
||||||
|
DerivedData/
|
||||||
|
build/
|
||||||
|
GeneratedPluginRegistrant.h
|
||||||
|
GeneratedPluginRegistrant.m
|
||||||
|
|
||||||
|
.generated/
|
||||||
|
|
||||||
|
*.pbxuser
|
||||||
|
*.mode1v3
|
||||||
|
*.mode2v3
|
||||||
|
*.perspectivev3
|
||||||
|
|
||||||
|
!default.pbxuser
|
||||||
|
!default.mode1v3
|
||||||
|
!default.mode2v3
|
||||||
|
!default.perspectivev3
|
||||||
|
|
||||||
|
xcuserdata
|
||||||
|
|
||||||
|
*.moved-aside
|
||||||
|
|
||||||
|
*.pyc
|
||||||
|
*sync/
|
||||||
|
Icon?
|
||||||
|
.tags*
|
||||||
|
|
||||||
|
/Flutter/Generated.xcconfig
|
||||||
|
/Flutter/flutter_export_environment.sh
|
0
cw_zano/ios/Assets/.gitkeep
Normal file
0
cw_zano/ios/Assets/.gitkeep
Normal file
4
cw_zano/ios/Classes/CwZanoPlugin.h
Normal file
4
cw_zano/ios/Classes/CwZanoPlugin.h
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
#import <Flutter/Flutter.h>
|
||||||
|
|
||||||
|
@interface CwZanoPlugin : NSObject<FlutterPlugin>
|
||||||
|
@end
|
15
cw_zano/ios/Classes/CwZanoPlugin.m
Normal file
15
cw_zano/ios/Classes/CwZanoPlugin.m
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
#import "CwZanoPlugin.h"
|
||||||
|
#if __has_include(<cw_zano/cw_zano-Swift.h>)
|
||||||
|
#import <cw_zano/cw_zano-Swift.h>
|
||||||
|
#else
|
||||||
|
// Support project import fallback if the generated compatibility header
|
||||||
|
// is not copied when this plugin is created as a library.
|
||||||
|
// https://forums.swift.org/t/swift-static-libraries-dont-copy-generated-objective-c-header/19816
|
||||||
|
#import "cw_zano-Swift.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
@implementation CwZanoPlugin
|
||||||
|
+ (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar>*)registrar {
|
||||||
|
[SwiftCwZanoPlugin registerWithRegistrar:registrar];
|
||||||
|
}
|
||||||
|
@end
|
14
cw_zano/ios/Classes/SwiftCwZanoPlugin.swift
Normal file
14
cw_zano/ios/Classes/SwiftCwZanoPlugin.swift
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
import Flutter
|
||||||
|
import UIKit
|
||||||
|
|
||||||
|
public class SwiftCwZanoPlugin: NSObject, FlutterPlugin {
|
||||||
|
public static func register(with registrar: FlutterPluginRegistrar) {
|
||||||
|
let channel = FlutterMethodChannel(name: "cw_zano", binaryMessenger: registrar.messenger())
|
||||||
|
let instance = SwiftCwZanoPlugin()
|
||||||
|
registrar.addMethodCallDelegate(instance, channel: channel)
|
||||||
|
}
|
||||||
|
|
||||||
|
public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
result("iOS " + UIDevice.current.systemVersion)
|
||||||
|
}
|
||||||
|
}
|
870
cw_zano/ios/Classes/zano_api.cpp
Normal file
870
cw_zano/ios/Classes/zano_api.cpp
Normal file
|
@ -0,0 +1,870 @@
|
||||||
|
#include <stdint.h>
|
||||||
|
#include "cstdlib"
|
||||||
|
#include <chrono>
|
||||||
|
#include <functional>
|
||||||
|
#include <iostream>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <mutex>
|
||||||
|
#include "thread"
|
||||||
|
|
||||||
|
|
||||||
|
#if __APPLE__
|
||||||
|
// Fix for randomx on ios
|
||||||
|
void __clear_cache(void* start, void* end) { }
|
||||||
|
//#include "../External/ios/include/wallet2_api.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "../External/include/wallet2_api.h"
|
||||||
|
|
||||||
|
#include "../../../cw_shared_external/ios/External/ios/sources/zano/src/wallet/plain_wallet_api.h"
|
||||||
|
//#include "plain_wallet_api_ex.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//using namespace std::chrono_literals;
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C"
|
||||||
|
{
|
||||||
|
#endif
|
||||||
|
//const uint64_t MONERO_BLOCK_SIZE = 1000;
|
||||||
|
|
||||||
|
struct Utf8Box
|
||||||
|
{
|
||||||
|
char *value;
|
||||||
|
|
||||||
|
Utf8Box(char *_value)
|
||||||
|
{
|
||||||
|
value = _value;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
struct SubaddressRow
|
||||||
|
{
|
||||||
|
uint64_t id;
|
||||||
|
char *address;
|
||||||
|
char *label;
|
||||||
|
|
||||||
|
SubaddressRow(std::size_t _id, char *_address, char *_label)
|
||||||
|
{
|
||||||
|
id = static_cast<uint64_t>(_id);
|
||||||
|
address = _address;
|
||||||
|
label = _label;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
struct AccountRow
|
||||||
|
{
|
||||||
|
uint64_t id;
|
||||||
|
char *label;
|
||||||
|
|
||||||
|
AccountRow(std::size_t _id, char *_label)
|
||||||
|
{
|
||||||
|
id = static_cast<uint64_t>(_id);
|
||||||
|
label = _label;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ZanoBalance
|
||||||
|
{
|
||||||
|
uint64_t amount;
|
||||||
|
char *assetType;
|
||||||
|
|
||||||
|
ZanoBalance(char *_assetType, uint64_t _amount)
|
||||||
|
{
|
||||||
|
amount = _amount;
|
||||||
|
assetType = _assetType;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ZanoRate
|
||||||
|
{
|
||||||
|
uint64_t rate;
|
||||||
|
char *assetType;
|
||||||
|
|
||||||
|
ZanoRate(char *_assetType, uint64_t _rate)
|
||||||
|
{
|
||||||
|
rate = _rate;
|
||||||
|
assetType = _assetType;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/*struct MoneroWalletListener : Monero::WalletListener
|
||||||
|
{
|
||||||
|
uint64_t m_height;
|
||||||
|
bool m_need_to_refresh;
|
||||||
|
bool m_new_transaction;
|
||||||
|
|
||||||
|
MoneroWalletListener()
|
||||||
|
{
|
||||||
|
m_height = 0;
|
||||||
|
m_need_to_refresh = false;
|
||||||
|
m_new_transaction = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void moneySpent(const std::string &txId, uint64_t amount, std::string assetType)
|
||||||
|
{
|
||||||
|
m_new_transaction = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void moneyReceived(const std::string &txId, uint64_t amount, std::string assetType)
|
||||||
|
{
|
||||||
|
m_new_transaction = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void unconfirmedMoneyReceived(const std::string &txId, uint64_t amount)
|
||||||
|
{
|
||||||
|
m_new_transaction = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void newBlock(uint64_t height)
|
||||||
|
{
|
||||||
|
m_height = height;
|
||||||
|
}
|
||||||
|
|
||||||
|
void updated()
|
||||||
|
{
|
||||||
|
m_new_transaction = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void refreshed()
|
||||||
|
{
|
||||||
|
m_need_to_refresh = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void resetNeedToRefresh()
|
||||||
|
{
|
||||||
|
m_need_to_refresh = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool isNeedToRefresh()
|
||||||
|
{
|
||||||
|
return m_need_to_refresh;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool isNewTransactionExist()
|
||||||
|
{
|
||||||
|
return m_new_transaction;
|
||||||
|
}
|
||||||
|
|
||||||
|
void resetIsNewTransactionExist()
|
||||||
|
{
|
||||||
|
m_new_transaction = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint64_t height()
|
||||||
|
{
|
||||||
|
return m_height;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
*/
|
||||||
|
|
||||||
|
struct TransactionInfoRow
|
||||||
|
{
|
||||||
|
uint64_t amount;
|
||||||
|
uint64_t fee;
|
||||||
|
uint64_t blockHeight;
|
||||||
|
uint64_t confirmations;
|
||||||
|
uint32_t subaddrAccount;
|
||||||
|
int8_t direction;
|
||||||
|
int8_t isPending;
|
||||||
|
uint32_t subaddrIndex;
|
||||||
|
|
||||||
|
char *hash;
|
||||||
|
char *paymentId;
|
||||||
|
char *assetType;
|
||||||
|
|
||||||
|
int64_t datetime;
|
||||||
|
|
||||||
|
TransactionInfoRow(/*wallet_public::wallet_transfer_info& wti*/)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
amount = wti.subtransfers.
|
||||||
|
fee = transaction->fee();
|
||||||
|
blockHeight = transaction->blockHeight();
|
||||||
|
subaddrAccount = transaction->subaddrAccount();
|
||||||
|
std::set<uint32_t>::iterator it = transaction->subaddrIndex().begin();
|
||||||
|
subaddrIndex = *it;
|
||||||
|
confirmations = transaction->confirmations();
|
||||||
|
datetime = static_cast<int64_t>(transaction->timestamp());
|
||||||
|
direction = transaction->direction();
|
||||||
|
isPending = static_cast<int8_t>(transaction->isPending());
|
||||||
|
std::string *hash_str = new std::string(transaction->hash());
|
||||||
|
hash = strdup(hash_str->c_str());
|
||||||
|
paymentId = strdup(transaction->paymentId().c_str());
|
||||||
|
assetType = strdup(transaction->assetType().c_str());
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
Monero::Wallet *m_wallet;
|
||||||
|
Monero::TransactionHistory *m_transaction_history;
|
||||||
|
MoneroWalletListener *m_listener;
|
||||||
|
Monero::Subaddress *m_subaddress;
|
||||||
|
Monero::SubaddressAccount *m_account;
|
||||||
|
uint64_t m_last_known_wallet_height;
|
||||||
|
uint64_t m_cached_syncing_blockchain_height = 0;
|
||||||
|
std::mutex store_lock;
|
||||||
|
bool is_storing = false;
|
||||||
|
*/
|
||||||
|
//void change_current_wallet(Monero::Wallet *wallet)
|
||||||
|
//{
|
||||||
|
/*
|
||||||
|
m_wallet = wallet;
|
||||||
|
m_listener = nullptr;
|
||||||
|
|
||||||
|
|
||||||
|
if (wallet != nullptr)
|
||||||
|
{
|
||||||
|
m_transaction_history = wallet->history();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_transaction_history = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (wallet != nullptr)
|
||||||
|
{
|
||||||
|
m_account = wallet->subaddressAccount();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_account = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (wallet != nullptr)
|
||||||
|
{
|
||||||
|
m_subaddress = wallet->subaddress();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_subaddress = nullptr;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
//}
|
||||||
|
|
||||||
|
//Monero::Wallet *get_current_wallet()
|
||||||
|
//{
|
||||||
|
|
||||||
|
// return nullptr;//return m_wallet;
|
||||||
|
//}
|
||||||
|
|
||||||
|
char * create_wallet(char *path, char *password, char *language, int32_t networkType, char *error)
|
||||||
|
{
|
||||||
|
return strdup(plain_wallet::generate(path, password).c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
char * restore_wallet_from_seed(char *path, char *password, char *seed, int32_t networkType, uint64_t restoreHeight, char *error)
|
||||||
|
{
|
||||||
|
return strdup(plain_wallet::restore(seed, path, password, "").c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
bool restore_wallet_from_keys(char *path, char *password, char *language, char *address, char *viewKey, char *spendKey, int32_t networkType, uint64_t restoreHeight, char *error)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
Monero::NetworkType _networkType = static_cast<Monero::NetworkType>(networkType);
|
||||||
|
Monero::Wallet *wallet = Monero::WalletManagerFactory::getWalletManager()->createWalletFromKeys(
|
||||||
|
std::string(path),
|
||||||
|
std::string(password),
|
||||||
|
std::string(language),
|
||||||
|
_networkType,
|
||||||
|
(uint64_t)restoreHeight,
|
||||||
|
std::string(address),
|
||||||
|
std::string(viewKey),
|
||||||
|
std::string(spendKey));
|
||||||
|
|
||||||
|
int status;
|
||||||
|
std::string errorString;
|
||||||
|
|
||||||
|
wallet->statusWithErrorString(status, errorString);
|
||||||
|
|
||||||
|
if (status != Monero::Wallet::Status_Ok || !errorString.empty())
|
||||||
|
{
|
||||||
|
error = strdup(errorString.c_str());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
change_current_wallet(wallet);
|
||||||
|
*/
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
char * load_wallet(char *path, char *password, int32_t nettype)
|
||||||
|
{
|
||||||
|
return strdup(plain_wallet::open(path, password).c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
char *error_string() {
|
||||||
|
return strdup("");//strdup(get_current_wallet()->errorString().c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool is_wallet_exist(char *path)
|
||||||
|
{
|
||||||
|
return plain_wallet::is_wallet_exist(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
char *close_wallet(uint64_t hwallet)
|
||||||
|
{
|
||||||
|
return strdup(plain_wallet::close_wallet(hwallet).c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
char *get_wallet_info(uint64_t hwallet) {
|
||||||
|
return strdup(plain_wallet::get_wallet_info(hwallet).c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
get_filename(): -> get_wallet_info(h).wi.path
|
||||||
|
secret_view_key(): -> get_wallet_info(h).wi_extended.view_private_key
|
||||||
|
public_view_key(): -> get_wallet_info(h).wi_extended.view_public_key
|
||||||
|
secret_spend_key(): -> get_wallet_info(h).wi_extended.spend_private_key
|
||||||
|
public_spend_key(): -> get_wallet_info(h).wi_extended.spend_public_key
|
||||||
|
get_address(): -> get_wallet_info(h).wi.address
|
||||||
|
seed(): -> get_wallet_info(h).wi_extended.seed
|
||||||
|
get_current_height(): -> get_wallet_status(h).current_wallet_height
|
||||||
|
get_node_height(): -> get_wallet_status(h).current_daemon_height
|
||||||
|
|
||||||
|
get_syncing_height() ??? how it's different from get_current_height??=
|
||||||
|
start_refresh() ???
|
||||||
|
set_refresh_from_block_height ???
|
||||||
|
set_recovering_from_seed ???
|
||||||
|
get_node_height_or_update ???
|
||||||
|
is_needed_to_refresh ???
|
||||||
|
is_new_transaction_exist ???
|
||||||
|
set_listener ???
|
||||||
|
transactions_refresh() ???
|
||||||
|
on_startup() ???
|
||||||
|
rescan_blockchain() ???
|
||||||
|
set_trusted_daemon()/trusted_daemon() ???
|
||||||
|
|
||||||
|
|
||||||
|
asset_types_size()/asset_types() dedicated from balance
|
||||||
|
|
||||||
|
update_rate()/get_rate()/size_of_rate() - need to fetch Zano price from coinmarketcap API, other assets ???
|
||||||
|
|
||||||
|
subaddrress_size()/subaddrress_get_all() - no subaddresses, only one address, available via get_wallet_info(h).wi.address
|
||||||
|
|
||||||
|
connect_to_node()/is_connected(): -> get_connectivity_status(): {
|
||||||
|
"is_online": true,
|
||||||
|
"last_daemon_is_disconnected": false,
|
||||||
|
"is_server_busy": false,
|
||||||
|
"last_proxy_communicate_timestamp": 12121212
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
get_full_balance/get_unlocked_balance(): -> async_call("invoke", hwallet, "{method: 'get_recent_txs_and_info', params: {offset: 0,count: 30,update_provision_info: true}}")
|
||||||
|
return list of last transactions + balances
|
||||||
|
|
||||||
|
store(): -> async_call("invoke", hwallet, "{method: 'store', params: {}}")
|
||||||
|
|
||||||
|
set_password() return "OK" if succeded
|
||||||
|
|
||||||
|
transaction_create/transaction_commit () replaced with method 'transfer' that receive following argument in JSON:
|
||||||
|
async_call("invoke", hwallet, "
|
||||||
|
{
|
||||||
|
"method": "transfer",
|
||||||
|
"params": {
|
||||||
|
"destinations": [
|
||||||
|
{
|
||||||
|
"amount": "0.222",
|
||||||
|
"address": "iZ2GHyPD7g28hgBfboZeCENaYrHSYZ1bLFi5cgWvn4WJLaxfgs4kqG6cJi9ai2zrXWSCpsvRXit14gKjeijx6YPCLJEv6Fx4rVm1hdAGQFiv",
|
||||||
|
"asset_id" "bec034f4f158f97cfc4933c3e387b098f69870e955a49061f9ce956212729534"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"fee": 10000000000,
|
||||||
|
"mixin": 10,
|
||||||
|
"payment_id": "",
|
||||||
|
"comment": "haha",
|
||||||
|
"push_payer": false,
|
||||||
|
"hide_receiver": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
")
|
||||||
|
|
||||||
|
after transaction_create() event happened you need to call API get_current_tx_fee(priority_raw), get fee from it and use it to
|
||||||
|
show to dialog in UI, and then if confirmed when transaction_commit() need to actually call async_call(...) that do actual transfer
|
||||||
|
|
||||||
|
subaddress doesn't exist in Zano so following api is not present:
|
||||||
|
subaddress_add_row/subaddress_set_label/subaddress_refresh/account_size/account_get_all/account_add_row/account_set_label_row/account_refresh
|
||||||
|
|
||||||
|
transactions_get_all() ->
|
||||||
|
async_call("invoke", hwallet, "
|
||||||
|
{
|
||||||
|
"method": "get_recent_txs_and_info",
|
||||||
|
"params": {
|
||||||
|
"offset": 0,
|
||||||
|
"count": 30,
|
||||||
|
"update_provision_info": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
")
|
||||||
|
|
||||||
|
transactions_count() -> invoke: get_recent_txs_and_info
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
uint64_t get_current_tx_fee(uint64_t priority)
|
||||||
|
{
|
||||||
|
return plain_wallet::get_current_tx_fee(priority);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
char* get_wallet_status(uint64_t hwallet)
|
||||||
|
{
|
||||||
|
return strdup(plain_wallet::get_wallet_status(hwallet).c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
char* get_address_info(char* address)
|
||||||
|
{
|
||||||
|
return strdup(plain_wallet::get_address_info(address).c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
char* async_call(char* method_name, uint64_t instance_id, char* params)
|
||||||
|
{
|
||||||
|
return strdup(plain_wallet::async_call(method_name, instance_id, params).c_str());
|
||||||
|
}
|
||||||
|
char* try_pull_result(uint64_t job_id)
|
||||||
|
{
|
||||||
|
return strdup(plain_wallet::try_pull_result(job_id).c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
char* sync_call(const std::string& method_name, uint64_t instance_id, const std::string& params)
|
||||||
|
{
|
||||||
|
return strdup(plain_wallet::sync_call(method_name, instance_id, params).c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
char* get_connectivity_status()
|
||||||
|
{
|
||||||
|
return strdup(plain_wallet::get_connectivity_status().c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
bool setup_node(char *address, char *login, char *password, bool use_ssl, bool is_light_wallet, char *error)
|
||||||
|
{
|
||||||
|
nice(19);
|
||||||
|
if(use_ssl)
|
||||||
|
{
|
||||||
|
//LOG_ERROR("SSL is not supported yet for Zano");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string res = plain_wallet::init(address, "", 0);
|
||||||
|
if(API_RETURN_CODE_OK != res)
|
||||||
|
{
|
||||||
|
//LOG_ERROR("Failed init wallet");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
//void start_refresh()
|
||||||
|
//{
|
||||||
|
//get_current_wallet()->refreshAsync();
|
||||||
|
//get_current_wallet()->startRefresh();
|
||||||
|
//}
|
||||||
|
|
||||||
|
//void set_refresh_from_block_height(uint64_t height)
|
||||||
|
//{
|
||||||
|
//get_current_wallet()->setRefreshFromBlockHeight(height);
|
||||||
|
//}
|
||||||
|
|
||||||
|
//void set_recovering_from_seed(bool is_recovery)
|
||||||
|
//{
|
||||||
|
//get_current_wallet()->setRecoveringFromSeed(is_recovery);
|
||||||
|
//}
|
||||||
|
|
||||||
|
char* set_password(uint64_t hwallet, char *password, Utf8Box &error)
|
||||||
|
{
|
||||||
|
return strdup(plain_wallet::reset_wallet_password(hwallet, password).c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
bool transaction_create(char *address, char *asset_type, char *payment_id, char *amount,
|
||||||
|
uint8_t priority_raw, uint32_t subaddr_account, Utf8Box &error, PendingTransactionRaw &pendingTransaction)
|
||||||
|
{
|
||||||
|
pendingTransaction.fee = plain_wallet::get_current_tx_fee(priority_raw);
|
||||||
|
pendingTransaction.amount = strdup(amount);
|
||||||
|
pendingTransaction.address = strdup(address);
|
||||||
|
pendingTransaction.asset_type = strdup(asset_type);
|
||||||
|
pendingTransaction.payment_id = strdup(payment_id);
|
||||||
|
pendingTransaction.priority_raw = priority_raw;
|
||||||
|
pendingTransaction.subaddr_account = 0;
|
||||||
|
return true;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
//bool transaction_create_mult_dest(char **addresses, char *asset_type, char *payment_id, char **amounts, uint32_t size,
|
||||||
|
// uint8_t priority_raw, uint32_t subaddr_account, Utf8Box &error, PendingTransactionRaw &pendingTransaction)
|
||||||
|
//{
|
||||||
|
/*
|
||||||
|
nice(19);
|
||||||
|
|
||||||
|
std::vector<std::string> _addresses;
|
||||||
|
std::vector<uint64_t> _amounts;
|
||||||
|
|
||||||
|
for (int i = 0; i < size; i++) {
|
||||||
|
_addresses.push_back(std::string(*addresses));
|
||||||
|
_amounts.push_back(Monero::Wallet::amountFromString(std::string(*amounts)));
|
||||||
|
addresses++;
|
||||||
|
amounts++;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto priority = static_cast<Monero::PendingTransaction::Priority>(priority_raw);
|
||||||
|
std::string _payment_id;
|
||||||
|
Monero::PendingTransaction *transaction;
|
||||||
|
|
||||||
|
if (payment_id != nullptr)
|
||||||
|
{
|
||||||
|
_payment_id = std::string(payment_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
transaction = m_wallet->createTransactionMultDest(_addresses, _payment_id, _amounts,
|
||||||
|
std::string(asset_type), std::string(asset_type), m_wallet->defaultMixin(), priority, subaddr_account,{});
|
||||||
|
|
||||||
|
int status = transaction->status();
|
||||||
|
|
||||||
|
if (status == Monero::PendingTransaction::Status::Status_Error || status == Monero::PendingTransaction::Status::Status_Critical)
|
||||||
|
{
|
||||||
|
error = Utf8Box(strdup(transaction->errorString().c_str()));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_listener != nullptr) {
|
||||||
|
m_listener->m_new_transaction = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
pendingTransaction = PendingTransactionRaw(transaction);
|
||||||
|
return true;
|
||||||
|
*/
|
||||||
|
// return false;
|
||||||
|
//}
|
||||||
|
|
||||||
|
//bool transaction_commit(PendingTransactionRaw *transaction, Utf8Box &error)
|
||||||
|
//{
|
||||||
|
/*
|
||||||
|
bool committed = transaction->transaction->commit();
|
||||||
|
|
||||||
|
if (!committed)
|
||||||
|
{
|
||||||
|
error = Utf8Box(strdup(transaction->transaction->errorString().c_str()));
|
||||||
|
} else if (m_listener != nullptr) {
|
||||||
|
m_listener->m_new_transaction = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return committed;
|
||||||
|
*/
|
||||||
|
// return false;
|
||||||
|
//}
|
||||||
|
|
||||||
|
//uint64_t get_node_height_or_update(uint64_t base_eight)
|
||||||
|
//{
|
||||||
|
/*
|
||||||
|
if (m_cached_syncing_blockchain_height < base_eight) {
|
||||||
|
m_cached_syncing_blockchain_height = base_eight;
|
||||||
|
}
|
||||||
|
|
||||||
|
return m_cached_syncing_blockchain_height;
|
||||||
|
*/
|
||||||
|
// return 0;
|
||||||
|
//}
|
||||||
|
|
||||||
|
//uint64_t get_syncing_height(uint64_t hwallet)
|
||||||
|
//{
|
||||||
|
/*
|
||||||
|
if (m_listener == nullptr) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint64_t height = m_listener->height();
|
||||||
|
|
||||||
|
if (height <= 1) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (height != m_last_known_wallet_height)
|
||||||
|
{
|
||||||
|
m_last_known_wallet_height = height;
|
||||||
|
}
|
||||||
|
|
||||||
|
return height;
|
||||||
|
*/
|
||||||
|
// return 0;
|
||||||
|
//}
|
||||||
|
|
||||||
|
//uint64_t is_needed_to_refresh()
|
||||||
|
//{
|
||||||
|
// return 0;
|
||||||
|
/*
|
||||||
|
if (m_listener == nullptr) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool should_refresh = m_listener->isNeedToRefresh();
|
||||||
|
|
||||||
|
if (should_refresh) {
|
||||||
|
m_listener->resetNeedToRefresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
return should_refresh;
|
||||||
|
*/
|
||||||
|
//}
|
||||||
|
|
||||||
|
//uint8_t is_new_transaction_exist()
|
||||||
|
//{
|
||||||
|
/*
|
||||||
|
if (m_listener == nullptr) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool is_new_transaction_exist = m_listener->isNewTransactionExist();
|
||||||
|
|
||||||
|
if (is_new_transaction_exist)
|
||||||
|
{
|
||||||
|
m_listener->resetIsNewTransactionExist();
|
||||||
|
}
|
||||||
|
|
||||||
|
return is_new_transaction_exist;
|
||||||
|
*/
|
||||||
|
// return 0;
|
||||||
|
//}
|
||||||
|
|
||||||
|
//void set_listener()
|
||||||
|
//{
|
||||||
|
/*
|
||||||
|
m_last_known_wallet_height = 0;
|
||||||
|
|
||||||
|
if (m_listener != nullptr)
|
||||||
|
{
|
||||||
|
free(m_listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
m_listener = new MoneroWalletListener();
|
||||||
|
get_current_wallet()->setListener(m_listener);
|
||||||
|
*/
|
||||||
|
//}
|
||||||
|
|
||||||
|
//int64_t *subaddrress_get_all()
|
||||||
|
//{
|
||||||
|
/*
|
||||||
|
std::vector<Monero::SubaddressRow *> _subaddresses = m_subaddress->getAll();
|
||||||
|
size_t size = _subaddresses.size();
|
||||||
|
int64_t *subaddresses = (int64_t *)malloc(size * sizeof(int64_t));
|
||||||
|
|
||||||
|
for (int i = 0; i < size; i++)
|
||||||
|
{
|
||||||
|
Monero::SubaddressRow *row = _subaddresses[i];
|
||||||
|
SubaddressRow *_row = new SubaddressRow(row->getRowId(), strdup(row->getAddress().c_str()), strdup(row->getLabel().c_str()));
|
||||||
|
subaddresses[i] = reinterpret_cast<int64_t>(_row);
|
||||||
|
}
|
||||||
|
|
||||||
|
return subaddresses;
|
||||||
|
*/
|
||||||
|
// return nullptr;
|
||||||
|
//}
|
||||||
|
|
||||||
|
//int32_t subaddrress_size()
|
||||||
|
//{
|
||||||
|
//std::vector<Monero::SubaddressRow *> _subaddresses = m_subaddress->getAll();
|
||||||
|
//return _subaddresses.size();
|
||||||
|
// return 0;
|
||||||
|
//}
|
||||||
|
|
||||||
|
//void subaddress_add_row(uint32_t accountIndex, char *label)
|
||||||
|
//{
|
||||||
|
//m_subaddress->addRow(accountIndex, std::string(label));
|
||||||
|
//}
|
||||||
|
|
||||||
|
//void subaddress_set_label(uint32_t accountIndex, uint32_t addressIndex, char *label)
|
||||||
|
//{
|
||||||
|
//m_subaddress->setLabel(accountIndex, addressIndex, std::string(label));
|
||||||
|
//}
|
||||||
|
|
||||||
|
//void subaddress_refresh(uint32_t accountIndex)
|
||||||
|
//{
|
||||||
|
//m_subaddress->refresh(accountIndex);
|
||||||
|
//}
|
||||||
|
//int32_t account_size()
|
||||||
|
//{
|
||||||
|
//std::vector<Monero::SubaddressAccountRow *> _accocunts = m_account->getAll();
|
||||||
|
//return _accocunts.size();
|
||||||
|
// return 0;
|
||||||
|
//}
|
||||||
|
|
||||||
|
//int64_t *account_get_all()
|
||||||
|
//{
|
||||||
|
/*
|
||||||
|
std::vector<Monero::SubaddressAccountRow *> _accocunts = m_account->getAll();
|
||||||
|
size_t size = _accocunts.size();
|
||||||
|
int64_t *accocunts = (int64_t *)malloc(size * sizeof(int64_t));
|
||||||
|
|
||||||
|
for (int i = 0; i < size; i++)
|
||||||
|
{
|
||||||
|
Monero::SubaddressAccountRow *row = _accocunts[i];
|
||||||
|
AccountRow *_row = new AccountRow(row->getRowId(), strdup(row->getLabel().c_str()));
|
||||||
|
accocunts[i] = reinterpret_cast<int64_t>(_row);
|
||||||
|
}
|
||||||
|
|
||||||
|
return accocunts;
|
||||||
|
*/
|
||||||
|
// return nullptr;
|
||||||
|
//}
|
||||||
|
|
||||||
|
//void account_add_row(char *label)
|
||||||
|
//{
|
||||||
|
//m_account->addRow(std::string(label));
|
||||||
|
//}
|
||||||
|
//void account_set_label_row(uint32_t account_index, char *label)
|
||||||
|
//{
|
||||||
|
//m_account->setLabel(account_index, label);
|
||||||
|
//}
|
||||||
|
|
||||||
|
//void account_refresh()
|
||||||
|
//{
|
||||||
|
//m_account->refresh();
|
||||||
|
//}
|
||||||
|
|
||||||
|
//int64_t *transactions_get_all()
|
||||||
|
//{
|
||||||
|
/*
|
||||||
|
std::vector<Monero::TransactionInfo *> transactions = m_transaction_history->getAll();
|
||||||
|
size_t size = transactions.size();
|
||||||
|
int64_t *transactionAddresses = (int64_t *)malloc(size * sizeof(int64_t));
|
||||||
|
|
||||||
|
for (int i = 0; i < size; i++)
|
||||||
|
{
|
||||||
|
Monero::TransactionInfo *row = transactions[i];
|
||||||
|
TransactionInfoRow *tx = new TransactionInfoRow(row);
|
||||||
|
transactionAddresses[i] = reinterpret_cast<int64_t>(tx);
|
||||||
|
}
|
||||||
|
|
||||||
|
return transactionAddresses;
|
||||||
|
*/
|
||||||
|
// return nullptr;
|
||||||
|
//}
|
||||||
|
|
||||||
|
//void transactions_refresh()
|
||||||
|
//{
|
||||||
|
//m_transaction_history->refresh();
|
||||||
|
//}
|
||||||
|
|
||||||
|
//int64_t transactions_count()
|
||||||
|
//{
|
||||||
|
//return m_transaction_history->count();
|
||||||
|
// return 0;
|
||||||
|
//}
|
||||||
|
|
||||||
|
//int LedgerExchange(
|
||||||
|
// unsigned char *command,
|
||||||
|
// unsigned int cmd_len,
|
||||||
|
// unsigned char *response,
|
||||||
|
// unsigned int max_resp_len)
|
||||||
|
//{
|
||||||
|
// return -1;
|
||||||
|
//}
|
||||||
|
|
||||||
|
//int LedgerFind(char *buffer, size_t len)
|
||||||
|
//{
|
||||||
|
// return -1;
|
||||||
|
//}
|
||||||
|
|
||||||
|
//void on_startup()
|
||||||
|
//{
|
||||||
|
//Monero::Utils::onStartup();
|
||||||
|
//Monero::WalletManagerFactory::setLogLevel(4);
|
||||||
|
//}
|
||||||
|
|
||||||
|
//void rescan_blockchain()
|
||||||
|
//{
|
||||||
|
//m_wallet->rescanBlockchainAsync();
|
||||||
|
//}
|
||||||
|
|
||||||
|
char * get_tx_key(char * txId)
|
||||||
|
{
|
||||||
|
return strdup(""); //return strdup(m_wallet->getTxKey(std::string(txId)).c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
//int32_t asset_types_size()
|
||||||
|
//{
|
||||||
|
// return 0; //return Monero::Assets::list().size();
|
||||||
|
//}
|
||||||
|
|
||||||
|
//char **asset_types()
|
||||||
|
//{
|
||||||
|
/*
|
||||||
|
size_t size = Monero::Assets::list().size();
|
||||||
|
std::vector<std::string> assetList = Monero::Assets::list();
|
||||||
|
char **assetTypesPts;
|
||||||
|
assetTypesPts = (char **) malloc( size * sizeof(char*));
|
||||||
|
|
||||||
|
for (int i = 0; i < size; i++)
|
||||||
|
{
|
||||||
|
|
||||||
|
std::string asset = assetList[i];
|
||||||
|
//assetTypes[i] = (char *)malloc( 5 * sizeof(char));
|
||||||
|
assetTypesPts[i] = strdup(asset.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
return assetTypesPts;
|
||||||
|
*/
|
||||||
|
// return nullptr;
|
||||||
|
//}
|
||||||
|
|
||||||
|
//std::map<std::string, uint64_t> rates;
|
||||||
|
|
||||||
|
//void update_rate()
|
||||||
|
//{
|
||||||
|
//rates = get_current_wallet()->oracleRates();
|
||||||
|
//}
|
||||||
|
|
||||||
|
//int64_t *get_rate()
|
||||||
|
//{
|
||||||
|
/*
|
||||||
|
size_t size = rates.size();
|
||||||
|
int64_t *havenRates = (int64_t *)malloc(size * sizeof(int64_t));
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
for (auto const& rate : rates)
|
||||||
|
{
|
||||||
|
char *assetType = strdup(rate.first.c_str());
|
||||||
|
HavenRate *havenRate = new HavenRate(assetType, rate.second);
|
||||||
|
havenRates[i] = reinterpret_cast<int64_t>(havenRate);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return havenRates;
|
||||||
|
*/
|
||||||
|
// return nullptr;
|
||||||
|
//}
|
||||||
|
|
||||||
|
//int32_t size_of_rate()
|
||||||
|
//{
|
||||||
|
// return 0; //return static_cast<int32_t>(rates.size());
|
||||||
|
//}
|
||||||
|
|
||||||
|
void set_trusted_daemon(bool arg)
|
||||||
|
{
|
||||||
|
//m_wallet->setTrustedDaemon(arg);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool trusted_daemon()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
//return m_wallet->trustedDaemon();
|
||||||
|
}
|
||||||
|
|
||||||
|
char* get_version()
|
||||||
|
{
|
||||||
|
return strdup(plain_wallet::get_version().c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
168
cw_zano/ios/External/CMakeLists.txt
vendored
Normal file
168
cw_zano/ios/External/CMakeLists.txt
vendored
Normal file
|
@ -0,0 +1,168 @@
|
||||||
|
# Portions Copyright (c) 2017-2022, The Monero Project
|
||||||
|
# This file is based off of the https://code.google.com/archive/p/ios-cmake/
|
||||||
|
# It has been altered for Monero iOS development
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
#
|
||||||
|
# IOS_PLATFORM = OS (default) or SIMULATOR or SIMULATOR64
|
||||||
|
# This decides if SDKS will be selected from the iPhoneOS.platform or iPhoneSimulator.platform folders
|
||||||
|
# OS - the default, used to build for iPhone and iPad physical devices, which have an arm arch.
|
||||||
|
# SIMULATOR - used to build for the Simulator platforms, which have an x86 arch.
|
||||||
|
#
|
||||||
|
# CMAKE_IOS_DEVELOPER_ROOT = automatic(default) or /path/to/platform/Developer folder
|
||||||
|
# By default this location is automatcially chosen based on the IOS_PLATFORM value above.
|
||||||
|
# If set manually, it will override the default location and force the user of a particular Developer Platform
|
||||||
|
#
|
||||||
|
# CMAKE_IOS_SDK_ROOT = automatic(default) or /path/to/platform/Developer/SDKs/SDK folder
|
||||||
|
# By default this location is automatcially chosen based on the CMAKE_IOS_DEVELOPER_ROOT value.
|
||||||
|
# In this case it will always be the most up-to-date SDK found in the CMAKE_IOS_DEVELOPER_ROOT path.
|
||||||
|
# If set manually, this will force the use of a specific SDK version
|
||||||
|
|
||||||
|
message (STATUS "Running Zano IOS setup cmake file")
|
||||||
|
|
||||||
|
# Standard settings
|
||||||
|
set (CMAKE_SYSTEM_NAME iOS)
|
||||||
|
set (CMAKE_SYSTEM_VERSION 15)
|
||||||
|
#set (UNIX True)
|
||||||
|
set (APPLE True)
|
||||||
|
set (IOS True)
|
||||||
|
|
||||||
|
# Required as of cmake 2.8.10
|
||||||
|
set (CMAKE_OSX_DEPLOYMENT_TARGET "" CACHE STRING "Force unset of the deployment target for iOS" FORCE)
|
||||||
|
|
||||||
|
# Determine the cmake host system version so we know where to find the iOS SDKs
|
||||||
|
#find_program (CMAKE_UNAME uname /bin /usr/bin /usr/local/bin)
|
||||||
|
#if (CMAKE_UNAME)
|
||||||
|
# exec_program(uname ARGS -r OUTPUT_VARIABLE CMAKE_HOST_SYSTEM_VERSION)
|
||||||
|
# string (REGEX REPLACE "^([0-9]+)\\.([0-9]+).*$" "\\1" DARWIN_MAJOR_VERSION "${CMAKE_HOST_SYSTEM_VERSION}")
|
||||||
|
#endif (CMAKE_UNAME)
|
||||||
|
# Force the compilers to gcc for iOS
|
||||||
|
# include (CMakeForceCompiler)
|
||||||
|
# set (MAKE_C_COMPILER "/usr/bin/gcc Apple")
|
||||||
|
# set (CMAKE_CXX_COMPILER "/usr/bin/g++ Apple")
|
||||||
|
#set(CMAKE_AR ar CACHE FILEPATH "" FORCE)
|
||||||
|
|
||||||
|
# Skip the platform compiler checks for cross compiling
|
||||||
|
# set (CMAKE_CXX_COMPILER_WORKS TRUE)
|
||||||
|
# set (CMAKE_C_COMPILER_WORKS TRUE)
|
||||||
|
|
||||||
|
# All iOS/Darwin specific settings - some may be redundant
|
||||||
|
set (CMAKE_SHARED_LIBRARY_PREFIX "lib")
|
||||||
|
set (CMAKE_SHARED_LIBRARY_SUFFIX ".dylib")
|
||||||
|
set (CMAKE_SHARED_MODULE_PREFIX "lib")
|
||||||
|
set (CMAKE_SHARED_MODULE_SUFFIX ".so")
|
||||||
|
# set (CMAKE_MODULE_EXISTS 1)
|
||||||
|
#set (CMAKE_DL_LIBS "")
|
||||||
|
|
||||||
|
#set (CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG "-compatibility_version ")
|
||||||
|
#set (CMAKE_C_OSX_CURRENT_VERSION_FLAG "-current_version ")
|
||||||
|
#set (CMAKE_CXX_OSX_COMPATIBILITY_VERSION_FLAG "${CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG}")
|
||||||
|
#set (CMAKE_CXX_OSX_CURRENT_VERSION_FLAG "${CMAKE_C_OSX_CURRENT_VERSION_FLAG}")
|
||||||
|
|
||||||
|
# Hidden visibilty is required for cxx on iOS
|
||||||
|
# set (CMAKE_C_FLAGS_INIT "")
|
||||||
|
# set (CMAKE_CXX_FLAGS_INIT "-fvisibility=hidden -fvisibility-inlines-hidden")
|
||||||
|
|
||||||
|
#set (CMAKE_C_LINK_FLAGS "-Wl,-search_paths_first ${CMAKE_C_LINK_FLAGS}")
|
||||||
|
#set (CMAKE_CXX_LINK_FLAGS "-Wl,-search_paths_first ${CMAKE_CXX_LINK_FLAGS}")
|
||||||
|
|
||||||
|
#set (CMAKE_PLATFORM_HAS_INSTALLNAME 1)
|
||||||
|
#set (CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-dynamiclib -headerpad_max_install_names")
|
||||||
|
#set (CMAKE_SHARED_MODULE_CREATE_C_FLAGS "-bundle -headerpad_max_install_names")
|
||||||
|
#set (CMAKE_SHARED_MODULE_LOADER_C_FLAG "-Wl,-bundle_loader,")
|
||||||
|
#set (CMAKE_SHARED_MODULE_LOADER_CXX_FLAG "-Wl,-bundle_loader,")
|
||||||
|
#set (CMAKE_FIND_LIBRARY_SUFFIXES ".dylib" ".so" ".a")
|
||||||
|
|
||||||
|
# Setup iOS platform unless specified manually with IOS_PLATFORM
|
||||||
|
if (NOT DEFINED IOS_PLATFORM)
|
||||||
|
set (IOS_PLATFORM "OS")
|
||||||
|
endif (NOT DEFINED IOS_PLATFORM)
|
||||||
|
set (IOS_PLATFORM ${IOS_PLATFORM} CACHE STRING "Type of iOS Platform")
|
||||||
|
|
||||||
|
# Setup building for arm64 or not
|
||||||
|
if (NOT DEFINED BUILD_ARM64)
|
||||||
|
set (BUILD_ARM64 true)
|
||||||
|
endif (NOT DEFINED BUILD_ARM64)
|
||||||
|
set (BUILD_ARM64 ${BUILD_ARM64} CACHE STRING "Build arm64 arch or not")
|
||||||
|
|
||||||
|
# Check the platform selection and setup for developer root
|
||||||
|
if (${IOS_PLATFORM} STREQUAL "OS")
|
||||||
|
set (IOS_PLATFORM_LOCATION "iPhoneOS.platform")
|
||||||
|
|
||||||
|
# This causes the installers to properly locate the output libraries
|
||||||
|
set (CMAKE_XCODE_EFFECTIVE_PLATFORMS "-iphoneos")
|
||||||
|
elseif (${IOS_PLATFORM} STREQUAL "SIMULATOR")
|
||||||
|
set (SIMULATOR true)
|
||||||
|
set (IOS_PLATFORM_LOCATION "iPhoneSimulator.platform")
|
||||||
|
|
||||||
|
# This causes the installers to properly locate the output libraries
|
||||||
|
set (CMAKE_XCODE_EFFECTIVE_PLATFORMS "-iphonesimulator")
|
||||||
|
elseif (${IOS_PLATFORM} STREQUAL "SIMULATOR64")
|
||||||
|
set (SIMULATOR true)
|
||||||
|
set (IOS_PLATFORM_LOCATION "iPhoneSimulator.platform")
|
||||||
|
|
||||||
|
# This causes the installers to properly locate the output libraries
|
||||||
|
set (CMAKE_XCODE_EFFECTIVE_PLATFORMS "-iphonesimulator")
|
||||||
|
else (${IOS_PLATFORM} STREQUAL "OS")
|
||||||
|
message (FATAL_ERROR "Unsupported IOS_PLATFORM value selected. Please choose OS or SIMULATOR")
|
||||||
|
endif (${IOS_PLATFORM} STREQUAL "OS")
|
||||||
|
|
||||||
|
# Setup iOS developer location unless specified manually with CMAKE_IOS_DEVELOPER_ROOT
|
||||||
|
# Note Xcode 4.3 changed the installation location, choose the most recent one available
|
||||||
|
# exec_program(/usr/bin/xcode-select ARGS -print-path OUTPUT_VARIABLE CMAKE_XCODE_DEVELOPER_DIR)
|
||||||
|
# set (XCODE_POST_43_ROOT "${CMAKE_XCODE_DEVELOPER_DIR}/Platforms/${IOS_PLATFORM_LOCATION}/Developer")
|
||||||
|
# set (XCODE_PRE_43_ROOT "/Developer/Platforms/${IOS_PLATFORM_LOCATION}/Developer")
|
||||||
|
#if (NOT DEFINED CMAKE_IOS_DEVELOPER_ROOT)
|
||||||
|
# if (EXISTS ${XCODE_POST_43_ROOT})
|
||||||
|
# set (CMAKE_IOS_DEVELOPER_ROOT ${XCODE_POST_43_ROOT})
|
||||||
|
# elseif(EXISTS ${XCODE_PRE_43_ROOT})
|
||||||
|
# set (CMAKE_IOS_DEVELOPER_ROOT ${XCODE_PRE_43_ROOT})
|
||||||
|
# endif (EXISTS ${XCODE_POST_43_ROOT})
|
||||||
|
#endif (NOT DEFINED CMAKE_IOS_DEVELOPER_ROOT)
|
||||||
|
#set (CMAKE_IOS_DEVELOPER_ROOT ${CMAKE_IOS_DEVELOPER_ROOT} CACHE PATH "Location of iOS Platform")
|
||||||
|
|
||||||
|
# Find and use the most recent iOS sdk unless specified manually with CMAKE_IOS_SDK_ROOT
|
||||||
|
#if (NOT DEFINED CMAKE_IOS_SDK_ROOT)
|
||||||
|
# file (GLOB _CMAKE_IOS_SDKS "${CMAKE_IOS_DEVELOPER_ROOT}/SDKs/*")
|
||||||
|
# if (_CMAKE_IOS_SDKS)
|
||||||
|
# list (SORT _CMAKE_IOS_SDKS)
|
||||||
|
# list (REVERSE _CMAKE_IOS_SDKS)
|
||||||
|
# list (GET _CMAKE_IOS_SDKS 0 CMAKE_IOS_SDK_ROOT)
|
||||||
|
# else (_CMAKE_IOS_SDKS)
|
||||||
|
# message (FATAL_ERROR "No iOS SDK's found in default search path ${CMAKE_IOS_DEVELOPER_ROOT}. Manually set CMAKE_IOS_SDK_ROOT or install the iOS SDK.")
|
||||||
|
# endif (_CMAKE_IOS_SDKS)
|
||||||
|
# message (STATUS "Toolchain using default iOS SDK: ${CMAKE_IOS_SDK_ROOT}")
|
||||||
|
#endif (NOT DEFINED CMAKE_IOS_SDK_ROOT)
|
||||||
|
#set (CMAKE_IOS_SDK_ROOT ${CMAKE_IOS_SDK_ROOT} CACHE PATH "Location of the selected iOS SDK")
|
||||||
|
|
||||||
|
# Set the sysroot default to the most recent SDK
|
||||||
|
#set (CMAKE_OSX_SYSROOT ${CMAKE_IOS_SDK_ROOT} CACHE PATH "Sysroot used for iOS support")
|
||||||
|
# set (CMAKE_OSX_SYSROOT ${CMAKE_OSX_SYSROOT})
|
||||||
|
#set(CMAKE_OSX_SYSROOT "$(xcrun --sdk ${IOS_PLATFORM_LOCATION} --show-sdk-path)")
|
||||||
|
|
||||||
|
|
||||||
|
# set the architecture for iOS
|
||||||
|
#if (NOT DEFINED ARCH)
|
||||||
|
# set (ARCH armv7)
|
||||||
|
#endif()
|
||||||
|
set (IOS_ARCH ${ARCH})
|
||||||
|
|
||||||
|
#set (CMAKE_OSX_ARCHITECTURES ${IOS_ARCH} CACHE STRING "Build architecture for iOS")
|
||||||
|
set(CMAKE_OSX_ARCHITECTURES arm64)
|
||||||
|
message(STATUS "ios arch: ${IOS_ARCH}")
|
||||||
|
|
||||||
|
# Set the find root to the iOS developer roots and to user defined paths
|
||||||
|
#set (CMAKE_FIND_ROOT_PATH ${CMAKE_IOS_DEVELOPER_ROOT} ${CMAKE_IOS_SDK_ROOT} ${CMAKE_PREFIX_PATH} CACHE STRING "iOS find search path root")
|
||||||
|
|
||||||
|
# default to searching for frameworks first
|
||||||
|
# set (CMAKE_FIND_FRAMEWORK FIRST)
|
||||||
|
|
||||||
|
# set up the default search directories for frameworks
|
||||||
|
# set (CMAKE_SYSTEM_FRAMEWORK_PATH
|
||||||
|
# ${CMAKE_IOS_SDK_ROOT}/System/Library/Frameworks
|
||||||
|
# ${CMAKE_IOS_SDK_ROOT}/System/Library/PrivateFrameworks
|
||||||
|
# ${CMAKE_IOS_SDK_ROOT}/Developer/Library/Frameworks
|
||||||
|
#)
|
||||||
|
|
||||||
|
message(STATUS "IOS CMAKE conf finished")
|
1333
cw_zano/ios/External/include/wallet2_api.h
vendored
Normal file
1333
cw_zano/ios/External/include/wallet2_api.h
vendored
Normal file
File diff suppressed because it is too large
Load diff
43
cw_zano/ios/cw_zano.podspec
Normal file
43
cw_zano/ios/cw_zano.podspec
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
#
|
||||||
|
# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html.
|
||||||
|
# Run `pod lib lint cw_zano.podspec` to validate before publishing.
|
||||||
|
#
|
||||||
|
Pod::Spec.new do |s|
|
||||||
|
s.name = 'cw_zano'
|
||||||
|
s.version = '0.0.1'
|
||||||
|
s.summary = 'Cake Wallet Zano'
|
||||||
|
s.description = 'Cake Wallet wrapper over Zano project'
|
||||||
|
s.homepage = 'http://cakewallet.com'
|
||||||
|
s.license = { :file => '../LICENSE' }
|
||||||
|
s.author = { 'Cake Wallet' => 'support@cakewallet.com' }
|
||||||
|
s.source = { :path => '.' }
|
||||||
|
s.source_files = 'Classes/**/*'
|
||||||
|
s.public_header_files = 'Classes/**/*.h, Classes/*.h, ../shared_external/ios/libs/monero/include/src/**/*.h, ../shared_external/ios/libs/monero/include/contrib/**/*.h, ../shared_external/ios/libs/monero/include/../shared_external/ios/**/*.h'
|
||||||
|
s.dependency 'Flutter'
|
||||||
|
# s.dependency 'cw_shared_external'
|
||||||
|
s.platform = :ios, '10.0'
|
||||||
|
s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'VALID_ARCHS' => 'arm64', 'ENABLE_BITCODE' => 'NO' }
|
||||||
|
s.swift_version = '5.0'
|
||||||
|
s.xcconfig = { 'HEADER_SEARCH_PATHS' => "${PODS_ROOT}/#{s.name}/Classes/*.h" }
|
||||||
|
|
||||||
|
s.subspec 'OpenSSL' do |openssl|
|
||||||
|
openssl.preserve_paths = 'External/ios/include/**/*.h'
|
||||||
|
openssl.vendored_libraries = 'External/ios/lib/libcrypto.a', 'External/ios/lib/libssl.a'
|
||||||
|
openssl.libraries = 'ssl', 'crypto'
|
||||||
|
openssl.xcconfig = { 'HEADER_SEARCH_PATHS' => "${PODS_ROOT}/#{s.name}/External/ios/include/**" }
|
||||||
|
end
|
||||||
|
|
||||||
|
s.subspec 'Boost' do |boost|
|
||||||
|
boost.preserve_paths = 'External/ios/include/**/*.h',
|
||||||
|
boost.vendored_libraries = 'External/ios/lib/libboost.a',
|
||||||
|
boost.libraries = ''
|
||||||
|
boost.xcconfig = { 'HEADER_SEARCH_PATHS' => "${PODS_ROOT}/#{s.name}/External/ios/include/**" }
|
||||||
|
end
|
||||||
|
|
||||||
|
s.subspec 'Zano' do |zano|
|
||||||
|
zano.preserve_paths = 'External/ios/include/**/*.h'
|
||||||
|
zano.vendored_libraries = 'External/ios/lib/libzano.a'
|
||||||
|
zano.libraries = ''
|
||||||
|
zano.xcconfig = { 'HEADER_SEARCH_PATHS' => "${PODS_ROOT}/#{s.name}/External/ios/include" }
|
||||||
|
end
|
||||||
|
end
|
301
cw_zano/lib/api/api_calls.dart
Normal file
301
cw_zano/lib/api/api_calls.dart
Normal file
|
@ -0,0 +1,301 @@
|
||||||
|
import 'dart:ffi';
|
||||||
|
|
||||||
|
import 'package:cw_zano/api/utf8.dart';
|
||||||
|
import 'package:cw_zano/api/utf8_box.dart';
|
||||||
|
import 'package:cw_zano/api/zano_api.dart';
|
||||||
|
import 'package:ffi/ffi.dart';
|
||||||
|
|
||||||
|
// char * create_wallet(char *path, char *password, char *language, int32_t networkType, char *error)
|
||||||
|
typedef _create_wallet = Pointer<Utf8> Function(Pointer<Utf8>, Pointer<Utf8>, Pointer<Utf8>, Int32, Pointer<Utf8>);
|
||||||
|
typedef _CreateWallet = Pointer<Utf8> Function(Pointer<Utf8>, Pointer<Utf8>, Pointer<Utf8>, int, Pointer<Utf8>);
|
||||||
|
|
||||||
|
// char * restore_wallet_from_seed(char *path, char *password, char *seed, int32_t networkType, uint64_t restoreHeight, char *error)
|
||||||
|
typedef _restore_wallet_from_seed = Pointer<Utf8> Function(Pointer<Utf8>, Pointer<Utf8>, Pointer<Utf8>, Int32, Int64, Pointer<Utf8>);
|
||||||
|
typedef _RestoreWalletFromSeed = Pointer<Utf8> Function(Pointer<Utf8>, Pointer<Utf8>, Pointer<Utf8>, int, int, Pointer<Utf8>);
|
||||||
|
|
||||||
|
// char * load_wallet(char *path, char *password, int32_t nettype)
|
||||||
|
typedef _load_wallet = Pointer<Utf8> Function(Pointer<Utf8>, Pointer<Utf8>, Int8);
|
||||||
|
typedef _LoadWallet = Pointer<Utf8> Function(Pointer<Utf8>, Pointer<Utf8>, int);
|
||||||
|
|
||||||
|
// is_wallet_exist(char *path)
|
||||||
|
typedef _is_wallet_exist = Int8 Function(Pointer<Utf8>);
|
||||||
|
typedef _IsWalletExist = int Function(Pointer<Utf8>);
|
||||||
|
|
||||||
|
// void close_wallet(uint64_t hwallet)
|
||||||
|
// char *close_wallet(uint64_t hwallet)
|
||||||
|
typedef _close_wallet = Pointer<Utf8> Function(Int64);
|
||||||
|
typedef _closeWallet = Pointer<Utf8> Function(int hWallet);
|
||||||
|
|
||||||
|
// uint64_t get_current_tx_fee(uint64_t priority)
|
||||||
|
typedef _get_current_tx_fee = Int64 Function(Int64);
|
||||||
|
typedef _getCurrentTxFee = int Function(int priority);
|
||||||
|
|
||||||
|
// char* get_address_info(char* address)
|
||||||
|
typedef _GetAddressInfo = Pointer<Utf8> Function(Pointer<Utf8> address);
|
||||||
|
|
||||||
|
// char* async_call(char* method_name, uint64_t instance_id, char* params)
|
||||||
|
typedef _async_call = Pointer<Utf8> Function(Pointer<Utf8>, Int64, Pointer<Utf8>);
|
||||||
|
typedef _AsyncCall = Pointer<Utf8> Function(Pointer<Utf8>, int, Pointer<Utf8>);
|
||||||
|
|
||||||
|
// // char* try_pull_result(uint64_t job_id)
|
||||||
|
// // char *get_wallet_info(uint64_t hwallet)
|
||||||
|
// // char* get_wallet_status(uint64_t hwallet)
|
||||||
|
typedef _stringFunctionWithInt64 = Pointer<Utf8> Function(Int64);
|
||||||
|
typedef _StringFunctionWithIntHWallet = Pointer<Utf8> Function(int);
|
||||||
|
|
||||||
|
// bool setup_node(char *address, char *login, char *password, bool use_ssl, bool is_light_wallet, char *error)
|
||||||
|
typedef _setup_node = Int8 Function(Pointer<Utf8>, Pointer<Utf8>?, Pointer<Utf8>?, Int8, Int8, Pointer<Utf8>);
|
||||||
|
typedef _SetupNode = int Function(Pointer<Utf8>, Pointer<Utf8>?, Pointer<Utf8>?, int, int, Pointer<Utf8>);
|
||||||
|
|
||||||
|
// char* set_password(uint64_t hwallet, char *password, Utf8Box &error)
|
||||||
|
typedef _set_password = Pointer<Utf8> Function(Int64 hWallet, Pointer<Utf8> password, Pointer<Utf8Box> error);
|
||||||
|
typedef _SetPassword = Pointer<Utf8> Function(int hWallet, Pointer<Utf8> password, Pointer<Utf8Box> error);
|
||||||
|
|
||||||
|
// char* get_connectivity_status()
|
||||||
|
// char* get_version()
|
||||||
|
// get_opened_wallets()
|
||||||
|
typedef _stringFunction = Pointer<Utf8> Function();
|
||||||
|
|
||||||
|
class ApiCalls {
|
||||||
|
static String _convertUTF8ToString({required Pointer<Utf8> pointer}) {
|
||||||
|
//final str = pointer.toDartString();
|
||||||
|
final str = pointer.toDartStringAllowingMalformed();
|
||||||
|
calloc.free(pointer);
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
static String _performApiCall(
|
||||||
|
Pointer<Utf8> Function() apiCall, {
|
||||||
|
List<Pointer<Utf8>>? pointersToFree,
|
||||||
|
}) {
|
||||||
|
try {
|
||||||
|
return _convertUTF8ToString(pointer: apiCall());
|
||||||
|
} finally {
|
||||||
|
if (pointersToFree != null) {
|
||||||
|
for (var pointer in pointersToFree) {
|
||||||
|
calloc.free(pointer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static final _createWalletNative = zanoApi.lookup<NativeFunction<_create_wallet>>('create_wallet').asFunction<_CreateWallet>();
|
||||||
|
|
||||||
|
static String createWallet({
|
||||||
|
required String path,
|
||||||
|
required String password,
|
||||||
|
String language = '',
|
||||||
|
int nettype = 0,
|
||||||
|
}) {
|
||||||
|
final pathPointer = path.toNativeUtf8();
|
||||||
|
final passwordPointer = password.toNativeUtf8();
|
||||||
|
final languagePointer = language.toNativeUtf8();
|
||||||
|
final errorMessagePointer = ''.toNativeUtf8();
|
||||||
|
final result = _performApiCall(
|
||||||
|
() => _createWalletNative(
|
||||||
|
pathPointer,
|
||||||
|
passwordPointer,
|
||||||
|
languagePointer,
|
||||||
|
nettype,
|
||||||
|
errorMessagePointer,
|
||||||
|
),
|
||||||
|
pointersToFree: [pathPointer, passwordPointer, languagePointer, errorMessagePointer]);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
static final _restoreWalletFromSeedNative = zanoApi.lookup<NativeFunction<_restore_wallet_from_seed>>('restore_wallet_from_seed').asFunction<_RestoreWalletFromSeed>();
|
||||||
|
|
||||||
|
static String restoreWalletFromSeed({
|
||||||
|
required String path,
|
||||||
|
required String password,
|
||||||
|
required String seed,
|
||||||
|
}) {
|
||||||
|
final pathPointer = path.toNativeUtf8();
|
||||||
|
final passwordPointer = password.toNativeUtf8();
|
||||||
|
final seedPointer = seed.toNativeUtf8();
|
||||||
|
final errorMessagePointer = ''.toNativeUtf8();
|
||||||
|
final result = _performApiCall(
|
||||||
|
() => _restoreWalletFromSeedNative(
|
||||||
|
pathPointer,
|
||||||
|
passwordPointer,
|
||||||
|
seedPointer,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
errorMessagePointer,
|
||||||
|
),
|
||||||
|
pointersToFree: [
|
||||||
|
pathPointer,
|
||||||
|
passwordPointer,
|
||||||
|
seedPointer,
|
||||||
|
errorMessagePointer,
|
||||||
|
],
|
||||||
|
);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
static final _loadWalletNative = zanoApi.lookup<NativeFunction<_load_wallet>>('load_wallet').asFunction<_LoadWallet>();
|
||||||
|
|
||||||
|
static String loadWallet({
|
||||||
|
required String path,
|
||||||
|
required String password,
|
||||||
|
int nettype = 0,
|
||||||
|
}) {
|
||||||
|
final pathPointer = path.toNativeUtf8();
|
||||||
|
final passwordPointer = password.toNativeUtf8();
|
||||||
|
final result = _performApiCall(
|
||||||
|
() => _loadWalletNative(
|
||||||
|
pathPointer,
|
||||||
|
passwordPointer,
|
||||||
|
nettype,
|
||||||
|
),
|
||||||
|
pointersToFree: [
|
||||||
|
pathPointer,
|
||||||
|
passwordPointer,
|
||||||
|
],
|
||||||
|
);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
static final _isWalletExistNative = zanoApi.lookup<NativeFunction<_is_wallet_exist>>('is_wallet_exist').asFunction<_IsWalletExist>();
|
||||||
|
|
||||||
|
static bool isWalletExist({required String path}) {
|
||||||
|
final pathPointer = path.toNativeUtf8();
|
||||||
|
final isExist = _isWalletExistNative(pathPointer) != 0;
|
||||||
|
calloc.free(pathPointer);
|
||||||
|
return isExist;
|
||||||
|
}
|
||||||
|
|
||||||
|
static final _closeWalletNative = zanoApi.lookup<NativeFunction<_close_wallet>>('close_wallet').asFunction<_closeWallet>();
|
||||||
|
|
||||||
|
static String closeWallet({required int hWallet}) => _performApiCall(() => _closeWalletNative(hWallet));
|
||||||
|
|
||||||
|
static final _getWalletInfoNative = zanoApi.lookup<NativeFunction<_stringFunctionWithInt64>>('get_wallet_info').asFunction<_StringFunctionWithIntHWallet>();
|
||||||
|
|
||||||
|
static String getWalletInfo(int hWallet) => _performApiCall(() => _getWalletInfoNative(hWallet));
|
||||||
|
|
||||||
|
static final _getWalletStatusNative = zanoApi.lookup<NativeFunction<_stringFunctionWithInt64>>('get_wallet_status').asFunction<_StringFunctionWithIntHWallet>();
|
||||||
|
|
||||||
|
static String getWalletStatus({required int hWallet}) => _performApiCall(() => _getWalletStatusNative(hWallet));
|
||||||
|
|
||||||
|
static final _getCurrentTxFeeNative = zanoApi.lookup<NativeFunction<_get_current_tx_fee>>('get_current_tx_fee').asFunction<_getCurrentTxFee>();
|
||||||
|
|
||||||
|
static int getCurrentTxFee({required int priority}) => _getCurrentTxFeeNative(priority);
|
||||||
|
|
||||||
|
static final _getConnectivityStatusNative = zanoApi.lookup<NativeFunction<_stringFunction>>('get_connectivity_status').asFunction<_stringFunction>();
|
||||||
|
|
||||||
|
static String getConnectivityStatus() => _performApiCall(() => _getConnectivityStatusNative());
|
||||||
|
|
||||||
|
static final _getOpenedWalletsNative = zanoApi.lookup<NativeFunction<_stringFunction>>('get_opened_wallets').asFunction<_stringFunction>();
|
||||||
|
static String getOpenedWallets() => _performApiCall(() => _getOpenedWalletsNative());
|
||||||
|
|
||||||
|
static final _getAddressInfoNative = zanoApi.lookup<NativeFunction<_GetAddressInfo>>('get_address_info').asFunction<_GetAddressInfo>();
|
||||||
|
|
||||||
|
static String getAddressInfo({required String address}) {
|
||||||
|
final addressPointer = address.toNativeUtf8();
|
||||||
|
final result = _performApiCall(
|
||||||
|
() => _getAddressInfoNative(addressPointer),
|
||||||
|
pointersToFree: [addressPointer],
|
||||||
|
);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
static final _asyncCallNative = zanoApi.lookup<NativeFunction<_async_call>>('async_call').asFunction<_AsyncCall>();
|
||||||
|
static final _syncCallNative = zanoApi.lookup<NativeFunction<_async_call>>('sync_call').asFunction<_AsyncCall>();
|
||||||
|
|
||||||
|
static String syncCall({required String methodName, required int hWallet, required String params}) {
|
||||||
|
final methodNamePointer = methodName.toNativeUtf8();
|
||||||
|
final paramsPointer = params.toNativeUtf8();
|
||||||
|
final result = _performApiCall(
|
||||||
|
() => _syncCallNative(
|
||||||
|
methodNamePointer,
|
||||||
|
hWallet,
|
||||||
|
paramsPointer,
|
||||||
|
),
|
||||||
|
pointersToFree: [
|
||||||
|
methodNamePointer,
|
||||||
|
paramsPointer,
|
||||||
|
],
|
||||||
|
);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
static String asyncCall({required String methodName, required int hWallet, required String params}) {
|
||||||
|
final methodNamePointer = methodName.toNativeUtf8();
|
||||||
|
final paramsPointer = params.toNativeUtf8();
|
||||||
|
final result = _performApiCall(
|
||||||
|
() => _asyncCallNative(
|
||||||
|
methodNamePointer,
|
||||||
|
hWallet,
|
||||||
|
paramsPointer,
|
||||||
|
),
|
||||||
|
pointersToFree: [
|
||||||
|
methodNamePointer,
|
||||||
|
paramsPointer,
|
||||||
|
],
|
||||||
|
);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
static final _tryPullResultNative = zanoApi.lookup<NativeFunction<_stringFunctionWithInt64>>('try_pull_result').asFunction<_StringFunctionWithIntHWallet>();
|
||||||
|
|
||||||
|
static String tryPullResult(int jobId) {
|
||||||
|
final result = _performApiCall(() => _tryPullResultNative(jobId));
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
static final _setupNodeNative = zanoApi.lookup<NativeFunction<_setup_node>>('setup_node').asFunction<_SetupNode>();
|
||||||
|
|
||||||
|
static bool setupNode({
|
||||||
|
required String address,
|
||||||
|
required String login,
|
||||||
|
required String password,
|
||||||
|
bool useSSL = false,
|
||||||
|
bool isLightWallet = false,
|
||||||
|
}) {
|
||||||
|
final addressPointer = address.toNativeUtf8();
|
||||||
|
final loginPointer = login.toNativeUtf8();
|
||||||
|
final passwordPointer = password.toNativeUtf8();
|
||||||
|
final errorMessagePointer = ''.toNativeUtf8();
|
||||||
|
final isSetupNode = _setupNodeNative(
|
||||||
|
addressPointer,
|
||||||
|
loginPointer,
|
||||||
|
passwordPointer,
|
||||||
|
_boolToInt(useSSL),
|
||||||
|
_boolToInt(isLightWallet),
|
||||||
|
errorMessagePointer,
|
||||||
|
) !=
|
||||||
|
0;
|
||||||
|
|
||||||
|
calloc.free(addressPointer);
|
||||||
|
calloc.free(loginPointer);
|
||||||
|
calloc.free(passwordPointer);
|
||||||
|
return isSetupNode;
|
||||||
|
}
|
||||||
|
|
||||||
|
static final _setPasswordNative = zanoApi.lookup<NativeFunction<_set_password>>('set_password').asFunction<_SetPassword>();
|
||||||
|
|
||||||
|
static String setPassword({required int hWallet, required String password}) {
|
||||||
|
final passwordPointer = password.toNativeUtf8();
|
||||||
|
final errorMessagePointer = calloc<Utf8Box>();
|
||||||
|
final result = _performApiCall(
|
||||||
|
() => _setPasswordNative(
|
||||||
|
hWallet,
|
||||||
|
passwordPointer,
|
||||||
|
errorMessagePointer,
|
||||||
|
),
|
||||||
|
pointersToFree: [passwordPointer],
|
||||||
|
);
|
||||||
|
calloc.free(errorMessagePointer);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
static final _getVersionNative = zanoApi.lookup<NativeFunction<_stringFunction>>('get_version').asFunction<_stringFunction>();
|
||||||
|
|
||||||
|
static String getVersion() {
|
||||||
|
final result = _performApiCall(() => _getVersionNative());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int _boolToInt(bool value) => value ? 1 : 0;
|
||||||
|
}
|
6
cw_zano/lib/api/consts.dart
Normal file
6
cw_zano/lib/api/consts.dart
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
class Consts {
|
||||||
|
static const errorWrongSeed = 'WRONG_SEED';
|
||||||
|
static const errorAlreadyExists = 'ALREADY_EXISTS';
|
||||||
|
static const errorWalletWrongId = 'WALLET_WRONG_ID';
|
||||||
|
static const errorBusy = 'BUSY';
|
||||||
|
}
|
9
cw_zano/lib/api/model/asset_id_params.dart
Normal file
9
cw_zano/lib/api/model/asset_id_params.dart
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
class AssetIdParams {
|
||||||
|
final String assetId;
|
||||||
|
|
||||||
|
AssetIdParams({required this.assetId});
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => {
|
||||||
|
'asset_id': assetId,
|
||||||
|
};
|
||||||
|
}
|
31
cw_zano/lib/api/model/balance.dart
Normal file
31
cw_zano/lib/api/model/balance.dart
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
import 'package:cw_zano/model/zano_asset.dart';
|
||||||
|
import 'package:cw_zano/zano_formatter.dart';
|
||||||
|
|
||||||
|
class Balance {
|
||||||
|
final ZanoAsset assetInfo;
|
||||||
|
final BigInt awaitingIn;
|
||||||
|
final BigInt awaitingOut;
|
||||||
|
final BigInt total;
|
||||||
|
final BigInt unlocked;
|
||||||
|
|
||||||
|
Balance(
|
||||||
|
{required this.assetInfo,
|
||||||
|
required this.awaitingIn,
|
||||||
|
required this.awaitingOut,
|
||||||
|
required this.total,
|
||||||
|
required this.unlocked});
|
||||||
|
|
||||||
|
String get assetId => assetInfo.assetId;
|
||||||
|
|
||||||
|
@override
|
||||||
|
String toString() => '$assetInfo: $total/$unlocked';
|
||||||
|
|
||||||
|
factory Balance.fromJson(Map<String, dynamic> json) => Balance(
|
||||||
|
assetInfo:
|
||||||
|
ZanoAsset.fromJson(json['asset_info'] as Map<String, dynamic>? ?? {}),
|
||||||
|
awaitingIn: ZanoFormatter.bigIntFromDynamic(json['awaiting_in']),
|
||||||
|
awaitingOut: ZanoFormatter.bigIntFromDynamic(json['awaiting_out']),
|
||||||
|
total: ZanoFormatter.bigIntFromDynamic(json['total']),
|
||||||
|
unlocked: ZanoFormatter.bigIntFromDynamic(json['unlocked']),
|
||||||
|
);
|
||||||
|
}
|
39
cw_zano/lib/api/model/create_wallet_result.dart
Normal file
39
cw_zano/lib/api/model/create_wallet_result.dart
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
import 'package:cw_zano/api/model/recent_history.dart';
|
||||||
|
import 'package:cw_zano/api/model/wi.dart';
|
||||||
|
|
||||||
|
class CreateWalletResult {
|
||||||
|
final String name;
|
||||||
|
final String pass;
|
||||||
|
final RecentHistory recentHistory;
|
||||||
|
final bool recovered;
|
||||||
|
final String seed;
|
||||||
|
final int walletFileSize;
|
||||||
|
final int walletId;
|
||||||
|
final int walletLocalBcSize;
|
||||||
|
final Wi wi;
|
||||||
|
|
||||||
|
CreateWalletResult(
|
||||||
|
{required this.name,
|
||||||
|
required this.pass,
|
||||||
|
required this.recentHistory,
|
||||||
|
required this.recovered,
|
||||||
|
required this.seed,
|
||||||
|
required this.walletFileSize,
|
||||||
|
required this.walletId,
|
||||||
|
required this.walletLocalBcSize,
|
||||||
|
required this.wi});
|
||||||
|
|
||||||
|
factory CreateWalletResult.fromJson(Map<String, dynamic> json) =>
|
||||||
|
CreateWalletResult(
|
||||||
|
name: json['name'] as String? ?? '',
|
||||||
|
pass: json['pass'] as String? ?? '',
|
||||||
|
recentHistory: RecentHistory.fromJson(
|
||||||
|
json['recent_history'] as Map<String, dynamic>? ?? {}),
|
||||||
|
recovered: json['recovered'] as bool? ?? false,
|
||||||
|
seed: json['seed'] as String? ?? '',
|
||||||
|
walletFileSize: json['wallet_file_size'] as int? ?? 0,
|
||||||
|
walletId: json['wallet_id'] as int? ?? 0,
|
||||||
|
walletLocalBcSize: json['wallet_local_bc_size'] as int? ?? 0,
|
||||||
|
wi: Wi.fromJson(json['wi'] as Map<String, dynamic>? ?? {}),
|
||||||
|
);
|
||||||
|
}
|
20
cw_zano/lib/api/model/destination.dart
Normal file
20
cw_zano/lib/api/model/destination.dart
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
class Destination {
|
||||||
|
final BigInt amount; // transfered as string
|
||||||
|
final String address;
|
||||||
|
final String assetId;
|
||||||
|
|
||||||
|
Destination(
|
||||||
|
{required this.amount, required this.address, required this.assetId});
|
||||||
|
|
||||||
|
factory Destination.fromJson(Map<String, dynamic> json) => Destination(
|
||||||
|
amount: BigInt.parse(json['amount'] as String? ?? '0'),
|
||||||
|
address: json['address'] as String? ?? '',
|
||||||
|
assetId: json['asset_id'] as String? ?? '',
|
||||||
|
);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => {
|
||||||
|
'amount': amount.toString(),
|
||||||
|
'address': address,
|
||||||
|
'asset_id': assetId,
|
||||||
|
};
|
||||||
|
}
|
18
cw_zano/lib/api/model/employed_entries.dart
Normal file
18
cw_zano/lib/api/model/employed_entries.dart
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
import 'package:cw_zano/api/model/receive.dart';
|
||||||
|
|
||||||
|
class EmployedEntries {
|
||||||
|
final List<Receive> receive;
|
||||||
|
final List<Receive> send;
|
||||||
|
|
||||||
|
EmployedEntries({required this.receive, required this.send});
|
||||||
|
|
||||||
|
factory EmployedEntries.fromJson(Map<String, dynamic> json) =>
|
||||||
|
EmployedEntries(
|
||||||
|
receive: json['receive'] == null ? [] : (json['receive'] as List<dynamic>)
|
||||||
|
.map((e) => Receive.fromJson(e as Map<String, dynamic>))
|
||||||
|
.toList(),
|
||||||
|
send: json['spent'] == null ? [] : (json['spent'] as List<dynamic>)
|
||||||
|
.map((e) => Receive.fromJson(e as Map<String, dynamic>))
|
||||||
|
.toList(),
|
||||||
|
);
|
||||||
|
}
|
16
cw_zano/lib/api/model/get_address_info_result.dart
Normal file
16
cw_zano/lib/api/model/get_address_info_result.dart
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
class GetAddressInfoResult {
|
||||||
|
final bool valid;
|
||||||
|
final bool auditable;
|
||||||
|
final bool paymentId;
|
||||||
|
final bool wrap;
|
||||||
|
|
||||||
|
GetAddressInfoResult(
|
||||||
|
{required this.valid, required this.auditable, required this.paymentId, required this.wrap});
|
||||||
|
|
||||||
|
factory GetAddressInfoResult.fromJson(Map<String, dynamic> json) => GetAddressInfoResult(
|
||||||
|
valid: json['valid'] as bool? ?? false,
|
||||||
|
auditable: json['auditable'] as bool? ?? false,
|
||||||
|
paymentId: json['payment_id'] as bool? ?? false,
|
||||||
|
wrap: json['wrap'] as bool? ?? false,
|
||||||
|
);
|
||||||
|
}
|
14
cw_zano/lib/api/model/get_recent_txs_and_info_params.dart
Normal file
14
cw_zano/lib/api/model/get_recent_txs_and_info_params.dart
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
class GetRecentTxsAndInfoParams {
|
||||||
|
final int offset;
|
||||||
|
final int count;
|
||||||
|
final bool updateProvisionInfo;
|
||||||
|
|
||||||
|
GetRecentTxsAndInfoParams({required this.offset, required this.count, this.updateProvisionInfo = true});
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => {
|
||||||
|
'offset': offset,
|
||||||
|
'count': count,
|
||||||
|
'update_provision_info': updateProvisionInfo,
|
||||||
|
'order': 'FROM_BEGIN_TO_END',
|
||||||
|
};
|
||||||
|
}
|
12
cw_zano/lib/api/model/get_recent_txs_and_info_result.dart
Normal file
12
cw_zano/lib/api/model/get_recent_txs_and_info_result.dart
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
import 'package:cw_zano/api/model/transfer.dart';
|
||||||
|
|
||||||
|
class GetRecentTxsAndInfoResult {
|
||||||
|
final List<Transfer> transfers;
|
||||||
|
final int lastItemIndex;
|
||||||
|
final int totalTransfers;
|
||||||
|
|
||||||
|
GetRecentTxsAndInfoResult({required this.transfers, required this.lastItemIndex, required this.totalTransfers});
|
||||||
|
|
||||||
|
GetRecentTxsAndInfoResult.empty(): this.transfers = [], this.lastItemIndex = 0, this.totalTransfers = 0;
|
||||||
|
|
||||||
|
}
|
14
cw_zano/lib/api/model/get_wallet_info_result.dart
Normal file
14
cw_zano/lib/api/model/get_wallet_info_result.dart
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
import 'package:cw_zano/api/model/wi.dart';
|
||||||
|
import 'package:cw_zano/api/model/wi_extended.dart';
|
||||||
|
|
||||||
|
class GetWalletInfoResult {
|
||||||
|
final Wi wi;
|
||||||
|
final WiExtended wiExtended;
|
||||||
|
|
||||||
|
GetWalletInfoResult({required this.wi, required this.wiExtended});
|
||||||
|
|
||||||
|
factory GetWalletInfoResult.fromJson(Map<String, dynamic> json) => GetWalletInfoResult(
|
||||||
|
wi: Wi.fromJson(json['wi'] as Map<String, dynamic>? ?? {}),
|
||||||
|
wiExtended: WiExtended.fromJson(json['wi_extended'] as Map<String, dynamic>? ?? {}),
|
||||||
|
);
|
||||||
|
}
|
26
cw_zano/lib/api/model/get_wallet_status_result.dart
Normal file
26
cw_zano/lib/api/model/get_wallet_status_result.dart
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
class GetWalletStatusResult {
|
||||||
|
final int currentDaemonHeight;
|
||||||
|
final int currentWalletHeight;
|
||||||
|
final bool isDaemonConnected;
|
||||||
|
final bool isInLongRefresh;
|
||||||
|
final int progress;
|
||||||
|
final int walletState;
|
||||||
|
|
||||||
|
GetWalletStatusResult(
|
||||||
|
{required this.currentDaemonHeight,
|
||||||
|
required this.currentWalletHeight,
|
||||||
|
required this.isDaemonConnected,
|
||||||
|
required this.isInLongRefresh,
|
||||||
|
required this.progress,
|
||||||
|
required this.walletState});
|
||||||
|
|
||||||
|
factory GetWalletStatusResult.fromJson(Map<String, dynamic> json) =>
|
||||||
|
GetWalletStatusResult(
|
||||||
|
currentDaemonHeight: json['current_daemon_height'] as int? ?? 0,
|
||||||
|
currentWalletHeight: json['current_wallet_height'] as int? ?? 0,
|
||||||
|
isDaemonConnected: json['is_daemon_connected'] as bool? ?? false,
|
||||||
|
isInLongRefresh: json['is_in_long_refresh'] as bool? ?? false,
|
||||||
|
progress: json['progress'] as int? ?? 0,
|
||||||
|
walletState: json['wallet_state'] as int? ?? 0,
|
||||||
|
);
|
||||||
|
}
|
13
cw_zano/lib/api/model/proxy_to_daemon_params.dart
Normal file
13
cw_zano/lib/api/model/proxy_to_daemon_params.dart
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
import 'dart:convert';
|
||||||
|
|
||||||
|
class ProxyToDaemonParams {
|
||||||
|
final String body;
|
||||||
|
final String uri;
|
||||||
|
|
||||||
|
ProxyToDaemonParams({required this.body, required this.uri});
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => {
|
||||||
|
'base64_body': base64Encode(utf8.encode(body)),
|
||||||
|
'uri': uri,
|
||||||
|
};
|
||||||
|
}
|
13
cw_zano/lib/api/model/proxy_to_daemon_result.dart
Normal file
13
cw_zano/lib/api/model/proxy_to_daemon_result.dart
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
import 'dart:convert';
|
||||||
|
|
||||||
|
class ProxyToDaemonResult {
|
||||||
|
final String body;
|
||||||
|
final int responseCode;
|
||||||
|
|
||||||
|
ProxyToDaemonResult({required this.body, required this.responseCode});
|
||||||
|
|
||||||
|
factory ProxyToDaemonResult.fromJson(Map<String, dynamic> json) => ProxyToDaemonResult(
|
||||||
|
body: utf8.decode(base64Decode(json['base64_body'] as String? ?? '')),
|
||||||
|
responseCode: json['response_code'] as int? ?? 0,
|
||||||
|
);
|
||||||
|
}
|
15
cw_zano/lib/api/model/receive.dart
Normal file
15
cw_zano/lib/api/model/receive.dart
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
import 'package:cw_zano/zano_formatter.dart';
|
||||||
|
|
||||||
|
class Receive {
|
||||||
|
final BigInt amount;
|
||||||
|
final String assetId;
|
||||||
|
final int index;
|
||||||
|
|
||||||
|
Receive({required this.amount, required this.assetId, required this.index});
|
||||||
|
|
||||||
|
factory Receive.fromJson(Map<String, dynamic> json) => Receive(
|
||||||
|
amount: ZanoFormatter.bigIntFromDynamic(json['amount']),
|
||||||
|
assetId: json['asset_id'] as String? ?? '',
|
||||||
|
index: json['index'] as int? ?? 0,
|
||||||
|
);
|
||||||
|
}
|
20
cw_zano/lib/api/model/recent_history.dart
Normal file
20
cw_zano/lib/api/model/recent_history.dart
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
import 'package:cw_zano/api/model/transfer.dart';
|
||||||
|
|
||||||
|
class RecentHistory {
|
||||||
|
final List<Transfer>? history;
|
||||||
|
final int lastItemIndex;
|
||||||
|
final int totalHistoryItems;
|
||||||
|
|
||||||
|
RecentHistory(
|
||||||
|
{required this.history,
|
||||||
|
required this.lastItemIndex,
|
||||||
|
required this.totalHistoryItems});
|
||||||
|
|
||||||
|
factory RecentHistory.fromJson(Map<String, dynamic> json) => RecentHistory(
|
||||||
|
history: json['history'] == null ? null : (json['history'] as List<dynamic>)
|
||||||
|
.map((e) => Transfer.fromJson(e as Map<String, dynamic>))
|
||||||
|
.toList(),
|
||||||
|
lastItemIndex: json['last_item_index'] as int? ?? 0,
|
||||||
|
totalHistoryItems: json['total_history_items'] as int? ?? 0,
|
||||||
|
);
|
||||||
|
}
|
9
cw_zano/lib/api/model/store_result.dart
Normal file
9
cw_zano/lib/api/model/store_result.dart
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
class StoreResult {
|
||||||
|
final int walletFileSize;
|
||||||
|
|
||||||
|
StoreResult({required this.walletFileSize});
|
||||||
|
|
||||||
|
factory StoreResult.fromJson(Map<String, dynamic> json) => StoreResult(
|
||||||
|
walletFileSize: json['wallet_file_size'] as int? ?? 0,
|
||||||
|
);
|
||||||
|
}
|
16
cw_zano/lib/api/model/subtransfer.dart
Normal file
16
cw_zano/lib/api/model/subtransfer.dart
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
import 'package:cw_zano/zano_formatter.dart';
|
||||||
|
|
||||||
|
class Subtransfer {
|
||||||
|
final BigInt amount;
|
||||||
|
final String assetId;
|
||||||
|
final bool isIncome;
|
||||||
|
|
||||||
|
Subtransfer(
|
||||||
|
{required this.amount, required this.assetId, required this.isIncome});
|
||||||
|
|
||||||
|
factory Subtransfer.fromJson(Map<String, dynamic> json) => Subtransfer(
|
||||||
|
amount: ZanoFormatter.bigIntFromDynamic(json['amount']),
|
||||||
|
assetId: json['asset_id'] as String? ?? '',
|
||||||
|
isIncome: json['is_income'] as bool? ?? false,
|
||||||
|
);
|
||||||
|
}
|
125
cw_zano/lib/api/model/transfer.dart
Normal file
125
cw_zano/lib/api/model/transfer.dart
Normal file
|
@ -0,0 +1,125 @@
|
||||||
|
import 'package:cw_zano/api/model/employed_entries.dart';
|
||||||
|
import 'package:cw_zano/api/model/subtransfer.dart';
|
||||||
|
import 'package:collection/collection.dart';
|
||||||
|
import 'package:cw_zano/model/zano_asset.dart';
|
||||||
|
import 'package:cw_zano/model/zano_transaction_info.dart';
|
||||||
|
import 'package:cw_zano/zano_formatter.dart';
|
||||||
|
import 'package:cw_zano/zano_wallet.dart';
|
||||||
|
import 'package:cw_zano/zano_wallet_api.dart';
|
||||||
|
|
||||||
|
class Transfer {
|
||||||
|
final String comment;
|
||||||
|
final EmployedEntries employedEntries;
|
||||||
|
final int fee;
|
||||||
|
final int height;
|
||||||
|
final bool isMining;
|
||||||
|
final bool isMixing;
|
||||||
|
final bool isService;
|
||||||
|
final String paymentId;
|
||||||
|
final List<String> remoteAddresses;
|
||||||
|
final List<String> remoteAliases;
|
||||||
|
final bool showSender;
|
||||||
|
final List<Subtransfer> subtransfers;
|
||||||
|
final int timestamp;
|
||||||
|
final int transferInternalIndex;
|
||||||
|
final int txBlobSize;
|
||||||
|
final String txHash;
|
||||||
|
final int txType;
|
||||||
|
final int unlockTime;
|
||||||
|
|
||||||
|
Transfer({
|
||||||
|
required this.comment,
|
||||||
|
required this.employedEntries,
|
||||||
|
required this.fee,
|
||||||
|
required this.height,
|
||||||
|
required this.isMining,
|
||||||
|
required this.isMixing,
|
||||||
|
required this.isService,
|
||||||
|
required this.paymentId,
|
||||||
|
required this.remoteAddresses,
|
||||||
|
required this.remoteAliases,
|
||||||
|
required this.showSender,
|
||||||
|
required this.subtransfers,
|
||||||
|
required this.timestamp,
|
||||||
|
required this.transferInternalIndex,
|
||||||
|
required this.txBlobSize,
|
||||||
|
required this.txHash,
|
||||||
|
required this.txType,
|
||||||
|
required this.unlockTime,
|
||||||
|
});
|
||||||
|
|
||||||
|
factory Transfer.fromJson(Map<String, dynamic> json) => Transfer(
|
||||||
|
comment: json['comment'] as String? ?? '',
|
||||||
|
employedEntries: EmployedEntries.fromJson(json['employed_entries'] as Map<String, dynamic>? ?? {}),
|
||||||
|
fee: json['fee'] as int? ?? 0,
|
||||||
|
height: json['height'] as int? ?? 0,
|
||||||
|
isMining: json['is_mining'] as bool? ?? false,
|
||||||
|
isMixing: json['is_mixing'] as bool? ?? false,
|
||||||
|
isService: json['is_service'] as bool? ?? false,
|
||||||
|
paymentId: json['payment_id'] as String? ?? '',
|
||||||
|
remoteAddresses: json['remote_addresses'] == null ? [] : (json['remote_addresses'] as List<dynamic>).cast<String>(),
|
||||||
|
remoteAliases: json['remote_aliases'] == null ? [] : (json['remote_aliases'] as List<dynamic>).cast<String>(),
|
||||||
|
showSender: json['show_sender'] as bool? ?? false,
|
||||||
|
subtransfers: (json['subtransfers'] as List<dynamic>? ?? []).map((e) => Subtransfer.fromJson(e as Map<String, dynamic>)).toList(),
|
||||||
|
timestamp: json['timestamp'] as int? ?? 0,
|
||||||
|
transferInternalIndex: json['transfer_internal_index'] == null
|
||||||
|
? 0
|
||||||
|
: json['transfer_internal_index'] is double
|
||||||
|
? (json['transfer_internal_index'] as double).toInt()
|
||||||
|
: json['transfer_internal_index'] as int,
|
||||||
|
txBlobSize: json['tx_blob_size'] as int? ?? 0,
|
||||||
|
txHash: json['tx_hash'] as String? ?? '',
|
||||||
|
txType: json['tx_type'] as int? ?? 0,
|
||||||
|
unlockTime: json['unlock_time'] as int? ?? 0,
|
||||||
|
);
|
||||||
|
|
||||||
|
static Map<String, ZanoTransactionInfo> makeMap(List<Transfer> transfers, Map<String, ZanoAsset> zanoAssets, int currentDaemonHeight) {
|
||||||
|
return Map.fromIterable(
|
||||||
|
transfers,
|
||||||
|
key: (item) => (item as Transfer).txHash,
|
||||||
|
value: (transfer) {
|
||||||
|
transfer as Transfer;
|
||||||
|
// Simple (only one subtransfer OR two subtransfers and the second is Zano, outgoing and amount equals to fee) or complex?
|
||||||
|
Subtransfer? single = transfer.subtransfers.singleOrNull;
|
||||||
|
if (transfer.subtransfers.length == 2) {
|
||||||
|
final zano = transfer.subtransfers.firstWhereOrNull((element) => element.assetId == ZanoWalletBase.zanoAssetId);
|
||||||
|
if (zano != null && !zano.isIncome && zano.amount == BigInt.from(transfer.fee)) {
|
||||||
|
single = transfer.subtransfers.firstWhere((element) => element.assetId != ZanoWalletBase.zanoAssetId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
bool isSimple = single != null;
|
||||||
|
// TODO: for complex transactions we show zano or any other transaction, will fix it later
|
||||||
|
if (!isSimple) {
|
||||||
|
single =
|
||||||
|
transfer.subtransfers.firstWhereOrNull((element) => element.assetId == ZanoWalletBase.zanoAssetId) ?? transfer.subtransfers.first;
|
||||||
|
}
|
||||||
|
if (single.assetId != ZanoWalletBase.zanoAssetId) {
|
||||||
|
final asset = zanoAssets[single.assetId];
|
||||||
|
if (asset == null) {
|
||||||
|
ZanoWalletApi.error('unknown asset ${single.assetId}');
|
||||||
|
}
|
||||||
|
final ticker = asset == null ? '***' : asset.ticker;
|
||||||
|
final decimalPoint = asset == null ? ZanoFormatter.defaultDecimalPoint : asset.decimalPoint;
|
||||||
|
return ZanoTransactionInfo.fromTransfer(
|
||||||
|
transfer,
|
||||||
|
confirmations: currentDaemonHeight - transfer.height,
|
||||||
|
isIncome: single.isIncome,
|
||||||
|
assetId: single.assetId,
|
||||||
|
amount: single.amount,
|
||||||
|
tokenSymbol: isSimple ? ticker : '*${ticker}',
|
||||||
|
decimalPoint: decimalPoint,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
final amount = single.isIncome ? single.amount : single.amount - BigInt.from(transfer.fee);
|
||||||
|
return ZanoTransactionInfo.fromTransfer(
|
||||||
|
transfer,
|
||||||
|
confirmations: currentDaemonHeight - transfer.height,
|
||||||
|
isIncome: single.isIncome,
|
||||||
|
assetId: single.assetId,
|
||||||
|
amount: amount,
|
||||||
|
tokenSymbol: isSimple ? 'ZANO' : '*ZANO',
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
41
cw_zano/lib/api/model/transfer_params.dart
Normal file
41
cw_zano/lib/api/model/transfer_params.dart
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
import 'package:cw_zano/api/model/destination.dart';
|
||||||
|
|
||||||
|
class TransferParams {
|
||||||
|
final List<Destination> destinations;
|
||||||
|
final BigInt fee;
|
||||||
|
final int mixin;
|
||||||
|
final String paymentId;
|
||||||
|
final String comment;
|
||||||
|
final bool pushPayer;
|
||||||
|
final bool hideReceiver;
|
||||||
|
|
||||||
|
TransferParams({
|
||||||
|
required this.destinations,
|
||||||
|
required this.fee,
|
||||||
|
required this.mixin,
|
||||||
|
required this.paymentId,
|
||||||
|
required this.comment,
|
||||||
|
required this.pushPayer,
|
||||||
|
required this.hideReceiver,
|
||||||
|
});
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => {
|
||||||
|
'destinations': destinations,
|
||||||
|
'fee': fee.toInt(),
|
||||||
|
'mixin': mixin,
|
||||||
|
'payment_id': paymentId,
|
||||||
|
'comment': comment,
|
||||||
|
'push_payer': pushPayer,
|
||||||
|
'hide_receiver': hideReceiver,
|
||||||
|
};
|
||||||
|
|
||||||
|
factory TransferParams.fromJson(Map<String, dynamic> json) => TransferParams(
|
||||||
|
destinations: (json['destinations'] as List<dynamic>?)?.map((e) => Destination.fromJson(e as Map<String, dynamic>)).toList() ?? [],
|
||||||
|
fee: BigInt.from(json['fee'] as int? ?? 0),
|
||||||
|
mixin: json['mixin'] as int? ?? 0,
|
||||||
|
paymentId: json['payment_id'] as String? ?? '',
|
||||||
|
comment: json['comment'] as String? ?? '',
|
||||||
|
pushPayer: json['push_payer'] as bool? ?? false,
|
||||||
|
hideReceiver: json['hide_receiver'] as bool? ?? false,
|
||||||
|
);
|
||||||
|
}
|
13
cw_zano/lib/api/model/transfer_result.dart
Normal file
13
cw_zano/lib/api/model/transfer_result.dart
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
class TransferResult {
|
||||||
|
final String txHash;
|
||||||
|
final int txSize;
|
||||||
|
final String txUnsignedHex;
|
||||||
|
|
||||||
|
TransferResult({required this.txHash, required this.txSize, required this.txUnsignedHex});
|
||||||
|
|
||||||
|
factory TransferResult.fromJson(Map<String, dynamic> json) => TransferResult(
|
||||||
|
txHash: json['tx_hash'] as String? ?? '',
|
||||||
|
txSize: json['tx_size'] as int? ?? 0,
|
||||||
|
txUnsignedHex: json['tx_unsigned_hex'] as String? ?? '',
|
||||||
|
);
|
||||||
|
}
|
32
cw_zano/lib/api/model/wi.dart
Normal file
32
cw_zano/lib/api/model/wi.dart
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
import 'package:cw_zano/api/model/balance.dart';
|
||||||
|
|
||||||
|
class Wi {
|
||||||
|
final String address;
|
||||||
|
final List<Balance> balances;
|
||||||
|
final bool isAuditable;
|
||||||
|
final bool isWatchOnly;
|
||||||
|
final int minedTotal;
|
||||||
|
final String path;
|
||||||
|
final String viewSecKey;
|
||||||
|
|
||||||
|
Wi(
|
||||||
|
{required this.address,
|
||||||
|
required this.balances,
|
||||||
|
required this.isAuditable,
|
||||||
|
required this.isWatchOnly,
|
||||||
|
required this.minedTotal,
|
||||||
|
required this.path,
|
||||||
|
required this.viewSecKey});
|
||||||
|
|
||||||
|
factory Wi.fromJson(Map<String, dynamic> json) => Wi(
|
||||||
|
address: json['address'] as String? ?? '',
|
||||||
|
balances: (json['balances'] as List<dynamic>? ?? [])
|
||||||
|
.map((e) => Balance.fromJson(e as Map<String, dynamic>))
|
||||||
|
.toList(),
|
||||||
|
isAuditable: json['is_auditable'] as bool? ?? false,
|
||||||
|
isWatchOnly: json['is_watch_only'] as bool? ?? false,
|
||||||
|
minedTotal: json['mined_total'] as int? ?? 0,
|
||||||
|
path: json['path'] as String? ?? '',
|
||||||
|
viewSecKey: json['view_sec_key'] as String? ?? '',
|
||||||
|
);
|
||||||
|
}
|
17
cw_zano/lib/api/model/wi_extended.dart
Normal file
17
cw_zano/lib/api/model/wi_extended.dart
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
class WiExtended {
|
||||||
|
final String seed;
|
||||||
|
final String spendPrivateKey;
|
||||||
|
final String spendPublicKey;
|
||||||
|
final String viewPrivateKey;
|
||||||
|
final String viewPublicKey;
|
||||||
|
|
||||||
|
WiExtended({required this.seed, required this.spendPrivateKey, required this.spendPublicKey, required this.viewPrivateKey, required this.viewPublicKey});
|
||||||
|
|
||||||
|
factory WiExtended.fromJson(Map<String, dynamic> json) => WiExtended(
|
||||||
|
seed: json['seed'] as String? ?? '',
|
||||||
|
spendPrivateKey: json['spend_private_key'] as String? ?? '',
|
||||||
|
spendPublicKey: json['spend_public_key'] as String? ?? '',
|
||||||
|
viewPrivateKey: json['view_private_key'] as String? ?? '',
|
||||||
|
viewPublicKey: json['view_public_key'] as String? ?? '',
|
||||||
|
);
|
||||||
|
}
|
25
cw_zano/lib/api/utf8.dart
Normal file
25
cw_zano/lib/api/utf8.dart
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
import 'dart:convert';
|
||||||
|
import 'dart:ffi';
|
||||||
|
|
||||||
|
import 'package:ffi/ffi.dart';
|
||||||
|
|
||||||
|
extension Utf8Pointer on Pointer<Utf8> {
|
||||||
|
String toDartStringAllowingMalformed({int? length}) {
|
||||||
|
//_ensureNotNullptr('toDartString');
|
||||||
|
final codeUnits = cast<Uint8>();
|
||||||
|
if (length != null) {
|
||||||
|
RangeError.checkNotNegative(length, 'length');
|
||||||
|
} else {
|
||||||
|
length = _length(codeUnits);
|
||||||
|
}
|
||||||
|
return utf8.decode(codeUnits.asTypedList(length), allowMalformed: true);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int _length(Pointer<Uint8> codeUnits) {
|
||||||
|
var length = 0;
|
||||||
|
while (codeUnits[length] != 0) {
|
||||||
|
length++;
|
||||||
|
}
|
||||||
|
return length;
|
||||||
|
}
|
||||||
|
}
|
8
cw_zano/lib/api/utf8_box.dart
Normal file
8
cw_zano/lib/api/utf8_box.dart
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
import 'dart:ffi';
|
||||||
|
import 'package:ffi/ffi.dart';
|
||||||
|
|
||||||
|
class Utf8Box extends Struct {
|
||||||
|
external Pointer<Utf8> value;
|
||||||
|
|
||||||
|
String getValue() => value.toDartString();
|
||||||
|
}
|
6
cw_zano/lib/api/zano_api.dart
Normal file
6
cw_zano/lib/api/zano_api.dart
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
import 'dart:ffi';
|
||||||
|
import 'dart:io';
|
||||||
|
|
||||||
|
final DynamicLibrary zanoApi = Platform.isAndroid
|
||||||
|
? DynamicLibrary.open('libcw_zano.so')
|
||||||
|
: DynamicLibrary.open('cw_zano.framework/cw_zano');
|
1630
cw_zano/lib/mnemonics/english.dart
Normal file
1630
cw_zano/lib/mnemonics/english.dart
Normal file
File diff suppressed because it is too large
Load diff
47
cw_zano/lib/model/pending_zano_transaction.dart
Normal file
47
cw_zano/lib/model/pending_zano_transaction.dart
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
import 'package:cw_core/pending_transaction.dart';
|
||||||
|
import 'package:cw_zano/api/model/destination.dart';
|
||||||
|
import 'package:cw_zano/api/model/transfer_result.dart';
|
||||||
|
import 'package:cw_zano/zano_formatter.dart';
|
||||||
|
import 'package:cw_zano/zano_wallet.dart';
|
||||||
|
|
||||||
|
class PendingZanoTransaction with PendingTransaction {
|
||||||
|
PendingZanoTransaction({
|
||||||
|
required this.zanoWallet,
|
||||||
|
required this.destinations,
|
||||||
|
required this.fee,
|
||||||
|
required this.comment,
|
||||||
|
required this.assetId,
|
||||||
|
required this.ticker,
|
||||||
|
this.decimalPoint = ZanoFormatter.defaultDecimalPoint,
|
||||||
|
required this.amount,
|
||||||
|
});
|
||||||
|
|
||||||
|
final ZanoWalletBase zanoWallet;
|
||||||
|
final List<Destination> destinations;
|
||||||
|
final BigInt fee;
|
||||||
|
final String comment;
|
||||||
|
final String assetId;
|
||||||
|
final String ticker;
|
||||||
|
final int decimalPoint;
|
||||||
|
final BigInt amount;
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get id => transferResult?.txHash ?? '';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get hex => '';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get amountFormatted => '${ZanoFormatter.bigIntAmountToString(amount, decimalPoint)} $ticker';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get feeFormatted => '${ZanoFormatter.bigIntAmountToString(fee)} ZANO';
|
||||||
|
|
||||||
|
TransferResult? transferResult;
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<void> commit() async {
|
||||||
|
await zanoWallet.transfer(destinations, fee, comment);
|
||||||
|
zanoWallet.fetchTransactions();
|
||||||
|
}
|
||||||
|
}
|
105
cw_zano/lib/model/zano_asset.dart
Normal file
105
cw_zano/lib/model/zano_asset.dart
Normal file
|
@ -0,0 +1,105 @@
|
||||||
|
import 'package:cw_core/crypto_currency.dart';
|
||||||
|
import 'package:cw_core/hive_type_ids.dart';
|
||||||
|
import 'package:cw_zano/zano_formatter.dart';
|
||||||
|
import 'package:hive/hive.dart';
|
||||||
|
|
||||||
|
part 'zano_asset.g.dart';
|
||||||
|
|
||||||
|
@HiveType(typeId: ZanoAsset.typeId)
|
||||||
|
class ZanoAsset extends CryptoCurrency with HiveObjectMixin {
|
||||||
|
@HiveField(0)
|
||||||
|
final String fullName;
|
||||||
|
@HiveField(1)
|
||||||
|
final String ticker;
|
||||||
|
@HiveField(2)
|
||||||
|
final String assetId;
|
||||||
|
@HiveField(3)
|
||||||
|
final int decimalPoint;
|
||||||
|
@HiveField(4, defaultValue: true)
|
||||||
|
bool _enabled;
|
||||||
|
@HiveField(5)
|
||||||
|
final String? iconPath;
|
||||||
|
// @HiveField(6)
|
||||||
|
// final String? tag;
|
||||||
|
@HiveField(6)
|
||||||
|
final String owner;
|
||||||
|
@HiveField(7)
|
||||||
|
final String metaInfo;
|
||||||
|
@HiveField(8)
|
||||||
|
final BigInt currentSupply;
|
||||||
|
@HiveField(9)
|
||||||
|
final bool hiddenSupply;
|
||||||
|
@HiveField(10)
|
||||||
|
final BigInt totalMaxSupply;
|
||||||
|
@HiveField(11)
|
||||||
|
final bool isInGlobalWhitelist;
|
||||||
|
|
||||||
|
bool get enabled => _enabled;
|
||||||
|
|
||||||
|
set enabled(bool value) => _enabled = value;
|
||||||
|
|
||||||
|
ZanoAsset({
|
||||||
|
this.fullName = '',
|
||||||
|
this.ticker = '',
|
||||||
|
required this.assetId,
|
||||||
|
this.decimalPoint = ZanoFormatter.defaultDecimalPoint,
|
||||||
|
bool enabled = true,
|
||||||
|
this.iconPath,
|
||||||
|
this.owner = defaultOwner,
|
||||||
|
this.metaInfo = '',
|
||||||
|
required this.currentSupply,
|
||||||
|
this.hiddenSupply = false,
|
||||||
|
required this.totalMaxSupply,
|
||||||
|
this.isInGlobalWhitelist = false,
|
||||||
|
}) : _enabled = enabled,
|
||||||
|
super(
|
||||||
|
name: fullName,
|
||||||
|
title: ticker.toUpperCase(),
|
||||||
|
fullName: fullName,
|
||||||
|
tag: 'ZANO',
|
||||||
|
iconPath: iconPath,
|
||||||
|
decimals: decimalPoint,
|
||||||
|
);
|
||||||
|
|
||||||
|
ZanoAsset.copyWith(ZanoAsset other, {String? icon, String? assetId, bool enabled = true})
|
||||||
|
: this.fullName = other.fullName,
|
||||||
|
this.ticker = other.ticker,
|
||||||
|
this.assetId = assetId ?? other.assetId,
|
||||||
|
this.decimalPoint = other.decimalPoint,
|
||||||
|
this._enabled = enabled && other.enabled,
|
||||||
|
this.iconPath = icon,
|
||||||
|
this.currentSupply = other.currentSupply,
|
||||||
|
this.hiddenSupply = other.hiddenSupply,
|
||||||
|
this.metaInfo = other.metaInfo,
|
||||||
|
this.owner = other.owner,
|
||||||
|
this.totalMaxSupply = other.totalMaxSupply,
|
||||||
|
this.isInGlobalWhitelist = other.isInGlobalWhitelist,
|
||||||
|
super(
|
||||||
|
name: other.name,
|
||||||
|
title: other.ticker.toUpperCase(),
|
||||||
|
fullName: other.name,
|
||||||
|
tag: 'ZANO',
|
||||||
|
iconPath: icon,
|
||||||
|
decimals: other.decimalPoint,
|
||||||
|
enabled: enabled,
|
||||||
|
);
|
||||||
|
|
||||||
|
factory ZanoAsset.fromJson(Map<String, dynamic> json, {bool isInGlobalWhitelist = false}) => ZanoAsset(
|
||||||
|
assetId: json['asset_id'] as String? ?? '',
|
||||||
|
currentSupply: ZanoFormatter.bigIntFromDynamic(json['current_supply']),
|
||||||
|
decimalPoint: json['decimal_point'] as int? ?? ZanoFormatter.defaultDecimalPoint,
|
||||||
|
fullName: json['full_name'] as String? ?? '',
|
||||||
|
hiddenSupply: json['hidden_supply'] as bool? ?? false,
|
||||||
|
metaInfo: json['meta_info'] as String? ?? '',
|
||||||
|
owner: json['owner'] as String? ?? '',
|
||||||
|
ticker: json['ticker'] as String? ?? '',
|
||||||
|
totalMaxSupply: ZanoFormatter.bigIntFromDynamic(json['total_max_supply']),
|
||||||
|
isInGlobalWhitelist: isInGlobalWhitelist,
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static const typeId = ZANO_ASSET_TYPE_ID;
|
||||||
|
static const zanoAssetsBoxName = 'zanoAssetsBox';
|
||||||
|
static const defaultOwner = '0000000000000000000000000000000000000000000000000000000000000000';
|
||||||
|
}
|
17
cw_zano/lib/model/zano_balance.dart
Normal file
17
cw_zano/lib/model/zano_balance.dart
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
import 'package:cw_core/balance.dart';
|
||||||
|
import 'package:cw_zano/zano_formatter.dart';
|
||||||
|
|
||||||
|
class ZanoBalance extends Balance {
|
||||||
|
final BigInt total;
|
||||||
|
final BigInt unlocked;
|
||||||
|
final int decimalPoint;
|
||||||
|
ZanoBalance({required this.total, required this.unlocked, this.decimalPoint = ZanoFormatter.defaultDecimalPoint}) : super(unlocked.isValidInt ? unlocked.toInt() : 0, (total - unlocked).isValidInt ? (total - unlocked).toInt() : 0);
|
||||||
|
|
||||||
|
ZanoBalance.empty({this.decimalPoint = ZanoFormatter.defaultDecimalPoint}): total = BigInt.zero, unlocked = BigInt.zero, super(0, 0);
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get formattedAdditionalBalance => ZanoFormatter.bigIntAmountToString(total - unlocked, decimalPoint);
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get formattedAvailableBalance => ZanoFormatter.bigIntAmountToString(unlocked, decimalPoint);
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
class ZanoTransactionCreationException implements Exception {
|
||||||
|
ZanoTransactionCreationException(this.message);
|
||||||
|
|
||||||
|
final String message;
|
||||||
|
|
||||||
|
@override
|
||||||
|
String toString() => message;
|
||||||
|
}
|
11
cw_zano/lib/model/zano_transaction_credentials.dart
Normal file
11
cw_zano/lib/model/zano_transaction_credentials.dart
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
import 'package:cw_core/crypto_currency.dart';
|
||||||
|
import 'package:cw_core/monero_transaction_priority.dart';
|
||||||
|
import 'package:cw_core/output_info.dart';
|
||||||
|
|
||||||
|
class ZanoTransactionCredentials {
|
||||||
|
ZanoTransactionCredentials({required this.outputs, required this.priority, required this.currency});
|
||||||
|
|
||||||
|
final List<OutputInfo> outputs;
|
||||||
|
final MoneroTransactionPriority priority;
|
||||||
|
final CryptoCurrency currency;
|
||||||
|
}
|
74
cw_zano/lib/model/zano_transaction_info.dart
Normal file
74
cw_zano/lib/model/zano_transaction_info.dart
Normal file
|
@ -0,0 +1,74 @@
|
||||||
|
import 'package:cw_core/format_amount.dart';
|
||||||
|
import 'package:cw_core/transaction_direction.dart';
|
||||||
|
import 'package:cw_core/transaction_info.dart';
|
||||||
|
import 'package:cw_zano/api/model/transfer.dart';
|
||||||
|
import 'package:cw_zano/zano_formatter.dart';
|
||||||
|
|
||||||
|
class ZanoTransactionInfo extends TransactionInfo {
|
||||||
|
ZanoTransactionInfo({
|
||||||
|
required this.id,
|
||||||
|
required this.height,
|
||||||
|
required this.direction,
|
||||||
|
required this.date,
|
||||||
|
required this.isPending,
|
||||||
|
required this.zanoAmount,
|
||||||
|
required this.fee,
|
||||||
|
required this.assetId,
|
||||||
|
required this.confirmations,
|
||||||
|
required this.tokenSymbol,
|
||||||
|
required this.decimalPoint,
|
||||||
|
}) : amount = zanoAmount.isValidInt ? zanoAmount.toInt() : 0;
|
||||||
|
|
||||||
|
ZanoTransactionInfo.fromTransfer(Transfer transfer,
|
||||||
|
{required int confirmations,
|
||||||
|
required bool isIncome,
|
||||||
|
required String assetId,
|
||||||
|
required BigInt amount,
|
||||||
|
this.tokenSymbol = 'ZANO',
|
||||||
|
this.decimalPoint = ZanoFormatter.defaultDecimalPoint})
|
||||||
|
: id = transfer.txHash,
|
||||||
|
height = transfer.height,
|
||||||
|
direction = isIncome ? TransactionDirection.incoming : TransactionDirection.outgoing,
|
||||||
|
date = DateTime.fromMillisecondsSinceEpoch(transfer.timestamp * 1000),
|
||||||
|
zanoAmount = amount,
|
||||||
|
amount = amount.isValidInt ? amount.toInt() : 0,
|
||||||
|
fee = transfer.fee,
|
||||||
|
assetId = assetId,
|
||||||
|
confirmations = confirmations,
|
||||||
|
isPending = false,
|
||||||
|
recipientAddress = transfer.remoteAddresses.isNotEmpty ? transfer.remoteAddresses.first : '' {
|
||||||
|
additionalInfo = <String, dynamic>{
|
||||||
|
'comment': transfer.comment,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
final String id;
|
||||||
|
final int height;
|
||||||
|
final TransactionDirection direction;
|
||||||
|
final DateTime date;
|
||||||
|
final bool isPending;
|
||||||
|
final BigInt zanoAmount;
|
||||||
|
final int amount;
|
||||||
|
final int fee;
|
||||||
|
final int confirmations;
|
||||||
|
final int decimalPoint;
|
||||||
|
late String recipientAddress;
|
||||||
|
final String tokenSymbol;
|
||||||
|
late String assetId;
|
||||||
|
String? _fiatAmount;
|
||||||
|
String? key;
|
||||||
|
|
||||||
|
@override
|
||||||
|
String amountFormatted() => '${formatAmount(ZanoFormatter.bigIntAmountToString(zanoAmount, decimalPoint))} $tokenSymbol';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String fiatAmount() => _fiatAmount ?? '';
|
||||||
|
|
||||||
|
@override
|
||||||
|
void changeFiatAmount(String amount) => _fiatAmount = formatAmount(amount);
|
||||||
|
|
||||||
|
@override
|
||||||
|
String feeFormatted() => '${formatAmount(ZanoFormatter.intAmountToString(fee))} $feeCurrency';
|
||||||
|
|
||||||
|
String get feeCurrency => 'ZANO';
|
||||||
|
}
|
12
cw_zano/lib/model/zano_wallet_keys.dart
Normal file
12
cw_zano/lib/model/zano_wallet_keys.dart
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
class ZanoWalletKeys {
|
||||||
|
const ZanoWalletKeys(
|
||||||
|
{required this.privateSpendKey,
|
||||||
|
required this.privateViewKey,
|
||||||
|
required this.publicSpendKey,
|
||||||
|
required this.publicViewKey});
|
||||||
|
|
||||||
|
final String publicViewKey;
|
||||||
|
final String privateViewKey;
|
||||||
|
final String publicSpendKey;
|
||||||
|
final String privateSpendKey;
|
||||||
|
}
|
74
cw_zano/lib/zano_formatter.dart
Normal file
74
cw_zano/lib/zano_formatter.dart
Normal file
|
@ -0,0 +1,74 @@
|
||||||
|
import 'dart:math';
|
||||||
|
|
||||||
|
import 'package:cw_zano/zano_wallet_api.dart';
|
||||||
|
import 'package:decimal/decimal.dart';
|
||||||
|
import 'package:decimal/intl.dart';
|
||||||
|
import 'package:fluttertoast/fluttertoast.dart';
|
||||||
|
import 'package:intl/intl.dart';
|
||||||
|
|
||||||
|
class ZanoFormatter {
|
||||||
|
static const defaultDecimalPoint = 12;
|
||||||
|
|
||||||
|
//static final numberFormat = NumberFormat()
|
||||||
|
// ..maximumFractionDigits = defaultDecimalPoint
|
||||||
|
// ..minimumFractionDigits = 1;
|
||||||
|
|
||||||
|
static Decimal _bigIntDivision({required BigInt amount, required BigInt divider}) {
|
||||||
|
return (Decimal.fromBigInt(amount) / Decimal.fromBigInt(divider)).toDecimal();
|
||||||
|
}
|
||||||
|
|
||||||
|
static String intAmountToString(int amount, [int decimalPoint = defaultDecimalPoint]) {
|
||||||
|
final numberFormat = NumberFormat()..maximumFractionDigits = decimalPoint
|
||||||
|
..minimumFractionDigits = 1;
|
||||||
|
return numberFormat.format(
|
||||||
|
DecimalIntl(
|
||||||
|
_bigIntDivision(
|
||||||
|
amount: BigInt.from(amount),
|
||||||
|
divider: BigInt.from(pow(10, decimalPoint)),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
.replaceAll(',', '');
|
||||||
|
}
|
||||||
|
|
||||||
|
static String bigIntAmountToString(BigInt amount, [int decimalPoint = defaultDecimalPoint]) {
|
||||||
|
final numberFormat = NumberFormat()..maximumFractionDigits = decimalPoint
|
||||||
|
..minimumFractionDigits = 1;
|
||||||
|
return numberFormat.format(
|
||||||
|
DecimalIntl(
|
||||||
|
_bigIntDivision(
|
||||||
|
amount: amount,
|
||||||
|
divider: BigInt.from(pow(10, decimalPoint)),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
.replaceAll(',', '');
|
||||||
|
}
|
||||||
|
|
||||||
|
static double intAmountToDouble(int amount, [int decimalPoint = defaultDecimalPoint]) => _bigIntDivision(
|
||||||
|
amount: BigInt.from(amount),
|
||||||
|
divider: BigInt.from(pow(10, decimalPoint)),
|
||||||
|
).toDouble();
|
||||||
|
|
||||||
|
static int parseAmount(String amount, [int decimalPoint = defaultDecimalPoint]) {
|
||||||
|
final resultBigInt = (Decimal.parse(amount) * Decimal.fromBigInt(BigInt.from(10).pow(decimalPoint))).toBigInt();
|
||||||
|
if (!resultBigInt.isValidInt) {
|
||||||
|
Fluttertoast.showToast(msg: 'Cannot transfer $amount. Maximum is ${intAmountToString(resultBigInt.toInt(), decimalPoint)}.');
|
||||||
|
}
|
||||||
|
return resultBigInt.toInt();
|
||||||
|
}
|
||||||
|
|
||||||
|
static BigInt bigIntFromDynamic(dynamic d) {
|
||||||
|
if (d is int) {
|
||||||
|
return BigInt.from(d);
|
||||||
|
} else if (d is BigInt) {
|
||||||
|
return d;
|
||||||
|
} else if (d == null) {
|
||||||
|
return BigInt.zero;
|
||||||
|
} else {
|
||||||
|
ZanoWalletApi.error('cannot cast value of type ${d.runtimeType} to BigInt');
|
||||||
|
throw 'cannot cast value of type ${d.runtimeType} to BigInt';
|
||||||
|
//return BigInt.zero;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
27
cw_zano/lib/zano_transaction_history.dart
Normal file
27
cw_zano/lib/zano_transaction_history.dart
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
import 'dart:core';
|
||||||
|
import 'package:mobx/mobx.dart';
|
||||||
|
import 'package:cw_core/transaction_history.dart';
|
||||||
|
import 'package:cw_zano/model/zano_transaction_info.dart';
|
||||||
|
|
||||||
|
part 'zano_transaction_history.g.dart';
|
||||||
|
|
||||||
|
class ZanoTransactionHistory = ZanoTransactionHistoryBase
|
||||||
|
with _$ZanoTransactionHistory;
|
||||||
|
|
||||||
|
abstract class ZanoTransactionHistoryBase
|
||||||
|
extends TransactionHistoryBase<ZanoTransactionInfo> with Store {
|
||||||
|
ZanoTransactionHistoryBase() {
|
||||||
|
transactions = ObservableMap<String, ZanoTransactionInfo>();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<void> save() async {}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void addOne(ZanoTransactionInfo transaction) =>
|
||||||
|
transactions[transaction.id] = transaction;
|
||||||
|
|
||||||
|
@override
|
||||||
|
void addMany(Map<String, ZanoTransactionInfo> transactions) =>
|
||||||
|
this.transactions.addAll(transactions);
|
||||||
|
}
|
17
cw_zano/lib/zano_utils.dart
Normal file
17
cw_zano/lib/zano_utils.dart
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
import 'dart:convert';
|
||||||
|
|
||||||
|
import 'package:cw_zano/api/api_calls.dart';
|
||||||
|
import 'package:cw_zano/api/model/get_address_info_result.dart';
|
||||||
|
|
||||||
|
class ZanoUtils {
|
||||||
|
static bool validateAddress(String address) {
|
||||||
|
try {
|
||||||
|
final result = GetAddressInfoResult.fromJson(
|
||||||
|
jsonDecode(ApiCalls.getAddressInfo(address: address)) as Map<String, dynamic>,
|
||||||
|
);
|
||||||
|
return result.valid;
|
||||||
|
} catch (err) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
499
cw_zano/lib/zano_wallet.dart
Normal file
499
cw_zano/lib/zano_wallet.dart
Normal file
|
@ -0,0 +1,499 @@
|
||||||
|
import 'dart:async';
|
||||||
|
import 'dart:io';
|
||||||
|
|
||||||
|
import 'package:cw_core/cake_hive.dart';
|
||||||
|
import 'package:cw_core/crypto_currency.dart';
|
||||||
|
import 'package:cw_core/node.dart';
|
||||||
|
import 'package:cw_core/pathForWallet.dart';
|
||||||
|
import 'package:cw_core/pending_transaction.dart';
|
||||||
|
import 'package:cw_core/sync_status.dart';
|
||||||
|
import 'package:cw_core/transaction_priority.dart';
|
||||||
|
import 'package:cw_core/wallet_base.dart';
|
||||||
|
import 'package:cw_core/wallet_credentials.dart';
|
||||||
|
import 'package:cw_core/wallet_info.dart';
|
||||||
|
import 'package:cw_zano/api/model/create_wallet_result.dart';
|
||||||
|
import 'package:cw_zano/api/model/destination.dart';
|
||||||
|
import 'package:cw_zano/api/model/get_recent_txs_and_info_result.dart';
|
||||||
|
import 'package:cw_zano/api/model/get_wallet_info_result.dart';
|
||||||
|
import 'package:cw_zano/api/model/get_wallet_status_result.dart';
|
||||||
|
import 'package:cw_zano/api/model/transfer.dart';
|
||||||
|
import 'package:cw_zano/model/pending_zano_transaction.dart';
|
||||||
|
import 'package:cw_zano/model/zano_asset.dart';
|
||||||
|
import 'package:cw_zano/model/zano_balance.dart';
|
||||||
|
import 'package:cw_zano/model/zano_transaction_creation_exception.dart';
|
||||||
|
import 'package:cw_zano/model/zano_transaction_credentials.dart';
|
||||||
|
import 'package:cw_zano/model/zano_transaction_info.dart';
|
||||||
|
import 'package:cw_zano/model/zano_wallet_keys.dart';
|
||||||
|
import 'package:cw_zano/zano_formatter.dart';
|
||||||
|
import 'package:cw_zano/zano_transaction_history.dart';
|
||||||
|
import 'package:cw_zano/zano_wallet_addresses.dart';
|
||||||
|
import 'package:cw_zano/zano_wallet_api.dart';
|
||||||
|
import 'package:cw_zano/zano_wallet_exceptions.dart';
|
||||||
|
import 'package:cw_zano/zano_wallet_service.dart';
|
||||||
|
import 'package:cw_zano/api/model/balance.dart';
|
||||||
|
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:mobx/mobx.dart';
|
||||||
|
|
||||||
|
part 'zano_wallet.g.dart';
|
||||||
|
|
||||||
|
class ZanoWallet = ZanoWalletBase with _$ZanoWallet;
|
||||||
|
|
||||||
|
abstract class ZanoWalletBase extends WalletBase<ZanoBalance, ZanoTransactionHistory, ZanoTransactionInfo> with Store, ZanoWalletApi {
|
||||||
|
static const int _autoSaveIntervalSeconds = 30;
|
||||||
|
static const int _pollIntervalMilliseconds = 2000;
|
||||||
|
static const int _maxLoadAssetsRetries = 5;
|
||||||
|
|
||||||
|
@override
|
||||||
|
ZanoWalletAddresses walletAddresses;
|
||||||
|
|
||||||
|
@override
|
||||||
|
@observable
|
||||||
|
SyncStatus syncStatus;
|
||||||
|
|
||||||
|
@override
|
||||||
|
@observable
|
||||||
|
ObservableMap<CryptoCurrency, ZanoBalance> balance;
|
||||||
|
|
||||||
|
@override
|
||||||
|
String seed = '';
|
||||||
|
|
||||||
|
@override
|
||||||
|
ZanoWalletKeys keys = ZanoWalletKeys(privateSpendKey: '', privateViewKey: '', publicSpendKey: '', publicViewKey: '');
|
||||||
|
|
||||||
|
static const String zanoAssetId = 'd6329b5b1f7c0805b5c345f4957554002a2f557845f64d7645dae0e051a6498a';
|
||||||
|
|
||||||
|
Map<String, ZanoAsset> zanoAssets = {};
|
||||||
|
|
||||||
|
Timer? _updateSyncInfoTimer;
|
||||||
|
|
||||||
|
int _lastKnownBlockHeight = 0;
|
||||||
|
int _initialSyncHeight = 0;
|
||||||
|
int currentDaemonHeight = 0;
|
||||||
|
bool _isTransactionUpdating;
|
||||||
|
bool _hasSyncAfterStartup;
|
||||||
|
Timer? _autoSaveTimer;
|
||||||
|
|
||||||
|
/// index of last transaction fetched
|
||||||
|
int _lastTxIndex = 0;
|
||||||
|
/// number of transactions in each request
|
||||||
|
static const int _txChunkSize = 30;
|
||||||
|
|
||||||
|
ZanoWalletBase(WalletInfo walletInfo)
|
||||||
|
: balance = ObservableMap.of({CryptoCurrency.zano: ZanoBalance.empty()}),
|
||||||
|
_isTransactionUpdating = false,
|
||||||
|
_hasSyncAfterStartup = false,
|
||||||
|
walletAddresses = ZanoWalletAddresses(walletInfo),
|
||||||
|
syncStatus = NotConnectedSyncStatus(),
|
||||||
|
super(walletInfo) {
|
||||||
|
transactionHistory = ZanoTransactionHistory();
|
||||||
|
if (!CakeHive.isAdapterRegistered(ZanoAsset.typeId)) {
|
||||||
|
CakeHive.registerAdapter(ZanoAssetAdapter());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
int calculateEstimatedFee(TransactionPriority priority, [int? amount = null]) => getCurrentTxFee(priority);
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<void> changePassword(String password) async {
|
||||||
|
setPassword(password);
|
||||||
|
}
|
||||||
|
|
||||||
|
static Future<ZanoWallet> create({required WalletCredentials credentials}) async {
|
||||||
|
final wallet = ZanoWallet(credentials.walletInfo!);
|
||||||
|
await wallet.connectToNode(node: Node());
|
||||||
|
final path = await pathForWallet(name: credentials.name, type: credentials.walletInfo!.type);
|
||||||
|
final createWalletResult = await wallet.createWallet(path, credentials.password!);
|
||||||
|
await wallet.parseCreateWalletResult(createWalletResult);
|
||||||
|
await wallet.init(createWalletResult.wi.address);
|
||||||
|
return wallet;
|
||||||
|
}
|
||||||
|
|
||||||
|
static Future<ZanoWallet> restore({required ZanoRestoreWalletFromSeedCredentials credentials}) async {
|
||||||
|
final wallet = ZanoWallet(credentials.walletInfo!);
|
||||||
|
await wallet.connectToNode(node: Node());
|
||||||
|
final path = await pathForWallet(name: credentials.name, type: credentials.walletInfo!.type);
|
||||||
|
final createWalletResult = await wallet.restoreWalletFromSeed(path, credentials.password!, credentials.mnemonic);
|
||||||
|
await wallet.parseCreateWalletResult(createWalletResult);
|
||||||
|
await wallet.init(createWalletResult.wi.address);
|
||||||
|
return wallet;
|
||||||
|
}
|
||||||
|
|
||||||
|
static Future<ZanoWallet> open({required String name, required String password, required WalletInfo walletInfo}) async {
|
||||||
|
final path = await pathForWallet(name: name, type: walletInfo.type);
|
||||||
|
final wallet = ZanoWallet(walletInfo);
|
||||||
|
await wallet.connectToNode(node: Node());
|
||||||
|
final createWalletResult = await wallet.loadWallet(path, password);
|
||||||
|
await wallet.parseCreateWalletResult(createWalletResult);
|
||||||
|
await wallet.init(createWalletResult.wi.address);
|
||||||
|
return wallet;
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> parseCreateWalletResult(CreateWalletResult result) async {
|
||||||
|
hWallet = result.walletId;
|
||||||
|
seed = result.seed;
|
||||||
|
ZanoWalletApi.info('setting hWallet = ${result.walletId}');
|
||||||
|
walletAddresses.address = result.wi.address;
|
||||||
|
await loadAssets(result.wi.balances, maxRetries: _maxLoadAssetsRetries);
|
||||||
|
for (final item in result.wi.balances) {
|
||||||
|
if (item.assetInfo.assetId == zanoAssetId) {
|
||||||
|
balance[CryptoCurrency.zano] = ZanoBalance(
|
||||||
|
total: item.total,
|
||||||
|
unlocked: item.unlocked,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (result.recentHistory.history != null) {
|
||||||
|
final transfers = result.recentHistory.history!;
|
||||||
|
final transactions = Transfer.makeMap(transfers, zanoAssets, currentDaemonHeight);
|
||||||
|
transactionHistory.addMany(transactions);
|
||||||
|
await transactionHistory.save();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void close() {
|
||||||
|
closeWallet();
|
||||||
|
_updateSyncInfoTimer?.cancel();
|
||||||
|
_autoSaveTimer?.cancel();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<void> connectToNode({required Node node}) async {
|
||||||
|
syncStatus = ConnectingSyncStatus();
|
||||||
|
await setupNode();
|
||||||
|
syncStatus = ConnectedSyncStatus();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<PendingTransaction> createTransaction(Object credentials) async {
|
||||||
|
credentials as ZanoTransactionCredentials;
|
||||||
|
final isZano = credentials.currency == CryptoCurrency.zano;
|
||||||
|
final outputs = credentials.outputs;
|
||||||
|
final hasMultiDestination = outputs.length > 1;
|
||||||
|
final unlockedBalanceZano = balance[CryptoCurrency.zano]?.unlocked ?? BigInt.zero;
|
||||||
|
final unlockedBalanceCurrency = balance[credentials.currency]?.unlocked ?? BigInt.zero;
|
||||||
|
final fee = BigInt.from(calculateEstimatedFee(credentials.priority));
|
||||||
|
late BigInt totalAmount;
|
||||||
|
void checkForEnoughBalances() {
|
||||||
|
if (isZano) {
|
||||||
|
if (totalAmount + fee > unlockedBalanceZano) {
|
||||||
|
throw ZanoTransactionCreationException(
|
||||||
|
"You don't have enough coins (required: ${ZanoFormatter.bigIntAmountToString(totalAmount + fee)} ZANO, unlocked ${ZanoFormatter.bigIntAmountToString(unlockedBalanceZano)} ZANO).");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (fee > unlockedBalanceZano) {
|
||||||
|
throw ZanoTransactionCreationException(
|
||||||
|
"You don't have enough coins (required: ${ZanoFormatter.bigIntAmountToString(fee)} ZANO, unlocked ${ZanoFormatter.bigIntAmountToString(unlockedBalanceZano)} ZANO).");
|
||||||
|
}
|
||||||
|
if (totalAmount > unlockedBalanceCurrency) {
|
||||||
|
throw ZanoTransactionCreationException(
|
||||||
|
"You don't have enough coins (required: ${ZanoFormatter.bigIntAmountToString(totalAmount, credentials.currency.decimals)} ${credentials.currency.title}, unlocked ${ZanoFormatter.bigIntAmountToString(unlockedBalanceCurrency, credentials.currency.decimals)} ${credentials.currency.title}).");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
final assetId = isZano ? zanoAssetId : (credentials.currency as ZanoAsset).assetId;
|
||||||
|
late List<Destination> destinations;
|
||||||
|
if (hasMultiDestination) {
|
||||||
|
if (outputs.any((output) => output.sendAll || (output.formattedCryptoAmount ?? 0) <= 0)) {
|
||||||
|
throw ZanoTransactionCreationException("You don't have enough coins.");
|
||||||
|
}
|
||||||
|
totalAmount = outputs.fold(BigInt.zero, (acc, value) => acc + BigInt.from(value.formattedCryptoAmount ?? 0));
|
||||||
|
checkForEnoughBalances();
|
||||||
|
destinations = outputs
|
||||||
|
.map((output) => Destination(
|
||||||
|
amount: BigInt.from(output.formattedCryptoAmount ?? 0),
|
||||||
|
address: output.isParsedAddress ? output.extractedAddress! : output.address,
|
||||||
|
assetId: assetId,
|
||||||
|
))
|
||||||
|
.toList();
|
||||||
|
} else {
|
||||||
|
final output = outputs.first;
|
||||||
|
if (output.sendAll) {
|
||||||
|
if (isZano) {
|
||||||
|
totalAmount = unlockedBalanceZano - fee;
|
||||||
|
} else {
|
||||||
|
totalAmount = unlockedBalanceCurrency;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
totalAmount = BigInt.from(output.formattedCryptoAmount!);
|
||||||
|
}
|
||||||
|
checkForEnoughBalances();
|
||||||
|
destinations = [
|
||||||
|
Destination(
|
||||||
|
amount: totalAmount,
|
||||||
|
address: output.isParsedAddress ? output.extractedAddress! : output.address,
|
||||||
|
assetId: assetId,
|
||||||
|
)
|
||||||
|
];
|
||||||
|
}
|
||||||
|
return PendingZanoTransaction(
|
||||||
|
zanoWallet: this,
|
||||||
|
destinations: destinations,
|
||||||
|
fee: fee,
|
||||||
|
comment: outputs.first.note ?? '',
|
||||||
|
assetId: assetId,
|
||||||
|
ticker: credentials.currency.title,
|
||||||
|
decimalPoint: credentials.currency.decimals,
|
||||||
|
amount: totalAmount,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<Map<String, ZanoTransactionInfo>> fetchTransactions() async {
|
||||||
|
try {
|
||||||
|
final transfers = <Transfer>[];
|
||||||
|
late GetRecentTxsAndInfoResult result;
|
||||||
|
do {
|
||||||
|
result = await getRecentTxsAndInfo(offset: _lastTxIndex, count: _txChunkSize);
|
||||||
|
_lastTxIndex += result.transfers.length;
|
||||||
|
transfers.addAll(result.transfers);
|
||||||
|
} while (result.lastItemIndex + 1 < result.totalTransfers);
|
||||||
|
return Transfer.makeMap(transfers, zanoAssets, currentDaemonHeight);
|
||||||
|
} catch (e) {
|
||||||
|
ZanoWalletApi.error(e.toString());
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> init(String address) async {
|
||||||
|
await walletAddresses.init();
|
||||||
|
await walletAddresses.updateAddress(address);
|
||||||
|
await updateTransactions();
|
||||||
|
_autoSaveTimer = Timer.periodic(Duration(seconds: _autoSaveIntervalSeconds), (_) async => await save());
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<void> renameWalletFiles(String newWalletName) async {
|
||||||
|
final currentWalletPath = await pathForWallet(name: name, type: type);
|
||||||
|
final currentCacheFile = File(currentWalletPath);
|
||||||
|
final currentKeysFile = File('$currentWalletPath.keys');
|
||||||
|
final currentAddressListFile = File('$currentWalletPath.address.txt');
|
||||||
|
|
||||||
|
final newWalletPath = await pathForWallet(name: newWalletName, type: type);
|
||||||
|
|
||||||
|
// Copies current wallet files into new wallet name's dir and files
|
||||||
|
if (currentCacheFile.existsSync()) {
|
||||||
|
await currentCacheFile.copy(newWalletPath);
|
||||||
|
}
|
||||||
|
if (currentKeysFile.existsSync()) {
|
||||||
|
await currentKeysFile.copy('$newWalletPath.keys');
|
||||||
|
}
|
||||||
|
if (currentAddressListFile.existsSync()) {
|
||||||
|
await currentAddressListFile.copy('$newWalletPath.address.txt');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete old name's dir and files
|
||||||
|
await Directory(currentWalletPath).delete(recursive: true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<void> rescan({required int height}) => throw UnimplementedError();
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<void> save() async {
|
||||||
|
try {
|
||||||
|
await store();
|
||||||
|
await walletAddresses.updateAddressesInBox();
|
||||||
|
} catch (e) {
|
||||||
|
ZanoWalletApi.error('Error while saving Zano wallet file ${e.toString()}');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> loadAssets(List<Balance> balances, {int maxRetries = 1}) async {
|
||||||
|
List<ZanoAsset> assets = [];
|
||||||
|
int retryCount = 0;
|
||||||
|
|
||||||
|
while (retryCount < maxRetries) {
|
||||||
|
try {
|
||||||
|
assets = await getAssetsWhitelist();
|
||||||
|
break;
|
||||||
|
} on ZanoWalletBusyException {
|
||||||
|
if (retryCount < maxRetries - 1) {
|
||||||
|
retryCount++;
|
||||||
|
await Future.delayed(Duration(seconds: 1));
|
||||||
|
} else {
|
||||||
|
ZanoWalletApi.error('failed to load assets after $retryCount retries');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
zanoAssets = {};
|
||||||
|
for (final asset in assets) {
|
||||||
|
final newAsset = ZanoAsset.copyWith(asset,
|
||||||
|
icon: _getIconPath(asset.title), enabled: balances.any((element) => element.assetId == asset.assetId));
|
||||||
|
zanoAssets.putIfAbsent(asset.assetId, () => newAsset);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<void> startSync() async {
|
||||||
|
try {
|
||||||
|
syncStatus = AttemptingSyncStatus();
|
||||||
|
_lastKnownBlockHeight = 0;
|
||||||
|
_initialSyncHeight = 0;
|
||||||
|
_updateSyncInfoTimer ??= Timer.periodic(Duration(milliseconds: _pollIntervalMilliseconds), (_) async {
|
||||||
|
GetWalletStatusResult walletStatus;
|
||||||
|
// ignoring get wallet status exception (in case of wrong wallet id)
|
||||||
|
try {
|
||||||
|
walletStatus = await getWalletStatus();
|
||||||
|
} on ZanoWalletException {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
currentDaemonHeight = walletStatus.currentDaemonHeight;
|
||||||
|
_updateSyncProgress(walletStatus);
|
||||||
|
|
||||||
|
// we can call getWalletInfo ONLY if getWalletStatus returns NOT is in long refresh and wallet state is 2 (ready)
|
||||||
|
if (!walletStatus.isInLongRefresh && walletStatus.walletState == 2) {
|
||||||
|
final walletInfo = await getWalletInfo();
|
||||||
|
seed = walletInfo.wiExtended.seed;
|
||||||
|
keys = ZanoWalletKeys(
|
||||||
|
privateSpendKey: walletInfo.wiExtended.spendPrivateKey,
|
||||||
|
privateViewKey: walletInfo.wiExtended.viewPrivateKey,
|
||||||
|
publicSpendKey: walletInfo.wiExtended.spendPublicKey,
|
||||||
|
publicViewKey: walletInfo.wiExtended.viewPublicKey,
|
||||||
|
);
|
||||||
|
loadAssets(walletInfo.wi.balances);
|
||||||
|
// matching balances and whitelists
|
||||||
|
// 1. show only balances available in whitelists
|
||||||
|
// 2. set whitelists available in balances as 'enabled' ('disabled' by default)
|
||||||
|
for (final b in walletInfo.wi.balances) {
|
||||||
|
if (b.assetId == zanoAssetId) {
|
||||||
|
balance[CryptoCurrency.zano] = ZanoBalance(total: b.total, unlocked: b.unlocked);
|
||||||
|
} else {
|
||||||
|
final asset = zanoAssets[b.assetId];
|
||||||
|
if (asset == null) {
|
||||||
|
ZanoWalletApi.error('balance for an unknown asset ${b.assetInfo.assetId}');
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (balance.keys.any((element) => element is ZanoAsset && element.assetId == b.assetInfo.assetId)) {
|
||||||
|
balance[balance.keys.firstWhere((element) => element is ZanoAsset && element.assetId == b.assetInfo.assetId)] =
|
||||||
|
ZanoBalance(total: b.total, unlocked: b.unlocked, decimalPoint: asset.decimalPoint);
|
||||||
|
} else {
|
||||||
|
balance[asset] = ZanoBalance(total: b.total, unlocked: b.unlocked, decimalPoint: asset.decimalPoint);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// removing balances for assets missing in wallet info balances
|
||||||
|
balance.removeWhere(
|
||||||
|
(key, _) => key != CryptoCurrency.zano && !walletInfo.wi.balances.any((element) => element.assetId == (key as ZanoAsset).assetId),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (e) {
|
||||||
|
syncStatus = FailedSyncStatus();
|
||||||
|
ZanoWalletApi.error(e.toString());
|
||||||
|
//rethrow; // TODO: we don't need to propagate exception here
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<void>? updateBalance() => null;
|
||||||
|
|
||||||
|
Future<void> updateTransactions() async {
|
||||||
|
try {
|
||||||
|
if (_isTransactionUpdating) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_isTransactionUpdating = true;
|
||||||
|
final transactions = await fetchTransactions();
|
||||||
|
transactionHistory.addMany(transactions);
|
||||||
|
await transactionHistory.save();
|
||||||
|
_isTransactionUpdating = false;
|
||||||
|
} catch (e) {
|
||||||
|
ZanoWalletApi.error(e.toString());
|
||||||
|
_isTransactionUpdating = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<CryptoCurrency> addZanoAssetById(String assetId) async {
|
||||||
|
if (zanoAssets.containsKey(assetId)) {
|
||||||
|
throw ZanoWalletException('zano asset with id $assetId already added');
|
||||||
|
}
|
||||||
|
final assetDescriptor = await addAssetsWhitelist(assetId);
|
||||||
|
if (assetDescriptor == null) {
|
||||||
|
throw ZanoWalletException("there's no zano asset with id $assetId");
|
||||||
|
}
|
||||||
|
final asset = ZanoAsset.copyWith(assetDescriptor, icon: _getIconPath(assetDescriptor.title), assetId: assetId, enabled: true);
|
||||||
|
zanoAssets[asset.assetId] = asset;
|
||||||
|
balance[asset] = ZanoBalance.empty(decimalPoint: asset.decimalPoint);
|
||||||
|
return asset;
|
||||||
|
}
|
||||||
|
|
||||||
|
String? _getIconPath(String title) {
|
||||||
|
try {
|
||||||
|
return CryptoCurrency.all.firstWhere((element) => element.title.toUpperCase() == title.toUpperCase()).iconPath;
|
||||||
|
} catch (_) {}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> changeZanoAssetAvailability(ZanoAsset asset) async {
|
||||||
|
if (asset.enabled) {
|
||||||
|
final assetDescriptor = await addAssetsWhitelist(asset.assetId);
|
||||||
|
if (assetDescriptor == null) {
|
||||||
|
ZanoWalletApi.error('Error adding zano asset');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
final result = await removeAssetsWhitelist(asset.assetId);
|
||||||
|
if (result == false) {
|
||||||
|
ZanoWalletApi.error('Error removing zano asset');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> deleteZanoAsset(ZanoAsset asset) async {
|
||||||
|
final _ = await removeAssetsWhitelist(asset.assetId);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<ZanoAsset?> getZanoAsset(String assetId) async {
|
||||||
|
return await getAssetInfo(assetId);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> _askForUpdateTransactionHistory() async => await updateTransactions();
|
||||||
|
|
||||||
|
void _onNewBlock(int height, int blocksLeft, double ptc) async {
|
||||||
|
try {
|
||||||
|
if (blocksLeft < 1000) {
|
||||||
|
await _askForUpdateTransactionHistory();
|
||||||
|
syncStatus = SyncedSyncStatus();
|
||||||
|
|
||||||
|
if (!_hasSyncAfterStartup) {
|
||||||
|
_hasSyncAfterStartup = true;
|
||||||
|
await save();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
syncStatus = SyncingSyncStatus(blocksLeft, ptc);
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
ZanoWalletApi.error(e.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void _updateSyncProgress(GetWalletStatusResult walletStatus) {
|
||||||
|
final syncHeight = walletStatus.currentWalletHeight;
|
||||||
|
if (_initialSyncHeight <= 0) {
|
||||||
|
_initialSyncHeight = syncHeight;
|
||||||
|
}
|
||||||
|
final bchHeight = walletStatus.currentDaemonHeight;
|
||||||
|
|
||||||
|
if (_lastKnownBlockHeight == syncHeight) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
_lastKnownBlockHeight = syncHeight;
|
||||||
|
final track = bchHeight - _initialSyncHeight;
|
||||||
|
final diff = track - (bchHeight - syncHeight);
|
||||||
|
final ptc = diff <= 0 ? 0.0 : diff / track;
|
||||||
|
final left = bchHeight - syncHeight;
|
||||||
|
|
||||||
|
if (syncHeight < 0 || left < 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 1. Actual new height; 2. Blocks left to finish; 3. Progress in percents;
|
||||||
|
_onNewBlock.call(syncHeight, left, ptc);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
40
cw_zano/lib/zano_wallet_addresses.dart
Normal file
40
cw_zano/lib/zano_wallet_addresses.dart
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
import 'package:cw_core/wallet_addresses.dart';
|
||||||
|
import 'package:cw_core/wallet_info.dart';
|
||||||
|
import 'package:cw_zano/zano_wallet_api.dart';
|
||||||
|
import 'package:mobx/mobx.dart';
|
||||||
|
|
||||||
|
part 'zano_wallet_addresses.g.dart';
|
||||||
|
|
||||||
|
class ZanoWalletAddresses = ZanoWalletAddressesBase with _$ZanoWalletAddresses;
|
||||||
|
|
||||||
|
abstract class ZanoWalletAddressesBase extends WalletAddresses with Store {
|
||||||
|
ZanoWalletAddressesBase(WalletInfo walletInfo)
|
||||||
|
: address = '',
|
||||||
|
super(walletInfo);
|
||||||
|
|
||||||
|
@override
|
||||||
|
@observable
|
||||||
|
String address;
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<void> init() async {
|
||||||
|
address = walletInfo.address;
|
||||||
|
await updateAddressesInBox();
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> updateAddress(String address) async {
|
||||||
|
this.address = address;
|
||||||
|
await updateAddressesInBox();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<void> updateAddressesInBox() async {
|
||||||
|
try {
|
||||||
|
addressesMap.clear();
|
||||||
|
addressesMap[address] = '';
|
||||||
|
await saveAddressesInBox();
|
||||||
|
} catch (e) {
|
||||||
|
ZanoWalletApi.error(e.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
405
cw_zano/lib/zano_wallet_api.dart
Normal file
405
cw_zano/lib/zano_wallet_api.dart
Normal file
|
@ -0,0 +1,405 @@
|
||||||
|
import 'dart:convert' as convert;
|
||||||
|
|
||||||
|
import 'package:cw_core/transaction_priority.dart';
|
||||||
|
import 'package:cw_zano/api/api_calls.dart';
|
||||||
|
import 'package:cw_zano/api/consts.dart';
|
||||||
|
import 'package:cw_zano/api/model/asset_id_params.dart';
|
||||||
|
import 'package:cw_zano/api/model/create_wallet_result.dart';
|
||||||
|
import 'package:cw_zano/api/model/destination.dart';
|
||||||
|
import 'package:cw_zano/api/model/get_address_info_result.dart';
|
||||||
|
import 'package:cw_zano/api/model/get_recent_txs_and_info_params.dart';
|
||||||
|
import 'package:cw_zano/api/model/get_recent_txs_and_info_result.dart';
|
||||||
|
import 'package:cw_zano/api/model/get_wallet_info_result.dart';
|
||||||
|
import 'package:cw_zano/api/model/get_wallet_status_result.dart';
|
||||||
|
import 'package:cw_zano/api/model/proxy_to_daemon_params.dart';
|
||||||
|
import 'package:cw_zano/api/model/proxy_to_daemon_result.dart';
|
||||||
|
import 'package:cw_zano/api/model/store_result.dart';
|
||||||
|
import 'package:cw_zano/api/model/transfer.dart';
|
||||||
|
import 'package:cw_zano/api/model/transfer_params.dart';
|
||||||
|
import 'package:cw_zano/api/model/transfer_result.dart';
|
||||||
|
import 'package:cw_zano/model/zano_asset.dart';
|
||||||
|
import 'package:cw_zano/zano_wallet_exceptions.dart';
|
||||||
|
import 'package:flutter/foundation.dart';
|
||||||
|
import 'package:json_bigint/json_bigint.dart';
|
||||||
|
|
||||||
|
mixin ZanoWalletApi {
|
||||||
|
static const _defaultNodeUri = '195.201.107.230:33336';
|
||||||
|
static const _statusDelivered = 'delivered';
|
||||||
|
static const _maxInvokeAttempts = 10;
|
||||||
|
static const _maxReopenAttempts = 5;
|
||||||
|
static const _logInfo = true;
|
||||||
|
static const _logError = true;
|
||||||
|
static const _logJson = false;
|
||||||
|
static const int _zanoMixinValue = 10;
|
||||||
|
|
||||||
|
int _hWallet = 0;
|
||||||
|
|
||||||
|
int get hWallet => _hWallet;
|
||||||
|
|
||||||
|
set hWallet(int value) {
|
||||||
|
_hWallet = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
int getCurrentTxFee(TransactionPriority priority) => ApiCalls.getCurrentTxFee(priority: priority.raw);
|
||||||
|
|
||||||
|
String getOpenedWallets() => ApiCalls.getOpenedWallets();
|
||||||
|
String getConnectivityStatus() => ApiCalls.getConnectivityStatus();
|
||||||
|
|
||||||
|
void setPassword(String password) => ApiCalls.setPassword(hWallet: hWallet, password: password);
|
||||||
|
|
||||||
|
void closeWallet([int? walletToClose]) {
|
||||||
|
info('close_wallet ${walletToClose ?? hWallet}');
|
||||||
|
final result = ApiCalls.closeWallet(hWallet: walletToClose ?? hWallet);
|
||||||
|
info('close_wallet result $result');
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<bool> setupNode() async {
|
||||||
|
info('init $_defaultNodeUri');
|
||||||
|
final result = ApiCalls.setupNode(
|
||||||
|
address: _defaultNodeUri,
|
||||||
|
login: '',
|
||||||
|
password: '',
|
||||||
|
useSSL: false,
|
||||||
|
isLightWallet: false,
|
||||||
|
);
|
||||||
|
info('init result $result');
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<GetWalletInfoResult> getWalletInfo() async {
|
||||||
|
final json = ApiCalls.getWalletInfo(hWallet);
|
||||||
|
final result = GetWalletInfoResult.fromJson(jsonDecode(json) as Map<String, dynamic>);
|
||||||
|
_json('get_wallet_info', json);
|
||||||
|
info('get_wallet_info got ${result.wi.balances.length} balances: ${result.wi.balances} seed: ${_shorten(result.wiExtended.seed)}');
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<GetWalletStatusResult> getWalletStatus() async {
|
||||||
|
final json = ApiCalls.getWalletStatus(hWallet: hWallet);
|
||||||
|
if (json == Consts.errorWalletWrongId) {
|
||||||
|
error('wrong wallet id');
|
||||||
|
throw ZanoWalletException('Wrong wallet id');
|
||||||
|
}
|
||||||
|
final status = GetWalletStatusResult.fromJson(jsonDecode(json) as Map<String, dynamic>);
|
||||||
|
_json('get_wallet_status', json);
|
||||||
|
if (_logInfo)
|
||||||
|
info(
|
||||||
|
'get_wallet_status connected: ${status.isDaemonConnected} in refresh: ${status.isInLongRefresh} progress: ${status.progress} wallet state: ${status.walletState}');
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<String> invokeMethod(String methodName, Object params) async {
|
||||||
|
var invokeResult =
|
||||||
|
ApiCalls.asyncCall(methodName: 'invoke', hWallet: hWallet, params: '{"method": "$methodName","params": ${jsonEncode(params)}}');
|
||||||
|
Map<String, dynamic> map;
|
||||||
|
try {
|
||||||
|
map = jsonDecode(invokeResult) as Map<String, dynamic>;
|
||||||
|
} catch (e) {
|
||||||
|
if (invokeResult.contains(Consts.errorWalletWrongId)) throw ZanoWalletException('Wrong wallet id');
|
||||||
|
error('exception in parsing json in invokeMethod: $invokeResult');
|
||||||
|
rethrow;
|
||||||
|
}
|
||||||
|
int attempts = 0;
|
||||||
|
if (map['job_id'] != null) {
|
||||||
|
final jobId = map['job_id'] as int;
|
||||||
|
do {
|
||||||
|
await Future.delayed(Duration(milliseconds: attempts < 2 ? 100 : 500));
|
||||||
|
final result = ApiCalls.tryPullResult(jobId);
|
||||||
|
try {
|
||||||
|
map = jsonDecode(result) as Map<String, dynamic>;
|
||||||
|
} catch (e) {
|
||||||
|
if (result.contains(Consts.errorWalletWrongId)) throw ZanoWalletException('Wrong wallet id');
|
||||||
|
error('exception in parsing json in invokeMethod: $result');
|
||||||
|
rethrow;
|
||||||
|
}
|
||||||
|
if (map['status'] != null && map['status'] == _statusDelivered && map['result'] != null) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
} while (++attempts < _maxInvokeAttempts);
|
||||||
|
}
|
||||||
|
return invokeResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<List<ZanoAsset>> getAssetsWhitelist() async {
|
||||||
|
try {
|
||||||
|
final json = await invokeMethod('assets_whitelist_get', '{}');
|
||||||
|
_json('assets_whitelist_get', json);
|
||||||
|
final map = jsonDecode(json) as Map<String, dynamic>?;
|
||||||
|
_checkForErrors(map);
|
||||||
|
List<ZanoAsset> assets(String type, bool isGlobalWhitelist) =>
|
||||||
|
(map?['result']?['result']?[type] as List<dynamic>?)
|
||||||
|
?.map((e) => ZanoAsset.fromJson(e as Map<String, dynamic>, isInGlobalWhitelist: isGlobalWhitelist))
|
||||||
|
.toList() ??
|
||||||
|
[];
|
||||||
|
final localWhitelist = assets('local_whitelist', false);
|
||||||
|
final globalWhitelist = assets('global_whitelist', true);
|
||||||
|
final ownAssets = assets('own_assets', false);
|
||||||
|
if (_logInfo)
|
||||||
|
info('assets_whitelist_get got local whitelist: ${localWhitelist.length} ($localWhitelist); '
|
||||||
|
'global whitelist: ${globalWhitelist.length} ($globalWhitelist); '
|
||||||
|
'own assets: ${ownAssets.length} ($ownAssets)');
|
||||||
|
return [...globalWhitelist, ...localWhitelist, ...ownAssets];
|
||||||
|
} catch (e) {
|
||||||
|
error('assets_whitelist_get $e');
|
||||||
|
//return [];
|
||||||
|
rethrow;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<ZanoAsset?> addAssetsWhitelist(String assetId) async {
|
||||||
|
try {
|
||||||
|
final json = await invokeMethod('assets_whitelist_add', AssetIdParams(assetId: assetId));
|
||||||
|
_json('assets_whitelist_add $assetId', json);
|
||||||
|
final map = jsonDecode(json) as Map<String, dynamic>?;
|
||||||
|
_checkForErrors(map);
|
||||||
|
if (map!['result']!['result']!['status']! == 'OK') {
|
||||||
|
final assetDescriptor = ZanoAsset.fromJson(map['result']!['result']!['asset_descriptor']! as Map<String, dynamic>);
|
||||||
|
info('assets_whitelist_add added ${assetDescriptor.fullName} ${assetDescriptor.ticker}');
|
||||||
|
return assetDescriptor;
|
||||||
|
} else {
|
||||||
|
info('assets_whitelist_add status ${map['result']!['result']!['status']!}');
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
error('assets_whitelist_add $e');
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<bool> removeAssetsWhitelist(String assetId) async {
|
||||||
|
try {
|
||||||
|
final json = await invokeMethod('assets_whitelist_remove', AssetIdParams(assetId: assetId));
|
||||||
|
_json('assets_whitelist_remove $assetId', json);
|
||||||
|
final map = jsonDecode(json) as Map<String, dynamic>?;
|
||||||
|
_checkForErrors(map);
|
||||||
|
info('assets_whitelist_remove status ${map!['result']!['result']!['status']!}');
|
||||||
|
return (map['result']!['result']!['status']! == 'OK');
|
||||||
|
} catch (e) {
|
||||||
|
error('assets_whitelist_remove $e');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<ProxyToDaemonResult?> _proxyToDaemon(String uri, String body) async {
|
||||||
|
final json = await invokeMethod('proxy_to_daemon', ProxyToDaemonParams(body: body, uri: uri));
|
||||||
|
final map = jsonDecode(json) as Map<String, dynamic>?;
|
||||||
|
_checkForErrors(map);
|
||||||
|
return ProxyToDaemonResult.fromJson(map!['result']['result'] as Map<String, dynamic>);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<ZanoAsset?> getAssetInfo(String assetId) async {
|
||||||
|
final methodName = 'get_asset_info';
|
||||||
|
final params = AssetIdParams(assetId: assetId);
|
||||||
|
final result = await _proxyToDaemon('/json_rpc', '{"method": "$methodName","params": ${jsonEncode(params)}}');
|
||||||
|
_json('$methodName $assetId', result?.body ?? '');
|
||||||
|
if (result == null) {
|
||||||
|
error('get_asset_info empty result');
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
final map = jsonDecode(result.body) as Map<String, dynamic>?;
|
||||||
|
if (map!['error'] != null) {
|
||||||
|
info('get_asset_info $assetId error ${map['error']!['code']} ${map['error']!['message']}');
|
||||||
|
return null;
|
||||||
|
} else if (map['result']!['status']! == 'OK') {
|
||||||
|
final assetDescriptor = ZanoAsset.fromJson(map['result']!['asset_descriptor']! as Map<String, dynamic>);
|
||||||
|
info('get_asset_info $assetId ${assetDescriptor.fullName} ${assetDescriptor.ticker}');
|
||||||
|
return assetDescriptor;
|
||||||
|
} else {
|
||||||
|
info('get_asset_info $assetId status ${map['result']!['status']!}');
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<StoreResult?> store() async {
|
||||||
|
try {
|
||||||
|
final json = await invokeMethod('store', '{}');
|
||||||
|
final map = jsonDecode(json) as Map<String, dynamic>?;
|
||||||
|
_checkForErrors(map);
|
||||||
|
return StoreResult.fromJson(map!['result']['result'] as Map<String, dynamic>);
|
||||||
|
} catch (e) {
|
||||||
|
error('store $e');
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<GetRecentTxsAndInfoResult> getRecentTxsAndInfo({required int offset, required int count}) async {
|
||||||
|
info('get_recent_txs_and_info $offset $count');
|
||||||
|
try {
|
||||||
|
final json = await invokeMethod('get_recent_txs_and_info', GetRecentTxsAndInfoParams(offset: offset, count: count));
|
||||||
|
_json('get_recent_txs_and_info', json);
|
||||||
|
final map = jsonDecode(json) as Map<String, dynamic>?;
|
||||||
|
_checkForErrors(map);
|
||||||
|
final lastItemIndex = map?['result']?['result']?['last_item_index'] as int?;
|
||||||
|
final totalTransfers = map?['result']?['result']?['total_transfers'] as int?;
|
||||||
|
final transfers = map?['result']?['result']?['transfers'] as List<dynamic>?;
|
||||||
|
if (transfers == null || lastItemIndex == null || totalTransfers == null) {
|
||||||
|
error('get_recent_txs_and_info empty transfers');
|
||||||
|
return GetRecentTxsAndInfoResult.empty();
|
||||||
|
}
|
||||||
|
info('get_recent_txs_and_info transfers.length: ${transfers.length}');
|
||||||
|
return GetRecentTxsAndInfoResult(
|
||||||
|
transfers: transfers.map((e) => Transfer.fromJson(e as Map<String, dynamic>)).toList(),
|
||||||
|
lastItemIndex: lastItemIndex,
|
||||||
|
totalTransfers: totalTransfers,
|
||||||
|
);
|
||||||
|
} catch (e) {
|
||||||
|
error('get_recent_txs_and_info $e');
|
||||||
|
return GetRecentTxsAndInfoResult.empty();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
GetAddressInfoResult getAddressInfo(String address) => GetAddressInfoResult.fromJson(
|
||||||
|
jsonDecode(ApiCalls.getAddressInfo(address: address)) as Map<String, dynamic>,
|
||||||
|
);
|
||||||
|
|
||||||
|
String _shorten(String s) => s.length > 10 ? '${s.substring(0, 4)}...${s.substring(s.length - 4)}' : s;
|
||||||
|
|
||||||
|
Future<CreateWalletResult> createWallet(String path, String password) async {
|
||||||
|
info('create_wallet path $path password ${_shorten(password)}');
|
||||||
|
final json = ApiCalls.createWallet(path: path, password: password);
|
||||||
|
_json('create_wallet', json);
|
||||||
|
final map = jsonDecode(json) as Map<String, dynamic>?;
|
||||||
|
if (map?['error'] != null) {
|
||||||
|
final code = map!['error']!['code'] ?? '';
|
||||||
|
final message = map['error']!['message'] ?? '';
|
||||||
|
throw ZanoWalletException('Error creating wallet file, $message ($code)');
|
||||||
|
}
|
||||||
|
if (map?['result'] == null) {
|
||||||
|
throw ZanoWalletException('Error creating wallet file, empty response');
|
||||||
|
}
|
||||||
|
final result = CreateWalletResult.fromJson(map!['result'] as Map<String, dynamic>);
|
||||||
|
info('create_wallet ${result.name} ${result.seed}');
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<CreateWalletResult> restoreWalletFromSeed(String path, String password, String seed) async {
|
||||||
|
info('restore_wallet path $path password ${_shorten(password)} seed ${_shorten(seed)}');
|
||||||
|
final json = ApiCalls.restoreWalletFromSeed(path: path, password: password, seed: seed);
|
||||||
|
_json('restore_wallet', json);
|
||||||
|
final map = jsonDecode(json) as Map<String, dynamic>?;
|
||||||
|
if (map?['error'] != null) {
|
||||||
|
final code = map!['error']!['code'] ?? '';
|
||||||
|
final message = map['error']!['message'] ?? '';
|
||||||
|
if (code == Consts.errorWrongSeed) {
|
||||||
|
throw RestoreFromKeysException('Error restoring wallet, wrong seed');
|
||||||
|
} else if (code == Consts.errorAlreadyExists) {
|
||||||
|
throw RestoreFromKeysException('Error restoring wallet, already exists');
|
||||||
|
}
|
||||||
|
throw RestoreFromKeysException('Error restoring wallet, $message ($code)');
|
||||||
|
}
|
||||||
|
if (map?['result'] == null) {
|
||||||
|
throw RestoreFromKeysException('Error restoring wallet, empty response');
|
||||||
|
}
|
||||||
|
final result = CreateWalletResult.fromJson(map!['result'] as Map<String, dynamic>);
|
||||||
|
info('restore_wallet ${result.name} ${result.wi.address}');
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<CreateWalletResult> loadWallet(String path, String password, [int attempt = 0]) async {
|
||||||
|
info('load_wallet path $path password ${_shorten(password)}');
|
||||||
|
final String json;
|
||||||
|
try {
|
||||||
|
json = ApiCalls.loadWallet(path: path, password: password);
|
||||||
|
} catch (e) {
|
||||||
|
error('error in loadingWallet $e');
|
||||||
|
rethrow;
|
||||||
|
}
|
||||||
|
_json('load_wallet', json);
|
||||||
|
final map = jsonDecode(json) as Map<String, dynamic>?;
|
||||||
|
if (map?['error'] != null) {
|
||||||
|
final code = map?['error']!['code'] ?? '';
|
||||||
|
final message = map?['error']!['message'] ?? '';
|
||||||
|
if (code == Consts.errorAlreadyExists && attempt <= _maxReopenAttempts) {
|
||||||
|
// already connected to this wallet. closing and trying to reopen
|
||||||
|
info('already connected. closing and reopen wallet (attempt $attempt)');
|
||||||
|
closeWallet(attempt);
|
||||||
|
await Future.delayed(const Duration(milliseconds: 500));
|
||||||
|
return await loadWallet(path, password, attempt + 1);
|
||||||
|
}
|
||||||
|
throw ZanoWalletException('Error loading wallet, $message ($code)');
|
||||||
|
}
|
||||||
|
if (map?['result'] == null) {
|
||||||
|
throw ZanoWalletException('Error loading wallet, empty response');
|
||||||
|
}
|
||||||
|
final result = CreateWalletResult.fromJson(map!['result'] as Map<String, dynamic>);
|
||||||
|
info('load_wallet ${result.name} ${result.wi.address}');
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<TransferResult> transfer(List<Destination> destinations, BigInt fee, String comment) async {
|
||||||
|
final params = TransferParams(
|
||||||
|
destinations: destinations,
|
||||||
|
fee: fee,
|
||||||
|
mixin: _zanoMixinValue,
|
||||||
|
paymentId: '',
|
||||||
|
comment: comment,
|
||||||
|
pushPayer: false,
|
||||||
|
hideReceiver: true,
|
||||||
|
);
|
||||||
|
final json = await invokeMethod('transfer', params);
|
||||||
|
_json('transfer', json);
|
||||||
|
final map = jsonDecode(json);
|
||||||
|
final resultMap = map['result'] as Map<String, dynamic>?;
|
||||||
|
if (resultMap != null) {
|
||||||
|
final transferResultMap = resultMap['result'] as Map<String, dynamic>?;
|
||||||
|
if (transferResultMap != null) {
|
||||||
|
final transferResult = TransferResult.fromJson(transferResultMap);
|
||||||
|
info('transfer success hash ${transferResult.txHash}');
|
||||||
|
return transferResult;
|
||||||
|
} else {
|
||||||
|
final errorCode = resultMap['error']['code'];
|
||||||
|
final code = errorCode is int ? errorCode.toString() : errorCode as String? ?? '';
|
||||||
|
final message = resultMap['error']['message'] as String? ?? '';
|
||||||
|
error('transfer error $code $message');
|
||||||
|
throw TransferException('Transfer error, $message ($code)');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
error('transfer error empty result');
|
||||||
|
throw TransferException('Transfer error, empty result');
|
||||||
|
}
|
||||||
|
|
||||||
|
void _checkForErrors(Map<String, dynamic>? map) {
|
||||||
|
if (map == null) {
|
||||||
|
throw ZanoWalletException('Empty response');
|
||||||
|
}
|
||||||
|
final result = map['result'];
|
||||||
|
if (result == null) {
|
||||||
|
throw ZanoWalletException('Empty response');
|
||||||
|
}
|
||||||
|
if (result['error'] != null) {
|
||||||
|
final code = result['error']!['code'] ?? '';
|
||||||
|
final message = result['error']!['message'] ?? '';
|
||||||
|
if (code == -1 && message == Consts.errorBusy) {
|
||||||
|
throw ZanoWalletBusyException();
|
||||||
|
}
|
||||||
|
throw ZanoWalletException('Error, $message ($code)');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*Future<void> _writeLog(String method, String logMessage) async {
|
||||||
|
final dir = await getDownloadsDirectory();
|
||||||
|
final logFile = File('${dir!.path}/$method.txt');
|
||||||
|
final date = DateTime.now();
|
||||||
|
String twoDigits(int value) => value.toString().padLeft(2, '0');
|
||||||
|
String removeCRandLF(String input) => input.replaceAll(RegExp('\r|\n'), '');
|
||||||
|
await logFile.writeAsString('${twoDigits(date.hour)}:${twoDigits(date.minute)}:${twoDigits(date.second)} ${removeCRandLF(logMessage)}\n',
|
||||||
|
mode: FileMode.append);
|
||||||
|
}*/
|
||||||
|
|
||||||
|
static void info(String s) => _logInfo ? debugPrint('[info] $s') : null;
|
||||||
|
static void error(String s) => _logError ? debugPrint('[error] $s') : null;
|
||||||
|
static void printWrapped(String text) => RegExp('.{1,800}').allMatches(text).map((m) => m.group(0)).forEach(print);
|
||||||
|
static void _json(String methodName, String json) => _logJson ? printWrapped('$methodName $json') : null;
|
||||||
|
|
||||||
|
Map<String, dynamic> jsonDecode(String json) {
|
||||||
|
try {
|
||||||
|
return decodeJson(json.replaceAll("\\/", "/")) as Map<String, dynamic>;
|
||||||
|
} catch (e) {
|
||||||
|
return convert.jsonDecode(json) as Map<String, dynamic>;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
String jsonEncode(Object? object) {
|
||||||
|
return convert.jsonEncode(object);
|
||||||
|
}
|
||||||
|
}
|
19
cw_zano/lib/zano_wallet_exceptions.dart
Normal file
19
cw_zano/lib/zano_wallet_exceptions.dart
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
class ZanoWalletException implements Exception {
|
||||||
|
final String message;
|
||||||
|
|
||||||
|
ZanoWalletException(this.message);
|
||||||
|
@override
|
||||||
|
String toString() => '${this.runtimeType} (message: $message)';
|
||||||
|
}
|
||||||
|
|
||||||
|
class RestoreFromKeysException extends ZanoWalletException {
|
||||||
|
RestoreFromKeysException(String message) : super(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
class TransferException extends ZanoWalletException {
|
||||||
|
TransferException(String message): super(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
class ZanoWalletBusyException extends ZanoWalletException {
|
||||||
|
ZanoWalletBusyException(): super('');
|
||||||
|
}
|
123
cw_zano/lib/zano_wallet_service.dart
Normal file
123
cw_zano/lib/zano_wallet_service.dart
Normal file
|
@ -0,0 +1,123 @@
|
||||||
|
import 'dart:io';
|
||||||
|
|
||||||
|
import 'package:collection/collection.dart';
|
||||||
|
import 'package:cw_core/pathForWallet.dart';
|
||||||
|
import 'package:cw_core/wallet_base.dart';
|
||||||
|
import 'package:cw_core/wallet_credentials.dart';
|
||||||
|
import 'package:cw_core/wallet_info.dart';
|
||||||
|
import 'package:cw_core/wallet_service.dart';
|
||||||
|
import 'package:cw_core/wallet_type.dart';
|
||||||
|
import 'package:cw_zano/api/api_calls.dart';
|
||||||
|
import 'package:cw_zano/zano_wallet.dart';
|
||||||
|
import 'package:cw_zano/zano_wallet_api.dart';
|
||||||
|
import 'package:hive/hive.dart';
|
||||||
|
|
||||||
|
class ZanoNewWalletCredentials extends WalletCredentials {
|
||||||
|
ZanoNewWalletCredentials({required String name, String? password}) : super(name: name, password: password);
|
||||||
|
}
|
||||||
|
|
||||||
|
class ZanoRestoreWalletFromSeedCredentials extends WalletCredentials {
|
||||||
|
ZanoRestoreWalletFromSeedCredentials({required String name, required String password, required int height, required this.mnemonic})
|
||||||
|
: super(name: name, password: password, height: height);
|
||||||
|
|
||||||
|
final String mnemonic;
|
||||||
|
}
|
||||||
|
|
||||||
|
class ZanoRestoreWalletFromKeysCredentials extends WalletCredentials {
|
||||||
|
ZanoRestoreWalletFromKeysCredentials(
|
||||||
|
{required String name,
|
||||||
|
required String password,
|
||||||
|
required this.language,
|
||||||
|
required this.address,
|
||||||
|
required this.viewKey,
|
||||||
|
required this.spendKey,
|
||||||
|
required int height})
|
||||||
|
: super(name: name, password: password, height: height);
|
||||||
|
|
||||||
|
final String language;
|
||||||
|
final String address;
|
||||||
|
final String viewKey;
|
||||||
|
final String spendKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
class ZanoWalletService extends WalletService<ZanoNewWalletCredentials,
|
||||||
|
ZanoRestoreWalletFromSeedCredentials, ZanoRestoreWalletFromKeysCredentials, ZanoNewWalletCredentials> {
|
||||||
|
ZanoWalletService(this.walletInfoSource);
|
||||||
|
|
||||||
|
final Box<WalletInfo> walletInfoSource;
|
||||||
|
|
||||||
|
static bool walletFilesExist(String path) => !File(path).existsSync() && !File('$path.keys').existsSync();
|
||||||
|
|
||||||
|
int hWallet = 0;
|
||||||
|
|
||||||
|
@override
|
||||||
|
WalletType getType() => WalletType.zano;
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<ZanoWallet> create(WalletCredentials credentials, {bool? isTestnet}) async {
|
||||||
|
ZanoWalletApi.info('zanowallet service create isTestnet $isTestnet');
|
||||||
|
return await ZanoWalletBase.create(credentials: credentials);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<bool> isWalletExit(String name) async {
|
||||||
|
final path = await pathForWallet(name: name, type: getType());
|
||||||
|
return ApiCalls.isWalletExist(path: path);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<ZanoWallet> openWallet(String name, String password) async {
|
||||||
|
final walletInfo = walletInfoSource.values.firstWhereOrNull((info) => info.id == WalletBase.idFor(name, getType()))!;
|
||||||
|
try {
|
||||||
|
final wallet = await ZanoWalletBase.open(name: name, password: password, walletInfo: walletInfo);
|
||||||
|
saveBackup(name);
|
||||||
|
return wallet;
|
||||||
|
} catch (e) {
|
||||||
|
await restoreWalletFilesFromBackup(name);
|
||||||
|
return await ZanoWalletBase.open(name: name, password: password, walletInfo: walletInfo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<void> remove(String wallet) async {
|
||||||
|
final path = await pathForWalletDir(name: wallet, type: getType());
|
||||||
|
final file = Directory(path);
|
||||||
|
final isExist = file.existsSync();
|
||||||
|
|
||||||
|
if (isExist) {
|
||||||
|
await file.delete(recursive: true);
|
||||||
|
}
|
||||||
|
|
||||||
|
final walletInfo = walletInfoSource.values.firstWhere((info) => info.id == WalletBase.idFor(wallet, getType()));
|
||||||
|
await walletInfoSource.delete(walletInfo.key);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<void> rename(String currentName, String password, String newName) async {
|
||||||
|
final currentWalletInfo = walletInfoSource.values.firstWhere((info) => info.id == WalletBase.idFor(currentName, getType()));
|
||||||
|
final currentWallet = ZanoWallet(currentWalletInfo);
|
||||||
|
|
||||||
|
await currentWallet.renameWalletFiles(newName);
|
||||||
|
|
||||||
|
final newWalletInfo = currentWalletInfo;
|
||||||
|
newWalletInfo.id = WalletBase.idFor(newName, getType());
|
||||||
|
newWalletInfo.name = newName;
|
||||||
|
|
||||||
|
await walletInfoSource.put(currentWalletInfo.key, newWalletInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<ZanoWallet> restoreFromKeys(ZanoRestoreWalletFromKeysCredentials credentials, {bool? isTestnet}) async {
|
||||||
|
throw UnimplementedError();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<ZanoWallet> restoreFromSeed(ZanoRestoreWalletFromSeedCredentials credentials, {bool? isTestnet}) async {
|
||||||
|
return ZanoWalletBase.restore(credentials: credentials);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<ZanoWallet> restoreFromHardwareWallet(ZanoNewWalletCredentials credentials) {
|
||||||
|
throw UnimplementedError("Restoring a Zano wallet from a hardware wallet is not yet supported!");
|
||||||
|
}
|
||||||
|
}
|
769
cw_zano/pubspec.lock
Normal file
769
cw_zano/pubspec.lock
Normal file
|
@ -0,0 +1,769 @@
|
||||||
|
# Generated by pub
|
||||||
|
# See https://dart.dev/tools/pub/glossary#lockfile
|
||||||
|
packages:
|
||||||
|
_fe_analyzer_shared:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: _fe_analyzer_shared
|
||||||
|
sha256: "4897882604d919befd350648c7f91926a9d5de99e67b455bf0917cc2362f4bb8"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "47.0.0"
|
||||||
|
analyzer:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: analyzer
|
||||||
|
sha256: "690e335554a8385bc9d787117d9eb52c0c03ee207a607e593de3c9d71b1cfe80"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "4.7.0"
|
||||||
|
args:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: args
|
||||||
|
sha256: "139d809800a412ebb26a3892da228b2d0ba36f0ef5d9a82166e5e52ec8d61611"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.3.2"
|
||||||
|
asn1lib:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: asn1lib
|
||||||
|
sha256: ab96a1cb3beeccf8145c52e449233fe68364c9641623acd3adad66f8184f1039
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.4.0"
|
||||||
|
async:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: async
|
||||||
|
sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.11.0"
|
||||||
|
boolean_selector:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: boolean_selector
|
||||||
|
sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.1.1"
|
||||||
|
build:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: build
|
||||||
|
sha256: "3fbda25365741f8251b39f3917fb3c8e286a96fd068a5a242e11c2012d495777"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.3.1"
|
||||||
|
build_config:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: build_config
|
||||||
|
sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.1.1"
|
||||||
|
build_daemon:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: build_daemon
|
||||||
|
sha256: "5f02d73eb2ba16483e693f80bee4f088563a820e47d1027d4cdfe62b5bb43e65"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "4.0.0"
|
||||||
|
build_resolvers:
|
||||||
|
dependency: "direct dev"
|
||||||
|
description:
|
||||||
|
name: build_resolvers
|
||||||
|
sha256: "687cf90a3951affac1bd5f9ecb5e3e90b60487f3d9cdc359bb310f8876bb02a6"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.0.10"
|
||||||
|
build_runner:
|
||||||
|
dependency: "direct dev"
|
||||||
|
description:
|
||||||
|
name: build_runner
|
||||||
|
sha256: "3ac61a79bfb6f6cc11f693591063a7f19a7af628dc52f141743edac5c16e8c22"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.4.9"
|
||||||
|
build_runner_core:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: build_runner_core
|
||||||
|
sha256: "14febe0f5bac5ae474117a36099b4de6f1dbc52df6c5e55534b3da9591bf4292"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "7.2.7"
|
||||||
|
built_collection:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: built_collection
|
||||||
|
sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "5.1.1"
|
||||||
|
built_value:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: built_value
|
||||||
|
sha256: "169565c8ad06adb760c3645bf71f00bff161b00002cace266cad42c5d22a7725"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "8.4.3"
|
||||||
|
characters:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: characters
|
||||||
|
sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.3.0"
|
||||||
|
checked_yaml:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: checked_yaml
|
||||||
|
sha256: "3d1505d91afa809d177efd4eed5bb0eb65805097a1463abdd2add076effae311"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.0.2"
|
||||||
|
clock:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: clock
|
||||||
|
sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.1.1"
|
||||||
|
code_builder:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: code_builder
|
||||||
|
sha256: "0d43dd1288fd145de1ecc9a3948ad4a6d5a82f0a14c4fdd0892260787d975cbe"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "4.4.0"
|
||||||
|
collection:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: collection
|
||||||
|
sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.18.0"
|
||||||
|
convert:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: convert
|
||||||
|
sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.1.1"
|
||||||
|
crypto:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: crypto
|
||||||
|
sha256: aa274aa7774f8964e4f4f38cc994db7b6158dd36e9187aaceaddc994b35c6c67
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.0.2"
|
||||||
|
cw_core:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
path: "../cw_core"
|
||||||
|
relative: true
|
||||||
|
source: path
|
||||||
|
version: "0.0.1"
|
||||||
|
dart_style:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: dart_style
|
||||||
|
sha256: "7a03456c3490394c8e7665890333e91ae8a49be43542b616e414449ac358acd4"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.2.4"
|
||||||
|
decimal:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: decimal
|
||||||
|
sha256: "24a261d5d5c87e86c7651c417a5dbdf8bcd7080dd592533910e8d0505a279f21"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.3.3"
|
||||||
|
encrypt:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: encrypt
|
||||||
|
sha256: "4fd4e4fdc21b9d7d4141823e1e6515cd94e7b8d84749504c232999fba25d9bbb"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "5.0.1"
|
||||||
|
fake_async:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: fake_async
|
||||||
|
sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.3.1"
|
||||||
|
ffi:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: ffi
|
||||||
|
sha256: a38574032c5f1dd06c4aee541789906c12ccaab8ba01446e800d9c5b79c4a978
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.0.1"
|
||||||
|
file:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: file
|
||||||
|
sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "6.1.4"
|
||||||
|
fixnum:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: fixnum
|
||||||
|
sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.1.0"
|
||||||
|
flutter:
|
||||||
|
dependency: "direct main"
|
||||||
|
description: flutter
|
||||||
|
source: sdk
|
||||||
|
version: "0.0.0"
|
||||||
|
flutter_mobx:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: flutter_mobx
|
||||||
|
sha256: "0da4add0016387a7bf309a0d0c41d36c6b3ae25ed7a176409267f166509e723e"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.0.6+5"
|
||||||
|
flutter_test:
|
||||||
|
dependency: "direct dev"
|
||||||
|
description: flutter
|
||||||
|
source: sdk
|
||||||
|
version: "0.0.0"
|
||||||
|
flutter_web_plugins:
|
||||||
|
dependency: transitive
|
||||||
|
description: flutter
|
||||||
|
source: sdk
|
||||||
|
version: "0.0.0"
|
||||||
|
fluttertoast:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: fluttertoast
|
||||||
|
sha256: "4215b0085ebf737120ab6b06fefeadfae709c74f880a351a73d6d007f74e7631"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "8.1.4"
|
||||||
|
frontend_server_client:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: frontend_server_client
|
||||||
|
sha256: "408e3ca148b31c20282ad6f37ebfa6f4bdc8fede5b74bc2f08d9d92b55db3612"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.2.0"
|
||||||
|
glob:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: glob
|
||||||
|
sha256: "4515b5b6ddb505ebdd242a5f2cc5d22d3d6a80013789debfbda7777f47ea308c"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.1.1"
|
||||||
|
graphs:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: graphs
|
||||||
|
sha256: f9e130f3259f52d26f0cfc0e964513796dafed572fa52e45d2f8d6ca14db39b2
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.2.0"
|
||||||
|
hive:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: hive
|
||||||
|
sha256: "8dcf6db979d7933da8217edcec84e9df1bdb4e4edc7fc77dbd5aa74356d6d941"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.2.3"
|
||||||
|
hive_generator:
|
||||||
|
dependency: "direct dev"
|
||||||
|
description:
|
||||||
|
name: hive_generator
|
||||||
|
sha256: "81fd20125cb2ce8fd23623d7744ffbaf653aae93706c9bd3bf7019ea0ace3938"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.1.3"
|
||||||
|
http:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: http
|
||||||
|
sha256: "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.1.0"
|
||||||
|
http_multi_server:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: http_multi_server
|
||||||
|
sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.2.1"
|
||||||
|
http_parser:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: http_parser
|
||||||
|
sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "4.0.2"
|
||||||
|
intl:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: intl
|
||||||
|
sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.18.1"
|
||||||
|
io:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: io
|
||||||
|
sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.4"
|
||||||
|
js:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: js
|
||||||
|
sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.6.7"
|
||||||
|
json_annotation:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: json_annotation
|
||||||
|
sha256: c33da08e136c3df0190bd5bbe51ae1df4a7d96e7954d1d7249fea2968a72d317
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "4.8.0"
|
||||||
|
json_bigint:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: json_bigint
|
||||||
|
sha256: "77f5cc47ec936b37ff5016394b0ed136fe2231e35dcbaed32fe749c221264cac"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.0.0"
|
||||||
|
leak_tracker:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: leak_tracker
|
||||||
|
sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "10.0.0"
|
||||||
|
leak_tracker_flutter_testing:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: leak_tracker_flutter_testing
|
||||||
|
sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.0.1"
|
||||||
|
leak_tracker_testing:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: leak_tracker_testing
|
||||||
|
sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.0.1"
|
||||||
|
logging:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: logging
|
||||||
|
sha256: "04094f2eb032cbb06c6f6e8d3607edcfcb0455e2bb6cbc010cb01171dcb64e6d"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.1.1"
|
||||||
|
matcher:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: matcher
|
||||||
|
sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.12.16+1"
|
||||||
|
material_color_utilities:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: material_color_utilities
|
||||||
|
sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.8.0"
|
||||||
|
meta:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: meta
|
||||||
|
sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.11.0"
|
||||||
|
mime:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: mime
|
||||||
|
sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.4"
|
||||||
|
mobx:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: mobx
|
||||||
|
sha256: "63920b27b32ad1910adfe767ab1750e4c212e8923232a1f891597b362074ea5e"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.3.3+2"
|
||||||
|
mobx_codegen:
|
||||||
|
dependency: "direct dev"
|
||||||
|
description:
|
||||||
|
name: mobx_codegen
|
||||||
|
sha256: "86122e410d8ea24dda0c69adb5c2a6ccadd5ce02ad46e144764e0d0184a06181"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.1.1"
|
||||||
|
package_config:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: package_config
|
||||||
|
sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.1.0"
|
||||||
|
path:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: path
|
||||||
|
sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.9.0"
|
||||||
|
path_provider:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: path_provider
|
||||||
|
sha256: dcea5feb97d8abf90cab9e9030b497fb7c3cbf26b7a1fe9e3ef7dcb0a1ddec95
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.0.12"
|
||||||
|
path_provider_android:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: path_provider_android
|
||||||
|
sha256: a776c088d671b27f6e3aa8881d64b87b3e80201c64e8869b811325de7a76c15e
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.0.22"
|
||||||
|
path_provider_foundation:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: path_provider_foundation
|
||||||
|
sha256: "62a68e7e1c6c459f9289859e2fae58290c981ce21d1697faf54910fe1faa4c74"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.1.1"
|
||||||
|
path_provider_linux:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: path_provider_linux
|
||||||
|
sha256: ab0987bf95bc591da42dffb38c77398fc43309f0b9b894dcc5d6f40c4b26c379
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.1.7"
|
||||||
|
path_provider_platform_interface:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: path_provider_platform_interface
|
||||||
|
sha256: f0abc8ebd7253741f05488b4813d936b4d07c6bae3e86148a09e342ee4b08e76
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.0.5"
|
||||||
|
path_provider_windows:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: path_provider_windows
|
||||||
|
sha256: f53720498d5a543f9607db4b0e997c4b5438884de25b0f73098cc2671a51b130
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.1.5"
|
||||||
|
petitparser:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: petitparser
|
||||||
|
sha256: cb3798bef7fc021ac45b308f4b51208a152792445cce0448c9a4ba5879dd8750
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "5.4.0"
|
||||||
|
platform:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: platform
|
||||||
|
sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.1.0"
|
||||||
|
plugin_platform_interface:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: plugin_platform_interface
|
||||||
|
sha256: dbf0f707c78beedc9200146ad3cb0ab4d5da13c246336987be6940f026500d3a
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.1.3"
|
||||||
|
pointycastle:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: pointycastle
|
||||||
|
sha256: db7306cf0249f838d1a24af52b5a5887c5bf7f31d8bb4e827d071dc0939ad346
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.6.2"
|
||||||
|
pool:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: pool
|
||||||
|
sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.5.1"
|
||||||
|
process:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: process
|
||||||
|
sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "4.2.4"
|
||||||
|
pub_semver:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: pub_semver
|
||||||
|
sha256: "307de764d305289ff24ad257ad5c5793ce56d04947599ad68b3baa124105fc17"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.1.3"
|
||||||
|
pubspec_parse:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: pubspec_parse
|
||||||
|
sha256: "75f6614d6dde2dc68948dffbaa4fe5dae32cd700eb9fb763fe11dfb45a3c4d0a"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.2.1"
|
||||||
|
rational:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: rational
|
||||||
|
sha256: ba58e9e18df9abde280e8b10051e4bce85091e41e8e7e411b6cde2e738d357cf
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.2.2"
|
||||||
|
shelf:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: shelf
|
||||||
|
sha256: c24a96135a2ccd62c64b69315a14adc5c3419df63b4d7c05832a346fdb73682c
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.4.0"
|
||||||
|
shelf_web_socket:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: shelf_web_socket
|
||||||
|
sha256: a988c0e8d8ffbdb8a28aa7ec8e449c260f3deb808781fe1284d22c5bba7156e8
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.3"
|
||||||
|
sky_engine:
|
||||||
|
dependency: transitive
|
||||||
|
description: flutter
|
||||||
|
source: sdk
|
||||||
|
version: "0.0.99"
|
||||||
|
socks5_proxy:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: socks5_proxy
|
||||||
|
sha256: "1d21b5606169654bbf4cfb904e8e6ed897e9f763358709f87310c757096d909a"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.4"
|
||||||
|
source_gen:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: source_gen
|
||||||
|
sha256: "2d79738b6bbf38a43920e2b8d189e9a3ce6cc201f4b8fc76be5e4fe377b1c38d"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.2.6"
|
||||||
|
source_helper:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: source_helper
|
||||||
|
sha256: "3b67aade1d52416149c633ba1bb36df44d97c6b51830c2198e934e3fca87ca1f"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.3.3"
|
||||||
|
source_span:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: source_span
|
||||||
|
sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.10.0"
|
||||||
|
stack_trace:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: stack_trace
|
||||||
|
sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.11.1"
|
||||||
|
stream_channel:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: stream_channel
|
||||||
|
sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.1.2"
|
||||||
|
stream_transform:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: stream_transform
|
||||||
|
sha256: "14a00e794c7c11aa145a170587321aedce29769c08d7f58b1d141da75e3b1c6f"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.1.0"
|
||||||
|
string_scanner:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: string_scanner
|
||||||
|
sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.2.0"
|
||||||
|
term_glyph:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: term_glyph
|
||||||
|
sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.2.1"
|
||||||
|
test_api:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: test_api
|
||||||
|
sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.6.1"
|
||||||
|
timing:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: timing
|
||||||
|
sha256: "70a3b636575d4163c477e6de42f247a23b315ae20e86442bebe32d3cabf61c32"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.1"
|
||||||
|
typed_data:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: typed_data
|
||||||
|
sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.3.1"
|
||||||
|
unorm_dart:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: unorm_dart
|
||||||
|
sha256: "23d8bf65605401a6a32cff99435fed66ef3dab3ddcad3454059165df46496a3b"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.3.0"
|
||||||
|
vector_math:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: vector_math
|
||||||
|
sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.1.4"
|
||||||
|
vm_service:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: vm_service
|
||||||
|
sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "13.0.0"
|
||||||
|
watcher:
|
||||||
|
dependency: "direct overridden"
|
||||||
|
description:
|
||||||
|
name: watcher
|
||||||
|
sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.1.0"
|
||||||
|
web_socket_channel:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: web_socket_channel
|
||||||
|
sha256: ca49c0bc209c687b887f30527fb6a9d80040b072cc2990f34b9bec3e7663101b
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.3.0"
|
||||||
|
win32:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: win32
|
||||||
|
sha256: c9ebe7ee4ab0c2194e65d3a07d8c54c5d00bb001b76081c4a04cdb8448b59e46
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.1.3"
|
||||||
|
xdg_directories:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: xdg_directories
|
||||||
|
sha256: bd512f03919aac5f1313eb8249f223bacf4927031bf60b02601f81f687689e86
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.2.0+3"
|
||||||
|
yaml:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: yaml
|
||||||
|
sha256: "23812a9b125b48d4007117254bca50abb6c712352927eece9e155207b1db2370"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.1.1"
|
||||||
|
sdks:
|
||||||
|
dart: ">=3.2.0-0 <4.0.0"
|
||||||
|
flutter: ">=3.7.0"
|
85
cw_zano/pubspec.yaml
Normal file
85
cw_zano/pubspec.yaml
Normal file
|
@ -0,0 +1,85 @@
|
||||||
|
name: cw_zano
|
||||||
|
description: A new flutter plugin project.
|
||||||
|
version: 0.0.1
|
||||||
|
publish_to: none
|
||||||
|
author: Cake Wallet
|
||||||
|
homepage: https://cakewallet.com
|
||||||
|
|
||||||
|
environment:
|
||||||
|
sdk: ">=2.19.0 <3.0.0"
|
||||||
|
flutter: ">=1.20.0"
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
flutter:
|
||||||
|
sdk: flutter
|
||||||
|
ffi: ^2.0.1
|
||||||
|
http: ^1.1.0
|
||||||
|
path_provider: ^2.0.11
|
||||||
|
mobx: ^2.1.4
|
||||||
|
flutter_mobx: ^2.0.6+1
|
||||||
|
intl: ^0.18.0
|
||||||
|
decimal: ^2.3.3
|
||||||
|
cw_core:
|
||||||
|
path: ../cw_core
|
||||||
|
json_bigint: ^3.0.0
|
||||||
|
fluttertoast: 8.1.4
|
||||||
|
|
||||||
|
dev_dependencies:
|
||||||
|
flutter_test:
|
||||||
|
sdk: flutter
|
||||||
|
build_runner: ^2.4.7
|
||||||
|
mobx_codegen: ^2.1.1
|
||||||
|
build_resolvers: ^2.0.9
|
||||||
|
hive_generator: ^1.1.3
|
||||||
|
|
||||||
|
dependency_overrides:
|
||||||
|
watcher: ^1.1.0
|
||||||
|
|
||||||
|
|
||||||
|
# For information on the generic Dart part of this file, see the
|
||||||
|
# following page: https://dart.dev/tools/pub/pubspec
|
||||||
|
|
||||||
|
# The following section is specific to Flutter.
|
||||||
|
flutter:
|
||||||
|
# This section identifies this Flutter project as a plugin project.
|
||||||
|
# The 'pluginClass' and Android 'package' identifiers should not ordinarily
|
||||||
|
# be modified. They are used by the tooling to maintain consistency when
|
||||||
|
# adding or updating assets for this project.
|
||||||
|
plugin:
|
||||||
|
platforms:
|
||||||
|
android:
|
||||||
|
package: com.cakewallet.cw_zano
|
||||||
|
pluginClass: CwZanoPlugin
|
||||||
|
ios:
|
||||||
|
pluginClass: CwZanoPlugin
|
||||||
|
|
||||||
|
# To add assets to your plugin package, add an assets section, like this:
|
||||||
|
# assets:
|
||||||
|
# - images/a_dot_burr.jpeg
|
||||||
|
# - images/a_dot_ham.jpeg
|
||||||
|
#
|
||||||
|
# For details regarding assets in packages, see
|
||||||
|
# https://flutter.dev/assets-and-images/#from-packages
|
||||||
|
#
|
||||||
|
# An image asset can refer to one or more resolution-specific "variants", see
|
||||||
|
# https://flutter.dev/assets-and-images/#resolution-aware.
|
||||||
|
|
||||||
|
# To add custom fonts to your plugin package, add a fonts section here,
|
||||||
|
# in this "flutter" section. Each entry in this list should have a
|
||||||
|
# "family" key with the font family name, and a "fonts" key with a
|
||||||
|
# list giving the asset and other descriptors for the font. For
|
||||||
|
# example:
|
||||||
|
# fonts:
|
||||||
|
# - family: Schyler
|
||||||
|
# fonts:
|
||||||
|
# - asset: fonts/Schyler-Regular.ttf
|
||||||
|
# - asset: fonts/Schyler-Italic.ttf
|
||||||
|
# style: italic
|
||||||
|
# - family: Trajan Pro
|
||||||
|
# fonts:
|
||||||
|
# - asset: fonts/TrajanPro.ttf
|
||||||
|
# - asset: fonts/TrajanPro_Bold.ttf
|
||||||
|
# weight: 700
|
||||||
|
#
|
||||||
|
# For details regarding fonts in packages, see
|
||||||
|
# https://flutter.dev/custom-fonts/#from-packages
|
144
ios/Podfile.lock
144
ios/Podfile.lock
|
@ -1,39 +1,23 @@
|
||||||
PODS:
|
PODS:
|
||||||
|
- barcode_scan2 (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- MTBBarcodeScanner
|
||||||
|
- SwiftProtobuf
|
||||||
|
- BigInt (5.2.0)
|
||||||
- connectivity_plus (0.0.1):
|
- connectivity_plus (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
- ReachabilitySwift
|
- ReachabilitySwift
|
||||||
- CryptoSwift (1.8.3)
|
- CryptoSwift (1.8.3)
|
||||||
- cw_haven (0.0.1):
|
- cw_zano (0.0.1):
|
||||||
- cw_haven/Boost (= 0.0.1)
|
- cw_zano/Boost (= 0.0.1)
|
||||||
- cw_haven/Haven (= 0.0.1)
|
- cw_zano/OpenSSL (= 0.0.1)
|
||||||
- cw_haven/OpenSSL (= 0.0.1)
|
- cw_zano/Zano (= 0.0.1)
|
||||||
- cw_haven/Sodium (= 0.0.1)
|
|
||||||
- cw_shared_external
|
|
||||||
- Flutter
|
- Flutter
|
||||||
- cw_haven/Boost (0.0.1):
|
- cw_zano/Boost (0.0.1):
|
||||||
- cw_shared_external
|
|
||||||
- Flutter
|
- Flutter
|
||||||
- cw_haven/Haven (0.0.1):
|
- cw_zano/OpenSSL (0.0.1):
|
||||||
- cw_shared_external
|
|
||||||
- Flutter
|
- Flutter
|
||||||
- cw_haven/OpenSSL (0.0.1):
|
- cw_zano/Zano (0.0.1):
|
||||||
- cw_shared_external
|
|
||||||
- Flutter
|
|
||||||
- cw_haven/Sodium (0.0.1):
|
|
||||||
- cw_shared_external
|
|
||||||
- Flutter
|
|
||||||
- cw_mweb (0.0.1):
|
|
||||||
- Flutter
|
|
||||||
- cw_shared_external (0.0.1):
|
|
||||||
- cw_shared_external/Boost (= 0.0.1)
|
|
||||||
- cw_shared_external/OpenSSL (= 0.0.1)
|
|
||||||
- cw_shared_external/Sodium (= 0.0.1)
|
|
||||||
- Flutter
|
|
||||||
- cw_shared_external/Boost (0.0.1):
|
|
||||||
- Flutter
|
|
||||||
- cw_shared_external/OpenSSL (0.0.1):
|
|
||||||
- Flutter
|
|
||||||
- cw_shared_external/Sodium (0.0.1):
|
|
||||||
- Flutter
|
- Flutter
|
||||||
- device_display_brightness (0.0.1):
|
- device_display_brightness (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
|
@ -72,8 +56,6 @@ PODS:
|
||||||
- DKPhotoGallery/Resource (0.0.19):
|
- DKPhotoGallery/Resource (0.0.19):
|
||||||
- SDWebImage
|
- SDWebImage
|
||||||
- SwiftyGif
|
- SwiftyGif
|
||||||
- fast_scanner (5.1.1):
|
|
||||||
- Flutter
|
|
||||||
- file_picker (0.0.1):
|
- file_picker (0.0.1):
|
||||||
- DKImagePickerController/PhotoGallery
|
- DKImagePickerController/PhotoGallery
|
||||||
- Flutter
|
- Flutter
|
||||||
|
@ -81,10 +63,10 @@ PODS:
|
||||||
- flutter_inappwebview_ios (0.0.1):
|
- flutter_inappwebview_ios (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
- flutter_inappwebview_ios/Core (= 0.0.1)
|
- flutter_inappwebview_ios/Core (= 0.0.1)
|
||||||
- OrderedSet (~> 6.0.3)
|
- OrderedSet (~> 5.0)
|
||||||
- flutter_inappwebview_ios/Core (0.0.1):
|
- flutter_inappwebview_ios/Core (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
- OrderedSet (~> 6.0.3)
|
- OrderedSet (~> 5.0)
|
||||||
- flutter_local_authentication (1.2.0):
|
- flutter_local_authentication (1.2.0):
|
||||||
- Flutter
|
- Flutter
|
||||||
- flutter_mailer (0.0.1):
|
- flutter_mailer (0.0.1):
|
||||||
|
@ -94,11 +76,12 @@ PODS:
|
||||||
- fluttertoast (0.0.2):
|
- fluttertoast (0.0.2):
|
||||||
- Flutter
|
- Flutter
|
||||||
- Toast
|
- Toast
|
||||||
- in_app_review (2.0.0):
|
- in_app_review (0.2.0):
|
||||||
- Flutter
|
- Flutter
|
||||||
- integration_test (0.0.1):
|
- MTBBarcodeScanner (5.0.11)
|
||||||
|
- OrderedSet (5.0.0)
|
||||||
|
- package_info (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
- OrderedSet (6.0.3)
|
|
||||||
- package_info_plus (0.4.5):
|
- package_info_plus (0.4.5):
|
||||||
- Flutter
|
- Flutter
|
||||||
- path_provider_foundation (0.0.1):
|
- path_provider_foundation (0.0.1):
|
||||||
|
@ -106,10 +89,15 @@ PODS:
|
||||||
- FlutterMacOS
|
- FlutterMacOS
|
||||||
- permission_handler_apple (9.1.1):
|
- permission_handler_apple (9.1.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
- ReachabilitySwift (5.2.4)
|
- Protobuf (3.27.3)
|
||||||
- SDWebImage (5.19.7):
|
- ReachabilitySwift (5.2.3)
|
||||||
- SDWebImage/Core (= 5.19.7)
|
- reactive_ble_mobile (0.0.1):
|
||||||
- SDWebImage/Core (5.19.7)
|
- Flutter
|
||||||
|
- Protobuf (~> 3.5)
|
||||||
|
- SwiftProtobuf (~> 1.0)
|
||||||
|
- SDWebImage (5.19.6):
|
||||||
|
- SDWebImage/Core (= 5.19.6)
|
||||||
|
- SDWebImage/Core (5.19.6)
|
||||||
- sensitive_clipboard (0.0.1):
|
- sensitive_clipboard (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
- share_plus (0.0.1):
|
- share_plus (0.0.1):
|
||||||
|
@ -119,13 +107,14 @@ PODS:
|
||||||
- FlutterMacOS
|
- FlutterMacOS
|
||||||
- sp_scanner (0.0.1):
|
- sp_scanner (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
|
- SwiftProtobuf (1.27.1)
|
||||||
- SwiftyGif (5.4.5)
|
- SwiftyGif (5.4.5)
|
||||||
- Toast (4.1.1)
|
- Toast (4.1.1)
|
||||||
- uni_links (0.0.1):
|
- uni_links (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
- universal_ble (0.0.1):
|
- UnstoppableDomainsResolution (4.0.0):
|
||||||
- Flutter
|
- BigInt
|
||||||
- FlutterMacOS
|
- CryptoSwift
|
||||||
- url_launcher_ios (0.0.1):
|
- url_launcher_ios (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
- wakelock_plus (0.0.1):
|
- wakelock_plus (0.0.1):
|
||||||
|
@ -134,15 +123,13 @@ PODS:
|
||||||
- Flutter
|
- Flutter
|
||||||
|
|
||||||
DEPENDENCIES:
|
DEPENDENCIES:
|
||||||
|
- barcode_scan2 (from `.symlinks/plugins/barcode_scan2/ios`)
|
||||||
- connectivity_plus (from `.symlinks/plugins/connectivity_plus/ios`)
|
- connectivity_plus (from `.symlinks/plugins/connectivity_plus/ios`)
|
||||||
- CryptoSwift
|
- CryptoSwift
|
||||||
- cw_haven (from `.symlinks/plugins/cw_haven/ios`)
|
- cw_zano (from `.symlinks/plugins/cw_zano/ios`)
|
||||||
- cw_mweb (from `.symlinks/plugins/cw_mweb/ios`)
|
|
||||||
- cw_shared_external (from `.symlinks/plugins/cw_shared_external/ios`)
|
|
||||||
- device_display_brightness (from `.symlinks/plugins/device_display_brightness/ios`)
|
- device_display_brightness (from `.symlinks/plugins/device_display_brightness/ios`)
|
||||||
- device_info_plus (from `.symlinks/plugins/device_info_plus/ios`)
|
- device_info_plus (from `.symlinks/plugins/device_info_plus/ios`)
|
||||||
- devicelocale (from `.symlinks/plugins/devicelocale/ios`)
|
- devicelocale (from `.symlinks/plugins/devicelocale/ios`)
|
||||||
- fast_scanner (from `.symlinks/plugins/fast_scanner/ios`)
|
|
||||||
- file_picker (from `.symlinks/plugins/file_picker/ios`)
|
- file_picker (from `.symlinks/plugins/file_picker/ios`)
|
||||||
- Flutter (from `Flutter`)
|
- Flutter (from `Flutter`)
|
||||||
- flutter_inappwebview_ios (from `.symlinks/plugins/flutter_inappwebview_ios/ios`)
|
- flutter_inappwebview_ios (from `.symlinks/plugins/flutter_inappwebview_ios/ios`)
|
||||||
|
@ -151,48 +138,50 @@ DEPENDENCIES:
|
||||||
- flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`)
|
- flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`)
|
||||||
- fluttertoast (from `.symlinks/plugins/fluttertoast/ios`)
|
- fluttertoast (from `.symlinks/plugins/fluttertoast/ios`)
|
||||||
- in_app_review (from `.symlinks/plugins/in_app_review/ios`)
|
- in_app_review (from `.symlinks/plugins/in_app_review/ios`)
|
||||||
- integration_test (from `.symlinks/plugins/integration_test/ios`)
|
- package_info (from `.symlinks/plugins/package_info/ios`)
|
||||||
- package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
|
- package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
|
||||||
- path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
|
- path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
|
||||||
- permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`)
|
- permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`)
|
||||||
|
- reactive_ble_mobile (from `.symlinks/plugins/reactive_ble_mobile/ios`)
|
||||||
- sensitive_clipboard (from `.symlinks/plugins/sensitive_clipboard/ios`)
|
- sensitive_clipboard (from `.symlinks/plugins/sensitive_clipboard/ios`)
|
||||||
- share_plus (from `.symlinks/plugins/share_plus/ios`)
|
- share_plus (from `.symlinks/plugins/share_plus/ios`)
|
||||||
- shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`)
|
- shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`)
|
||||||
- sp_scanner (from `.symlinks/plugins/sp_scanner/ios`)
|
- sp_scanner (from `.symlinks/plugins/sp_scanner/ios`)
|
||||||
- uni_links (from `.symlinks/plugins/uni_links/ios`)
|
- uni_links (from `.symlinks/plugins/uni_links/ios`)
|
||||||
- universal_ble (from `.symlinks/plugins/universal_ble/darwin`)
|
- UnstoppableDomainsResolution (~> 4.0.0)
|
||||||
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
|
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
|
||||||
- wakelock_plus (from `.symlinks/plugins/wakelock_plus/ios`)
|
- wakelock_plus (from `.symlinks/plugins/wakelock_plus/ios`)
|
||||||
- workmanager (from `.symlinks/plugins/workmanager/ios`)
|
- workmanager (from `.symlinks/plugins/workmanager/ios`)
|
||||||
|
|
||||||
SPEC REPOS:
|
SPEC REPOS:
|
||||||
https://github.com/CocoaPods/Specs.git:
|
https://github.com/CocoaPods/Specs.git:
|
||||||
|
- BigInt
|
||||||
- CryptoSwift
|
- CryptoSwift
|
||||||
- DKImagePickerController
|
- DKImagePickerController
|
||||||
- DKPhotoGallery
|
- DKPhotoGallery
|
||||||
|
- MTBBarcodeScanner
|
||||||
- OrderedSet
|
- OrderedSet
|
||||||
|
- Protobuf
|
||||||
- ReachabilitySwift
|
- ReachabilitySwift
|
||||||
- SDWebImage
|
- SDWebImage
|
||||||
|
- SwiftProtobuf
|
||||||
- SwiftyGif
|
- SwiftyGif
|
||||||
- Toast
|
- Toast
|
||||||
|
- UnstoppableDomainsResolution
|
||||||
|
|
||||||
EXTERNAL SOURCES:
|
EXTERNAL SOURCES:
|
||||||
|
barcode_scan2:
|
||||||
|
:path: ".symlinks/plugins/barcode_scan2/ios"
|
||||||
connectivity_plus:
|
connectivity_plus:
|
||||||
:path: ".symlinks/plugins/connectivity_plus/ios"
|
:path: ".symlinks/plugins/connectivity_plus/ios"
|
||||||
cw_haven:
|
cw_zano:
|
||||||
:path: ".symlinks/plugins/cw_haven/ios"
|
:path: ".symlinks/plugins/cw_zano/ios"
|
||||||
cw_mweb:
|
|
||||||
:path: ".symlinks/plugins/cw_mweb/ios"
|
|
||||||
cw_shared_external:
|
|
||||||
:path: ".symlinks/plugins/cw_shared_external/ios"
|
|
||||||
device_display_brightness:
|
device_display_brightness:
|
||||||
:path: ".symlinks/plugins/device_display_brightness/ios"
|
:path: ".symlinks/plugins/device_display_brightness/ios"
|
||||||
device_info_plus:
|
device_info_plus:
|
||||||
:path: ".symlinks/plugins/device_info_plus/ios"
|
:path: ".symlinks/plugins/device_info_plus/ios"
|
||||||
devicelocale:
|
devicelocale:
|
||||||
:path: ".symlinks/plugins/devicelocale/ios"
|
:path: ".symlinks/plugins/devicelocale/ios"
|
||||||
fast_scanner:
|
|
||||||
:path: ".symlinks/plugins/fast_scanner/ios"
|
|
||||||
file_picker:
|
file_picker:
|
||||||
:path: ".symlinks/plugins/file_picker/ios"
|
:path: ".symlinks/plugins/file_picker/ios"
|
||||||
Flutter:
|
Flutter:
|
||||||
|
@ -209,14 +198,16 @@ EXTERNAL SOURCES:
|
||||||
:path: ".symlinks/plugins/fluttertoast/ios"
|
:path: ".symlinks/plugins/fluttertoast/ios"
|
||||||
in_app_review:
|
in_app_review:
|
||||||
:path: ".symlinks/plugins/in_app_review/ios"
|
:path: ".symlinks/plugins/in_app_review/ios"
|
||||||
integration_test:
|
package_info:
|
||||||
:path: ".symlinks/plugins/integration_test/ios"
|
:path: ".symlinks/plugins/package_info/ios"
|
||||||
package_info_plus:
|
package_info_plus:
|
||||||
:path: ".symlinks/plugins/package_info_plus/ios"
|
:path: ".symlinks/plugins/package_info_plus/ios"
|
||||||
path_provider_foundation:
|
path_provider_foundation:
|
||||||
:path: ".symlinks/plugins/path_provider_foundation/darwin"
|
:path: ".symlinks/plugins/path_provider_foundation/darwin"
|
||||||
permission_handler_apple:
|
permission_handler_apple:
|
||||||
:path: ".symlinks/plugins/permission_handler_apple/ios"
|
:path: ".symlinks/plugins/permission_handler_apple/ios"
|
||||||
|
reactive_ble_mobile:
|
||||||
|
:path: ".symlinks/plugins/reactive_ble_mobile/ios"
|
||||||
sensitive_clipboard:
|
sensitive_clipboard:
|
||||||
:path: ".symlinks/plugins/sensitive_clipboard/ios"
|
:path: ".symlinks/plugins/sensitive_clipboard/ios"
|
||||||
share_plus:
|
share_plus:
|
||||||
|
@ -227,8 +218,6 @@ EXTERNAL SOURCES:
|
||||||
:path: ".symlinks/plugins/sp_scanner/ios"
|
:path: ".symlinks/plugins/sp_scanner/ios"
|
||||||
uni_links:
|
uni_links:
|
||||||
:path: ".symlinks/plugins/uni_links/ios"
|
:path: ".symlinks/plugins/uni_links/ios"
|
||||||
universal_ble:
|
|
||||||
:path: ".symlinks/plugins/universal_ble/darwin"
|
|
||||||
url_launcher_ios:
|
url_launcher_ios:
|
||||||
:path: ".symlinks/plugins/url_launcher_ios/ios"
|
:path: ".symlinks/plugins/url_launcher_ios/ios"
|
||||||
wakelock_plus:
|
wakelock_plus:
|
||||||
|
@ -237,44 +226,47 @@ EXTERNAL SOURCES:
|
||||||
:path: ".symlinks/plugins/workmanager/ios"
|
:path: ".symlinks/plugins/workmanager/ios"
|
||||||
|
|
||||||
SPEC CHECKSUMS:
|
SPEC CHECKSUMS:
|
||||||
|
barcode_scan2: 0af2bb63c81b4565aab6cd78278e4c0fa136dbb0
|
||||||
|
BigInt: f668a80089607f521586bbe29513d708491ef2f7
|
||||||
connectivity_plus: bf0076dd84a130856aa636df1c71ccaff908fa1d
|
connectivity_plus: bf0076dd84a130856aa636df1c71ccaff908fa1d
|
||||||
CryptoSwift: 967f37cea5a3294d9cce358f78861652155be483
|
CryptoSwift: 967f37cea5a3294d9cce358f78861652155be483
|
||||||
cw_haven: b3e54e1fbe7b8e6fda57a93206bc38f8e89b898a
|
cw_zano: e13e2987734da2e94770540121762c288cdcf5b3
|
||||||
cw_mweb: 87af74f9659fed0c1a2cbfb44413f1070e79e3ae
|
|
||||||
cw_shared_external: 2972d872b8917603478117c9957dfca611845a92
|
|
||||||
device_display_brightness: 1510e72c567a1f6ce6ffe393dcd9afd1426034f7
|
device_display_brightness: 1510e72c567a1f6ce6ffe393dcd9afd1426034f7
|
||||||
device_info_plus: c6fb39579d0f423935b0c9ce7ee2f44b71b9fce6
|
device_info_plus: c6fb39579d0f423935b0c9ce7ee2f44b71b9fce6
|
||||||
devicelocale: 35ba84dc7f45f527c3001535d8c8d104edd5d926
|
devicelocale: b22617f40038496deffba44747101255cee005b0
|
||||||
DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c
|
DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c
|
||||||
DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60
|
DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60
|
||||||
fast_scanner: 44c00940355a51258cd6c2085734193cd23d95bc
|
|
||||||
file_picker: 15fd9539e4eb735dc54bae8c0534a7a9511a03de
|
file_picker: 15fd9539e4eb735dc54bae8c0534a7a9511a03de
|
||||||
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
|
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
|
||||||
flutter_inappwebview_ios: 6f63631e2c62a7c350263b13fa5427aedefe81d4
|
flutter_inappwebview_ios: 97215cf7d4677db55df76782dbd2930c5e1c1ea0
|
||||||
flutter_local_authentication: 1172a4dd88f6306dadce067454e2c4caf07977bb
|
flutter_local_authentication: 1172a4dd88f6306dadce067454e2c4caf07977bb
|
||||||
flutter_mailer: 2ef5a67087bc8c6c4cefd04a178bf1ae2c94cd83
|
flutter_mailer: 2ef5a67087bc8c6c4cefd04a178bf1ae2c94cd83
|
||||||
flutter_secure_storage: 23fc622d89d073675f2eaa109381aefbcf5a49be
|
flutter_secure_storage: 23fc622d89d073675f2eaa109381aefbcf5a49be
|
||||||
fluttertoast: e9a18c7be5413da53898f660530c56f35edfba9c
|
fluttertoast: 48c57db1b71b0ce9e6bba9f31c940ff4b001293c
|
||||||
in_app_review: a31b5257259646ea78e0e35fc914979b0031d011
|
in_app_review: 318597b3a06c22bb46dc454d56828c85f444f99d
|
||||||
integration_test: 252f60fa39af5e17c3aa9899d35d908a0721b573
|
MTBBarcodeScanner: f453b33c4b7dfe545d8c6484ed744d55671788cb
|
||||||
OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94
|
OrderedSet: aaeb196f7fef5a9edf55d89760da9176ad40b93c
|
||||||
package_info_plus: c0502532a26c7662a62a356cebe2692ec5fe4ec4
|
package_info: 873975fc26034f0b863a300ad47e7f1ac6c7ec62
|
||||||
|
package_info_plus: 58f0028419748fad15bf008b270aaa8e54380b1c
|
||||||
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
|
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
|
||||||
permission_handler_apple: e76247795d700c14ea09e3a2d8855d41ee80a2e6
|
permission_handler_apple: e76247795d700c14ea09e3a2d8855d41ee80a2e6
|
||||||
ReachabilitySwift: 32793e867593cfc1177f5d16491e3a197d2fccda
|
Protobuf: c1cbc880ea7c4e9b157e113515c720a22ee7cf50
|
||||||
SDWebImage: 8a6b7b160b4d710e2a22b6900e25301075c34cb3
|
ReachabilitySwift: 7f151ff156cea1481a8411701195ac6a984f4979
|
||||||
|
reactive_ble_mobile: 9ce6723d37ccf701dbffd202d487f23f5de03b4c
|
||||||
|
SDWebImage: a79252b60f4678812d94316c91da69ec83089c9f
|
||||||
sensitive_clipboard: d4866e5d176581536c27bb1618642ee83adca986
|
sensitive_clipboard: d4866e5d176581536c27bb1618642ee83adca986
|
||||||
share_plus: 8b6f8b3447e494cca5317c8c3073de39b3600d1f
|
share_plus: 056a1e8ac890df3e33cb503afffaf1e9b4fbae68
|
||||||
shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78
|
shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78
|
||||||
sp_scanner: eaa617fa827396b967116b7f1f43549ca62e9a12
|
sp_scanner: eaa617fa827396b967116b7f1f43549ca62e9a12
|
||||||
|
SwiftProtobuf: b109bd17979d7993a84da14b1e1fdd8b0ded934a
|
||||||
SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4
|
SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4
|
||||||
Toast: 1f5ea13423a1e6674c4abdac5be53587ae481c4e
|
Toast: 1f5ea13423a1e6674c4abdac5be53587ae481c4e
|
||||||
uni_links: d97da20c7701486ba192624d99bffaaffcfc298a
|
uni_links: d97da20c7701486ba192624d99bffaaffcfc298a
|
||||||
universal_ble: cf52a7b3fd2e7c14d6d7262e9fdadb72ab6b88a6
|
UnstoppableDomainsResolution: c3c67f4d0a5e2437cb00d4bd50c2e00d6e743841
|
||||||
url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe
|
url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe
|
||||||
wakelock_plus: 78ec7c5b202cab7761af8e2b2b3d0671be6c4ae1
|
wakelock_plus: 78ec7c5b202cab7761af8e2b2b3d0671be6c4ae1
|
||||||
workmanager: 0afdcf5628bbde6924c21af7836fed07b42e30e6
|
workmanager: 0afdcf5628bbde6924c21af7836fed07b42e30e6
|
||||||
|
|
||||||
PODFILE CHECKSUM: e448f662d4c41f0c0b1ccbb78afd57dbf895a597
|
PODFILE CHECKSUM: a2fe518be61cdbdc5b0e2da085ab543d556af2d3
|
||||||
|
|
||||||
COCOAPODS: 1.15.2
|
COCOAPODS: 1.15.2
|
||||||
|
|
|
@ -4,6 +4,7 @@ import 'package:cake_wallet/core/validator.dart';
|
||||||
import 'package:cake_wallet/solana/solana.dart';
|
import 'package:cake_wallet/solana/solana.dart';
|
||||||
import 'package:cw_core/crypto_currency.dart';
|
import 'package:cw_core/crypto_currency.dart';
|
||||||
import 'package:cw_core/erc20_token.dart';
|
import 'package:cw_core/erc20_token.dart';
|
||||||
|
import 'package:cw_zano/zano_utils.dart';
|
||||||
|
|
||||||
const BEFORE_REGEX = '(^|\\s)';
|
const BEFORE_REGEX = '(^|\\s)';
|
||||||
const AFTER_REGEX = '(\$|\\s)';
|
const AFTER_REGEX = '(\$|\\s)';
|
||||||
|
@ -19,6 +20,8 @@ class AddressValidator extends TextValidator {
|
||||||
? BitcoinNetwork.mainnet
|
? BitcoinNetwork.mainnet
|
||||||
: LitecoinNetwork.mainnet,
|
: LitecoinNetwork.mainnet,
|
||||||
)
|
)
|
||||||
|
: type == CryptoCurrency.zano
|
||||||
|
? ZanoUtils.validateAddress
|
||||||
: null,
|
: null,
|
||||||
pattern: getPattern(type),
|
pattern: getPattern(type),
|
||||||
length: getLength(type));
|
length: getLength(type));
|
||||||
|
@ -132,6 +135,8 @@ class AddressValidator extends TextValidator {
|
||||||
pattern = 'D([1-9a-km-zA-HJ-NP-Z]){33}';
|
pattern = 'D([1-9a-km-zA-HJ-NP-Z]){33}';
|
||||||
case CryptoCurrency.btcln:
|
case CryptoCurrency.btcln:
|
||||||
pattern = '(lnbc|LNBC)([0-9]{1,}[a-zA-Z0-9]+)';
|
pattern = '(lnbc|LNBC)([0-9]{1,}[a-zA-Z0-9]+)';
|
||||||
|
case CryptoCurrency.zano:
|
||||||
|
pattern = '([1-9A-HJ-NP-Za-km-z]{90,200})|(@[\w\d-.]+)';
|
||||||
default:
|
default:
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
@ -271,6 +276,7 @@ class AddressValidator extends TextValidator {
|
||||||
return [64];
|
return [64];
|
||||||
case CryptoCurrency.btcln:
|
case CryptoCurrency.btcln:
|
||||||
case CryptoCurrency.kaspa:
|
case CryptoCurrency.kaspa:
|
||||||
|
case CryptoCurrency.zano:
|
||||||
default:
|
default:
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -310,6 +316,8 @@ class AddressValidator extends TextValidator {
|
||||||
pattern = '[1-9A-HJ-NP-Za-km-z]+';
|
pattern = '[1-9A-HJ-NP-Za-km-z]+';
|
||||||
case CryptoCurrency.trx:
|
case CryptoCurrency.trx:
|
||||||
pattern = '(T|t)[1-9A-HJ-NP-Za-km-z]{33}';
|
pattern = '(T|t)[1-9A-HJ-NP-Za-km-z]{33}';
|
||||||
|
case CryptoCurrency.zano:
|
||||||
|
pattern = '([1-9A-HJ-NP-Za-km-z]{90,200})|(@[\w\d-.]+)';
|
||||||
default:
|
default:
|
||||||
if (type.tag == CryptoCurrency.eth.title) {
|
if (type.tag == CryptoCurrency.eth.title) {
|
||||||
pattern = '0x[0-9a-zA-Z]{42}';
|
pattern = '0x[0-9a-zA-Z]{42}';
|
||||||
|
|
|
@ -76,6 +76,8 @@ class DecimalAmountValidator extends TextValidator {
|
||||||
return '^([0-9]+([.\,][0-9]{1,12})?|[.\,][0-9]{1,12})\$';
|
return '^([0-9]+([.\,][0-9]{1,12})?|[.\,][0-9]{1,12})\$';
|
||||||
case CryptoCurrency.btc:
|
case CryptoCurrency.btc:
|
||||||
return '^([0-9]+([.\,][0-9]{1,8})?|[.\,][0-9]{1,8})\$';
|
return '^([0-9]+([.\,][0-9]{1,8})?|[.\,][0-9]{1,8})\$';
|
||||||
|
case CryptoCurrency.zano:
|
||||||
|
return '^([0-9]+([.\,][0-9]{1,12})?|[.\,][0-9]{1,18})\$';
|
||||||
default:
|
default:
|
||||||
return '^([0-9]+([.\,][0-9]{1,12})?|[.\,][0-9]{1,12})\$';
|
return '^([0-9]+([.\,][0-9]{1,12})?|[.\,][0-9]{1,12})\$';
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,7 @@ import 'package:cake_wallet/polygon/polygon.dart';
|
||||||
import 'package:cake_wallet/solana/solana.dart';
|
import 'package:cake_wallet/solana/solana.dart';
|
||||||
import 'package:cake_wallet/tron/tron.dart';
|
import 'package:cake_wallet/tron/tron.dart';
|
||||||
import 'package:cake_wallet/wownero/wownero.dart';
|
import 'package:cake_wallet/wownero/wownero.dart';
|
||||||
|
import 'package:cake_wallet/zano/zano.dart';
|
||||||
import 'package:cake_wallet/utils/language_list.dart';
|
import 'package:cake_wallet/utils/language_list.dart';
|
||||||
import 'package:cw_core/wallet_type.dart';
|
import 'package:cw_core/wallet_type.dart';
|
||||||
|
|
||||||
|
@ -21,7 +22,8 @@ class SeedValidator extends Validator<MnemonicItem> {
|
||||||
final String language;
|
final String language;
|
||||||
final List<String> _words;
|
final List<String> _words;
|
||||||
|
|
||||||
static List<String> getWordList({required WalletType type, required String language}) {
|
static List<String> getWordList(
|
||||||
|
{required WalletType type, required String language}) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case WalletType.bitcoin:
|
case WalletType.bitcoin:
|
||||||
return getBitcoinWordList(language);
|
return getBitcoinWordList(language);
|
||||||
|
@ -46,6 +48,8 @@ class SeedValidator extends Validator<MnemonicItem> {
|
||||||
return tron!.getTronWordList(language);
|
return tron!.getTronWordList(language);
|
||||||
case WalletType.wownero:
|
case WalletType.wownero:
|
||||||
return wownero!.getWowneroWordList(language);
|
return wownero!.getWowneroWordList(language);
|
||||||
|
case WalletType.zano:
|
||||||
|
return zano!.getWordList(language);
|
||||||
case WalletType.none:
|
case WalletType.none:
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
|
@ -89,6 +89,7 @@ class WalletCreationService {
|
||||||
case WalletType.haven:
|
case WalletType.haven:
|
||||||
case WalletType.nano:
|
case WalletType.nano:
|
||||||
case WalletType.banano:
|
case WalletType.banano:
|
||||||
|
case WalletType.zano:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -246,6 +246,7 @@ import 'package:cake_wallet/view_model/wallet_seed_view_model.dart';
|
||||||
import 'package:cake_wallet/view_model/wallet_unlock_loadable_view_model.dart';
|
import 'package:cake_wallet/view_model/wallet_unlock_loadable_view_model.dart';
|
||||||
import 'package:cake_wallet/view_model/wallet_unlock_verifiable_view_model.dart';
|
import 'package:cake_wallet/view_model/wallet_unlock_verifiable_view_model.dart';
|
||||||
import 'package:cake_wallet/wownero/wownero.dart';
|
import 'package:cake_wallet/wownero/wownero.dart';
|
||||||
|
import 'package:cake_wallet/zano/zano.dart';
|
||||||
import 'package:cw_core/crypto_currency.dart';
|
import 'package:cw_core/crypto_currency.dart';
|
||||||
import 'package:cw_core/wallet_info.dart';
|
import 'package:cw_core/wallet_info.dart';
|
||||||
import 'package:cw_core/wallet_type.dart';
|
import 'package:cw_core/wallet_type.dart';
|
||||||
|
@ -1093,6 +1094,8 @@ Future<void> setup({
|
||||||
return tron!.createTronWalletService(_walletInfoSource, SettingsStoreBase.walletPasswordDirectInput);
|
return tron!.createTronWalletService(_walletInfoSource, SettingsStoreBase.walletPasswordDirectInput);
|
||||||
case WalletType.wownero:
|
case WalletType.wownero:
|
||||||
return wownero!.createWowneroWalletService(_walletInfoSource, _unspentCoinsInfoSource);
|
return wownero!.createWowneroWalletService(_walletInfoSource, _unspentCoinsInfoSource);
|
||||||
|
case WalletType.zano:
|
||||||
|
return zano!.createZanoWalletService(_walletInfoSource);
|
||||||
case WalletType.none:
|
case WalletType.none:
|
||||||
throw Exception('Unexpected token: ${param1.toString()} for generating of WalletService');
|
throw Exception('Unexpected token: ${param1.toString()} for generating of WalletService');
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,6 +45,7 @@ const tronDefaultNodeUri = 'api.trongrid.io';
|
||||||
const newCakeWalletBitcoinUri = 'btc-electrum.cakewallet.com:50002';
|
const newCakeWalletBitcoinUri = 'btc-electrum.cakewallet.com:50002';
|
||||||
const wowneroDefaultNodeUri = 'node3.monerodevs.org:34568';
|
const wowneroDefaultNodeUri = 'node3.monerodevs.org:34568';
|
||||||
const moneroWorldNodeUri = '.moneroworld.com';
|
const moneroWorldNodeUri = '.moneroworld.com';
|
||||||
|
const zanoDefaultNodeUri = 'zano.org';
|
||||||
|
|
||||||
Future<void> defaultSettingsMigration(
|
Future<void> defaultSettingsMigration(
|
||||||
{required int version,
|
{required int version,
|
||||||
|
@ -330,6 +331,11 @@ Future<void> defaultSettingsMigration(
|
||||||
useSSL: true,
|
useSSL: true,
|
||||||
oldUri: ['rpc.ankr.com'],
|
oldUri: ['rpc.ankr.com'],
|
||||||
);
|
);
|
||||||
|
break;
|
||||||
|
case 46:
|
||||||
|
await addZanoNodeList(nodes: nodes);
|
||||||
|
await changeZanoCurrentNodeToDefault(sharedPreferences: sharedPreferences, nodes: nodes);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -667,6 +673,12 @@ Node? getBitcoinCashDefaultElectrumServer({required Box<Node> nodes}) {
|
||||||
nodes.values.firstWhereOrNull((node) => node.type == WalletType.bitcoinCash);
|
nodes.values.firstWhereOrNull((node) => node.type == WalletType.bitcoinCash);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Node? getZanoDefaultNode({required Box<Node> nodes}) {
|
||||||
|
return nodes.values.firstWhereOrNull(
|
||||||
|
(Node node) => node.uriRaw == zanoDefaultNodeUri)
|
||||||
|
?? nodes.values.firstWhereOrNull((node) => node.type == WalletType.zano);
|
||||||
|
}
|
||||||
|
|
||||||
Node getMoneroDefaultNode({required Box<Node> nodes}) {
|
Node getMoneroDefaultNode({required Box<Node> nodes}) {
|
||||||
var nodeUri = newCakeWalletMoneroUri;
|
var nodeUri = newCakeWalletMoneroUri;
|
||||||
|
|
||||||
|
@ -1163,6 +1175,7 @@ Future<void> checkCurrentNodes(
|
||||||
final currentSolanaNodeId = sharedPreferences.getInt(PreferencesKey.currentSolanaNodeIdKey);
|
final currentSolanaNodeId = sharedPreferences.getInt(PreferencesKey.currentSolanaNodeIdKey);
|
||||||
final currentTronNodeId = sharedPreferences.getInt(PreferencesKey.currentTronNodeIdKey);
|
final currentTronNodeId = sharedPreferences.getInt(PreferencesKey.currentTronNodeIdKey);
|
||||||
final currentWowneroNodeId = sharedPreferences.getInt(PreferencesKey.currentWowneroNodeIdKey);
|
final currentWowneroNodeId = sharedPreferences.getInt(PreferencesKey.currentWowneroNodeIdKey);
|
||||||
|
final currentZanoNodeId = sharedPreferences.getInt(PreferencesKey.currentZanoNodeIdKey);
|
||||||
final currentMoneroNode =
|
final currentMoneroNode =
|
||||||
nodeSource.values.firstWhereOrNull((node) => node.key == currentMoneroNodeId);
|
nodeSource.values.firstWhereOrNull((node) => node.key == currentMoneroNodeId);
|
||||||
final currentBitcoinElectrumServer =
|
final currentBitcoinElectrumServer =
|
||||||
|
@ -1187,6 +1200,8 @@ Future<void> checkCurrentNodes(
|
||||||
nodeSource.values.firstWhereOrNull((node) => node.key == currentTronNodeId);
|
nodeSource.values.firstWhereOrNull((node) => node.key == currentTronNodeId);
|
||||||
final currentWowneroNodeServer =
|
final currentWowneroNodeServer =
|
||||||
nodeSource.values.firstWhereOrNull((node) => node.key == currentWowneroNodeId);
|
nodeSource.values.firstWhereOrNull((node) => node.key == currentWowneroNodeId);
|
||||||
|
final currentZanoNode = nodeSource.values.firstWhereOrNull((node) => node.key == currentZanoNodeId);
|
||||||
|
|
||||||
if (currentMoneroNode == null) {
|
if (currentMoneroNode == null) {
|
||||||
final newCakeWalletNode = Node(uri: newCakeWalletMoneroUri, type: WalletType.monero);
|
final newCakeWalletNode = Node(uri: newCakeWalletMoneroUri, type: WalletType.monero);
|
||||||
await nodeSource.add(newCakeWalletNode);
|
await nodeSource.add(newCakeWalletNode);
|
||||||
|
@ -1270,6 +1285,12 @@ Future<void> checkCurrentNodes(
|
||||||
await nodeSource.add(node);
|
await nodeSource.add(node);
|
||||||
await sharedPreferences.setInt(PreferencesKey.currentWowneroNodeIdKey, node.key as int);
|
await sharedPreferences.setInt(PreferencesKey.currentWowneroNodeIdKey, node.key as int);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (currentZanoNode == null) {
|
||||||
|
final node = Node(uri: zanoDefaultNodeUri, type: WalletType.zano);
|
||||||
|
await nodeSource.add(node);
|
||||||
|
await sharedPreferences.setInt(PreferencesKey.currentZanoNodeIdKey, node.key as int);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> resetBitcoinElectrumServer(
|
Future<void> resetBitcoinElectrumServer(
|
||||||
|
@ -1345,6 +1366,15 @@ Future<void> addWowneroNodeList({required Box<Node> nodes}) async {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<void> addZanoNodeList({required Box<Node> nodes}) async {
|
||||||
|
final nodeList = await loadDefaultZanoNodes();
|
||||||
|
for (var node in nodeList) {
|
||||||
|
if (nodes.values.firstWhereOrNull((element) => element.uriRaw == node.uriRaw) == null) {
|
||||||
|
await nodes.add(node);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Future<void> changeWowneroCurrentNodeToDefault(
|
Future<void> changeWowneroCurrentNodeToDefault(
|
||||||
{required SharedPreferences sharedPreferences, required Box<Node> nodes}) async {
|
{required SharedPreferences sharedPreferences, required Box<Node> nodes}) async {
|
||||||
final node = getWowneroDefaultNode(nodes: nodes);
|
final node = getWowneroDefaultNode(nodes: nodes);
|
||||||
|
@ -1353,6 +1383,13 @@ Future<void> changeWowneroCurrentNodeToDefault(
|
||||||
await sharedPreferences.setInt(PreferencesKey.currentWowneroNodeIdKey, nodeId);
|
await sharedPreferences.setInt(PreferencesKey.currentWowneroNodeIdKey, nodeId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<void> changeZanoCurrentNodeToDefault(
|
||||||
|
{required SharedPreferences sharedPreferences, required Box<Node> nodes}) async {
|
||||||
|
final node = getZanoDefaultNode(nodes: nodes);
|
||||||
|
final nodeId = node?.key as int? ?? 0;
|
||||||
|
await sharedPreferences.setInt(PreferencesKey.currentZanoNodeIdKey, nodeId);
|
||||||
|
}
|
||||||
|
|
||||||
Future<void> addNanoNodeList({required Box<Node> nodes}) async {
|
Future<void> addNanoNodeList({required Box<Node> nodes}) async {
|
||||||
final nodeList = await loadDefaultNanoNodes();
|
final nodeList = await loadDefaultNanoNodes();
|
||||||
for (var node in nodeList) {
|
for (var node in nodeList) {
|
||||||
|
|
|
@ -200,6 +200,23 @@ Future<List<Node>> loadDefaultWowneroNodes() async {
|
||||||
return nodes;
|
return nodes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<List<Node>> loadDefaultZanoNodes() async {
|
||||||
|
final nodesRaw = await rootBundle.loadString('assets/zano_node_list.yml');
|
||||||
|
final loadedNodes = loadYaml(nodesRaw) as YamlList;
|
||||||
|
final nodes = <Node>[];
|
||||||
|
|
||||||
|
for (final raw in loadedNodes) {
|
||||||
|
if (raw is Map) {
|
||||||
|
final node = Node.fromMap(Map<String, Object>.from(raw));
|
||||||
|
|
||||||
|
node.type = WalletType.zano;
|
||||||
|
nodes.add(node);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nodes;
|
||||||
|
}
|
||||||
|
|
||||||
Future<void> resetToDefault(Box<Node> nodeSource) async {
|
Future<void> resetToDefault(Box<Node> nodeSource) async {
|
||||||
final moneroNodes = await loadDefaultNodes();
|
final moneroNodes = await loadDefaultNodes();
|
||||||
final bitcoinElectrumServerList = await loadBitcoinElectrumServerList();
|
final bitcoinElectrumServerList = await loadBitcoinElectrumServerList();
|
||||||
|
@ -211,6 +228,7 @@ Future<void> resetToDefault(Box<Node> nodeSource) async {
|
||||||
final polygonNodes = await loadDefaultPolygonNodes();
|
final polygonNodes = await loadDefaultPolygonNodes();
|
||||||
final solanaNodes = await loadDefaultSolanaNodes();
|
final solanaNodes = await loadDefaultSolanaNodes();
|
||||||
final tronNodes = await loadDefaultTronNodes();
|
final tronNodes = await loadDefaultTronNodes();
|
||||||
|
final zanoNodes = await loadDefaultZanoNodes();
|
||||||
|
|
||||||
final nodes = moneroNodes +
|
final nodes = moneroNodes +
|
||||||
bitcoinElectrumServerList +
|
bitcoinElectrumServerList +
|
||||||
|
@ -220,7 +238,7 @@ Future<void> resetToDefault(Box<Node> nodeSource) async {
|
||||||
bitcoinCashElectrumServerList +
|
bitcoinCashElectrumServerList +
|
||||||
nanoNodes +
|
nanoNodes +
|
||||||
polygonNodes +
|
polygonNodes +
|
||||||
solanaNodes + tronNodes;
|
solanaNodes + tronNodes + zanoNodes;
|
||||||
|
|
||||||
await nodeSource.clear();
|
await nodeSource.clear();
|
||||||
await nodeSource.addAll(nodes);
|
await nodeSource.addAll(nodes);
|
||||||
|
|
|
@ -5,6 +5,7 @@ class PreferencesKey {
|
||||||
static const currentBitcoinElectrumSererIdKey = 'current_node_id_btc';
|
static const currentBitcoinElectrumSererIdKey = 'current_node_id_btc';
|
||||||
static const currentLitecoinElectrumSererIdKey = 'current_node_id_ltc';
|
static const currentLitecoinElectrumSererIdKey = 'current_node_id_ltc';
|
||||||
static const currentHavenNodeIdKey = 'current_node_id_xhv';
|
static const currentHavenNodeIdKey = 'current_node_id_xhv';
|
||||||
|
static const currentZanoNodeIdKey = 'current_node_id_zano';
|
||||||
static const currentEthereumNodeIdKey = 'current_node_id_eth';
|
static const currentEthereumNodeIdKey = 'current_node_id_eth';
|
||||||
static const currentPolygonNodeIdKey = 'current_node_id_matic';
|
static const currentPolygonNodeIdKey = 'current_node_id_matic';
|
||||||
static const currentNanoNodeIdKey = 'current_node_id_nano';
|
static const currentNanoNodeIdKey = 'current_node_id_nano';
|
||||||
|
@ -45,6 +46,7 @@ class PreferencesKey {
|
||||||
static const ethereumTransactionPriority = 'current_fee_priority_ethereum';
|
static const ethereumTransactionPriority = 'current_fee_priority_ethereum';
|
||||||
static const polygonTransactionPriority = 'current_fee_priority_polygon';
|
static const polygonTransactionPriority = 'current_fee_priority_polygon';
|
||||||
static const bitcoinCashTransactionPriority = 'current_fee_priority_bitcoin_cash';
|
static const bitcoinCashTransactionPriority = 'current_fee_priority_bitcoin_cash';
|
||||||
|
static const zanoTransactionPriority = 'current_fee_priority_zano';
|
||||||
static const wowneroTransactionPriority = 'current_fee_priority_wownero';
|
static const wowneroTransactionPriority = 'current_fee_priority_wownero';
|
||||||
static const customBitcoinFeeRate = 'custom_electrum_fee_rate';
|
static const customBitcoinFeeRate = 'custom_electrum_fee_rate';
|
||||||
static const silentPaymentsCardDisplay = 'silentPaymentsCardDisplay';
|
static const silentPaymentsCardDisplay = 'silentPaymentsCardDisplay';
|
||||||
|
|
|
@ -5,6 +5,7 @@ import 'package:cake_wallet/haven/haven.dart';
|
||||||
import 'package:cake_wallet/monero/monero.dart';
|
import 'package:cake_wallet/monero/monero.dart';
|
||||||
import 'package:cake_wallet/polygon/polygon.dart';
|
import 'package:cake_wallet/polygon/polygon.dart';
|
||||||
import 'package:cake_wallet/wownero/wownero.dart';
|
import 'package:cake_wallet/wownero/wownero.dart';
|
||||||
|
import 'package:cake_wallet/zano/zano.dart';
|
||||||
import 'package:cw_core/transaction_priority.dart';
|
import 'package:cw_core/transaction_priority.dart';
|
||||||
import 'package:cw_core/wallet_type.dart';
|
import 'package:cw_core/wallet_type.dart';
|
||||||
|
|
||||||
|
@ -32,6 +33,8 @@ List<TransactionPriority> priorityForWalletType(WalletType type) {
|
||||||
case WalletType.solana:
|
case WalletType.solana:
|
||||||
case WalletType.tron:
|
case WalletType.tron:
|
||||||
return [];
|
return [];
|
||||||
|
case WalletType.zano:
|
||||||
|
return zano!.getTransactionPriorities();
|
||||||
default:
|
default:
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
|
@ -76,6 +76,7 @@ class ProvidersHelper {
|
||||||
];
|
];
|
||||||
case WalletType.none:
|
case WalletType.none:
|
||||||
case WalletType.haven:
|
case WalletType.haven:
|
||||||
|
case WalletType.zano:
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -109,6 +110,7 @@ class ProvidersHelper {
|
||||||
case WalletType.none:
|
case WalletType.none:
|
||||||
case WalletType.haven:
|
case WalletType.haven:
|
||||||
case WalletType.wownero:
|
case WalletType.wownero:
|
||||||
|
case WalletType.zano:
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -215,7 +215,7 @@ Future<void> initializeAppConfigs() async {
|
||||||
secureStorage: secureStorage,
|
secureStorage: secureStorage,
|
||||||
anonpayInvoiceInfo: anonpayInvoiceInfo,
|
anonpayInvoiceInfo: anonpayInvoiceInfo,
|
||||||
havenSeedStore: havenSeedStore,
|
havenSeedStore: havenSeedStore,
|
||||||
initialMigrationVersion: 45,
|
initialMigrationVersion: 46,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -46,6 +46,7 @@ class _DesktopWalletSelectionDropDownState extends State<DesktopWalletSelectionD
|
||||||
final solanaIcon = Image.asset('assets/images/sol_icon.png', height: 24, width: 24);
|
final solanaIcon = Image.asset('assets/images/sol_icon.png', height: 24, width: 24);
|
||||||
final tronIcon = Image.asset('assets/images/trx_icon.png', height: 24, width: 24);
|
final tronIcon = Image.asset('assets/images/trx_icon.png', height: 24, width: 24);
|
||||||
final wowneroIcon = Image.asset('assets/images/wownero_icon.png', height: 24, width: 24);
|
final wowneroIcon = Image.asset('assets/images/wownero_icon.png', height: 24, width: 24);
|
||||||
|
final zanoIcon = Image.asset('assets/images/zano_icon.png', height: 24, width: 24);
|
||||||
final nonWalletTypeIcon = Image.asset('assets/images/close.png', height: 24, width: 24);
|
final nonWalletTypeIcon = Image.asset('assets/images/close.png', height: 24, width: 24);
|
||||||
|
|
||||||
Image _newWalletImage(BuildContext context) => Image.asset(
|
Image _newWalletImage(BuildContext context) => Image.asset(
|
||||||
|
@ -178,6 +179,8 @@ class _DesktopWalletSelectionDropDownState extends State<DesktopWalletSelectionD
|
||||||
return tronIcon;
|
return tronIcon;
|
||||||
case WalletType.wownero:
|
case WalletType.wownero:
|
||||||
return wowneroIcon;
|
return wowneroIcon;
|
||||||
|
case WalletType.zano:
|
||||||
|
return zanoIcon;
|
||||||
default:
|
default:
|
||||||
return nonWalletTypeIcon;
|
return nonWalletTypeIcon;
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@ import 'package:cake_wallet/generated/i18n.dart';
|
||||||
import 'package:cake_wallet/src/screens/base_page.dart';
|
import 'package:cake_wallet/src/screens/base_page.dart';
|
||||||
import 'package:cake_wallet/src/widgets/address_text_field.dart';
|
import 'package:cake_wallet/src/widgets/address_text_field.dart';
|
||||||
import 'package:cake_wallet/src/widgets/alert_with_two_actions.dart';
|
import 'package:cake_wallet/src/widgets/alert_with_two_actions.dart';
|
||||||
|
import 'package:cake_wallet/src/widgets/alert_with_one_action.dart';
|
||||||
import 'package:cake_wallet/src/widgets/base_text_form_field.dart';
|
import 'package:cake_wallet/src/widgets/base_text_form_field.dart';
|
||||||
import 'package:cake_wallet/src/widgets/checkbox_widget.dart';
|
import 'package:cake_wallet/src/widgets/checkbox_widget.dart';
|
||||||
import 'package:cake_wallet/src/widgets/primary_button.dart';
|
import 'package:cake_wallet/src/widgets/primary_button.dart';
|
||||||
|
@ -12,6 +13,8 @@ import 'package:cake_wallet/themes/extensions/transaction_trade_theme.dart';
|
||||||
import 'package:cake_wallet/utils/show_pop_up.dart';
|
import 'package:cake_wallet/utils/show_pop_up.dart';
|
||||||
import 'package:cake_wallet/view_model/dashboard/home_settings_view_model.dart';
|
import 'package:cake_wallet/view_model/dashboard/home_settings_view_model.dart';
|
||||||
import 'package:cw_core/crypto_currency.dart';
|
import 'package:cw_core/crypto_currency.dart';
|
||||||
|
import 'package:cw_core/erc20_token.dart';
|
||||||
|
import 'package:cw_core/wallet_type.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:flutter_mobx/flutter_mobx.dart';
|
import 'package:flutter_mobx/flutter_mobx.dart';
|
||||||
|
@ -269,11 +272,12 @@ class _EditTokenPageBodyState extends State<EditTokenPageBody> {
|
||||||
final token = await widget.homeSettingsViewModel.getToken(_contractAddressController.text);
|
final token = await widget.homeSettingsViewModel.getToken(_contractAddressController.text);
|
||||||
|
|
||||||
if (token != null) {
|
if (token != null) {
|
||||||
if (_tokenNameController.text.isEmpty) _tokenNameController.text = token.name;
|
final isZano = widget.homeSettingsViewModel.walletType == WalletType.zano;
|
||||||
if (_tokenSymbolController.text.isEmpty) _tokenSymbolController.text = token.title;
|
if (_tokenNameController.text.isEmpty || isZano) _tokenNameController.text = token.name;
|
||||||
|
if (_tokenSymbolController.text.isEmpty || isZano) _tokenSymbolController.text = token.title;
|
||||||
if (_tokenIconPathController.text.isEmpty)
|
if (_tokenIconPathController.text.isEmpty)
|
||||||
_tokenIconPathController.text = token.iconPath ?? '';
|
_tokenIconPathController.text = token.iconPath ?? '';
|
||||||
if (_tokenDecimalController.text.isEmpty)
|
if (_tokenDecimalController.text.isEmpty || isZano)
|
||||||
_tokenDecimalController.text = token.decimals.toString();
|
_tokenDecimalController.text = token.decimals.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -305,7 +309,7 @@ class _EditTokenPageBodyState extends State<EditTokenPageBody> {
|
||||||
placeholder: S.of(context).token_contract_address,
|
placeholder: S.of(context).token_contract_address,
|
||||||
options: [AddressTextFieldOption.paste],
|
options: [AddressTextFieldOption.paste],
|
||||||
buttonColor: Theme.of(context).hintColor,
|
buttonColor: Theme.of(context).hintColor,
|
||||||
validator: AddressValidator(type: widget.homeSettingsViewModel.nativeToken),
|
validator: widget.homeSettingsViewModel.walletType == WalletType.zano ? null : AddressValidator(type: widget.homeSettingsViewModel.nativeToken).call,
|
||||||
onPushPasteButton: (_) {
|
onPushPasteButton: (_) {
|
||||||
_pasteText();
|
_pasteText();
|
||||||
},
|
},
|
||||||
|
|
|
@ -37,7 +37,8 @@ class MenuWidgetState extends State<MenuWidget> {
|
||||||
this.polygonIcon = Image.asset('assets/images/matic_icon.png'),
|
this.polygonIcon = Image.asset('assets/images/matic_icon.png'),
|
||||||
this.solanaIcon = Image.asset('assets/images/sol_icon.png'),
|
this.solanaIcon = Image.asset('assets/images/sol_icon.png'),
|
||||||
this.tronIcon = Image.asset('assets/images/trx_icon.png'),
|
this.tronIcon = Image.asset('assets/images/trx_icon.png'),
|
||||||
this.wowneroIcon = Image.asset('assets/images/wownero_icon.png');
|
this.wowneroIcon = Image.asset('assets/images/wownero_icon.png'),
|
||||||
|
this.zanoIcon = Image.asset('assets/images/zano_icon.png');
|
||||||
|
|
||||||
final largeScreen = 731;
|
final largeScreen = 731;
|
||||||
|
|
||||||
|
@ -62,6 +63,7 @@ class MenuWidgetState extends State<MenuWidget> {
|
||||||
Image solanaIcon;
|
Image solanaIcon;
|
||||||
Image tronIcon;
|
Image tronIcon;
|
||||||
Image wowneroIcon;
|
Image wowneroIcon;
|
||||||
|
Image zanoIcon;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
|
@ -245,6 +247,8 @@ class MenuWidgetState extends State<MenuWidget> {
|
||||||
return tronIcon;
|
return tronIcon;
|
||||||
case WalletType.wownero:
|
case WalletType.wownero:
|
||||||
return wowneroIcon;
|
return wowneroIcon;
|
||||||
|
case WalletType.zano:
|
||||||
|
return zanoIcon;
|
||||||
default:
|
default:
|
||||||
throw Exception('No icon for ${type.toString()}');
|
throw Exception('No icon for ${type.toString()}');
|
||||||
}
|
}
|
||||||
|
|
|
@ -131,6 +131,7 @@ class WalletListBodyState extends State<WalletListBody> {
|
||||||
final solanaIcon = Image.asset('assets/images/sol_icon.png', height: 24, width: 24);
|
final solanaIcon = Image.asset('assets/images/sol_icon.png', height: 24, width: 24);
|
||||||
final tronIcon = Image.asset('assets/images/trx_icon.png', height: 24, width: 24);
|
final tronIcon = Image.asset('assets/images/trx_icon.png', height: 24, width: 24);
|
||||||
final wowneroIcon = Image.asset('assets/images/wownero_icon.png', height: 24, width: 24);
|
final wowneroIcon = Image.asset('assets/images/wownero_icon.png', height: 24, width: 24);
|
||||||
|
final zanoIcon = Image.asset('assets/images/zano_icon.png', height: 24, width: 24);
|
||||||
final scrollController = ScrollController();
|
final scrollController = ScrollController();
|
||||||
final double tileHeight = 60;
|
final double tileHeight = 60;
|
||||||
Flushbar<void>? _progressBar;
|
Flushbar<void>? _progressBar;
|
||||||
|
|
|
@ -35,6 +35,7 @@ import 'package:cake_wallet/wallet_type_utils.dart';
|
||||||
import 'package:cake_wallet/wownero/wownero.dart';
|
import 'package:cake_wallet/wownero/wownero.dart';
|
||||||
import 'package:cw_core/node.dart';
|
import 'package:cw_core/node.dart';
|
||||||
import 'package:cw_core/set_app_secure_native.dart';
|
import 'package:cw_core/set_app_secure_native.dart';
|
||||||
|
import 'package:cake_wallet/zano/zano.dart';
|
||||||
import 'package:cw_core/transaction_priority.dart';
|
import 'package:cw_core/transaction_priority.dart';
|
||||||
import 'package:cw_core/utils/print_verbose.dart';
|
import 'package:cw_core/utils/print_verbose.dart';
|
||||||
import 'package:cw_core/wallet_type.dart';
|
import 'package:cw_core/wallet_type.dart';
|
||||||
|
@ -131,6 +132,7 @@ abstract class SettingsStoreBase with Store {
|
||||||
TransactionPriority? initialEthereumTransactionPriority,
|
TransactionPriority? initialEthereumTransactionPriority,
|
||||||
TransactionPriority? initialPolygonTransactionPriority,
|
TransactionPriority? initialPolygonTransactionPriority,
|
||||||
TransactionPriority? initialBitcoinCashTransactionPriority,
|
TransactionPriority? initialBitcoinCashTransactionPriority,
|
||||||
|
TransactionPriority? initialZanoTransactionPriority,
|
||||||
Country? initialCakePayCountry})
|
Country? initialCakePayCountry})
|
||||||
: nodes = ObservableMap<WalletType, Node>.of(nodes),
|
: nodes = ObservableMap<WalletType, Node>.of(nodes),
|
||||||
powNodes = ObservableMap<WalletType, Node>.of(powNodes),
|
powNodes = ObservableMap<WalletType, Node>.of(powNodes),
|
||||||
|
@ -218,6 +220,10 @@ abstract class SettingsStoreBase with Store {
|
||||||
selectedCakePayCountry = initialCakePayCountry;
|
selectedCakePayCountry = initialCakePayCountry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (initialZanoTransactionPriority != null) {
|
||||||
|
priority[WalletType.zano] = initialZanoTransactionPriority;
|
||||||
|
}
|
||||||
|
|
||||||
initializeTrocadorProviderStates();
|
initializeTrocadorProviderStates();
|
||||||
|
|
||||||
reaction(
|
reaction(
|
||||||
|
@ -267,6 +273,9 @@ abstract class SettingsStoreBase with Store {
|
||||||
case WalletType.polygon:
|
case WalletType.polygon:
|
||||||
key = PreferencesKey.polygonTransactionPriority;
|
key = PreferencesKey.polygonTransactionPriority;
|
||||||
break;
|
break;
|
||||||
|
case WalletType.zano:
|
||||||
|
key = PreferencesKey.zanoTransactionPriority;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
key = null;
|
key = null;
|
||||||
}
|
}
|
||||||
|
@ -870,6 +879,7 @@ abstract class SettingsStoreBase with Store {
|
||||||
TransactionPriority? polygonTransactionPriority;
|
TransactionPriority? polygonTransactionPriority;
|
||||||
TransactionPriority? bitcoinCashTransactionPriority;
|
TransactionPriority? bitcoinCashTransactionPriority;
|
||||||
TransactionPriority? wowneroTransactionPriority;
|
TransactionPriority? wowneroTransactionPriority;
|
||||||
|
TransactionPriority? zanoTransactionPriority;
|
||||||
|
|
||||||
if (sharedPreferences.getInt(PreferencesKey.havenTransactionPriority) != null) {
|
if (sharedPreferences.getInt(PreferencesKey.havenTransactionPriority) != null) {
|
||||||
havenTransactionPriority = monero?.deserializeMoneroTransactionPriority(
|
havenTransactionPriority = monero?.deserializeMoneroTransactionPriority(
|
||||||
|
@ -895,6 +905,10 @@ abstract class SettingsStoreBase with Store {
|
||||||
wowneroTransactionPriority = wownero?.deserializeWowneroTransactionPriority(
|
wowneroTransactionPriority = wownero?.deserializeWowneroTransactionPriority(
|
||||||
raw: sharedPreferences.getInt(PreferencesKey.wowneroTransactionPriority)!);
|
raw: sharedPreferences.getInt(PreferencesKey.wowneroTransactionPriority)!);
|
||||||
}
|
}
|
||||||
|
if (sharedPreferences.getInt(PreferencesKey.zanoTransactionPriority) != null) {
|
||||||
|
zanoTransactionPriority = monero?.deserializeMoneroTransactionPriority(
|
||||||
|
raw: sharedPreferences.getInt(PreferencesKey.zanoTransactionPriority)!);
|
||||||
|
}
|
||||||
|
|
||||||
moneroTransactionPriority ??= monero?.getDefaultTransactionPriority();
|
moneroTransactionPriority ??= monero?.getDefaultTransactionPriority();
|
||||||
bitcoinTransactionPriority ??= bitcoin?.getMediumTransactionPriority();
|
bitcoinTransactionPriority ??= bitcoin?.getMediumTransactionPriority();
|
||||||
|
@ -904,6 +918,7 @@ abstract class SettingsStoreBase with Store {
|
||||||
bitcoinCashTransactionPriority ??= bitcoinCash?.getDefaultTransactionPriority();
|
bitcoinCashTransactionPriority ??= bitcoinCash?.getDefaultTransactionPriority();
|
||||||
wowneroTransactionPriority ??= wownero?.getDefaultTransactionPriority();
|
wowneroTransactionPriority ??= wownero?.getDefaultTransactionPriority();
|
||||||
polygonTransactionPriority ??= polygon?.getDefaultTransactionPriority();
|
polygonTransactionPriority ??= polygon?.getDefaultTransactionPriority();
|
||||||
|
zanoTransactionPriority ??= zano?.getDefaultTransactionPriority();
|
||||||
|
|
||||||
final currentBalanceDisplayMode = BalanceDisplayMode.deserialize(
|
final currentBalanceDisplayMode = BalanceDisplayMode.deserialize(
|
||||||
raw: sharedPreferences.getInt(PreferencesKey.currentBalanceDisplayModeKey)!);
|
raw: sharedPreferences.getInt(PreferencesKey.currentBalanceDisplayModeKey)!);
|
||||||
|
@ -1002,6 +1017,8 @@ abstract class SettingsStoreBase with Store {
|
||||||
final solanaNodeId = sharedPreferences.getInt(PreferencesKey.currentSolanaNodeIdKey);
|
final solanaNodeId = sharedPreferences.getInt(PreferencesKey.currentSolanaNodeIdKey);
|
||||||
final tronNodeId = sharedPreferences.getInt(PreferencesKey.currentTronNodeIdKey);
|
final tronNodeId = sharedPreferences.getInt(PreferencesKey.currentTronNodeIdKey);
|
||||||
final wowneroNodeId = sharedPreferences.getInt(PreferencesKey.currentWowneroNodeIdKey);
|
final wowneroNodeId = sharedPreferences.getInt(PreferencesKey.currentWowneroNodeIdKey);
|
||||||
|
final zanoNodeId = sharedPreferences.getInt(PreferencesKey.currentZanoNodeIdKey);
|
||||||
|
|
||||||
final moneroNode = nodeSource.get(nodeId);
|
final moneroNode = nodeSource.get(nodeId);
|
||||||
final bitcoinElectrumServer = nodeSource.get(bitcoinElectrumServerId);
|
final bitcoinElectrumServer = nodeSource.get(bitcoinElectrumServerId);
|
||||||
final litecoinElectrumServer = nodeSource.get(litecoinElectrumServerId);
|
final litecoinElectrumServer = nodeSource.get(litecoinElectrumServerId);
|
||||||
|
@ -1014,6 +1031,7 @@ abstract class SettingsStoreBase with Store {
|
||||||
final solanaNode = nodeSource.get(solanaNodeId);
|
final solanaNode = nodeSource.get(solanaNodeId);
|
||||||
final tronNode = nodeSource.get(tronNodeId);
|
final tronNode = nodeSource.get(tronNodeId);
|
||||||
final wowneroNode = nodeSource.get(wowneroNodeId);
|
final wowneroNode = nodeSource.get(wowneroNodeId);
|
||||||
|
final zanoNode = nodeSource.get(zanoNodeId);
|
||||||
final packageInfo = await PackageInfo.fromPlatform();
|
final packageInfo = await PackageInfo.fromPlatform();
|
||||||
final deviceName = await _getDeviceName() ?? '';
|
final deviceName = await _getDeviceName() ?? '';
|
||||||
final shouldShowYatPopup = sharedPreferences.getBool(PreferencesKey.shouldShowYatPopup) ?? true;
|
final shouldShowYatPopup = sharedPreferences.getBool(PreferencesKey.shouldShowYatPopup) ?? true;
|
||||||
|
@ -1095,6 +1113,10 @@ abstract class SettingsStoreBase with Store {
|
||||||
nodes[WalletType.wownero] = wowneroNode;
|
nodes[WalletType.wownero] = wowneroNode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (zanoNode != null) {
|
||||||
|
nodes[WalletType.zano] = zanoNode;
|
||||||
|
}
|
||||||
|
|
||||||
final savedSyncMode = SyncMode.all.firstWhere((element) {
|
final savedSyncMode = SyncMode.all.firstWhere((element) {
|
||||||
return element.type.index == (sharedPreferences.getInt(PreferencesKey.syncModeKey) ?? 0);
|
return element.type.index == (sharedPreferences.getInt(PreferencesKey.syncModeKey) ?? 0);
|
||||||
});
|
});
|
||||||
|
@ -1255,6 +1277,7 @@ abstract class SettingsStoreBase with Store {
|
||||||
hasEnabledMwebBefore: hasEnabledMwebBefore,
|
hasEnabledMwebBefore: hasEnabledMwebBefore,
|
||||||
initialMoneroTransactionPriority: moneroTransactionPriority,
|
initialMoneroTransactionPriority: moneroTransactionPriority,
|
||||||
initialWowneroTransactionPriority: wowneroTransactionPriority,
|
initialWowneroTransactionPriority: wowneroTransactionPriority,
|
||||||
|
initialZanoTransactionPriority: zanoTransactionPriority,
|
||||||
initialBitcoinTransactionPriority: bitcoinTransactionPriority,
|
initialBitcoinTransactionPriority: bitcoinTransactionPriority,
|
||||||
initialHavenTransactionPriority: havenTransactionPriority,
|
initialHavenTransactionPriority: havenTransactionPriority,
|
||||||
initialLitecoinTransactionPriority: litecoinTransactionPriority,
|
initialLitecoinTransactionPriority: litecoinTransactionPriority,
|
||||||
|
@ -1329,6 +1352,10 @@ abstract class SettingsStoreBase with Store {
|
||||||
priority[WalletType.bitcoinCash] = bitcoinCash!.deserializeBitcoinCashTransactionPriority(
|
priority[WalletType.bitcoinCash] = bitcoinCash!.deserializeBitcoinCashTransactionPriority(
|
||||||
sharedPreferences.getInt(PreferencesKey.bitcoinCashTransactionPriority)!);
|
sharedPreferences.getInt(PreferencesKey.bitcoinCashTransactionPriority)!);
|
||||||
}
|
}
|
||||||
|
if (zano != null && sharedPreferences.getInt(PreferencesKey.zanoTransactionPriority) != null) {
|
||||||
|
priority[WalletType.zano] = zano!.deserializeMoneroTransactionPriority(
|
||||||
|
raw: sharedPreferences.getInt(PreferencesKey.zanoTransactionPriority)!);
|
||||||
|
}
|
||||||
|
|
||||||
final generateSubaddresses =
|
final generateSubaddresses =
|
||||||
sharedPreferences.getInt(PreferencesKey.autoGenerateSubaddressStatusKey);
|
sharedPreferences.getInt(PreferencesKey.autoGenerateSubaddressStatusKey);
|
||||||
|
@ -1437,6 +1464,7 @@ abstract class SettingsStoreBase with Store {
|
||||||
final solanaNodeId = sharedPreferences.getInt(PreferencesKey.currentSolanaNodeIdKey);
|
final solanaNodeId = sharedPreferences.getInt(PreferencesKey.currentSolanaNodeIdKey);
|
||||||
final tronNodeId = sharedPreferences.getInt(PreferencesKey.currentTronNodeIdKey);
|
final tronNodeId = sharedPreferences.getInt(PreferencesKey.currentTronNodeIdKey);
|
||||||
final wowneroNodeId = sharedPreferences.getInt(PreferencesKey.currentWowneroNodeIdKey);
|
final wowneroNodeId = sharedPreferences.getInt(PreferencesKey.currentWowneroNodeIdKey);
|
||||||
|
final zanoNodeId = sharedPreferences.getInt(PreferencesKey.currentZanoNodeIdKey);
|
||||||
final moneroNode = nodeSource.get(nodeId);
|
final moneroNode = nodeSource.get(nodeId);
|
||||||
final bitcoinElectrumServer = nodeSource.get(bitcoinElectrumServerId);
|
final bitcoinElectrumServer = nodeSource.get(bitcoinElectrumServerId);
|
||||||
final litecoinElectrumServer = nodeSource.get(litecoinElectrumServerId);
|
final litecoinElectrumServer = nodeSource.get(litecoinElectrumServerId);
|
||||||
|
@ -1448,6 +1476,8 @@ abstract class SettingsStoreBase with Store {
|
||||||
final solanaNode = nodeSource.get(solanaNodeId);
|
final solanaNode = nodeSource.get(solanaNodeId);
|
||||||
final tronNode = nodeSource.get(tronNodeId);
|
final tronNode = nodeSource.get(tronNodeId);
|
||||||
final wowneroNode = nodeSource.get(wowneroNodeId);
|
final wowneroNode = nodeSource.get(wowneroNodeId);
|
||||||
|
final zanoNode = nodeSource.get(zanoNodeId);
|
||||||
|
|
||||||
if (moneroNode != null) {
|
if (moneroNode != null) {
|
||||||
nodes[WalletType.monero] = moneroNode;
|
nodes[WalletType.monero] = moneroNode;
|
||||||
}
|
}
|
||||||
|
@ -1490,6 +1520,11 @@ abstract class SettingsStoreBase with Store {
|
||||||
|
|
||||||
if (wowneroNode != null) {
|
if (wowneroNode != null) {
|
||||||
nodes[WalletType.wownero] = wowneroNode;
|
nodes[WalletType.wownero] = wowneroNode;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (zanoNode != null) {
|
||||||
|
nodes[WalletType.zano] = zanoNode;
|
||||||
}
|
}
|
||||||
|
|
||||||
// MIGRATED:
|
// MIGRATED:
|
||||||
|
@ -1628,6 +1663,8 @@ abstract class SettingsStoreBase with Store {
|
||||||
case WalletType.wownero:
|
case WalletType.wownero:
|
||||||
await _sharedPreferences.setInt(PreferencesKey.currentWowneroNodeIdKey, node.key as int);
|
await _sharedPreferences.setInt(PreferencesKey.currentWowneroNodeIdKey, node.key as int);
|
||||||
break;
|
break;
|
||||||
|
case WalletType.zano:
|
||||||
|
await _sharedPreferences.setInt(PreferencesKey.currentZanoNodeIdKey, node.key as int);
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,6 +54,7 @@ abstract class AdvancedPrivacySettingsViewModelBase with Store {
|
||||||
case WalletType.wownero:
|
case WalletType.wownero:
|
||||||
case WalletType.none:
|
case WalletType.none:
|
||||||
case WalletType.haven:
|
case WalletType.haven:
|
||||||
|
case WalletType.zano:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -110,7 +110,8 @@ abstract class BalanceViewModelBase with Store {
|
||||||
bool get isHomeScreenSettingsEnabled =>
|
bool get isHomeScreenSettingsEnabled =>
|
||||||
isEVMCompatibleChain(wallet.type) ||
|
isEVMCompatibleChain(wallet.type) ||
|
||||||
wallet.type == WalletType.solana ||
|
wallet.type == WalletType.solana ||
|
||||||
wallet.type == WalletType.tron;
|
wallet.type == WalletType.tron ||
|
||||||
|
wallet.type == WalletType.zano;
|
||||||
|
|
||||||
@computed
|
@computed
|
||||||
bool get hasAccounts => wallet.type == WalletType.monero || wallet.type == WalletType.wownero;
|
bool get hasAccounts => wallet.type == WalletType.monero || wallet.type == WalletType.wownero;
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue