diff --git a/lib/account/provider.g.dart b/lib/account/provider.g.dart index 2bf6e7d..4a76c4f 100644 --- a/lib/account/provider.g.dart +++ b/lib/account/provider.g.dart @@ -393,7 +393,7 @@ final realAccountsProvider = ); typedef _$RealAccounts = Notifier>; -String _$allAccountsHash() => r'e97a4caa8ae7cdc52f6a1d9e7a4f7fcaf4f21da4'; +String _$allAccountsHash() => r'72f9626b7f40dfa85b19cbc7a694494a13b9638f'; /// Provides all accounts /// diff --git a/lib/enough_mail_app.dart b/lib/enough_mail_app.dart index c56f0a3..367788d 100644 --- a/lib/enough_mail_app.dart +++ b/lib/enough_mail_app.dart @@ -1,3 +1,10 @@ export 'account/account.dart'; export 'contact/contact.dart'; +export 'localization/app_localizations.g.dart'; +export 'localization/extension.dart'; +export 'logger.dart'; export 'main.dart'; +export 'routes/provider.dart'; +export 'routes/routes.dart'; +export 'settings/settings.dart'; +export 'util/localized_dialog_helper.dart'; diff --git a/lib/hoster/service.dart b/lib/hoster/service.dart index e0fb7e0..d5f6048 100644 --- a/lib/hoster/service.dart +++ b/lib/hoster/service.dart @@ -155,6 +155,7 @@ class MailHoster { height: 50, fit: BoxFit.contain, errorBuilder: (context, error, stacktrace) => Container(), + package: 'enough_mail_app', ), Padding( padding: const EdgeInsets.symmetric(horizontal: 8), @@ -237,6 +238,7 @@ class GmailMailHoster extends MailHoster { height: 50, fit: BoxFit.contain, errorBuilder: (context, error, stacktrace) => Container(), + package: 'enough_mail_app', ), Padding( padding: const EdgeInsets.only(left: 8, right: 16), diff --git a/lib/mail/provider.g.dart b/lib/mail/provider.g.dart index ac0d6cc..c69571f 100644 --- a/lib/mail/provider.g.dart +++ b/lib/mail/provider.g.dart @@ -6,7 +6,7 @@ part of 'provider.dart'; // RiverpodGenerator // ************************************************************************** -String _$mailboxTreeHash() => r'b1ccb0f9abb23fa230f80618370e187d21b10fac'; +String _$mailboxTreeHash() => r'2feafc0f0d00b8c4547b6408363a522539e85853'; /// Copied from Dart SDK class _SystemHash { @@ -1121,7 +1121,7 @@ class _SourceProviderElement Mailbox? get mailbox => (origin as SourceProvider).mailbox; } -String _$unifiedSourceHash() => r'd065ee7acddd895e44ce502094eeb0bec70ab818'; +String _$unifiedSourceHash() => r'9b128c1a2afaa51fa11e0810a9e6ecddfc6c53fd'; abstract class _$UnifiedSource extends BuildlessAsyncNotifier { @@ -1300,7 +1300,7 @@ class _UnifiedSourceProviderElement Mailbox? get mailbox => (origin as UnifiedSourceProvider).mailbox; } -String _$realSourceHash() => r'd9f16bf2faa477e3d2e25f1dc9e1f89a3f3e7094'; +String _$realSourceHash() => r'b47b7d957d62f73be40a5e8666d7f5c76209e502'; abstract class _$RealSource extends BuildlessAsyncNotifier { @@ -1479,7 +1479,7 @@ class _RealSourceProviderElement Mailbox? get mailbox => (origin as RealSourceProvider).mailbox; } -String _$realMimeSourceHash() => r'2bebfe53595c7cc57a87b55302d680d46113a79c'; +String _$realMimeSourceHash() => r'4c50962bb20d8eacf3a69062ae2a656627393dcb'; abstract class _$RealMimeSource extends BuildlessAsyncNotifier { @@ -1658,7 +1658,7 @@ class _RealMimeSourceProviderElement Mailbox? get mailbox => (origin as RealMimeSourceProvider).mailbox; } -String _$mailClientSourceHash() => r'b38b5b583765b7078c959777bb9d2f346914fbb5'; +String _$mailClientSourceHash() => r'6245fdaddaceb72c43b94b988b7e6dfd5966c8ab'; abstract class _$MailClientSource extends BuildlessNotifier { late final RealAccount account; diff --git a/lib/routes/provider.g.dart b/lib/routes/provider.g.dart index d883db9..71a31e5 100644 --- a/lib/routes/provider.g.dart +++ b/lib/routes/provider.g.dart @@ -6,7 +6,7 @@ part of 'provider.dart'; // RiverpodGenerator // ************************************************************************** -String _$routerConfigHash() => r'b3479cc7eaa3b65781bb64af17381aeed32ac0a4'; +String _$routerConfigHash() => r'00caf421187d49d4fd9751dbda2fbd809be5c367'; /// Provides the [GoRouter] configuration /// diff --git a/lib/screens/welcome_screen.dart b/lib/screens/welcome_screen.dart index 53a91f4..4cd2ff6 100644 --- a/lib/screens/welcome_screen.dart +++ b/lib/screens/welcome_screen.dart @@ -54,6 +54,7 @@ class WelcomeScreen extends StatelessWidget { 'assets/images/maily.png', height: 200, fit: BoxFit.cover, + package: 'enough_mail_app', ), decoration: PageDecoration(pageColor: Colors.green[700]), footer: _buildFooter(context, localizations), @@ -65,6 +66,7 @@ class WelcomeScreen extends StatelessWidget { 'assets/images/mailboxes.png', height: 200, fit: BoxFit.cover, + package: 'enough_mail_app', ), decoration: const PageDecoration(pageColor: Color(0xff543226)), footer: _buildFooter(context, localizations), @@ -76,6 +78,7 @@ class WelcomeScreen extends StatelessWidget { 'assets/images/swipe_press.png', height: 200, fit: BoxFit.cover, + package: 'enough_mail_app', ), decoration: const PageDecoration(pageColor: Color(0xff761711)), footer: _buildFooter(context, localizations), @@ -87,6 +90,7 @@ class WelcomeScreen extends StatelessWidget { 'assets/images/drawing.jpg', height: 200, fit: BoxFit.cover, + package: 'enough_mail_app', ), footer: _buildFooter(context, localizations), ), diff --git a/lib/settings/home/home.dart b/lib/settings/home/home.dart new file mode 100644 index 0000000..4d502a2 --- /dev/null +++ b/lib/settings/home/home.dart @@ -0,0 +1,3 @@ +export 'model.dart'; +export 'provider.dart'; +export 'screen.dart'; diff --git a/lib/settings/home/model.dart b/lib/settings/home/model.dart new file mode 100644 index 0000000..150471b --- /dev/null +++ b/lib/settings/home/model.dart @@ -0,0 +1,86 @@ +import 'package:flutter/widgets.dart'; + +/// Standard setting entries +enum UiSettingsType { + divider, + security, + accounts, + swipe, + signature, + defaultSender, + design, + language, + folders, + readReceipts, + reply, + feedback, + about, + welcome, + development, +} + +/// A UI element for the settings screen +class UiSettingsElement { + /// Creates a new [UiSettingsElement] + const UiSettingsElement({ + required this.title, + required this.onTap, + this.type, + this.subtitle, + this.icon, + }); + + /// Creates a new [UiSettingsElement] as a divider + UiSettingsElement.divider() + : this( + title: '', + onTap: null, + type: UiSettingsType.divider, + ); + + /// The title of the element + final String title; + + /// The standard type of the element + final UiSettingsType? type; + + /// The subtitle of the element + final String? subtitle; + + /// The icon of the element + final IconData? icon; + + /// The action when the element is tapped + final VoidCallback? onTap; + + /// Is this element a divider? + bool get isDivider => type == UiSettingsType.divider; +} + +/// Eases custom elements +extension UiSettingsElementsExtension on List { + /// Inserts an element after the element with the given type + void insertAfter(UiSettingsType type, UiSettingsElement element) { + final index = indexWhere((e) => e.type == type); + if (index == -1) { + add(element); + } else { + insert(index + 1, element); + } + } + + /// Inserts an element before the element with the given type + void insertBefore(UiSettingsType type, UiSettingsElement element) { + final index = indexWhere((e) => e.type == type); + if (index == -1) { + insert(0, element); + } else { + insert(index, element); + } + } + + /// Removes the element with the given type + void removeType(UiSettingsType type) { + removeWhere((e) => e.type == type); + } +} diff --git a/lib/settings/home/provider.dart b/lib/settings/home/provider.dart new file mode 100644 index 0000000..cbff99a --- /dev/null +++ b/lib/settings/home/provider.dart @@ -0,0 +1,95 @@ +import 'package:flutter/widgets.dart'; +import 'package:go_router/go_router.dart'; +import 'package:riverpod_annotation/riverpod_annotation.dart'; + +import '../../localization/extension.dart'; +import '../../routes/routes.dart'; +import '../../util/localized_dialog_helper.dart'; +import 'model.dart'; + +part 'provider.g.dart'; + +@Riverpod(keepAlive: true) +class SettingsUiElements extends _$SettingsUiElements { + @override + void build() {} + + /// Generates the shown setting entries + List generate( + BuildContext context, + ) => + buildStandardElements(context); + + static List buildStandardElements(BuildContext context) { + final text = context.text; + + return [ + UiSettingsElement( + type: UiSettingsType.security, + title: text.securitySettingsTitle, + onTap: () => context.pushNamed(Routes.settingsSecurity), + ), + UiSettingsElement( + type: UiSettingsType.accounts, + title: text.settingsActionAccounts, + onTap: () => context.pushNamed(Routes.settingsAccounts), + ), + UiSettingsElement( + type: UiSettingsType.swipe, + title: text.swipeSettingTitle, + onTap: () => context.pushNamed(Routes.settingsSwipe), + ), + UiSettingsElement( + type: UiSettingsType.signature, + title: text.signatureSettingsTitle, + onTap: () => context.pushNamed(Routes.settingsSignature), + ), + UiSettingsElement( + type: UiSettingsType.defaultSender, + title: text.defaultSenderSettingsTitle, + onTap: () => context.pushNamed(Routes.settingsDefaultSender), + ), + UiSettingsElement( + type: UiSettingsType.design, + title: text.settingsActionDesign, + onTap: () => context.pushNamed(Routes.settingsDesign), + ), + UiSettingsElement( + type: UiSettingsType.language, + title: text.languageSettingTitle, + onTap: () => context.pushNamed(Routes.settingsLanguage), + ), + UiSettingsElement( + type: UiSettingsType.folders, + title: text.settingsFolders, + onTap: () => context.pushNamed(Routes.settingsFolders), + ), + UiSettingsElement( + type: UiSettingsType.readReceipts, + title: text.settingsReadReceipts, + onTap: () => context.pushNamed(Routes.settingsReadReceipts), + ), + UiSettingsElement( + type: UiSettingsType.reply, + title: text.replySettingsTitle, + onTap: () => context.pushNamed(Routes.settingsReplyFormat), + ), + UiSettingsElement.divider(), + UiSettingsElement( + type: UiSettingsType.feedback, + title: text.settingsActionFeedback, + onTap: () => context.pushNamed(Routes.settingsFeedback), + ), + UiSettingsElement( + type: UiSettingsType.about, + title: text.drawerEntryAbout, + onTap: () => LocalizedDialogHelper.showAbout(context), + ), + UiSettingsElement( + type: UiSettingsType.welcome, + title: text.settingsActionWelcome, + onTap: () => context.pushNamed(Routes.welcome), + ), + ]; + } +} diff --git a/lib/settings/home/provider.g.dart b/lib/settings/home/provider.g.dart new file mode 100644 index 0000000..2dfa640 --- /dev/null +++ b/lib/settings/home/provider.g.dart @@ -0,0 +1,27 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'provider.dart'; + +// ************************************************************************** +// RiverpodGenerator +// ************************************************************************** + +String _$settingsUiElementsHash() => + r'794b8a7bc2576caf09aad360557b49ead8314c6e'; + +/// See also [SettingsUiElements]. +@ProviderFor(SettingsUiElements) +final settingsUiElementsProvider = + NotifierProvider.internal( + SettingsUiElements.new, + name: r'settingsUiElementsProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$settingsUiElementsHash, + dependencies: null, + allTransitiveDependencies: null, +); + +typedef _$SettingsUiElements = Notifier; +// ignore_for_file: type=lint +// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member diff --git a/lib/settings/home/screen.dart b/lib/settings/home/screen.dart new file mode 100644 index 0000000..4ce757b --- /dev/null +++ b/lib/settings/home/screen.dart @@ -0,0 +1,51 @@ +import 'package:enough_platform_widgets/enough_platform_widgets.dart'; +import 'package:flutter/material.dart'; +import 'package:hooks_riverpod/hooks_riverpod.dart'; + +import '../../localization/extension.dart'; +import '../../screens/base.dart'; +import 'model.dart'; +import 'provider.dart'; + +/// Allows to personalize the app settings +class SettingsScreen extends ConsumerWidget { + /// Creates a new [SettingsScreen] + const SettingsScreen({super.key}); + + @override + Widget build(BuildContext context, WidgetRef ref) { + final uiSettingElementsNotifier = ref.watch( + settingsUiElementsProvider.notifier, + ); + final settingEntries = uiSettingElementsNotifier.generate(context); + final localizations = context.text; + + Widget buildEntry(UiSettingsElement entry) { + if (entry.isDivider) return const Divider(); + final subtitle = entry.subtitle; + final icon = entry.icon; + + return PlatformListTile( + title: Text(entry.title), + subtitle: subtitle != null ? Text(subtitle) : null, + leading: icon != null ? Icon(icon) : null, + onTap: entry.onTap, + ); + } + + return BasePage( + title: localizations.settingsTitle, + content: SingleChildScrollView( + child: SafeArea( + child: Padding( + padding: const EdgeInsets.all(8), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: settingEntries.map(buildEntry).toList(), + ), + ), + ), + ), + ); + } +} diff --git a/lib/settings/settings.dart b/lib/settings/settings.dart index 29fedb9..045fa67 100644 --- a/lib/settings/settings.dart +++ b/lib/settings/settings.dart @@ -1,2 +1,3 @@ +export 'home/home.dart'; export 'model.dart'; export 'provider.dart'; diff --git a/lib/settings/theme/provider.g.dart b/lib/settings/theme/provider.g.dart index 1ac8f22..dbff6c6 100644 --- a/lib/settings/theme/provider.g.dart +++ b/lib/settings/theme/provider.g.dart @@ -6,7 +6,7 @@ part of 'provider.dart'; // RiverpodGenerator // ************************************************************************** -String _$themeFinderHash() => r'9d68c18c5f97c868c95fb419748361c36e3edf12'; +String _$themeFinderHash() => r'0c2b7f1f626596ee6d1c08aa86e37ea4bdda6fef'; /// Copied from Dart SDK class _SystemHash { diff --git a/lib/settings/view/settings_screen.dart b/lib/settings/view/settings_screen.dart deleted file mode 100644 index 670fd00..0000000 --- a/lib/settings/view/settings_screen.dart +++ /dev/null @@ -1,121 +0,0 @@ -import 'package:enough_platform_widgets/enough_platform_widgets.dart'; -import 'package:flutter/material.dart'; -import 'package:go_router/go_router.dart'; - -import '../../localization/extension.dart'; -import '../../routes/routes.dart'; -import '../../screens/base.dart'; -import '../../util/localized_dialog_helper.dart'; - -/// Allows to personalize the app settings -class SettingsScreen extends StatelessWidget { - /// Creates a new [SettingsScreen] - const SettingsScreen({super.key}); - - @override - Widget build(BuildContext context) { - final localizations = context.text; - - return BasePage( - title: localizations.settingsTitle, - content: SingleChildScrollView( - child: SafeArea( - child: Padding( - padding: const EdgeInsets.all(8), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - PlatformListTile( - title: Text(localizations.securitySettingsTitle), - onTap: () { - context.pushNamed(Routes.settingsSecurity); - }, - ), - PlatformListTile( - title: Text(localizations.settingsActionAccounts), - onTap: () { - context.pushNamed(Routes.settingsAccounts); - }, - ), - PlatformListTile( - title: Text(localizations.swipeSettingTitle), - onTap: () { - context.pushNamed(Routes.settingsSwipe); - }, - ), - PlatformListTile( - title: Text(localizations.signatureSettingsTitle), - onTap: () { - context.pushNamed(Routes.settingsSignature); - }, - ), - PlatformListTile( - title: Text(localizations.defaultSenderSettingsTitle), - onTap: () { - context.pushNamed(Routes.settingsDefaultSender); - }, - ), - PlatformListTile( - title: Text(localizations.settingsActionDesign), - onTap: () { - context.pushNamed(Routes.settingsDesign); - }, - ), - PlatformListTile( - title: Text(localizations.languageSettingTitle), - onTap: () { - context.pushNamed(Routes.settingsLanguage); - }, - ), - PlatformListTile( - title: Text(localizations.settingsFolders), - onTap: () { - context.pushNamed(Routes.settingsFolders); - }, - ), - PlatformListTile( - title: Text(localizations.settingsReadReceipts), - onTap: () { - context.pushNamed(Routes.settingsReadReceipts); - }, - ), - PlatformListTile( - title: Text(localizations.replySettingsTitle), - onTap: () { - context.pushNamed(Routes.settingsReplyFormat); - }, - ), - const Divider(), - PlatformListTile( - title: Text(localizations.settingsActionFeedback), - onTap: () { - context.pushNamed(Routes.settingsFeedback); - }, - ), - PlatformListTile( - onTap: () { - LocalizedDialogHelper.showAbout(context); - }, - title: Text(localizations.drawerEntryAbout), - ), - PlatformListTile( - onTap: () { - context.pushNamed(Routes.welcome); - }, - title: Text(localizations.settingsActionWelcome), - ), - const Divider(), - PlatformListTile( - title: Text(localizations.settingsDevelopment), - onTap: () { - context.pushNamed(Routes.settingsDevelopment); - }, - ), - ], - ), - ), - ), - ), - ); - } -} diff --git a/lib/settings/view/view.dart b/lib/settings/view/view.dart index d123e0d..466b054 100644 --- a/lib/settings/view/view.dart +++ b/lib/settings/view/view.dart @@ -1,3 +1,4 @@ +export '../home/screen.dart'; export 'settings_accounts_screen.dart'; export 'settings_default_sender_screen.dart'; export 'settings_developer_mode_screen.dart'; @@ -6,7 +7,6 @@ export 'settings_folders_screen.dart'; export 'settings_language_screen.dart'; export 'settings_readreceipts_screen.dart'; export 'settings_reply_screen.dart'; -export 'settings_screen.dart'; export 'settings_security_screen.dart'; export 'settings_signature_screen.dart'; export 'settings_swipe_screen.dart'; diff --git a/lib/share/provider.g.dart b/lib/share/provider.g.dart index a11f915..4a61321 100644 --- a/lib/share/provider.g.dart +++ b/lib/share/provider.g.dart @@ -6,7 +6,7 @@ part of 'provider.dart'; // RiverpodGenerator // ************************************************************************** -String _$incomingShareHash() => r'0580a0eb934b79968af40957fcdab5595c9831e2'; +String _$incomingShareHash() => r'03f2400b8aceda31ac2003e168a460d08499c7be'; /// Handles incoming shares /// diff --git a/pubspec.lock b/pubspec.lock index e83d6a8..6b81de5 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -61,10 +61,10 @@ packages: dependency: transitive description: name: asn1lib - sha256: "21afe4333076c02877d14f4a89df111e658a6d466cbfc802eb705eb91bd5adfd" + sha256: c9c85fedbe2188b95133cbe960e16f5f448860f7133330e272edbbca5893ddc6 url: "https://pub.dev" source: hosted - version: "1.5.0" + version: "1.5.2" async: dependency: transitive description: @@ -77,10 +77,10 @@ packages: dependency: "direct main" description: name: background_fetch - sha256: f70b28a0f7a3156195e9742229696f004ea3bf10f74039b7bf4c78a74fbda8a4 + sha256: "34550cf9b383e5a1844e7d22119aa500508c7df9421fa967c9fb4430d6cb2878" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.2.2" badges: dependency: "direct main" description: @@ -141,18 +141,18 @@ packages: dependency: "direct dev" description: name: build_runner - sha256: "67d591d602906ef9201caf93452495ad1812bea2074f04e25dbd7c133785821b" + sha256: "581bacf68f89ec8792f5e5a0b2c4decd1c948e97ce659dc783688c8a88fbec21" url: "https://pub.dev" source: hosted - version: "2.4.7" + version: "2.4.8" build_runner_core: dependency: transitive description: name: build_runner_core - sha256: c9e32d21dd6626b5c163d48b037ce906bbe428bc23ab77bcd77bb21e593b6185 + sha256: "4ae8ffe5ac758da294ecf1802f2aff01558d8b1b00616aa7538ea9a8a5d50799" url: "https://pub.dev" source: hosted - version: "7.2.11" + version: "7.3.0" built_collection: dependency: transitive description: @@ -165,10 +165,10 @@ packages: dependency: transitive description: name: built_value - sha256: c9aabae0718ec394e5bc3c7272e6bb0dc0b32201a08fe185ec1d8401d3e39309 + sha256: a3ec2e0f967bc47f69f95009bb93db936288d61d5343b9436e378b28a2f830c6 url: "https://pub.dev" source: hosted - version: "8.8.1" + version: "8.9.0" cached_network_image: dependency: "direct main" description: @@ -253,10 +253,10 @@ packages: dependency: transitive description: name: code_builder - sha256: feee43a5c05e7b3199bb375a86430b8ada1b04104f2923d0e03cc01ca87b6d84 + sha256: f692079e25e7869c14132d39f223f8eec9830eb76131925143b2129c4bb01b37 url: "https://pub.dev" source: hosted - version: "4.9.0" + version: "4.10.0" collection: dependency: "direct main" description: @@ -349,26 +349,26 @@ packages: dependency: "direct dev" description: name: custom_lint - sha256: "198ec6b8e084d22f508a76556c9afcfb71706ad3f42b083fe0ee923351a96d90" + sha256: "22bd87a362f433ba6aae127a7bac2838645270737f3721b180916d7c5946cb5d" url: "https://pub.dev" source: hosted - version: "0.5.7" + version: "0.5.11" custom_lint_builder: dependency: transitive description: name: custom_lint_builder - sha256: dfcfa987d2bd9d0ba751ef4bdef0f6c1aa0062f2a67fe716fd5f3f8b709d6418 + sha256: "0d48e002438950f9582e574ef806b2bea5719d8d14c0f9f754fbad729bcf3b19" url: "https://pub.dev" source: hosted - version: "0.5.7" + version: "0.5.14" custom_lint_core: dependency: transitive description: name: custom_lint_core - sha256: f84c3fe2f27ef3b8831953e477e59d4a29c2952623f9eac450d7b40d9cdd94cc + sha256: "2952837953022de610dacb464f045594854ced6506ac7f76af28d4a6490e189b" url: "https://pub.dev" source: hosted - version: "0.5.7" + version: "0.5.14" dart_code_metrics: dependency: "direct dev" description: @@ -405,10 +405,10 @@ packages: dependency: "direct main" description: name: device_info_plus - sha256: "0042cb3b2a76413ea5f8a2b40cec2a33e01d0c937e91f0f7c211fde4f7739ba6" + sha256: "77f757b789ff68e4eaf9c56d1752309bd9f7ad557cb105b938a7f8eb89e59110" url: "https://pub.dev" source: hosted - version: "9.1.1" + version: "9.1.2" device_info_plus_platform_interface: dependency: transitive description: @@ -499,7 +499,7 @@ packages: description: path: "." ref: HEAD - resolved-ref: "7587d07dc1ade92cb6d2a5f5ff0b0af74079d318" + resolved-ref: "4acff84ef3e1ab074748b84ea8a374901fc872c7" url: "https://github.com/Enough-Software/enough_mail.git" source: git version: "2.1.6" @@ -517,7 +517,7 @@ packages: description: path: "." ref: HEAD - resolved-ref: "378b93dd2daa5201098ee34677f16a0ffb96a1d5" + resolved-ref: c7702322848a3fcc12e18225edccc5a2bdf318d5 url: "https://github.com/Enough-Software/enough_mail_html.git" source: git version: "2.0.1" @@ -585,10 +585,10 @@ packages: dependency: "direct overridden" description: name: ffi - sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878" + sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21" url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.2" file: dependency: transitive description: @@ -654,10 +654,10 @@ packages: dependency: transitive description: name: flutter_inappwebview_android - sha256: fd4db51e46f49b140d83a3206851432c54ea920b381137c0ba82d0cf59be1dee + sha256: d247f6ed417f1f8c364612fa05a2ecba7f775c8d0c044c1d3b9ee33a6515c421 url: "https://pub.dev" source: hosted - version: "1.0.12" + version: "1.0.13" flutter_inappwebview_internal_annotations: dependency: transitive description: @@ -758,10 +758,10 @@ packages: dependency: "direct main" description: name: flutter_local_notifications - sha256: "892ada16046d641263f30c72e7432397088810a84f34479f6677494802a2b535" + sha256: c18f1de98fe0bb9dd5ba91e1330d4febc8b6a7de6aae3ffe475ef423723e72f3 url: "https://pub.dev" source: hosted - version: "16.3.0" + version: "16.3.2" flutter_local_notifications_linux: dependency: transitive description: @@ -787,10 +787,10 @@ packages: dependency: "direct dev" description: name: flutter_native_splash - sha256: "9cdb5d9665dab5d098dc50feab74301c2c228cd02ca25c9b546ab572cebcd6af" + sha256: "558f10070f03ee71f850a78f7136ab239a67636a294a44a06b6b7345178edb1e" url: "https://pub.dev" source: hosted - version: "2.3.9" + version: "2.3.10" flutter_platform_widgets: dependency: transitive description: @@ -811,10 +811,10 @@ packages: dependency: transitive description: name: flutter_riverpod - sha256: da9591d1f8d5881628ccd5c25c40e74fc3eef50ba45e40c3905a06e1712412d5 + sha256: "4bce556b7ecbfea26109638d5237684538d4abc509d253e6c5c4c5733b360098" url: "https://pub.dev" source: hosted - version: "2.4.9" + version: "2.4.10" flutter_secure_storage: dependency: "direct main" description: @@ -885,10 +885,10 @@ packages: dependency: "direct main" description: name: flutter_widget_from_html_core - sha256: "0e281196f962fd951da5b9d3fa50e0674fabf8fda92eafd8745d050d70877c68" + sha256: "028f4989b9ff4907466af233d50146d807772600d98a3e895662fbdb09c39225" url: "https://pub.dev" source: hosted - version: "0.14.10+1" + version: "0.14.11" fluttercontactpicker: dependency: "direct main" description: @@ -917,10 +917,10 @@ packages: dependency: "direct main" description: name: get_it - sha256: f79870884de16d689cf9a7d15eedf31ed61d750e813c538a6efb92660fea83c3 + sha256: e6017ce7fdeaf218dc51a100344d8cb70134b80e28b760f8bb23c242437bafd7 url: "https://pub.dev" source: hosted - version: "7.6.4" + version: "7.6.7" glob: dependency: transitive description: @@ -933,10 +933,10 @@ packages: dependency: "direct main" description: name: go_router - sha256: "3b40e751eaaa855179b416974d59d29669e750d2e50fcdb2b37f1cb0ca8c803a" + sha256: "07ee2436909f749d606f53521dc1725dd738dc5196e5ff815bc254253c594075" url: "https://pub.dev" source: hosted - version: "13.0.1" + version: "13.1.0" google_fonts: dependency: "direct main" description: @@ -981,10 +981,10 @@ packages: dependency: "direct main" description: name: hooks_riverpod - sha256: c12a456e03ef9be65b0be66963596650ad7a3220e96c7e7b0a048562ea32d6ae + sha256: "758b07eba336e3cbacbd81dba481f2228a14102083fdde07045e8514e8054c49" url: "https://pub.dev" source: hosted - version: "2.4.9" + version: "2.4.10" hotreloader: dependency: transitive description: @@ -1005,10 +1005,10 @@ packages: dependency: "direct main" description: name: http - sha256: d4872660c46d929f6b8a9ef4e7a7eff7e49bbf0c4ec3f385ee32df5119175139 + sha256: a2bbf9d017fcced29139daa8ed2bba4ece450ab222871df93ca9eec6f80c34ba url: "https://pub.dev" source: hosted - version: "1.1.2" + version: "1.2.0" http_multi_server: dependency: transitive description: @@ -1029,10 +1029,10 @@ packages: dependency: transitive description: name: image - sha256: "028f61960d56f26414eb616b48b04eb37d700cbe477b7fb09bf1d7ce57fd9271" + sha256: "49a0d4b0c12402853d3f227fe7c315601b238d126aa4caa5dbb2dcf99421aa4a" url: "https://pub.dev" source: hosted - version: "4.1.3" + version: "4.1.6" intl: dependency: "direct main" description: @@ -1101,10 +1101,10 @@ packages: dependency: "direct main" description: name: local_auth - sha256: "7e6c63082e399b61e4af71266b012e767a5d4525dd6e9ba41e174fd42d76e115" + sha256: "27679ed8e0d7daab2357db6bb7076359e083a56b295c0c59723845301da6aed9" url: "https://pub.dev" source: hosted - version: "2.1.7" + version: "2.1.8" local_auth_android: dependency: transitive description: @@ -1117,18 +1117,18 @@ packages: dependency: transitive description: name: local_auth_ios - sha256: "8293faf72ef0ac4710f209edd03916c2d4c1eeab0483bdcf9b2e659c2f7d737b" + sha256: eb283b530029b334698918f1e282d4483737cbca972ff21b9193be3d6de8e2b8 url: "https://pub.dev" source: hosted - version: "1.1.5" + version: "1.1.6" local_auth_platform_interface: dependency: transitive description: name: local_auth_platform_interface - sha256: "3215f9a97aa532aca91ea7591e9ee6a553bdc66ff9b11f19d14b6dffc4fdf45b" + sha256: "1b842ff177a7068442eae093b64abe3592f816afd2a533c0ebcdbe40f9d2075a" url: "https://pub.dev" source: hosted - version: "1.0.9" + version: "1.0.10" local_auth_windows: dependency: transitive description: @@ -1213,18 +1213,18 @@ packages: dependency: transitive description: name: mime - sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e + sha256: "2e123074287cc9fd6c09de8336dae606d1ddb88d9ac47358826db698c176a1f2" url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "1.0.5" mocktail: dependency: "direct dev" description: name: mocktail - sha256: f603ebd85a576e5914870b02e5839fc5d0243b867bf710651cf239a28ebb365e + sha256: c4b5007d91ca4f67256e720cb1b6d704e79a510183a12fa551021f652577dce6 url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.0.3" modal_bottom_sheet: dependency: "direct main" description: @@ -1293,10 +1293,10 @@ packages: dependency: "direct main" description: name: path_provider - sha256: a1aa8aaa2542a6bc57e381f132af822420216c80d4781f7aa085ca3229208aaa + sha256: b27217933eeeba8ff24845c34003b003b2b22151de3c908d0e679e8fe1aa078b url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" path_provider_android: dependency: transitive description: @@ -1309,10 +1309,10 @@ packages: dependency: transitive description: name: path_provider_foundation - sha256: "19314d595120f82aca0ba62787d58dde2cc6b5df7d2f0daf72489e38d1b57f2d" + sha256: "5a7999be66e000916500be4f15a3633ebceb8302719b47b9cc49ce924125350f" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.3.2" path_provider_linux: dependency: transitive description: @@ -1325,10 +1325,10 @@ packages: dependency: transitive description: name: path_provider_platform_interface - sha256: "94b1e0dd80970c1ce43d5d4e050a9918fce4f4a775e6142424c30a29a363265c" + sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" path_provider_windows: dependency: transitive description: @@ -1382,10 +1382,10 @@ packages: dependency: transitive description: name: pointycastle - sha256: "7c1e5f0d23c9016c5bbd8b1473d0d3fb3fc851b876046039509e18e0c7485f2c" + sha256: "43ac87de6e10afabc85c445745a7b799e04de84cebaa4fd7bf55a5e1e9604d29" url: "https://pub.dev" source: hosted - version: "3.7.3" + version: "3.7.4" pool: dependency: transitive description: @@ -1438,10 +1438,10 @@ packages: dependency: transitive description: name: riverpod - sha256: "942999ee48b899f8a46a860f1e13cee36f2f77609eb54c5b7a669bb20d550b11" + sha256: "548e2192eb7aeb826eb89387f814edb76594f3363e2c0bb99dd733d795ba3589" url: "https://pub.dev" source: hosted - version: "2.4.9" + version: "2.5.0" riverpod_analyzer_utils: dependency: transitive description: @@ -1454,10 +1454,10 @@ packages: dependency: "direct main" description: name: riverpod_annotation - sha256: b70e95fbd5ca7ce42f5148092022971bb2e9843b6ab71e97d479e8ab52e98979 + sha256: "77e5d51afa4fa3e67903fb8746f33d368728d7051a0b6c292bcee60aeba46d95" url: "https://pub.dev" source: hosted - version: "2.3.3" + version: "2.3.4" riverpod_generator: dependency: "direct dev" description: @@ -1486,10 +1486,10 @@ packages: dependency: "direct main" description: name: share_plus - sha256: f74fc3f1cbd99f39760182e176802f693fa0ec9625c045561cfad54681ea93dd + sha256: "3ef39599b00059db0990ca2e30fca0a29d8b37aae924d60063f8e0184cf20900" url: "https://pub.dev" source: hosted - version: "7.2.1" + version: "7.2.2" share_plus_platform_interface: dependency: transitive description: @@ -1518,10 +1518,10 @@ packages: dependency: transitive description: name: shared_preferences_foundation - sha256: "7bf53a9f2d007329ee6f3df7268fd498f8373602f943c975598bbb34649b62a7" + sha256: "7708d83064f38060c7b39db12aefe449cb8cdc031d6062280087bc4cdb988f5c" url: "https://pub.dev" source: hosted - version: "2.3.4" + version: "2.3.5" shared_preferences_linux: dependency: transitive description: @@ -1534,10 +1534,10 @@ packages: dependency: transitive description: name: shared_preferences_platform_interface - sha256: d4ec5fc9ebb2f2e056c617112aa75dcf92fc2e4faaf2ae999caa297473f75d8a + sha256: "22e2ecac9419b4246d7c22bfbbda589e3acf5c0351137d87dd2939d984d37c3b" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.3.2" shared_preferences_web: dependency: transitive description: @@ -1619,18 +1619,18 @@ packages: dependency: transitive description: name: sqflite - sha256: "591f1602816e9c31377d5f008c2d9ef7b8aca8941c3f89cc5fd9d84da0c38a9a" + sha256: a9016f495c927cb90557c909ff26a6d92d9bd54fc42ba92e19d4e79d61e798c6 url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.3.2" sqflite_common: dependency: transitive description: name: sqflite_common - sha256: bb4738f15b23352822f4c42a531677e5c6f522e079461fd240ead29d8d8a54a6 + sha256: "28d8c66baee4968519fb8bd6cdbedad982d6e53359091f0b74544a9f32ec72d5" url: "https://pub.dev" source: hosted - version: "2.5.0+2" + version: "2.5.3" stack_trace: dependency: transitive description: @@ -1739,26 +1739,26 @@ packages: dependency: "direct main" description: name: url_launcher - sha256: e9aa5ea75c84cf46b3db4eea212523591211c3cf2e13099ee4ec147f54201c86 + sha256: c512655380d241a337521703af62d2c122bf7b77a46ff7dd750092aa9433499c url: "https://pub.dev" source: hosted - version: "6.2.2" + version: "6.2.4" url_launcher_android: dependency: transitive description: name: url_launcher_android - sha256: c0766a55ab42cefaa728cabc951e82919ab41a3a4fee0aaa96176ca82da8cc51 + sha256: "507dc655b1d9cb5ebc756032eb785f114e415f91557b73bf60b7e201dfedeb2f" url: "https://pub.dev" source: hosted - version: "6.2.1" + version: "6.2.2" url_launcher_ios: dependency: transitive description: name: url_launcher_ios - sha256: "46b81e3109cbb2d6b81702ad3077540789a3e74e22795eb9f0b7d494dbaa72ea" + sha256: "75bb6fe3f60070407704282a2d295630cab232991eb52542b18347a8a941df03" url: "https://pub.dev" source: hosted - version: "6.2.2" + version: "6.2.4" url_launcher_linux: dependency: transitive description: @@ -1779,10 +1779,10 @@ packages: dependency: transitive description: name: url_launcher_platform_interface - sha256: f099b552bd331eacd69affed7ff2f23bfa6b0cb825b629edf3d844375a7501ad + sha256: a932c3a8082e118f80a475ce692fde89dc20fddb24c57360b96bc56f7035de1f url: "https://pub.dev" source: hosted - version: "2.2.1" + version: "2.3.1" url_launcher_web: dependency: transitive description: @@ -1803,10 +1803,10 @@ packages: dependency: "direct overridden" description: name: uuid - sha256: "22c94e5ad1e75f9934b766b53c742572ee2677c56bc871d850a57dad0f82127f" + sha256: cd210a09f7c18cbe5a02511718e0334de6559871052c90a90c0cca46a4aa81c8 url: "https://pub.dev" source: hosted - version: "4.2.2" + version: "4.3.3" vector_math: dependency: transitive description: @@ -1835,18 +1835,18 @@ packages: dependency: transitive description: name: video_player_avfoundation - sha256: "08da93071ef322603839aa42e90e23d4820b03cf2db7eb6a45de5d41fe85c2aa" + sha256: "309e3962795e761be010869bae65c0b0e45b5230c5cee1bec72197ca7db040ed" url: "https://pub.dev" source: hosted - version: "2.5.4" + version: "2.5.6" video_player_platform_interface: dependency: transitive description: name: video_player_platform_interface - sha256: be72301bf2c0150ab35a8c34d66e5a99de525f6de1e8d27c0672b836fe48f73a + sha256: "236454725fafcacf98f0f39af0d7c7ab2ce84762e3b63f2cbb3ef9a7e0550bc6" url: "https://pub.dev" source: hosted - version: "6.2.1" + version: "6.2.2" video_player_web: dependency: transitive description: @@ -1891,50 +1891,50 @@ packages: dependency: "direct overridden" description: name: web - sha256: edc8a9573dd8c5a83a183dae1af2b6fd4131377404706ca4e5420474784906fa + sha256: "4188706108906f002b3a293509234588823c8c979dc83304e229ff400c996b05" url: "https://pub.dev" source: hosted - version: "0.4.0" + version: "0.4.2" web_socket_channel: dependency: transitive description: name: web_socket_channel - sha256: "045ec2137c27bf1a32e6ffa0e734d532a6677bf9016a0d1a406c54e499ff945b" + sha256: "939ab60734a4f8fa95feacb55804fa278de28bdeef38e616dc08e44a84adea23" url: "https://pub.dev" source: hosted - version: "2.4.1" + version: "2.4.3" webview_flutter: dependency: "direct main" description: name: webview_flutter - sha256: "60e23976834e995c404c0b21d3b9db37ecd77d3303ef74f8b8d7a7b19947fc04" + sha256: d81b68e88cc353e546afb93fb38958e3717282c5ac6e5d3be4a4aef9fc3c1413 url: "https://pub.dev" source: hosted - version: "4.4.3" + version: "4.5.0" webview_flutter_android: dependency: transitive description: name: webview_flutter_android - sha256: "161af93c2abaf94ef2192bffb53a3658b2d721a3bf99b69aa1e47814ee18cc96" + sha256: "4ea3c4e1b8ed590162b15b8a61b41b1ef3ff179a314627c16ce40c086d94b8af" url: "https://pub.dev" source: hosted - version: "3.13.2" + version: "3.14.0" webview_flutter_platform_interface: dependency: transitive description: name: webview_flutter_platform_interface - sha256: dbe745ee459a16b6fec296f7565a8ef430d0d681001d8ae521898b9361854943 + sha256: d937581d6e558908d7ae3dc1989c4f87b786891ab47bb9df7de548a151779d8d url: "https://pub.dev" source: hosted - version: "2.9.0" + version: "2.10.0" webview_flutter_wkwebview: dependency: transitive description: name: webview_flutter_wkwebview - sha256: "02d8f3ebbc842704b2b662377b3ee11c0f8f1bbaa8eab6398262f40049819160" + sha256: b99ca8d8bae9c6b43d568218691aa537fb0aeae1d7d34eadf112a6aa36d26506 url: "https://pub.dev" source: hosted - version: "3.10.1" + version: "3.11.0" win32: dependency: transitive description: @@ -1976,5 +1976,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.2.0 <4.0.0" - flutter: ">=3.16.0" + dart: ">=3.2.3 <4.0.0" + flutter: ">=3.16.6" diff --git a/pubspec.yaml b/pubspec.yaml index e04e202..229ad84 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,5 +1,5 @@ name: enough_mail_app -description: Maily aims to become a fully featured email app once it has grown up. +description: Base components for mail apps # The following line prevents the package from being accidentally published to # pub.dev using `pub publish`. This is preferred for private packages. @@ -84,6 +84,8 @@ dependencies: webview_flutter: ^4.0.2 dependency_overrides: + # analyzer: ^6.4.1 # for dart_code_metrics + # meta: ^1.11.0 # for analyzer / dart_code_metrics collection: ^1.18.0 intl: ^0.18.1 http: ^1.1.1 # for dart_code_metrics @@ -164,6 +166,7 @@ dependency_overrides: # path: ../enough_platform_widgets dev_dependencies: + # analyzer: ^6.4.1 build_runner: ^2.4.6 custom_lint: ^0.5.3 dart_code_metrics: 5.7.6