conflicts resolution

This commit is contained in:
Stephan D
2025-11-26 15:00:21 +01:00
53 changed files with 620 additions and 296 deletions

View File

@@ -1,8 +1,10 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:pshared/models/resources.dart';
import 'package:pshared/provider/account.dart';
import 'package:pshared/provider/permissions.dart';
import 'package:pweb/pages/address_book/form/page.dart';
import 'package:pweb/pages/address_book/page/page.dart';
@@ -13,25 +15,50 @@ import 'package:pweb/pages/report/page.dart';
import 'package:pweb/pages/settings/profile/page.dart';
import 'package:pweb/pages/dashboard/dashboard.dart';
import 'package:pweb/providers/page_selector.dart';
import 'package:pweb/app/router/pages.dart';
import 'package:pweb/widgets/appbar/app_bar.dart';
import 'package:pweb/widgets/sidebar/destinations.dart';
import 'package:pweb/widgets/sidebar/sidebar.dart';
import 'package:pweb/generated/i18n/app_localizations.dart';
class PageSelector extends StatelessWidget {
const PageSelector({super.key});
void _logout(BuildContext context) => context.read<AccountProvider>().logout();
void _logout(BuildContext context) {
context.read<AccountProvider>().logout();
navigateAndReplace(context, Pages.login);
}
@override
Widget build(BuildContext context) => Consumer<PageSelectorProvider>(builder:(context, provider, _) {
Widget build(BuildContext context) {
final provider = context.watch<PageSelectorProvider>();
final permissions = context.watch<PermissionsProvider>();
final loc = AppLocalizations.of(context)!;
final bool restrictedAccess = !permissions.canRead(ResourceType.chainWallets);
final allowedDestinations = restrictedAccess
? <PayoutDestination>{
PayoutDestination.settings,
PayoutDestination.methods,
PayoutDestination.editwallet,
}
: PayoutDestination.values.toSet();
final selected = allowedDestinations.contains(provider.selected)
? provider.selected
: (restrictedAccess ? PayoutDestination.settings : PayoutDestination.dashboard);
if (selected != provider.selected) {
WidgetsBinding.instance.addPostFrameCallback((_) => provider.selectPage(selected));
}
Widget content;
switch (provider.selected) {
switch (selected) {
case PayoutDestination.dashboard:
content = DashboardPage(
onRecipientSelected: (recipient) =>
provider.selectRecipient(recipient),
onRecipientSelected: (recipient) => provider.selectRecipient(recipient),
onGoToPaymentWithoutRecipient: provider.startPaymentWithoutRecipient,
);
break;
@@ -79,16 +106,16 @@ class PageSelector extends StatelessWidget {
? WalletEditPage(
onBack: provider.goBackFromWalletEdit,
)
: const Center(child: Text('No wallet selected')); //TODO Localize
: Center(child: Text(loc.noWalletSelected));
break;
default:
content = Text(provider.selected.name);
content = Text(selected.name);
}
return Scaffold(
appBar: PayoutAppBar(
title: Text(provider.selected.localizedLabel(context)),
title: Text(selected.localizedLabel(context)),
onAddFundsPressed: () {},
onLogout: () => _logout(context),
),
@@ -99,7 +126,7 @@ class PageSelector extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
PayoutSidebar(
selected: provider.selected,
selected: selected,
onSelected: provider.selectPage,
onLogout: () => _logout(context),
),
@@ -108,5 +135,5 @@ class PageSelector extends StatelessWidget {
),
),
);
});
}
}