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());
}

View File

@@ -2,8 +2,8 @@ import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:pshared/provider/account.dart';
import 'package:pshared/provider/locale.dart';
import 'package:pweb/providers/account.dart';
import 'package:pweb/app/router/pages.dart';
import 'package:pweb/pages/login/buttons.dart';

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/widgets/vspacer.dart';

View File

@@ -8,8 +8,8 @@ import 'package:provider/provider.dart';
import 'package:pshared/api/requests/login_data.dart';
import 'package:pshared/models/describable.dart';
import 'package:pshared/provider/account.dart';
import 'package:pshared/provider/locale.dart';
import 'package:pweb/providers/account.dart';
import 'package:pweb/app/router/pages.dart';
import 'package:pweb/pages/signup/form/content.dart';
@@ -110,4 +110,4 @@ class SignUpFormState extends State<SignUpForm> {
onSignUp: handleSignUp,
onLogin: handleLogin,
);
}
}