From 2550ad42904921b67aeaa5bc744ca86c9e742290 Mon Sep 17 00:00:00 2001 From: Jason Dean Lessenich Date: Tue, 16 Apr 2024 13:52:56 +0200 Subject: [PATCH 1/2] Started work on fixing some minor web exceptions --- frontend/lib/data/store.dart | 4 ++++ frontend/lib/layout/scaffold_navbar_shell.dart | 6 ++++-- .../core/settings/dev/local_storage_settings_page.dart | 3 +++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/frontend/lib/data/store.dart b/frontend/lib/data/store.dart index b2dccad7..ff5d532f 100644 --- a/frontend/lib/data/store.dart +++ b/frontend/lib/data/store.dart @@ -118,6 +118,10 @@ class KeyValueStore { Future write(StoreKey key, T value) async { _checkInitialized(); _localCache[key.key] = value; + // simplify enums to strings + if (value is Enum) { + return await write(key, value.name); + } final dynamic effectiveValue = _toStringOrValue(value, key); if (key.secure) { return await _storage.write(key: key.key, value: effectiveValue); diff --git a/frontend/lib/layout/scaffold_navbar_shell.dart b/frontend/lib/layout/scaffold_navbar_shell.dart index 30946107..63e8b589 100644 --- a/frontend/lib/layout/scaffold_navbar_shell.dart +++ b/frontend/lib/layout/scaffold_navbar_shell.dart @@ -1,4 +1,5 @@ import 'package:financrr_frontend/util/extensions.dart'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; @@ -65,11 +66,12 @@ class ScaffoldNavBarShellState extends State { @override Widget build(BuildContext context) { final isMobile = context.isMobile; + final Widget shell = kIsWeb ? SelectionArea(child: widget.navigationShell) : widget.navigationShell; return Scaffold( body: SafeArea( top: false, child: isMobile - ? widget.navigationShell + ? shell : Row( children: [ StatefulBuilder(builder: (context, setState) { @@ -84,7 +86,7 @@ class ScaffoldNavBarShellState extends State { ); }), Expanded( - child: widget.navigationShell, + child: shell, ) ], ), diff --git a/frontend/lib/pages/core/settings/dev/local_storage_settings_page.dart b/frontend/lib/pages/core/settings/dev/local_storage_settings_page.dart index c73b099b..08d29be3 100644 --- a/frontend/lib/pages/core/settings/dev/local_storage_settings_page.dart +++ b/frontend/lib/pages/core/settings/dev/local_storage_settings_page.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import '../../../../data/store.dart'; import '../../../../layout/adaptive_scaffold.dart'; +import '../../../../main.dart'; import '../../../../router.dart'; import '../../settings_page.dart'; @@ -25,6 +26,7 @@ class _LocalStorageSettingsPageState extends State { } Widget _buildVerticalLayout(Size size) { + log.config("text"); return Padding( padding: const EdgeInsets.only(top: 10, bottom: 20), child: Center( @@ -52,6 +54,7 @@ class _LocalStorageSettingsPageState extends State { } Widget _buildTableCell(String text) { + log.config(text); return GestureDetector( onTap: () async { context.showSnackBar('Copied to clipboard!'); From 68fea0508f3d36b49d727b96b30e88782fc34721 Mon Sep 17 00:00:00 2001 From: Jason Dean Lessenich Date: Thu, 18 Apr 2024 10:57:12 +0200 Subject: [PATCH 2/2] Added missing toString() in Store#readAsStringSync & return Enum#name for enum values --- frontend/lib/data/store.dart | 8 ++++++-- .../core/settings/dev/local_storage_settings_page.dart | 3 --- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/frontend/lib/data/store.dart b/frontend/lib/data/store.dart index ff5d532f..fb4f751c 100644 --- a/frontend/lib/data/store.dart +++ b/frontend/lib/data/store.dart @@ -94,7 +94,7 @@ class KeyValueStore { /// by either using the [toValue] function of the key or by simply returning /// its toString() representation. String? readAsStringSync(StoreKey key) { - return _toStringOrValue(readSync(key), key); + return _toStringOrValue(readSync(key), key).toString(); } /// Reads the value of the key from the local cache. @@ -190,7 +190,11 @@ class KeyValueStore { } static dynamic _toStringOrValue(T value, StoreKey key) { - return key.toValue?.call(value) ?? value; + final dynamic d = key.toValue?.call(value) ?? value; + if (d is Enum) { + return d.name; + } + return d; } static T? _fromStringOrValue(dynamic value, StoreKey key) { diff --git a/frontend/lib/pages/core/settings/dev/local_storage_settings_page.dart b/frontend/lib/pages/core/settings/dev/local_storage_settings_page.dart index 08d29be3..c73b099b 100644 --- a/frontend/lib/pages/core/settings/dev/local_storage_settings_page.dart +++ b/frontend/lib/pages/core/settings/dev/local_storage_settings_page.dart @@ -3,7 +3,6 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import '../../../../data/store.dart'; import '../../../../layout/adaptive_scaffold.dart'; -import '../../../../main.dart'; import '../../../../router.dart'; import '../../settings_page.dart'; @@ -26,7 +25,6 @@ class _LocalStorageSettingsPageState extends State { } Widget _buildVerticalLayout(Size size) { - log.config("text"); return Padding( padding: const EdgeInsets.only(top: 10, bottom: 20), child: Center( @@ -54,7 +52,6 @@ class _LocalStorageSettingsPageState extends State { } Widget _buildTableCell(String text) { - log.config(text); return GestureDetector( onTap: () async { context.showSnackBar('Copied to clipboard!');