Merge branch 'dev'
This commit is contained in:
commit
694c682aba
|
@ -1,3 +1,9 @@
|
||||||
|
plugins {
|
||||||
|
id 'com.android.application'
|
||||||
|
id 'kotlin-android'
|
||||||
|
id "dev.flutter.flutter-gradle-plugin"
|
||||||
|
}
|
||||||
|
|
||||||
def localProperties = new Properties()
|
def localProperties = new Properties()
|
||||||
def localPropertiesFile = rootProject.file('local.properties')
|
def localPropertiesFile = rootProject.file('local.properties')
|
||||||
if (localPropertiesFile.exists()) {
|
if (localPropertiesFile.exists()) {
|
||||||
|
@ -6,11 +12,6 @@ if (localPropertiesFile.exists()) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
def flutterRoot = localProperties.getProperty('flutter.sdk')
|
|
||||||
if (flutterRoot == null) {
|
|
||||||
throw new RuntimeException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
|
|
||||||
}
|
|
||||||
|
|
||||||
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
|
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
|
||||||
if (flutterVersionCode == null) {
|
if (flutterVersionCode == null) {
|
||||||
flutterVersionCode = '1'
|
flutterVersionCode = '1'
|
||||||
|
@ -21,10 +22,6 @@ if (flutterVersionName == null) {
|
||||||
flutterVersionName = '1.0'
|
flutterVersionName = '1.0'
|
||||||
}
|
}
|
||||||
|
|
||||||
apply plugin: 'com.android.application'
|
|
||||||
apply plugin: 'kotlin-android'
|
|
||||||
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
|
|
||||||
|
|
||||||
def keystoreProperties = new Properties()
|
def keystoreProperties = new Properties()
|
||||||
def keystorePropertiesFile = rootProject.file('key.properties')
|
def keystorePropertiesFile = rootProject.file('key.properties')
|
||||||
if (keystorePropertiesFile.exists()) {
|
if (keystorePropertiesFile.exists()) {
|
||||||
|
@ -32,21 +29,30 @@ if (keystorePropertiesFile.exists()) {
|
||||||
}
|
}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdkVersion 33
|
namespace "gecko.axiomteam.fr"
|
||||||
|
compileSdk flutter.compileSdkVersion
|
||||||
|
ndkVersion flutter.ndkVersion
|
||||||
|
|
||||||
|
compileOptions {
|
||||||
|
sourceCompatibility JavaVersion.VERSION_1_8
|
||||||
|
targetCompatibility JavaVersion.VERSION_1_8
|
||||||
|
}
|
||||||
|
|
||||||
|
kotlinOptions {
|
||||||
|
jvmTarget = '1.8'
|
||||||
|
}
|
||||||
|
|
||||||
sourceSets {
|
sourceSets {
|
||||||
main.java.srcDirs += 'src/main/kotlin'
|
main.java.srcDirs += 'src/main/kotlin'
|
||||||
}
|
}
|
||||||
|
|
||||||
lintOptions {
|
|
||||||
disable 'InvalidPackage'
|
|
||||||
}
|
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
|
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
|
||||||
applicationId "gecko.axiomteam.fr"
|
applicationId "gecko.axiomteam.fr"
|
||||||
minSdkVersion 19
|
// You can update the following values to match your application needs.
|
||||||
targetSdkVersion 33
|
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
|
||||||
|
minSdkVersion flutter.minSdkVersion
|
||||||
|
targetSdkVersion flutter.targetSdkVersion
|
||||||
versionCode flutterVersionCode.toInteger()
|
versionCode flutterVersionCode.toInteger()
|
||||||
versionName flutterVersionName
|
versionName flutterVersionName
|
||||||
multiDexEnabled true
|
multiDexEnabled true
|
||||||
|
@ -65,7 +71,7 @@ android {
|
||||||
release {
|
release {
|
||||||
// TODO: Add your own signing config for the release build.
|
// TODO: Add your own signing config for the release build.
|
||||||
// Signing with the debug keys for now, so `flutter run --release` works.
|
// Signing with the debug keys for now, so `flutter run --release` works.
|
||||||
signingConfig signingConfigs.release //poka: comment this to build unsigned release, or set to signingConfigs.debug to sign with debug keys
|
signingConfig signingConfigs.release
|
||||||
|
|
||||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||||
}
|
}
|
||||||
|
@ -76,11 +82,9 @@ android {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
flutter {
|
flutter {
|
||||||
source '../..'
|
source '../..'
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {}
|
||||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
|
||||||
implementation 'androidx.work:work-runtime-ktx:2.7.0'
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,20 +1,7 @@
|
||||||
buildscript {
|
|
||||||
ext.kotlin_version = '1.7.10'
|
|
||||||
repositories {
|
|
||||||
google()
|
|
||||||
jcenter()
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
classpath 'com.android.tools.build:gradle:7.3.0'
|
|
||||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
allprojects {
|
allprojects {
|
||||||
repositories {
|
repositories {
|
||||||
google()
|
google()
|
||||||
jcenter()
|
mavenCentral()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,26 @@
|
||||||
include ':app'
|
pluginManagement {
|
||||||
|
def flutterSdkPath = {
|
||||||
|
def properties = new Properties()
|
||||||
|
file("local.properties").withInputStream { properties.load(it) }
|
||||||
|
def flutterSdkPath = properties.getProperty("flutter.sdk")
|
||||||
|
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
|
||||||
|
return flutterSdkPath
|
||||||
|
}
|
||||||
|
settings.ext.flutterSdkPath = flutterSdkPath()
|
||||||
|
|
||||||
def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
|
includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle")
|
||||||
def properties = new Properties()
|
|
||||||
|
|
||||||
assert localPropertiesFile.exists()
|
repositories {
|
||||||
localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
|
google()
|
||||||
|
mavenCentral()
|
||||||
|
gradlePluginPortal()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
def flutterSdkPath = properties.getProperty("flutter.sdk")
|
plugins {
|
||||||
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
|
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
|
||||||
apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
|
id "com.android.application" version "7.3.0" apply false
|
||||||
|
id "org.jetbrains.kotlin.android" version "1.7.10" apply false
|
||||||
|
}
|
||||||
|
|
||||||
|
include ":app"
|
||||||
|
|
|
@ -1,7 +1,15 @@
|
||||||
{
|
{
|
||||||
"ud": 1000,
|
"ud": 1000,
|
||||||
"first_ud": 6000,
|
"first_ud": null,
|
||||||
"first_ud_reeval": 600000,
|
"first_ud_reeval": null,
|
||||||
|
"genesis_parameters": {
|
||||||
|
"genesis_certs_expire_on": 1000,
|
||||||
|
"genesis_certs_min_received": 2,
|
||||||
|
"genesis_memberships_expire_on": 1000,
|
||||||
|
"genesis_smith_certs_expire_on": 1000,
|
||||||
|
"genesis_smith_certs_min_received": 2,
|
||||||
|
"genesis_smith_memberships_expire_on": 100000
|
||||||
|
},
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"babe_epoch_duration": 30,
|
"babe_epoch_duration": 30,
|
||||||
"cert_period": 15,
|
"cert_period": 15,
|
||||||
|
@ -11,6 +19,7 @@
|
||||||
"idty_confirm_period": 40,
|
"idty_confirm_period": 40,
|
||||||
"idty_creation_period": 50,
|
"idty_creation_period": 50,
|
||||||
"membership_period": 1000,
|
"membership_period": 1000,
|
||||||
|
"membership_renewal_period": 1000,
|
||||||
"pending_membership_period": 500,
|
"pending_membership_period": 500,
|
||||||
"ud_creation_period": 10,
|
"ud_creation_period": 10,
|
||||||
"ud_reeval_period": 50,
|
"ud_reeval_period": 50,
|
||||||
|
@ -19,6 +28,7 @@
|
||||||
"smith_cert_min_received_cert_to_issue_cert": 2,
|
"smith_cert_min_received_cert_to_issue_cert": 2,
|
||||||
"smith_cert_validity_period": 1000,
|
"smith_cert_validity_period": 1000,
|
||||||
"smith_membership_period": 1000,
|
"smith_membership_period": 1000,
|
||||||
|
"smith_inactivity_max_duration": 1000,
|
||||||
"smith_pending_membership_period": 500,
|
"smith_pending_membership_period": 500,
|
||||||
"smith_wot_first_cert_issuable_on": 4,
|
"smith_wot_first_cert_issuable_on": 4,
|
||||||
"smith_wot_min_cert_for_membership": 3,
|
"smith_wot_min_cert_for_membership": 3,
|
||||||
|
@ -30,7 +40,8 @@
|
||||||
{ "name": "test1" },
|
{ "name": "test1" },
|
||||||
{ "name": "test2" },
|
{ "name": "test2" },
|
||||||
{ "name": "test3" },
|
{ "name": "test3" },
|
||||||
{ "name": "test4" }
|
{ "name": "test4" },
|
||||||
|
{ "name": "Alice" }
|
||||||
],
|
],
|
||||||
"sudo_key": "5FeggKqw2AbnGZF9Y9WPM2QTgzENS3Hit94Ewgmzdg5a3LNa",
|
"sudo_key": "5FeggKqw2AbnGZF9Y9WPM2QTgzENS3Hit94Ewgmzdg5a3LNa",
|
||||||
"treasury_funder_address": "5FeggKqw2AbnGZF9Y9WPM2QTgzENS3Hit94Ewgmzdg5a3LNa",
|
"treasury_funder_address": "5FeggKqw2AbnGZF9Y9WPM2QTgzENS3Hit94Ewgmzdg5a3LNa",
|
||||||
|
|
|
@ -1,77 +1,126 @@
|
||||||
{
|
{
|
||||||
"initial_monetary_mass": 60100,
|
"initial_monetary_mass": 90100,
|
||||||
|
"current_block": {
|
||||||
|
"number": 0,
|
||||||
|
"medianTime": 1700000000
|
||||||
|
},
|
||||||
"identities": {
|
"identities": {
|
||||||
"test1": {
|
"test1": {
|
||||||
"index": 0,
|
"index": 7,
|
||||||
"balance": 10000,
|
"balance": 10000,
|
||||||
"membership_expire_on": 1705509948,
|
"revoked": false,
|
||||||
"next_cert_issuable_on": 1668347505,
|
"membership_expire_on": 2700000000,
|
||||||
|
"membership_revokes_on": 2700000001,
|
||||||
|
"next_cert_issuable_on": 0,
|
||||||
"certs_received": {
|
"certs_received": {
|
||||||
"test2": 1727758466,
|
"test2": 2700000000,
|
||||||
"test3": 1727758466,
|
"test3": 2700000000,
|
||||||
"test4": 1727758466
|
"test4": 2700000000
|
||||||
},
|
},
|
||||||
"owner_pubkey": "BgC76sdA6zxPSAMW6sZ1e3NEntLrkLT8DY3z2MEmJJgK"
|
"owner_pubkey": "BgC76sdA6zxPSAMW6sZ1e3NEntLrkLT8DY3z2MEmJJgK"
|
||||||
},
|
},
|
||||||
"test2": {
|
"test2": {
|
||||||
"index": 1,
|
"index": 1,
|
||||||
"balance": 10000,
|
"balance": 10000,
|
||||||
"membership_expire_on": 1705509948,
|
"revoked": false,
|
||||||
"next_cert_issuable_on": 1668347505,
|
"membership_expire_on": 2700000000,
|
||||||
|
"membership_revokes_on": 2700000001,
|
||||||
|
"next_cert_issuable_on": 0,
|
||||||
"certs_received": {
|
"certs_received": {
|
||||||
"test1": 1727758466,
|
"test1": 2700000000,
|
||||||
"test3": 1727758466,
|
"test3": 2700000000,
|
||||||
"test4": 1727758466
|
"test4": 2700000000
|
||||||
},
|
},
|
||||||
"owner_pubkey": "6xNFhRFHKyx9iZ3ucc3AFf5cjsWw5jH3p6EnFXw3D8T6"
|
"owner_pubkey": "6xNFhRFHKyx9iZ3ucc3AFf5cjsWw5jH3p6EnFXw3D8T6"
|
||||||
},
|
},
|
||||||
"test3": {
|
"test3": {
|
||||||
"index": 2,
|
"index": 2,
|
||||||
"balance": 10000,
|
"balance": 10000,
|
||||||
"membership_expire_on": 1705509948,
|
"revoked": false,
|
||||||
"next_cert_issuable_on": 1668347505,
|
"membership_expire_on": 2700000000,
|
||||||
|
"membership_revokes_on": 2700000001,
|
||||||
|
"next_cert_issuable_on": 0,
|
||||||
"certs_received": {
|
"certs_received": {
|
||||||
"test1": 1727758466,
|
"test1": 2700000000,
|
||||||
"test2": 1727758466,
|
"test2": 2700000000,
|
||||||
"test4": 1727758466
|
"test4": 2700000000
|
||||||
},
|
},
|
||||||
"owner_pubkey": "BpSSPEVE1yze9wrfjkU4wfnFa7WgKNysHxe3H9iT9fvx"
|
"owner_pubkey": "BpSSPEVE1yze9wrfjkU4wfnFa7WgKNysHxe3H9iT9fvx"
|
||||||
},
|
},
|
||||||
"test4": {
|
"test4": {
|
||||||
"index": 3,
|
"index": 3,
|
||||||
"balance": 10000,
|
"balance": 10000,
|
||||||
"membership_expire_on": 1705509948,
|
"revoked": false,
|
||||||
"next_cert_issuable_on": 1668347505,
|
"membership_expire_on": 2700000000,
|
||||||
|
"membership_revokes_on": 2700000001,
|
||||||
|
"next_cert_issuable_on": 0,
|
||||||
"certs_received": {
|
"certs_received": {
|
||||||
"test1": 1727758466,
|
"test1": 2700000000,
|
||||||
"test2": 1727758466,
|
"test2": 2700000000,
|
||||||
"test3": 1727758466
|
"test3": 2700000000
|
||||||
},
|
},
|
||||||
"owner_pubkey": "5LqbvutJtRTHvnforyndwPbkC4Kf5cJtdRQaDcHoMi8S"
|
"owner_pubkey": "5LqbvutJtRTHvnforyndwPbkC4Kf5cJtdRQaDcHoMi8S"
|
||||||
},
|
},
|
||||||
"test5": {
|
"test5": {
|
||||||
"index": 4,
|
"index": 4,
|
||||||
"balance": 10000,
|
"balance": 10000,
|
||||||
"membership_expire_on": 1705509948,
|
"revoked": false,
|
||||||
"next_cert_issuable_on": 1668347505,
|
"membership_expire_on": 2700000000,
|
||||||
|
"membership_revokes_on": 2700000001,
|
||||||
|
"next_cert_issuable_on": 0,
|
||||||
"certs_received": {
|
"certs_received": {
|
||||||
"test1": 1727758466,
|
"test1": 2700000000,
|
||||||
"test2": 1727758466,
|
"test2": 2700000000,
|
||||||
"test3": 1727758466
|
"test3": 2700000000
|
||||||
},
|
},
|
||||||
"owner_pubkey": "6FgzG8NwatTWHo7rM7sPP6P4Q95R2ZQNqYiHCs38RT21"
|
"owner_pubkey": "6FgzG8NwatTWHo7rM7sPP6P4Q95R2ZQNqYiHCs38RT21"
|
||||||
},
|
},
|
||||||
"testCesium1": {
|
"test6": {
|
||||||
"index": 5,
|
"index": 5,
|
||||||
"balance": 10000,
|
"balance": 10000,
|
||||||
"membership_expire_on": 1705509948,
|
"revoked": false,
|
||||||
"next_cert_issuable_on": 1668347505,
|
"membership_expire_on": 2700000000,
|
||||||
|
"membership_revokes_on": 2700000001,
|
||||||
|
"next_cert_issuable_on": 0,
|
||||||
"certs_received": {
|
"certs_received": {
|
||||||
"test1": 1727758466,
|
"test1": 2700000000
|
||||||
"test2": 1727758466,
|
},
|
||||||
"test3": 1727758466
|
"owner_pubkey": "FZ8URw5rPqpWegWnufpcBDkg6tMpc2JmNZVCuPA9g3nq"
|
||||||
|
},
|
||||||
|
"testCesium1": {
|
||||||
|
"index": 6,
|
||||||
|
"balance": 10000,
|
||||||
|
"revoked": false,
|
||||||
|
"membership_expire_on": 2700000000,
|
||||||
|
"membership_revokes_on": 2700000001,
|
||||||
|
"next_cert_issuable_on": 0,
|
||||||
|
"certs_received": {
|
||||||
|
"test1": 2700000000,
|
||||||
|
"test2": 2700000000,
|
||||||
|
"test3": 2700000000
|
||||||
},
|
},
|
||||||
"owner_pubkey": "DCovzCEnQm9GUWe6mr8u42JR1JAuoj3HbQUGdCkfTzSr"
|
"owner_pubkey": "DCovzCEnQm9GUWe6mr8u42JR1JAuoj3HbQUGdCkfTzSr"
|
||||||
|
},
|
||||||
|
"Alice": {
|
||||||
|
"index": 8,
|
||||||
|
"balance": 10000,
|
||||||
|
"revoked": false,
|
||||||
|
"membership_expire_on": 2700000000,
|
||||||
|
"membership_revokes_on": 2700000001,
|
||||||
|
"certs_received": {
|
||||||
|
"test1": 2700000000,
|
||||||
|
"test2": 2700000000,
|
||||||
|
"test3": 2700000000,
|
||||||
|
"test4": 2700000000,
|
||||||
|
"test5": 2700000000,
|
||||||
|
"test6": 2700000000,
|
||||||
|
"testCesium1": 2700000000
|
||||||
|
},
|
||||||
|
"owner_address": "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY",
|
||||||
|
"next_cert_issuable_on": 0
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"wallets": {
|
||||||
|
"BPKBoTrrLD1XWmpZdRsfDnDT1M6PBBvgzPxAKNdutVV2": 10000
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,7 @@ const cesiumPod = "https://g1.data.le-sou.org";
|
||||||
// String cesiumPod = "https://g1.data.e-is.pro";
|
// String cesiumPod = "https://g1.data.e-is.pro";
|
||||||
|
|
||||||
const datapodEndpoint = 'gdev-datapod.p2p.legal';
|
const datapodEndpoint = 'gdev-datapod.p2p.legal';
|
||||||
// const v2sDatapod = 'http://10.0.2.2:8080';
|
// const datapodEndpoint = '10.0.2.2:8080';
|
||||||
|
|
||||||
// Contexts
|
// Contexts
|
||||||
late BuildContext homeContext;
|
late BuildContext homeContext;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
const String updateProfileQ = r'''
|
const String updateProfileQ = r'''
|
||||||
mutation ($address: String!, $hash: String!, $signature: String!, $title: String, $description: String, $avatar: String, $geoloc: GeolocInput, $city: String, $socials: [SocialInput!]) {
|
mutation ($address: String!, $hash: String!, $signature: String!, $title: String, $description: String, $avatarBase64: String, $geoloc: GeolocInput, $city: String, $socials: [SocialInput!]) {
|
||||||
updateProfile(address: $address, hash: $hash, signature: $signature, title: $title, description: $description, avatarBase64: $avatar, geoloc: $geoloc, city: $city, socials: $socials) {
|
updateProfile(address: $address, hash: $hash, signature: $signature, title: $title, description: $description, avatarBase64: $avatarBase64, geoloc: $geoloc, city: $city, socials: $socials) {
|
||||||
message
|
message
|
||||||
success
|
success
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,15 @@ mutation ($addressOld: String!, $addressNew: String!, $hash: String!, $signature
|
||||||
}
|
}
|
||||||
''';
|
''';
|
||||||
|
|
||||||
|
const String addTransactionCommentQ = r'''
|
||||||
|
mutation ($id: String!, $address: String!, $hash: String!, $signature: String!, $comment: String!) {
|
||||||
|
addTransaction(id: $id, address: $address, hash: $hash, signature: $signature, comment: $comment) {
|
||||||
|
message
|
||||||
|
success
|
||||||
|
}
|
||||||
|
}
|
||||||
|
''';
|
||||||
|
|
||||||
const String getAvatarQ = r'''
|
const String getAvatarQ = r'''
|
||||||
query ($address: String!) {
|
query ($address: String!) {
|
||||||
profiles_by_pk(address: $address) {
|
profiles_by_pk(address: $address) {
|
||||||
|
|
|
@ -203,7 +203,7 @@ class DuniterIndexer with ChangeNotifier {
|
||||||
'name': name,
|
'name': name,
|
||||||
};
|
};
|
||||||
final result = await _execQuery(isIdtyExistQ, variables);
|
final result = await _execQuery(isIdtyExistQ, variables);
|
||||||
return result.data!['identity']?.isNotEmpty ?? false;
|
return result.data?['identity']?.isNotEmpty ?? false;
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<DateTime> getBlockStart() async {
|
Future<DateTime> getBlockStart() async {
|
||||||
|
|
|
@ -6,6 +6,7 @@ import 'dart:async';
|
||||||
import 'package:gecko/globals.dart';
|
import 'package:gecko/globals.dart';
|
||||||
import 'package:gecko/models/wallet_data.dart';
|
import 'package:gecko/models/wallet_data.dart';
|
||||||
import 'package:gecko/providers/substrate_sdk.dart';
|
import 'package:gecko/providers/substrate_sdk.dart';
|
||||||
|
import 'package:gecko/screens/myWallets/unlocking_wallet.dart';
|
||||||
import 'package:gecko/widgets/commons/common_elements.dart';
|
import 'package:gecko/widgets/commons/common_elements.dart';
|
||||||
import 'package:path_provider/path_provider.dart';
|
import 'package:path_provider/path_provider.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
@ -76,6 +77,20 @@ class MyWalletsProvider with ChangeNotifier {
|
||||||
return targetedWallet;
|
return targetedWallet;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<bool> askPinCode() async {
|
||||||
|
final defaultWallet = getDefaultWallet();
|
||||||
|
|
||||||
|
if (pinCode.isEmpty) {
|
||||||
|
await Navigator.push(
|
||||||
|
homeContext,
|
||||||
|
MaterialPageRoute(
|
||||||
|
builder: (homeContext) => UnlockingWallet(wallet: defaultWallet),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return pinCode.isNotEmpty;
|
||||||
|
}
|
||||||
|
|
||||||
WalletData? getWalletDataByAddress(String address) {
|
WalletData? getWalletDataByAddress(String address) {
|
||||||
WalletData? targetedWallet;
|
WalletData? targetedWallet;
|
||||||
|
|
||||||
|
|
|
@ -183,12 +183,12 @@ class SubstrateSdk with ChangeNotifier {
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<String> signDatapod(String document, String address) async {
|
Future<String> signDatapod(String document, String address) async {
|
||||||
final myWallets =
|
final myWalletProvider =
|
||||||
Provider.of<MyWalletsProvider>(homeContext, listen: false);
|
Provider.of<MyWalletsProvider>(homeContext, listen: false);
|
||||||
final messageToSign = Uint8List.fromList(document.codeUnits);
|
final messageToSign = Uint8List.fromList(document.codeUnits);
|
||||||
|
|
||||||
final signatureString =
|
final signatureString =
|
||||||
await _signMessage(messageToSign, address, myWallets.pinCode);
|
await _signMessage(messageToSign, address, myWalletProvider.pinCode);
|
||||||
final signatureInt = HEX.decode(signatureString.substring(2));
|
final signatureInt = HEX.decode(signatureString.substring(2));
|
||||||
final signature64 = base64Encode(signatureInt);
|
final signature64 = base64Encode(signatureInt);
|
||||||
|
|
||||||
|
@ -209,26 +209,27 @@ class SubstrateSdk with ChangeNotifier {
|
||||||
await _getStorage('identity.identityIndexOf.multi($jsonString)'));
|
await _getStorage('identity.identityIndexOf.multi($jsonString)'));
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<List<int>?> getCertsCounter(String address) async {
|
Future<List<int>> getCertsCounter(String address) async {
|
||||||
final idtyIndex = await _getIdentityIndexOf(address);
|
final idtyIndex = await _getIdentityIndexOf(address);
|
||||||
if (idtyIndex == null) {
|
if (idtyIndex == null) {
|
||||||
return null;
|
return [];
|
||||||
}
|
}
|
||||||
final certsReceiver =
|
final certsReceiver =
|
||||||
await _getStorage('cert.storageIdtyCertMeta($idtyIndex)') ?? [];
|
await _getStorage('cert.storageIdtyCertMeta($idtyIndex)') ?? [];
|
||||||
|
|
||||||
if (certsCounterCache[address] == null) {
|
|
||||||
certsCounterCache.putIfAbsent(address, () => []);
|
|
||||||
}
|
|
||||||
try {
|
try {
|
||||||
certsCounterCache.update(
|
certsCounterCache.update(
|
||||||
address,
|
address,
|
||||||
(value) => [
|
(value) => [
|
||||||
certsReceiver['receivedCount'] as int,
|
certsReceiver['receivedCount'] as int,
|
||||||
certsReceiver['issuedCount'] as int
|
certsReceiver['issuedCount'] as int
|
||||||
|
],
|
||||||
|
ifAbsent: () => [
|
||||||
|
certsReceiver['receivedCount'] as int,
|
||||||
|
certsReceiver['issuedCount'] as int
|
||||||
]);
|
]);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
// catching String to int error .. network error?
|
log.e(e);
|
||||||
}
|
}
|
||||||
return certsCounterCache[address]!;
|
return certsCounterCache[address]!;
|
||||||
}
|
}
|
||||||
|
@ -1059,7 +1060,7 @@ class SubstrateSdk with ChangeNotifier {
|
||||||
final toCerts = await getCertsCounter(destAddress);
|
final toCerts = await getCertsCounter(destAddress);
|
||||||
|
|
||||||
log.d(
|
log.d(
|
||||||
"debug toCert: ${toCerts?[0]} --- ${currencyParameters['minCertForMembership']!} --- $toIdtyStatus");
|
"debug toCert: ${toCerts[0]} --- ${currencyParameters['minCertForMembership']!} --- $toIdtyStatus");
|
||||||
|
|
||||||
if (toIdtyStatus == IdtyStatus.none) {
|
if (toIdtyStatus == IdtyStatus.none) {
|
||||||
txInfo = TxInfoData(
|
txInfo = TxInfoData(
|
||||||
|
@ -1070,7 +1071,7 @@ class SubstrateSdk with ChangeNotifier {
|
||||||
txOptions = [destAddress];
|
txOptions = [destAddress];
|
||||||
} else if (toIdtyStatus == IdtyStatus.validated ||
|
} else if (toIdtyStatus == IdtyStatus.validated ||
|
||||||
toIdtyStatus == IdtyStatus.confirmed) {
|
toIdtyStatus == IdtyStatus.confirmed) {
|
||||||
if (toCerts![0] >= currencyParameters['minCertForMembership']! - 1 &&
|
if (toCerts[0] >= currencyParameters['minCertForMembership']! - 1 &&
|
||||||
toIdtyStatus != IdtyStatus.validated) {
|
toIdtyStatus != IdtyStatus.validated) {
|
||||||
log.d('Batch cert and membership validation');
|
log.d('Batch cert and membership validation');
|
||||||
txInfo = TxInfoData(
|
txInfo = TxInfoData(
|
||||||
|
|
|
@ -5,6 +5,7 @@ import 'package:flutter/material.dart';
|
||||||
import 'package:gecko/globals.dart';
|
import 'package:gecko/globals.dart';
|
||||||
import 'package:gecko/models/queries_datapod.dart';
|
import 'package:gecko/models/queries_datapod.dart';
|
||||||
import 'package:gecko/models/scale_functions.dart';
|
import 'package:gecko/models/scale_functions.dart';
|
||||||
|
import 'package:gecko/providers/my_wallets.dart';
|
||||||
import 'package:gecko/providers/substrate_sdk.dart';
|
import 'package:gecko/providers/substrate_sdk.dart';
|
||||||
import 'package:graphql_flutter/graphql_flutter.dart';
|
import 'package:graphql_flutter/graphql_flutter.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
@ -13,6 +14,24 @@ import 'package:uuid/uuid.dart';
|
||||||
class V2sDatapodProvider with ChangeNotifier {
|
class V2sDatapodProvider with ChangeNotifier {
|
||||||
late GraphQLClient datapodClient;
|
late GraphQLClient datapodClient;
|
||||||
|
|
||||||
|
Future<Map<String, dynamic>> _setSignedVariables(
|
||||||
|
String address, Map<String, dynamic> messageToSign) async {
|
||||||
|
final myWalletProvider =
|
||||||
|
Provider.of<MyWalletsProvider>(homeContext, listen: false);
|
||||||
|
|
||||||
|
final sub = Provider.of<SubstrateSdk>(homeContext, listen: false);
|
||||||
|
final hashDocBytes = utf8.encode(jsonEncode(messageToSign));
|
||||||
|
final hashDoc = sha256.convert(hashDocBytes).toString().toUpperCase();
|
||||||
|
if (!await myWalletProvider.askPinCode()) return {};
|
||||||
|
final signature = await sub.signDatapod(hashDoc, address);
|
||||||
|
|
||||||
|
return <String, dynamic>{
|
||||||
|
...messageToSign,
|
||||||
|
'hash': hashDoc,
|
||||||
|
'signature': signature
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
Future<QueryResult> _execQuery(
|
Future<QueryResult> _execQuery(
|
||||||
String query, Map<String, dynamic> variables) async {
|
String query, Map<String, dynamic> variables) async {
|
||||||
final QueryOptions options =
|
final QueryOptions options =
|
||||||
|
@ -29,9 +48,7 @@ class V2sDatapodProvider with ChangeNotifier {
|
||||||
String? city,
|
String? city,
|
||||||
List<Map<String, String>>? socials,
|
List<Map<String, String>>? socials,
|
||||||
Map<String, double>? geoloc}) async {
|
Map<String, double>? geoloc}) async {
|
||||||
final sub = Provider.of<SubstrateSdk>(homeContext, listen: false);
|
final messageToSign = {
|
||||||
|
|
||||||
final messageToSign = jsonEncode({
|
|
||||||
'address': address,
|
'address': address,
|
||||||
'description': description,
|
'description': description,
|
||||||
'avatarBase64': avatar,
|
'avatarBase64': avatar,
|
||||||
|
@ -39,22 +56,10 @@ class V2sDatapodProvider with ChangeNotifier {
|
||||||
'title': title,
|
'title': title,
|
||||||
'city': city,
|
'city': city,
|
||||||
'socials': socials
|
'socials': socials
|
||||||
});
|
|
||||||
final hashDocBytes = utf8.encode(messageToSign);
|
|
||||||
final hashDoc = sha256.convert(hashDocBytes).toString().toUpperCase();
|
|
||||||
final signature = await sub.signDatapod(hashDoc, address);
|
|
||||||
|
|
||||||
final variables = <String, dynamic>{
|
|
||||||
'address': address,
|
|
||||||
'hash': hashDoc,
|
|
||||||
'signature': signature,
|
|
||||||
'title': title,
|
|
||||||
'description': description,
|
|
||||||
'avatar': avatar,
|
|
||||||
'city': city,
|
|
||||||
'socials': socials,
|
|
||||||
'geoloc': geoloc,
|
|
||||||
};
|
};
|
||||||
|
final variables = await _setSignedVariables(address, messageToSign);
|
||||||
|
if (variables.isEmpty) return false;
|
||||||
|
|
||||||
final result = await _execQuery(updateProfileQ, variables);
|
final result = await _execQuery(updateProfileQ, variables);
|
||||||
if (result.hasException) {
|
if (result.hasException) {
|
||||||
log.e(result.exception.toString());
|
log.e(result.exception.toString());
|
||||||
|
@ -65,18 +70,10 @@ class V2sDatapodProvider with ChangeNotifier {
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<bool> deleteProfile({required String address}) async {
|
Future<bool> deleteProfile({required String address}) async {
|
||||||
final sub = Provider.of<SubstrateSdk>(homeContext, listen: false);
|
final messageToSign = {'address': address};
|
||||||
|
final variables = await _setSignedVariables(address, messageToSign);
|
||||||
|
if (variables.isEmpty) return false;
|
||||||
|
|
||||||
final messageToSign = jsonEncode({'address': address});
|
|
||||||
final hashDocBytes = utf8.encode(messageToSign);
|
|
||||||
final hashDoc = sha256.convert(hashDocBytes).toString().toUpperCase();
|
|
||||||
final signature = await sub.signDatapod(hashDoc, address);
|
|
||||||
|
|
||||||
final variables = <String, dynamic>{
|
|
||||||
'address': address,
|
|
||||||
'hash': hashDoc,
|
|
||||||
'signature': signature
|
|
||||||
};
|
|
||||||
final result = await _execQuery(deleteProfileQ, variables);
|
final result = await _execQuery(deleteProfileQ, variables);
|
||||||
if (result.hasException) {
|
if (result.hasException) {
|
||||||
log.e(result.exception.toString());
|
log.e(result.exception.toString());
|
||||||
|
@ -88,20 +85,10 @@ class V2sDatapodProvider with ChangeNotifier {
|
||||||
|
|
||||||
Future<bool> migrateProfile(
|
Future<bool> migrateProfile(
|
||||||
{required String addressOld, required String addressNew}) async {
|
{required String addressOld, required String addressNew}) async {
|
||||||
final sub = Provider.of<SubstrateSdk>(homeContext, listen: false);
|
final messageToSign = {'addressOld': addressOld, 'addressNew': addressNew};
|
||||||
|
final variables = await _setSignedVariables(addressOld, messageToSign);
|
||||||
|
if (variables.isEmpty) return false;
|
||||||
|
|
||||||
final messageToSign =
|
|
||||||
jsonEncode({'addressOld': addressOld, 'addressNew': addressNew});
|
|
||||||
final hashDocBytes = utf8.encode(messageToSign);
|
|
||||||
final hashDoc = sha256.convert(hashDocBytes).toString().toUpperCase();
|
|
||||||
final signature = await sub.signDatapod(hashDoc, addressOld);
|
|
||||||
|
|
||||||
final variables = <String, dynamic>{
|
|
||||||
'addressOld': addressOld,
|
|
||||||
'addressNew': addressNew,
|
|
||||||
'hash': hashDoc,
|
|
||||||
'signature': signature
|
|
||||||
};
|
|
||||||
final result = await _execQuery(migrateProfileQ, variables);
|
final result = await _execQuery(migrateProfileQ, variables);
|
||||||
if (result.hasException) {
|
if (result.hasException) {
|
||||||
log.e(result.exception.toString());
|
log.e(result.exception.toString());
|
||||||
|
@ -111,6 +98,28 @@ class V2sDatapodProvider with ChangeNotifier {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<bool> addTransactionComment({
|
||||||
|
required String id,
|
||||||
|
required String issuer,
|
||||||
|
required String comment,
|
||||||
|
}) async {
|
||||||
|
final messageToSign = {
|
||||||
|
'id': id,
|
||||||
|
'address': issuer,
|
||||||
|
'comment': comment,
|
||||||
|
};
|
||||||
|
final variables = await _setSignedVariables(issuer, messageToSign);
|
||||||
|
if (variables.isEmpty) return false;
|
||||||
|
|
||||||
|
final result = await _execQuery(addTransactionCommentQ, variables);
|
||||||
|
if (result.hasException) {
|
||||||
|
log.e(result.exception.toString());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
log.d(result.data!['addTransaction']['message']);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
Future<bool> setAvatar(String address, String avatarPath) async {
|
Future<bool> setAvatar(String address, String avatarPath) async {
|
||||||
final avatarBytes = await File(avatarPath).readAsBytes();
|
final avatarBytes = await File(avatarPath).readAsBytes();
|
||||||
final avatarString = base64Encode(avatarBytes);
|
final avatarString = base64Encode(avatarBytes);
|
||||||
|
|
|
@ -13,7 +13,6 @@ import 'package:gecko/models/wallet_data.dart';
|
||||||
import 'package:gecko/providers/substrate_sdk.dart';
|
import 'package:gecko/providers/substrate_sdk.dart';
|
||||||
import 'package:gecko/providers/v2s_datapod.dart';
|
import 'package:gecko/providers/v2s_datapod.dart';
|
||||||
import 'package:gecko/widgets/commons/common_elements.dart';
|
import 'package:gecko/widgets/commons/common_elements.dart';
|
||||||
import 'package:gecko/screens/myWallets/unlocking_wallet.dart';
|
|
||||||
import 'package:gecko/screens/transaction_in_progress.dart';
|
import 'package:gecko/screens/transaction_in_progress.dart';
|
||||||
import 'package:image_picker/image_picker.dart';
|
import 'package:image_picker/image_picker.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
@ -67,11 +66,14 @@ class WalletOptionsProvider with ChangeNotifier {
|
||||||
password: myWalletProvider.pinCode);
|
password: myWalletProvider.pinCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
await walletBox.delete(wallet.key);
|
await walletBox.delete(wallet.address);
|
||||||
if (wallet.imageCustomPath != null) {
|
if (wallet.imageCustomPath != null) {
|
||||||
final avatarFile = File(wallet.imageCustomPath!);
|
final avatarFile = File(wallet.imageCustomPath!);
|
||||||
await avatarFile.delete();
|
if (await avatarFile.exists()) {
|
||||||
|
await avatarFile.delete();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
datapod.deleteProfile(address: wallet.address);
|
datapod.deleteProfile(address: wallet.address);
|
||||||
await sub.deleteAccounts([wallet.address]);
|
await sub.deleteAccounts([wallet.address]);
|
||||||
|
|
||||||
|
@ -221,21 +223,7 @@ class WalletOptionsProvider with ChangeNotifier {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
WalletData? defaultWallet =
|
if (!await myWalletProvider.askPinCode()) return;
|
||||||
myWalletProvider.getDefaultWallet();
|
|
||||||
|
|
||||||
if (myWalletProvider.pinCode == '') {
|
|
||||||
await Navigator.push(
|
|
||||||
context,
|
|
||||||
MaterialPageRoute(
|
|
||||||
builder: (homeContext) {
|
|
||||||
return UnlockingWallet(
|
|
||||||
wallet: defaultWallet);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
if (myWalletProvider.pinCode == '') return;
|
|
||||||
|
|
||||||
final wallet = myWalletProvider
|
final wallet = myWalletProvider
|
||||||
.getWalletDataByAddress(address.text);
|
.getWalletDataByAddress(address.text);
|
||||||
|
|
|
@ -82,8 +82,10 @@ class _HomeScreenState extends State<HomeScreen> {
|
||||||
'wss://$validIndexerEndpoint/v1/graphql',
|
'wss://$validIndexerEndpoint/v1/graphql',
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const headerWebsocket =
|
||||||
|
datapodEndpoint == '10.0.2.2:8080' ? 'ws' : 'wss';
|
||||||
final wsLinkDatapod = WebSocketLink(
|
final wsLinkDatapod = WebSocketLink(
|
||||||
'wss://$datapodEndpoint/v1/graphql',
|
'$headerWebsocket://$datapodEndpoint/v1/graphql',
|
||||||
);
|
);
|
||||||
|
|
||||||
duniterIndexer.indexerClient = GraphQLClient(
|
duniterIndexer.indexerClient = GraphQLClient(
|
||||||
|
|
|
@ -4,10 +4,8 @@ import 'package:easy_localization/easy_localization.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:durt/durt.dart';
|
import 'package:durt/durt.dart';
|
||||||
import 'package:gecko/globals.dart';
|
import 'package:gecko/globals.dart';
|
||||||
import 'package:gecko/models/wallet_data.dart';
|
|
||||||
import 'package:gecko/providers/my_wallets.dart';
|
import 'package:gecko/providers/my_wallets.dart';
|
||||||
import 'package:gecko/providers/substrate_sdk.dart';
|
import 'package:gecko/providers/substrate_sdk.dart';
|
||||||
import 'package:gecko/screens/myWallets/unlocking_wallet.dart';
|
|
||||||
import 'package:gecko/widgets/commons/top_appbar.dart';
|
import 'package:gecko/widgets/commons/top_appbar.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
|
@ -92,20 +90,9 @@ class _ChangePinScreenState extends State<ChangePinScreen> {
|
||||||
backgroundColor: Colors.green[400],
|
backgroundColor: Colors.green[400],
|
||||||
),
|
),
|
||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
WalletData defaultWallet =
|
final defaultWallet = myWalletProvider.getDefaultWallet();
|
||||||
myWalletProvider.getDefaultWallet();
|
|
||||||
|
|
||||||
if (myWalletProvider.pinCode == '') {
|
if (!await myWalletProvider.askPinCode()) return;
|
||||||
await Navigator.push(
|
|
||||||
context,
|
|
||||||
MaterialPageRoute(
|
|
||||||
builder: (homeContext) {
|
|
||||||
return UnlockingWallet(wallet: defaultWallet);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
if (myWalletProvider.pinCode == '') return;
|
|
||||||
|
|
||||||
await sub.changePassword(context, defaultWallet.address,
|
await sub.changePassword(context, defaultWallet.address,
|
||||||
widget.walletProvider.pinCode, newPin.text);
|
widget.walletProvider.pinCode, newPin.text);
|
||||||
|
|
|
@ -5,14 +5,12 @@ import 'package:flutter/material.dart';
|
||||||
import 'package:gecko/globals.dart';
|
import 'package:gecko/globals.dart';
|
||||||
import 'package:gecko/models/chest_data.dart';
|
import 'package:gecko/models/chest_data.dart';
|
||||||
import 'package:gecko/models/scale_functions.dart';
|
import 'package:gecko/models/scale_functions.dart';
|
||||||
import 'package:gecko/models/wallet_data.dart';
|
|
||||||
import 'package:gecko/models/widgets_keys.dart';
|
import 'package:gecko/models/widgets_keys.dart';
|
||||||
import 'package:gecko/providers/chest_provider.dart';
|
import 'package:gecko/providers/chest_provider.dart';
|
||||||
import 'package:gecko/providers/my_wallets.dart';
|
import 'package:gecko/providers/my_wallets.dart';
|
||||||
import 'package:gecko/providers/substrate_sdk.dart';
|
import 'package:gecko/providers/substrate_sdk.dart';
|
||||||
import 'package:gecko/screens/myWallets/custom_derivations.dart';
|
import 'package:gecko/screens/myWallets/custom_derivations.dart';
|
||||||
import 'package:gecko/screens/myWallets/show_seed.dart';
|
import 'package:gecko/screens/myWallets/show_seed.dart';
|
||||||
import 'package:gecko/screens/myWallets/unlocking_wallet.dart';
|
|
||||||
import 'package:gecko/widgets/bottom_app_bar.dart';
|
import 'package:gecko/widgets/bottom_app_bar.dart';
|
||||||
import 'package:gecko/widgets/commons/offline_info.dart';
|
import 'package:gecko/widgets/commons/offline_info.dart';
|
||||||
import 'package:gecko/widgets/commons/top_appbar.dart';
|
import 'package:gecko/widgets/commons/top_appbar.dart';
|
||||||
|
@ -44,18 +42,8 @@ class ChestOptions extends StatelessWidget {
|
||||||
onTap: () async {
|
onTap: () async {
|
||||||
final myWalletProvider =
|
final myWalletProvider =
|
||||||
Provider.of<MyWalletsProvider>(context, listen: false);
|
Provider.of<MyWalletsProvider>(context, listen: false);
|
||||||
WalletData? defaultWallet =
|
if (!await myWalletProvider.askPinCode()) return;
|
||||||
myWalletProvider.getDefaultWallet();
|
|
||||||
final String? pin = await Navigator.push(
|
|
||||||
context,
|
|
||||||
MaterialPageRoute(
|
|
||||||
builder: (homeContext) {
|
|
||||||
return UnlockingWallet(wallet: defaultWallet);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
);
|
|
||||||
|
|
||||||
if (pin == null) return;
|
|
||||||
Navigator.push(
|
Navigator.push(
|
||||||
context,
|
context,
|
||||||
MaterialPageRoute(builder: (context) {
|
MaterialPageRoute(builder: (context) {
|
||||||
|
|
|
@ -5,10 +5,8 @@ import 'package:gecko/globals.dart';
|
||||||
import 'package:gecko/models/scale_functions.dart';
|
import 'package:gecko/models/scale_functions.dart';
|
||||||
import 'package:gecko/models/widgets_keys.dart';
|
import 'package:gecko/models/widgets_keys.dart';
|
||||||
import 'package:gecko/providers/my_wallets.dart';
|
import 'package:gecko/providers/my_wallets.dart';
|
||||||
import 'package:gecko/models/wallet_data.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:gecko/screens/myWallets/restore_chest.dart';
|
import 'package:gecko/screens/myWallets/restore_chest.dart';
|
||||||
import 'package:gecko/screens/myWallets/unlocking_wallet.dart';
|
|
||||||
import 'package:carousel_slider/carousel_slider.dart';
|
import 'package:carousel_slider/carousel_slider.dart';
|
||||||
import 'package:gecko/screens/onBoarding/5.dart';
|
import 'package:gecko/screens/onBoarding/5.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
@ -110,25 +108,13 @@ class _ChooseChestState extends State<ChooseChest> {
|
||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
await configBox.put('currentChest', currentChest);
|
await configBox.put('currentChest', currentChest);
|
||||||
myWalletProvider.pinCode = '';
|
myWalletProvider.pinCode = '';
|
||||||
WalletData? defaultWallet =
|
if (!await myWalletProvider.askPinCode()) return;
|
||||||
myWalletProvider.getDefaultWallet();
|
|
||||||
myWalletProvider.reload();
|
|
||||||
|
|
||||||
await Navigator.push(
|
|
||||||
context,
|
|
||||||
MaterialPageRoute(
|
|
||||||
builder: (homeContext) {
|
|
||||||
return UnlockingWallet(wallet: defaultWallet);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
);
|
|
||||||
Navigator.popUntil(
|
Navigator.popUntil(
|
||||||
context,
|
context,
|
||||||
ModalRoute.withName('/'),
|
ModalRoute.withName('/'),
|
||||||
);
|
);
|
||||||
if (myWalletProvider.pinCode != '') {
|
Navigator.pushNamed(context, '/mywallets');
|
||||||
Navigator.pushNamed(context, '/mywallets');
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
child: Text(
|
child: Text(
|
||||||
'openThisChest'.tr(),
|
'openThisChest'.tr(),
|
||||||
|
|
|
@ -6,7 +6,6 @@ import 'package:flutter/material.dart';
|
||||||
import 'package:gecko/models/scale_functions.dart';
|
import 'package:gecko/models/scale_functions.dart';
|
||||||
import 'package:gecko/models/wallet_data.dart';
|
import 'package:gecko/models/wallet_data.dart';
|
||||||
import 'package:gecko/providers/my_wallets.dart';
|
import 'package:gecko/providers/my_wallets.dart';
|
||||||
import 'package:gecko/screens/myWallets/unlocking_wallet.dart';
|
|
||||||
import 'package:gecko/widgets/commons/top_appbar.dart';
|
import 'package:gecko/widgets/commons/top_appbar.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
|
@ -109,20 +108,7 @@ class _CustomDerivationState extends State<CustomDerivation> {
|
||||||
backgroundColor: orangeC,
|
backgroundColor: orangeC,
|
||||||
),
|
),
|
||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
WalletData? defaultWallet =
|
if (!await myWalletProvider.askPinCode()) return;
|
||||||
myWalletProvider.getDefaultWallet();
|
|
||||||
if (myWalletProvider.pinCode == '') {
|
|
||||||
await Navigator.push(
|
|
||||||
context,
|
|
||||||
MaterialPageRoute(
|
|
||||||
builder: (homeContext) {
|
|
||||||
return UnlockingWallet(wallet: defaultWallet);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (myWalletProvider.pinCode != '') return;
|
|
||||||
String newDerivationName =
|
String newDerivationName =
|
||||||
'${'wallet'.tr()} ${myWalletProvider.listWallets.last.number! + 2}';
|
'${'wallet'.tr()} ${myWalletProvider.listWallets.last.number! + 2}';
|
||||||
if (dropdownValue == 'root') {
|
if (dropdownValue == 'root') {
|
||||||
|
|
|
@ -4,13 +4,11 @@ import 'package:easy_localization/easy_localization.dart';
|
||||||
import 'package:gecko/globals.dart';
|
import 'package:gecko/globals.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:gecko/models/scale_functions.dart';
|
import 'package:gecko/models/scale_functions.dart';
|
||||||
import 'package:gecko/models/wallet_data.dart';
|
|
||||||
import 'package:gecko/models/widgets_keys.dart';
|
import 'package:gecko/models/widgets_keys.dart';
|
||||||
import 'package:gecko/providers/my_wallets.dart';
|
import 'package:gecko/providers/my_wallets.dart';
|
||||||
import 'package:gecko/providers/substrate_sdk.dart';
|
import 'package:gecko/providers/substrate_sdk.dart';
|
||||||
import 'package:gecko/widgets/commons/common_elements.dart';
|
import 'package:gecko/widgets/commons/common_elements.dart';
|
||||||
import 'package:gecko/screens/myWallets/migrate_identity.dart';
|
import 'package:gecko/screens/myWallets/migrate_identity.dart';
|
||||||
import 'package:gecko/screens/myWallets/unlocking_wallet.dart';
|
|
||||||
import 'package:gecko/screens/transaction_in_progress.dart';
|
import 'package:gecko/screens/transaction_in_progress.dart';
|
||||||
import 'package:gecko/widgets/commons/top_appbar.dart';
|
import 'package:gecko/widgets/commons/top_appbar.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
@ -113,20 +111,7 @@ class ManageMembership extends StatelessWidget {
|
||||||
Provider.of<MyWalletsProvider>(context, listen: false);
|
Provider.of<MyWalletsProvider>(context, listen: false);
|
||||||
final sub = Provider.of<SubstrateSdk>(context, listen: false);
|
final sub = Provider.of<SubstrateSdk>(context, listen: false);
|
||||||
|
|
||||||
WalletData? defaultWallet = myWalletProvider.getDefaultWallet();
|
if (!await myWalletProvider.askPinCode()) return;
|
||||||
String? pin;
|
|
||||||
if (myWalletProvider.pinCode == '') {
|
|
||||||
pin = await Navigator.push(
|
|
||||||
context,
|
|
||||||
MaterialPageRoute(
|
|
||||||
builder: (homeContext) {
|
|
||||||
return UnlockingWallet(wallet: defaultWallet);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pin == null || myWalletProvider.pinCode == '') return;
|
|
||||||
|
|
||||||
final transactionId =
|
final transactionId =
|
||||||
await sub.revokeIdentity(address, myWalletProvider.pinCode);
|
await sub.revokeIdentity(address, myWalletProvider.pinCode);
|
||||||
|
|
|
@ -6,7 +6,6 @@ import 'package:gecko/globals.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:gecko/models/migrate_wallet_checks.dart';
|
import 'package:gecko/models/migrate_wallet_checks.dart';
|
||||||
import 'package:gecko/models/scale_functions.dart';
|
import 'package:gecko/models/scale_functions.dart';
|
||||||
import 'package:gecko/models/wallet_data.dart';
|
|
||||||
import 'package:gecko/models/widgets_keys.dart';
|
import 'package:gecko/models/widgets_keys.dart';
|
||||||
import 'package:gecko/providers/duniter_indexer.dart';
|
import 'package:gecko/providers/duniter_indexer.dart';
|
||||||
import 'package:gecko/providers/generate_wallets.dart';
|
import 'package:gecko/providers/generate_wallets.dart';
|
||||||
|
@ -14,7 +13,6 @@ import 'package:gecko/providers/my_wallets.dart';
|
||||||
import 'package:gecko/providers/substrate_sdk.dart';
|
import 'package:gecko/providers/substrate_sdk.dart';
|
||||||
import 'package:gecko/providers/wallet_options.dart';
|
import 'package:gecko/providers/wallet_options.dart';
|
||||||
import 'package:gecko/providers/wallets_profiles.dart';
|
import 'package:gecko/providers/wallets_profiles.dart';
|
||||||
import 'package:gecko/screens/myWallets/unlocking_wallet.dart';
|
|
||||||
import 'package:gecko/screens/transaction_in_progress.dart';
|
import 'package:gecko/screens/transaction_in_progress.dart';
|
||||||
import 'package:gecko/widgets/commons/top_appbar.dart';
|
import 'package:gecko/widgets/commons/top_appbar.dart';
|
||||||
import 'package:polkawallet_sdk/api/apiKeyring.dart';
|
import 'package:polkawallet_sdk/api/apiKeyring.dart';
|
||||||
|
@ -189,21 +187,7 @@ class MigrateIdentityScreen extends StatelessWidget {
|
||||||
),
|
),
|
||||||
onPressed: statusData.canValidate && mnemonicIsValid
|
onPressed: statusData.canValidate && mnemonicIsValid
|
||||||
? () async {
|
? () async {
|
||||||
WalletData? defaultWallet =
|
if (!await myWalletProvider.askPinCode()) return;
|
||||||
myWalletProvider.getDefaultWallet();
|
|
||||||
|
|
||||||
String? pin;
|
|
||||||
if (myWalletProvider.pinCode == '') {
|
|
||||||
pin = await Navigator.push(
|
|
||||||
context,
|
|
||||||
MaterialPageRoute(
|
|
||||||
builder: (homeContext) {
|
|
||||||
return UnlockingWallet(wallet: defaultWallet);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
if (myWalletProvider.pinCode == '') return;
|
|
||||||
|
|
||||||
await sub.importAccount(
|
await sub.importAccount(
|
||||||
mnemonic: newMnemonicSentence.text,
|
mnemonic: newMnemonicSentence.text,
|
||||||
|
@ -215,7 +199,7 @@ class MigrateIdentityScreen extends StatelessWidget {
|
||||||
final transactionId = await sub.migrateIdentity(
|
final transactionId = await sub.migrateIdentity(
|
||||||
fromAddress: fromAddress,
|
fromAddress: fromAddress,
|
||||||
destAddress: newWalletAddress.text,
|
destAddress: newWalletAddress.text,
|
||||||
fromPassword: pin ?? myWalletProvider.pinCode,
|
fromPassword: myWalletProvider.pinCode,
|
||||||
destPassword: 'password',
|
destPassword: 'password',
|
||||||
withBalance: true,
|
withBalance: true,
|
||||||
fromBalance: statusData.balance);
|
fromBalance: statusData.balance);
|
||||||
|
|
|
@ -327,6 +327,9 @@ class WalletOptions extends StatelessWidget {
|
||||||
initialData: const [IdtyStatus.unknown],
|
initialData: const [IdtyStatus.unknown],
|
||||||
builder:
|
builder:
|
||||||
(BuildContext context, AsyncSnapshot<List<IdtyStatus>> snapshot) {
|
(BuildContext context, AsyncSnapshot<List<IdtyStatus>> snapshot) {
|
||||||
|
if (!snapshot.hasData || snapshot.hasError) {
|
||||||
|
return const SizedBox.shrink();
|
||||||
|
}
|
||||||
if (snapshot.data!.first == IdtyStatus.created) {
|
if (snapshot.data!.first == IdtyStatus.created) {
|
||||||
return Column(children: [
|
return Column(children: [
|
||||||
ScaledSizedBox(
|
ScaledSizedBox(
|
||||||
|
@ -526,7 +529,8 @@ class WalletOptions extends StatelessWidget {
|
||||||
future: sub.hasAccountConsumers(wallet.address),
|
future: sub.hasAccountConsumers(wallet.address),
|
||||||
builder: (BuildContext context, AsyncSnapshot<bool> hasConsumers) {
|
builder: (BuildContext context, AsyncSnapshot<bool> hasConsumers) {
|
||||||
if (hasConsumers.connectionState != ConnectionState.done ||
|
if (hasConsumers.connectionState != ConnectionState.done ||
|
||||||
hasConsumers.hasError) {
|
hasConsumers.hasError ||
|
||||||
|
!hasConsumers.hasData) {
|
||||||
return const Text('');
|
return const Text('');
|
||||||
}
|
}
|
||||||
final double balance =
|
final double balance =
|
||||||
|
|
|
@ -18,8 +18,6 @@ import 'package:gecko/widgets/commons/offline_info.dart';
|
||||||
import 'package:gecko/widgets/commons/top_appbar.dart';
|
import 'package:gecko/widgets/commons/top_appbar.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
AsyncSnapshot<List>? mnemoList;
|
|
||||||
|
|
||||||
class OnboardingStepFive extends StatefulWidget {
|
class OnboardingStepFive extends StatefulWidget {
|
||||||
const OnboardingStepFive({Key? key, this.skipIntro = false})
|
const OnboardingStepFive({Key? key, this.skipIntro = false})
|
||||||
: super(key: key);
|
: super(key: key);
|
||||||
|
@ -155,35 +153,35 @@ Widget sentanceArray(BuildContext context) {
|
||||||
padding: EdgeInsets.all(scaleSize(11)),
|
padding: EdgeInsets.all(scaleSize(11)),
|
||||||
child: FutureBuilder(
|
child: FutureBuilder(
|
||||||
future: generateWalletProvider.generateWordList(context),
|
future: generateWalletProvider.generateWordList(context),
|
||||||
builder: (BuildContext context, AsyncSnapshot<List> data) {
|
builder: (BuildContext context, AsyncSnapshot<List> mnemoListData) {
|
||||||
if (!data.hasData) {
|
if (!mnemoListData.hasData) {
|
||||||
return const Text('');
|
return const Text('');
|
||||||
} else {
|
} else {
|
||||||
mnemoList = data;
|
final mnemoList = mnemoListData.data!;
|
||||||
return Column(
|
return Column(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
mainAxisSize: MainAxisSize.max,
|
mainAxisSize: MainAxisSize.max,
|
||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
Row(children: <Widget>[
|
Row(children: <Widget>[
|
||||||
arrayCell(data.data![0]),
|
arrayCell(mnemoList[0]),
|
||||||
arrayCell(data.data![1]),
|
arrayCell(mnemoList[1]),
|
||||||
arrayCell(data.data![2]),
|
arrayCell(mnemoList[2]),
|
||||||
arrayCell(data.data![3]),
|
arrayCell(mnemoList[3]),
|
||||||
]),
|
]),
|
||||||
ScaledSizedBox(height: 12),
|
ScaledSizedBox(height: 12),
|
||||||
Row(children: <Widget>[
|
Row(children: <Widget>[
|
||||||
arrayCell(data.data![4]),
|
arrayCell(mnemoList[4]),
|
||||||
arrayCell(data.data![5]),
|
arrayCell(mnemoList[5]),
|
||||||
arrayCell(data.data![6]),
|
arrayCell(mnemoList[6]),
|
||||||
arrayCell(data.data![7]),
|
arrayCell(mnemoList[7]),
|
||||||
]),
|
]),
|
||||||
ScaledSizedBox(height: 12),
|
ScaledSizedBox(height: 12),
|
||||||
Row(children: <Widget>[
|
Row(children: <Widget>[
|
||||||
arrayCell(data.data![8]),
|
arrayCell(mnemoList[8]),
|
||||||
arrayCell(data.data![9]),
|
arrayCell(mnemoList[9]),
|
||||||
arrayCell(data.data![10]),
|
arrayCell(mnemoList[10]),
|
||||||
arrayCell(data.data![11]),
|
arrayCell(mnemoList[11]),
|
||||||
]),
|
]),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,7 +34,7 @@ class _SearchScreenState extends State<SearchScreen> {
|
||||||
|
|
||||||
// Function to check clipboard and update if necessary
|
// Function to check clipboard and update if necessary
|
||||||
Future<void> checkAndUpdateClipboard() async {
|
Future<void> checkAndUpdateClipboard() async {
|
||||||
var clipboardData = await Clipboard.getData(Clipboard.kTextPlain);
|
final clipboardData = await Clipboard.getData(Clipboard.kTextPlain);
|
||||||
if (clipboardData?.text != null && clipboardData!.text != pastedAddress) {
|
if (clipboardData?.text != null && clipboardData!.text != pastedAddress) {
|
||||||
pastedAddress = clipboardData.text ?? '';
|
pastedAddress = clipboardData.text ?? '';
|
||||||
canPasteAddress = await isAddress(pastedAddress);
|
canPasteAddress = await isAddress(pastedAddress);
|
||||||
|
|
|
@ -6,6 +6,7 @@ import 'package:gecko/models/widgets_keys.dart';
|
||||||
import 'package:gecko/providers/my_wallets.dart';
|
import 'package:gecko/providers/my_wallets.dart';
|
||||||
import 'package:gecko/providers/substrate_sdk.dart';
|
import 'package:gecko/providers/substrate_sdk.dart';
|
||||||
import 'package:gecko/providers/wallets_profiles.dart';
|
import 'package:gecko/providers/wallets_profiles.dart';
|
||||||
|
import 'package:gecko/widgets/commons/loading.dart';
|
||||||
import 'package:gecko/widgets/transaction_status.dart';
|
import 'package:gecko/widgets/transaction_status.dart';
|
||||||
import 'package:gecko/widgets/transaction_status_icon.dart';
|
import 'package:gecko/widgets/transaction_status_icon.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
@ -36,7 +37,7 @@ class _TransactionInProgressState extends State<TransactionInProgress> {
|
||||||
late String toUsernameFormat;
|
late String toUsernameFormat;
|
||||||
late String amount;
|
late String amount;
|
||||||
late bool isUdUnit;
|
late bool isUdUnit;
|
||||||
late TransactionContent txContent;
|
TransactionContent? txContent;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
|
@ -59,33 +60,49 @@ class _TransactionInProgressState extends State<TransactionInProgress> {
|
||||||
|
|
||||||
amount = walletProfiles.payAmount.text;
|
amount = walletProfiles.payAmount.text;
|
||||||
isUdUnit = configBox.get('isUdUnit') ?? false;
|
isUdUnit = configBox.get('isUdUnit') ?? false;
|
||||||
|
waitForTransactionStatus();
|
||||||
super.initState();
|
super.initState();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void waitForTransactionStatus() async {
|
||||||
|
final sub = Provider.of<SubstrateSdk>(context, listen: false);
|
||||||
|
while (!sub.transactionStatus.containsKey(widget.transactionId)) {
|
||||||
|
await Future.delayed(const Duration(seconds: 2));
|
||||||
|
}
|
||||||
|
|
||||||
|
setState(() {
|
||||||
|
txContent = sub.transactionStatus[widget.transactionId]!;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final sub = Provider.of<SubstrateSdk>(context, listen: true);
|
final sub = Provider.of<SubstrateSdk>(context, listen: true);
|
||||||
|
|
||||||
|
if (txContent == null) {
|
||||||
|
return const Center(child: Loading());
|
||||||
|
}
|
||||||
|
|
||||||
if (sub.transactionStatus.containsKey(widget.transactionId)) {
|
if (sub.transactionStatus.containsKey(widget.transactionId)) {
|
||||||
txContent = sub.transactionStatus[widget.transactionId]!;
|
txContent = sub.transactionStatus[widget.transactionId]!;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (txContent.status == TransactionStatus.success) {
|
if (txContent!.status == TransactionStatus.success) {
|
||||||
resultText = 'extrinsicValidated'
|
resultText = 'extrinsicValidated'
|
||||||
.tr(args: [actionMap[widget.transType] ?? 'strangeTransaction'.tr()]);
|
.tr(args: [actionMap[widget.transType] ?? 'strangeTransaction'.tr()]);
|
||||||
} else if (txContent.status == TransactionStatus.failed) {
|
} else if (txContent!.status == TransactionStatus.failed) {
|
||||||
resultText = errorTransactionMap[txContent.error] ?? txContent.error!;
|
resultText = errorTransactionMap[txContent!.error] ?? txContent!.error!;
|
||||||
} else {
|
} else {
|
||||||
resultText = statusStatusMap[txContent.status] ??
|
resultText = statusStatusMap[txContent!.status] ??
|
||||||
'Unknown status: ${txContent.status}';
|
'Unknown status: ${txContent!.status}';
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget buildTransactionStatus() {
|
Widget buildTransactionStatus() {
|
||||||
return Column(
|
return Column(
|
||||||
children: [
|
children: [
|
||||||
TransactionStatusIcon(txContent.status),
|
TransactionStatusIcon(txContent!.status),
|
||||||
ScaledSizedBox(height: 7),
|
ScaledSizedBox(height: 7),
|
||||||
if (txContent.status != TransactionStatus.none)
|
if (txContent!.status != TransactionStatus.none)
|
||||||
Text(
|
Text(
|
||||||
resultText,
|
resultText,
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
|
|
|
@ -152,13 +152,14 @@ class WalletViewScreen extends StatelessWidget {
|
||||||
future: sub.certState(defaultWallet.address, address),
|
future: sub.certState(defaultWallet.address, address),
|
||||||
builder: (context, AsyncSnapshot<Map<String, int>> snapshot) {
|
builder: (context, AsyncSnapshot<Map<String, int>> snapshot) {
|
||||||
if (snapshot.data == null) return const SizedBox.shrink();
|
if (snapshot.data == null) return const SizedBox.shrink();
|
||||||
|
final certStateData = snapshot.data!;
|
||||||
String duration = '';
|
String duration = '';
|
||||||
|
|
||||||
if (snapshot.data!['certDelay'] != null ||
|
if (certStateData['certDelay'] != null ||
|
||||||
snapshot.data!['certRenewable'] != null) {
|
certStateData['certRenewable'] != null) {
|
||||||
final Duration durationSeconds = Duration(
|
final Duration durationSeconds = Duration(
|
||||||
seconds: snapshot.data!['certDelay'] ??
|
seconds: certStateData['certDelay'] ??
|
||||||
snapshot.data!['certRenewable']!);
|
certStateData['certRenewable']!);
|
||||||
final seconds = durationSeconds.inSeconds;
|
final seconds = durationSeconds.inSeconds;
|
||||||
final minutes = durationSeconds.inMinutes;
|
final minutes = durationSeconds.inMinutes;
|
||||||
|
|
||||||
|
@ -186,12 +187,12 @@ class WalletViewScreen extends StatelessWidget {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final toStatus = snapshot.data!['toStatus'];
|
final toStatus = certStateData['toStatus'];
|
||||||
|
|
||||||
return Visibility(
|
return Visibility(
|
||||||
visible: (snapshot.data != {}),
|
visible: (snapshot.data != {}),
|
||||||
child: Column(children: <Widget>[
|
child: Column(children: <Widget>[
|
||||||
if (snapshot.data!['canCert'] != null ||
|
if (certStateData['canCert'] != null ||
|
||||||
duration == 'seconds'.tr(args: ['0']))
|
duration == 'seconds'.tr(args: ['0']))
|
||||||
Column(children: <Widget>[
|
Column(children: <Widget>[
|
||||||
ScaledSizedBox(
|
ScaledSizedBox(
|
||||||
|
@ -273,10 +274,10 @@ class WalletViewScreen extends StatelessWidget {
|
||||||
])
|
])
|
||||||
else if (toStatus == 1)
|
else if (toStatus == 1)
|
||||||
waitToCert('mustConfirmHisIdentity', duration)
|
waitToCert('mustConfirmHisIdentity', duration)
|
||||||
else if (snapshot.data!['certRenewable'] != null &&
|
else if (certStateData['certRenewable'] != null &&
|
||||||
duration != 'seconds'.tr(args: ['0']))
|
duration != 'seconds'.tr(args: ['0']))
|
||||||
waitToCert('canRenewCertInX', duration)
|
waitToCert('canRenewCertInX', duration)
|
||||||
else if (snapshot.data!['certDelay'] != null)
|
else if (certStateData['certDelay'] != null)
|
||||||
waitToCert('mustWaitXBeforeCertify', duration)
|
waitToCert('mustWaitXBeforeCertify', duration)
|
||||||
]),
|
]),
|
||||||
);
|
);
|
||||||
|
|
|
@ -10,62 +10,57 @@ class Balance extends StatelessWidget {
|
||||||
{Key? key,
|
{Key? key,
|
||||||
required this.address,
|
required this.address,
|
||||||
required this.size,
|
required this.size,
|
||||||
this.color = Colors.black,
|
this.color = Colors.black})
|
||||||
this.loadingColor = const Color(0xffd07316)})
|
|
||||||
: super(key: key);
|
: super(key: key);
|
||||||
final String address;
|
final String address;
|
||||||
final double size;
|
final double size;
|
||||||
final Color color;
|
final Color color;
|
||||||
final Color loadingColor;
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final walletOptions =
|
final walletOptions =
|
||||||
Provider.of<WalletOptionsProvider>(context, listen: false);
|
Provider.of<WalletOptionsProvider>(context, listen: false);
|
||||||
return Consumer<SubstrateSdk>(builder: (context, sdk, _) {
|
return Consumer<SubstrateSdk>(builder: (context, sdk, _) {
|
||||||
return FutureBuilder(
|
return ScaledSizedBox(
|
||||||
future: sdk.getBalance(address),
|
height: size * 1.4,
|
||||||
builder: (BuildContext context,
|
child: FutureBuilder(
|
||||||
AsyncSnapshot<Map<String, double>> globalBalance) {
|
future: sdk.getBalance(address),
|
||||||
if (globalBalance.connectionState != ConnectionState.done ||
|
builder: (BuildContext context,
|
||||||
globalBalance.hasError) {
|
AsyncSnapshot<Map<String, double>> globalBalance) {
|
||||||
if (walletOptions.balanceCache[address] != null &&
|
if (globalBalance.connectionState != ConnectionState.done ||
|
||||||
walletOptions.balanceCache[address] != -1) {
|
globalBalance.hasError ||
|
||||||
|
!globalBalance.hasData) {
|
||||||
|
if (walletOptions.balanceCache[address] != null &&
|
||||||
|
walletOptions.balanceCache[address] != -1) {
|
||||||
|
return Row(children: [
|
||||||
|
Text(walletOptions.balanceCache[address]!.toString(),
|
||||||
|
style: scaledTextStyle(fontSize: size, color: color)),
|
||||||
|
ScaledSizedBox(width: 5),
|
||||||
|
UdUnitDisplay(size: scaleSize(size), color: color),
|
||||||
|
]);
|
||||||
|
} else {
|
||||||
|
return const SizedBox.shrink();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
walletOptions.balanceCache[address] =
|
||||||
|
globalBalance.data!['transferableBalance']!;
|
||||||
|
if (walletOptions.balanceCache[address] != -1) {
|
||||||
return Row(children: [
|
return Row(children: [
|
||||||
Text(walletOptions.balanceCache[address]!.toString(),
|
Text(
|
||||||
style: scaledTextStyle(fontSize: size, color: color)),
|
walletOptions.balanceCache[address]!.toString(),
|
||||||
|
style: scaledTextStyle(
|
||||||
|
fontSize: size,
|
||||||
|
color: color,
|
||||||
|
),
|
||||||
|
),
|
||||||
ScaledSizedBox(width: 5),
|
ScaledSizedBox(width: 5),
|
||||||
UdUnitDisplay(size: scaleSize(size), color: color),
|
UdUnitDisplay(size: scaleSize(size), color: color),
|
||||||
]);
|
]);
|
||||||
} else {
|
} else {
|
||||||
return ScaledSizedBox(
|
return const Text('');
|
||||||
height: 15,
|
|
||||||
width: 15,
|
|
||||||
child: CircularProgressIndicator(
|
|
||||||
color: loadingColor,
|
|
||||||
strokeWidth: 2,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}),
|
||||||
walletOptions.balanceCache[address] =
|
);
|
||||||
globalBalance.data!['transferableBalance']!;
|
|
||||||
if (walletOptions.balanceCache[address] != -1) {
|
|
||||||
return Row(children: [
|
|
||||||
Text(
|
|
||||||
walletOptions.balanceCache[address]!.toString(),
|
|
||||||
style: scaledTextStyle(
|
|
||||||
fontSize: size,
|
|
||||||
color: color,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
ScaledSizedBox(width: 5),
|
|
||||||
UdUnitDisplay(size: scaleSize(size), color: color),
|
|
||||||
]);
|
|
||||||
} else {
|
|
||||||
return const Text('');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,12 +4,10 @@ import 'dart:io';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:gecko/globals.dart';
|
import 'package:gecko/globals.dart';
|
||||||
import 'package:gecko/models/scale_functions.dart';
|
import 'package:gecko/models/scale_functions.dart';
|
||||||
import 'package:gecko/models/wallet_data.dart';
|
|
||||||
import 'package:gecko/models/widgets_keys.dart';
|
import 'package:gecko/models/widgets_keys.dart';
|
||||||
import 'package:gecko/providers/my_wallets.dart';
|
import 'package:gecko/providers/my_wallets.dart';
|
||||||
import 'package:gecko/providers/search.dart';
|
import 'package:gecko/providers/search.dart';
|
||||||
import 'package:gecko/providers/wallets_profiles.dart';
|
import 'package:gecko/providers/wallets_profiles.dart';
|
||||||
import 'package:gecko/screens/myWallets/unlocking_wallet.dart';
|
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
class GeckoBottomAppBar extends StatelessWidget {
|
class GeckoBottomAppBar extends StatelessWidget {
|
||||||
|
@ -93,20 +91,8 @@ class GeckoBottomAppBar extends StatelessWidget {
|
||||||
onPressed: lockAction
|
onPressed: lockAction
|
||||||
? null
|
? null
|
||||||
: () async {
|
: () async {
|
||||||
WalletData? defaultWallet =
|
if (!await myWalletProvider.askPinCode()) return;
|
||||||
myWalletProvider.getDefaultWallet();
|
|
||||||
if (myWalletProvider.pinCode == '') {
|
|
||||||
await Navigator.push(
|
|
||||||
context,
|
|
||||||
MaterialPageRoute(
|
|
||||||
builder: (homeContext) {
|
|
||||||
return UnlockingWallet(wallet: defaultWallet);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (myWalletProvider.pinCode == '') return;
|
|
||||||
Navigator.popUntil(context, ModalRoute.withName('/'));
|
Navigator.popUntil(context, ModalRoute.withName('/'));
|
||||||
//FIXME: Should not have to wait 300 milliseconds when /mywallets exist in navigator...
|
//FIXME: Should not have to wait 300 milliseconds when /mywallets exist in navigator...
|
||||||
sleep(const Duration(milliseconds: 300));
|
sleep(const Duration(milliseconds: 300));
|
||||||
|
|
|
@ -4,10 +4,8 @@ import 'package:easy_localization/easy_localization.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:gecko/globals.dart';
|
import 'package:gecko/globals.dart';
|
||||||
import 'package:gecko/models/scale_functions.dart';
|
import 'package:gecko/models/scale_functions.dart';
|
||||||
import 'package:gecko/models/wallet_data.dart';
|
|
||||||
import 'package:gecko/models/widgets_keys.dart';
|
import 'package:gecko/models/widgets_keys.dart';
|
||||||
import 'package:gecko/providers/my_wallets.dart';
|
import 'package:gecko/providers/my_wallets.dart';
|
||||||
import 'package:gecko/screens/myWallets/unlocking_wallet.dart';
|
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
class AddNewDerivationButton extends StatelessWidget {
|
class AddNewDerivationButton extends StatelessWidget {
|
||||||
|
@ -31,19 +29,8 @@ class AddNewDerivationButton extends StatelessWidget {
|
||||||
key: keyAddDerivation,
|
key: keyAddDerivation,
|
||||||
onTap: () async {
|
onTap: () async {
|
||||||
if (!myWalletProvider.isNewDerivationLoading) {
|
if (!myWalletProvider.isNewDerivationLoading) {
|
||||||
WalletData? defaultWallet =
|
if (!await myWalletProvider.askPinCode()) return;
|
||||||
myWalletProvider.getDefaultWallet();
|
|
||||||
if (myWalletProvider.pinCode == '') {
|
|
||||||
await Navigator.push(
|
|
||||||
context,
|
|
||||||
MaterialPageRoute(
|
|
||||||
builder: (homeContext) {
|
|
||||||
return UnlockingWallet(wallet: defaultWallet);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
if (myWalletProvider.pinCode == '') return;
|
|
||||||
await myWalletProvider.generateNewDerivation(
|
await myWalletProvider.generateNewDerivation(
|
||||||
context, newDerivationName);
|
context, newDerivationName);
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,31 +16,35 @@ class Certifications extends StatelessWidget {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
final sub = Provider.of<SubstrateSdk>(context);
|
||||||
|
|
||||||
return Column(children: <Widget>[
|
return Column(children: <Widget>[
|
||||||
Consumer<SubstrateSdk>(builder: (context, sdk, _) {
|
FutureBuilder(
|
||||||
return FutureBuilder(
|
future: sub.getCertsCounter(address),
|
||||||
future: sdk.getCertsCounter(address),
|
builder: (BuildContext context, AsyncSnapshot<List<int>?> certs) {
|
||||||
builder: (BuildContext context, AsyncSnapshot<List<int>?> certs) {
|
if ((certs.data != null && certs.data!.isEmpty) ||
|
||||||
return certs.data != null
|
sub.certsCounterCache[address] == null) {
|
||||||
? Row(
|
return const SizedBox.shrink();
|
||||||
children: [
|
}
|
||||||
Image.asset('assets/medal.png',
|
|
||||||
color: color, height: scaleSize(18)),
|
final receivedCount = sub.certsCounterCache[address]![0];
|
||||||
ScaledSizedBox(width: 1),
|
final sentCount = sub.certsCounterCache[address]![1];
|
||||||
Text(certs.data?[0].toString() ?? '0',
|
|
||||||
style:
|
return Row(
|
||||||
scaledTextStyle(fontSize: size, color: color)),
|
children: [
|
||||||
ScaledSizedBox(width: 5),
|
Image.asset('assets/medal.png',
|
||||||
Text(
|
color: color, height: scaleSize(18)),
|
||||||
"(${certs.data?[1].toString() ?? '0'})",
|
ScaledSizedBox(width: 1),
|
||||||
style: scaledTextStyle(
|
Text(receivedCount.toString(),
|
||||||
fontSize: size * 0.7, color: color),
|
style: scaledTextStyle(fontSize: size, color: color)),
|
||||||
)
|
ScaledSizedBox(width: 5),
|
||||||
],
|
Text(
|
||||||
)
|
"($sentCount)",
|
||||||
: const SizedBox();
|
style: scaledTextStyle(fontSize: size * 0.7, color: color),
|
||||||
});
|
)
|
||||||
}),
|
],
|
||||||
|
);
|
||||||
|
}),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,9 +44,9 @@ class DragTuleAction extends StatelessWidget {
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
child: DragTarget<String>(
|
child: DragTarget<String>(
|
||||||
onAccept: (senderAddress) async {
|
onAcceptWithDetails: (senderAddress) async {
|
||||||
final walletData =
|
final walletData =
|
||||||
myWalletProvider.getWalletDataByAddress(senderAddress);
|
myWalletProvider.getWalletDataByAddress(senderAddress.data);
|
||||||
await sub.setCurrentWallet(walletData!);
|
await sub.setCurrentWallet(walletData!);
|
||||||
sub.reload();
|
sub.reload();
|
||||||
paymentPopup(context, wallet.address,
|
paymentPopup(context, wallet.address,
|
||||||
|
@ -58,7 +58,8 @@ class DragTuleAction extends StatelessWidget {
|
||||||
myWalletProvider.reload();
|
myWalletProvider.reload();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onWillAccept: (senderAddress) => senderAddress != wallet.address,
|
onWillAcceptWithDetails: (senderAddress) =>
|
||||||
|
senderAddress.data != wallet.address,
|
||||||
builder: (
|
builder: (
|
||||||
BuildContext context,
|
BuildContext context,
|
||||||
List<dynamic> accepted,
|
List<dynamic> accepted,
|
||||||
|
|
|
@ -63,22 +63,45 @@ class HistoryQuery extends StatelessWidget {
|
||||||
}
|
}
|
||||||
final List transactions = result.data?["transaction"];
|
final List transactions = result.data?["transaction"];
|
||||||
|
|
||||||
|
// Get transaction in progress if exist
|
||||||
|
String? transactionId;
|
||||||
|
for (final entry in sub.transactionStatus.entries) {
|
||||||
|
if (entry.value.from == address) {
|
||||||
|
transactionId = entry.key;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (result.hasException) {
|
if (result.hasException) {
|
||||||
log.e('Error Indexer: ${result.exception}');
|
log.e('Error Indexer: ${result.exception}');
|
||||||
return Column(children: <Widget>[
|
return Column(children: <Widget>[
|
||||||
ScaledSizedBox(height: 50),
|
Column(
|
||||||
Text(
|
children: [
|
||||||
"noNetworkNoHistory".tr(),
|
if (transactionId != null)
|
||||||
textAlign: TextAlign.center,
|
TransactionInProgressTule(
|
||||||
style: scaledTextStyle(fontSize: 18),
|
address: address, transactionId: transactionId),
|
||||||
|
ScaledSizedBox(height: 50),
|
||||||
|
Text(
|
||||||
|
"noNetworkNoHistory".tr(),
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
style: scaledTextStyle(fontSize: 18),
|
||||||
|
),
|
||||||
|
],
|
||||||
)
|
)
|
||||||
]);
|
]);
|
||||||
} else if (transactions.isEmpty) {
|
} else if (transactions.isEmpty) {
|
||||||
return Column(children: <Widget>[
|
return Column(children: <Widget>[
|
||||||
ScaledSizedBox(height: 50),
|
Column(
|
||||||
Text(
|
children: [
|
||||||
"noDataToDisplay".tr(),
|
if (transactionId != null)
|
||||||
style: scaledTextStyle(fontSize: 18),
|
TransactionInProgressTule(
|
||||||
|
address: address, transactionId: transactionId),
|
||||||
|
ScaledSizedBox(height: 50),
|
||||||
|
Text(
|
||||||
|
"noDataToDisplay".tr(),
|
||||||
|
style: scaledTextStyle(fontSize: 18),
|
||||||
|
),
|
||||||
|
],
|
||||||
)
|
)
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
@ -96,15 +119,6 @@ class HistoryQuery extends StatelessWidget {
|
||||||
offset: transactions.length,
|
offset: transactions.length,
|
||||||
);
|
);
|
||||||
|
|
||||||
// Get transaction in progress if exist
|
|
||||||
String? transactionId;
|
|
||||||
for (final entry in sub.transactionStatus.entries) {
|
|
||||||
if (entry.value.from == address) {
|
|
||||||
transactionId = entry.key;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Build history list
|
// Build history list
|
||||||
return NotificationListener(
|
return NotificationListener(
|
||||||
child: Builder(
|
child: Builder(
|
||||||
|
|
|
@ -28,26 +28,25 @@ class IdentityStatus extends StatelessWidget {
|
||||||
future: sub.idtyStatus([address]),
|
future: sub.idtyStatus([address]),
|
||||||
initialData: [walletData.identityStatus],
|
initialData: [walletData.identityStatus],
|
||||||
builder: (context, AsyncSnapshot<List<IdtyStatus>> snapshot) {
|
builder: (context, AsyncSnapshot<List<IdtyStatus>> snapshot) {
|
||||||
if (snapshot.hasError || snapshot.data == null) {
|
if (snapshot.data != null && !snapshot.hasError) {
|
||||||
log.e(snapshot.error);
|
final resStatus = snapshot.data!.first;
|
||||||
return const Icon(Icons.close, color: Colors.red);
|
walletData.identityStatus = resStatus;
|
||||||
|
walletBox.put(address, walletData);
|
||||||
}
|
}
|
||||||
|
|
||||||
final resStatus = snapshot.data!.first;
|
final resStatus = walletData.identityStatus;
|
||||||
walletData.identityStatus = resStatus;
|
|
||||||
walletBox.put(address, walletData);
|
|
||||||
|
|
||||||
if (!isOwner) {
|
if (!isOwner) {
|
||||||
if (resStatus == IdtyStatus.confirmed) {
|
if (resStatus == IdtyStatus.confirmed) {
|
||||||
return NameByAddress(
|
return NameByAddress(
|
||||||
wallet: WalletData(address: address),
|
wallet: walletData,
|
||||||
size: 18,
|
size: 18,
|
||||||
color: Colors.grey[700]!,
|
color: Colors.grey[700]!,
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
fontStyle: FontStyle.italic);
|
fontStyle: FontStyle.italic);
|
||||||
} else if (resStatus == IdtyStatus.validated) {
|
} else if (resStatus == IdtyStatus.validated) {
|
||||||
return NameByAddress(
|
return NameByAddress(
|
||||||
wallet: WalletData(address: address),
|
wallet: walletData,
|
||||||
size: 20,
|
size: 20,
|
||||||
color: Colors.black,
|
color: Colors.black,
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w600,
|
||||||
|
|
|
@ -12,7 +12,6 @@ import 'package:gecko/providers/substrate_sdk.dart';
|
||||||
import 'package:gecko/providers/wallet_options.dart';
|
import 'package:gecko/providers/wallet_options.dart';
|
||||||
import 'package:gecko/providers/wallets_profiles.dart';
|
import 'package:gecko/providers/wallets_profiles.dart';
|
||||||
import 'package:gecko/screens/activity.dart';
|
import 'package:gecko/screens/activity.dart';
|
||||||
import 'package:gecko/screens/myWallets/unlocking_wallet.dart';
|
|
||||||
import 'package:gecko/screens/transaction_in_progress.dart';
|
import 'package:gecko/screens/transaction_in_progress.dart';
|
||||||
import 'package:gecko/widgets/balance.dart';
|
import 'package:gecko/widgets/balance.dart';
|
||||||
import 'package:gecko/widgets/name_by_address.dart';
|
import 'package:gecko/widgets/name_by_address.dart';
|
||||||
|
@ -34,17 +33,8 @@ void paymentPopup(BuildContext context, String toAddress, String? username) {
|
||||||
walletViewProvider.payAmount.text = '';
|
walletViewProvider.payAmount.text = '';
|
||||||
|
|
||||||
Future executeTransfert() async {
|
Future executeTransfert() async {
|
||||||
if (myWalletProvider.pinCode == '') {
|
if (!await myWalletProvider.askPinCode()) return;
|
||||||
await Navigator.push(
|
|
||||||
context,
|
|
||||||
MaterialPageRoute(
|
|
||||||
builder: (homeContext) {
|
|
||||||
return UnlockingWallet(wallet: defaultWallet);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
if (myWalletProvider.pinCode == '') return;
|
|
||||||
// Payment workflow !
|
// Payment workflow !
|
||||||
final sub = Provider.of<SubstrateSdk>(context, listen: false);
|
final sub = Provider.of<SubstrateSdk>(context, listen: false);
|
||||||
final acc = sub.getCurrentWallet();
|
final acc = sub.getCurrentWallet();
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:gecko/globals.dart';
|
|
||||||
import 'package:gecko/models/g1_wallets_list.dart';
|
import 'package:gecko/models/g1_wallets_list.dart';
|
||||||
import 'package:gecko/models/scale_functions.dart';
|
import 'package:gecko/models/scale_functions.dart';
|
||||||
import 'package:gecko/models/wallet_data.dart';
|
import 'package:gecko/models/wallet_data.dart';
|
||||||
|
@ -10,6 +9,7 @@ import 'package:gecko/providers/substrate_sdk.dart';
|
||||||
import 'package:gecko/providers/wallets_profiles.dart';
|
import 'package:gecko/providers/wallets_profiles.dart';
|
||||||
import 'package:gecko/screens/wallet_view.dart';
|
import 'package:gecko/screens/wallet_view.dart';
|
||||||
import 'package:gecko/widgets/balance.dart';
|
import 'package:gecko/widgets/balance.dart';
|
||||||
|
import 'package:gecko/widgets/commons/loading.dart';
|
||||||
import 'package:gecko/widgets/datapod_avatar.dart';
|
import 'package:gecko/widgets/datapod_avatar.dart';
|
||||||
import 'package:gecko/widgets/name_by_address.dart';
|
import 'package:gecko/widgets/name_by_address.dart';
|
||||||
import 'package:gecko/widgets/search_identity_query.dart';
|
import 'package:gecko/widgets/search_identity_query.dart';
|
||||||
|
@ -47,11 +47,9 @@ class SearchResult extends StatelessWidget {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return const Center(
|
return const Center(
|
||||||
heightFactor: 5,
|
child: Loading(
|
||||||
child: CircularProgressIndicator(
|
stroke: 3,
|
||||||
strokeWidth: 3,
|
size: 30,
|
||||||
backgroundColor: yellowC,
|
|
||||||
color: orangeC,
|
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|
|
@ -40,6 +40,7 @@ class _TransactionInProgressTuleState extends State<TransactionInProgressTule> {
|
||||||
txContent = sub.transactionStatus[widget.transactionId]!;
|
txContent = sub.transactionStatus[widget.transactionId]!;
|
||||||
|
|
||||||
subscription = stream.listen((result) {
|
subscription = stream.listen((result) {
|
||||||
|
if (result.data?['account_by_pk'] == null) return;
|
||||||
if (result.hasException) {
|
if (result.hasException) {
|
||||||
log.e(result.exception);
|
log.e(result.exception);
|
||||||
isVisible = true;
|
isVisible = true;
|
||||||
|
@ -128,7 +129,7 @@ class _TransactionInProgressTuleState extends State<TransactionInProgressTule> {
|
||||||
statusIcon,
|
statusIcon,
|
||||||
ScaledSizedBox(width: 10),
|
ScaledSizedBox(width: 10),
|
||||||
ScaledSizedBox(
|
ScaledSizedBox(
|
||||||
width: 160,
|
width: 170,
|
||||||
child: Text(
|
child: Text(
|
||||||
humanStatus,
|
humanStatus,
|
||||||
style: scaledTextStyle(
|
style: scaledTextStyle(
|
||||||
|
|
|
@ -151,7 +151,7 @@ class BalanceBuilder extends StatelessWidget {
|
||||||
address: address,
|
address: address,
|
||||||
size: 14,
|
size: 14,
|
||||||
color: isDefault ? Colors.white : Colors.black,
|
color: isDefault ? Colors.white : Colors.black,
|
||||||
loadingColor: isDefault ? yellowC : orangeC),
|
),
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
)),
|
)),
|
||||||
|
|
|
@ -171,10 +171,10 @@ class BalanceBuilder extends StatelessWidget {
|
||||||
Opacity(
|
Opacity(
|
||||||
opacity: 0.7,
|
opacity: 0.7,
|
||||||
child: Balance(
|
child: Balance(
|
||||||
address: address,
|
address: address,
|
||||||
size: 15,
|
size: 15,
|
||||||
color: isDefault ? Colors.white : Colors.black,
|
color: isDefault ? Colors.white : Colors.black,
|
||||||
loadingColor: isDefault ? yellowC : orangeC),
|
),
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
)),
|
)),
|
||||||
|
|
396
pubspec.lock
396
pubspec.lock
|
@ -5,10 +5,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: _fe_analyzer_shared
|
name: _fe_analyzer_shared
|
||||||
sha256: ae92f5d747aee634b87f89d9946000c2de774be1d6ac3e58268224348cd0101a
|
sha256: "0b2f2bd91ba804e53a61d757b986f89f1f9eaed5b11e4b2f5a2468d86d6c9fc7"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "61.0.0"
|
version: "67.0.0"
|
||||||
accordion:
|
accordion:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -21,26 +21,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: analyzer
|
name: analyzer
|
||||||
sha256: ea3d8652bda62982addfd92fdc2d0214e5f82e43325104990d4f4c4a2a313562
|
sha256: "37577842a27e4338429a1cbc32679d508836510b056f1eedf0c8d20e39c1383d"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "5.13.0"
|
version: "6.4.1"
|
||||||
analyzer_plugin:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: analyzer_plugin
|
|
||||||
sha256: c1d5f167683de03d5ab6c3b53fc9aeefc5d59476e7810ba7bbddff50c6f4392d
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "0.11.2"
|
|
||||||
ansicolor:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: ansicolor
|
|
||||||
sha256: "8bf17a8ff6ea17499e40a2d2542c2f481cd7615760c6d34065cb22bfd22e6880"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.0.2"
|
|
||||||
archive:
|
archive:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -69,10 +53,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: barcode
|
name: barcode
|
||||||
sha256: "2a8b2ee065f419c2aeda141436cc556d91ae772d220fd80679f4d431d6c2ab43"
|
sha256: "91b143666f7bb13636f716b6d4e412e372ab15ff7969799af8c9e30a382e9385"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.5"
|
version: "2.2.6"
|
||||||
barcode_scan2:
|
barcode_scan2:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -101,10 +85,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: bip32_ed25519
|
name: bip32_ed25519
|
||||||
sha256: "8c739df5d7a05ac2d08dd355062313d84f41244d05cf6cc953c9f0bca66b1fdf"
|
sha256: "292ef300ce24a140ce2814e593af6fc2fe20185ffded9a9bd99ce7c22abd7657"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.2.2"
|
version: "0.5.0"
|
||||||
bip39:
|
bip39:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -181,18 +165,18 @@ packages:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description:
|
description:
|
||||||
name: build_runner
|
name: build_runner
|
||||||
sha256: "67d591d602906ef9201caf93452495ad1812bea2074f04e25dbd7c133785821b"
|
sha256: "581bacf68f89ec8792f5e5a0b2c4decd1c948e97ce659dc783688c8a88fbec21"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.4.7"
|
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: c9e32d21dd6626b5c163d48b037ce906bbe428bc23ab77bcd77bb21e593b6185
|
sha256: "4ae8ffe5ac758da294ecf1802f2aff01558d8b1b00616aa7538ea9a8a5d50799"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "7.2.11"
|
version: "7.3.0"
|
||||||
built_collection:
|
built_collection:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -205,10 +189,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: built_value
|
name: built_value
|
||||||
sha256: c9aabae0718ec394e5bc3c7272e6bb0dc0b32201a08fe185ec1d8401d3e39309
|
sha256: fedde275e0a6b798c3296963c5cd224e3e1b55d0e478d5b7e65e6b540f363a0e
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "8.8.1"
|
version: "8.9.1"
|
||||||
carousel_slider:
|
carousel_slider:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -245,10 +229,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: code_builder
|
name: code_builder
|
||||||
sha256: feee43a5c05e7b3199bb375a86430b8ada1b04104f2923d0e03cc01ca87b6d84
|
sha256: f692079e25e7869c14132d39f223f8eec9830eb76131925143b2129c4bb01b37
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.9.0"
|
version: "4.10.0"
|
||||||
collection:
|
collection:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -305,38 +289,14 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.3"
|
version: "3.0.3"
|
||||||
csslib:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: csslib
|
|
||||||
sha256: "706b5707578e0c1b4b7550f64078f0a0f19dec3f50a178ffae7006b0a9ca58fb"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.0.0"
|
|
||||||
dart_code_metrics:
|
|
||||||
dependency: "direct dev"
|
|
||||||
description:
|
|
||||||
name: dart_code_metrics
|
|
||||||
sha256: "3dede3f7abc077a4181ec7445448a289a9ce08e2981e6a4d49a3fb5099d47e1f"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "5.7.6"
|
|
||||||
dart_code_metrics_presets:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: dart_code_metrics_presets
|
|
||||||
sha256: b71eadf02a3787ebd5c887623f83f6fdc204d45c75a081bd636c4104b3fd8b73
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.8.0"
|
|
||||||
dart_style:
|
dart_style:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: dart_style
|
name: dart_style
|
||||||
sha256: "1efa911ca7086affd35f463ca2fc1799584fb6aa89883cf0af8e3664d6a02d55"
|
sha256: "99e066ce75c89d6b29903d788a7bb9369cf754f7b24bf70bf4b6d6d6b26853b9"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.2"
|
version: "2.3.6"
|
||||||
dbus:
|
dbus:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -357,10 +317,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: dio
|
name: dio
|
||||||
sha256: "797e1e341c3dd2f69f2dad42564a6feff3bfb87187d05abb93b9609e6f1645c3"
|
sha256: "49af28382aefc53562459104f64d16b9dfd1e8ef68c862d5af436cc8356ce5a8"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "5.4.0"
|
version: "5.4.1"
|
||||||
dots_indicator:
|
dots_indicator:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -373,18 +333,18 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: durt
|
name: durt
|
||||||
sha256: "97007458aa5ba95c78465af8489e1330d0f7d48c74e10699f6283ce4cf8a5410"
|
sha256: "29e4a1adaea1dfedff4d9237580b414ca5fe621a7a131b5fa129b9824365c938"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.1.7"
|
version: "0.1.8"
|
||||||
easy_localization:
|
easy_localization:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: easy_localization
|
name: easy_localization
|
||||||
sha256: de63e3b422adfc97f256cbb3f8cf12739b6a4993d390f3cadb3f51837afaefe5
|
sha256: c145aeb6584aedc7c862ab8c737c3277788f47488bfdf9bae0fe112bd0a4789c
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.3"
|
version: "3.0.5"
|
||||||
easy_logger:
|
easy_logger:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -445,18 +405,18 @@ packages:
|
||||||
dependency: transitive
|
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"
|
||||||
file:
|
file:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: file
|
name: file
|
||||||
sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d"
|
sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.1.4"
|
version: "7.0.0"
|
||||||
file_selector_linux:
|
file_selector_linux:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -477,10 +437,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: file_selector_platform_interface
|
name: file_selector_platform_interface
|
||||||
sha256: "0aa47a725c346825a2bd396343ce63ac00bda6eff2fbc43eabe99737dede8262"
|
sha256: a3994c26f10378a039faa11de174d7b78eb8f79e4dd0af2a451410c1a5c3f66b
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.6.1"
|
version: "2.6.2"
|
||||||
file_selector_windows:
|
file_selector_windows:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -548,10 +508,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: flutter_markdown
|
name: flutter_markdown
|
||||||
sha256: "35108526a233cc0755664d445f8a6b4b61e6f8fe993b3658b80b4a26827fc196"
|
sha256: cb44f7831b23a6bdd0f501718b0d2e8045cbc625a15f668af37ddb80314821db
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.6.18+2"
|
version: "0.6.21"
|
||||||
flutter_plugin_android_lifecycle:
|
flutter_plugin_android_lifecycle:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -727,14 +687,6 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.1"
|
version: "2.0.1"
|
||||||
html:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: html
|
|
||||||
sha256: "3a7812d5bcd2894edf53dfaf8cd640876cf6cef50a8f238745c8b8120ea74d3a"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "0.15.4"
|
|
||||||
http:
|
http:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -763,18 +715,18 @@ packages:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description:
|
description:
|
||||||
name: icons_launcher
|
name: icons_launcher
|
||||||
sha256: "3ed4560181f238e69ca5d55589d6946ef31e6a321c934251a26ce1d9e9867305"
|
sha256: "9b514ffed6ed69b232fd2bf34c44878c8526be71fc74129a658f35c04c9d4a9d"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.6"
|
version: "2.1.7"
|
||||||
image:
|
image:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: image
|
name: image
|
||||||
sha256: "028f61960d56f26414eb616b48b04eb37d700cbe477b7fb09bf1d7ce57fd9271"
|
sha256: "4c68bfd5ae83e700b5204c1e74451e7bf3cf750e6843c6e158289cf56bda018e"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.1.3"
|
version: "4.1.7"
|
||||||
image_cropper:
|
image_cropper:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -803,34 +755,34 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: image_picker
|
name: image_picker
|
||||||
sha256: fc712337719239b0b6e41316aa133350b078fa39b6cbd706b61f3fd421b03c77
|
sha256: "26222b01a0c9a2c8fe02fc90b8208bd3325da5ed1f4a2acabf75939031ac0bdd"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.5"
|
version: "1.0.7"
|
||||||
image_picker_android:
|
image_picker_android:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: image_picker_android
|
name: image_picker_android
|
||||||
sha256: ecdc963d2aa67af5195e723a40580f802d4392e31457a12a562b3e2bd6a396fe
|
sha256: "39f2bfe497e495450c81abcd44b62f56c2a36a37a175da7d137b4454977b51b1"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.8.9+1"
|
version: "0.8.9+3"
|
||||||
image_picker_for_web:
|
image_picker_for_web:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: image_picker_for_web
|
name: image_picker_for_web
|
||||||
sha256: "50bc9ae6a77eea3a8b11af5eb6c661eeb858fdd2f734c2a4fd17086922347ef7"
|
sha256: e2423c53a68b579a7c37a1eda967b8ae536c3d98518e5db95ca1fe5719a730a3
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.1"
|
version: "3.0.2"
|
||||||
image_picker_ios:
|
image_picker_ios:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: image_picker_ios
|
name: image_picker_ios
|
||||||
sha256: eac0a62104fa12feed213596df0321f57ce5a572562f72a68c4ff81e9e4caacf
|
sha256: fadafce49e8569257a0cad56d24438a6fa1f0cbd7ee0af9b631f7492818a4ca3
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.8.9"
|
version: "0.8.9+1"
|
||||||
image_picker_linux:
|
image_picker_linux:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -851,10 +803,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: image_picker_platform_interface
|
name: image_picker_platform_interface
|
||||||
sha256: ed9b00e63977c93b0d2d2b343685bed9c324534ba5abafbb3dfbd6a780b1b514
|
sha256: "3d2c323daea9d60608f1caf30be32a938916f4975434b8352e6f73dae496da38"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.9.1"
|
version: "2.9.4"
|
||||||
image_picker_windows:
|
image_picker_windows:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -916,6 +868,30 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.2"
|
version: "3.0.2"
|
||||||
|
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"
|
||||||
lints:
|
lints:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -928,10 +904,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: logger
|
name: logger
|
||||||
sha256: "6bbb9d6f7056729537a4309bda2e74e18e5d9f14302489cc1e93f33b3fe32cac"
|
sha256: b3ff55aeb08d9d8901b767650285872cb1bb8f508373b3e348d60268b0c7f770
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.2+1"
|
version: "2.1.0"
|
||||||
logging:
|
logging:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -944,50 +920,50 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: markdown
|
name: markdown
|
||||||
sha256: acf35edccc0463a9d7384e437c015a3535772e09714cf60e07eeef3a15870dcd
|
sha256: ef2a1298144e3f985cc736b22e0ccdaf188b5b3970648f2d9dc13efd1d9df051
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "7.1.1"
|
version: "7.2.2"
|
||||||
matcher:
|
matcher:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: matcher
|
name: matcher
|
||||||
sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e"
|
sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.12.16"
|
version: "0.12.16+1"
|
||||||
material_color_utilities:
|
material_color_utilities:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: material_color_utilities
|
name: material_color_utilities
|
||||||
sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41"
|
sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.5.0"
|
version: "0.8.0"
|
||||||
meta:
|
meta:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: meta
|
name: meta
|
||||||
sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e
|
sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.10.0"
|
version: "1.11.0"
|
||||||
mime:
|
mime:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: mime
|
name: mime
|
||||||
sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e
|
sha256: "2e123074287cc9fd6c09de8336dae606d1ddb88d9ac47358826db698c176a1f2"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.4"
|
version: "1.0.5"
|
||||||
mobx:
|
mobx:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: mobx
|
name: mobx
|
||||||
sha256: "6b467f91bfc534922ea670db69a1972d28bd9754085892decb5bce19f2c8d0d5"
|
sha256: "74ee54012dc7c1b3276eaa960a600a7418ef5f9997565deb8fca1fd88fb36b78"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.0"
|
version: "2.3.0+1"
|
||||||
nested:
|
nested:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1040,10 +1016,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path
|
name: path
|
||||||
sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
|
sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.8.3"
|
version: "1.9.0"
|
||||||
path_parsing:
|
path_parsing:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1056,10 +1032,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: path_provider
|
name: path_provider
|
||||||
sha256: a1aa8aaa2542a6bc57e381f132af822420216c80d4781f7aa085ca3229208aaa
|
sha256: b27217933eeeba8ff24845c34003b003b2b22151de3c908d0e679e8fe1aa078b
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.1"
|
version: "2.1.2"
|
||||||
path_provider_android:
|
path_provider_android:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1072,10 +1048,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path_provider_foundation
|
name: path_provider_foundation
|
||||||
sha256: "19314d595120f82aca0ba62787d58dde2cc6b5df7d2f0daf72489e38d1b57f2d"
|
sha256: "5a7999be66e000916500be4f15a3633ebceb8302719b47b9cc49ce924125350f"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.1"
|
version: "2.3.2"
|
||||||
path_provider_linux:
|
path_provider_linux:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1088,10 +1064,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path_provider_platform_interface
|
name: path_provider_platform_interface
|
||||||
sha256: "94b1e0dd80970c1ce43d5d4e050a9918fce4f4a775e6142424c30a29a363265c"
|
sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.1"
|
version: "2.1.2"
|
||||||
path_provider_windows:
|
path_provider_windows:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1104,58 +1080,66 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: pdf
|
name: pdf
|
||||||
sha256: "93cbb2c06de9bab91844550f19896b2373e7a5ce25173995e7e5ec5e1741429d"
|
sha256: "243f05342fc0bdf140eba5b069398985cdbdd3dbb1d776cf43d5ea29cc570ba6"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.10.7"
|
version: "3.10.8"
|
||||||
|
pdf_widget_wrapper:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: pdf_widget_wrapper
|
||||||
|
sha256: "9c3ca36e5000c9682d52bbdc486867ba7c5ee4403d1a5d6d03ed72157753377b"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.3"
|
||||||
permission_handler:
|
permission_handler:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: permission_handler
|
name: permission_handler
|
||||||
sha256: "860c6b871c94c78e202dc69546d4d8fd84bd59faeb36f8fb9888668a53ff4f78"
|
sha256: "74e962b7fad7ff75959161bb2c0ad8fe7f2568ee82621c9c2660b751146bfe44"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "11.1.0"
|
version: "11.3.0"
|
||||||
permission_handler_android:
|
permission_handler_android:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: permission_handler_android
|
name: permission_handler_android
|
||||||
sha256: "2f1bec180ee2f5665c22faada971a8f024761f632e93ddc23310487df52dcfa6"
|
sha256: "1acac6bae58144b442f11e66621c062aead9c99841093c38f5bcdcc24c1c3474"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "12.0.1"
|
version: "12.0.5"
|
||||||
permission_handler_apple:
|
permission_handler_apple:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: permission_handler_apple
|
name: permission_handler_apple
|
||||||
sha256: "1a816084338ada8d574b1cb48390e6e8b19305d5120fe3a37c98825bacc78306"
|
sha256: bdafc6db74253abb63907f4e357302e6bb786ab41465e8635f362ee71fd8707b
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "9.2.0"
|
version: "9.4.0"
|
||||||
permission_handler_html:
|
permission_handler_html:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: permission_handler_html
|
name: permission_handler_html
|
||||||
sha256: "11b762a8c123dced6461933a88ea1edbbe036078c3f9f41b08886e678e7864df"
|
sha256: "54bf176b90f6eddd4ece307e2c06cf977fb3973719c35a93b85cc7093eb6070d"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.1.0+2"
|
version: "0.1.1"
|
||||||
permission_handler_platform_interface:
|
permission_handler_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: permission_handler_platform_interface
|
name: permission_handler_platform_interface
|
||||||
sha256: d87349312f7eaf6ce0adaf668daf700ac5b06af84338bd8b8574dfbd93ffe1a1
|
sha256: "23dfba8447c076ab5be3dee9ceb66aad345c4a648f0cac292c77b1eb0e800b78"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.0.2"
|
version: "4.2.0"
|
||||||
permission_handler_windows:
|
permission_handler_windows:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: permission_handler_windows
|
name: permission_handler_windows
|
||||||
sha256: "1e8640c1e39121128da6b816d236e714d2cf17fac5a105dd6acdd3403a628004"
|
sha256: "1a790728016f79a41216d88672dbc5df30e686e811ad4e698bfc51f76ad91f1e"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.2.0"
|
version: "0.2.1"
|
||||||
petitparser:
|
petitparser:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1176,34 +1160,34 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: pinenacl
|
name: pinenacl
|
||||||
sha256: e5fb0bce1717b7f136f35ee98b5c02b3e6383211f8a77ca882fa7812232a07b9
|
sha256: "3a5503637587d635647c93ea9a8fecf48a420cc7deebe6f1fc85c2a5637ab327"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.3.4"
|
version: "0.5.1"
|
||||||
platform:
|
platform:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: platform
|
name: platform
|
||||||
sha256: ae68c7bfcd7383af3629daafb32fb4e8681c7154428da4febcff06200585f102
|
sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.2"
|
version: "3.1.4"
|
||||||
plugin_platform_interface:
|
plugin_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: plugin_platform_interface
|
name: plugin_platform_interface
|
||||||
sha256: f4f88d4a900933e7267e2b353594774fc0d07fb072b47eedcd5b54e1ea3269f8
|
sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.7"
|
version: "2.1.8"
|
||||||
pointycastle:
|
pointycastle:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: pointycastle
|
name: pointycastle
|
||||||
sha256: "7c1e5f0d23c9016c5bbd8b1473d0d3fb3fc851b876046039509e18e0c7485f2c"
|
sha256: "43ac87de6e10afabc85c445745a7b799e04de84cebaa4fd7bf55a5e1e9604d29"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.7.3"
|
version: "3.7.4"
|
||||||
polkawallet_sdk:
|
polkawallet_sdk:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -1225,18 +1209,18 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: printing
|
name: printing
|
||||||
sha256: ad39a42a5f83125952457dfd94f395c8cf0eb1f7759583dadb769be5c7f99d24
|
sha256: "1c99cab90ebcc1fff65831d264627d5b529359d563e53f33ab9b8117f2d280bc"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "5.11.1"
|
version: "5.12.0"
|
||||||
process:
|
process:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: process
|
name: process
|
||||||
sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09"
|
sha256: "21e54fd2faf1b5bdd5102afd25012184a6793927648ea81eea80552ac9405b32"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.2.4"
|
version: "5.0.2"
|
||||||
protobuf:
|
protobuf:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1249,10 +1233,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: provider
|
name: provider
|
||||||
sha256: "9a96a0a19b594dbc5bf0f1f27d2bc67d5f95957359b461cd9feb44ed6ae75096"
|
sha256: c8a055ee5ce3fd98d6fc872478b03823ffdb448699c6ebdbbc71d59b596fd48c
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.1.1"
|
version: "6.1.2"
|
||||||
pub_semver:
|
pub_semver:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1261,14 +1245,6 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.4"
|
version: "2.1.4"
|
||||||
pub_updater:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: pub_updater
|
|
||||||
sha256: "05ae70703e06f7fdeb05f7f02dd680b8aad810e87c756a618f33e1794635115c"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "0.3.0"
|
|
||||||
pubspec_parse:
|
pubspec_parse:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1305,10 +1281,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: responsive_framework
|
name: responsive_framework
|
||||||
sha256: "23aa7be5d5136922df708f6ddccb5ec4e0eb8bc576c3f105f5093f31d6b68e50"
|
sha256: "52367ab0c3479b3a5342dec3b74a3d47c4cc1b45bb5d38f720c2e002ebccd4ee"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.1"
|
version: "1.4.0"
|
||||||
rxdart:
|
rxdart:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1321,50 +1297,50 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: screen_brightness
|
name: screen_brightness
|
||||||
sha256: ed8da4a4511e79422fc1aa88138e920e4008cd312b72cdaa15ccb426c0faaedd
|
sha256: a1273cbc854c39c940c17ac400c040afd973166b8808f2efe2072763b23e4d30
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.2.2+1"
|
version: "1.0.0"
|
||||||
screen_brightness_android:
|
screen_brightness_android:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: screen_brightness_android
|
name: screen_brightness_android
|
||||||
sha256: "3df10961e3a9e968a5e076fe27e7f4741fa8a1d3950bdeb48cf121ed529d0caf"
|
sha256: "69d903bb42071aa2ad8853bf24e206ff6c39894930278e6239751447aacb9fe4"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.1.0+2"
|
version: "1.0.0"
|
||||||
screen_brightness_ios:
|
screen_brightness_ios:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: screen_brightness_ios
|
name: screen_brightness_ios
|
||||||
sha256: "99adc3ca5490b8294284aad5fcc87f061ad685050e03cf45d3d018fe398fd9a2"
|
sha256: "265790af69e26c4840e515b9b34e31505f95c0ca8866fac47b80db3552196214"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.1.0"
|
version: "1.0.0"
|
||||||
screen_brightness_macos:
|
screen_brightness_macos:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: screen_brightness_macos
|
name: screen_brightness_macos
|
||||||
sha256: "64b34e7e3f4900d7687c8e8fb514246845a73ecec05ab53483ed025bd4a899fd"
|
sha256: b83e7a8b7c0f1a3161b586620781517b585deb4082dfff3745a5b2779ea94996
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.1.0+1"
|
version: "1.0.0"
|
||||||
screen_brightness_platform_interface:
|
screen_brightness_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: screen_brightness_platform_interface
|
name: screen_brightness_platform_interface
|
||||||
sha256: b211d07f0c96637a15fb06f6168617e18030d5d74ad03795dd8547a52717c171
|
sha256: e160b78f37bc093a6a66bfa118bb9266c36bfa3163bf976f94e0e5aa79977ff9
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.1.0"
|
version: "1.0.0"
|
||||||
screen_brightness_windows:
|
screen_brightness_windows:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: screen_brightness_windows
|
name: screen_brightness_windows
|
||||||
sha256: "9261bf33d0fc2707d8cf16339ce25768100a65e70af0fcabaf032fc12408ba86"
|
sha256: "1f1f14436ec3d8fdda4dca60a8c6aa70f9ae1c04a55bd2cf40e3a4453a4bf78e"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.1.3"
|
version: "1.0.0"
|
||||||
scroll_to_index:
|
scroll_to_index:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1385,18 +1361,18 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: sentry
|
name: sentry
|
||||||
sha256: "89e426587b0879e53c46a0aae0eb312696d9d2d803ba14b252a65cc24b1416a2"
|
sha256: a524a87d096799b775530176c8c082afe7aa1f10cc31ba078fecdd74e9afc923
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "7.14.0"
|
version: "7.17.0"
|
||||||
sentry_flutter:
|
sentry_flutter:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: sentry_flutter
|
name: sentry_flutter
|
||||||
sha256: fd089ee4e75a927be037c56815a0a54af5a519f52b803a5ffecb589bb36e2401
|
sha256: e0f8367f8f7c74dba9f7521f71700bce6c6ee065cf342f065d4fce411b84fc7b
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "7.14.0"
|
version: "7.17.0"
|
||||||
shared_preferences:
|
shared_preferences:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1417,10 +1393,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: shared_preferences_foundation
|
name: shared_preferences_foundation
|
||||||
sha256: "7bf53a9f2d007329ee6f3df7268fd498f8373602f943c975598bbb34649b62a7"
|
sha256: "7708d83064f38060c7b39db12aefe449cb8cdc031d6062280087bc4cdb988f5c"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.4"
|
version: "2.3.5"
|
||||||
shared_preferences_linux:
|
shared_preferences_linux:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1433,10 +1409,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: shared_preferences_platform_interface
|
name: shared_preferences_platform_interface
|
||||||
sha256: d4ec5fc9ebb2f2e056c617112aa75dcf92fc2e4faaf2ae999caa297473f75d8a
|
sha256: "22e2ecac9419b4246d7c22bfbbda589e3acf5c0351137d87dd2939d984d37c3b"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.1"
|
version: "2.3.2"
|
||||||
shared_preferences_web:
|
shared_preferences_web:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1606,26 +1582,26 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: url_launcher
|
name: url_launcher
|
||||||
sha256: e9aa5ea75c84cf46b3db4eea212523591211c3cf2e13099ee4ec147f54201c86
|
sha256: "0ecc004c62fd3ed36a2ffcbe0dd9700aee63bd7532d0b642a488b1ec310f492e"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.2.2"
|
version: "6.2.5"
|
||||||
url_launcher_android:
|
url_launcher_android:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: url_launcher_android
|
name: url_launcher_android
|
||||||
sha256: "31222ffb0063171b526d3e569079cf1f8b294075ba323443fdc690842bfd4def"
|
sha256: d4ed0711849dd8e33eb2dd69c25db0d0d3fdc37e0a62e629fe32f57a22db2745
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.2.0"
|
version: "6.3.0"
|
||||||
url_launcher_ios:
|
url_launcher_ios:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: url_launcher_ios
|
name: url_launcher_ios
|
||||||
sha256: bba3373219b7abb6b5e0d071b0fe66dfbe005d07517a68e38d4fc3638f35c6d3
|
sha256: "9149d493b075ed740901f3ee844a38a00b33116c7c5c10d7fb27df8987fb51d5"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.2.1"
|
version: "6.2.5"
|
||||||
url_launcher_linux:
|
url_launcher_linux:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1646,18 +1622,18 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: url_launcher_platform_interface
|
name: url_launcher_platform_interface
|
||||||
sha256: "980e8d9af422f477be6948bdfb68df8433be71f5743a188968b0c1b887807e50"
|
sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.0"
|
version: "2.3.2"
|
||||||
url_launcher_web:
|
url_launcher_web:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: url_launcher_web
|
name: url_launcher_web
|
||||||
sha256: "7286aec002c8feecc338cc33269e96b73955ab227456e9fb2a91f7fab8a358e9"
|
sha256: fff0932192afeedf63cdd50ecbb1bc825d31aed259f02bb8dba0f3b729a5e88b
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.2"
|
version: "2.2.3"
|
||||||
url_launcher_windows:
|
url_launcher_windows:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1678,26 +1654,26 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: vector_graphics
|
name: vector_graphics
|
||||||
sha256: "0f0c746dd2d6254a0057218ff980fc7f5670fd0fcf5e4db38a490d31eed4ad43"
|
sha256: "4ac59808bbfca6da38c99f415ff2d3a5d7ca0a6b4809c71d9cf30fba5daf9752"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.9+1"
|
version: "1.1.10+1"
|
||||||
vector_graphics_codec:
|
vector_graphics_codec:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: vector_graphics_codec
|
name: vector_graphics_codec
|
||||||
sha256: "0edf6d630d1bfd5589114138ed8fada3234deacc37966bec033d3047c29248b7"
|
sha256: f3247e7ab0ec77dc759263e68394990edc608fb2b480b80db8aa86ed09279e33
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.9+1"
|
version: "1.1.10+1"
|
||||||
vector_graphics_compiler:
|
vector_graphics_compiler:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: vector_graphics_compiler
|
name: vector_graphics_compiler
|
||||||
sha256: d24333727332d9bd20990f1483af4e09abdb9b1fc7c3db940b56ab5c42790c26
|
sha256: "18489bdd8850de3dd7ca8a34e0c446f719ec63e2bab2e7a8cc66a9028dd76c5a"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.9+1"
|
version: "1.1.10+1"
|
||||||
vector_math:
|
vector_math:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1710,10 +1686,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: vm_service
|
name: vm_service
|
||||||
sha256: c538be99af830f478718b51630ec1b6bee5e74e52c8a802d328d9e71d35d2583
|
sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "11.10.0"
|
version: "13.0.0"
|
||||||
wallet:
|
wallet:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1734,10 +1710,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: web
|
name: web
|
||||||
sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152
|
sha256: "4188706108906f002b3a293509234588823c8c979dc83304e229ff400c996b05"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.3.0"
|
version: "0.4.2"
|
||||||
web3dart:
|
web3dart:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1758,58 +1734,58 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: webdriver
|
name: webdriver
|
||||||
sha256: "3c923e918918feeb90c4c9fdf1fe39220fa4c0e8e2c0fffaded174498ef86c49"
|
sha256: "003d7da9519e1e5f329422b36c4dcdf18d7d2978d1ba099ea4e45ba490ed845e"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.2"
|
version: "3.0.3"
|
||||||
webview_flutter:
|
webview_flutter:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: webview_flutter
|
name: webview_flutter
|
||||||
sha256: "42393b4492e629aa3a88618530a4a00de8bb46e50e7b3993fedbfdc5352f0dbf"
|
sha256: "25e1b6e839e8cbfbd708abc6f85ed09d1727e24e08e08c6b8590d7c65c9a8932"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.4.2"
|
version: "4.7.0"
|
||||||
webview_flutter_android:
|
webview_flutter_android:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: webview_flutter_android
|
name: webview_flutter_android
|
||||||
sha256: b54c89fe14a6d26a2a46e24880da0441cdd2bf1f6d01a5b3e1d39558feb1de0b
|
sha256: "3e5f4e9d818086b0d01a66fb1ff9cc72ab0cc58c71980e3d3661c5685ea0efb0"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.13.1"
|
version: "3.15.0"
|
||||||
webview_flutter_platform_interface:
|
webview_flutter_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: webview_flutter_platform_interface
|
name: webview_flutter_platform_interface
|
||||||
sha256: dbe745ee459a16b6fec296f7565a8ef430d0d681001d8ae521898b9361854943
|
sha256: d937581d6e558908d7ae3dc1989c4f87b786891ab47bb9df7de548a151779d8d
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.9.0"
|
version: "2.10.0"
|
||||||
webview_flutter_wkwebview:
|
webview_flutter_wkwebview:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: webview_flutter_wkwebview
|
name: webview_flutter_wkwebview
|
||||||
sha256: eebfabfa8a115b535b52031b8b26f7a4b58ceceab378bc9db8762b0fb46f7b5d
|
sha256: "9bf168bccdf179ce90450b5f37e36fe263f591c9338828d6bf09b6f8d0f57f86"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.10.0"
|
version: "3.12.0"
|
||||||
win32:
|
win32:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: win32
|
name: win32
|
||||||
sha256: b0f37db61ba2f2e9b7a78a1caece0052564d1bc70668156cf3a29d676fe4e574
|
sha256: "464f5674532865248444b4c3daca12bd9bf2d7c47f759ce2617986e7229494a8"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "5.1.1"
|
version: "5.2.0"
|
||||||
xdg_directories:
|
xdg_directories:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: xdg_directories
|
name: xdg_directories
|
||||||
sha256: "589ada45ba9e39405c198fe34eb0f607cddb2108527e658136120892beac46d2"
|
sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.3"
|
version: "1.0.4"
|
||||||
xml:
|
xml:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1827,5 +1803,5 @@ packages:
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.2"
|
version: "3.1.2"
|
||||||
sdks:
|
sdks:
|
||||||
dart: ">=3.2.0 <4.0.0"
|
dart: ">=3.3.0 <4.0.0"
|
||||||
flutter: ">=3.16.0"
|
flutter: ">=3.19.0"
|
||||||
|
|
|
@ -5,7 +5,7 @@ description: Pay with G1.
|
||||||
# pub.dev using `pub publish`. This is preferred for private packages.
|
# pub.dev using `pub publish`. This is preferred for private packages.
|
||||||
publish_to: "none" # Remove this line if you wish to publish to pub.dev
|
publish_to: "none" # Remove this line if you wish to publish to pub.dev
|
||||||
|
|
||||||
version: 0.1.4+68
|
version: 0.1.5+72
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=2.12.0 <3.0.0"
|
sdk: ">=2.12.0 <3.0.0"
|
||||||
|
@ -51,13 +51,13 @@ dependencies:
|
||||||
hex: ^0.2.0
|
hex: ^0.2.0
|
||||||
accordion: ^2.6.0
|
accordion: ^2.6.0
|
||||||
flutter_svg: ^2.0.9
|
flutter_svg: ^2.0.9
|
||||||
pinenacl: ^0.3.4
|
pinenacl: ^0.5.1
|
||||||
fast_base58: ^0.2.1
|
fast_base58: ^0.2.1
|
||||||
tutorial_coach_mark: ^1.2.11
|
tutorial_coach_mark: ^1.2.11
|
||||||
confetti: ^0.7.0
|
confetti: ^0.7.0
|
||||||
url_launcher: ^6.2.2
|
url_launcher: ^6.2.2
|
||||||
crypto: ^3.0.3
|
crypto: ^3.0.3
|
||||||
screen_brightness: ^0.2.2+1
|
screen_brightness: ^1.0.0
|
||||||
uuid: ^3.0.7
|
uuid: ^3.0.7
|
||||||
fade_and_translate: ^0.1.3
|
fade_and_translate: ^0.1.3
|
||||||
|
|
||||||
|
@ -72,7 +72,6 @@ dev_dependencies:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
integration_test:
|
integration_test:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
dart_code_metrics: ^5.7.6
|
|
||||||
|
|
||||||
icons_launcher:
|
icons_launcher:
|
||||||
image_path: "assets/icon/gecko_flat.png"
|
image_path: "assets/icon/gecko_flat.png"
|
||||||
|
|
Loading…
Reference in New Issue