From 7de0dfd0fc365e7ebe29385cf0112e536ff970d8 Mon Sep 17 00:00:00 2001 From: Ethan Lee <125412902+ethan-tbd@users.noreply.github.com> Date: Wed, 22 May 2024 13:58:06 -0700 Subject: [PATCH] chore: clean up (#167) --- lib/features/app/app.dart | 10 +++-- lib/features/pfis/add_pfi_page.dart | 2 +- lib/features/pfis/pfis_notifier.dart | 7 +++- lib/features/pfis/pfis_page.dart | 42 ++++++++++--------- .../remittance/countries_notifier.dart | 7 +++- lib/main.dart | 11 ----- lib/shared/success_state.dart | 4 +- 7 files changed, 44 insertions(+), 39 deletions(-) diff --git a/lib/features/app/app.dart b/lib/features/app/app.dart index 163dffa7..c3e551f9 100644 --- a/lib/features/app/app.dart +++ b/lib/features/app/app.dart @@ -1,18 +1,22 @@ +import 'package:didpay/features/app/app_tabs.dart'; import 'package:didpay/features/pfis/add_pfi_page.dart'; +import 'package:didpay/features/pfis/pfis_notifier.dart'; import 'package:didpay/l10n/app_localizations.dart'; import 'package:didpay/shared/theme/theme.dart'; import 'package:flutter/material.dart'; +import 'package:hooks_riverpod/hooks_riverpod.dart'; -class App extends StatelessWidget { +class App extends HookConsumerWidget { const App({super.key}); @override - Widget build(BuildContext context) { + Widget build(BuildContext context, WidgetRef ref) { + final pfis = ref.watch(pfisProvider); return MaterialApp( title: 'DIDPay', theme: lightTheme(context), darkTheme: darkTheme(context), - home: AddPfiPage(), + home: pfis.isEmpty ? AddPfiPage() : const AppTabs(), localizationsDelegates: Loc.localizationsDelegates, supportedLocales: const [ Locale('en', ''), diff --git a/lib/features/pfis/add_pfi_page.dart b/lib/features/pfis/add_pfi_page.dart index c5e3a758..2ca95188 100644 --- a/lib/features/pfis/add_pfi_page.dart +++ b/lib/features/pfis/add_pfi_page.dart @@ -216,7 +216,7 @@ class AddPfiPage extends HookConsumerWidget { .then((pfi) => state.value = AsyncData(pfi)) .onError((error, stackTrace) { state.value = AsyncError( - error ?? Exception('Unable to resolve add PFI'), + error ?? Exception('Unable to add PFI'), stackTrace, ); throw Exception(); diff --git a/lib/features/pfis/pfis_notifier.dart b/lib/features/pfis/pfis_notifier.dart index 4513a07c..d318a70d 100644 --- a/lib/features/pfis/pfis_notifier.dart +++ b/lib/features/pfis/pfis_notifier.dart @@ -1,10 +1,15 @@ import 'package:didpay/features/pfis/pfi.dart'; import 'package:didpay/features/pfis/pfis_service.dart'; +import 'package:didpay/features/storage/storage_service.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:shared_preferences/shared_preferences.dart'; final pfisProvider = StateNotifierProvider>( - (ref) => throw UnimplementedError(), + (ref) { + final prefs = ref.watch(sharedPreferencesProvider); + final pfis = PfisNotifier.loadSavedPfiDids(prefs); + return PfisNotifier(prefs, PfisService(), pfis); + }, ); class PfisNotifier extends StateNotifier> { diff --git a/lib/features/pfis/pfis_page.dart b/lib/features/pfis/pfis_page.dart index 894bfd14..2175533c 100644 --- a/lib/features/pfis/pfis_page.dart +++ b/lib/features/pfis/pfis_page.dart @@ -16,28 +16,30 @@ class PfisPage extends HookConsumerWidget { return Scaffold( appBar: AppBar(), - body: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Padding( - padding: const EdgeInsets.symmetric( - horizontal: Grid.side, - vertical: Grid.xs, + body: SafeArea( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: const EdgeInsets.symmetric( + horizontal: Grid.side, + vertical: Grid.xs, + ), + child: Text( + Loc.of(context).myPfis, + style: Theme.of(context).textTheme.bodyLarge, + ), ), - child: Text( - Loc.of(context).myPfis, - style: Theme.of(context).textTheme.bodyLarge, + Expanded( + child: ListView.builder( + itemCount: pfis.length + 1, + itemBuilder: (context, index) => index != pfis.length + ? _buildPfiTile(context, ref, pfis[index]) + : _buildAddPfiTile(context), + ), ), - ), - Expanded( - child: ListView.builder( - itemCount: pfis.length + 1, - itemBuilder: (context, index) => index != pfis.length - ? _buildPfiTile(context, ref, pfis[index]) - : _buildAddPfiTile(context), - ), - ), - ], + ], + ), ), ); } diff --git a/lib/features/remittance/countries_notifier.dart b/lib/features/remittance/countries_notifier.dart index 3cd39e17..7556ff19 100644 --- a/lib/features/remittance/countries_notifier.dart +++ b/lib/features/remittance/countries_notifier.dart @@ -2,12 +2,17 @@ import 'dart:async'; import 'dart:convert'; import 'package:didpay/features/remittance/countries.dart'; +import 'package:didpay/features/storage/storage_service.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:shared_preferences/shared_preferences.dart'; final countriesProvider = StateNotifierProvider>( - (ref) => throw UnimplementedError(), + (ref) { + final prefs = ref.watch(sharedPreferencesProvider); + const mx = Country(code: 'MX', name: 'Mexico'); + return CountriesNotifier(prefs, [mx]); + }, ); class CountriesNotifier extends StateNotifier> { diff --git a/lib/main.dart b/lib/main.dart index 5a2f7e5d..36a5c110 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -2,9 +2,6 @@ import 'dart:convert'; import 'package:didpay/features/account/account_providers.dart'; import 'package:didpay/features/app/app.dart'; -import 'package:didpay/features/pfis/pfis_notifier.dart'; -import 'package:didpay/features/pfis/pfis_service.dart'; -import 'package:didpay/features/remittance/countries_notifier.dart'; import 'package:didpay/features/storage/storage_service.dart'; import 'package:didpay/shared/constants.dart'; import 'package:flutter/material.dart'; @@ -25,18 +22,10 @@ void main() async { final did = await getOrCreateDid(storage); // final vc = await storage.read(key: Constants.verifiableCredentialKey); - final pfisNotifier = PfisNotifier(sharedPreferences, PfisService(), []); - final countriesNotifier = CountriesNotifier(sharedPreferences, []); - - // TODO(ethan-tbd): remove later - await countriesNotifier.add('US', 'United States'); - await countriesNotifier.add('MX', 'Mexico'); runApp( ProviderScope( overrides: [ - pfisProvider.overrideWith((ref) => pfisNotifier), - countriesProvider.overrideWith((ref) => countriesNotifier), sharedPreferencesProvider.overrideWithValue(sharedPreferences), secureStorageProvider.overrideWithValue(storage), didProvider.overrideWithValue(did), diff --git a/lib/shared/success_state.dart b/lib/shared/success_state.dart index 6912db35..3e52d93c 100644 --- a/lib/shared/success_state.dart +++ b/lib/shared/success_state.dart @@ -1,4 +1,4 @@ -import 'package:didpay/features/app/app_tabs.dart'; +import 'package:didpay/features/app/app.dart'; import 'package:didpay/l10n/app_localizations.dart'; import 'package:didpay/shared/theme/grid.dart'; import 'package:flutter/material.dart'; @@ -33,7 +33,7 @@ class SuccessState extends HookWidget { child: FilledButton( onPressed: () { Navigator.of(context).pushAndRemoveUntil( - MaterialPageRoute(builder: (context) => const AppTabs()), + MaterialPageRoute(builder: (context) => const App()), (route) => false, ); },