sca treezor and auth interceptors, some other fixes and lottie animation for app loading added
This commit is contained in:
364
.dart_tool/package_config.json
Normal file
364
.dart_tool/package_config.json
Normal file
@@ -0,0 +1,364 @@
|
|||||||
|
{
|
||||||
|
"configVersion": 2,
|
||||||
|
"packages": [
|
||||||
|
{
|
||||||
|
"name": "ansi_styles",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/ansi_styles-0.3.2+1",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "2.12"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "args",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/args-2.7.0",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "async",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/async-2.13.0",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "characters",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/characters-1.4.0",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "charcode",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/charcode-1.4.0",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "checked_yaml",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/checked_yaml-2.0.4",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.8"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "cli_launcher",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/cli_launcher-0.3.2+1",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.8"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "cli_util",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/cli_util-0.4.2",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "collection",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/collection-1.19.1",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "conventional_commit",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/conventional_commit-0.6.1+1",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.8"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ffi",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/ffi-2.1.4",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.7"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "file",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/file-7.0.1",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "flutter",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/Development/flutter/packages/flutter",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.8"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "flutter_secure_storage",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/flutter_secure_storage-9.2.4",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "2.12"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "flutter_secure_storage_linux",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/flutter_secure_storage_linux-1.2.3",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "2.12"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "flutter_secure_storage_macos",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/flutter_secure_storage_macos-3.1.3",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "2.12"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "flutter_secure_storage_platform_interface",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/flutter_secure_storage_platform_interface-1.1.2",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "2.12"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "flutter_secure_storage_web",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/flutter_secure_storage_web-1.2.1",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "2.12"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "flutter_secure_storage_windows",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/flutter_secure_storage_windows-3.1.2",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "2.12"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "flutter_web_plugins",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/Development/flutter/packages/flutter_web_plugins",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.8"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "glob",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/glob-2.1.3",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "graphs",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/graphs-2.3.2",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "http",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/http-1.5.0",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "http_parser",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/http_parser-4.1.2",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "io",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/io-1.0.5",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "js",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/js-0.6.7",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "2.19"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "json_annotation",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/json_annotation-4.9.0",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "material_color_utilities",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/material_color_utilities-0.11.1",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "2.17"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "melos",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/melos-6.3.3",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.8"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "meta",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/meta-1.16.0",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "2.12"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "mustache_template",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/mustache_template-2.0.2",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.7"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "path",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/path-1.9.1",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "path_provider",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/path_provider-2.1.5",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "path_provider_android",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/path_provider_android-2.2.20",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.9"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "path_provider_foundation",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/path_provider_foundation-2.4.3",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.9"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "path_provider_linux",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/path_provider_linux-2.2.1",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "2.19"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "path_provider_platform_interface",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.1.2",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "path_provider_windows",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/path_provider_windows-2.3.0",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "platform",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/platform-3.1.6",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "plugin_platform_interface",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/plugin_platform_interface-2.1.8",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "pool",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/pool-1.5.2",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "process",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/process-5.0.5",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "prompts",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/prompts-2.0.0",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "2.12"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "pub_semver",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/pub_semver-2.2.0",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "pub_updater",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/pub_updater-0.5.0",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "pubspec_parse",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/pubspec_parse-1.5.0",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.6"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sky_engine",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/Development/flutter/bin/cache/pkg/sky_engine",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.8"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "source_span",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/source_span-1.10.1",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "stack_trace",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/stack_trace-1.12.1",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "string_scanner",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/string_scanner-1.4.1",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "term_glyph",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/term_glyph-1.2.2",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "typed_data",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/typed_data-1.4.0",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "vector_math",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/vector_math-2.2.0",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "web",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/web-1.1.1",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "win32",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/win32-5.15.0",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.8"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "xdg_directories",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/xdg_directories-1.1.0",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "yaml",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/yaml-3.1.3",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "yaml_edit",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/yaml_edit-2.2.2",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sf_app_platform_mono_repo",
|
||||||
|
"rootUri": "../",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"generator": "pub",
|
||||||
|
"generatorVersion": "3.9.2",
|
||||||
|
"flutterRoot": "file:///Users/juliandalcalaf/Development/flutter",
|
||||||
|
"flutterVersion": "3.35.7",
|
||||||
|
"pubCache": "file:///Users/juliandalcalaf/.pub-cache"
|
||||||
|
}
|
||||||
491
.dart_tool/package_graph.json
Normal file
491
.dart_tool/package_graph.json
Normal file
@@ -0,0 +1,491 @@
|
|||||||
|
{
|
||||||
|
"roots": [
|
||||||
|
"sf_app_platform_mono_repo"
|
||||||
|
],
|
||||||
|
"packages": [
|
||||||
|
{
|
||||||
|
"name": "sf_app_platform_mono_repo",
|
||||||
|
"version": "0.0.0",
|
||||||
|
"dependencies": [
|
||||||
|
"flutter_secure_storage"
|
||||||
|
],
|
||||||
|
"devDependencies": [
|
||||||
|
"melos"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "flutter_secure_storage",
|
||||||
|
"version": "9.2.4",
|
||||||
|
"dependencies": [
|
||||||
|
"flutter",
|
||||||
|
"flutter_secure_storage_linux",
|
||||||
|
"flutter_secure_storage_macos",
|
||||||
|
"flutter_secure_storage_platform_interface",
|
||||||
|
"flutter_secure_storage_web",
|
||||||
|
"flutter_secure_storage_windows",
|
||||||
|
"meta"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "melos",
|
||||||
|
"version": "6.3.3",
|
||||||
|
"dependencies": [
|
||||||
|
"ansi_styles",
|
||||||
|
"args",
|
||||||
|
"async",
|
||||||
|
"cli_launcher",
|
||||||
|
"cli_util",
|
||||||
|
"collection",
|
||||||
|
"conventional_commit",
|
||||||
|
"file",
|
||||||
|
"glob",
|
||||||
|
"graphs",
|
||||||
|
"http",
|
||||||
|
"meta",
|
||||||
|
"mustache_template",
|
||||||
|
"path",
|
||||||
|
"platform",
|
||||||
|
"pool",
|
||||||
|
"prompts",
|
||||||
|
"pub_semver",
|
||||||
|
"pub_updater",
|
||||||
|
"pubspec_parse",
|
||||||
|
"string_scanner",
|
||||||
|
"yaml",
|
||||||
|
"yaml_edit"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "meta",
|
||||||
|
"version": "1.16.0",
|
||||||
|
"dependencies": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "flutter_secure_storage_windows",
|
||||||
|
"version": "3.1.2",
|
||||||
|
"dependencies": [
|
||||||
|
"ffi",
|
||||||
|
"flutter",
|
||||||
|
"flutter_secure_storage_platform_interface",
|
||||||
|
"path",
|
||||||
|
"path_provider",
|
||||||
|
"win32"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "flutter_secure_storage_web",
|
||||||
|
"version": "1.2.1",
|
||||||
|
"dependencies": [
|
||||||
|
"flutter",
|
||||||
|
"flutter_secure_storage_platform_interface",
|
||||||
|
"flutter_web_plugins",
|
||||||
|
"js"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "flutter_secure_storage_platform_interface",
|
||||||
|
"version": "1.1.2",
|
||||||
|
"dependencies": [
|
||||||
|
"flutter",
|
||||||
|
"plugin_platform_interface"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "flutter_secure_storage_macos",
|
||||||
|
"version": "3.1.3",
|
||||||
|
"dependencies": [
|
||||||
|
"flutter",
|
||||||
|
"flutter_secure_storage_platform_interface"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "flutter_secure_storage_linux",
|
||||||
|
"version": "1.2.3",
|
||||||
|
"dependencies": [
|
||||||
|
"flutter",
|
||||||
|
"flutter_secure_storage_platform_interface"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "flutter",
|
||||||
|
"version": "0.0.0",
|
||||||
|
"dependencies": [
|
||||||
|
"characters",
|
||||||
|
"collection",
|
||||||
|
"material_color_utilities",
|
||||||
|
"meta",
|
||||||
|
"sky_engine",
|
||||||
|
"vector_math"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "yaml_edit",
|
||||||
|
"version": "2.2.2",
|
||||||
|
"dependencies": [
|
||||||
|
"collection",
|
||||||
|
"meta",
|
||||||
|
"source_span",
|
||||||
|
"yaml"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "yaml",
|
||||||
|
"version": "3.1.3",
|
||||||
|
"dependencies": [
|
||||||
|
"collection",
|
||||||
|
"source_span",
|
||||||
|
"string_scanner"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "string_scanner",
|
||||||
|
"version": "1.4.1",
|
||||||
|
"dependencies": [
|
||||||
|
"source_span"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "pubspec_parse",
|
||||||
|
"version": "1.5.0",
|
||||||
|
"dependencies": [
|
||||||
|
"checked_yaml",
|
||||||
|
"collection",
|
||||||
|
"json_annotation",
|
||||||
|
"pub_semver",
|
||||||
|
"yaml"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "pub_updater",
|
||||||
|
"version": "0.5.0",
|
||||||
|
"dependencies": [
|
||||||
|
"http",
|
||||||
|
"json_annotation",
|
||||||
|
"process",
|
||||||
|
"pub_semver"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "pub_semver",
|
||||||
|
"version": "2.2.0",
|
||||||
|
"dependencies": [
|
||||||
|
"collection"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "prompts",
|
||||||
|
"version": "2.0.0",
|
||||||
|
"dependencies": [
|
||||||
|
"charcode",
|
||||||
|
"io"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "pool",
|
||||||
|
"version": "1.5.2",
|
||||||
|
"dependencies": [
|
||||||
|
"async",
|
||||||
|
"stack_trace"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "platform",
|
||||||
|
"version": "3.1.6",
|
||||||
|
"dependencies": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "path",
|
||||||
|
"version": "1.9.1",
|
||||||
|
"dependencies": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "mustache_template",
|
||||||
|
"version": "2.0.2",
|
||||||
|
"dependencies": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "http",
|
||||||
|
"version": "1.5.0",
|
||||||
|
"dependencies": [
|
||||||
|
"async",
|
||||||
|
"http_parser",
|
||||||
|
"meta",
|
||||||
|
"web"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "graphs",
|
||||||
|
"version": "2.3.2",
|
||||||
|
"dependencies": [
|
||||||
|
"collection"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "glob",
|
||||||
|
"version": "2.1.3",
|
||||||
|
"dependencies": [
|
||||||
|
"async",
|
||||||
|
"collection",
|
||||||
|
"file",
|
||||||
|
"path",
|
||||||
|
"string_scanner"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "file",
|
||||||
|
"version": "7.0.1",
|
||||||
|
"dependencies": [
|
||||||
|
"meta",
|
||||||
|
"path"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "conventional_commit",
|
||||||
|
"version": "0.6.1+1",
|
||||||
|
"dependencies": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "collection",
|
||||||
|
"version": "1.19.1",
|
||||||
|
"dependencies": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "cli_util",
|
||||||
|
"version": "0.4.2",
|
||||||
|
"dependencies": [
|
||||||
|
"meta",
|
||||||
|
"path"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "cli_launcher",
|
||||||
|
"version": "0.3.2+1",
|
||||||
|
"dependencies": [
|
||||||
|
"path",
|
||||||
|
"yaml"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "async",
|
||||||
|
"version": "2.13.0",
|
||||||
|
"dependencies": [
|
||||||
|
"collection",
|
||||||
|
"meta"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "args",
|
||||||
|
"version": "2.7.0",
|
||||||
|
"dependencies": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ansi_styles",
|
||||||
|
"version": "0.3.2+1",
|
||||||
|
"dependencies": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "win32",
|
||||||
|
"version": "5.15.0",
|
||||||
|
"dependencies": [
|
||||||
|
"ffi"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "path_provider",
|
||||||
|
"version": "2.1.5",
|
||||||
|
"dependencies": [
|
||||||
|
"flutter",
|
||||||
|
"path_provider_android",
|
||||||
|
"path_provider_foundation",
|
||||||
|
"path_provider_linux",
|
||||||
|
"path_provider_platform_interface",
|
||||||
|
"path_provider_windows"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ffi",
|
||||||
|
"version": "2.1.4",
|
||||||
|
"dependencies": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "js",
|
||||||
|
"version": "0.6.7",
|
||||||
|
"dependencies": [
|
||||||
|
"meta"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "flutter_web_plugins",
|
||||||
|
"version": "0.0.0",
|
||||||
|
"dependencies": [
|
||||||
|
"flutter"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "plugin_platform_interface",
|
||||||
|
"version": "2.1.8",
|
||||||
|
"dependencies": [
|
||||||
|
"meta"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sky_engine",
|
||||||
|
"version": "0.0.0",
|
||||||
|
"dependencies": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "vector_math",
|
||||||
|
"version": "2.2.0",
|
||||||
|
"dependencies": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "material_color_utilities",
|
||||||
|
"version": "0.11.1",
|
||||||
|
"dependencies": [
|
||||||
|
"collection"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "characters",
|
||||||
|
"version": "1.4.0",
|
||||||
|
"dependencies": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "source_span",
|
||||||
|
"version": "1.10.1",
|
||||||
|
"dependencies": [
|
||||||
|
"collection",
|
||||||
|
"path",
|
||||||
|
"term_glyph"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "json_annotation",
|
||||||
|
"version": "4.9.0",
|
||||||
|
"dependencies": [
|
||||||
|
"meta"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "checked_yaml",
|
||||||
|
"version": "2.0.4",
|
||||||
|
"dependencies": [
|
||||||
|
"json_annotation",
|
||||||
|
"source_span",
|
||||||
|
"yaml"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "process",
|
||||||
|
"version": "5.0.5",
|
||||||
|
"dependencies": [
|
||||||
|
"file",
|
||||||
|
"path",
|
||||||
|
"platform"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "io",
|
||||||
|
"version": "1.0.5",
|
||||||
|
"dependencies": [
|
||||||
|
"meta",
|
||||||
|
"path",
|
||||||
|
"string_scanner"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "charcode",
|
||||||
|
"version": "1.4.0",
|
||||||
|
"dependencies": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "stack_trace",
|
||||||
|
"version": "1.12.1",
|
||||||
|
"dependencies": [
|
||||||
|
"path"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "web",
|
||||||
|
"version": "1.1.1",
|
||||||
|
"dependencies": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "http_parser",
|
||||||
|
"version": "4.1.2",
|
||||||
|
"dependencies": [
|
||||||
|
"collection",
|
||||||
|
"source_span",
|
||||||
|
"string_scanner",
|
||||||
|
"typed_data"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "path_provider_windows",
|
||||||
|
"version": "2.3.0",
|
||||||
|
"dependencies": [
|
||||||
|
"ffi",
|
||||||
|
"flutter",
|
||||||
|
"path",
|
||||||
|
"path_provider_platform_interface"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "path_provider_platform_interface",
|
||||||
|
"version": "2.1.2",
|
||||||
|
"dependencies": [
|
||||||
|
"flutter",
|
||||||
|
"platform",
|
||||||
|
"plugin_platform_interface"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "path_provider_linux",
|
||||||
|
"version": "2.2.1",
|
||||||
|
"dependencies": [
|
||||||
|
"ffi",
|
||||||
|
"flutter",
|
||||||
|
"path",
|
||||||
|
"path_provider_platform_interface",
|
||||||
|
"xdg_directories"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "path_provider_foundation",
|
||||||
|
"version": "2.4.3",
|
||||||
|
"dependencies": [
|
||||||
|
"flutter",
|
||||||
|
"path_provider_platform_interface"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "path_provider_android",
|
||||||
|
"version": "2.2.20",
|
||||||
|
"dependencies": [
|
||||||
|
"flutter",
|
||||||
|
"path_provider_platform_interface"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "term_glyph",
|
||||||
|
"version": "1.2.2",
|
||||||
|
"dependencies": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "typed_data",
|
||||||
|
"version": "1.4.0",
|
||||||
|
"dependencies": [
|
||||||
|
"collection"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "xdg_directories",
|
||||||
|
"version": "1.1.0",
|
||||||
|
"dependencies": [
|
||||||
|
"meta",
|
||||||
|
"path"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"configVersion": 1
|
||||||
|
}
|
||||||
BIN
.dart_tool/pub/bin/melos/melos.dart-3.9.2.snapshot
Normal file
BIN
.dart_tool/pub/bin/melos/melos.dart-3.9.2.snapshot
Normal file
Binary file not shown.
@@ -1,4 +1,5 @@
|
|||||||
import 'package:auth/auth.dart';
|
import 'package:auth/auth.dart';
|
||||||
|
import 'package:get_it/get_it.dart';
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
@@ -6,7 +7,7 @@ import 'package:flutter_dotenv/flutter_dotenv.dart';
|
|||||||
import 'package:flutter_localizations/flutter_localizations.dart';
|
import 'package:flutter_localizations/flutter_localizations.dart';
|
||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
import 'package:design_system/design_system.dart';
|
import 'package:design_system/design_system.dart';
|
||||||
import 'package:sca_treezor/sca_treezor_module.dart';
|
import 'package:sca_treezor/sca_treezor.dart';
|
||||||
import 'package:sf_app_platform/config/env/questia_env_config.dart';
|
import 'package:sf_app_platform/config/env/questia_env_config.dart';
|
||||||
import 'package:sf_app_platform/navigation/app_router.dart';
|
import 'package:sf_app_platform/navigation/app_router.dart';
|
||||||
import 'package:navigation/navigation.dart';
|
import 'package:navigation/navigation.dart';
|
||||||
@@ -31,7 +32,14 @@ Future<void> main() async {
|
|||||||
await configureDependencies(
|
await configureDependencies(
|
||||||
QuestiaEnvConfig(),
|
QuestiaEnvConfig(),
|
||||||
log: kDebugMode,
|
log: kDebugMode,
|
||||||
onTreezorTokenExpired: () => appRouter.go(AppRoutes.scaTreezor),
|
onTokenExpired: () => appRouter.go(AppRoutes.scaTreezor),
|
||||||
|
onUnauthorized: () async {
|
||||||
|
try {
|
||||||
|
await GetIt.I<TreezorWalletConnectionService>().logout();
|
||||||
|
} catch (_) {}
|
||||||
|
await clearSessionData();
|
||||||
|
appRouter.go(AppRoutes.login);
|
||||||
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
runApp(const ProviderScope(child: PlatformApp()));
|
runApp(const ProviderScope(child: PlatformApp()));
|
||||||
@@ -55,6 +63,7 @@ class PlatformAppState extends ConsumerState<PlatformApp>
|
|||||||
walletHeartbeat = WalletHeartbeatService(
|
walletHeartbeat = WalletHeartbeatService(
|
||||||
repository: ref.read(treezorRepositoryProvider),
|
repository: ref.read(treezorRepositoryProvider),
|
||||||
sessionLocal: SessionLocalDatasourceImpl(),
|
sessionLocal: SessionLocalDatasourceImpl(),
|
||||||
|
onError: () => appRouter.go(AppRoutes.scaTreezor),
|
||||||
);
|
);
|
||||||
onBeforeSessionCleared = walletHeartbeat.stop;
|
onBeforeSessionCleared = walletHeartbeat.stop;
|
||||||
walletHeartbeat.start();
|
walletHeartbeat.start();
|
||||||
|
|||||||
@@ -1,21 +1,24 @@
|
|||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
|
||||||
import 'package:auth/auth.dart';
|
import 'package:auth/auth.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:sf_shared/sf_shared.dart';
|
import 'package:sf_shared/sf_shared.dart';
|
||||||
|
|
||||||
class WalletHeartbeatService {
|
class WalletHeartbeatService {
|
||||||
WalletHeartbeatService({
|
WalletHeartbeatService({
|
||||||
required TreezorRepository repository,
|
required TreezorRepository repository,
|
||||||
required SessionLocalDatasource sessionLocal,
|
required SessionLocalDatasource sessionLocal,
|
||||||
|
required void Function() onError,
|
||||||
}) : _repository = repository,
|
}) : _repository = repository,
|
||||||
_sessionLocal = sessionLocal;
|
_sessionLocal = sessionLocal,
|
||||||
|
_onError = onError;
|
||||||
|
|
||||||
final TreezorRepository _repository;
|
final TreezorRepository _repository;
|
||||||
final SessionLocalDatasource _sessionLocal;
|
final SessionLocalDatasource _sessionLocal;
|
||||||
|
final void Function() _onError;
|
||||||
Timer? _timer;
|
Timer? _timer;
|
||||||
|
|
||||||
static const _interval = Duration(minutes: 4);
|
static const _interval = Duration(minutes: 3);
|
||||||
|
|
||||||
void start() {
|
void start() {
|
||||||
if (_timer != null) return;
|
if (_timer != null) return;
|
||||||
@@ -39,6 +42,8 @@ class WalletHeartbeatService {
|
|||||||
debugPrint('[WalletHeartbeat] /wallets/$walletId => OK');
|
debugPrint('[WalletHeartbeat] /wallets/$walletId => OK');
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
debugPrint('[WalletHeartbeat] error: $e');
|
debugPrint('[WalletHeartbeat] error: $e');
|
||||||
|
stop();
|
||||||
|
_onError();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -654,6 +654,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.0"
|
version: "1.3.0"
|
||||||
|
lottie:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: lottie
|
||||||
|
sha256: "8ae0be46dbd9e19641791dc12ee480d34e1fd3f84c749adc05f3ad9342b71b95"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.3.2"
|
||||||
matcher:
|
matcher:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|||||||
@@ -13,6 +13,12 @@
|
|||||||
"packageUri": "lib/",
|
"packageUri": "lib/",
|
||||||
"languageVersion": "3.5"
|
"languageVersion": "3.5"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "archive",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/archive-4.0.9",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.0"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "args",
|
"name": "args",
|
||||||
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/args-2.7.0",
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/args-2.7.0",
|
||||||
@@ -385,6 +391,12 @@
|
|||||||
"packageUri": "lib/",
|
"packageUri": "lib/",
|
||||||
"languageVersion": "3.4"
|
"languageVersion": "3.4"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "lottie",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/lottie-3.3.2",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.9"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "matcher",
|
"name": "matcher",
|
||||||
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/matcher-0.12.17",
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/matcher-0.12.17",
|
||||||
@@ -493,6 +505,12 @@
|
|||||||
"packageUri": "lib/",
|
"packageUri": "lib/",
|
||||||
"languageVersion": "3.4"
|
"languageVersion": "3.4"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "posix",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/posix-6.5.0",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.0"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "pub_semver",
|
"name": "pub_semver",
|
||||||
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/pub_semver-2.2.0",
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/pub_semver-2.2.0",
|
||||||
|
|||||||
@@ -109,6 +109,7 @@
|
|||||||
"flutter_riverpod",
|
"flutter_riverpod",
|
||||||
"fonts",
|
"fonts",
|
||||||
"get_it",
|
"get_it",
|
||||||
|
"lottie",
|
||||||
"top_snackbar_flutter",
|
"top_snackbar_flutter",
|
||||||
"utils"
|
"utils"
|
||||||
]
|
]
|
||||||
@@ -1306,6 +1307,34 @@
|
|||||||
"args",
|
"args",
|
||||||
"yaml"
|
"yaml"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "lottie",
|
||||||
|
"version": "3.3.2",
|
||||||
|
"dependencies": [
|
||||||
|
"archive",
|
||||||
|
"flutter",
|
||||||
|
"http",
|
||||||
|
"path",
|
||||||
|
"vector_math"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "archive",
|
||||||
|
"version": "4.0.9",
|
||||||
|
"dependencies": [
|
||||||
|
"path",
|
||||||
|
"posix"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "posix",
|
||||||
|
"version": "6.5.0",
|
||||||
|
"dependencies": [
|
||||||
|
"ffi",
|
||||||
|
"meta",
|
||||||
|
"path"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"configVersion": 1
|
"configVersion": 1
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ class _ActivityScreenState extends ConsumerState<ActivityScreen> {
|
|||||||
ActivityViewState viewState,
|
ActivityViewState viewState,
|
||||||
) {
|
) {
|
||||||
if (viewState.isLoading) {
|
if (viewState.isLoading) {
|
||||||
return const Center(child: CircularProgressIndicator());
|
return const Center(child: AppLoadingIndicator());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (viewState.errorMessage.isNotEmpty && viewState.tabs.isEmpty) {
|
if (viewState.errorMessage.isNotEmpty && viewState.tabs.isEmpty) {
|
||||||
@@ -166,7 +166,7 @@ class _ActivityScreenState extends ConsumerState<ActivityScreen> {
|
|||||||
ActivityViewState viewState,
|
ActivityViewState viewState,
|
||||||
) {
|
) {
|
||||||
if (viewState.isLoadingTransactions) {
|
if (viewState.isLoadingTransactions) {
|
||||||
return const Center(child: CircularProgressIndicator());
|
return const Center(child: AppLoadingIndicator());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (viewState.errorMessage.isNotEmpty) {
|
if (viewState.errorMessage.isNotEmpty) {
|
||||||
@@ -201,7 +201,7 @@ class _ActivityScreenState extends ConsumerState<ActivityScreen> {
|
|||||||
padding: const EdgeInsets.only(bottom: 16),
|
padding: const EdgeInsets.only(bottom: 16),
|
||||||
child: balanceAsync.when(
|
child: balanceAsync.when(
|
||||||
loading: () =>
|
loading: () =>
|
||||||
const Center(child: CircularProgressIndicator()),
|
const Center(child: AppLoadingIndicator(size: 48)),
|
||||||
error: (_, __) => const SizedBox.shrink(),
|
error: (_, __) => const SizedBox.shrink(),
|
||||||
data: (balance) => WalletBalanceBlock(
|
data: (balance) => WalletBalanceBlock(
|
||||||
availableBalance: balance.availableBalance,
|
availableBalance: balance.availableBalance,
|
||||||
|
|||||||
@@ -17,6 +17,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "7.7.1"
|
version: "7.7.1"
|
||||||
|
archive:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: archive
|
||||||
|
sha256: a96e8b390886ee8abb49b7bd3ac8df6f451c621619f52a26e815fdcf568959ff
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "4.0.9"
|
||||||
args:
|
args:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -501,6 +509,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.0"
|
version: "1.3.0"
|
||||||
|
lottie:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: lottie
|
||||||
|
sha256: "8ae0be46dbd9e19641791dc12ee480d34e1fd3f84c749adc05f3ad9342b71b95"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.3.2"
|
||||||
matcher:
|
matcher:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -645,6 +661,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.5.2"
|
version: "1.5.2"
|
||||||
|
posix:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: posix
|
||||||
|
sha256: "185ef7606574f789b40f289c233efa52e96dead518aed988e040a10737febb07"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "6.5.0"
|
||||||
pub_semver:
|
pub_semver:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import 'package:design_system/design_system.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_svg/flutter_svg.dart';
|
import 'package:flutter_svg/flutter_svg.dart';
|
||||||
|
|
||||||
@@ -14,7 +15,7 @@ class LoadingScreen extends StatelessWidget{
|
|||||||
children: [
|
children: [
|
||||||
Spacer(flex: 8),
|
Spacer(flex: 8),
|
||||||
SvgPicture.asset("assets/images/ui/logo_sf.svg"),
|
SvgPicture.asset("assets/images/ui/logo_sf.svg"),
|
||||||
CircularProgressIndicator(),
|
AppLoadingIndicator(),
|
||||||
Spacer(flex: 10)
|
Spacer(flex: 10)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import 'package:design_system/design_system.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
class LoadingGoogleScreen extends StatelessWidget {
|
class LoadingGoogleScreen extends StatelessWidget {
|
||||||
@@ -16,7 +17,7 @@ class LoadingGoogleScreen extends StatelessWidget {
|
|||||||
"Continuar con Google",
|
"Continuar con Google",
|
||||||
style: TextStyle(fontWeight: FontWeight.bold, fontSize: 30),
|
style: TextStyle(fontWeight: FontWeight.bold, fontSize: 30),
|
||||||
),
|
),
|
||||||
CircularProgressIndicator(),
|
AppLoadingIndicator(),
|
||||||
Text("Redirigiendo a Google"),
|
Text("Redirigiendo a Google"),
|
||||||
Spacer(flex: 10),
|
Spacer(flex: 10),
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -125,7 +125,7 @@ class LoginScreen extends ConsumerWidget {
|
|||||||
if (!context.mounted) return;
|
if (!context.mounted) return;
|
||||||
|
|
||||||
if (verified == true) {
|
if (verified == true) {
|
||||||
navigationContract.goTo(AppRoutes.scaTreezor);
|
navigationContract.goTo('${AppRoutes.scaTreezor}?fromLogin=true');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -10,10 +10,14 @@ class SCATreezorBuilder {
|
|||||||
|
|
||||||
Page<void> buildPage(BuildContext context, GoRouterState state) {
|
Page<void> buildPage(BuildContext context, GoRouterState state) {
|
||||||
final navigationContract = GetIt.I<NavigationContract>();
|
final navigationContract = GetIt.I<NavigationContract>();
|
||||||
|
final fromLogin = state.uri.queryParameters['fromLogin'] == 'true';
|
||||||
|
|
||||||
return MaterialPage<void>(
|
return MaterialPage<void>(
|
||||||
key: state.pageKey,
|
key: state.pageKey,
|
||||||
child: SCATreezorScreen(navigationContract: navigationContract),
|
child: SCATreezorScreen(
|
||||||
|
navigationContract: navigationContract,
|
||||||
|
showCloseButton: fromLogin,
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,8 +11,13 @@ import 'sca_treezor_view_state.dart';
|
|||||||
|
|
||||||
class SCATreezorScreen extends ConsumerWidget {
|
class SCATreezorScreen extends ConsumerWidget {
|
||||||
final NavigationContract navigationContract;
|
final NavigationContract navigationContract;
|
||||||
|
final bool showCloseButton;
|
||||||
|
|
||||||
const SCATreezorScreen({super.key, required this.navigationContract});
|
const SCATreezorScreen({
|
||||||
|
super.key,
|
||||||
|
required this.navigationContract,
|
||||||
|
this.showCloseButton = false,
|
||||||
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, WidgetRef ref) {
|
Widget build(BuildContext context, WidgetRef ref) {
|
||||||
@@ -37,24 +42,25 @@ class SCATreezorScreen extends ConsumerWidget {
|
|||||||
body: SafeArea(
|
body: SafeArea(
|
||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
Align(
|
if (showCloseButton)
|
||||||
alignment: Alignment.topRight,
|
Align(
|
||||||
child: Padding(
|
alignment: Alignment.topRight,
|
||||||
padding: const EdgeInsets.only(top: 8, right: 8),
|
child: Padding(
|
||||||
child: IconButton(
|
padding: const EdgeInsets.only(top: 8, right: 8),
|
||||||
onPressed: state.isProcessing
|
child: IconButton(
|
||||||
? null
|
onPressed: state.isProcessing
|
||||||
: () => navigationContract.goTo(AppRoutes.login),
|
? null
|
||||||
icon: const Icon(Icons.close),
|
: () => navigationContract.goTo(AppRoutes.login),
|
||||||
|
icon: const Icon(Icons.close),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
|
||||||
Expanded(
|
Expanded(
|
||||||
child: Center(
|
child: Center(
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: const EdgeInsets.all(16),
|
padding: const EdgeInsets.all(16),
|
||||||
child: state.isLoading
|
child: state.isLoading
|
||||||
? const CircularProgressIndicator()
|
? const AppLoadingIndicator()
|
||||||
: state.isProvisioned
|
: state.isProvisioned
|
||||||
? Column(
|
? Column(
|
||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
@@ -126,7 +132,7 @@ class _ProvisioningBody extends ConsumerWidget {
|
|||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
children: [
|
children: [
|
||||||
const SizedBox(height: 16),
|
const SizedBox(height: 16),
|
||||||
const CircularProgressIndicator(),
|
const AppLoadingIndicator(),
|
||||||
const SizedBox(height: 8),
|
const SizedBox(height: 8),
|
||||||
Text(context.translate(I18n.scaProvisioning)),
|
Text(context.translate(I18n.scaProvisioning)),
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ class AllowanceScreen extends ConsumerWidget {
|
|||||||
final weekDays = _localizedWeekDays(context);
|
final weekDays = _localizedWeekDays(context);
|
||||||
|
|
||||||
if (viewState.isLoading) {
|
if (viewState.isLoading) {
|
||||||
return const Scaffold(body: Center(child: CircularProgressIndicator()));
|
return const Scaffold(body: Center(child: AppLoadingIndicator()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (viewState.errorMessage.isNotEmpty) {
|
if (viewState.errorMessage.isNotEmpty) {
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ class ChildWalletScreen extends ConsumerWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (viewState.isLoading) {
|
if (viewState.isLoading) {
|
||||||
return const Scaffold(body: Center(child: CircularProgressIndicator()));
|
return const Scaffold(body: Center(child: AppLoadingIndicator()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (viewState.errorMessage.isNotEmpty) {
|
if (viewState.errorMessage.isNotEmpty) {
|
||||||
@@ -272,7 +272,7 @@ class ChildWalletScreen extends ConsumerWidget {
|
|||||||
const Center(
|
const Center(
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: EdgeInsets.all(24),
|
padding: EdgeInsets.all(24),
|
||||||
child: CircularProgressIndicator(),
|
child: AppLoadingIndicator(size: 48),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
else if (viewState.transactions.isEmpty)
|
else if (viewState.transactions.isEmpty)
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ class DepositScreen extends ConsumerWidget {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (viewState.isLoading) {
|
if (viewState.isLoading) {
|
||||||
return const Scaffold(body: Center(child: CircularProgressIndicator()));
|
return const Scaffold(body: Center(child: AppLoadingIndicator()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (viewState.errorMessage.isNotEmpty && viewState.childProfile == null) {
|
if (viewState.errorMessage.isNotEmpty && viewState.childProfile == null) {
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ class ExtractScreen extends ConsumerWidget {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (viewState.isLoading) {
|
if (viewState.isLoading) {
|
||||||
return const Scaffold(body: Center(child: CircularProgressIndicator()));
|
return const Scaffold(body: Center(child: AppLoadingIndicator()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (viewState.errorMessage.isNotEmpty && viewState.childProfile == null) {
|
if (viewState.errorMessage.isNotEmpty && viewState.childProfile == null) {
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ class GoalsScreen extends ConsumerWidget {
|
|||||||
final cardStatus = ref.watch(childDataProvider(childId)).cardStatus;
|
final cardStatus = ref.watch(childDataProvider(childId)).cardStatus;
|
||||||
|
|
||||||
if (viewState.isLoading) {
|
if (viewState.isLoading) {
|
||||||
return const Scaffold(body: Center(child: CircularProgressIndicator()));
|
return const Scaffold(body: Center(child: AppLoadingIndicator()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (viewState.errorMessage.isNotEmpty) {
|
if (viewState.errorMessage.isNotEmpty) {
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ class LimitsScreen extends ConsumerWidget {
|
|||||||
final cardStatus = ref.watch(childDataProvider(childId)).cardStatus;
|
final cardStatus = ref.watch(childDataProvider(childId)).cardStatus;
|
||||||
|
|
||||||
if (viewState.isLoading) {
|
if (viewState.isLoading) {
|
||||||
return const Scaffold(body: Center(child: CircularProgressIndicator()));
|
return const Scaffold(body: Center(child: AppLoadingIndicator()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (viewState.errorMessage.isNotEmpty && viewState.childProfile == null) {
|
if (viewState.errorMessage.isNotEmpty && viewState.childProfile == null) {
|
||||||
@@ -92,13 +92,20 @@ class _LimitsFooter extends StatelessWidget {
|
|||||||
: () async {
|
: () async {
|
||||||
final success = await viewModel.saveAll();
|
final success = await viewModel.saveAll();
|
||||||
if (!context.mounted) return;
|
if (!context.mounted) return;
|
||||||
showTopSnackbar(
|
if (success) {
|
||||||
context,
|
showTopSnackbar(
|
||||||
message: success
|
context,
|
||||||
? context.translate(I18n.limitsSaveSuccess)
|
message: context.translate(I18n.limitsSaveSuccess),
|
||||||
: context.translate(I18n.limitsSaveError),
|
type: MessageType.success,
|
||||||
type: success ? MessageType.success : MessageType.error,
|
);
|
||||||
);
|
navigation.goBack();
|
||||||
|
} else {
|
||||||
|
showTopSnackbar(
|
||||||
|
context,
|
||||||
|
message: context.translate(I18n.limitsSaveError),
|
||||||
|
type: MessageType.error,
|
||||||
|
);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
cancelText: context.translate(I18n.cancel),
|
cancelText: context.translate(I18n.cancel),
|
||||||
onCancelPressed: () => navigation.goBack(),
|
onCancelPressed: () => navigation.goBack(),
|
||||||
@@ -136,7 +143,7 @@ class _SpendingLimitsSection extends StatelessWidget {
|
|||||||
if (viewState.isLoadingLimits)
|
if (viewState.isLoadingLimits)
|
||||||
const Padding(
|
const Padding(
|
||||||
padding: EdgeInsets.symmetric(vertical: 16),
|
padding: EdgeInsets.symmetric(vertical: 16),
|
||||||
child: Center(child: CircularProgressIndicator()),
|
child: Center(child: AppLoadingIndicator(size: 48)),
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
..._limitFields.map((entry) {
|
..._limitFields.map((entry) {
|
||||||
@@ -196,7 +203,7 @@ class _BlockedStoresSection extends StatelessWidget {
|
|||||||
if (viewState.isLoadingMccGroups)
|
if (viewState.isLoadingMccGroups)
|
||||||
const Padding(
|
const Padding(
|
||||||
padding: EdgeInsets.symmetric(vertical: 16),
|
padding: EdgeInsets.symmetric(vertical: 16),
|
||||||
child: Center(child: CircularProgressIndicator()),
|
child: Center(child: AppLoadingIndicator(size: 48)),
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
...viewState.mccGroups.map((group) {
|
...viewState.mccGroups.map((group) {
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ class LockCardScreen extends ConsumerWidget {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (viewState.isLoading) {
|
if (viewState.isLoading) {
|
||||||
return const Scaffold(body: Center(child: CircularProgressIndicator()));
|
return const Scaffold(body: Center(child: AppLoadingIndicator()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (viewState.errorMessage.isNotEmpty && viewState.childProfile == null) {
|
if (viewState.errorMessage.isNotEmpty && viewState.childProfile == null) {
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ class HomeScreen extends ConsumerWidget {
|
|||||||
final viewState = ref.watch(homeViewModelProvider);
|
final viewState = ref.watch(homeViewModelProvider);
|
||||||
|
|
||||||
if (viewState.isLoading) {
|
if (viewState.isLoading) {
|
||||||
return const Center(child: CircularProgressIndicator());
|
return const Center(child: AppLoadingIndicator());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (viewState.errorMessage.isNotEmpty) {
|
if (viewState.errorMessage.isNotEmpty) {
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ class PaymentMethodsScreen extends ConsumerWidget {
|
|||||||
if (viewState.isDeleting)
|
if (viewState.isDeleting)
|
||||||
Container(
|
Container(
|
||||||
color: Colors.black26,
|
color: Colors.black26,
|
||||||
child: const Center(child: CircularProgressIndicator()),
|
child: const Center(child: AppLoadingIndicator()),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
@@ -57,7 +57,7 @@ class PaymentMethodsScreen extends ConsumerWidget {
|
|||||||
PaymentMethodsViewState viewState,
|
PaymentMethodsViewState viewState,
|
||||||
) {
|
) {
|
||||||
if (viewState.isLoading) {
|
if (viewState.isLoading) {
|
||||||
return const Center(child: CircularProgressIndicator());
|
return const Center(child: AppLoadingIndicator());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (viewState.errorMessage.isNotEmpty) {
|
if (viewState.errorMessage.isNotEmpty) {
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ class PayoutScreen extends ConsumerWidget {
|
|||||||
) {
|
) {
|
||||||
switch (viewState.step) {
|
switch (viewState.step) {
|
||||||
case PayoutStep.loading:
|
case PayoutStep.loading:
|
||||||
return const Center(child: CircularProgressIndicator());
|
return const Center(child: AppLoadingIndicator());
|
||||||
case PayoutStep.beneficiaryList:
|
case PayoutStep.beneficiaryList:
|
||||||
return _buildBeneficiaryList(context, ref, theme, viewState);
|
return _buildBeneficiaryList(context, ref, theme, viewState);
|
||||||
case PayoutStep.addBeneficiary:
|
case PayoutStep.addBeneficiary:
|
||||||
@@ -126,14 +126,6 @@ class PayoutScreen extends ConsumerWidget {
|
|||||||
child: Column(
|
child: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.stretch,
|
crossAxisAlignment: CrossAxisAlignment.stretch,
|
||||||
children: [
|
children: [
|
||||||
if (viewState.errorMessage.isNotEmpty)
|
|
||||||
Padding(
|
|
||||||
padding: const EdgeInsets.only(bottom: 16),
|
|
||||||
child: Text(
|
|
||||||
viewState.errorMessage,
|
|
||||||
style: const TextStyle(color: Colors.red, fontSize: 13),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
if (viewState.beneficiaries.isEmpty) ...[
|
if (viewState.beneficiaries.isEmpty) ...[
|
||||||
const SizedBox(height: 32),
|
const SizedBox(height: 32),
|
||||||
Icon(
|
Icon(
|
||||||
@@ -287,18 +279,9 @@ class PayoutScreen extends ConsumerWidget {
|
|||||||
label: context.translate(I18n.payoutHolderNameLabel),
|
label: context.translate(I18n.payoutHolderNameLabel),
|
||||||
hint: context.translate(I18n.payoutHolderNameHint),
|
hint: context.translate(I18n.payoutHolderNameHint),
|
||||||
),
|
),
|
||||||
const SizedBox(height: 8),
|
|
||||||
if (viewState.errorMessage.isNotEmpty)
|
|
||||||
Padding(
|
|
||||||
padding: const EdgeInsets.only(bottom: 8),
|
|
||||||
child: Text(
|
|
||||||
viewState.errorMessage,
|
|
||||||
style: const TextStyle(color: Colors.red, fontSize: 13),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
const SizedBox(height: 24),
|
const SizedBox(height: 24),
|
||||||
if (viewState.isSubmitting)
|
if (viewState.isSubmitting)
|
||||||
const Center(child: CircularProgressIndicator())
|
const Center(child: AppLoadingIndicator(size: 48))
|
||||||
else ...[
|
else ...[
|
||||||
PrimaryButton(
|
PrimaryButton(
|
||||||
text: context.translate(I18n.payoutAddBeneficiary),
|
text: context.translate(I18n.payoutAddBeneficiary),
|
||||||
@@ -371,18 +354,9 @@ class PayoutScreen extends ConsumerWidget {
|
|||||||
label: context.translate(I18n.payoutAmountLabel),
|
label: context.translate(I18n.payoutAmountLabel),
|
||||||
hint: '0.00',
|
hint: '0.00',
|
||||||
),
|
),
|
||||||
const SizedBox(height: 8),
|
|
||||||
if (viewState.errorMessage.isNotEmpty)
|
|
||||||
Padding(
|
|
||||||
padding: const EdgeInsets.only(bottom: 8),
|
|
||||||
child: Text(
|
|
||||||
viewState.errorMessage,
|
|
||||||
style: const TextStyle(color: Colors.red, fontSize: 13),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
const SizedBox(height: 24),
|
const SizedBox(height: 24),
|
||||||
if (viewState.isSubmitting)
|
if (viewState.isSubmitting)
|
||||||
const Center(child: CircularProgressIndicator())
|
const Center(child: AppLoadingIndicator(size: 48))
|
||||||
else ...[
|
else ...[
|
||||||
PrimaryButton(
|
PrimaryButton(
|
||||||
text: context.translate(I18n.payoutButton),
|
text: context.translate(I18n.payoutButton),
|
||||||
@@ -438,6 +412,6 @@ class PayoutScreen extends ConsumerWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildSuccess(BuildContext context, ThemePort theme) {
|
Widget _buildSuccess(BuildContext context, ThemePort theme) {
|
||||||
return const Center(child: CircularProgressIndicator());
|
return const Center(child: AppLoadingIndicator());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -286,18 +286,20 @@ class PayoutViewModel extends Notifier<PayoutViewState> {
|
|||||||
if (!ref.mounted) return;
|
if (!ref.mounted) return;
|
||||||
|
|
||||||
final url = 'https://savefamily.sandbox.treezor.co/v1/payouts';
|
final url = 'https://savefamily.sandbox.treezor.co/v1/payouts';
|
||||||
|
final scaInput = {
|
||||||
|
'url': url,
|
||||||
|
'body': {
|
||||||
|
'walletId': int.parse(state.walletId),
|
||||||
|
'amount': amount.toStringAsFixed(2),
|
||||||
|
'currency': 'EUR',
|
||||||
|
'beneficiaryId': beneficiary.id,
|
||||||
|
'beneficiaryValidationId': beneficiaryValidationId,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
debugPrint('[Payout] SCA input: ${jsonEncode(scaInput)}');
|
||||||
final scaProof = await _signatureService.generateJwsWithPin(
|
final scaProof = await _signatureService.generateJwsWithPin(
|
||||||
message: '',
|
message: '',
|
||||||
input: jsonEncode({
|
input: jsonEncode(scaInput),
|
||||||
'url': url,
|
|
||||||
'body': {
|
|
||||||
'walletId': state.walletId,
|
|
||||||
'amount': amount,
|
|
||||||
'currency': 'EUR',
|
|
||||||
'beneficiaryId': beneficiary.id,
|
|
||||||
'beneficiaryValidationId': beneficiaryValidationId,
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
pin: pin,
|
pin: pin,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ class ProfileSettingsScreen extends ConsumerWidget {
|
|||||||
if (viewState.isLoading) {
|
if (viewState.isLoading) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
backgroundColor: theme.getColorFor(ThemeCode.backgroundSecondary),
|
backgroundColor: theme.getColorFor(ThemeCode.backgroundSecondary),
|
||||||
body: const Center(child: CircularProgressIndicator()),
|
body: const Center(child: AppLoadingIndicator()),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -661,7 +661,7 @@ class ProfileSettingsScreen extends ConsumerWidget {
|
|||||||
showDialog(
|
showDialog(
|
||||||
context: context,
|
context: context,
|
||||||
barrierDismissible: false,
|
barrierDismissible: false,
|
||||||
builder: (_) => const Center(child: CircularProgressIndicator()),
|
builder: (_) => const Center(child: AppLoadingIndicator()),
|
||||||
);
|
);
|
||||||
try {
|
try {
|
||||||
await ref.read(logoutProvider.future);
|
await ref.read(logoutProvider.future);
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
ProfileViewState viewState,
|
ProfileViewState viewState,
|
||||||
) {
|
) {
|
||||||
if (viewState.isLoading) {
|
if (viewState.isLoading) {
|
||||||
return const Center(child: CircularProgressIndicator());
|
return const Center(child: AppLoadingIndicator());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (viewState.errorMessage.isNotEmpty) {
|
if (viewState.errorMessage.isNotEmpty) {
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -14,3 +14,4 @@ export 'src/dropdowns/country_prefix_picker.dart';
|
|||||||
export 'src/containers/section_container.dart';
|
export 'src/containers/section_container.dart';
|
||||||
export 'src/containers/footer_container.dart';
|
export 'src/containers/footer_container.dart';
|
||||||
export 'src/rows/editable_row.dart';
|
export 'src/rows/editable_row.dart';
|
||||||
|
export 'src/loading/app_loading_indicator.dart';
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:lottie/lottie.dart';
|
||||||
|
|
||||||
|
class AppLoadingIndicator extends StatelessWidget {
|
||||||
|
final double size;
|
||||||
|
|
||||||
|
const AppLoadingIndicator({super.key, this.size = 96});
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return SizedBox(
|
||||||
|
width: size,
|
||||||
|
height: size,
|
||||||
|
child: Lottie.asset(
|
||||||
|
'packages/design_system/assets/animations/smartphone-payment.json',
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -20,6 +20,7 @@ dependencies:
|
|||||||
fonts:
|
fonts:
|
||||||
path: ../../packages/fonts
|
path: ../../packages/fonts
|
||||||
top_snackbar_flutter: ^3.3.0
|
top_snackbar_flutter: ^3.3.0
|
||||||
|
lottie: ^3.3.1
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
@@ -34,6 +35,9 @@ dev_dependencies:
|
|||||||
flutter:
|
flutter:
|
||||||
uses-material-design: true
|
uses-material-design: true
|
||||||
|
|
||||||
|
assets:
|
||||||
|
- assets/animations/
|
||||||
|
|
||||||
# To add assets to your package, add an assets section, like this:
|
# To add assets to your package, add an assets section, like this:
|
||||||
# assets:
|
# assets:
|
||||||
# - images/a_dot_burr.jpeg
|
# - images/a_dot_burr.jpeg
|
||||||
|
|||||||
@@ -7,6 +7,6 @@
|
|||||||
<versions>
|
<versions>
|
||||||
<version>2.6.4</version>
|
<version>2.6.4</version>
|
||||||
</versions>
|
</versions>
|
||||||
<lastUpdated>20260226000000</lastUpdated>
|
<lastUpdated>20260227000000</lastUpdated>
|
||||||
</versioning>
|
</versioning>
|
||||||
</metadata>
|
</metadata>
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
7b90ce161fd31b7548cc91c8f2a13ac0
|
e97fa16e8f35dd6c43c14f3e3999a327
|
||||||
@@ -1 +1 @@
|
|||||||
9e11339b7af5cbe6896128c907e1bb1b596c981d
|
cf2eadb6532811e0584c52dda21baf78631a71d9
|
||||||
@@ -25,6 +25,12 @@
|
|||||||
"packageUri": "lib/",
|
"packageUri": "lib/",
|
||||||
"languageVersion": "3.5"
|
"languageVersion": "3.5"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "archive",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/archive-4.0.9",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.0"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "args",
|
"name": "args",
|
||||||
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/args-2.7.0",
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/args-2.7.0",
|
||||||
@@ -337,6 +343,12 @@
|
|||||||
"packageUri": "lib/",
|
"packageUri": "lib/",
|
||||||
"languageVersion": "3.0"
|
"languageVersion": "3.0"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "http",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/http-1.6.0",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.4"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "http_multi_server",
|
"name": "http_multi_server",
|
||||||
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/http_multi_server-3.2.2",
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/http_multi_server-3.2.2",
|
||||||
@@ -409,6 +421,12 @@
|
|||||||
"packageUri": "lib/",
|
"packageUri": "lib/",
|
||||||
"languageVersion": "3.4"
|
"languageVersion": "3.4"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "lottie",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/lottie-3.3.2",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.9"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "matcher",
|
"name": "matcher",
|
||||||
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/matcher-0.12.17",
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/matcher-0.12.17",
|
||||||
@@ -517,6 +535,12 @@
|
|||||||
"packageUri": "lib/",
|
"packageUri": "lib/",
|
||||||
"languageVersion": "3.4"
|
"languageVersion": "3.4"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "posix",
|
||||||
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/posix-6.5.0",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "3.0"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "pub_semver",
|
"name": "pub_semver",
|
||||||
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/pub_semver-2.2.0",
|
"rootUri": "file:///Users/juliandalcalaf/.pub-cache/hosted/pub.dev/pub_semver-2.2.0",
|
||||||
|
|||||||
@@ -85,6 +85,7 @@
|
|||||||
"flutter_riverpod",
|
"flutter_riverpod",
|
||||||
"fonts",
|
"fonts",
|
||||||
"get_it",
|
"get_it",
|
||||||
|
"lottie",
|
||||||
"top_snackbar_flutter",
|
"top_snackbar_flutter",
|
||||||
"utils"
|
"utils"
|
||||||
]
|
]
|
||||||
@@ -1435,6 +1436,44 @@
|
|||||||
"args",
|
"args",
|
||||||
"yaml"
|
"yaml"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "lottie",
|
||||||
|
"version": "3.3.2",
|
||||||
|
"dependencies": [
|
||||||
|
"archive",
|
||||||
|
"flutter",
|
||||||
|
"http",
|
||||||
|
"path",
|
||||||
|
"vector_math"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "archive",
|
||||||
|
"version": "4.0.9",
|
||||||
|
"dependencies": [
|
||||||
|
"path",
|
||||||
|
"posix"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "posix",
|
||||||
|
"version": "6.5.0",
|
||||||
|
"dependencies": [
|
||||||
|
"ffi",
|
||||||
|
"meta",
|
||||||
|
"path"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "http",
|
||||||
|
"version": "1.6.0",
|
||||||
|
"dependencies": [
|
||||||
|
"async",
|
||||||
|
"http_parser",
|
||||||
|
"meta",
|
||||||
|
"web"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"configVersion": 1
|
"configVersion": 1
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ class _PayinBottomSheetState extends ConsumerState<PayinBottomSheet> {
|
|||||||
if (viewState.isLoadingCards)
|
if (viewState.isLoadingCards)
|
||||||
const Padding(
|
const Padding(
|
||||||
padding: EdgeInsets.symmetric(vertical: 32),
|
padding: EdgeInsets.symmetric(vertical: 32),
|
||||||
child: Center(child: CircularProgressIndicator()),
|
child: Center(child: AppLoadingIndicator(size: 48)),
|
||||||
)
|
)
|
||||||
else if (viewState.cards.isEmpty)
|
else if (viewState.cards.isEmpty)
|
||||||
_buildNoCards(context, theme)
|
_buildNoCards(context, theme)
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ class _HiPayWebViewScreenState extends ConsumerState<HiPayWebViewScreen> {
|
|||||||
|
|
||||||
Widget _buildBody(dynamic state, ThemePort theme) {
|
Widget _buildBody(dynamic state, ThemePort theme) {
|
||||||
if (state.isLoading) {
|
if (state.isLoading) {
|
||||||
return const Center(child: CircularProgressIndicator());
|
return const Center(child: AppLoadingIndicator());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state.errorMessage.isNotEmpty) {
|
if (state.errorMessage.isNotEmpty) {
|
||||||
|
|||||||
@@ -33,6 +33,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.13.4"
|
version: "0.13.4"
|
||||||
|
archive:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: archive
|
||||||
|
sha256: a96e8b390886ee8abb49b7bd3ac8df6f451c621619f52a26e815fdcf568959ff
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "4.0.9"
|
||||||
args:
|
args:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -438,6 +446,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.3.0"
|
version: "4.3.0"
|
||||||
|
http:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: http
|
||||||
|
sha256: "87721a4a50b19c7f1d49001e51409bddc46303966ce89a65af4f4e6004896412"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.6.0"
|
||||||
http_multi_server:
|
http_multi_server:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -534,6 +550,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.0"
|
version: "1.3.0"
|
||||||
|
lottie:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: lottie
|
||||||
|
sha256: "8ae0be46dbd9e19641791dc12ee480d34e1fd3f84c749adc05f3ad9342b71b95"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.3.2"
|
||||||
matcher:
|
matcher:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -677,6 +701,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.5.2"
|
version: "1.5.2"
|
||||||
|
posix:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: posix
|
||||||
|
sha256: "185ef7606574f789b40f289c233efa52e96dead518aed988e040a10737febb07"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "6.5.0"
|
||||||
pub_semver:
|
pub_semver:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|||||||
@@ -17,7 +17,8 @@ final getIt = GetIt.instance;
|
|||||||
Future<void> configureDependencies(
|
Future<void> configureDependencies(
|
||||||
EnvConfig env, {
|
EnvConfig env, {
|
||||||
bool log = false,
|
bool log = false,
|
||||||
void Function()? onTreezorTokenExpired,
|
void Function()? onTokenExpired,
|
||||||
|
void Function()? onUnauthorized,
|
||||||
}) async {
|
}) async {
|
||||||
final cookieJar = await buildPersistCookieJar();
|
final cookieJar = await buildPersistCookieJar();
|
||||||
|
|
||||||
@@ -28,9 +29,12 @@ Future<void> configureDependencies(
|
|||||||
cookieJar: cookieJar,
|
cookieJar: cookieJar,
|
||||||
);
|
);
|
||||||
|
|
||||||
if (onTreezorTokenExpired != null) {
|
if (onTokenExpired != null && onUnauthorized != null) {
|
||||||
dio.interceptors.add(
|
dio.interceptors.add(
|
||||||
TreezorTokenInterceptor(onTokenExpired: onTreezorTokenExpired),
|
TreezorTokenInterceptor(
|
||||||
|
onTokenExpired: onTokenExpired,
|
||||||
|
onUnauthorized: onUnauthorized,
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,19 +3,29 @@ import 'dart:convert';
|
|||||||
import 'package:dio/dio.dart';
|
import 'package:dio/dio.dart';
|
||||||
|
|
||||||
class TreezorTokenInterceptor extends Interceptor {
|
class TreezorTokenInterceptor extends Interceptor {
|
||||||
TreezorTokenInterceptor({required void Function() onTokenExpired})
|
TreezorTokenInterceptor({
|
||||||
: _onTokenExpired = onTokenExpired;
|
required void Function() onTokenExpired,
|
||||||
|
required void Function() onUnauthorized,
|
||||||
|
}) : _onTokenExpired = onTokenExpired,
|
||||||
|
_onUnauthorized = onUnauthorized;
|
||||||
|
|
||||||
final void Function() _onTokenExpired;
|
final void Function() _onTokenExpired;
|
||||||
|
final void Function() _onUnauthorized;
|
||||||
bool _handling = false;
|
bool _handling = false;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onError(DioException err, ErrorInterceptorHandler handler) {
|
void onError(DioException err, ErrorInterceptorHandler handler) {
|
||||||
final message = _extractApiMessage(err.response?.data);
|
if (!_handling) {
|
||||||
if (message != null && message.contains('Treezor Token Expired') && !_handling) {
|
final message = _extractApiMessage(err.response?.data);
|
||||||
_handling = true;
|
if (message != null && message.contains('Treezor Token Expired')) {
|
||||||
_onTokenExpired();
|
_handling = true;
|
||||||
Future.delayed(const Duration(seconds: 2), () => _handling = false);
|
_onTokenExpired();
|
||||||
|
Future.delayed(const Duration(seconds: 2), () => _handling = false);
|
||||||
|
} else if (err.response?.statusCode == 401) {
|
||||||
|
_handling = true;
|
||||||
|
_onUnauthorized();
|
||||||
|
Future.delayed(const Duration(seconds: 2), () => _handling = false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
handler.next(err);
|
handler.next(err);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -243,16 +243,15 @@ class TreezorRemoteDatasourceImpl implements TreezorRemoteDatasource {
|
|||||||
required String scaProof,
|
required String scaProof,
|
||||||
}) async {
|
}) async {
|
||||||
try {
|
try {
|
||||||
await _repository.post<void>(
|
final body = <String, dynamic>{
|
||||||
'/wallets/transfer',
|
'walletId': walletId,
|
||||||
body: <String, dynamic>{
|
'target': beneficiaryId,
|
||||||
'walletId': walletId,
|
'beneficiaryValidationId': beneficiaryValidationId,
|
||||||
'target': beneficiaryId,
|
'amount': amount.toStringAsFixed(2),
|
||||||
'beneficiaryValidationId': beneficiaryValidationId,
|
'scaProof': scaProof,
|
||||||
'amount': amount,
|
};
|
||||||
'scaProof': scaProof,
|
debugPrint('[Payout] POST /wallets/transfer body: $body');
|
||||||
},
|
await _repository.post<void>('/wallets/transfer', body: body);
|
||||||
);
|
|
||||||
} on DioException catch (error) {
|
} on DioException catch (error) {
|
||||||
throw _mapDioError(error, defaultMessage: 'Error in /wallets/transfer');
|
throw _mapDioError(error, defaultMessage: 'Error in /wallets/transfer');
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user