diff --git a/android/build/reports/problems/problems-report.html b/android/build/reports/problems/problems-report.html
index 214b73f..620ac10 100644
--- a/android/build/reports/problems/problems-report.html
+++ b/android/build/reports/problems/problems-report.html
@@ -650,7 +650,7 @@ code + .copy-button {
diff --git a/lib/ui/add_page/view_model/add_view_model.dart b/lib/ui/add_page/view_model/add_view_model.dart
index 61c5b3d..9f63196 100644
--- a/lib/ui/add_page/view_model/add_view_model.dart
+++ b/lib/ui/add_page/view_model/add_view_model.dart
@@ -139,7 +139,13 @@ class AddViewModel extends ChangeNotifier {
break;
}
final result2 = await _loadBal();
- isLoaded = true;
+ switch (result2) {
+ case Ok():
+ isLoaded = true;
+ break;
+ default:
+ break;
+ }
notifyListeners();
return result2;
}
diff --git a/lib/ui/add_page/widgets/add_page.dart b/lib/ui/add_page/widgets/add_page.dart
index f5ececa..9c7cf0c 100644
--- a/lib/ui/add_page/widgets/add_page.dart
+++ b/lib/ui/add_page/widgets/add_page.dart
@@ -9,6 +9,7 @@ import 'package:seshat/ui/add_page/widgets/form_popup.dart';
import 'package:seshat/ui/add_page/widgets/owner_popup.dart';
import 'package:seshat/ui/add_page/widgets/confirmation_popup.dart';
import 'package:seshat/ui/core/ui/navigation_bar.dart';
+import 'package:seshat/ui/core/ui/await_loading.dart';
import 'package:seshat/utils/result.dart';
class AddPage extends StatefulWidget {
@@ -37,7 +38,7 @@ class _AddPageState extends State {
body: ListenableBuilder(
listenable: widget.viewModel,
builder: (context, child) => switch (widget.viewModel.isLoaded) {
- false => Center(child: CircularProgressIndicator()),
+ false => AwaitLoading(),
true => switch (widget.viewModel.currentBal) {
null => Center(
child: SizedBox(
diff --git a/lib/ui/bal_page/view_model/bal_view_model.dart b/lib/ui/bal_page/view_model/bal_view_model.dart
index e52fc02..9339a4b 100644
--- a/lib/ui/bal_page/view_model/bal_view_model.dart
+++ b/lib/ui/bal_page/view_model/bal_view_model.dart
@@ -28,12 +28,12 @@ class BalViewModel extends ChangeNotifier {
Future> _load() async {
final result1 = await _loadBal();
switch (result1) {
- case Error():
- return result1;
+ case Ok():
+ isLoaded = true;
+ break;
default:
break;
}
- isLoaded = true;
notifyListeners();
return result1;
}
diff --git a/lib/ui/bal_page/widget/bal_page.dart b/lib/ui/bal_page/widget/bal_page.dart
index 10a1138..8c7fd9d 100644
--- a/lib/ui/bal_page/widget/bal_page.dart
+++ b/lib/ui/bal_page/widget/bal_page.dart
@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:seshat/domain/models/bal.dart';
import 'package:seshat/ui/bal_page/view_model/bal_view_model.dart';
import 'package:seshat/ui/core/ui/navigation_bar.dart';
+import 'package:seshat/ui/core/ui/await_loading.dart';
class BalPage extends StatefulWidget {
const BalPage({super.key, required this.viewModel});
@@ -21,7 +22,7 @@ class _BalPageState extends State {
listenable: widget.viewModel,
builder: (context, child) {
return switch (widget.viewModel.isLoaded) {
- false => Center(child: CircularProgressIndicator()),
+ false => AwaitLoading(),
true => switch (widget.viewModel.bal == null) {
true => Center(
child: Text("La BAL référencée n'est pas accessible"),
diff --git a/lib/ui/bal_page/widget/pending/bal_pending_screen.dart b/lib/ui/bal_page/widget/pending/bal_pending_screen.dart
new file mode 100644
index 0000000..b65257a
--- /dev/null
+++ b/lib/ui/bal_page/widget/pending/bal_pending_screen.dart
@@ -0,0 +1,11 @@
+import 'package:flutter/material.dart';
+
+class BalPendingScreen extends StatelessWidget {
+ const BalPendingScreen({super.key});
+
+ @override
+ Widget build(BuildContext context) {
+ // TODO: implement build
+ throw UnimplementedError();
+ }
+}
diff --git a/lib/ui/core/ui/await_loading.dart b/lib/ui/core/ui/await_loading.dart
new file mode 100644
index 0000000..7342527
--- /dev/null
+++ b/lib/ui/core/ui/await_loading.dart
@@ -0,0 +1,47 @@
+import 'dart:async';
+
+import 'package:flutter/material.dart';
+
+class AwaitLoading extends StatefulWidget {
+ const AwaitLoading({super.key});
+
+ @override
+ State createState() => _AwaitLoadingState();
+}
+
+class _AwaitLoadingState extends State {
+ String text = "";
+
+ Timer? t;
+
+ @override
+ void dispose() {
+ t?.cancel();
+ super.dispose();
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ t = Timer(Duration(seconds: 8), () {
+ setState(() {
+ text =
+ "Il semblerait qu'il y ait un problème. Vérifiez que vous êtes connecté·e à internet.";
+ });
+ });
+
+ return Column(
+ children: [
+ Expanded(child: SizedBox()),
+ Center(child: CircularProgressIndicator()),
+ Expanded(
+ child: Center(
+ child: SizedBox(
+ width: 300,
+ child: Text(text, textAlign: TextAlign.center),
+ ),
+ ),
+ ),
+ ],
+ );
+ }
+}
diff --git a/lib/utils/overlay_boundary.dart b/lib/ui/core/ui/overlay_boundary.dart
similarity index 100%
rename from lib/utils/overlay_boundary.dart
rename to lib/ui/core/ui/overlay_boundary.dart
diff --git a/lib/ui/home_page/view_model/home_view_model.dart b/lib/ui/home_page/view_model/home_view_model.dart
index 22eae91..a35c33c 100644
--- a/lib/ui/home_page/view_model/home_view_model.dart
+++ b/lib/ui/home_page/view_model/home_view_model.dart
@@ -56,7 +56,13 @@ class HomeViewModel extends ChangeNotifier {
Future> _load() async {
final result2 = await _loadBal();
- isLoaded = true;
+ switch (result2) {
+ case Ok():
+ isLoaded = true;
+ break;
+ default:
+ break;
+ }
notifyListeners();
return result2;
}
diff --git a/lib/ui/home_page/widgets/home_page.dart b/lib/ui/home_page/widgets/home_page.dart
index 586db9d..588347b 100644
--- a/lib/ui/home_page/widgets/home_page.dart
+++ b/lib/ui/home_page/widgets/home_page.dart
@@ -4,6 +4,7 @@ import 'package:seshat/domain/models/bal.dart';
import 'package:seshat/ui/core/ui/navigation_bar.dart';
import 'package:seshat/ui/home_page/view_model/home_view_model.dart';
import 'package:seshat/ui/home_page/widgets/create_confirmation_popup.dart';
+import 'package:seshat/ui/core/ui/await_loading.dart';
class HomePage extends StatefulWidget {
const HomePage({super.key, required this.viewModel});
@@ -23,7 +24,7 @@ class _HomePageState extends State {
listenable: widget.viewModel,
builder: (context, child) {
return switch (widget.viewModel.isLoaded) {
- false => Center(child: CircularProgressIndicator()),
+ false => AwaitLoading(),
true => switch (widget.viewModel.currentBal == null) {
true => HomePageOnNoCurrent(widget: widget),
false => HomePageOnCurrent(widget: widget),
diff --git a/lib/ui/sell_page/view_model/sell_view_model.dart b/lib/ui/sell_page/view_model/sell_view_model.dart
index 85b1670..0532b8b 100644
--- a/lib/ui/sell_page/view_model/sell_view_model.dart
+++ b/lib/ui/sell_page/view_model/sell_view_model.dart
@@ -71,10 +71,16 @@ class SellViewModel extends ChangeNotifier {
bool isLoaded = false;
Future> _load() async {
- final result2 = await _loadBal();
- isLoaded = true;
+ final result1 = await _loadBal();
+ switch (result1) {
+ case Ok():
+ isLoaded = true;
+ break;
+ default:
+ break;
+ }
notifyListeners();
- return result2;
+ return result1;
}
Future> _loadBal() async {
diff --git a/lib/ui/sell_page/widgets/sell_page.dart b/lib/ui/sell_page/widgets/sell_page.dart
index 47da1e6..1c463f6 100644
--- a/lib/ui/sell_page/widgets/sell_page.dart
+++ b/lib/ui/sell_page/widgets/sell_page.dart
@@ -5,6 +5,7 @@ import 'package:seshat/routing/routes.dart';
import 'package:seshat/ui/core/ui/navigation_bar.dart';
import 'package:seshat/ui/sell_page/view_model/sell_view_model.dart';
import 'package:seshat/ui/sell_page/widgets/scan_screen.dart';
+import 'package:seshat/ui/core/ui/await_loading.dart';
class SellPage extends StatefulWidget {
const SellPage({super.key, required this.viewModel});
@@ -24,7 +25,7 @@ class _SellPageState extends State {
listenable: widget.viewModel,
builder: (context, child) {
return switch (widget.viewModel.isLoaded) {
- false => Center(child: CircularProgressIndicator()),
+ false => AwaitLoading(),
true => switch (widget.viewModel.currentBal) {
null => Center(
child: SizedBox(