Added account permissions and ui for recipient

This commit is contained in:
Arseni
2025-11-26 13:03:52 +03:00
parent fcb5ab4f2c
commit 357af99564
23 changed files with 507 additions and 70 deletions

View File

@@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:pshared/provider/account.dart';
import 'package:pweb/providers/account.dart';
import 'package:pweb/app/router/pages.dart';
import 'package:pweb/widgets/error/snackbar.dart';
@@ -26,13 +26,10 @@ class AccountLoader extends StatelessWidget {
);
navigateAndReplace(context, Pages.login);
}
if ((provider.error == null) && (provider.account == null)) {
WidgetsBinding.instance.addPostFrameCallback((_) {
provider.restore();
});
if (provider.account == null) {
WidgetsBinding.instance.addPostFrameCallback((_) => navigateAndReplace(context, Pages.login));
return const Center(child: CircularProgressIndicator());
}
return child;
});
}

View File

@@ -2,7 +2,8 @@ import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:pshared/provider/permissions.dart';
import 'package:pweb/providers/account.dart';
import 'package:pweb/providers/permissions.dart';
import 'package:pweb/app/router/pages.dart';
import 'package:pweb/widgets/error/snackbar.dart';
@@ -16,8 +17,10 @@ class PermissionsLoader extends StatelessWidget {
const PermissionsLoader({super.key, required this.child});
@override
Widget build(BuildContext context) => Consumer<PermissionsProvider>(builder: (context, provider, _) {
if (provider.isLoading) return const Center(child: CircularProgressIndicator());
Widget build(BuildContext context) => Consumer2<PermissionsProvider, AccountProvider>(builder: (context, provider, accountProvider, _) {
if (provider.isLoading) {
return const Center(child: CircularProgressIndicator());
}
if (provider.error != null) {
postNotifyUserOfErrorX(
context: context,
@@ -26,9 +29,9 @@ class PermissionsLoader extends StatelessWidget {
);
navigateAndReplace(context, Pages.login);
}
if ((provider.error == null) && (provider.permissions.isEmpty)) {
if (provider.error == null && !provider.hasLoaded && accountProvider.account != null) {
WidgetsBinding.instance.addPostFrameCallback((_) {
provider.load();
provider.loadForAccount(accountProvider.account!.id);
});
return const Center(child: CircularProgressIndicator());
}