Compare commits
2 commits
453ee33e28
...
b751d93be6
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b751d93be6 | ||
|
|
eb83e9fbe3 |
12 changed files with 93 additions and 13 deletions
|
|
@ -650,7 +650,7 @@ code + .copy-button {
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
function configurationCacheProblems() { return (
|
function configurationCacheProblems() { return (
|
||||||
// begin-report-data
|
// begin-report-data
|
||||||
{"diagnostics":[{"locations":[{}],"problem":[{"text":"Configuring project ':' without an existing directory is deprecated. The configured projectDirectory '/usr/lib/flutter/packages/flutter_tools/gradle' does not exist, can't be written to or is not a directory. This behavior has been deprecated."}],"severity":"WARNING","problemDetails":[{"text":"This will fail with an error in Gradle 9.0."}],"contextualLabel":"Configuring project ':' without an existing directory is deprecated. The configured projectDirectory '/usr/lib/flutter/packages/flutter_tools/gradle' does not exist, can't be written to or is not a directory. This behavior has been deprecated.","documentationLink":"https://docs.gradle.org/8.14.3/userguide/upgrading_version_8.html#deprecated_missing_project_directory","problemId":[{"name":"deprecation","displayName":"Deprecation"},{"name":"configuring-project-without-an-existing-directory-is-deprecated-the-configured-projectdirectory-usr-lib-flutter-packages-flutter-tools-gradle-does-not-exist-can-t-be-written-to-or-is-not-a-directory-this-behavior-has-been-deprecated","displayName":"Configuring project ':' without an existing directory is deprecated. The configured projectDirectory '/usr/lib/flutter/packages/flutter_tools/gradle' does not exist, can't be written to or is not a directory. This behavior has been deprecated."}],"solutions":[[{"text":"Make sure the project directory exists and can be written."}]]}],"problemsReport":{"totalProblemCount":1,"requestedTasks":"assembleDebug","documentationLink":"https://docs.gradle.org/8.14.3/userguide/reporting_problems.html","documentationLinkCaption":"Problem report","summaries":[]}}
|
{"diagnostics":[{"locations":[{},{"pluginId":"dev.flutter.flutter-gradle-plugin"}],"problem":[{"text":"The CopyProcessingSpec.setFileMode(Integer) method has been deprecated."}],"severity":"WARNING","problemDetails":[{"text":"This is scheduled to be removed in Gradle 9.0."}],"contextualLabel":"The CopyProcessingSpec.setFileMode(Integer) method has been deprecated.","documentationLink":"https://docs.gradle.org/8.14.3/userguide/upgrading_version_8.html#unix_file_permissions_deprecated","problemId":[{"name":"deprecation","displayName":"Deprecation"},{"name":"the-copyprocessingspec-setfilemode-integer-method-has-been-deprecated","displayName":"The CopyProcessingSpec.setFileMode(Integer) method has been deprecated."}],"solutions":[[{"text":"Please use the filePermissions(Action) method instead."}]]}],"problemsReport":{"totalProblemCount":1,"buildName":"android","requestedTasks":"assembleDebug","documentationLink":"https://docs.gradle.org/8.14.3/userguide/reporting_problems.html","documentationLinkCaption":"Problem report","summaries":[]}}
|
||||||
// end-report-data
|
// end-report-data
|
||||||
);}
|
);}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -139,7 +139,13 @@ class AddViewModel extends ChangeNotifier {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
final result2 = await _loadBal();
|
final result2 = await _loadBal();
|
||||||
isLoaded = true;
|
switch (result2) {
|
||||||
|
case Ok():
|
||||||
|
isLoaded = true;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
return result2;
|
return result2;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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/owner_popup.dart';
|
||||||
import 'package:seshat/ui/add_page/widgets/confirmation_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/navigation_bar.dart';
|
||||||
|
import 'package:seshat/ui/core/ui/await_loading.dart';
|
||||||
import 'package:seshat/utils/result.dart';
|
import 'package:seshat/utils/result.dart';
|
||||||
|
|
||||||
class AddPage extends StatefulWidget {
|
class AddPage extends StatefulWidget {
|
||||||
|
|
@ -37,7 +38,7 @@ class _AddPageState extends State<AddPage> {
|
||||||
body: ListenableBuilder(
|
body: ListenableBuilder(
|
||||||
listenable: widget.viewModel,
|
listenable: widget.viewModel,
|
||||||
builder: (context, child) => switch (widget.viewModel.isLoaded) {
|
builder: (context, child) => switch (widget.viewModel.isLoaded) {
|
||||||
false => Center(child: CircularProgressIndicator()),
|
false => AwaitLoading(),
|
||||||
true => switch (widget.viewModel.currentBal) {
|
true => switch (widget.viewModel.currentBal) {
|
||||||
null => Center(
|
null => Center(
|
||||||
child: SizedBox(
|
child: SizedBox(
|
||||||
|
|
|
||||||
|
|
@ -28,12 +28,12 @@ class BalViewModel extends ChangeNotifier {
|
||||||
Future<Result<void>> _load() async {
|
Future<Result<void>> _load() async {
|
||||||
final result1 = await _loadBal();
|
final result1 = await _loadBal();
|
||||||
switch (result1) {
|
switch (result1) {
|
||||||
case Error():
|
case Ok():
|
||||||
return result1;
|
isLoaded = true;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
isLoaded = true;
|
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
return result1;
|
return result1;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
|
||||||
import 'package:seshat/domain/models/bal.dart';
|
import 'package:seshat/domain/models/bal.dart';
|
||||||
import 'package:seshat/ui/bal_page/view_model/bal_view_model.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/navigation_bar.dart';
|
||||||
|
import 'package:seshat/ui/core/ui/await_loading.dart';
|
||||||
|
|
||||||
class BalPage extends StatefulWidget {
|
class BalPage extends StatefulWidget {
|
||||||
const BalPage({super.key, required this.viewModel});
|
const BalPage({super.key, required this.viewModel});
|
||||||
|
|
@ -21,7 +22,7 @@ class _BalPageState extends State<BalPage> {
|
||||||
listenable: widget.viewModel,
|
listenable: widget.viewModel,
|
||||||
builder: (context, child) {
|
builder: (context, child) {
|
||||||
return switch (widget.viewModel.isLoaded) {
|
return switch (widget.viewModel.isLoaded) {
|
||||||
false => Center(child: CircularProgressIndicator()),
|
false => AwaitLoading(),
|
||||||
true => switch (widget.viewModel.bal == null) {
|
true => switch (widget.viewModel.bal == null) {
|
||||||
true => Center(
|
true => Center(
|
||||||
child: Text("La BAL référencée n'est pas accessible"),
|
child: Text("La BAL référencée n'est pas accessible"),
|
||||||
|
|
|
||||||
11
lib/ui/bal_page/widget/pending/bal_pending_screen.dart
Normal file
11
lib/ui/bal_page/widget/pending/bal_pending_screen.dart
Normal file
|
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
47
lib/ui/core/ui/await_loading.dart
Normal file
47
lib/ui/core/ui/await_loading.dart
Normal file
|
|
@ -0,0 +1,47 @@
|
||||||
|
import 'dart:async';
|
||||||
|
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
class AwaitLoading extends StatefulWidget {
|
||||||
|
const AwaitLoading({super.key});
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<AwaitLoading> createState() => _AwaitLoadingState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _AwaitLoadingState extends State<AwaitLoading> {
|
||||||
|
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),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -56,7 +56,13 @@ class HomeViewModel extends ChangeNotifier {
|
||||||
|
|
||||||
Future<Result<void>> _load() async {
|
Future<Result<void>> _load() async {
|
||||||
final result2 = await _loadBal();
|
final result2 = await _loadBal();
|
||||||
isLoaded = true;
|
switch (result2) {
|
||||||
|
case Ok():
|
||||||
|
isLoaded = true;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
return result2;
|
return result2;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import 'package:seshat/domain/models/bal.dart';
|
||||||
import 'package:seshat/ui/core/ui/navigation_bar.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/view_model/home_view_model.dart';
|
||||||
import 'package:seshat/ui/home_page/widgets/create_confirmation_popup.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 {
|
class HomePage extends StatefulWidget {
|
||||||
const HomePage({super.key, required this.viewModel});
|
const HomePage({super.key, required this.viewModel});
|
||||||
|
|
@ -23,7 +24,7 @@ class _HomePageState extends State<HomePage> {
|
||||||
listenable: widget.viewModel,
|
listenable: widget.viewModel,
|
||||||
builder: (context, child) {
|
builder: (context, child) {
|
||||||
return switch (widget.viewModel.isLoaded) {
|
return switch (widget.viewModel.isLoaded) {
|
||||||
false => Center(child: CircularProgressIndicator()),
|
false => AwaitLoading(),
|
||||||
true => switch (widget.viewModel.currentBal == null) {
|
true => switch (widget.viewModel.currentBal == null) {
|
||||||
true => HomePageOnNoCurrent(widget: widget),
|
true => HomePageOnNoCurrent(widget: widget),
|
||||||
false => HomePageOnCurrent(widget: widget),
|
false => HomePageOnCurrent(widget: widget),
|
||||||
|
|
|
||||||
|
|
@ -71,10 +71,16 @@ class SellViewModel extends ChangeNotifier {
|
||||||
bool isLoaded = false;
|
bool isLoaded = false;
|
||||||
|
|
||||||
Future<Result<void>> _load() async {
|
Future<Result<void>> _load() async {
|
||||||
final result2 = await _loadBal();
|
final result1 = await _loadBal();
|
||||||
isLoaded = true;
|
switch (result1) {
|
||||||
|
case Ok():
|
||||||
|
isLoaded = true;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
return result2;
|
return result1;
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<Result<void>> _loadBal() async {
|
Future<Result<void>> _loadBal() async {
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ import 'package:seshat/routing/routes.dart';
|
||||||
import 'package:seshat/ui/core/ui/navigation_bar.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/view_model/sell_view_model.dart';
|
||||||
import 'package:seshat/ui/sell_page/widgets/scan_screen.dart';
|
import 'package:seshat/ui/sell_page/widgets/scan_screen.dart';
|
||||||
|
import 'package:seshat/ui/core/ui/await_loading.dart';
|
||||||
|
|
||||||
class SellPage extends StatefulWidget {
|
class SellPage extends StatefulWidget {
|
||||||
const SellPage({super.key, required this.viewModel});
|
const SellPage({super.key, required this.viewModel});
|
||||||
|
|
@ -24,7 +25,7 @@ class _SellPageState extends State<SellPage> {
|
||||||
listenable: widget.viewModel,
|
listenable: widget.viewModel,
|
||||||
builder: (context, child) {
|
builder: (context, child) {
|
||||||
return switch (widget.viewModel.isLoaded) {
|
return switch (widget.viewModel.isLoaded) {
|
||||||
false => Center(child: CircularProgressIndicator()),
|
false => AwaitLoading(),
|
||||||
true => switch (widget.viewModel.currentBal) {
|
true => switch (widget.viewModel.currentBal) {
|
||||||
null => Center(
|
null => Center(
|
||||||
child: SizedBox(
|
child: SizedBox(
|
||||||
|
|
|
||||||
Reference in a new issue