From c2ac10bdf2e20ebf9b27a3941c5fe7d0ddd7e61a Mon Sep 17 00:00:00 2001 From: Jagandeep Brar Date: Tue, 10 May 2022 21:16:16 -0400 Subject: [PATCH] chore: refactor and cleanup of system services --- .github/actions/prepare_for_build/action.yml | 1 + .vscode/cspell.json | 1 + analysis_options.yaml | 5 +- assets/localization/en.json | 2 + lib/core.dart | 5 +- lib/core/cache/image_cache/image_cache.dart | 1 + .../platform/image_cache_html.dart | 1 + .../image_cache/platform/image_cache_io.dart | 3 +- .../platform/image_cache_stub.dart | 1 + lib/core/database/database.dart | 3 +- lib/core/extensions/datetime.dart | 3 +- lib/core/extensions/string.dart | 45 -------------- lib/core/firebase.dart | 6 -- lib/core/go_router/page_router.dart | 3 +- lib/core/models/logs/log_type.dart | 5 +- lib/core/models/types/links.dart | 3 +- lib/core/modules.dart | 13 ++-- lib/core/router/module_router.dart | 2 +- lib/core/router/router.dart | 2 +- lib/core/state/state.dart | 22 +++---- lib/core/system/in_app_purchases.dart | 3 +- lib/core/utilities.dart | 6 -- lib/core/utilities/changelog.dart | 8 +-- lib/core/utilities/encryption.dart | 54 ---------------- lib/core/utilities/helpers.dart | 10 --- lib/core/utilities/uuid.dart | 11 ---- lib/core/utilities/validator.dart | 7 --- lib/extensions/string.dart | 59 ++++++++++++++++++ lib/extensions/string_links.dart | 28 +++++++++ lib/{core => }/firebase/auth.dart | 2 + lib/{core => }/firebase/core.dart | 6 +- lib/{core => }/firebase/firestore.dart | 3 + lib/{core => }/firebase/messaging.dart | 4 +- .../options.dart} | 0 lib/{core => }/firebase/storage.dart | 1 + lib/{core => }/firebase/types.dart | 0 .../firebase/types/backup_document.dart | 0 lib/{core => }/firebase/types/response.dart | 0 lib/main.dart | 23 ++++--- .../core/adapters/calendar_starting_day.dart | 2 +- .../core/adapters/calendar_starting_size.dart | 2 +- .../core/adapters/calendar_starting_type.dart | 2 +- lib/modules/dashboard/core/api/api.dart | 18 +++--- .../dashboard/core/api/data/lidarr.dart | 13 ++-- .../dashboard/core/api/data/radarr.dart | 21 ++++--- .../dashboard/core/api/data/sonarr.dart | 22 +++---- lib/modules/dashboard/core/database.dart | 14 ++--- lib/modules/dashboard/core/dialogs.dart | 8 +-- lib/modules/dashboard/core/state.dart | 14 ++--- .../routes/dashboard/pages/calendar.dart | 18 +++--- .../routes/dashboard/pages/modules.dart | 12 ++-- .../dashboard/routes/dashboard/route.dart | 20 +++--- .../dashboard/widgets/calendar_view.dart | 28 ++++----- .../dashboard/widgets/content_block.dart | 12 ++-- .../dashboard/widgets/schedule_view.dart | 14 ++--- .../dashboard/widgets/switch_view_action.dart | 8 +-- lib/modules/dashboard/routes/routes.dart | 10 +-- .../lidarr/widgets/catalogue_tile.dart | 3 +- .../lidarr/widgets/search_result_tile.dart | 11 ++-- lib/modules/nzbget/core/api/data/queue.dart | 3 +- lib/modules/nzbget/routes/nzbget.dart | 4 +- lib/modules/nzbget/widgets/app_bar_stats.dart | 3 +- lib/modules/nzbget/widgets/history_tile.dart | 5 +- .../overseerr/api/models/issues/issue.dart | 1 + .../api/models/issues/issue_comment.dart | 1 + .../overseerr/api/models/media/media.dart | 1 + .../overseerr/api/models/media/season.dart | 1 + .../api/models/requests/request.dart | 1 + .../overseerr/api/models/users/user.dart | 1 + lib/modules/overseerr/api/overseerr.dart | 2 +- lib/modules/radarr/api/commands.dart | 4 +- lib/modules/radarr/api/radarr.dart | 2 +- .../api/src/models/command/command.dart | 4 +- .../models/custom_format/custom_format.dart | 2 +- .../api/src/models/filesystem/directory.dart | 4 +- .../api/src/models/filesystem/file.dart | 4 +- .../api/src/models/filesystem/filesystem.dart | 2 +- .../src/models/health_check/health_check.dart | 4 +- .../api/src/models/history/history.dart | 6 +- .../src/models/history/history_record.dart | 6 +- .../src/models/import_list/import_list.dart | 4 +- .../models/manual_import/manual_import.dart | 2 +- .../manual_import/manual_import_file.dart | 2 +- .../manual_import/manual_import_update.dart | 2 +- .../manual_import_update_data.dart | 3 +- .../src/models/movie/alternate_titles.dart | 2 +- .../api/src/models/movie/collection.dart | 2 +- .../radarr/api/src/models/movie/credits.dart | 6 +- .../api/src/models/movie/movie_file.dart | 4 +- .../src/models/movie/movie_file_quality.dart | 2 +- .../api/src/models/quality_profile/item.dart | 2 +- .../quality_profile/quality_definition.dart | 2 +- .../quality_profile/quality_profile.dart | 4 +- .../radarr/api/src/models/queue/queue.dart | 6 +- .../api/src/models/queue/queue_record.dart | 6 +- .../api/src/models/release/release.dart | 6 +- .../src/models/root_folder/root_folder.dart | 2 +- lib/modules/radarr/api/utilities.dart | 2 +- lib/modules/radarr/core/api_helper.dart | 27 ++++---- .../core/extensions/radarr_extra_file.dart | 1 + .../core/extensions/radarr_system_status.dart | 1 + .../widgets/discovery_results_tile.dart | 5 +- .../widgets/search_results_tile.dart | 5 +- .../routes/catalogue/widgets/movie_tile.dart | 9 +-- .../routes/history/widgets/history_tile.dart | 3 +- .../widgets/import_tile.dart | 5 +- .../routes/missing/widgets/missing_tile.dart | 9 +-- .../widgets/files_file_block.dart | 3 +- .../widgets/overview_movie_links_section.dart | 4 +- .../routes/queue/widgets/queue_tile.dart | 3 +- .../routes/releases/widgets/release_tile.dart | 7 ++- .../upcoming/widgets/upcoming_tile.dart | 9 +-- lib/modules/sabnzbd/core/api/data/queue.dart | 5 +- lib/modules/sabnzbd/routes/sabnzbd.dart | 5 +- .../sabnzbd/widgets/app_bar_stats.dart | 3 +- lib/modules/sabnzbd/widgets/history_tile.dart | 5 +- .../search/core/types/download_type.dart | 3 +- .../routes/results/widgets/result_tile.dart | 3 +- lib/modules/settings/core/dialogs.dart | 19 +++--- lib/modules/settings/core/router.dart | 2 + .../routes/account/pages/password_reset.dart | 10 +-- .../routes/account/pages/settings.dart | 7 +-- .../routes/account/pages/signed_in.dart | 1 + .../routes/account/pages/signed_out.dart | 10 +-- .../settings/routes/account/route.dart | 1 + .../account/widgets/change_email_tile.dart | 1 + .../account/widgets/change_password_tile.dart | 1 + .../account/widgets/config_backup_tile.dart | 62 ++++++++++--------- .../account/widgets/config_delete_tile.dart | 3 + .../account/widgets/config_restore_tile.dart | 16 +++-- .../account/widgets/delete_account_tile.dart | 1 + .../settings/routes/configuration/route.dart | 7 +-- .../pages/calendar_settings.dart | 18 +++--- .../pages/default_pages.dart | 6 +- .../configuration_localization/route.dart | 3 +- .../routes/configuration_network/route.dart | 3 +- .../configuration_quickactions/route.dart | 3 +- .../settings/routes/notifications/route.dart | 1 + .../notifications/widgets/module_tile.dart | 2 + .../settings/routes/settings/route.dart | 7 ++- lib/modules/settings/routes/system/route.dart | 9 +-- .../routes/system/widgets/backup_tile.dart | 38 ++++++------ .../routes/system/widgets/restore_tile.dart | 31 ++++++---- .../settings/routes/system_logs/route.dart | 7 +-- lib/modules/sonarr/api/controllers.dart | 4 +- lib/modules/sonarr/api/sonarr.dart | 2 +- .../src/models/profile/language_profile.dart | 4 +- .../models/profile/language_profile_item.dart | 2 +- .../src/models/profile/quality_profile.dart | 2 +- .../models/profile/quality_profile_item.dart | 2 +- lib/modules/sonarr/core/api_controller.dart | 3 +- lib/modules/sonarr/core/dialogs.dart | 1 + .../sonarr/core/extensions/sonarr_series.dart | 1 + .../widgets/search_results_tile.dart | 5 +- .../widgets/tile_series_type.dart | 1 + .../routes/catalogue/widgets/series_tile.dart | 9 +-- .../edit_series/widgets/tile_series_type.dart | 1 + .../routes/history/widgets/history_tile.dart | 3 +- .../routes/missing/widgets/missing_tile.dart | 3 +- .../routes/queue/widgets/queue_tile.dart | 7 ++- .../routes/releases/widgets/release_tile.dart | 11 ++-- .../sheets/episode_details.dart | 5 +- ...verview_series_information_block.dart.dart | 1 + .../upcoming/widgets/upcoming_tile.dart | 3 +- lib/modules/tautulli/api/commands.dart | 4 +- .../src/models/libraries/search_results.dart | 2 +- lib/modules/tautulli/api/tautulli.dart | 2 +- lib/modules/tautulli/api/utilities.dart | 1 + lib/modules/tautulli/core/api_helper.dart | 3 +- .../activity/widgets/activity_tile.dart | 5 +- .../routes/graphs/widgets/type_button.dart | 1 + .../routes/history/widgets/history_tile.dart | 5 +- .../libraries/widgets/library_tile.dart | 3 +- .../recently_added/widgets/content_tile.dart | 5 +- .../statistics/widgets/type_button.dart | 1 + .../routes/statistics/widgets/user_tile.dart | 3 +- .../widgets/synced_item_tile.dart | 9 +-- .../users_details/widgets/ip_addresses.dart | 3 +- .../api/platform/wake_on_lan_html.dart | 1 + .../api/platform/wake_on_lan_io.dart | 9 +-- .../api/platform/wake_on_lan_stub.dart | 1 + lib/modules/wake_on_lan/api/wake_on_lan.dart | 1 + lib/system/environment.dart | 7 +-- lib/system/filesystem/filesystem.dart | 3 +- .../filesystem/platform/filesystem_html.dart | 1 + .../filesystem/platform/filesystem_io.dart | 10 +-- .../filesystem/platform/filesystem_stub.dart | 2 + lib/system/flavor.dart | 3 +- lib/system/localization.dart | 6 +- lib/{core/utilities => system}/logger.dart | 28 +++------ lib/system/network/network.dart | 1 + lib/system/network/platform/network_html.dart | 1 + lib/system/network/platform/network_io.dart | 6 +- lib/system/network/platform/network_stub.dart | 1 + .../platform/quick_actions_html.dart | 1 + .../platform/quick_actions_io.dart | 7 ++- .../platform/quick_actions_stub.dart | 1 + lib/system/quick_actions/quick_actions.dart | 1 + .../platform/window_manager_html.dart | 1 + .../platform/window_manager_io.dart | 3 +- .../platform/window_manager_stub.dart | 1 + lib/system/window_manager/window_manager.dart | 1 + lib/utils/encryption.dart | 44 +++++++++++++ lib/{core/utilities => utils}/parser.dart | 4 -- lib/utils/uuid.dart | 13 ++++ lib/utils/validator.dart | 12 ++++ lib/{ui => widgets}/appbar.dart | 0 lib/{core => widgets}/assets.dart | 0 lib/{ui => widgets}/banner.dart | 0 lib/{ui => widgets}/block.dart | 0 lib/{ui => widgets}/block/block.dart | 0 lib/{ui => widgets}/block/grid_block.dart | 0 lib/{ui => widgets}/bottom_bar.dart | 0 .../bottom_bar/action_bar.dart | 0 .../bottom_bar/action_bar_card.dart | 0 lib/{ui => widgets}/bottom_bar/badge.dart | 0 .../bottom_bar/navigation_bar.dart | 0 lib/{ui => widgets}/bottom_modal_sheet.dart | 0 lib/{ui => widgets}/button.dart | 0 lib/{ui => widgets}/card.dart | 0 lib/{ui => widgets}/colors.dart | 0 lib/{ui => widgets}/containers.dart | 0 .../containers/button_container.dart | 0 lib/{ui => widgets}/controllers.dart | 0 .../controllers/page_controller.dart | 0 lib/{ui => widgets}/deprecated.dart | 0 lib/{ui => widgets}/dialog.dart | 0 lib/{ui => widgets}/divider.dart | 0 lib/{ui => widgets}/drawer.dart | 0 lib/{ui => widgets}/drawer/drawer.dart | 3 +- lib/{ui => widgets}/drawer/drawer_header.dart | 0 .../floating_action_button.dart | 0 .../floating_action_button_animated.dart | 0 .../floating_action_button_extended.dart | 0 lib/{ui => widgets}/grid_view.dart | 0 .../grid_view/grid_view_builder.dart | 0 lib/{ui => widgets}/header.dart | 0 lib/{ui => widgets}/highlighted_node.dart | 0 lib/{ui => widgets}/icons.dart | 0 lib/{ui => widgets}/icons/icon.dart | 0 lib/{ui => widgets}/icons/icon_brands.dart | 0 lib/{ui => widgets}/icons/icon_button.dart | 0 lib/{ui => widgets}/images.dart | 0 lib/{ui => widgets}/images/network_image.dart | 0 .../network_image_provider.dart | 1 + .../platform/network_image_provider_html.dart | 1 + .../platform/network_image_provider_io.dart | 3 +- .../platform/network_image_provider_stub.dart | 1 + lib/{ui => widgets}/input_bar.dart | 0 lib/{ui => widgets}/linear_indicator.dart | 0 lib/{ui => widgets}/list_tile.dart | 0 .../list_tile/expandable_list_tile.dart | 0 lib/{ui => widgets}/list_tile/list_tile.dart | 0 lib/{ui => widgets}/list_view.dart | 0 .../flutter_reorderable_list_view.dart | 0 lib/{ui => widgets}/list_view/list_view.dart | 0 .../list_view/list_view_builder.dart | 0 .../list_view/list_view_modal.dart | 0 .../list_view/list_view_modal_builder.dart | 0 .../list_view/paged_list_view.dart | 0 .../list_view/reorderable_list_view.dart | 2 +- .../reorderable_list_view_builder.dart | 2 +- .../reorderable_list_view_dragger.dart | 0 lib/{ui => widgets}/loader.dart | 0 lib/{ui => widgets}/message.dart | 0 lib/{ui => widgets}/mixins.dart | 0 lib/{ui => widgets}/mixins/load_callback.dart | 0 .../mixins/scroll_controller.dart | 0 lib/{ui => widgets}/page_view.dart | 0 lib/{ui => widgets}/popup_menu_button.dart | 0 lib/{ui => widgets}/refresh_indicator.dart | 0 lib/{ui => widgets}/scaffold.dart | 0 lib/{ui => widgets}/scroll_behaviour.dart | 0 lib/{ui => widgets}/shape.dart | 0 lib/{ui => widgets}/shimmer.dart | 0 lib/{ui => widgets}/snackbar.dart | 0 lib/{ui => widgets}/snackbar/snackbar.dart | 0 .../snackbar/snackbar_error.dart | 0 .../snackbar/snackbar_info.dart | 3 +- .../snackbar/snackbar_success.dart | 3 +- lib/{ui => widgets}/switch.dart | 0 lib/{ui => widgets}/table.dart | 0 lib/{ui => widgets}/table/table_card.dart | 0 lib/{ui => widgets}/table/table_content.dart | 1 + lib/{ui => widgets}/text.dart | 0 lib/{ui => widgets}/text_span.dart | 0 lib/{ui => widgets}/text_style.dart | 0 lib/{ui => widgets}/theme.dart | 0 lib/{ui => widgets}/ui.dart | 1 + lib/{ui => widgets}/will_pop_scope.dart | 0 localization/lunasea/en.json | 2 + package.json | 2 +- pubspec.lock | 2 +- pubspec.yaml | 2 +- 294 files changed, 770 insertions(+), 654 deletions(-) delete mode 100644 lib/core/firebase.dart delete mode 100644 lib/core/utilities/encryption.dart delete mode 100644 lib/core/utilities/helpers.dart delete mode 100644 lib/core/utilities/uuid.dart delete mode 100644 lib/core/utilities/validator.dart create mode 100644 lib/extensions/string.dart create mode 100644 lib/extensions/string_links.dart rename lib/{core => }/firebase/auth.dart (98%) rename lib/{core => }/firebase/core.dart (87%) rename lib/{core => }/firebase/firestore.dart (95%) rename lib/{core => }/firebase/messaging.dart (98%) rename lib/{firebase_options.dart => firebase/options.dart} (100%) rename lib/{core => }/firebase/storage.dart (98%) rename lib/{core => }/firebase/types.dart (100%) rename lib/{core => }/firebase/types/backup_document.dart (100%) rename lib/{core => }/firebase/types/response.dart (100%) rename lib/{core/utilities => system}/logger.dart (68%) create mode 100644 lib/utils/encryption.dart rename lib/{core/utilities => utils}/parser.dart (52%) create mode 100644 lib/utils/uuid.dart create mode 100644 lib/utils/validator.dart rename lib/{ui => widgets}/appbar.dart (100%) rename lib/{core => widgets}/assets.dart (100%) rename lib/{ui => widgets}/banner.dart (100%) rename lib/{ui => widgets}/block.dart (100%) rename lib/{ui => widgets}/block/block.dart (100%) rename lib/{ui => widgets}/block/grid_block.dart (100%) rename lib/{ui => widgets}/bottom_bar.dart (100%) rename lib/{ui => widgets}/bottom_bar/action_bar.dart (100%) rename lib/{ui => widgets}/bottom_bar/action_bar_card.dart (100%) rename lib/{ui => widgets}/bottom_bar/badge.dart (100%) rename lib/{ui => widgets}/bottom_bar/navigation_bar.dart (100%) rename lib/{ui => widgets}/bottom_modal_sheet.dart (100%) rename lib/{ui => widgets}/button.dart (100%) rename lib/{ui => widgets}/card.dart (100%) rename lib/{ui => widgets}/colors.dart (100%) rename lib/{ui => widgets}/containers.dart (100%) rename lib/{ui => widgets}/containers/button_container.dart (100%) rename lib/{ui => widgets}/controllers.dart (100%) rename lib/{ui => widgets}/controllers/page_controller.dart (100%) rename lib/{ui => widgets}/deprecated.dart (100%) rename lib/{ui => widgets}/dialog.dart (100%) rename lib/{ui => widgets}/divider.dart (100%) rename lib/{ui => widgets}/drawer.dart (100%) rename lib/{ui => widgets}/drawer/drawer.dart (98%) rename lib/{ui => widgets}/drawer/drawer_header.dart (100%) rename lib/{ui => widgets}/floating_action_button.dart (100%) rename lib/{ui => widgets}/floating_action_button/floating_action_button_animated.dart (100%) rename lib/{ui => widgets}/floating_action_button/floating_action_button_extended.dart (100%) rename lib/{ui => widgets}/grid_view.dart (100%) rename lib/{ui => widgets}/grid_view/grid_view_builder.dart (100%) rename lib/{ui => widgets}/header.dart (100%) rename lib/{ui => widgets}/highlighted_node.dart (100%) rename lib/{ui => widgets}/icons.dart (100%) rename lib/{ui => widgets}/icons/icon.dart (100%) rename lib/{ui => widgets}/icons/icon_brands.dart (100%) rename lib/{ui => widgets}/icons/icon_button.dart (100%) rename lib/{ui => widgets}/images.dart (100%) rename lib/{ui => widgets}/images/network_image.dart (100%) rename lib/{ui => widgets}/images/network_image_provider/network_image_provider.dart (93%) rename lib/{ui => widgets}/images/network_image_provider/platform/network_image_provider_html.dart (93%) rename lib/{ui => widgets}/images/network_image_provider/platform/network_image_provider_io.dart (89%) rename lib/{ui => widgets}/images/network_image_provider/platform/network_image_provider_stub.dart (85%) rename lib/{ui => widgets}/input_bar.dart (100%) rename lib/{ui => widgets}/linear_indicator.dart (100%) rename lib/{ui => widgets}/list_tile.dart (100%) rename lib/{ui => widgets}/list_tile/expandable_list_tile.dart (100%) rename lib/{ui => widgets}/list_tile/list_tile.dart (100%) rename lib/{ui => widgets}/list_view.dart (100%) rename lib/{ui => widgets}/list_view/flutter_reorderable_list_view.dart (100%) rename lib/{ui => widgets}/list_view/list_view.dart (100%) rename lib/{ui => widgets}/list_view/list_view_builder.dart (100%) rename lib/{ui => widgets}/list_view/list_view_modal.dart (100%) rename lib/{ui => widgets}/list_view/list_view_modal_builder.dart (100%) rename lib/{ui => widgets}/list_view/paged_list_view.dart (100%) rename lib/{ui => widgets}/list_view/reorderable_list_view.dart (94%) rename lib/{ui => widgets}/list_view/reorderable_list_view_builder.dart (94%) rename lib/{ui => widgets}/list_view/reorderable_list_view_dragger.dart (100%) rename lib/{ui => widgets}/loader.dart (100%) rename lib/{ui => widgets}/message.dart (100%) rename lib/{ui => widgets}/mixins.dart (100%) rename lib/{ui => widgets}/mixins/load_callback.dart (100%) rename lib/{ui => widgets}/mixins/scroll_controller.dart (100%) rename lib/{ui => widgets}/page_view.dart (100%) rename lib/{ui => widgets}/popup_menu_button.dart (100%) rename lib/{ui => widgets}/refresh_indicator.dart (100%) rename lib/{ui => widgets}/scaffold.dart (100%) rename lib/{ui => widgets}/scroll_behaviour.dart (100%) rename lib/{ui => widgets}/shape.dart (100%) rename lib/{ui => widgets}/shimmer.dart (100%) rename lib/{ui => widgets}/snackbar.dart (100%) rename lib/{ui => widgets}/snackbar/snackbar.dart (100%) rename lib/{ui => widgets}/snackbar/snackbar_error.dart (100%) rename lib/{ui => widgets}/snackbar/snackbar_info.dart (83%) rename lib/{ui => widgets}/snackbar/snackbar_success.dart (83%) rename lib/{ui => widgets}/switch.dart (100%) rename lib/{ui => widgets}/table.dart (100%) rename lib/{ui => widgets}/table/table_card.dart (100%) rename lib/{ui => widgets}/table/table_content.dart (98%) rename lib/{ui => widgets}/text.dart (100%) rename lib/{ui => widgets}/text_span.dart (100%) rename lib/{ui => widgets}/text_style.dart (100%) rename lib/{ui => widgets}/theme.dart (100%) rename lib/{ui => widgets}/ui.dart (99%) rename lib/{ui => widgets}/will_pop_scope.dart (100%) diff --git a/.github/actions/prepare_for_build/action.yml b/.github/actions/prepare_for_build/action.yml index 8bc55a2f..81e4776b 100644 --- a/.github/actions/prepare_for_build/action.yml +++ b/.github/actions/prepare_for_build/action.yml @@ -124,6 +124,7 @@ runs: --android-app-id=app.lunasea.lunasea \ --ios-bundle-id=app.lunasea.lunasea \ --macos-bundle-id=app.lunasea.lunasea \ + --out=lib/firebase/options.dart \ --yes - name: Setup Android Platform diff --git a/.vscode/cspell.json b/.vscode/cspell.json index 7dd73185..954649a5 100644 --- a/.vscode/cspell.json +++ b/.vscode/cspell.json @@ -27,6 +27,7 @@ "deintegrate", "Discogs", "emdash", + "encrypter", "fanart", "fastlane", "Firestore", diff --git a/analysis_options.yaml b/analysis_options.yaml index 6290c26b..2663886b 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -6,15 +6,12 @@ analyzer: linter: rules: avoid_function_literals_in_foreach_calls: false - avoid_positional_boolean_parameters: false avoid_types_on_closure_parameters: false constant_identifier_names: false - lines_longer_than_80_chars: false omit_local_variable_types: false - one_member_abstracts: false public_member_api_docs: false + always_use_package_imports: true # Will be disabled and required once other linting rules have been fixed - prefer_relative_imports: false curly_braces_in_flow_control_structures: false unnecessary_this: false avoid_catches_without_on_clauses: false diff --git a/assets/localization/en.json b/assets/localization/en.json index 46df7130..42fec600 100644 --- a/assets/localization/en.json +++ b/assets/localization/en.json @@ -38,6 +38,8 @@ "lunasea.Clear": "Clear", "lunasea.Close": "Close", "lunasea.ComingSoon": "Coming Soon", + "lunasea.Copied": "Copied", + "lunasea.CopiedContentToTheClipboard": "Copied Content to the Clipboard", "lunasea.Dashboard": "Dashboard", "lunasea.DaysAgo": "{} Days Ago", "lunasea.Delete": "Delete", diff --git a/lib/core.dart b/lib/core.dart index 543ea577..718643d9 100644 --- a/lib/core.dart +++ b/lib/core.dart @@ -1,9 +1,7 @@ -export 'core/assets.dart'; export 'core/cache.dart'; export 'core/database.dart'; export 'core/dialogs.dart'; export 'core/extensions.dart'; -export 'core/firebase.dart'; export 'core/models.dart'; export 'core/modules.dart'; export 'core/pages.dart'; @@ -13,7 +11,8 @@ export 'core/state.dart'; export 'core/system.dart'; export 'core/utilities.dart'; -export 'ui/ui.dart'; +export 'system/logger.dart'; +export 'widgets/ui.dart'; export 'vendor.dart' hide StreamProvider, diff --git a/lib/core/cache/image_cache/image_cache.dart b/lib/core/cache/image_cache/image_cache.dart index 321c7b91..69badcd4 100644 --- a/lib/core/cache/image_cache/image_cache.dart +++ b/lib/core/cache/image_cache/image_cache.dart @@ -1,3 +1,4 @@ +// ignore: always_use_package_imports import 'platform/image_cache_stub.dart' if (dart.library.io) 'platform/image_cache_io.dart' if (dart.library.html) 'platform/image_cache_html.dart'; diff --git a/lib/core/cache/image_cache/platform/image_cache_html.dart b/lib/core/cache/image_cache/platform/image_cache_html.dart index b13d701a..92bca666 100644 --- a/lib/core/cache/image_cache/platform/image_cache_html.dart +++ b/lib/core/cache/image_cache/platform/image_cache_html.dart @@ -1,3 +1,4 @@ +// ignore: always_use_package_imports import '../image_cache.dart'; bool isPlatformSupported() => false; diff --git a/lib/core/cache/image_cache/platform/image_cache_io.dart b/lib/core/cache/image_cache/platform/image_cache_io.dart index 40ad6194..eb17c73b 100644 --- a/lib/core/cache/image_cache/platform/image_cache_io.dart +++ b/lib/core/cache/image_cache/platform/image_cache_io.dart @@ -1,7 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_cache_manager/flutter_cache_manager.dart'; +import 'package:lunasea/system/platform.dart'; -import '../../../../system/platform.dart'; +// ignore: always_use_package_imports import '../image_cache.dart'; bool isPlatformSupported() { diff --git a/lib/core/cache/image_cache/platform/image_cache_stub.dart b/lib/core/cache/image_cache/platform/image_cache_stub.dart index b13d701a..92bca666 100644 --- a/lib/core/cache/image_cache/platform/image_cache_stub.dart +++ b/lib/core/cache/image_cache/platform/image_cache_stub.dart @@ -1,3 +1,4 @@ +// ignore: always_use_package_imports import '../image_cache.dart'; bool isPlatformSupported() => false; diff --git a/lib/core/database/database.dart b/lib/core/database/database.dart index 006d927c..07137de0 100644 --- a/lib/core/database/database.dart +++ b/lib/core/database/database.dart @@ -1,6 +1,5 @@ import 'package:lunasea/core.dart'; - -import '../../system/platform.dart'; +import 'package:lunasea/system/platform.dart'; class Database { static const String _DATABASE_LEGACY_PATH = 'database'; diff --git a/lib/core/extensions/datetime.dart b/lib/core/extensions/datetime.dart index ac534512..69223229 100644 --- a/lib/core/extensions/datetime.dart +++ b/lib/core/extensions/datetime.dart @@ -1,4 +1,5 @@ import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; extension DateTimeExtension on DateTime { /// Get the floor of a date. @@ -69,7 +70,7 @@ extension DateTimeExtension on DateTime { bool shortMonth = false, }) { String _format = shortMonth ? 'MMM dd, y' : 'MMMM dd, y'; - _format += timeOnNewLine ? '\n' : sameLineDelimiter.lunaPad(); + _format += timeOnNewLine ? '\n' : sameLineDelimiter.pad(); _format += LunaDatabaseValue.USE_24_HOUR_TIME.data ? 'HH:mm' : 'hh:mm'; _format += showSeconds ? ':ss' : ''; _format += LunaDatabaseValue.USE_24_HOUR_TIME.data ? '' : ' a'; diff --git a/lib/core/extensions/string.dart b/lib/core/extensions/string.dart index 6c41cf32..043b6471 100644 --- a/lib/core/extensions/string.dart +++ b/lib/core/extensions/string.dart @@ -1,47 +1,6 @@ -import 'package:flutter/services.dart'; import 'package:lunasea/core.dart'; import 'package:url_launcher/url_launcher.dart'; -extension StringExtension on String { - /// Pad a string on both sides with the spacer value [count] amount of times. - /// Count is the amount of times to add the [padding] on each time, and not the maximum total width of the string unlike padLeft and padRight. - /// - /// Example "LunaSea" with count 2 and padding "1" would return "11LunaSea11". - String lunaPad([int count = 1, String padding = ' ']) { - return this - .padLeft((this.length + count), padding) - .padRight((this.length + (count * 2)), padding); - } - - /// Returns a string with all first letters of each word capitalized. - String toTitleCase() { - String _wordDelimiter = ' '; - List split = this.split(_wordDelimiter); - - for (var i = 0; i < split.length; i++) { - String s = split[i]; - if (s.length == 1) - s = s.toUpperCase(); - else - s = s.substring(0, 1).toUpperCase() + s.substring(1); - split[i] = s; - } - - return split.join(_wordDelimiter); - } - - Future copyToClipboard({ - bool showSnackBar = true, - }) async { - await Clipboard.setData(ClipboardData(text: this)); - if (showSnackBar) - showLunaSuccessSnackBar( - title: 'Copied', - message: 'Copied content to the clipboard', - ); - } -} - extension StringLinksExtension on String { Future _openLink(String url, {Map? headers}) async { try { @@ -74,10 +33,6 @@ extension StringLinksExtension on String { Future lunaOpenIMDB() async => await _openLink('https://www.imdb.com/title/$this'); - /// Attach this string as a video ID to YouTube and attempt to launch it as a URL. - Future lunaOpenYouTube() async => - await _openLink('https://www.youtube.com/watch?v=$this'); - /// Attach this string as a movie ID to TheMovieDB and attempt to launch it as a URL. Future lunaOpenTheMovieDBMovie() async => await _openLink('https://www.themoviedb.org/movie/$this'); diff --git a/lib/core/firebase.dart b/lib/core/firebase.dart deleted file mode 100644 index 2b0b0877..00000000 --- a/lib/core/firebase.dart +++ /dev/null @@ -1,6 +0,0 @@ -export 'firebase/auth.dart'; -export 'firebase/core.dart'; -export 'firebase/firestore.dart'; -export 'firebase/messaging.dart'; -export 'firebase/storage.dart'; -export 'firebase/types.dart'; diff --git a/lib/core/go_router/page_router.dart b/lib/core/go_router/page_router.dart index 205b227a..93d1c5ae 100644 --- a/lib/core/go_router/page_router.dart +++ b/lib/core/go_router/page_router.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; - -import '../../vendor.dart'; +import 'package:lunasea/vendor.dart'; abstract class LunaPageGoRouter { GoRoute get route; diff --git a/lib/core/models/logs/log_type.dart b/lib/core/models/logs/log_type.dart index fb683783..233bb929 100644 --- a/lib/core/models/logs/log_type.dart +++ b/lib/core/models/logs/log_type.dart @@ -1,8 +1,7 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; - -import '../../../system/environment.dart'; -import '../../../system/flavor.dart'; +import 'package:lunasea/system/environment.dart'; +import 'package:lunasea/system/flavor.dart'; part 'log_type.g.dart'; diff --git a/lib/core/models/types/links.dart b/lib/core/models/types/links.dart index 383b261f..2038e7a1 100644 --- a/lib/core/models/types/links.dart +++ b/lib/core/models/types/links.dart @@ -1,4 +1,5 @@ import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string_links.dart'; enum LunaLinks { BUILDS, @@ -42,5 +43,5 @@ extension LunaLinksExtension on LunaLinks { } } - Future launch() async => this.url.lunaOpenGenericLink(); + Future launch() async => this.url.openLink(); } diff --git a/lib/core/modules.dart b/lib/core/modules.dart index e791f034..0ee45452 100644 --- a/lib/core/modules.dart +++ b/lib/core/modules.dart @@ -14,12 +14,13 @@ import 'package:lunasea/modules/sabnzbd.dart'; import 'package:lunasea/modules/nzbget.dart'; import 'package:lunasea/modules/tautulli.dart'; -import '../modules/dashboard/core/database.dart'; -import '../modules/dashboard/core/state.dart' as dashboard_state; -import '../modules/dashboard/routes/dashboard/route.dart' as dashboard_home; -import '../modules/wake_on_lan/api/wake_on_lan.dart'; -import '../system/environment.dart'; -import '../system/flavor.dart'; +import 'package:lunasea/modules/dashboard/core/database.dart'; +import 'package:lunasea/modules/dashboard/core/state.dart' as dashboard_state; +import 'package:lunasea/modules/dashboard/routes/dashboard/route.dart' + as dashboard_home; +import 'package:lunasea/modules/wake_on_lan/api/wake_on_lan.dart'; +import 'package:lunasea/system/environment.dart'; +import 'package:lunasea/system/flavor.dart'; part 'modules.g.dart'; diff --git a/lib/core/router/module_router.dart b/lib/core/router/module_router.dart index 77f60a1b..c1951ce7 100644 --- a/lib/core/router/module_router.dart +++ b/lib/core/router/module_router.dart @@ -1,4 +1,4 @@ -import '../../vendor.dart'; +import 'package:lunasea/vendor.dart'; abstract class LunaModuleRouter { /// Given the [FluroRouter], define all routes and handlers required for the module. diff --git a/lib/core/router/router.dart b/lib/core/router/router.dart index b8a5ca5d..ca6b0952 100644 --- a/lib/core/router/router.dart +++ b/lib/core/router/router.dart @@ -14,7 +14,7 @@ import 'package:lunasea/modules/sabnzbd.dart'; import 'package:lunasea/modules/nzbget.dart'; import 'package:lunasea/modules/tautulli.dart'; -import '../../modules/dashboard/routes/routes.dart' as dashboard; +import 'package:lunasea/modules/dashboard/routes/routes.dart' as dashboard; class LunaRouter { static FluroRouter router = FluroRouter(); diff --git a/lib/core/state/state.dart b/lib/core/state/state.dart index 6d9b62e7..b607def6 100644 --- a/lib/core/state/state.dart +++ b/lib/core/state/state.dart @@ -1,17 +1,17 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import '../../modules/dashboard/core/state.dart' as dashboard; -import '../../modules/lidarr/core/state.dart'; -import '../../modules/radarr/core/state.dart'; -import '../../modules/search/core/state.dart'; -import '../../modules/settings/core/state.dart'; -import '../../modules/sonarr/core/state.dart'; -import '../../modules/overseerr/core/state.dart'; -import '../../modules/sabnzbd/core/state.dart'; -import '../../modules/nzbget/core/state.dart'; -import '../../modules/tautulli/core/state.dart'; -import '../modules.dart'; +import 'package:lunasea/modules/dashboard/core/state.dart' as dashboard; +import 'package:lunasea/modules/lidarr/core/state.dart'; +import 'package:lunasea/modules/radarr/core/state.dart'; +import 'package:lunasea/modules/search/core/state.dart'; +import 'package:lunasea/modules/settings/core/state.dart'; +import 'package:lunasea/modules/sonarr/core/state.dart'; +import 'package:lunasea/modules/overseerr/core/state.dart'; +import 'package:lunasea/modules/sabnzbd/core/state.dart'; +import 'package:lunasea/modules/nzbget/core/state.dart'; +import 'package:lunasea/modules/tautulli/core/state.dart'; +import 'package:lunasea/core/modules.dart'; class LunaState { LunaState._(); diff --git a/lib/core/system/in_app_purchases.dart b/lib/core/system/in_app_purchases.dart index cb922e83..2901e91f 100644 --- a/lib/core/system/in_app_purchases.dart +++ b/lib/core/system/in_app_purchases.dart @@ -1,8 +1,7 @@ import 'package:flutter/material.dart'; import 'package:in_app_purchase/in_app_purchase.dart'; import 'package:lunasea/core.dart'; - -import '../../system/platform.dart'; +import 'package:lunasea/system/platform.dart'; extension ProductDetailsExtension on ProductDetails { IconData get icon { diff --git a/lib/core/utilities.dart b/lib/core/utilities.dart index 97129ef5..8fdecd9f 100644 --- a/lib/core/utilities.dart +++ b/lib/core/utilities.dart @@ -1,7 +1 @@ export 'utilities/changelog.dart'; -export 'utilities/encryption.dart'; -export 'utilities/helpers.dart'; -export 'utilities/logger.dart'; -export 'utilities/parser.dart'; -export 'utilities/uuid.dart'; -export 'utilities/validator.dart'; diff --git a/lib/core/utilities/changelog.dart b/lib/core/utilities/changelog.dart index 1cd9713f..3cb99c02 100644 --- a/lib/core/utilities/changelog.dart +++ b/lib/core/utilities/changelog.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; - -import '../../system/environment.dart'; -import '../../system/flavor.dart'; +import 'package:lunasea/extensions/string.dart'; +import 'package:lunasea/system/environment.dart'; +import 'package:lunasea/system/flavor.dart'; class LunaChangelogSheet extends LunaBottomModalSheet { late _Changelog _changelog; @@ -97,7 +97,7 @@ class LunaChangelogSheet extends LunaBottomModalSheet { (index) { String _body = changes[index] .changes - .map((s) => '${LunaUI.TEXT_BULLET.lunaPad()}$s') + .map((s) => '${LunaUI.TEXT_BULLET.pad()}$s') .join('\n'); return LunaTableContent( title: changes[index].module, diff --git a/lib/core/utilities/encryption.dart b/lib/core/utilities/encryption.dart deleted file mode 100644 index 76ff70d9..00000000 --- a/lib/core/utilities/encryption.dart +++ /dev/null @@ -1,54 +0,0 @@ -import 'package:encrypt/encrypt.dart'; -import 'package:lunasea/core.dart'; - -class LunaEncryption { - static const int _IV_LENGTH = 16; - static const int _KEY_LENGTH = 32; - static const String _PAD_VALUE = '0'; - static const String ENCRYPTION_FAILURE = '<>'; - - /// Encrypt a given string using a given encryption key, and return the encrypted string. - /// - /// The key is duped, and either trimmed or padded (with _PAD_VALUE) to 32 characters. - String encrypt(String encryptionKey, String data) { - try { - String morphedKey = (encryptionKey + encryptionKey) - .padRight(_KEY_LENGTH, _PAD_VALUE) - .substring(0, _KEY_LENGTH); - Key key = Key.fromUtf8(morphedKey); - IV iv = IV.fromLength(_IV_LENGTH); - final _encrypter = Encrypter(AES(key)); - final _encrypted = _encrypter.encrypt(data, iv: iv).base64; - return _encrypted; - } catch (error, stack) { - LunaLogger().error( - 'Failed to encrypt "${data.substring(0, 10)}..."', - error, - stack, - ); - } - return ENCRYPTION_FAILURE; - } - - /// Decrypt a given string using a given encryption key, and return the decrypted string. - /// - /// The key is duped, and either trimmed or padded (with _PAD_VALUE) to 32 characters. - String decrypt(String decryptionKey, String data) { - try { - String morphedKey = (decryptionKey + decryptionKey) - .padRight(_KEY_LENGTH, _PAD_VALUE) - .substring(0, _KEY_LENGTH); - Key key = Key.fromUtf8(morphedKey); - IV iv = IV.fromLength(_IV_LENGTH); - final _encrypter = Encrypter(AES(key)); - return _encrypter.decrypt64(data, iv: iv); - } catch (error, stack) { - LunaLogger().error( - 'Failed to decrypt "${data.substring(0, 10)}..."', - error, - stack, - ); - } - return ENCRYPTION_FAILURE; - } -} diff --git a/lib/core/utilities/helpers.dart b/lib/core/utilities/helpers.dart deleted file mode 100644 index 16d97f9f..00000000 --- a/lib/core/utilities/helpers.dart +++ /dev/null @@ -1,10 +0,0 @@ -import 'package:lunasea/core.dart'; - -String lunaSafeString( - String? string, { - bool isEmptySafe = false, -}) { - if (string == null) return LunaUI.TEXT_EMDASH; - if (!isEmptySafe && string.isEmpty) return LunaUI.TEXT_EMDASH; - return string; -} diff --git a/lib/core/utilities/uuid.dart b/lib/core/utilities/uuid.dart deleted file mode 100644 index 95824e7a..00000000 --- a/lib/core/utilities/uuid.dart +++ /dev/null @@ -1,11 +0,0 @@ -import 'package:uuid/uuid.dart'; - -class LunaUUID { - final Uuid _generator = const Uuid(); - - /// Generate a new v4 UUID with the base configuration. - String get uuid => _generator.v4(); - - /// Return the [Uuid] instance. - Uuid get generator => _generator; -} diff --git a/lib/core/utilities/validator.dart b/lib/core/utilities/validator.dart deleted file mode 100644 index 7f34fe04..00000000 --- a/lib/core/utilities/validator.dart +++ /dev/null @@ -1,7 +0,0 @@ -class LunaValidator { - static const _EMAIL_REGEX = - r"(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)"; - - /// Validate that a [String] contains an email. - bool email(String email) => RegExp(_EMAIL_REGEX).hasMatch(email); -} diff --git a/lib/extensions/string.dart b/lib/extensions/string.dart new file mode 100644 index 00000000..06434c20 --- /dev/null +++ b/lib/extensions/string.dart @@ -0,0 +1,59 @@ +import 'package:flutter/services.dart'; +import 'package:lunasea/widgets/ui.dart'; + +extension StringNullableExtension on String? { + /// Return a "UI-Safe" string by replacing null or empty (if considered unsafe) strings with a dash. + String uiSafe({ + bool isEmptySafe = false, + }) { + if (this == null) return LunaUI.TEXT_EMDASH; + if (!isEmptySafe && this!.isEmpty) return LunaUI.TEXT_EMDASH; + return this!; + } +} + +extension StringExtension on String { + /// Returns the string converted to title case. + /// + /// Example: "hello world" -> "Hello World" + String toTitleCase({ + String delimiter = ' ', + }) { + final split = this.split(delimiter); + for (var i = 0; i < split.length; i++) { + String word = split[i]; + if (word.length == 1) { + word = word.toUpperCase(); + } else { + word = word[0].toUpperCase() + word.substring(1); + } + split[i] = word; + } + return split.join(delimiter); + } + + /// Set the current clipboard content to this string. + Future copyToClipboard({ + bool showSnackBar = true, + }) async { + await Clipboard.setData(ClipboardData(text: this)); + if (showSnackBar) { + showLunaSuccessSnackBar( + title: 'lunasea.Copied'.tr(), + message: 'lunasea.CopiedContentToTheClipboard'.tr(), + ); + } + } + + /// Pad a string on both sides with [padding], [count] amount of times. + /// + /// Example "Hello World" -> " Hello World " + String pad({ + int count = 1, + String padding = ' ', + }) { + return this + .padLeft((this.length + count), padding) + .padRight((this.length + (count * 2)), padding); + } +} diff --git a/lib/extensions/string_links.dart b/lib/extensions/string_links.dart new file mode 100644 index 00000000..ea7b55e9 --- /dev/null +++ b/lib/extensions/string_links.dart @@ -0,0 +1,28 @@ +import 'package:lunasea/system/logger.dart'; +import 'package:url_launcher/url_launcher.dart'; + +extension StringAsLinksExtension on String { + Future _launchUniversal(Uri uri, Map? headers) async { + print(await canLaunchUrl(uri)); + return await launchUrl(uri, mode: LaunchMode.externalNonBrowserApplication); + } + + Future openLink({ + Map? headers, + }) async { + try { + Uri uri = Uri.parse(this); + if (await _launchUniversal(uri, headers)) return; + } catch (error, stack) { + LunaLogger().error( + 'Unable to open URL', + error, + stack, + ); + } + } + + Future openYouTube() async { + await 'https://www.youtube.com/watch?v=$this'.openLink(); + } +} diff --git a/lib/core/firebase/auth.dart b/lib/firebase/auth.dart similarity index 98% rename from lib/core/firebase/auth.dart rename to lib/firebase/auth.dart index 6141d7fa..b5651195 100644 --- a/lib/core/firebase/auth.dart +++ b/lib/firebase/auth.dart @@ -1,5 +1,7 @@ import 'package:firebase_auth/firebase_auth.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/firebase/firestore.dart'; +import 'package:lunasea/firebase/types.dart'; class LunaFirebaseAuth { /// Return an instance of [FirebaseAuth]. diff --git a/lib/core/firebase/core.dart b/lib/firebase/core.dart similarity index 87% rename from lib/core/firebase/core.dart rename to lib/firebase/core.dart index eaaf964f..8030adf3 100644 --- a/lib/core/firebase/core.dart +++ b/lib/firebase/core.dart @@ -1,6 +1,8 @@ import 'package:firebase_core/firebase_core.dart'; -import '../../firebase_options.dart'; -import '../../system/platform.dart'; +import 'package:lunasea/system/platform.dart'; + +// ignore: always_use_package_imports +import 'options.dart'; class LunaFirebase { static bool get isSupported { diff --git a/lib/core/firebase/firestore.dart b/lib/firebase/firestore.dart similarity index 95% rename from lib/core/firebase/firestore.dart rename to lib/firebase/firestore.dart index 746c82e7..eb30c6fa 100644 --- a/lib/core/firebase/firestore.dart +++ b/lib/firebase/firestore.dart @@ -1,5 +1,8 @@ import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/firebase/auth.dart'; +import 'package:lunasea/firebase/messaging.dart'; +import 'package:lunasea/firebase/types.dart'; class LunaFirebaseFirestore { /// Returns an instance of [FirebaseFirestore]. diff --git a/lib/core/firebase/messaging.dart b/lib/firebase/messaging.dart similarity index 98% rename from lib/core/firebase/messaging.dart rename to lib/firebase/messaging.dart index 4e246d08..798cbb7d 100644 --- a/lib/core/firebase/messaging.dart +++ b/lib/firebase/messaging.dart @@ -1,7 +1,7 @@ import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:lunasea/core.dart'; - -import '../../system/platform.dart'; +import 'package:lunasea/firebase/core.dart'; +import 'package:lunasea/system/platform.dart'; class LunaFirebaseMessaging { static const _VAPID_KEY = diff --git a/lib/firebase_options.dart b/lib/firebase/options.dart similarity index 100% rename from lib/firebase_options.dart rename to lib/firebase/options.dart diff --git a/lib/core/firebase/storage.dart b/lib/firebase/storage.dart similarity index 98% rename from lib/core/firebase/storage.dart rename to lib/firebase/storage.dart index b1fba296..48a337ae 100644 --- a/lib/core/firebase/storage.dart +++ b/lib/firebase/storage.dart @@ -1,5 +1,6 @@ import 'package:firebase_storage/firebase_storage.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/firebase/auth.dart'; class LunaFirebaseStorage { static const String _BACKUP_BUCKET = 'backup.lunasea.app'; diff --git a/lib/core/firebase/types.dart b/lib/firebase/types.dart similarity index 100% rename from lib/core/firebase/types.dart rename to lib/firebase/types.dart diff --git a/lib/core/firebase/types/backup_document.dart b/lib/firebase/types/backup_document.dart similarity index 100% rename from lib/core/firebase/types/backup_document.dart rename to lib/firebase/types/backup_document.dart diff --git a/lib/core/firebase/types/response.dart b/lib/firebase/types/response.dart similarity index 100% rename from lib/core/firebase/types/response.dart rename to lib/firebase/types/response.dart diff --git a/lib/main.dart b/lib/main.dart index c7976bef..ced5a663 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -4,14 +4,17 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/scheduler.dart'; import 'package:lunasea/core.dart'; - -import 'core/cache/image_cache/image_cache.dart'; -import 'system/localization.dart'; -import 'system/network/network.dart'; -import 'system/quick_actions/quick_actions.dart'; -import 'system/window_manager/window_manager.dart'; -import 'system/platform.dart'; -import 'modules/dashboard/routes/dashboard/route.dart' show HomeRouter; +import 'package:lunasea/core/cache/image_cache/image_cache.dart'; +import 'package:lunasea/firebase/core.dart'; +import 'package:lunasea/firebase/firestore.dart'; +import 'package:lunasea/firebase/messaging.dart'; +import 'package:lunasea/modules/dashboard/routes/dashboard/route.dart' + show HomeRouter; +import 'package:lunasea/system/localization.dart'; +import 'package:lunasea/system/network/network.dart'; +import 'package:lunasea/system/quick_actions/quick_actions.dart'; +import 'package:lunasea/system/window_manager/window_manager.dart'; +import 'package:lunasea/system/platform.dart'; /// LunaSea Entry Point: Initialize & Run Application /// @@ -106,8 +109,8 @@ class _State extends State { } Future _initNotifications() async { - LunaFirebaseMessaging _messaging = LunaFirebaseMessaging(); - LunaFirebaseFirestore _firestore = LunaFirebaseFirestore(); + final _messaging = LunaFirebaseMessaging(); + final _firestore = LunaFirebaseFirestore(); await _messaging.requestNotificationPermissions(); _firestore.addDeviceToken(); diff --git a/lib/modules/dashboard/core/adapters/calendar_starting_day.dart b/lib/modules/dashboard/core/adapters/calendar_starting_day.dart index e919a22f..312cba39 100644 --- a/lib/modules/dashboard/core/adapters/calendar_starting_day.dart +++ b/lib/modules/dashboard/core/adapters/calendar_starting_day.dart @@ -1,4 +1,4 @@ -import '../../../../vendor.dart'; +import 'package:lunasea/vendor.dart'; part 'calendar_starting_day.g.dart'; diff --git a/lib/modules/dashboard/core/adapters/calendar_starting_size.dart b/lib/modules/dashboard/core/adapters/calendar_starting_size.dart index 7032d319..7391e41f 100644 --- a/lib/modules/dashboard/core/adapters/calendar_starting_size.dart +++ b/lib/modules/dashboard/core/adapters/calendar_starting_size.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import '../../../../vendor.dart'; +import 'package:lunasea/vendor.dart'; part 'calendar_starting_size.g.dart'; diff --git a/lib/modules/dashboard/core/adapters/calendar_starting_type.dart b/lib/modules/dashboard/core/adapters/calendar_starting_type.dart index 967249d2..4e263ff5 100644 --- a/lib/modules/dashboard/core/adapters/calendar_starting_type.dart +++ b/lib/modules/dashboard/core/adapters/calendar_starting_type.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import '../../../../vendor.dart'; +import 'package:lunasea/vendor.dart'; part 'calendar_starting_type.g.dart'; diff --git a/lib/modules/dashboard/core/api/api.dart b/lib/modules/dashboard/core/api/api.dart index 5969ad8c..844ee320 100644 --- a/lib/modules/dashboard/core/api/api.dart +++ b/lib/modules/dashboard/core/api/api.dart @@ -1,12 +1,12 @@ -import '../../../../core/models/configuration/profile.dart'; -import '../../../../core/extensions.dart'; -import '../../../../ui/ui.dart'; -import '../../../../vendor.dart'; -import '../database.dart'; -import 'data/abstract.dart'; -import 'data/lidarr.dart'; -import 'data/radarr.dart'; -import 'data/sonarr.dart'; +import 'package:lunasea/core/models/configuration/profile.dart'; +import 'package:lunasea/core/extensions.dart'; +import 'package:lunasea/modules/dashboard/core/database.dart'; +import 'package:lunasea/modules/dashboard/core/api/data/abstract.dart'; +import 'package:lunasea/modules/dashboard/core/api/data/lidarr.dart'; +import 'package:lunasea/modules/dashboard/core/api/data/radarr.dart'; +import 'package:lunasea/modules/dashboard/core/api/data/sonarr.dart'; +import 'package:lunasea/widgets/ui.dart'; +import 'package:lunasea/vendor.dart'; class API { final Map? lidarr; diff --git a/lib/modules/dashboard/core/api/data/lidarr.dart b/lib/modules/dashboard/core/api/data/lidarr.dart index 1733f86c..c01f5f39 100644 --- a/lib/modules/dashboard/core/api/data/lidarr.dart +++ b/lib/modules/dashboard/core/api/data/lidarr.dart @@ -1,11 +1,10 @@ import 'package:flutter/material.dart'; - -import '../../../../../core/system/profile.dart'; -import '../../../../../ui/ui.dart'; -import '../../../../lidarr/core/api/api.dart'; -import '../../../../lidarr/routes/details_artist.dart'; -import '../../../../lidarr/routes/search_results.dart'; -import './abstract.dart'; +import 'package:lunasea/core/system/profile.dart'; +import 'package:lunasea/widgets/ui.dart'; +import 'package:lunasea/modules/lidarr/core/api/api.dart'; +import 'package:lunasea/modules/lidarr/routes/details_artist.dart'; +import 'package:lunasea/modules/lidarr/routes/search_results.dart'; +import 'package:lunasea/modules/dashboard/core/api/data/abstract.dart'; class CalendarLidarrData extends CalendarData { final Map api = LunaProfile.current.getLidarr(); diff --git a/lib/modules/dashboard/core/api/data/radarr.dart b/lib/modules/dashboard/core/api/data/radarr.dart index 8d3a1cac..a11e892c 100644 --- a/lib/modules/dashboard/core/api/data/radarr.dart +++ b/lib/modules/dashboard/core/api/data/radarr.dart @@ -1,15 +1,16 @@ import 'package:flutter/material.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:provider/provider.dart'; -import '../../../../../core/system/profile.dart'; -import '../../../../../core/extensions.dart'; -import '../../../../../ui/ui.dart'; -import '../../../../../vendor.dart'; -import '../../../../radarr/core/api_helper.dart'; -import '../../../../radarr/core/state.dart'; -import '../../../../radarr/routes/movie_details/route.dart'; -import '../../../../radarr/routes/releases/route.dart'; -import './abstract.dart'; +import 'package:lunasea/core/system/profile.dart'; +import 'package:lunasea/core/extensions.dart'; +import 'package:lunasea/vendor.dart'; +import 'package:lunasea/widgets/ui.dart'; +import 'package:lunasea/modules/radarr/core/api_helper.dart'; +import 'package:lunasea/modules/radarr/core/state.dart'; +import 'package:lunasea/modules/radarr/routes/movie_details/route.dart'; +import 'package:lunasea/modules/radarr/routes/releases/route.dart'; +import 'package:lunasea/modules/dashboard/core/api/data/abstract.dart'; class CalendarRadarrData extends CalendarData { final Map api = LunaProfile.current.getRadarr(); @@ -35,7 +36,7 @@ class CalendarRadarrData extends CalendarData { TextSpan( children: [ TextSpan(text: year.toString()), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: runtime.lunaRuntime()), ], ), diff --git a/lib/modules/dashboard/core/api/data/sonarr.dart b/lib/modules/dashboard/core/api/data/sonarr.dart index 4e110506..06f229e4 100644 --- a/lib/modules/dashboard/core/api/data/sonarr.dart +++ b/lib/modules/dashboard/core/api/data/sonarr.dart @@ -1,16 +1,16 @@ import 'package:flutter/material.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:provider/provider.dart'; -import '../../../../../core/database/luna_database.dart'; -import '../../../../../core/system/profile.dart'; -import '../../../../../core/extensions.dart'; -import '../../../../../ui/ui.dart'; -import '../../../../../core/utilities/logger.dart'; -import '../../../../../vendor.dart'; -import '../../../../sonarr/core/state.dart'; -import '../../../../sonarr/routes/releases/route.dart'; -import '../../../../sonarr/routes/series_details/route.dart'; -import './abstract.dart'; +import 'package:lunasea/core/database/luna_database.dart'; +import 'package:lunasea/core/system/profile.dart'; +import 'package:lunasea/system/logger.dart'; +import 'package:lunasea/widgets/ui.dart'; +import 'package:lunasea/vendor.dart'; +import 'package:lunasea/modules/sonarr/core/state.dart'; +import 'package:lunasea/modules/sonarr/routes/releases/route.dart'; +import 'package:lunasea/modules/sonarr/routes/series_details/route.dart'; +import 'package:lunasea/modules/dashboard/core/api/data/abstract.dart'; class CalendarSonarrData extends CalendarData { final Map api = LunaProfile.current.getSonarr(); @@ -41,7 +41,7 @@ class CalendarSonarrData extends CalendarData { children: [ TextSpan( text: seasonNumber == 0 ? 'Specials' : 'Season $seasonNumber'), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: 'Episode $episodeNumber'), ], ), diff --git a/lib/modules/dashboard/core/database.dart b/lib/modules/dashboard/core/database.dart index d917a7af..be6605ed 100644 --- a/lib/modules/dashboard/core/database.dart +++ b/lib/modules/dashboard/core/database.dart @@ -1,12 +1,12 @@ import 'package:flutter/material.dart'; -import '../../../core/database/database.dart'; -import '../../../core/database/module_database.dart'; -import '../../../core/utilities/logger.dart'; -import '../../../vendor.dart'; -import 'adapters/calendar_starting_day.dart'; -import 'adapters/calendar_starting_size.dart'; -import 'adapters/calendar_starting_type.dart'; +import 'package:lunasea/core/database/database.dart'; +import 'package:lunasea/core/database/module_database.dart'; +import 'package:lunasea/system/logger.dart'; +import 'package:lunasea/vendor.dart'; +import 'package:lunasea/modules/dashboard/core/adapters/calendar_starting_day.dart'; +import 'package:lunasea/modules/dashboard/core/adapters/calendar_starting_size.dart'; +import 'package:lunasea/modules/dashboard/core/adapters/calendar_starting_type.dart'; enum DashboardDatabaseValue { NAVIGATION_INDEX, diff --git a/lib/modules/dashboard/core/dialogs.dart b/lib/modules/dashboard/core/dialogs.dart index d4386ba4..b2ec526e 100644 --- a/lib/modules/dashboard/core/dialogs.dart +++ b/lib/modules/dashboard/core/dialogs.dart @@ -1,9 +1,9 @@ import 'package:flutter/material.dart'; -import '../../../ui/ui.dart'; -import '../../../vendor.dart'; -import '../routes/dashboard/widgets/navigation_bar.dart'; -import 'database.dart'; +import 'package:lunasea/widgets/ui.dart'; +import 'package:lunasea/vendor.dart'; +import 'package:lunasea/modules/dashboard/routes/dashboard/widgets/navigation_bar.dart'; +import 'package:lunasea/modules/dashboard/core/database.dart'; class DashboardDialogs { Future> defaultPage(BuildContext context) async { diff --git a/lib/modules/dashboard/core/state.dart b/lib/modules/dashboard/core/state.dart index a36b93ab..d8fbeb46 100644 --- a/lib/modules/dashboard/core/state.dart +++ b/lib/modules/dashboard/core/state.dart @@ -1,10 +1,10 @@ -import '../../../core/models/configuration/profile.dart'; -import '../../../core/state/module_state.dart'; -import '../../../core/system/profile.dart'; -import 'adapters/calendar_starting_type.dart'; -import 'api/api.dart'; -import 'api/data/abstract.dart'; -import 'database.dart'; +import 'package:lunasea/core/models/configuration/profile.dart'; +import 'package:lunasea/core/state/module_state.dart'; +import 'package:lunasea/core/system/profile.dart'; +import 'package:lunasea/modules/dashboard/core/adapters/calendar_starting_type.dart'; +import 'package:lunasea/modules/dashboard/core/api/api.dart'; +import 'package:lunasea/modules/dashboard/core/api/data/abstract.dart'; +import 'package:lunasea/modules/dashboard/core/database.dart'; class ModuleState extends LunaModuleState { ModuleState() { diff --git a/lib/modules/dashboard/routes/dashboard/pages/calendar.dart b/lib/modules/dashboard/routes/dashboard/pages/calendar.dart index eb27a5e1..3ef6ef0d 100644 --- a/lib/modules/dashboard/routes/dashboard/pages/calendar.dart +++ b/lib/modules/dashboard/routes/dashboard/pages/calendar.dart @@ -1,15 +1,15 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import '../../../../../core/extensions.dart'; -import '../../../../../ui/ui.dart'; -import '../../../../../core/utilities/logger.dart'; -import '../../../../../vendor.dart'; -import '../../../core/adapters/calendar_starting_type.dart'; -import '../../../core/api/data/abstract.dart'; -import '../../../core/state.dart'; -import '../widgets/calendar_view.dart'; -import '../widgets/schedule_view.dart'; +import 'package:lunasea/core/extensions.dart'; +import 'package:lunasea/widgets/ui.dart'; +import 'package:lunasea/system/logger.dart'; +import 'package:lunasea/vendor.dart'; +import 'package:lunasea/modules/dashboard/core/adapters/calendar_starting_type.dart'; +import 'package:lunasea/modules/dashboard/core/api/data/abstract.dart'; +import 'package:lunasea/modules/dashboard/core/state.dart'; +import 'package:lunasea/modules/dashboard/routes/dashboard/widgets/calendar_view.dart'; +import 'package:lunasea/modules/dashboard/routes/dashboard/widgets/schedule_view.dart'; class CalendarPage extends StatefulWidget { const CalendarPage({Key? key}) : super(key: key); diff --git a/lib/modules/dashboard/routes/dashboard/pages/modules.dart b/lib/modules/dashboard/routes/dashboard/pages/modules.dart index b2a5a5c7..2f572f17 100644 --- a/lib/modules/dashboard/routes/dashboard/pages/modules.dart +++ b/lib/modules/dashboard/routes/dashboard/pages/modules.dart @@ -1,11 +1,11 @@ import 'package:flutter/material.dart'; -import '../../../../../../core/database/luna_database.dart'; -import '../../../../../../core/modules.dart'; -import '../../../../../../core/system/profile.dart'; -import '../../../../../../ui/ui.dart'; -import '../../../../wake_on_lan/api/wake_on_lan.dart'; -import '../widgets/navigation_bar.dart'; +import 'package:lunasea/core/database/luna_database.dart'; +import 'package:lunasea/core/modules.dart'; +import 'package:lunasea/core/system/profile.dart'; +import 'package:lunasea/widgets/ui.dart'; +import 'package:lunasea/modules/wake_on_lan/api/wake_on_lan.dart'; +import 'package:lunasea/modules/dashboard/routes/dashboard/widgets/navigation_bar.dart'; class ModulesPage extends StatefulWidget { const ModulesPage({ diff --git a/lib/modules/dashboard/routes/dashboard/route.dart b/lib/modules/dashboard/routes/dashboard/route.dart index 995e1375..66f354d2 100644 --- a/lib/modules/dashboard/routes/dashboard/route.dart +++ b/lib/modules/dashboard/routes/dashboard/route.dart @@ -1,15 +1,15 @@ import 'package:flutter/material.dart'; -import '../../../../core/database/luna_database.dart'; -import '../../../../core/modules.dart'; -import '../../../../ui/ui.dart'; -import '../../../../vendor.dart'; -import '../../core/database.dart'; -import '../routes.dart'; -import 'pages/calendar.dart'; -import 'pages/modules.dart'; -import 'widgets/switch_view_action.dart'; -import 'widgets/navigation_bar.dart'; +import 'package:lunasea/core/database/luna_database.dart'; +import 'package:lunasea/core/modules.dart'; +import 'package:lunasea/widgets/ui.dart'; +import 'package:lunasea/vendor.dart'; +import 'package:lunasea/modules/dashboard/core/database.dart'; +import 'package:lunasea/modules/dashboard/routes/routes.dart'; +import 'package:lunasea/modules/dashboard/routes/dashboard/pages/calendar.dart'; +import 'package:lunasea/modules/dashboard/routes/dashboard/pages/modules.dart'; +import 'package:lunasea/modules/dashboard/routes/dashboard/widgets/switch_view_action.dart'; +import 'package:lunasea/modules/dashboard/routes/dashboard/widgets/navigation_bar.dart'; class HomeRouter extends DashboardPageRouter { HomeRouter() : super('/dashboard'); diff --git a/lib/modules/dashboard/routes/dashboard/widgets/calendar_view.dart b/lib/modules/dashboard/routes/dashboard/widgets/calendar_view.dart index aafb4521..2004c948 100644 --- a/lib/modules/dashboard/routes/dashboard/widgets/calendar_view.dart +++ b/lib/modules/dashboard/routes/dashboard/widgets/calendar_view.dart @@ -2,20 +2,20 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:provider/provider.dart'; -import '../../../../../core/database/database.dart'; -import '../../../../../core/extensions.dart'; -import '../../../../../ui/ui.dart'; -import '../../../../../vendor.dart'; -import '../../../core/adapters/calendar_starting_day.dart'; -import '../../../core/adapters/calendar_starting_size.dart'; -import '../../../core/api/data/abstract.dart'; -import '../../../core/api/data/lidarr.dart'; -import '../../../core/api/data/radarr.dart'; -import '../../../core/api/data/sonarr.dart'; -import '../../../core/database.dart'; -import '../../../core/state.dart'; -import 'content_block.dart'; -import 'navigation_bar.dart'; +import 'package:lunasea/core/database/database.dart'; +import 'package:lunasea/core/extensions.dart'; +import 'package:lunasea/widgets/ui.dart'; +import 'package:lunasea/vendor.dart'; +import 'package:lunasea/modules/dashboard/core/adapters/calendar_starting_day.dart'; +import 'package:lunasea/modules/dashboard/core/adapters/calendar_starting_size.dart'; +import 'package:lunasea/modules/dashboard/core/api/data/abstract.dart'; +import 'package:lunasea/modules/dashboard/core/api/data/lidarr.dart'; +import 'package:lunasea/modules/dashboard/core/api/data/radarr.dart'; +import 'package:lunasea/modules/dashboard/core/api/data/sonarr.dart'; +import 'package:lunasea/modules/dashboard/core/database.dart'; +import 'package:lunasea/modules/dashboard/core/state.dart'; +import 'package:lunasea/modules/dashboard/routes/dashboard/widgets/content_block.dart'; +import 'package:lunasea/modules/dashboard/routes/dashboard/widgets/navigation_bar.dart'; class CalendarView extends StatefulWidget { final Map> events; diff --git a/lib/modules/dashboard/routes/dashboard/widgets/content_block.dart b/lib/modules/dashboard/routes/dashboard/widgets/content_block.dart index a5708fa4..02353296 100644 --- a/lib/modules/dashboard/routes/dashboard/widgets/content_block.dart +++ b/lib/modules/dashboard/routes/dashboard/widgets/content_block.dart @@ -1,11 +1,11 @@ import 'package:flutter/material.dart'; -import '../../../../../core/system/profile.dart'; -import '../../../../../ui/ui.dart'; -import '../../../core/api/data/abstract.dart'; -import '../../../core/api/data/lidarr.dart'; -import '../../../core/api/data/radarr.dart'; -import '../../../core/api/data/sonarr.dart'; +import 'package:lunasea/core/system/profile.dart'; +import 'package:lunasea/widgets/ui.dart'; +import 'package:lunasea/modules/dashboard/core/api/data/abstract.dart'; +import 'package:lunasea/modules/dashboard/core/api/data/lidarr.dart'; +import 'package:lunasea/modules/dashboard/core/api/data/radarr.dart'; +import 'package:lunasea/modules/dashboard/core/api/data/sonarr.dart'; class ContentBlock extends StatelessWidget { final CalendarData data; diff --git a/lib/modules/dashboard/routes/dashboard/widgets/schedule_view.dart b/lib/modules/dashboard/routes/dashboard/widgets/schedule_view.dart index 0cd9f87a..cb416f34 100644 --- a/lib/modules/dashboard/routes/dashboard/widgets/schedule_view.dart +++ b/lib/modules/dashboard/routes/dashboard/widgets/schedule_view.dart @@ -1,13 +1,13 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import '../../../../../core/extensions.dart'; -import '../../../../../ui/ui.dart'; -import '../../../core/api/data/abstract.dart'; -import '../../../core/database.dart'; -import '../../../core/state.dart'; -import 'content_block.dart'; -import 'navigation_bar.dart'; +import 'package:lunasea/core/extensions.dart'; +import 'package:lunasea/widgets/ui.dart'; +import 'package:lunasea/modules/dashboard/core/api/data/abstract.dart'; +import 'package:lunasea/modules/dashboard/core/database.dart'; +import 'package:lunasea/modules/dashboard/core/state.dart'; +import 'package:lunasea/modules/dashboard/routes/dashboard/widgets/content_block.dart'; +import 'package:lunasea/modules/dashboard/routes/dashboard/widgets/navigation_bar.dart'; class ScheduleView extends StatefulWidget { final Map> events; diff --git a/lib/modules/dashboard/routes/dashboard/widgets/switch_view_action.dart b/lib/modules/dashboard/routes/dashboard/widgets/switch_view_action.dart index 9b09cc9a..d2fa6067 100644 --- a/lib/modules/dashboard/routes/dashboard/widgets/switch_view_action.dart +++ b/lib/modules/dashboard/routes/dashboard/widgets/switch_view_action.dart @@ -1,10 +1,10 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import '../../../../../ui/ui.dart'; -import '../../../../../vendor.dart'; -import '../../../core/adapters/calendar_starting_type.dart'; -import '../../../core/state.dart'; +import 'package:lunasea/widgets/ui.dart'; +import 'package:lunasea/vendor.dart'; +import 'package:lunasea/modules/dashboard/core/adapters/calendar_starting_type.dart'; +import 'package:lunasea/modules/dashboard/core/state.dart'; class SwitchViewAction extends StatefulWidget { final PageController? pageController; diff --git a/lib/modules/dashboard/routes/routes.dart b/lib/modules/dashboard/routes/routes.dart index 5e3a3d50..2a6ddddf 100644 --- a/lib/modules/dashboard/routes/routes.dart +++ b/lib/modules/dashboard/routes/routes.dart @@ -1,10 +1,10 @@ import 'package:flutter/material.dart'; -import '../../../core/router/module_router.dart'; -import '../../../core/router/page_router.dart'; -import '../../../core/router/router.dart'; -import '../../../vendor.dart'; -import 'dashboard/route.dart'; +import 'package:lunasea/core/router/module_router.dart'; +import 'package:lunasea/core/router/page_router.dart'; +import 'package:lunasea/core/router/router.dart'; +import 'package:lunasea/vendor.dart'; +import 'package:lunasea/modules/dashboard/routes/dashboard/route.dart'; enum Routes { HOME, diff --git a/lib/modules/lidarr/widgets/catalogue_tile.dart b/lib/modules/lidarr/widgets/catalogue_tile.dart index d3699b04..7ec8f6a1 100644 --- a/lib/modules/lidarr/widgets/catalogue_tile.dart +++ b/lib/modules/lidarr/widgets/catalogue_tile.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/lidarr.dart'; class LidarrCatalogueTile extends StatefulWidget { @@ -32,7 +33,7 @@ class _State extends State { TextSpan( children: [ TextSpan(text: widget.data.albums), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: widget.data.tracks), ], ), diff --git a/lib/modules/lidarr/widgets/search_result_tile.dart b/lib/modules/lidarr/widgets/search_result_tile.dart index 5c30b3d0..8ea64a2e 100644 --- a/lib/modules/lidarr/widgets/search_result_tile.dart +++ b/lib/modules/lidarr/widgets/search_result_tile.dart @@ -1,8 +1,9 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/lidarr.dart'; - -import '../../dashboard/routes/dashboard/route.dart' as dashboard_home; +import 'package:lunasea/modules/dashboard/routes/dashboard/route.dart' + as dashboard_home; class LidarrReleasesTile extends StatefulWidget { final LidarrReleaseData release; @@ -51,9 +52,9 @@ class _State extends State { fontWeight: LunaUI.FONT_WEIGHT_BOLD, ), ), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: widget.release.indexer), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: widget.release.ageHours.asTimeAgo), ]); } @@ -62,7 +63,7 @@ class _State extends State { return TextSpan( children: [ TextSpan(text: widget.release.quality), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: widget.release.size.lunaBytesToString()), ], ); diff --git a/lib/modules/nzbget/core/api/data/queue.dart b/lib/modules/nzbget/core/api/data/queue.dart index 11eee2ea..e36998ad 100644 --- a/lib/modules/nzbget/core/api/data/queue.dart +++ b/lib/modules/nzbget/core/api/data/queue.dart @@ -1,4 +1,5 @@ import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; class NZBGetQueueData { int id; @@ -70,7 +71,7 @@ class NZBGetQueueData { String get subtitle { String size = '$downloaded/$sizeTotal MB'; - String paddedBullet = LunaUI.TEXT_BULLET.lunaPad(); + String paddedBullet = LunaUI.TEXT_BULLET.pad(); return '$statusString$paddedBullet$size$paddedBullet$percentageDone%$paddedBullet$formattedCategory'; } } diff --git a/lib/modules/nzbget/routes/nzbget.dart b/lib/modules/nzbget/routes/nzbget.dart index 75c99bbb..2ba99dc3 100644 --- a/lib/modules/nzbget/routes/nzbget.dart +++ b/lib/modules/nzbget/routes/nzbget.dart @@ -2,8 +2,8 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; import 'package:lunasea/modules/nzbget.dart'; -import '../../../system/filesystem/file.dart'; -import '../../../system/filesystem/filesystem.dart'; +import 'package:lunasea/system/filesystem/file.dart'; +import 'package:lunasea/system/filesystem/filesystem.dart'; class NZBGet extends StatefulWidget { static const ROUTE_NAME = '/nzbget'; diff --git a/lib/modules/nzbget/widgets/app_bar_stats.dart b/lib/modules/nzbget/widgets/app_bar_stats.dart index 559e33d2..34f4d6bd 100644 --- a/lib/modules/nzbget/widgets/app_bar_stats.dart +++ b/lib/modules/nzbget/widgets/app_bar_stats.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/nzbget.dart'; class NZBGetAppBarStats extends StatelessWidget { @@ -38,7 +39,7 @@ class NZBGetAppBarStats extends StatelessWidget { ), const TextSpan(text: '\n'), TextSpan(text: data.item3 == '0:00:00' ? '―' : data.item3), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: data.item4 == '0.0 B' ? '―' : data.item4) ], ), diff --git a/lib/modules/nzbget/widgets/history_tile.dart b/lib/modules/nzbget/widgets/history_tile.dart index e738dedf..f30df9b5 100644 --- a/lib/modules/nzbget/widgets/history_tile.dart +++ b/lib/modules/nzbget/widgets/history_tile.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/nzbget.dart'; class NZBGetHistoryTile extends StatefulWidget { @@ -36,9 +37,9 @@ class _State extends State { return TextSpan( children: [ TextSpan(text: widget.data.completeTime), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: widget.data.sizeReadable), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan( text: (widget.data.category ?? '').isEmpty ? 'No Category' diff --git a/lib/modules/overseerr/api/models/issues/issue.dart b/lib/modules/overseerr/api/models/issues/issue.dart index 63baac70..d4b81441 100644 --- a/lib/modules/overseerr/api/models/issues/issue.dart +++ b/lib/modules/overseerr/api/models/issues/issue.dart @@ -1,5 +1,6 @@ import 'package:lunasea/core.dart'; import 'package:lunasea/modules/overseerr.dart'; +import 'package:lunasea/utils/parser.dart'; part 'issue.g.dart'; diff --git a/lib/modules/overseerr/api/models/issues/issue_comment.dart b/lib/modules/overseerr/api/models/issues/issue_comment.dart index f8f16807..32a355a0 100644 --- a/lib/modules/overseerr/api/models/issues/issue_comment.dart +++ b/lib/modules/overseerr/api/models/issues/issue_comment.dart @@ -1,5 +1,6 @@ import 'package:lunasea/core.dart'; import 'package:lunasea/modules/overseerr.dart'; +import 'package:lunasea/utils/parser.dart'; part 'issue_comment.g.dart'; diff --git a/lib/modules/overseerr/api/models/media/media.dart b/lib/modules/overseerr/api/models/media/media.dart index a7c7892e..9ff9b9a9 100644 --- a/lib/modules/overseerr/api/models/media/media.dart +++ b/lib/modules/overseerr/api/models/media/media.dart @@ -1,5 +1,6 @@ import 'package:lunasea/core.dart'; import 'package:lunasea/modules/overseerr.dart'; +import 'package:lunasea/utils/parser.dart'; part 'media.g.dart'; diff --git a/lib/modules/overseerr/api/models/media/season.dart b/lib/modules/overseerr/api/models/media/season.dart index a1a1d913..ed26df8b 100644 --- a/lib/modules/overseerr/api/models/media/season.dart +++ b/lib/modules/overseerr/api/models/media/season.dart @@ -1,5 +1,6 @@ import 'package:lunasea/core.dart'; import 'package:lunasea/modules/overseerr.dart'; +import 'package:lunasea/utils/parser.dart'; part 'season.g.dart'; diff --git a/lib/modules/overseerr/api/models/requests/request.dart b/lib/modules/overseerr/api/models/requests/request.dart index 6b2ab9b5..769afcbd 100644 --- a/lib/modules/overseerr/api/models/requests/request.dart +++ b/lib/modules/overseerr/api/models/requests/request.dart @@ -1,5 +1,6 @@ import 'package:lunasea/core.dart'; import 'package:lunasea/modules/overseerr.dart'; +import 'package:lunasea/utils/parser.dart'; part 'request.g.dart'; diff --git a/lib/modules/overseerr/api/models/users/user.dart b/lib/modules/overseerr/api/models/users/user.dart index 3eb3a221..995fbd9e 100644 --- a/lib/modules/overseerr/api/models/users/user.dart +++ b/lib/modules/overseerr/api/models/users/user.dart @@ -1,4 +1,5 @@ import 'package:lunasea/core.dart'; +import 'package:lunasea/utils/parser.dart'; part 'user.g.dart'; diff --git a/lib/modules/overseerr/api/overseerr.dart b/lib/modules/overseerr/api/overseerr.dart index 7077b49e..17b1d2d1 100644 --- a/lib/modules/overseerr/api/overseerr.dart +++ b/lib/modules/overseerr/api/overseerr.dart @@ -1,6 +1,6 @@ import 'package:dio/dio.dart'; import 'package:retrofit/retrofit.dart'; -import 'models.dart'; +import 'package:lunasea/modules/overseerr/api/models.dart'; part 'overseerr.g.dart'; diff --git a/lib/modules/radarr/api/commands.dart b/lib/modules/radarr/api/commands.dart index fd9d72b4..753058f7 100644 --- a/lib/modules/radarr/api/commands.dart +++ b/lib/modules/radarr/api/commands.dart @@ -2,8 +2,8 @@ library radarr_commands; import 'package:dio/dio.dart'; -import 'models.dart'; -import 'types.dart'; +import 'package:lunasea/modules/radarr/api/models.dart'; +import 'package:lunasea/modules/radarr/api/types.dart'; // Commands part 'src/commands/command.dart'; diff --git a/lib/modules/radarr/api/radarr.dart b/lib/modules/radarr/api/radarr.dart index 8423b428..07389fa4 100644 --- a/lib/modules/radarr/api/radarr.dart +++ b/lib/modules/radarr/api/radarr.dart @@ -8,7 +8,7 @@ library radarr; // Imports import 'package:dio/dio.dart'; -import 'commands.dart'; +import 'package:lunasea/modules/radarr/api/commands.dart'; /// The core class to handle all connections to Radarr. /// Gives you easy access to all implemented command handlers, initialized and ready to call. diff --git a/lib/modules/radarr/api/src/models/command/command.dart b/lib/modules/radarr/api/src/models/command/command.dart index 5ebe3cd5..3f8e2129 100644 --- a/lib/modules/radarr/api/src/models/command/command.dart +++ b/lib/modules/radarr/api/src/models/command/command.dart @@ -1,7 +1,7 @@ import 'dart:convert'; import 'package:json_annotation/json_annotation.dart'; -import '../../../utilities.dart'; -import 'command_body.dart'; +import 'package:lunasea/modules/radarr/api/utilities.dart'; +import 'package:lunasea/modules/radarr/api/src/models/command/command_body.dart'; part 'command.g.dart'; diff --git a/lib/modules/radarr/api/src/models/custom_format/custom_format.dart b/lib/modules/radarr/api/src/models/custom_format/custom_format.dart index 88796073..d33022e3 100644 --- a/lib/modules/radarr/api/src/models/custom_format/custom_format.dart +++ b/lib/modules/radarr/api/src/models/custom_format/custom_format.dart @@ -1,6 +1,6 @@ import 'dart:convert'; import 'package:json_annotation/json_annotation.dart'; -import 'custom_format_specifications.dart'; +import 'package:lunasea/modules/radarr/api/src/models/custom_format/custom_format_specifications.dart'; part 'custom_format.g.dart'; diff --git a/lib/modules/radarr/api/src/models/filesystem/directory.dart b/lib/modules/radarr/api/src/models/filesystem/directory.dart index 73d35925..64ffd25f 100644 --- a/lib/modules/radarr/api/src/models/filesystem/directory.dart +++ b/lib/modules/radarr/api/src/models/filesystem/directory.dart @@ -1,7 +1,7 @@ import 'dart:convert'; import 'package:json_annotation/json_annotation.dart'; -import '../../../types.dart'; -import '../../../utilities.dart'; +import 'package:lunasea/modules/radarr/api/types.dart'; +import 'package:lunasea/modules/radarr/api/utilities.dart'; part 'directory.g.dart'; diff --git a/lib/modules/radarr/api/src/models/filesystem/file.dart b/lib/modules/radarr/api/src/models/filesystem/file.dart index 0d54a6a8..80b1a44b 100644 --- a/lib/modules/radarr/api/src/models/filesystem/file.dart +++ b/lib/modules/radarr/api/src/models/filesystem/file.dart @@ -1,7 +1,7 @@ import 'dart:convert'; import 'package:json_annotation/json_annotation.dart'; -import '../../../types.dart'; -import '../../../utilities.dart'; +import 'package:lunasea/modules/radarr/api/types.dart'; +import 'package:lunasea/modules/radarr/api/utilities.dart'; part 'file.g.dart'; diff --git a/lib/modules/radarr/api/src/models/filesystem/filesystem.dart b/lib/modules/radarr/api/src/models/filesystem/filesystem.dart index afd00a9d..087159b9 100644 --- a/lib/modules/radarr/api/src/models/filesystem/filesystem.dart +++ b/lib/modules/radarr/api/src/models/filesystem/filesystem.dart @@ -1,6 +1,6 @@ import 'dart:convert'; import 'package:json_annotation/json_annotation.dart'; -import '../../../models.dart'; +import 'package:lunasea/modules/radarr/api/models.dart'; part 'filesystem.g.dart'; diff --git a/lib/modules/radarr/api/src/models/health_check/health_check.dart b/lib/modules/radarr/api/src/models/health_check/health_check.dart index 2e9deefe..be9ac764 100644 --- a/lib/modules/radarr/api/src/models/health_check/health_check.dart +++ b/lib/modules/radarr/api/src/models/health_check/health_check.dart @@ -1,7 +1,7 @@ import 'dart:convert'; import 'package:json_annotation/json_annotation.dart'; -import '../../../types.dart'; -import '../../../utilities.dart'; +import 'package:lunasea/modules/radarr/api/types.dart'; +import 'package:lunasea/modules/radarr/api/utilities.dart'; part 'health_check.g.dart'; diff --git a/lib/modules/radarr/api/src/models/history/history.dart b/lib/modules/radarr/api/src/models/history/history.dart index 96b11630..2c6866a3 100644 --- a/lib/modules/radarr/api/src/models/history/history.dart +++ b/lib/modules/radarr/api/src/models/history/history.dart @@ -1,8 +1,8 @@ import 'dart:convert'; import 'package:json_annotation/json_annotation.dart'; -import '../../../types.dart'; -import '../../../models.dart'; -import '../../../utilities.dart'; +import 'package:lunasea/modules/radarr/api/types.dart'; +import 'package:lunasea/modules/radarr/api/utilities.dart'; +import 'package:lunasea/modules/radarr/api/models.dart'; part 'history.g.dart'; diff --git a/lib/modules/radarr/api/src/models/history/history_record.dart b/lib/modules/radarr/api/src/models/history/history_record.dart index 948557bb..61831c89 100644 --- a/lib/modules/radarr/api/src/models/history/history_record.dart +++ b/lib/modules/radarr/api/src/models/history/history_record.dart @@ -1,8 +1,8 @@ import 'dart:convert'; import 'package:json_annotation/json_annotation.dart'; -import '../../../types.dart'; -import '../../../utilities.dart'; -import '../../../models.dart'; +import 'package:lunasea/modules/radarr/api/types.dart'; +import 'package:lunasea/modules/radarr/api/utilities.dart'; +import 'package:lunasea/modules/radarr/api/models.dart'; part 'history_record.g.dart'; diff --git a/lib/modules/radarr/api/src/models/import_list/import_list.dart b/lib/modules/radarr/api/src/models/import_list/import_list.dart index 8a390a3d..36187ea5 100644 --- a/lib/modules/radarr/api/src/models/import_list/import_list.dart +++ b/lib/modules/radarr/api/src/models/import_list/import_list.dart @@ -1,7 +1,7 @@ import 'dart:convert'; import 'package:json_annotation/json_annotation.dart'; -import '../../../types.dart'; -import '../../../utilities.dart'; +import 'package:lunasea/modules/radarr/api/types.dart'; +import 'package:lunasea/modules/radarr/api/utilities.dart'; part 'import_list.g.dart'; diff --git a/lib/modules/radarr/api/src/models/manual_import/manual_import.dart b/lib/modules/radarr/api/src/models/manual_import/manual_import.dart index 388470d6..5878aba0 100644 --- a/lib/modules/radarr/api/src/models/manual_import/manual_import.dart +++ b/lib/modules/radarr/api/src/models/manual_import/manual_import.dart @@ -1,6 +1,6 @@ import 'dart:convert'; import 'package:json_annotation/json_annotation.dart'; -import '../../../models.dart'; +import 'package:lunasea/modules/radarr/api/models.dart'; part 'manual_import.g.dart'; diff --git a/lib/modules/radarr/api/src/models/manual_import/manual_import_file.dart b/lib/modules/radarr/api/src/models/manual_import/manual_import_file.dart index 280acd1d..cf87d450 100644 --- a/lib/modules/radarr/api/src/models/manual_import/manual_import_file.dart +++ b/lib/modules/radarr/api/src/models/manual_import/manual_import_file.dart @@ -1,6 +1,6 @@ import 'dart:convert'; import 'package:json_annotation/json_annotation.dart'; -import '../../../models.dart'; +import 'package:lunasea/modules/radarr/api/models.dart'; part 'manual_import_file.g.dart'; diff --git a/lib/modules/radarr/api/src/models/manual_import/manual_import_update.dart b/lib/modules/radarr/api/src/models/manual_import/manual_import_update.dart index 01fe32a1..9433dbb5 100644 --- a/lib/modules/radarr/api/src/models/manual_import/manual_import_update.dart +++ b/lib/modules/radarr/api/src/models/manual_import/manual_import_update.dart @@ -1,6 +1,6 @@ import 'dart:convert'; import 'package:json_annotation/json_annotation.dart'; -import '../../../models.dart'; +import 'package:lunasea/modules/radarr/api/models.dart'; part 'manual_import_update.g.dart'; diff --git a/lib/modules/radarr/api/src/models/manual_import/manual_import_update_data.dart b/lib/modules/radarr/api/src/models/manual_import/manual_import_update_data.dart index 766edd24..94207842 100644 --- a/lib/modules/radarr/api/src/models/manual_import/manual_import_update_data.dart +++ b/lib/modules/radarr/api/src/models/manual_import/manual_import_update_data.dart @@ -1,7 +1,6 @@ import 'dart:convert'; import 'package:json_annotation/json_annotation.dart'; - -import '../../../models.dart'; +import 'package:lunasea/modules/radarr/api/models.dart'; part 'manual_import_update_data.g.dart'; diff --git a/lib/modules/radarr/api/src/models/movie/alternate_titles.dart b/lib/modules/radarr/api/src/models/movie/alternate_titles.dart index 67cf077f..d2617530 100644 --- a/lib/modules/radarr/api/src/models/movie/alternate_titles.dart +++ b/lib/modules/radarr/api/src/models/movie/alternate_titles.dart @@ -1,6 +1,6 @@ import 'dart:convert'; import 'package:json_annotation/json_annotation.dart'; -import '../../../models.dart'; +import 'package:lunasea/modules/radarr/api/models.dart'; part 'alternate_titles.g.dart'; diff --git a/lib/modules/radarr/api/src/models/movie/collection.dart b/lib/modules/radarr/api/src/models/movie/collection.dart index 8178c460..0e4ebf5b 100644 --- a/lib/modules/radarr/api/src/models/movie/collection.dart +++ b/lib/modules/radarr/api/src/models/movie/collection.dart @@ -1,6 +1,6 @@ import 'dart:convert'; import 'package:json_annotation/json_annotation.dart'; -import '../../../models.dart'; +import 'package:lunasea/modules/radarr/api/models.dart'; part 'collection.g.dart'; diff --git a/lib/modules/radarr/api/src/models/movie/credits.dart b/lib/modules/radarr/api/src/models/movie/credits.dart index 08000811..4a20d9da 100644 --- a/lib/modules/radarr/api/src/models/movie/credits.dart +++ b/lib/modules/radarr/api/src/models/movie/credits.dart @@ -1,8 +1,8 @@ import 'dart:convert'; import 'package:json_annotation/json_annotation.dart'; -import '../../../models.dart'; -import '../../../types.dart'; -import '../../../utilities.dart'; +import 'package:lunasea/modules/radarr/api/types.dart'; +import 'package:lunasea/modules/radarr/api/utilities.dart'; +import 'package:lunasea/modules/radarr/api/models.dart'; part 'credits.g.dart'; diff --git a/lib/modules/radarr/api/src/models/movie/movie_file.dart b/lib/modules/radarr/api/src/models/movie/movie_file.dart index 0ca236f9..98ae1131 100644 --- a/lib/modules/radarr/api/src/models/movie/movie_file.dart +++ b/lib/modules/radarr/api/src/models/movie/movie_file.dart @@ -1,7 +1,7 @@ import 'dart:convert'; import 'package:json_annotation/json_annotation.dart'; -import '../../../models.dart'; -import '../../../utilities.dart'; +import 'package:lunasea/modules/radarr/api/utilities.dart'; +import 'package:lunasea/modules/radarr/api/models.dart'; part 'movie_file.g.dart'; diff --git a/lib/modules/radarr/api/src/models/movie/movie_file_quality.dart b/lib/modules/radarr/api/src/models/movie/movie_file_quality.dart index b6d2cc45..6b5b6b3d 100644 --- a/lib/modules/radarr/api/src/models/movie/movie_file_quality.dart +++ b/lib/modules/radarr/api/src/models/movie/movie_file_quality.dart @@ -1,6 +1,6 @@ import 'dart:convert'; import 'package:json_annotation/json_annotation.dart'; -import '../../../models.dart'; +import 'package:lunasea/modules/radarr/api/models.dart'; part 'movie_file_quality.g.dart'; diff --git a/lib/modules/radarr/api/src/models/quality_profile/item.dart b/lib/modules/radarr/api/src/models/quality_profile/item.dart index f8560211..54d5eab2 100644 --- a/lib/modules/radarr/api/src/models/quality_profile/item.dart +++ b/lib/modules/radarr/api/src/models/quality_profile/item.dart @@ -1,6 +1,6 @@ import 'dart:convert'; import 'package:json_annotation/json_annotation.dart'; -import '../../../models.dart'; +import 'package:lunasea/modules/radarr/api/models.dart'; part 'item.g.dart'; diff --git a/lib/modules/radarr/api/src/models/quality_profile/quality_definition.dart b/lib/modules/radarr/api/src/models/quality_profile/quality_definition.dart index 9815d039..2e9eb041 100644 --- a/lib/modules/radarr/api/src/models/quality_profile/quality_definition.dart +++ b/lib/modules/radarr/api/src/models/quality_profile/quality_definition.dart @@ -1,6 +1,6 @@ import 'dart:convert'; import 'package:json_annotation/json_annotation.dart'; -import '../../../models.dart'; +import 'package:lunasea/modules/radarr/api/models.dart'; part 'quality_definition.g.dart'; diff --git a/lib/modules/radarr/api/src/models/quality_profile/quality_profile.dart b/lib/modules/radarr/api/src/models/quality_profile/quality_profile.dart index 6eaf7581..3b479e86 100644 --- a/lib/modules/radarr/api/src/models/quality_profile/quality_profile.dart +++ b/lib/modules/radarr/api/src/models/quality_profile/quality_profile.dart @@ -1,8 +1,6 @@ import 'dart:convert'; import 'package:json_annotation/json_annotation.dart'; -import 'format_item.dart'; -import 'item.dart'; -import 'language.dart'; +import 'package:lunasea/modules/radarr/api/models.dart'; part 'quality_profile.g.dart'; diff --git a/lib/modules/radarr/api/src/models/queue/queue.dart b/lib/modules/radarr/api/src/models/queue/queue.dart index 441ba5c2..916cf64d 100644 --- a/lib/modules/radarr/api/src/models/queue/queue.dart +++ b/lib/modules/radarr/api/src/models/queue/queue.dart @@ -1,8 +1,8 @@ import 'dart:convert'; import 'package:json_annotation/json_annotation.dart'; -import '../../../models.dart'; -import '../../../types.dart'; -import '../../../utilities.dart'; +import 'package:lunasea/modules/radarr/api/utilities.dart'; +import 'package:lunasea/modules/radarr/api/models.dart'; +import 'package:lunasea/modules/radarr/api/types.dart'; part 'queue.g.dart'; diff --git a/lib/modules/radarr/api/src/models/queue/queue_record.dart b/lib/modules/radarr/api/src/models/queue/queue_record.dart index 7cf1b743..b3898091 100644 --- a/lib/modules/radarr/api/src/models/queue/queue_record.dart +++ b/lib/modules/radarr/api/src/models/queue/queue_record.dart @@ -1,8 +1,8 @@ import 'dart:convert'; import 'package:json_annotation/json_annotation.dart'; -import '../../../models.dart'; -import '../../../types.dart'; -import '../../../utilities.dart'; +import 'package:lunasea/modules/radarr/api/utilities.dart'; +import 'package:lunasea/modules/radarr/api/models.dart'; +import 'package:lunasea/modules/radarr/api/types.dart'; part 'queue_record.g.dart'; diff --git a/lib/modules/radarr/api/src/models/release/release.dart b/lib/modules/radarr/api/src/models/release/release.dart index 6e4d1e01..d307e13c 100644 --- a/lib/modules/radarr/api/src/models/release/release.dart +++ b/lib/modules/radarr/api/src/models/release/release.dart @@ -1,8 +1,8 @@ import 'dart:convert'; import 'package:json_annotation/json_annotation.dart'; -import '../../../models.dart'; -import '../../../types.dart'; -import '../../../utilities.dart'; +import 'package:lunasea/modules/radarr/api/utilities.dart'; +import 'package:lunasea/modules/radarr/api/models.dart'; +import 'package:lunasea/modules/radarr/api/types.dart'; part 'release.g.dart'; diff --git a/lib/modules/radarr/api/src/models/root_folder/root_folder.dart b/lib/modules/radarr/api/src/models/root_folder/root_folder.dart index 6741bfb3..c4bf579c 100644 --- a/lib/modules/radarr/api/src/models/root_folder/root_folder.dart +++ b/lib/modules/radarr/api/src/models/root_folder/root_folder.dart @@ -1,6 +1,6 @@ import 'dart:convert'; import 'package:json_annotation/json_annotation.dart'; -import './unmapped_folder.dart'; +import 'package:lunasea/modules/radarr/api/src/models/root_folder/unmapped_folder.dart'; part 'root_folder.g.dart'; diff --git a/lib/modules/radarr/api/utilities.dart b/lib/modules/radarr/api/utilities.dart index 8130018c..97ce58f1 100644 --- a/lib/modules/radarr/api/utilities.dart +++ b/lib/modules/radarr/api/utilities.dart @@ -1,7 +1,7 @@ /// Library containing all utility functions for Radarr data. library radarr_utilities; -import 'types.dart'; +import 'package:lunasea/modules/radarr/api/types.dart'; /// [RadarrUtilities] gives access to static, functional operations. These are mainly used for the (de)serialization of received JSON data. /// diff --git a/lib/modules/radarr/core/api_helper.dart b/lib/modules/radarr/core/api_helper.dart index 694ccc9b..d0efe6f5 100644 --- a/lib/modules/radarr/core/api_helper.dart +++ b/lib/modules/radarr/core/api_helper.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/radarr.dart'; class RadarrAPIHelper { @@ -28,7 +29,7 @@ class RadarrAPIHelper { showLunaSuccessSnackBar( title: movieCopy.monitored! ? 'Monitoring' : 'No Longer Monitoring', - message: lunaSafeString(movie.title), + message: movie.title.uiSafe(), ); return true; }); @@ -63,7 +64,7 @@ class RadarrAPIHelper { .refreshMovie(movieIds: [movie.id!]).then((_) { if (showSnackbar) showLunaSuccessSnackBar( - title: 'Refreshing...', message: lunaSafeString(movie.title)); + title: 'Refreshing...', message: movie.title.uiSafe()); return true; }).catchError((error, stack) { LunaLogger() @@ -111,7 +112,7 @@ class RadarrAPIHelper { 'Movie Added', if (searchForMovie) '(Searching...)', ].join(' '), - message: lunaSafeString(movie.title), + message: movie.title.uiSafe(), ); return movie; }).catchError((error, stack) { @@ -241,7 +242,7 @@ class RadarrAPIHelper { if (showSnackbar) showLunaSuccessSnackBar( title: 'File Deleted', - message: lunaSafeString(movieFile.relativePath), + message: movieFile.relativePath.uiSafe(), ); return true; }).catchError((error, stack) { @@ -275,7 +276,7 @@ class RadarrAPIHelper { if (showSnackbar) showLunaSuccessSnackBar( title: 'Updated Movie', - message: lunaSafeString(movie.title), + message: movie.title.uiSafe(), ); return true; }); @@ -318,7 +319,7 @@ class RadarrAPIHelper { if (RadarrDatabaseValue.REMOVE_MOVIE_DELETE_FILES.data) '(With Files)', ].join(' '), - message: lunaSafeString(movie.title), + message: movie.title.uiSafe(), ); return true; }); @@ -406,7 +407,7 @@ class RadarrAPIHelper { if (showSnackbar) showLunaSuccessSnackBar( title: 'Downloading Release...', - message: lunaSafeString(release.title), + message: release.title.uiSafe(), ); return true; }).catchError((error, stack) { @@ -436,7 +437,7 @@ class RadarrAPIHelper { .then((tag) { showLunaSuccessSnackBar( title: 'radarr.AddedTag'.tr(), - message: lunaSafeString(tag.label), + message: tag.label.uiSafe(), ); return true; }).catchError((error, stack) { @@ -466,7 +467,9 @@ class RadarrAPIHelper { .delete(id: tag.id!) .then((_) { showLunaSuccessSnackBar( - title: 'Deleted Tag', message: lunaSafeString(tag.label)); + title: 'Deleted Tag', + message: tag.label.uiSafe(), + ); return true; }).catchError((error, stack) { LunaLogger().error('Failed to add tag: ${tag.id}', error, stack); @@ -494,11 +497,11 @@ class RadarrAPIHelper { importMode: importMode, ) .then((_) { - String? message = '${files.length} Files'; - if (files.length == 1) message = files[0].path; + String message = '${files.length} Files'; + if (files.length == 1) message = files[0].path!; showLunaSuccessSnackBar( title: 'Importing... (${importMode.value.toTitleCase()})', - message: lunaSafeString(message), + message: message, ); return true; }).catchError((error, stack) { diff --git a/lib/modules/radarr/core/extensions/radarr_extra_file.dart b/lib/modules/radarr/core/extensions/radarr_extra_file.dart index 1495c391..30471ad5 100644 --- a/lib/modules/radarr/core/extensions/radarr_extra_file.dart +++ b/lib/modules/radarr/core/extensions/radarr_extra_file.dart @@ -1,4 +1,5 @@ import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/radarr.dart'; extension LunaRadarrExtraFileExtension on RadarrExtraFile { diff --git a/lib/modules/radarr/core/extensions/radarr_system_status.dart b/lib/modules/radarr/core/extensions/radarr_system_status.dart index 847a0dc0..3989b86f 100644 --- a/lib/modules/radarr/core/extensions/radarr_system_status.dart +++ b/lib/modules/radarr/core/extensions/radarr_system_status.dart @@ -1,4 +1,5 @@ import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/radarr.dart'; extension RadarrSystemStatusExtension on RadarrSystemStatus { diff --git a/lib/modules/radarr/routes/add_movie/widgets/discovery_results_tile.dart b/lib/modules/radarr/routes/add_movie/widgets/discovery_results_tile.dart index f76e653e..1528920d 100644 --- a/lib/modules/radarr/routes/add_movie/widgets/discovery_results_tile.dart +++ b/lib/modules/radarr/routes/add_movie/widgets/discovery_results_tile.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/radarr.dart'; class RadarrAddMovieDiscoveryResultTile extends StatefulWidget { @@ -37,9 +38,9 @@ class _State extends State { return TextSpan( children: [ TextSpan(text: widget.movie.lunaYear), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: widget.movie.lunaRuntime), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: widget.movie.lunaStudio), ], ); diff --git a/lib/modules/radarr/routes/add_movie/widgets/search_results_tile.dart b/lib/modules/radarr/routes/add_movie/widgets/search_results_tile.dart index acc76208..f5ad7c28 100644 --- a/lib/modules/radarr/routes/add_movie/widgets/search_results_tile.dart +++ b/lib/modules/radarr/routes/add_movie/widgets/search_results_tile.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/radarr.dart'; class RadarrAddMovieSearchResultTile extends StatefulWidget { @@ -43,9 +44,9 @@ class _State extends State { return TextSpan( children: [ TextSpan(text: widget.movie.lunaYear), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: widget.movie.lunaRuntime), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: widget.movie.lunaStudio), ], ); diff --git a/lib/modules/radarr/routes/catalogue/widgets/movie_tile.dart b/lib/modules/radarr/routes/catalogue/widgets/movie_tile.dart index aa549f01..bc014ba3 100644 --- a/lib/modules/radarr/routes/catalogue/widgets/movie_tile.dart +++ b/lib/modules/radarr/routes/catalogue/widgets/movie_tile.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/radarr.dart'; enum _RadarrCatalogueTileType { @@ -105,10 +106,10 @@ class _State extends State { return TextSpan( children: [ _buildChildTextSpan(widget.movie.lunaYear, RadarrMoviesSorting.YEAR), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), _buildChildTextSpan( widget.movie.lunaRuntime, RadarrMoviesSorting.RUNTIME), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), _buildChildTextSpan( widget.movie.lunaStudio, RadarrMoviesSorting.STUDIO), ], @@ -120,10 +121,10 @@ class _State extends State { children: [ _buildChildTextSpan(widget.profile?.name ?? LunaUI.TEXT_EMDASH, RadarrMoviesSorting.QUALITY_PROFILE), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), _buildChildTextSpan(widget.movie.lunaMinimumAvailability, RadarrMoviesSorting.MIN_AVAILABILITY), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), if (context.read().moviesSortType != RadarrMoviesSorting.IN_CINEMAS && context.read().moviesSortType != diff --git a/lib/modules/radarr/routes/history/widgets/history_tile.dart b/lib/modules/radarr/routes/history/widgets/history_tile.dart index a367403d..b5406c5f 100644 --- a/lib/modules/radarr/routes/history/widgets/history_tile.dart +++ b/lib/modules/radarr/routes/history/widgets/history_tile.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/radarr.dart'; class RadarrHistoryTile extends StatelessWidget { @@ -24,7 +25,7 @@ class RadarrHistoryTile extends StatelessWidget { text: [ history.date?.lunaAge ?? LunaUI.TEXT_EMDASH, history.date?.lunaDateTimeReadable() ?? LunaUI.TEXT_EMDASH, - ].join(LunaUI.TEXT_BULLET.lunaPad()), + ].join(LunaUI.TEXT_BULLET.pad()), ), TextSpan( text: history.eventType?.lunaReadable(history) ?? LunaUI.TEXT_EMDASH, diff --git a/lib/modules/radarr/routes/manual_import_details/widgets/import_tile.dart b/lib/modules/radarr/routes/manual_import_details/widgets/import_tile.dart index 2e72c7fc..267756a2 100644 --- a/lib/modules/radarr/routes/manual_import_details/widgets/import_tile.dart +++ b/lib/modules/radarr/routes/manual_import_details/widgets/import_tile.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/radarr.dart'; class RadarrManualImportDetailsTile extends StatelessWidget { @@ -45,13 +46,13 @@ class RadarrManualImportDetailsTile extends StatelessWidget { .watch() .manualImport .lunaQualityProfile), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan( text: context .watch() .manualImport .lunaLanguage), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan( text: context .watch() diff --git a/lib/modules/radarr/routes/missing/widgets/missing_tile.dart b/lib/modules/radarr/routes/missing/widgets/missing_tile.dart index e5e81e38..a03ce24f 100644 --- a/lib/modules/radarr/routes/missing/widgets/missing_tile.dart +++ b/lib/modules/radarr/routes/missing/widgets/missing_tile.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/radarr.dart'; class RadarrMissingTile extends StatefulWidget { @@ -46,9 +47,9 @@ class _State extends State { return TextSpan( children: [ TextSpan(text: widget.movie.lunaYear), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: widget.movie.lunaRuntime), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: widget.movie.lunaStudio), ], ); @@ -58,9 +59,9 @@ class _State extends State { return TextSpan( children: [ TextSpan(text: widget.profile!.lunaName), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: widget.movie.lunaMinimumAvailability), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: widget.movie.lunaReleaseDate), ], ); diff --git a/lib/modules/radarr/routes/movie_details/widgets/files_file_block.dart b/lib/modules/radarr/routes/movie_details/widgets/files_file_block.dart index 0702eb1f..486ae417 100644 --- a/lib/modules/radarr/routes/movie_details/widgets/files_file_block.dart +++ b/lib/modules/radarr/routes/movie_details/widgets/files_file_block.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/radarr.dart'; class RadarrMovieDetailsFilesFileBlock extends StatefulWidget { @@ -35,7 +36,7 @@ class _State extends State { widget.file.mediaInfo?.lunaAudioCodec, if (widget.file.mediaInfo?.audioChannels != null) widget.file.mediaInfo?.audioChannels.toString(), - ].join(LunaUI.TEXT_BULLET.lunaPad()), + ].join(LunaUI.TEXT_BULLET.pad()), ), LunaTableContent( title: 'size', diff --git a/lib/modules/radarr/routes/movie_details/widgets/overview_movie_links_section.dart b/lib/modules/radarr/routes/movie_details/widgets/overview_movie_links_section.dart index ba476b61..dfe7d8e3 100644 --- a/lib/modules/radarr/routes/movie_details/widgets/overview_movie_links_section.dart +++ b/lib/modules/radarr/routes/movie_details/widgets/overview_movie_links_section.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string_links.dart'; import 'package:lunasea/modules/radarr.dart'; class RadarrMovieDetailsOverviewLinksSection extends StatelessWidget { @@ -69,8 +70,7 @@ class RadarrMovieDetailsOverviewLinksSection extends StatelessWidget { padding: const EdgeInsets.all(12.0), ), borderRadius: BorderRadius.circular(LunaUI.BORDER_RADIUS), - onTap: () async => - await movie?.youTubeTrailerId?.lunaOpenYouTube(), + onTap: () async => await movie?.youTubeTrailerId?.openYouTube(), ), height: 50.0, margin: const EdgeInsets.symmetric(horizontal: 6.0, vertical: 6.0), diff --git a/lib/modules/radarr/routes/queue/widgets/queue_tile.dart b/lib/modules/radarr/routes/queue/widgets/queue_tile.dart index 13299492..58addb20 100644 --- a/lib/modules/radarr/routes/queue/widgets/queue_tile.dart +++ b/lib/modules/radarr/routes/queue/widgets/queue_tile.dart @@ -1,6 +1,7 @@ import 'package:collection/collection.dart' show IterableExtension; import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/radarr.dart'; class RadarrQueueTile extends StatelessWidget { @@ -57,7 +58,7 @@ class RadarrQueueTile extends StatelessWidget { fontWeight: LunaUI.FONT_WEIGHT_BOLD, ), ), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: record.timeLeft ?? LunaUI.TEXT_EMDASH), ], ); diff --git a/lib/modules/radarr/routes/releases/widgets/release_tile.dart b/lib/modules/radarr/routes/releases/widgets/release_tile.dart index 1d96df8e..d1e779c8 100644 --- a/lib/modules/radarr/routes/releases/widgets/release_tile.dart +++ b/lib/modules/radarr/routes/releases/widgets/release_tile.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/radarr.dart'; class RadarrReleasesTile extends StatefulWidget { @@ -53,9 +54,9 @@ class _State extends State { fontWeight: LunaUI.FONT_WEIGHT_BOLD, ), ), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: widget.release.lunaIndexer), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: widget.release.lunaAge), ], ); @@ -65,7 +66,7 @@ class _State extends State { return TextSpan( children: [ TextSpan(text: widget.release.lunaQuality), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: widget.release.lunaSize), ], ); diff --git a/lib/modules/radarr/routes/upcoming/widgets/upcoming_tile.dart b/lib/modules/radarr/routes/upcoming/widgets/upcoming_tile.dart index 88551cab..ed0b9ed9 100644 --- a/lib/modules/radarr/routes/upcoming/widgets/upcoming_tile.dart +++ b/lib/modules/radarr/routes/upcoming/widgets/upcoming_tile.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/radarr.dart'; class RadarrUpcomingTile extends StatefulWidget { @@ -49,9 +50,9 @@ class _State extends State { return TextSpan( children: [ TextSpan(text: widget.movie.lunaYear), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: widget.movie.lunaRuntime), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: widget.movie.lunaStudio), ], ); @@ -61,9 +62,9 @@ class _State extends State { return TextSpan( children: [ TextSpan(text: widget.profile!.lunaName), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: widget.movie.lunaMinimumAvailability), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: widget.movie.lunaReleaseDate), ], ); diff --git a/lib/modules/sabnzbd/core/api/data/queue.dart b/lib/modules/sabnzbd/core/api/data/queue.dart index 6ec6ff9c..2b155156 100644 --- a/lib/modules/sabnzbd/core/api/data/queue.dart +++ b/lib/modules/sabnzbd/core/api/data/queue.dart @@ -1,4 +1,5 @@ -import '../../../../../core.dart'; +import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; class SABnzbdQueueData { String name; @@ -37,7 +38,7 @@ class SABnzbdQueueData { ? '―' : timeLeft; String size = '${sizeTotal - sizeLeft}/$sizeTotal MB'; - String paddedBullet = LunaUI.TEXT_BULLET.lunaPad(); + String paddedBullet = LunaUI.TEXT_BULLET.pad(); return '$time$paddedBullet$size$paddedBullet$percentageDone%$paddedBullet$formattedCategory'; } diff --git a/lib/modules/sabnzbd/routes/sabnzbd.dart b/lib/modules/sabnzbd/routes/sabnzbd.dart index be7f350b..4f7f6060 100644 --- a/lib/modules/sabnzbd/routes/sabnzbd.dart +++ b/lib/modules/sabnzbd/routes/sabnzbd.dart @@ -1,9 +1,8 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; import 'package:lunasea/modules/sabnzbd.dart'; - -import '../../../system/filesystem/file.dart'; -import '../../../system/filesystem/filesystem.dart'; +import 'package:lunasea/system/filesystem/file.dart'; +import 'package:lunasea/system/filesystem/filesystem.dart'; class SABnzbd extends StatefulWidget { static const ROUTE_NAME = '/sabnzbd'; diff --git a/lib/modules/sabnzbd/widgets/app_bar_stats.dart b/lib/modules/sabnzbd/widgets/app_bar_stats.dart index 93204955..b2736541 100644 --- a/lib/modules/sabnzbd/widgets/app_bar_stats.dart +++ b/lib/modules/sabnzbd/widgets/app_bar_stats.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/sabnzbd.dart'; class SABnzbdAppBarStats extends StatelessWidget { @@ -38,7 +39,7 @@ class SABnzbdAppBarStats extends StatelessWidget { ), const TextSpan(text: '\n'), TextSpan(text: data.item3 == '0:00:00' ? '―' : data.item3), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: data.item4 == '0.0 B' ? '―' : data.item4) ], ), diff --git a/lib/modules/sabnzbd/widgets/history_tile.dart b/lib/modules/sabnzbd/widgets/history_tile.dart index 82f65bc2..15809db3 100644 --- a/lib/modules/sabnzbd/widgets/history_tile.dart +++ b/lib/modules/sabnzbd/widgets/history_tile.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/sabnzbd.dart'; class SABnzbdHistoryTile extends StatefulWidget { @@ -35,9 +36,9 @@ class _State extends State { TextSpan _subtitle1() { return TextSpan(children: [ TextSpan(text: widget.data.completeTimeString), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: widget.data.sizeReadable), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: widget.data.category), ]); } diff --git a/lib/modules/search/core/types/download_type.dart b/lib/modules/search/core/types/download_type.dart index d56c038c..2cfa910b 100644 --- a/lib/modules/search/core/types/download_type.dart +++ b/lib/modules/search/core/types/download_type.dart @@ -3,8 +3,7 @@ import 'package:lunasea/core.dart'; import 'package:lunasea/modules/nzbget.dart'; import 'package:lunasea/modules/sabnzbd.dart'; import 'package:lunasea/modules/search.dart'; - -import '../../../../system/filesystem/filesystem.dart'; +import 'package:lunasea/system/filesystem/filesystem.dart'; enum SearchDownloadType { NZBGET, diff --git a/lib/modules/search/routes/results/widgets/result_tile.dart b/lib/modules/search/routes/results/widgets/result_tile.dart index 74fd67b2..1d40d0e2 100644 --- a/lib/modules/search/routes/results/widgets/result_tile.dart +++ b/lib/modules/search/routes/results/widgets/result_tile.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/search.dart'; class SearchResultTile extends StatelessWidget { @@ -27,7 +28,7 @@ class SearchResultTile extends StatelessWidget { TextSpan _subtitle1() { return TextSpan(children: [ TextSpan(text: data.size.lunaBytesToString()), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: data.category), ]); } diff --git a/lib/modules/settings/core/dialogs.dart b/lib/modules/settings/core/dialogs.dart index 97a18898..df165523 100644 --- a/lib/modules/settings/core/dialogs.dart +++ b/lib/modules/settings/core/dialogs.dart @@ -1,18 +1,17 @@ import 'package:email_validator/email_validator.dart'; import 'package:flutter/material.dart'; +import 'package:lunasea/firebase/types.dart'; import 'package:lunasea/modules/settings/core/types/header.dart'; -import 'package:tuple/tuple.dart'; +import 'package:lunasea/core/database/luna_database.dart'; +import 'package:lunasea/core/models/types/browser.dart'; +import 'package:lunasea/system/localization.dart'; +import 'package:lunasea/vendor.dart'; +import 'package:lunasea/widgets/ui.dart'; +import 'package:lunasea/modules/dashboard/core/adapters/calendar_starting_day.dart'; +import 'package:lunasea/modules/dashboard/core/adapters/calendar_starting_size.dart'; +import 'package:lunasea/modules/dashboard/core/adapters/calendar_starting_type.dart'; import 'package:wake_on_lan/wake_on_lan.dart'; -import '../../../core/database/luna_database.dart'; -import '../../../core/firebase/types/backup_document.dart'; -import '../../../core/models/types/browser.dart'; -import '../../../system/localization.dart'; -import '../../../ui/ui.dart'; -import '../../dashboard/core/adapters/calendar_starting_day.dart'; -import '../../dashboard/core/adapters/calendar_starting_size.dart'; -import '../../dashboard/core/adapters/calendar_starting_type.dart'; - class SettingsDialogs { Future> setDefaultOption( BuildContext context, { diff --git a/lib/modules/settings/core/router.dart b/lib/modules/settings/core/router.dart index 54a36b28..d2fe88aa 100644 --- a/lib/modules/settings/core/router.dart +++ b/lib/modules/settings/core/router.dart @@ -1,5 +1,7 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/firebase/core.dart'; +import 'package:lunasea/firebase/messaging.dart'; import 'package:lunasea/modules/settings.dart'; class SettingsRouter extends LunaModuleRouter { diff --git a/lib/modules/settings/routes/account/pages/password_reset.dart b/lib/modules/settings/routes/account/pages/password_reset.dart index 82483971..ad4948e6 100644 --- a/lib/modules/settings/routes/account/pages/password_reset.dart +++ b/lib/modules/settings/routes/account/pages/password_reset.dart @@ -1,6 +1,8 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/firebase/auth.dart'; import 'package:lunasea/modules/settings.dart'; +import 'package:lunasea/utils/validator.dart'; class SettingsAccountPasswordResetRouter extends SettingsPageRouter { SettingsAccountPasswordResetRouter() @@ -15,12 +17,12 @@ class SettingsAccountPasswordResetRouter extends SettingsPageRouter { } } -class _Widget extends StatefulWidget { +class _Widget extends ConsumerStatefulWidget { @override - State<_Widget> createState() => _State(); + _State createState() => _State(); } -class _State extends State<_Widget> with LunaScrollControllerMixin { +class _State extends ConsumerState<_Widget> with LunaScrollControllerMixin { final GlobalKey _scaffoldKey = GlobalKey(); final TextEditingController _emailController = TextEditingController(); @@ -106,7 +108,7 @@ class _State extends State<_Widget> with LunaScrollControllerMixin { } bool _validateEmailAddress({bool showSnackBarOnFailure = true}) { - if (!LunaValidator().email(_emailController.text)) { + if (!ref.watch(validatorProvider).email(_emailController.text)) { if (showSnackBarOnFailure) { showLunaErrorSnackBar( title: 'settings.InvalidEmail'.tr(), diff --git a/lib/modules/settings/routes/account/pages/settings.dart b/lib/modules/settings/routes/account/pages/settings.dart index d54ee8ea..811d1ea0 100644 --- a/lib/modules/settings/routes/account/pages/settings.dart +++ b/lib/modules/settings/routes/account/pages/settings.dart @@ -1,10 +1,9 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; import 'package:lunasea/modules/settings.dart'; - -import '../widgets/change_email_tile.dart'; -import '../widgets/change_password_tile.dart'; -import '../widgets/delete_account_tile.dart'; +import 'package:lunasea/modules/settings/routes/account/widgets/change_email_tile.dart'; +import 'package:lunasea/modules/settings/routes/account/widgets/change_password_tile.dart'; +import 'package:lunasea/modules/settings/routes/account/widgets/delete_account_tile.dart'; class SettingsAccountSettingsRouter extends SettingsPageRouter { SettingsAccountSettingsRouter() : super('/settings/account/settings'); diff --git a/lib/modules/settings/routes/account/pages/signed_in.dart b/lib/modules/settings/routes/account/pages/signed_in.dart index 29b94c7f..f6a2cd14 100644 --- a/lib/modules/settings/routes/account/pages/signed_in.dart +++ b/lib/modules/settings/routes/account/pages/signed_in.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/firebase/auth.dart'; import 'package:lunasea/modules/settings.dart'; class SettingsAccountSignedInPage extends StatefulWidget { diff --git a/lib/modules/settings/routes/account/pages/signed_out.dart b/lib/modules/settings/routes/account/pages/signed_out.dart index fbc4fee9..78352cf3 100644 --- a/lib/modules/settings/routes/account/pages/signed_out.dart +++ b/lib/modules/settings/routes/account/pages/signed_out.dart @@ -1,8 +1,10 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/firebase/auth.dart'; import 'package:lunasea/modules/settings.dart'; +import 'package:lunasea/utils/validator.dart'; -class SettingsAccountSignedOutPage extends StatefulWidget { +class SettingsAccountSignedOutPage extends ConsumerStatefulWidget { final ScrollController scrollController; const SettingsAccountSignedOutPage({ @@ -11,10 +13,10 @@ class SettingsAccountSignedOutPage extends StatefulWidget { }) : super(key: key); @override - State createState() => _State(); + _State createState() => _State(); } -class _State extends State { +class _State extends ConsumerState { final GlobalKey _scaffoldKey = GlobalKey(); final TextEditingController _emailController = TextEditingController(); final TextEditingController _passwordController = TextEditingController(); @@ -123,7 +125,7 @@ class _State extends State { } bool _validateEmailAddress({bool showSnackBarOnFailure = true}) { - if (!LunaValidator().email(_emailController.text)) { + if (!ref.watch(validatorProvider).email(_emailController.text)) { if (showSnackBarOnFailure) showLunaErrorSnackBar( title: 'settings.InvalidEmail'.tr(), diff --git a/lib/modules/settings/routes/account/route.dart b/lib/modules/settings/routes/account/route.dart index 5a9a5107..8486cc61 100644 --- a/lib/modules/settings/routes/account/route.dart +++ b/lib/modules/settings/routes/account/route.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/firebase/auth.dart'; import 'package:lunasea/modules/settings.dart'; class SettingsAccountRouter extends SettingsPageRouter { diff --git a/lib/modules/settings/routes/account/widgets/change_email_tile.dart b/lib/modules/settings/routes/account/widgets/change_email_tile.dart index f27bd2ef..eaf04324 100644 --- a/lib/modules/settings/routes/account/widgets/change_email_tile.dart +++ b/lib/modules/settings/routes/account/widgets/change_email_tile.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/firebase/auth.dart'; import 'package:lunasea/modules/settings.dart'; class ChangeEmailTile extends StatefulWidget { diff --git a/lib/modules/settings/routes/account/widgets/change_password_tile.dart b/lib/modules/settings/routes/account/widgets/change_password_tile.dart index 1ca15eb5..ebedbe8f 100644 --- a/lib/modules/settings/routes/account/widgets/change_password_tile.dart +++ b/lib/modules/settings/routes/account/widgets/change_password_tile.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/firebase/auth.dart'; import 'package:lunasea/modules/settings.dart'; class ChangePasswordTile extends StatefulWidget { diff --git a/lib/modules/settings/routes/account/widgets/config_backup_tile.dart b/lib/modules/settings/routes/account/widgets/config_backup_tile.dart index 7999685a..e3e69e19 100644 --- a/lib/modules/settings/routes/account/widgets/config_backup_tile.dart +++ b/lib/modules/settings/routes/account/widgets/config_backup_tile.dart @@ -1,17 +1,21 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/firebase/firestore.dart'; +import 'package:lunasea/firebase/storage.dart'; import 'package:lunasea/modules/settings.dart'; +import 'package:lunasea/utils/encryption.dart'; +import 'package:lunasea/utils/uuid.dart'; -class SettingsAccountBackupConfigurationTile extends StatefulWidget { +class SettingsAccountBackupConfigurationTile extends ConsumerStatefulWidget { const SettingsAccountBackupConfigurationTile({ Key? key, }) : super(key: key); @override - State createState() => _State(); + _State createState() => _State(); } -class _State extends State { +class _State extends ConsumerState { LunaLoadingState _loadingState = LunaLoadingState.INACTIVE; void updateState(LunaLoadingState state) { @@ -39,33 +43,35 @@ class _State extends State { Tuple2 _values = await SettingsDialogs().backupConfiguration(context); if (_values.item1) { + final encryption = ref.watch(encryptionProvider); + String decrypted = LunaConfiguration().export(); - String encrypted = LunaEncryption().encrypt(_values.item2, decrypted); + String encrypted = encryption.encrypt(_values.item2, decrypted); int timestamp = DateTime.now().millisecondsSinceEpoch; - String title = - DateFormat('MMMM dd, yyyy\nhh:mm:ss a').format(DateTime.now()); - String id = LunaUUID().uuid; - if (encrypted != LunaEncryption.ENCRYPTION_FAILURE) - await LunaFirebaseFirestore() - .addBackupEntry(id, timestamp, title: title) - .then((_) => LunaFirebaseStorage().uploadBackup(encrypted, id)) - .then((_) { - updateState(LunaLoadingState.INACTIVE); - showLunaSuccessSnackBar( - title: 'settings.BackupToCloudSuccess'.tr(), - message: title.replaceAll('\n', ' ${LunaUI.TEXT_EMDASH} '), - ); - }).catchError((error, stack) { - LunaLogger().error( - 'Failed to backup configuration to the cloud', - error, - stack, - ); - showLunaErrorSnackBar( - title: 'settings.BackupToCloudFailure'.tr(), - error: error, - ); - }); + String id = ref.watch(uuidProvider).generate(); + String format = 'MMMM dd, yyyy\nhh:mm:ss a'; + String title = DateFormat(format).format(DateTime.now()); + + await LunaFirebaseFirestore() + .addBackupEntry(id, timestamp, title: title) + .then((_) => LunaFirebaseStorage().uploadBackup(encrypted, id)) + .then((_) { + updateState(LunaLoadingState.INACTIVE); + showLunaSuccessSnackBar( + title: 'settings.BackupToCloudSuccess'.tr(), + message: title.replaceAll('\n', ' ${LunaUI.TEXT_EMDASH} '), + ); + }).catchError((error, stack) { + LunaLogger().error( + 'Failed to backup configuration to the cloud', + error, + stack, + ); + showLunaErrorSnackBar( + title: 'settings.BackupToCloudFailure'.tr(), + error: error, + ); + }); } } catch (error, stack) { LunaLogger().error('Backup Failed', error, stack); diff --git a/lib/modules/settings/routes/account/widgets/config_delete_tile.dart b/lib/modules/settings/routes/account/widgets/config_delete_tile.dart index 5071a64f..c026322e 100644 --- a/lib/modules/settings/routes/account/widgets/config_delete_tile.dart +++ b/lib/modules/settings/routes/account/widgets/config_delete_tile.dart @@ -1,5 +1,8 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/firebase/firestore.dart'; +import 'package:lunasea/firebase/storage.dart'; +import 'package:lunasea/firebase/types.dart'; import 'package:lunasea/modules/settings.dart'; class SettingsAccountDeleteConfigurationTile extends StatefulWidget { diff --git a/lib/modules/settings/routes/account/widgets/config_restore_tile.dart b/lib/modules/settings/routes/account/widgets/config_restore_tile.dart index e36e8a30..8de060cb 100644 --- a/lib/modules/settings/routes/account/widgets/config_restore_tile.dart +++ b/lib/modules/settings/routes/account/widgets/config_restore_tile.dart @@ -1,17 +1,20 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/firebase/firestore.dart'; +import 'package:lunasea/firebase/storage.dart'; import 'package:lunasea/modules/settings.dart'; +import 'package:lunasea/utils/encryption.dart'; -class SettingsAccountRestoreConfigurationTile extends StatefulWidget { +class SettingsAccountRestoreConfigurationTile extends ConsumerStatefulWidget { const SettingsAccountRestoreConfigurationTile({ Key? key, }) : super(key: key); @override - State createState() => _State(); + _State createState() => _State(); } -class _State extends State { +class _State extends ConsumerState { LunaLoadingState _loadingState = LunaLoadingState.INACTIVE; void updateState(LunaLoadingState state) { @@ -56,14 +59,15 @@ class _State extends State { Future _decryptBackup(BuildContext context, String encrypted) async { Tuple2 _key = await SettingsDialogs().decryptBackup(context); if (_key.item1) { - String decrypted = LunaEncryption().decrypt(_key.item2, encrypted); - if (decrypted != LunaEncryption.ENCRYPTION_FAILURE) { + try { + final encryption = ref.watch(encryptionProvider); + String decrypted = encryption.decrypt(_key.item2, encrypted); await LunaConfiguration().import(context, decrypted); showLunaSuccessSnackBar( title: 'settings.RestoreFromCloudSuccess'.tr(), message: 'settings.RestoreFromCloudSuccessMessage'.tr(), ); - } else { + } catch (_) { showLunaErrorSnackBar( title: 'settings.RestoreFromCloudFailure'.tr(), message: 'lunasea.IncorrectEncryptionKey'.tr(), diff --git a/lib/modules/settings/routes/account/widgets/delete_account_tile.dart b/lib/modules/settings/routes/account/widgets/delete_account_tile.dart index 43a46741..220b81ee 100644 --- a/lib/modules/settings/routes/account/widgets/delete_account_tile.dart +++ b/lib/modules/settings/routes/account/widgets/delete_account_tile.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/firebase/auth.dart'; import 'package:lunasea/modules/settings.dart'; class DeleteAccountTile extends StatefulWidget { diff --git a/lib/modules/settings/routes/configuration/route.dart b/lib/modules/settings/routes/configuration/route.dart index 27bee5e3..772c912d 100644 --- a/lib/modules/settings/routes/configuration/route.dart +++ b/lib/modules/settings/routes/configuration/route.dart @@ -1,10 +1,9 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; import 'package:lunasea/modules/settings.dart'; - -import '../../../../system/network/network.dart'; -import '../../../../system/platform.dart'; -import '../../../../system/quick_actions/quick_actions.dart'; +import 'package:lunasea/system/network/network.dart'; +import 'package:lunasea/system/platform.dart'; +import 'package:lunasea/system/quick_actions/quick_actions.dart'; class SettingsConfigurationRouter extends SettingsPageRouter { SettingsConfigurationRouter() : super('/settings/configuration'); diff --git a/lib/modules/settings/routes/configuration_dashboard/pages/calendar_settings.dart b/lib/modules/settings/routes/configuration_dashboard/pages/calendar_settings.dart index b1db6fcc..51f5494b 100644 --- a/lib/modules/settings/routes/configuration_dashboard/pages/calendar_settings.dart +++ b/lib/modules/settings/routes/configuration_dashboard/pages/calendar_settings.dart @@ -2,15 +2,15 @@ import 'package:fluro/fluro.dart'; import 'package:flutter/material.dart'; import 'package:tuple/tuple.dart'; -import '../../../../../core/modules.dart'; -import '../../../../../ui/ui.dart'; -import '../../../../dashboard/core/adapters/calendar_starting_day.dart'; -import '../../../../dashboard/core/adapters/calendar_starting_size.dart'; -import '../../../../dashboard/core/adapters/calendar_starting_type.dart'; -import '../../../../dashboard/core/database.dart'; -import '../../../../dashboard/core/dialogs.dart'; -import '../../../core/dialogs.dart'; -import '../../../core/router.dart'; +import 'package:lunasea/core/modules.dart'; +import 'package:lunasea/widgets/ui.dart'; +import 'package:lunasea/modules/dashboard/core/adapters/calendar_starting_day.dart'; +import 'package:lunasea/modules/dashboard/core/adapters/calendar_starting_size.dart'; +import 'package:lunasea/modules/dashboard/core/adapters/calendar_starting_type.dart'; +import 'package:lunasea/modules/dashboard/core/database.dart'; +import 'package:lunasea/modules/dashboard/core/dialogs.dart'; +import 'package:lunasea/modules/settings/core/dialogs.dart'; +import 'package:lunasea/modules/settings/core/router.dart'; class SettingsConfigurationDashboardCalendarSettingsRouter extends SettingsPageRouter { diff --git a/lib/modules/settings/routes/configuration_dashboard/pages/default_pages.dart b/lib/modules/settings/routes/configuration_dashboard/pages/default_pages.dart index cebde03a..c2d0b6c1 100644 --- a/lib/modules/settings/routes/configuration_dashboard/pages/default_pages.dart +++ b/lib/modules/settings/routes/configuration_dashboard/pages/default_pages.dart @@ -2,9 +2,9 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; import 'package:lunasea/modules/settings.dart'; -import '../../../../dashboard/core/database.dart'; -import '../../../../dashboard/core/dialogs.dart'; -import '../../../../dashboard/routes/dashboard/widgets/navigation_bar.dart'; +import 'package:lunasea/modules/dashboard/core/database.dart'; +import 'package:lunasea/modules/dashboard/core/dialogs.dart'; +import 'package:lunasea/modules/dashboard/routes/dashboard/widgets/navigation_bar.dart'; class SettingsConfigurationDashboardDefaultPagesRouter extends SettingsPageRouter { diff --git a/lib/modules/settings/routes/configuration_localization/route.dart b/lib/modules/settings/routes/configuration_localization/route.dart index 26f888a4..eb8f558f 100644 --- a/lib/modules/settings/routes/configuration_localization/route.dart +++ b/lib/modules/settings/routes/configuration_localization/route.dart @@ -1,8 +1,7 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; import 'package:lunasea/modules/settings.dart'; - -import '../../../../system/localization.dart'; +import 'package:lunasea/system/localization.dart'; class SettingsConfigurationLocalizationRouter extends SettingsPageRouter { SettingsConfigurationLocalizationRouter() diff --git a/lib/modules/settings/routes/configuration_network/route.dart b/lib/modules/settings/routes/configuration_network/route.dart index b3227c37..e4d64182 100644 --- a/lib/modules/settings/routes/configuration_network/route.dart +++ b/lib/modules/settings/routes/configuration_network/route.dart @@ -1,8 +1,7 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; import 'package:lunasea/modules/settings.dart'; - -import '../../../../system/network/network.dart'; +import 'package:lunasea/system/network/network.dart'; class SettingsConfigurationNetworkRouter extends SettingsPageRouter { SettingsConfigurationNetworkRouter() diff --git a/lib/modules/settings/routes/configuration_quickactions/route.dart b/lib/modules/settings/routes/configuration_quickactions/route.dart index af48755a..141962da 100644 --- a/lib/modules/settings/routes/configuration_quickactions/route.dart +++ b/lib/modules/settings/routes/configuration_quickactions/route.dart @@ -1,8 +1,7 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; import 'package:lunasea/modules/settings.dart'; - -import '../../../../system/quick_actions/quick_actions.dart'; +import 'package:lunasea/system/quick_actions/quick_actions.dart'; class SettingsConfigurationQuickActionsRouter extends SettingsPageRouter { SettingsConfigurationQuickActionsRouter() diff --git a/lib/modules/settings/routes/notifications/route.dart b/lib/modules/settings/routes/notifications/route.dart index 438892a6..397bb1e8 100644 --- a/lib/modules/settings/routes/notifications/route.dart +++ b/lib/modules/settings/routes/notifications/route.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/firebase/messaging.dart'; import 'package:lunasea/modules/settings.dart'; class SettingsNotificationsRouter extends SettingsPageRouter { diff --git a/lib/modules/settings/routes/notifications/widgets/module_tile.dart b/lib/modules/settings/routes/notifications/widgets/module_tile.dart index fe74b98b..9ad3bbb0 100644 --- a/lib/modules/settings/routes/notifications/widgets/module_tile.dart +++ b/lib/modules/settings/routes/notifications/widgets/module_tile.dart @@ -1,6 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/firebase/auth.dart'; +import 'package:lunasea/firebase/messaging.dart'; class SettingsNotificationsModuleTile extends StatelessWidget { final LunaModule module; diff --git a/lib/modules/settings/routes/settings/route.dart b/lib/modules/settings/routes/settings/route.dart index 3a3529f5..fec45279 100644 --- a/lib/modules/settings/routes/settings/route.dart +++ b/lib/modules/settings/routes/settings/route.dart @@ -1,9 +1,10 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/firebase/core.dart'; +import 'package:lunasea/firebase/messaging.dart'; import 'package:lunasea/modules/settings.dart'; - -import '../../../../system/environment.dart'; -import '../../../../system/flavor.dart'; +import 'package:lunasea/system/environment.dart'; +import 'package:lunasea/system/flavor.dart'; class SettingsHomeRouter extends SettingsPageRouter { SettingsHomeRouter() : super('/settings'); diff --git a/lib/modules/settings/routes/system/route.dart b/lib/modules/settings/routes/system/route.dart index e4e202ef..f737afc9 100644 --- a/lib/modules/settings/routes/system/route.dart +++ b/lib/modules/settings/routes/system/route.dart @@ -1,10 +1,11 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/firebase/auth.dart'; +import 'package:lunasea/firebase/core.dart'; import 'package:lunasea/modules/settings.dart'; - -import '../../../../core/cache/image_cache/image_cache.dart'; -import '../../../../system/environment.dart'; -import '../../../../system/flavor.dart'; +import 'package:lunasea/core/cache/image_cache/image_cache.dart'; +import 'package:lunasea/system/environment.dart'; +import 'package:lunasea/system/flavor.dart'; class SettingsSystemRouter extends SettingsPageRouter { SettingsSystemRouter() : super('/settings/system'); diff --git a/lib/modules/settings/routes/system/widgets/backup_tile.dart b/lib/modules/settings/routes/system/widgets/backup_tile.dart index 66f62b4d..59c7afaa 100644 --- a/lib/modules/settings/routes/system/widgets/backup_tile.dart +++ b/lib/modules/settings/routes/system/widgets/backup_tile.dart @@ -1,44 +1,42 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; import 'package:lunasea/modules/settings.dart'; +import 'package:lunasea/system/filesystem/filesystem.dart'; +import 'package:lunasea/utils/encryption.dart'; -import '../../../../../system/filesystem/filesystem.dart'; - -class SettingsSystemBackupRestoreBackupTile extends StatelessWidget { +class SettingsSystemBackupRestoreBackupTile extends ConsumerWidget { const SettingsSystemBackupRestoreBackupTile({ Key? key, }) : super(key: key); @override - Widget build(BuildContext context) { + Widget build(BuildContext context, WidgetRef ref) { return LunaBlock( title: 'settings.BackupToDevice'.tr(), body: [TextSpan(text: 'settings.BackupToDeviceDescription'.tr())], trailing: const LunaIconButton(icon: Icons.upload_rounded), - onTap: () async => _backup(context), + onTap: () async => _backup(context, ref), ); } - Future _backup(BuildContext context) async { + Future _backup(BuildContext context, WidgetRef ref) async { try { - Tuple2 _values = - await SettingsDialogs().backupConfiguration(context); + final _values = await SettingsDialogs().backupConfiguration(context); if (_values.item1) { + final encryption = ref.watch(encryptionProvider); String data = LunaConfiguration().export(); - String encrypted = LunaEncryption().encrypt(_values.item2, data); + String encrypted = encryption.encrypt(_values.item2, data); String name = DateFormat('y-MM-dd kk-mm-ss').format(DateTime.now()); - if (encrypted != LunaEncryption.ENCRYPTION_FAILURE) { - bool result = await LunaFileSystem().save( - context, - '$name.lunasea', - utf8.encode(encrypted), + bool result = await LunaFileSystem().save( + context, + '$name.lunasea', + utf8.encode(encrypted), + ); + if (result) { + showLunaSuccessSnackBar( + title: 'settings.BackupToCloudSuccess'.tr(), + message: '$name.lunasea', ); - if (result) { - showLunaSuccessSnackBar( - title: 'settings.BackupToCloudSuccess'.tr(), - message: '$name.lunasea', - ); - } } } } catch (error, stack) { diff --git a/lib/modules/settings/routes/system/widgets/restore_tile.dart b/lib/modules/settings/routes/system/widgets/restore_tile.dart index d554b7ee..64be45c0 100644 --- a/lib/modules/settings/routes/system/widgets/restore_tile.dart +++ b/lib/modules/settings/routes/system/widgets/restore_tile.dart @@ -1,29 +1,29 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; import 'package:lunasea/modules/settings.dart'; +import 'package:lunasea/system/filesystem/file.dart'; +import 'package:lunasea/system/filesystem/filesystem.dart'; +import 'package:lunasea/utils/encryption.dart'; -import '../../../../../system/filesystem/file.dart'; -import '../../../../../system/filesystem/filesystem.dart'; - -class SettingsSystemBackupRestoreRestoreTile extends StatelessWidget { +class SettingsSystemBackupRestoreRestoreTile extends ConsumerWidget { const SettingsSystemBackupRestoreRestoreTile({ Key? key, }) : super(key: key); @override - Widget build(BuildContext context) { + Widget build(BuildContext context, WidgetRef ref) { return LunaBlock( title: 'settings.RestoreFromDevice'.tr(), body: [TextSpan(text: 'settings.RestoreFromDeviceDescription'.tr())], trailing: const LunaIconButton(icon: Icons.download_rounded), - onTap: () async => _restore(context), + onTap: () async => _restore(context, ref), ); } - Future _restore(BuildContext context) async { + Future _restore(BuildContext context, WidgetRef ref) async { try { LunaFile? file = await LunaFileSystem().read(context, ['lunasea']); - if (file != null) await _decryptBackup(context, file); + if (file != null) await _decryptBackup(context, ref, file); } catch (error, stack) { LunaLogger().error('Failed to restore device backup', error, stack); showLunaErrorSnackBar( @@ -33,24 +33,29 @@ class SettingsSystemBackupRestoreRestoreTile extends StatelessWidget { } } - Future _decryptBackup(BuildContext context, LunaFile file) async { + Future _decryptBackup( + BuildContext context, + WidgetRef ref, + LunaFile file, + ) async { Tuple2 _key = await SettingsDialogs().decryptBackup(context); if (_key.item1) { + final encryption = ref.watch(encryptionProvider); String encrypted = String.fromCharCodes(file.data); - String decrypted = LunaEncryption().decrypt(_key.item2, encrypted); - if (decrypted != LunaEncryption.ENCRYPTION_FAILURE) { + try { + String decrypted = encryption.decrypt(_key.item2, encrypted); await LunaConfiguration().import(context, decrypted); showLunaSuccessSnackBar( title: 'settings.RestoreFromCloudSuccess'.tr(), message: 'settings.RestoreFromCloudSuccessMessage'.tr(), ); - } else { + } catch (_) { showLunaErrorSnackBar( title: 'settings.RestoreFromCloudFailure'.tr(), message: 'lunasea.IncorrectEncryptionKey'.tr(), showButton: true, buttonText: 'lunasea.Retry'.tr(), - buttonOnPressed: () async => _decryptBackup(context, file), + buttonOnPressed: () async => _decryptBackup(context, ref, file), ); } } diff --git a/lib/modules/settings/routes/system_logs/route.dart b/lib/modules/settings/routes/system_logs/route.dart index 3967bda1..cc5b4b4c 100644 --- a/lib/modules/settings/routes/system_logs/route.dart +++ b/lib/modules/settings/routes/system_logs/route.dart @@ -1,8 +1,7 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; import 'package:lunasea/modules/settings.dart'; - -import '../../../../system/filesystem/filesystem.dart'; +import 'package:lunasea/system/filesystem/filesystem.dart'; class SettingsSystemLogsRouter extends SettingsPageRouter { SettingsSystemLogsRouter() : super('/settings/logs'); @@ -85,7 +84,7 @@ class _State extends State<_Widget> with LunaScrollControllerMixin { onTap: () async { bool result = await SettingsDialogs().clearLogs(context); if (result) { - LunaLogger().clearLogs(); + LunaLogger().clear(); showLunaSuccessSnackBar( title: 'Logs Cleared', message: 'All recorded logs have been cleared', @@ -105,7 +104,7 @@ class _State extends State<_Widget> with LunaScrollControllerMixin { title: 'Exporting Logs', message: 'Please wait...', ); - String data = await LunaLogger().exportLogs(); + String data = await LunaLogger().export(); bool result = await LunaFileSystem() .save(context, 'logs.json', utf8.encode(data)); if (result) diff --git a/lib/modules/sonarr/api/controllers.dart b/lib/modules/sonarr/api/controllers.dart index 86b5ef70..f4065cff 100644 --- a/lib/modules/sonarr/api/controllers.dart +++ b/lib/modules/sonarr/api/controllers.dart @@ -1,10 +1,10 @@ /// Library containing all logic and accessors to make calls to Sonarr's API. library sonarr_commands; -import './types.dart'; +import 'package:lunasea/modules/sonarr/api/types.dart'; import 'package:dio/dio.dart'; import 'package:intl/intl.dart'; -import 'models.dart'; +import 'package:lunasea/modules/sonarr/api/models.dart'; // Calendar part 'src/controllers/calendar.dart'; diff --git a/lib/modules/sonarr/api/sonarr.dart b/lib/modules/sonarr/api/sonarr.dart index 6e5efae1..28f1801b 100644 --- a/lib/modules/sonarr/api/sonarr.dart +++ b/lib/modules/sonarr/api/sonarr.dart @@ -1,7 +1,7 @@ library sonarr; import 'package:dio/dio.dart'; -import 'controllers.dart'; +import 'package:lunasea/modules/sonarr/api/controllers.dart'; class Sonarr { Sonarr._internal({ diff --git a/lib/modules/sonarr/api/src/models/profile/language_profile.dart b/lib/modules/sonarr/api/src/models/profile/language_profile.dart index c466d230..ef1c6d2f 100644 --- a/lib/modules/sonarr/api/src/models/profile/language_profile.dart +++ b/lib/modules/sonarr/api/src/models/profile/language_profile.dart @@ -1,7 +1,7 @@ import 'dart:convert'; import 'package:json_annotation/json_annotation.dart'; -import 'language_profile_cutoff.dart'; -import 'language_profile_item.dart'; +import 'package:lunasea/modules/sonarr/api/src/models/profile/language_profile_cutoff.dart'; +import 'package:lunasea/modules/sonarr/api/src/models/profile/language_profile_item.dart'; part 'language_profile.g.dart'; diff --git a/lib/modules/sonarr/api/src/models/profile/language_profile_item.dart b/lib/modules/sonarr/api/src/models/profile/language_profile_item.dart index 6b0f1554..fa767f9a 100644 --- a/lib/modules/sonarr/api/src/models/profile/language_profile_item.dart +++ b/lib/modules/sonarr/api/src/models/profile/language_profile_item.dart @@ -1,6 +1,6 @@ import 'dart:convert'; import 'package:json_annotation/json_annotation.dart'; -import 'language_profile_item_language.dart'; +import 'package:lunasea/modules/sonarr/api/src/models/profile/language_profile_item_language.dart'; part 'language_profile_item.g.dart'; diff --git a/lib/modules/sonarr/api/src/models/profile/quality_profile.dart b/lib/modules/sonarr/api/src/models/profile/quality_profile.dart index f4128c87..4cf32ee8 100644 --- a/lib/modules/sonarr/api/src/models/profile/quality_profile.dart +++ b/lib/modules/sonarr/api/src/models/profile/quality_profile.dart @@ -1,6 +1,6 @@ import 'dart:convert'; import 'package:json_annotation/json_annotation.dart'; -import 'quality_profile_item.dart'; +import 'package:lunasea/modules/sonarr/api/src/models/profile/quality_profile_item.dart'; part 'quality_profile.g.dart'; diff --git a/lib/modules/sonarr/api/src/models/profile/quality_profile_item.dart b/lib/modules/sonarr/api/src/models/profile/quality_profile_item.dart index 1557a7aa..54132e64 100644 --- a/lib/modules/sonarr/api/src/models/profile/quality_profile_item.dart +++ b/lib/modules/sonarr/api/src/models/profile/quality_profile_item.dart @@ -1,6 +1,6 @@ import 'dart:convert'; import 'package:json_annotation/json_annotation.dart'; -import 'quality_profile_item_quality.dart'; +import 'package:lunasea/modules/sonarr/api/src/models/profile/quality_profile_item_quality.dart'; part 'quality_profile_item.g.dart'; diff --git a/lib/modules/sonarr/core/api_controller.dart b/lib/modules/sonarr/core/api_controller.dart index be221f16..c704e1dc 100644 --- a/lib/modules/sonarr/core/api_controller.dart +++ b/lib/modules/sonarr/core/api_controller.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/sonarr.dart'; class SonarrAPIController { @@ -21,7 +22,7 @@ class SonarrAPIController { if (showSnackbar) { showLunaSuccessSnackBar( title: 'sonarr.DownloadingRelease'.tr(), - message: lunaSafeString(release.title), + message: release.title.uiSafe(), ); } return true; diff --git a/lib/modules/sonarr/core/dialogs.dart b/lib/modules/sonarr/core/dialogs.dart index 85cc1625..ea909d3c 100644 --- a/lib/modules/sonarr/core/dialogs.dart +++ b/lib/modules/sonarr/core/dialogs.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/sonarr.dart'; class SonarrDialogs { diff --git a/lib/modules/sonarr/core/extensions/sonarr_series.dart b/lib/modules/sonarr/core/extensions/sonarr_series.dart index c55d1830..e320bc3a 100644 --- a/lib/modules/sonarr/core/extensions/sonarr_series.dart +++ b/lib/modules/sonarr/core/extensions/sonarr_series.dart @@ -1,4 +1,5 @@ import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/sonarr.dart'; extension SonarrSeriesExtension on SonarrSeries { diff --git a/lib/modules/sonarr/routes/add_series/widgets/search_results_tile.dart b/lib/modules/sonarr/routes/add_series/widgets/search_results_tile.dart index 5126f727..3b9961e2 100644 --- a/lib/modules/sonarr/routes/add_series/widgets/search_results_tile.dart +++ b/lib/modules/sonarr/routes/add_series/widgets/search_results_tile.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/sonarr.dart'; class SonarrSeriesAddSearchResultTile extends StatefulWidget { @@ -48,9 +49,9 @@ class _State extends State { TextSpan _subtitle1() { return TextSpan(children: [ TextSpan(text: widget.series.lunaSeasonCount), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: widget.series.lunaYear), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: widget.series.lunaNetwork), ]); } diff --git a/lib/modules/sonarr/routes/add_series_details/widgets/tile_series_type.dart b/lib/modules/sonarr/routes/add_series_details/widgets/tile_series_type.dart index 9baf8364..b928aabc 100644 --- a/lib/modules/sonarr/routes/add_series_details/widgets/tile_series_type.dart +++ b/lib/modules/sonarr/routes/add_series_details/widgets/tile_series_type.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/sonarr.dart'; class SonarrSeriesAddDetailsSeriesTypeTile extends StatelessWidget { diff --git a/lib/modules/sonarr/routes/catalogue/widgets/series_tile.dart b/lib/modules/sonarr/routes/catalogue/widgets/series_tile.dart index 5e2cc5c8..bbcb548b 100644 --- a/lib/modules/sonarr/routes/catalogue/widgets/series_tile.dart +++ b/lib/modules/sonarr/routes/catalogue/widgets/series_tile.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/sonarr.dart'; enum _SonarrSeriesTileType { @@ -107,9 +108,9 @@ class _State extends State { widget.series.lunaEpisodeCount, SonarrSeriesSorting.EPISODES, ), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: widget.series.lunaSeasonCount), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), _buildChildTextSpan( widget.series.lunaSizeOnDisk, SonarrSeriesSorting.SIZE, @@ -125,7 +126,7 @@ class _State extends State { widget.series.lunaSeriesType, SonarrSeriesSorting.TYPE, ), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), _buildChildTextSpan( widget.profile?.name ?? LunaUI.TEXT_EMDASH, SonarrSeriesSorting.QUALITY, @@ -142,7 +143,7 @@ class _State extends State { widget.series.lunaNetwork, SonarrSeriesSorting.NETWORK, ), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), if (_sorting == SonarrSeriesSorting.DATE_ADDED) _buildChildTextSpan( widget.series.lunaDateAdded, diff --git a/lib/modules/sonarr/routes/edit_series/widgets/tile_series_type.dart b/lib/modules/sonarr/routes/edit_series/widgets/tile_series_type.dart index 6b839cbc..032507f7 100644 --- a/lib/modules/sonarr/routes/edit_series/widgets/tile_series_type.dart +++ b/lib/modules/sonarr/routes/edit_series/widgets/tile_series_type.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/sonarr.dart'; class SonarrSeriesEditSeriesTypeTile extends StatelessWidget { diff --git a/lib/modules/sonarr/routes/history/widgets/history_tile.dart b/lib/modules/sonarr/routes/history/widgets/history_tile.dart index 13184df3..5f317e02 100644 --- a/lib/modules/sonarr/routes/history/widgets/history_tile.dart +++ b/lib/modules/sonarr/routes/history/widgets/history_tile.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/sonarr.dart'; enum SonarrHistoryTileType { @@ -146,7 +147,7 @@ class SonarrHistoryTile extends StatelessWidget { text: [ history.date?.lunaAge ?? LunaUI.TEXT_EMDASH, history.date?.lunaDateTimeReadable() ?? LunaUI.TEXT_EMDASH, - ].join(LunaUI.TEXT_BULLET.lunaPad()), + ].join(LunaUI.TEXT_BULLET.pad()), ); } diff --git a/lib/modules/sonarr/routes/missing/widgets/missing_tile.dart b/lib/modules/sonarr/routes/missing/widgets/missing_tile.dart index caf4e0bb..1664058e 100644 --- a/lib/modules/sonarr/routes/missing/widgets/missing_tile.dart +++ b/lib/modules/sonarr/routes/missing/widgets/missing_tile.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/sonarr.dart'; class SonarrMissingTile extends StatefulWidget { @@ -58,7 +59,7 @@ class _State extends State { text: widget.record.seasonNumber == 0 ? 'Specials' : 'Season ${widget.record.seasonNumber}'), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: 'Episode ${widget.record.episodeNumber}'), ], ); diff --git a/lib/modules/sonarr/routes/queue/widgets/queue_tile.dart b/lib/modules/sonarr/routes/queue/widgets/queue_tile.dart index 3c49dee0..beb02b3f 100644 --- a/lib/modules/sonarr/routes/queue/widgets/queue_tile.dart +++ b/lib/modules/sonarr/routes/queue/widgets/queue_tile.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/sonarr.dart'; enum SonarrQueueTileType { @@ -89,11 +90,11 @@ class _State extends State { TextSpan( text: widget.queueRecord.quality?.quality?.name ?? LunaUI.TEXT_EMDASH, ), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan( text: widget.queueRecord.language?.name ?? LunaUI.TEXT_EMDASH, ), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan( text: widget.queueRecord.lunaTimeLeft(), ), @@ -111,7 +112,7 @@ class _State extends State { ), children: [ TextSpan(text: widget.queueRecord.lunaPercentage()), - TextSpan(text: LunaUI.TEXT_EMDASH.lunaPad()), + TextSpan(text: LunaUI.TEXT_EMDASH.pad()), TextSpan(text: _params.item1), ], ); diff --git a/lib/modules/sonarr/routes/releases/widgets/release_tile.dart b/lib/modules/sonarr/routes/releases/widgets/release_tile.dart index cefa8560..d1a1c5fb 100644 --- a/lib/modules/sonarr/routes/releases/widgets/release_tile.dart +++ b/lib/modules/sonarr/routes/releases/widgets/release_tile.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/sonarr.dart'; class SonarrReleasesTile extends StatefulWidget { @@ -55,9 +56,9 @@ class _State extends State { fontWeight: LunaUI.FONT_WEIGHT_BOLD, ), ), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: widget.release.lunaIndexer), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: widget.release.lunaAge), ], ); @@ -77,11 +78,11 @@ class _State extends State { ), ), if (_preferredWordScore != null) - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: widget.release.lunaQuality), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: widget.release.lunaLanguage), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: widget.release.lunaSize), ], ); diff --git a/lib/modules/sonarr/routes/season_details/sheets/episode_details.dart b/lib/modules/sonarr/routes/season_details/sheets/episode_details.dart index 8d5abdc9..a78c763a 100644 --- a/lib/modules/sonarr/routes/season_details/sheets/episode_details.dart +++ b/lib/modules/sonarr/routes/season_details/sheets/episode_details.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/sonarr.dart'; class SonarrEpisodeDetailsSheet extends LunaBottomModalSheet { @@ -92,7 +93,7 @@ class SonarrEpisodeDetailsSheet extends LunaBottomModalSheet { 'sonarr.SeasonNumber'.tr( args: [episode?.seasonNumber?.toString() ?? LunaUI.TEXT_EMDASH], ), - LunaUI.TEXT_BULLET.lunaPad(), + LunaUI.TEXT_BULLET.pad(), 'sonarr.EpisodeNumber'.tr( args: [episode?.episodeNumber?.toString() ?? LunaUI.TEXT_EMDASH], ), @@ -131,7 +132,7 @@ class SonarrEpisodeDetailsSheet extends LunaBottomModalSheet { episodeFile?.mediaInfo?.audioCodec ?? LunaUI.TEXT_EMDASH, if (episodeFile?.mediaInfo?.audioChannels != null) episodeFile?.mediaInfo?.audioChannels?.toString(), - ].join(LunaUI.TEXT_BULLET.lunaPad()), + ].join(LunaUI.TEXT_BULLET.pad()), ), LunaTableContent( title: 'sonarr.Size'.tr(), diff --git a/lib/modules/sonarr/routes/series_details/widgets/overview_series_information_block.dart.dart b/lib/modules/sonarr/routes/series_details/widgets/overview_series_information_block.dart.dart index 0d6bb973..22a16e5a 100644 --- a/lib/modules/sonarr/routes/series_details/widgets/overview_series_information_block.dart.dart +++ b/lib/modules/sonarr/routes/series_details/widgets/overview_series_information_block.dart.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/sonarr.dart'; class SonarrSeriesDetailsOverviewInformationBlock extends StatelessWidget { diff --git a/lib/modules/sonarr/routes/upcoming/widgets/upcoming_tile.dart b/lib/modules/sonarr/routes/upcoming/widgets/upcoming_tile.dart index 9535cf19..4efae14b 100644 --- a/lib/modules/sonarr/routes/upcoming/widgets/upcoming_tile.dart +++ b/lib/modules/sonarr/routes/upcoming/widgets/upcoming_tile.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/sonarr.dart'; class SonarrUpcomingTile extends StatefulWidget { @@ -54,7 +55,7 @@ class _State extends State { text: widget.record.seasonNumber == 0 ? 'Specials' : 'Season ${widget.record.seasonNumber}'), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: 'Episode ${widget.record.episodeNumber}'), ], ); diff --git a/lib/modules/tautulli/api/commands.dart b/lib/modules/tautulli/api/commands.dart index 6ba201d3..3040b868 100644 --- a/lib/modules/tautulli/api/commands.dart +++ b/lib/modules/tautulli/api/commands.dart @@ -3,8 +3,8 @@ library tautulli_commands; import 'dart:typed_data'; import 'package:dio/dio.dart'; -import 'types.dart'; -import 'models.dart'; +import 'package:lunasea/modules/tautulli/api/types.dart'; +import 'package:lunasea/modules/tautulli/api/models.dart'; // Activity part 'src/commands/activity.dart'; diff --git a/lib/modules/tautulli/api/src/models/libraries/search_results.dart b/lib/modules/tautulli/api/src/models/libraries/search_results.dart index 675472fb..c10abddd 100644 --- a/lib/modules/tautulli/api/src/models/libraries/search_results.dart +++ b/lib/modules/tautulli/api/src/models/libraries/search_results.dart @@ -1,6 +1,6 @@ import 'dart:convert'; import 'package:json_annotation/json_annotation.dart'; -import 'search_result.dart'; +import 'package:lunasea/modules/tautulli/api/src/models/libraries/search_result.dart'; part 'search_results.g.dart'; diff --git a/lib/modules/tautulli/api/tautulli.dart b/lib/modules/tautulli/api/tautulli.dart index 7c9934a3..12ee214c 100644 --- a/lib/modules/tautulli/api/tautulli.dart +++ b/lib/modules/tautulli/api/tautulli.dart @@ -6,7 +6,7 @@ library tautulli; // Imports import 'package:dio/dio.dart'; -import 'commands.dart'; +import 'package:lunasea/modules/tautulli/api/commands.dart'; /// The core class to handle all connections to Tautulli. /// Gives you easy access to all implemented command handlers, initialized and ready to call. diff --git a/lib/modules/tautulli/api/utilities.dart b/lib/modules/tautulli/api/utilities.dart index 58923dcc..94dab1a7 100644 --- a/lib/modules/tautulli/api/utilities.dart +++ b/lib/modules/tautulli/api/utilities.dart @@ -1,6 +1,7 @@ /// Library containing all utilty functions for Tautulli data. library tautulli_utilities; +// ignore: always_use_package_imports import './types.dart'; /// [TautulliUtilities] gives access to static, functional operations. These are mainly used for the (de)serialization of received JSON data. diff --git a/lib/modules/tautulli/core/api_helper.dart b/lib/modules/tautulli/core/api_helper.dart index 6f84a3ba..4d72d1f5 100644 --- a/lib/modules/tautulli/core/api_helper.dart +++ b/lib/modules/tautulli/core/api_helper.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/tautulli.dart'; class TautulliAPIHelper { @@ -180,7 +181,7 @@ class TautulliAPIHelper { message: [ session.friendlyName, session.title, - ].join(LunaUI.TEXT_EMDASH.lunaPad()), + ].join(LunaUI.TEXT_EMDASH.pad()), ); return true; }).catchError((error, stack) { diff --git a/lib/modules/tautulli/routes/activity/widgets/activity_tile.dart b/lib/modules/tautulli/routes/activity/widgets/activity_tile.dart index 1213b0c3..a4873e28 100644 --- a/lib/modules/tautulli/routes/activity/widgets/activity_tile.dart +++ b/lib/modules/tautulli/routes/activity/widgets/activity_tile.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/tautulli.dart'; class TautulliActivityTile extends StatelessWidget { @@ -40,7 +41,7 @@ class TautulliActivityTile extends StatelessWidget { return TextSpan( children: [ TextSpan(text: session.parentTitle), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan( text: 'tautulli.Episode'.tr(args: [ session.mediaIndex?.toString() ?? LunaUI.TEXT_EMDASH @@ -62,7 +63,7 @@ class TautulliActivityTile extends StatelessWidget { return TextSpan( children: [ TextSpan(text: session.parentTitle), - TextSpan(text: LunaUI.TEXT_EMDASH.lunaPad()), + TextSpan(text: LunaUI.TEXT_EMDASH.pad()), TextSpan( style: const TextStyle( fontStyle: FontStyle.italic, diff --git a/lib/modules/tautulli/routes/graphs/widgets/type_button.dart b/lib/modules/tautulli/routes/graphs/widgets/type_button.dart index 24a4ebb2..56ba9525 100644 --- a/lib/modules/tautulli/routes/graphs/widgets/type_button.dart +++ b/lib/modules/tautulli/routes/graphs/widgets/type_button.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/tautulli.dart'; class TautulliGraphsTypeButton extends StatelessWidget { diff --git a/lib/modules/tautulli/routes/history/widgets/history_tile.dart b/lib/modules/tautulli/routes/history/widgets/history_tile.dart index 97bc00a0..8fe6eb91 100644 --- a/lib/modules/tautulli/routes/history/widgets/history_tile.dart +++ b/lib/modules/tautulli/routes/history/widgets/history_tile.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/tautulli.dart'; class TautulliHistoryTile extends StatelessWidget { @@ -51,7 +52,7 @@ class TautulliHistoryTile extends StatelessWidget { TextSpan( children: [ TextSpan(text: 'Season ${history.parentMediaIndex}'), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: 'Episode ${history.mediaIndex}: '), TextSpan( text: history.title, @@ -65,7 +66,7 @@ class TautulliHistoryTile extends StatelessWidget { TextSpan( children: [ TextSpan(text: history.title), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: history.parentTitle), ], ), diff --git a/lib/modules/tautulli/routes/libraries/widgets/library_tile.dart b/lib/modules/tautulli/routes/libraries/widgets/library_tile.dart index 105b6e7a..3f80326a 100644 --- a/lib/modules/tautulli/routes/libraries/widgets/library_tile.dart +++ b/lib/modules/tautulli/routes/libraries/widgets/library_tile.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/tautulli.dart'; class TautulliLibrariesLibraryTile extends StatelessWidget { @@ -20,7 +21,7 @@ class TautulliLibrariesLibraryTile extends StatelessWidget { TextSpan( children: [ TextSpan(text: _plays == 1 ? '1 Play' : '$_plays Plays'), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: library.duration!.lunaTimestampWords), ], ), diff --git a/lib/modules/tautulli/routes/recently_added/widgets/content_tile.dart b/lib/modules/tautulli/routes/recently_added/widgets/content_tile.dart index fb9f6298..b9560465 100644 --- a/lib/modules/tautulli/routes/recently_added/widgets/content_tile.dart +++ b/lib/modules/tautulli/routes/recently_added/widgets/content_tile.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/tautulli.dart'; class TautulliRecentlyAddedContentTile extends StatefulWidget { @@ -72,7 +73,7 @@ class _State extends State { TextSpan( children: [ TextSpan(text: 'S${widget.recentlyAdded.parentMediaIndex}'), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: 'E${widget.recentlyAdded.mediaIndex}: '), TextSpan( text: widget.recentlyAdded.title, @@ -98,7 +99,7 @@ class _State extends State { TextSpan( children: [ TextSpan(text: widget.recentlyAdded.title), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: widget.recentlyAdded.parentTitle), ], ), diff --git a/lib/modules/tautulli/routes/statistics/widgets/type_button.dart b/lib/modules/tautulli/routes/statistics/widgets/type_button.dart index 4f6d9b2f..bc4aa739 100644 --- a/lib/modules/tautulli/routes/statistics/widgets/type_button.dart +++ b/lib/modules/tautulli/routes/statistics/widgets/type_button.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/tautulli.dart'; class TautulliStatisticsTypeButton extends StatelessWidget { diff --git a/lib/modules/tautulli/routes/statistics/widgets/user_tile.dart b/lib/modules/tautulli/routes/statistics/widgets/user_tile.dart index 13ae6384..1cd595b4 100644 --- a/lib/modules/tautulli/routes/statistics/widgets/user_tile.dart +++ b/lib/modules/tautulli/routes/statistics/widgets/user_tile.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/tautulli.dart'; class TautulliStatisticsUserTile extends StatefulWidget { @@ -48,7 +49,7 @@ class _State extends State { : null, ), ), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), widget.data['total_duration'] != null ? TextSpan( text: Duration(seconds: widget.data['total_duration']) diff --git a/lib/modules/tautulli/routes/synced_items/widgets/synced_item_tile.dart b/lib/modules/tautulli/routes/synced_items/widgets/synced_item_tile.dart index a986feae..3942e846 100644 --- a/lib/modules/tautulli/routes/synced_items/widgets/synced_item_tile.dart +++ b/lib/modules/tautulli/routes/synced_items/widgets/synced_item_tile.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/tautulli.dart'; class TautulliSyncedItemTile extends StatelessWidget { @@ -42,9 +43,9 @@ class TautulliSyncedItemTile extends StatelessWidget { return TextSpan( children: [ TextSpan(text: _type.toTitleCase()), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: _count == 1 ? '1 Item' : '$_count Items'), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: _size.lunaBytesToString(decimals: 1)), ], ); @@ -54,9 +55,9 @@ class TautulliSyncedItemTile extends StatelessWidget { return TextSpan( children: [ TextSpan(text: syncedItem.user ?? 'Unknown User'), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: syncedItem.deviceName ?? 'Unknown Device'), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: syncedItem.platform ?? 'Unknown Platform'), ], ); diff --git a/lib/modules/tautulli/routes/users_details/widgets/ip_addresses.dart b/lib/modules/tautulli/routes/users_details/widgets/ip_addresses.dart index f9b40163..c743b43f 100644 --- a/lib/modules/tautulli/routes/users_details/widgets/ip_addresses.dart +++ b/lib/modules/tautulli/routes/users_details/widgets/ip_addresses.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/modules/tautulli.dart'; class TautulliUserDetailsIPAddresses extends StatefulWidget { @@ -93,7 +94,7 @@ class _State extends State TextSpan( children: [ TextSpan(text: record.lastSeen?.lunaAge ?? 'lunasea.Unknown'.tr()), - TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), + TextSpan(text: LunaUI.TEXT_BULLET.pad()), TextSpan(text: _count == 1 ? '1 Play' : '$_count Plays'), ], ), diff --git a/lib/modules/wake_on_lan/api/platform/wake_on_lan_html.dart b/lib/modules/wake_on_lan/api/platform/wake_on_lan_html.dart index 2df63e83..9c2f04f2 100644 --- a/lib/modules/wake_on_lan/api/platform/wake_on_lan_html.dart +++ b/lib/modules/wake_on_lan/api/platform/wake_on_lan_html.dart @@ -1,3 +1,4 @@ +// ignore: always_use_package_imports import '../wake_on_lan.dart'; bool isPlatformSupported() => false; diff --git a/lib/modules/wake_on_lan/api/platform/wake_on_lan_io.dart b/lib/modules/wake_on_lan/api/platform/wake_on_lan_io.dart index 5029aa78..3967b61f 100644 --- a/lib/modules/wake_on_lan/api/platform/wake_on_lan_io.dart +++ b/lib/modules/wake_on_lan/api/platform/wake_on_lan_io.dart @@ -1,9 +1,10 @@ +import 'package:lunasea/core/models/configuration/profile.dart'; +import 'package:lunasea/core/system/profile.dart'; +import 'package:lunasea/widgets/ui.dart'; +import 'package:lunasea/system/logger.dart'; import 'package:wake_on_lan/wake_on_lan.dart'; -import '../../../../core/models/configuration/profile.dart'; -import '../../../../core/system/profile.dart'; -import '../../../../ui/ui.dart'; -import '../../../../core/utilities/logger.dart'; +// ignore: always_use_package_imports import '../wake_on_lan.dart'; bool isPlatformSupported() => true; diff --git a/lib/modules/wake_on_lan/api/platform/wake_on_lan_stub.dart b/lib/modules/wake_on_lan/api/platform/wake_on_lan_stub.dart index 2df63e83..9c2f04f2 100644 --- a/lib/modules/wake_on_lan/api/platform/wake_on_lan_stub.dart +++ b/lib/modules/wake_on_lan/api/platform/wake_on_lan_stub.dart @@ -1,3 +1,4 @@ +// ignore: always_use_package_imports import '../wake_on_lan.dart'; bool isPlatformSupported() => false; diff --git a/lib/modules/wake_on_lan/api/wake_on_lan.dart b/lib/modules/wake_on_lan/api/wake_on_lan.dart index d8ddfe86..afef0541 100644 --- a/lib/modules/wake_on_lan/api/wake_on_lan.dart +++ b/lib/modules/wake_on_lan/api/wake_on_lan.dart @@ -1,3 +1,4 @@ +// ignore: always_use_package_imports import 'platform/wake_on_lan_stub.dart' if (dart.library.io) 'platform/wake_on_lan_io.dart' if (dart.library.html) 'platform/wake_on_lan_html.dart'; diff --git a/lib/system/environment.dart b/lib/system/environment.dart index 0b6386d4..3674f039 100644 --- a/lib/system/environment.dart +++ b/lib/system/environment.dart @@ -1,8 +1,7 @@ import 'package:envify/envify.dart'; - -import '../../core/extensions.dart'; -import '../../vendor.dart'; -import 'flavor.dart'; +import 'package:lunasea/core/extensions.dart'; +import 'package:lunasea/vendor.dart'; +import 'package:lunasea/system/flavor.dart'; part 'environment.g.dart'; diff --git a/lib/system/filesystem/filesystem.dart b/lib/system/filesystem/filesystem.dart index 4c9206c3..654de64f 100644 --- a/lib/system/filesystem/filesystem.dart +++ b/lib/system/filesystem/filesystem.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; +import 'package:lunasea/system/filesystem/file.dart'; -import 'file.dart'; +// ignore: always_use_package_imports import 'platform/filesystem_stub.dart' if (dart.library.io) 'platform/filesystem_io.dart' if (dart.library.html) 'platform/filesystem_html.dart'; diff --git a/lib/system/filesystem/platform/filesystem_html.dart b/lib/system/filesystem/platform/filesystem_html.dart index 5647dd50..88a95e94 100644 --- a/lib/system/filesystem/platform/filesystem_html.dart +++ b/lib/system/filesystem/platform/filesystem_html.dart @@ -1,3 +1,4 @@ +// ignore: always_use_package_imports import '../filesystem.dart'; bool isPlatformSupported() => false; diff --git a/lib/system/filesystem/platform/filesystem_io.dart b/lib/system/filesystem/platform/filesystem_io.dart index db21bb32..a9cf2c1c 100644 --- a/lib/system/filesystem/platform/filesystem_io.dart +++ b/lib/system/filesystem/platform/filesystem_io.dart @@ -5,11 +5,11 @@ import 'package:flutter/foundation.dart'; import 'package:path_provider/path_provider.dart'; import 'package:share_plus/share_plus.dart'; -import '../../../ui/ui.dart'; -import '../../../core/utilities/logger.dart'; -import '../../platform.dart'; -import '../file.dart'; -import '../filesystem.dart'; +import 'package:lunasea/widgets/ui.dart'; +import 'package:lunasea/system/logger.dart'; +import 'package:lunasea/system/platform.dart'; +import 'package:lunasea/system/filesystem/file.dart'; +import 'package:lunasea/system/filesystem/filesystem.dart'; bool isPlatformSupported() { final platform = LunaPlatform(); diff --git a/lib/system/filesystem/platform/filesystem_stub.dart b/lib/system/filesystem/platform/filesystem_stub.dart index 5647dd50..f1817203 100644 --- a/lib/system/filesystem/platform/filesystem_stub.dart +++ b/lib/system/filesystem/platform/filesystem_stub.dart @@ -1,3 +1,5 @@ +// ignore: always_use_package_imports +// ignore: always_use_package_imports import '../filesystem.dart'; bool isPlatformSupported() => false; diff --git a/lib/system/flavor.dart b/lib/system/flavor.dart index 6ec34870..30a14b67 100644 --- a/lib/system/flavor.dart +++ b/lib/system/flavor.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; - -import '../../ui/ui.dart'; +import 'package:lunasea/widgets/ui.dart'; const _EDGE = 'edge'; const _BETA = 'beta'; diff --git a/lib/system/localization.dart b/lib/system/localization.dart index 519b6408..1f0b9c00 100644 --- a/lib/system/localization.dart +++ b/lib/system/localization.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; -import 'package:lunasea/core.dart'; -import 'environment.dart'; -import 'flavor.dart'; +import 'package:lunasea/system/environment.dart'; +import 'package:lunasea/system/flavor.dart'; +import 'package:lunasea/vendor.dart'; class LunaLocalization { static const fileDirectory = 'assets/localization'; diff --git a/lib/core/utilities/logger.dart b/lib/system/logger.dart similarity index 68% rename from lib/core/utilities/logger.dart rename to lib/system/logger.dart index 6100809f..c120bf1d 100644 --- a/lib/core/utilities/logger.dart +++ b/lib/system/logger.dart @@ -5,7 +5,6 @@ import 'package:lunasea/core.dart'; class LunaLogger { static String get checkLogsMessage => 'lunasea.CheckLogsMessage'.tr(); - /// Initialize the logger by setting the timestamp format and capturing errors on [FlutterError.onError]. void initialize() { FlutterError.onError = (details) async { if (kDebugMode) FlutterError.dumpErrorToConsole(details); @@ -14,34 +13,24 @@ class LunaLogger { details.stack ?? StackTrace.current, ); }; - _compactDatabase(); + _compact(); } - /// Compact the logs database. - /// - /// If the logs box has over [count] entries, will only store the latest 100. - Future _compactDatabase([int count = 100]) async { + Future _compact([int count = 100]) async { if (Database.logs.box.keys.length <= count) return; List logs = Database.logs.box.values.toList(); logs.sort((a, b) => (b.timestamp).compareTo(a.timestamp)); logs.skip(count).forEach((log) => log.delete()); } - /// Export all logs, and return the [File] object containing the log file. - Future exportLogs() async { - // Get maps/JSON of all logs - List> logs = []; - Database.logs.box.values.forEach((log) => logs.add(log.toMap())); - // Create a string - JsonEncoder encoder = JsonEncoder.withIndent(' '.repeat(4)); - String data = encoder.convert(logs); - return data; + Future export() async { + final logs = Database.logs.box.values.map((log) => log.toMap()).toList(); + final encoder = JsonEncoder.withIndent(' '.repeat(4)); + return encoder.convert(logs); } - /// Clear all logs currently saved to the database. - Future clearLogs() async => Database.logs.clear(); + Future clear() async => Database.logs.clear(); - /// Log a new debug-level log. void debug(String message) { LunaLogHiveObject log = LunaLogHiveObject.withMessage( type: LunaLogType.WARNING, @@ -50,7 +39,6 @@ class LunaLogger { Database.logs.box.add(log); } - /// Log a new warning-level log. void warning(String className, String methodName, String message) { LunaLogHiveObject log = LunaLogHiveObject.withMessage( type: LunaLogType.WARNING, @@ -61,7 +49,6 @@ class LunaLogger { Database.logs.box.add(log); } - /// Log a new error-level log. void error(String message, dynamic error, StackTrace? stackTrace) { if (error is! NetworkImageLoadException) { LunaLogHiveObject log = LunaLogHiveObject.withError( @@ -79,7 +66,6 @@ class LunaLogger { } } - /// Log a new critical-level log. void critical(dynamic error, StackTrace stackTrace) { if (error is! NetworkImageLoadException) { LunaLogHiveObject log = LunaLogHiveObject.withError( diff --git a/lib/system/network/network.dart b/lib/system/network/network.dart index 69f749cf..da4944b2 100644 --- a/lib/system/network/network.dart +++ b/lib/system/network/network.dart @@ -1,3 +1,4 @@ +// ignore: always_use_package_imports import 'platform/network_stub.dart' if (dart.library.io) 'platform/network_io.dart' if (dart.library.html) 'platform/network_html.dart'; diff --git a/lib/system/network/platform/network_html.dart b/lib/system/network/platform/network_html.dart index ef8a02a1..fda068d3 100644 --- a/lib/system/network/platform/network_html.dart +++ b/lib/system/network/platform/network_html.dart @@ -1,3 +1,4 @@ +// ignore: always_use_package_imports import '../network.dart'; bool isPlatformSupported() => false; diff --git a/lib/system/network/platform/network_io.dart b/lib/system/network/platform/network_io.dart index d01af573..be03c33f 100644 --- a/lib/system/network/platform/network_io.dart +++ b/lib/system/network/platform/network_io.dart @@ -1,7 +1,9 @@ import 'dart:io'; -import '../../../../vendor.dart'; -import '../../../core/database/luna_database.dart'; +import 'package:lunasea/vendor.dart'; +import 'package:lunasea/core/database/luna_database.dart'; + +// ignore: always_use_package_imports import '../network.dart'; bool isPlatformSupported() => true; diff --git a/lib/system/network/platform/network_stub.dart b/lib/system/network/platform/network_stub.dart index ef8a02a1..fda068d3 100644 --- a/lib/system/network/platform/network_stub.dart +++ b/lib/system/network/platform/network_stub.dart @@ -1,3 +1,4 @@ +// ignore: always_use_package_imports import '../network.dart'; bool isPlatformSupported() => false; diff --git a/lib/system/quick_actions/platform/quick_actions_html.dart b/lib/system/quick_actions/platform/quick_actions_html.dart index 2f6cca88..105f943d 100644 --- a/lib/system/quick_actions/platform/quick_actions_html.dart +++ b/lib/system/quick_actions/platform/quick_actions_html.dart @@ -1,3 +1,4 @@ +// ignore: always_use_package_imports import '../quick_actions.dart'; bool isPlatformSupported() => false; diff --git a/lib/system/quick_actions/platform/quick_actions_io.dart b/lib/system/quick_actions/platform/quick_actions_io.dart index 789bca91..b7451f7f 100644 --- a/lib/system/quick_actions/platform/quick_actions_io.dart +++ b/lib/system/quick_actions/platform/quick_actions_io.dart @@ -1,8 +1,9 @@ import 'package:quick_actions/quick_actions.dart'; +import 'package:lunasea/core/database/luna_database.dart'; +import 'package:lunasea/core/modules.dart'; +import 'package:lunasea/system/platform.dart'; -import '../../../core/database/luna_database.dart'; -import '../../../core/modules.dart'; -import '../../platform.dart'; +// ignore: always_use_package_imports import '../quick_actions.dart'; bool isPlatformSupported() => LunaPlatform().isMobile; diff --git a/lib/system/quick_actions/platform/quick_actions_stub.dart b/lib/system/quick_actions/platform/quick_actions_stub.dart index 2f6cca88..105f943d 100644 --- a/lib/system/quick_actions/platform/quick_actions_stub.dart +++ b/lib/system/quick_actions/platform/quick_actions_stub.dart @@ -1,3 +1,4 @@ +// ignore: always_use_package_imports import '../quick_actions.dart'; bool isPlatformSupported() => false; diff --git a/lib/system/quick_actions/quick_actions.dart b/lib/system/quick_actions/quick_actions.dart index 2b9c58b8..9e3798ac 100644 --- a/lib/system/quick_actions/quick_actions.dart +++ b/lib/system/quick_actions/quick_actions.dart @@ -1,3 +1,4 @@ +// ignore: always_use_package_imports import 'platform/quick_actions_stub.dart' if (dart.library.io) 'platform/quick_actions_io.dart' if (dart.library.html) 'platform/quick_actions_html.dart'; diff --git a/lib/system/window_manager/platform/window_manager_html.dart b/lib/system/window_manager/platform/window_manager_html.dart index fd965dbb..929f1e8e 100644 --- a/lib/system/window_manager/platform/window_manager_html.dart +++ b/lib/system/window_manager/platform/window_manager_html.dart @@ -1,3 +1,4 @@ +// ignore: always_use_package_imports import '../window_manager.dart'; bool isPlatformSupported() => false; diff --git a/lib/system/window_manager/platform/window_manager_io.dart b/lib/system/window_manager/platform/window_manager_io.dart index 460b3583..f4e3a66b 100644 --- a/lib/system/window_manager/platform/window_manager_io.dart +++ b/lib/system/window_manager/platform/window_manager_io.dart @@ -1,8 +1,9 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:lunasea/system/platform.dart'; import 'package:window_manager/window_manager.dart'; -import '../../platform.dart'; +// ignore: always_use_package_imports import '../window_manager.dart'; bool isPlatformSupported() => LunaPlatform().isDesktop; diff --git a/lib/system/window_manager/platform/window_manager_stub.dart b/lib/system/window_manager/platform/window_manager_stub.dart index fd965dbb..929f1e8e 100644 --- a/lib/system/window_manager/platform/window_manager_stub.dart +++ b/lib/system/window_manager/platform/window_manager_stub.dart @@ -1,3 +1,4 @@ +// ignore: always_use_package_imports import '../window_manager.dart'; bool isPlatformSupported() => false; diff --git a/lib/system/window_manager/window_manager.dart b/lib/system/window_manager/window_manager.dart index e2c2bd81..ae3fa50b 100644 --- a/lib/system/window_manager/window_manager.dart +++ b/lib/system/window_manager/window_manager.dart @@ -1,3 +1,4 @@ +// ignore: always_use_package_imports import 'platform/window_manager_stub.dart' if (dart.library.io) 'platform/window_manager_io.dart' if (dart.library.html) 'platform/window_manager_html.dart'; diff --git a/lib/utils/encryption.dart b/lib/utils/encryption.dart new file mode 100644 index 00000000..2798f28d --- /dev/null +++ b/lib/utils/encryption.dart @@ -0,0 +1,44 @@ +import 'package:encrypt/encrypt.dart'; + +import 'package:lunasea/system/logger.dart'; +import 'package:lunasea/vendor.dart'; + +class LunaEncryption { + const LunaEncryption._(); + + Key _generateKey(String key) { + const _length = 32; + const _pad = '0'; + String _morphed = (key + key).padRight(_length, _pad).substring(0, _length); + return Key.fromUtf8(_morphed); + } + + IV _generateIV() { + const _length = 16; + return IV.fromLength(_length); + } + + /// Encrypt the unencrypted string [data] using the given encryption [key] + String encrypt(String key, String data) { + try { + final _encrypter = Encrypter(AES(_generateKey(key))); + return _encrypter.encrypt(data, iv: _generateIV()).base64; + } catch (error, stack) { + LunaLogger().error('Failed to encrypt data', error, stack); + rethrow; + } + } + + /// Decrypt the encrypted string [data] using the given encryption [key] + String decrypt(String key, String data) { + try { + final _encrypter = Encrypter(AES(_generateKey(key))); + return _encrypter.decrypt64(data, iv: _generateIV()); + } catch (error, stack) { + LunaLogger().error('Failed to decrypt data', error, stack); + rethrow; + } + } +} + +final encryptionProvider = Provider((_) => const LunaEncryption._()); diff --git a/lib/core/utilities/parser.dart b/lib/utils/parser.dart similarity index 52% rename from lib/core/utilities/parser.dart rename to lib/utils/parser.dart index b5b74722..8ab6945d 100644 --- a/lib/core/utilities/parser.dart +++ b/lib/utils/parser.dart @@ -1,12 +1,8 @@ abstract class LunaParser { - /// Parse any [String] to a [DateTime] object if possible. static DateTime? dateTimeFromString(String? date) { return DateTime.tryParse(date ?? ''); } - /// Take a [DateTime] object and convert it to an ISO 8601 [String] representation. - /// - /// The format is `yyyy-MM-ddTHH:mm:ss.mmmuuuZ`. static String? dateTimeToISO8601(DateTime? date) { return date?.toIso8601String(); } diff --git a/lib/utils/uuid.dart b/lib/utils/uuid.dart new file mode 100644 index 00000000..2d28ea8d --- /dev/null +++ b/lib/utils/uuid.dart @@ -0,0 +1,13 @@ +import 'package:lunasea/vendor.dart'; +import 'package:uuid/uuid.dart'; + +class LunaUUID { + const LunaUUID._(); + final Uuid _generator = const Uuid(); + + String generate() { + return _generator.v4(); + } +} + +final uuidProvider = Provider((_) => const LunaUUID._()); diff --git a/lib/utils/validator.dart b/lib/utils/validator.dart new file mode 100644 index 00000000..b010c88f --- /dev/null +++ b/lib/utils/validator.dart @@ -0,0 +1,12 @@ +import 'package:lunasea/vendor.dart'; + +class LunaValidator { + const LunaValidator._(); + + bool email(String email) { + const regex = r"(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)"; + return RegExp(regex).hasMatch(email); + } +} + +final validatorProvider = Provider((_) => const LunaValidator._()); diff --git a/lib/ui/appbar.dart b/lib/widgets/appbar.dart similarity index 100% rename from lib/ui/appbar.dart rename to lib/widgets/appbar.dart diff --git a/lib/core/assets.dart b/lib/widgets/assets.dart similarity index 100% rename from lib/core/assets.dart rename to lib/widgets/assets.dart diff --git a/lib/ui/banner.dart b/lib/widgets/banner.dart similarity index 100% rename from lib/ui/banner.dart rename to lib/widgets/banner.dart diff --git a/lib/ui/block.dart b/lib/widgets/block.dart similarity index 100% rename from lib/ui/block.dart rename to lib/widgets/block.dart diff --git a/lib/ui/block/block.dart b/lib/widgets/block/block.dart similarity index 100% rename from lib/ui/block/block.dart rename to lib/widgets/block/block.dart diff --git a/lib/ui/block/grid_block.dart b/lib/widgets/block/grid_block.dart similarity index 100% rename from lib/ui/block/grid_block.dart rename to lib/widgets/block/grid_block.dart diff --git a/lib/ui/bottom_bar.dart b/lib/widgets/bottom_bar.dart similarity index 100% rename from lib/ui/bottom_bar.dart rename to lib/widgets/bottom_bar.dart diff --git a/lib/ui/bottom_bar/action_bar.dart b/lib/widgets/bottom_bar/action_bar.dart similarity index 100% rename from lib/ui/bottom_bar/action_bar.dart rename to lib/widgets/bottom_bar/action_bar.dart diff --git a/lib/ui/bottom_bar/action_bar_card.dart b/lib/widgets/bottom_bar/action_bar_card.dart similarity index 100% rename from lib/ui/bottom_bar/action_bar_card.dart rename to lib/widgets/bottom_bar/action_bar_card.dart diff --git a/lib/ui/bottom_bar/badge.dart b/lib/widgets/bottom_bar/badge.dart similarity index 100% rename from lib/ui/bottom_bar/badge.dart rename to lib/widgets/bottom_bar/badge.dart diff --git a/lib/ui/bottom_bar/navigation_bar.dart b/lib/widgets/bottom_bar/navigation_bar.dart similarity index 100% rename from lib/ui/bottom_bar/navigation_bar.dart rename to lib/widgets/bottom_bar/navigation_bar.dart diff --git a/lib/ui/bottom_modal_sheet.dart b/lib/widgets/bottom_modal_sheet.dart similarity index 100% rename from lib/ui/bottom_modal_sheet.dart rename to lib/widgets/bottom_modal_sheet.dart diff --git a/lib/ui/button.dart b/lib/widgets/button.dart similarity index 100% rename from lib/ui/button.dart rename to lib/widgets/button.dart diff --git a/lib/ui/card.dart b/lib/widgets/card.dart similarity index 100% rename from lib/ui/card.dart rename to lib/widgets/card.dart diff --git a/lib/ui/colors.dart b/lib/widgets/colors.dart similarity index 100% rename from lib/ui/colors.dart rename to lib/widgets/colors.dart diff --git a/lib/ui/containers.dart b/lib/widgets/containers.dart similarity index 100% rename from lib/ui/containers.dart rename to lib/widgets/containers.dart diff --git a/lib/ui/containers/button_container.dart b/lib/widgets/containers/button_container.dart similarity index 100% rename from lib/ui/containers/button_container.dart rename to lib/widgets/containers/button_container.dart diff --git a/lib/ui/controllers.dart b/lib/widgets/controllers.dart similarity index 100% rename from lib/ui/controllers.dart rename to lib/widgets/controllers.dart diff --git a/lib/ui/controllers/page_controller.dart b/lib/widgets/controllers/page_controller.dart similarity index 100% rename from lib/ui/controllers/page_controller.dart rename to lib/widgets/controllers/page_controller.dart diff --git a/lib/ui/deprecated.dart b/lib/widgets/deprecated.dart similarity index 100% rename from lib/ui/deprecated.dart rename to lib/widgets/deprecated.dart diff --git a/lib/ui/dialog.dart b/lib/widgets/dialog.dart similarity index 100% rename from lib/ui/dialog.dart rename to lib/widgets/dialog.dart diff --git a/lib/ui/divider.dart b/lib/widgets/divider.dart similarity index 100% rename from lib/ui/divider.dart rename to lib/widgets/divider.dart diff --git a/lib/ui/drawer.dart b/lib/widgets/drawer.dart similarity index 100% rename from lib/ui/drawer.dart rename to lib/widgets/drawer.dart diff --git a/lib/ui/drawer/drawer.dart b/lib/widgets/drawer/drawer.dart similarity index 98% rename from lib/ui/drawer/drawer.dart rename to lib/widgets/drawer/drawer.dart index 8a6fd12a..a0884891 100644 --- a/lib/ui/drawer/drawer.dart +++ b/lib/widgets/drawer/drawer.dart @@ -1,7 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; - -import '../../../modules/wake_on_lan/api/wake_on_lan.dart'; +import 'package:lunasea/modules/wake_on_lan/api/wake_on_lan.dart'; class LunaDrawer extends StatelessWidget { final String page; diff --git a/lib/ui/drawer/drawer_header.dart b/lib/widgets/drawer/drawer_header.dart similarity index 100% rename from lib/ui/drawer/drawer_header.dart rename to lib/widgets/drawer/drawer_header.dart diff --git a/lib/ui/floating_action_button.dart b/lib/widgets/floating_action_button.dart similarity index 100% rename from lib/ui/floating_action_button.dart rename to lib/widgets/floating_action_button.dart diff --git a/lib/ui/floating_action_button/floating_action_button_animated.dart b/lib/widgets/floating_action_button/floating_action_button_animated.dart similarity index 100% rename from lib/ui/floating_action_button/floating_action_button_animated.dart rename to lib/widgets/floating_action_button/floating_action_button_animated.dart diff --git a/lib/ui/floating_action_button/floating_action_button_extended.dart b/lib/widgets/floating_action_button/floating_action_button_extended.dart similarity index 100% rename from lib/ui/floating_action_button/floating_action_button_extended.dart rename to lib/widgets/floating_action_button/floating_action_button_extended.dart diff --git a/lib/ui/grid_view.dart b/lib/widgets/grid_view.dart similarity index 100% rename from lib/ui/grid_view.dart rename to lib/widgets/grid_view.dart diff --git a/lib/ui/grid_view/grid_view_builder.dart b/lib/widgets/grid_view/grid_view_builder.dart similarity index 100% rename from lib/ui/grid_view/grid_view_builder.dart rename to lib/widgets/grid_view/grid_view_builder.dart diff --git a/lib/ui/header.dart b/lib/widgets/header.dart similarity index 100% rename from lib/ui/header.dart rename to lib/widgets/header.dart diff --git a/lib/ui/highlighted_node.dart b/lib/widgets/highlighted_node.dart similarity index 100% rename from lib/ui/highlighted_node.dart rename to lib/widgets/highlighted_node.dart diff --git a/lib/ui/icons.dart b/lib/widgets/icons.dart similarity index 100% rename from lib/ui/icons.dart rename to lib/widgets/icons.dart diff --git a/lib/ui/icons/icon.dart b/lib/widgets/icons/icon.dart similarity index 100% rename from lib/ui/icons/icon.dart rename to lib/widgets/icons/icon.dart diff --git a/lib/ui/icons/icon_brands.dart b/lib/widgets/icons/icon_brands.dart similarity index 100% rename from lib/ui/icons/icon_brands.dart rename to lib/widgets/icons/icon_brands.dart diff --git a/lib/ui/icons/icon_button.dart b/lib/widgets/icons/icon_button.dart similarity index 100% rename from lib/ui/icons/icon_button.dart rename to lib/widgets/icons/icon_button.dart diff --git a/lib/ui/images.dart b/lib/widgets/images.dart similarity index 100% rename from lib/ui/images.dart rename to lib/widgets/images.dart diff --git a/lib/ui/images/network_image.dart b/lib/widgets/images/network_image.dart similarity index 100% rename from lib/ui/images/network_image.dart rename to lib/widgets/images/network_image.dart diff --git a/lib/ui/images/network_image_provider/network_image_provider.dart b/lib/widgets/images/network_image_provider/network_image_provider.dart similarity index 93% rename from lib/ui/images/network_image_provider/network_image_provider.dart rename to lib/widgets/images/network_image_provider/network_image_provider.dart index f4570d02..a9eea403 100644 --- a/lib/ui/images/network_image_provider/network_image_provider.dart +++ b/lib/widgets/images/network_image_provider/network_image_provider.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; +// ignore: always_use_package_imports import 'platform/network_image_provider_stub.dart' if (dart.library.io) 'platform/network_image_provider_io.dart' if (dart.library.html) 'platform/network_image_provider_html.dart'; diff --git a/lib/ui/images/network_image_provider/platform/network_image_provider_html.dart b/lib/widgets/images/network_image_provider/platform/network_image_provider_html.dart similarity index 93% rename from lib/ui/images/network_image_provider/platform/network_image_provider_html.dart rename to lib/widgets/images/network_image_provider/platform/network_image_provider_html.dart index 25d3cbcb..99b32fe0 100644 --- a/lib/ui/images/network_image_provider/platform/network_image_provider_html.dart +++ b/lib/widgets/images/network_image_provider/platform/network_image_provider_html.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; +// ignore: always_use_package_imports import '../network_image_provider.dart'; LunaNetworkImageProvider getNetworkImageProvider({ diff --git a/lib/ui/images/network_image_provider/platform/network_image_provider_io.dart b/lib/widgets/images/network_image_provider/platform/network_image_provider_io.dart similarity index 89% rename from lib/ui/images/network_image_provider/platform/network_image_provider_io.dart rename to lib/widgets/images/network_image_provider/platform/network_image_provider_io.dart index 965b3f91..a3ed3366 100644 --- a/lib/ui/images/network_image_provider/platform/network_image_provider_io.dart +++ b/lib/widgets/images/network_image_provider/platform/network_image_provider_io.dart @@ -1,7 +1,8 @@ import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; +import 'package:lunasea/core/cache/image_cache/image_cache.dart'; -import '../../../../core/cache/image_cache/image_cache.dart'; +// ignore: always_use_package_imports import '../network_image_provider.dart'; LunaNetworkImageProvider getNetworkImageProvider({ diff --git a/lib/ui/images/network_image_provider/platform/network_image_provider_stub.dart b/lib/widgets/images/network_image_provider/platform/network_image_provider_stub.dart similarity index 85% rename from lib/ui/images/network_image_provider/platform/network_image_provider_stub.dart rename to lib/widgets/images/network_image_provider/platform/network_image_provider_stub.dart index 19e686e7..d5165bdc 100644 --- a/lib/ui/images/network_image_provider/platform/network_image_provider_stub.dart +++ b/lib/widgets/images/network_image_provider/platform/network_image_provider_stub.dart @@ -1,3 +1,4 @@ +// ignore: always_use_package_imports import '../network_image_provider.dart'; LunaNetworkImageProvider getNetworkImageProvider({ diff --git a/lib/ui/input_bar.dart b/lib/widgets/input_bar.dart similarity index 100% rename from lib/ui/input_bar.dart rename to lib/widgets/input_bar.dart diff --git a/lib/ui/linear_indicator.dart b/lib/widgets/linear_indicator.dart similarity index 100% rename from lib/ui/linear_indicator.dart rename to lib/widgets/linear_indicator.dart diff --git a/lib/ui/list_tile.dart b/lib/widgets/list_tile.dart similarity index 100% rename from lib/ui/list_tile.dart rename to lib/widgets/list_tile.dart diff --git a/lib/ui/list_tile/expandable_list_tile.dart b/lib/widgets/list_tile/expandable_list_tile.dart similarity index 100% rename from lib/ui/list_tile/expandable_list_tile.dart rename to lib/widgets/list_tile/expandable_list_tile.dart diff --git a/lib/ui/list_tile/list_tile.dart b/lib/widgets/list_tile/list_tile.dart similarity index 100% rename from lib/ui/list_tile/list_tile.dart rename to lib/widgets/list_tile/list_tile.dart diff --git a/lib/ui/list_view.dart b/lib/widgets/list_view.dart similarity index 100% rename from lib/ui/list_view.dart rename to lib/widgets/list_view.dart diff --git a/lib/ui/list_view/flutter_reorderable_list_view.dart b/lib/widgets/list_view/flutter_reorderable_list_view.dart similarity index 100% rename from lib/ui/list_view/flutter_reorderable_list_view.dart rename to lib/widgets/list_view/flutter_reorderable_list_view.dart diff --git a/lib/ui/list_view/list_view.dart b/lib/widgets/list_view/list_view.dart similarity index 100% rename from lib/ui/list_view/list_view.dart rename to lib/widgets/list_view/list_view.dart diff --git a/lib/ui/list_view/list_view_builder.dart b/lib/widgets/list_view/list_view_builder.dart similarity index 100% rename from lib/ui/list_view/list_view_builder.dart rename to lib/widgets/list_view/list_view_builder.dart diff --git a/lib/ui/list_view/list_view_modal.dart b/lib/widgets/list_view/list_view_modal.dart similarity index 100% rename from lib/ui/list_view/list_view_modal.dart rename to lib/widgets/list_view/list_view_modal.dart diff --git a/lib/ui/list_view/list_view_modal_builder.dart b/lib/widgets/list_view/list_view_modal_builder.dart similarity index 100% rename from lib/ui/list_view/list_view_modal_builder.dart rename to lib/widgets/list_view/list_view_modal_builder.dart diff --git a/lib/ui/list_view/paged_list_view.dart b/lib/widgets/list_view/paged_list_view.dart similarity index 100% rename from lib/ui/list_view/paged_list_view.dart rename to lib/widgets/list_view/paged_list_view.dart diff --git a/lib/ui/list_view/reorderable_list_view.dart b/lib/widgets/list_view/reorderable_list_view.dart similarity index 94% rename from lib/ui/list_view/reorderable_list_view.dart rename to lib/widgets/list_view/reorderable_list_view.dart index 26c48d22..11dd67fa 100644 --- a/lib/ui/list_view/reorderable_list_view.dart +++ b/lib/widgets/list_view/reorderable_list_view.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; -import './flutter_reorderable_list_view.dart'; +import 'package:lunasea/widgets/list_view/flutter_reorderable_list_view.dart'; class LunaReorderableListView extends StatelessWidget { final List children; diff --git a/lib/ui/list_view/reorderable_list_view_builder.dart b/lib/widgets/list_view/reorderable_list_view_builder.dart similarity index 94% rename from lib/ui/list_view/reorderable_list_view_builder.dart rename to lib/widgets/list_view/reorderable_list_view_builder.dart index db551794..51f170ac 100644 --- a/lib/ui/list_view/reorderable_list_view_builder.dart +++ b/lib/widgets/list_view/reorderable_list_view_builder.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; -import './flutter_reorderable_list_view.dart'; +import 'package:lunasea/widgets/list_view/flutter_reorderable_list_view.dart'; class LunaReorderableListViewBuilder extends StatelessWidget { final int itemCount; diff --git a/lib/ui/list_view/reorderable_list_view_dragger.dart b/lib/widgets/list_view/reorderable_list_view_dragger.dart similarity index 100% rename from lib/ui/list_view/reorderable_list_view_dragger.dart rename to lib/widgets/list_view/reorderable_list_view_dragger.dart diff --git a/lib/ui/loader.dart b/lib/widgets/loader.dart similarity index 100% rename from lib/ui/loader.dart rename to lib/widgets/loader.dart diff --git a/lib/ui/message.dart b/lib/widgets/message.dart similarity index 100% rename from lib/ui/message.dart rename to lib/widgets/message.dart diff --git a/lib/ui/mixins.dart b/lib/widgets/mixins.dart similarity index 100% rename from lib/ui/mixins.dart rename to lib/widgets/mixins.dart diff --git a/lib/ui/mixins/load_callback.dart b/lib/widgets/mixins/load_callback.dart similarity index 100% rename from lib/ui/mixins/load_callback.dart rename to lib/widgets/mixins/load_callback.dart diff --git a/lib/ui/mixins/scroll_controller.dart b/lib/widgets/mixins/scroll_controller.dart similarity index 100% rename from lib/ui/mixins/scroll_controller.dart rename to lib/widgets/mixins/scroll_controller.dart diff --git a/lib/ui/page_view.dart b/lib/widgets/page_view.dart similarity index 100% rename from lib/ui/page_view.dart rename to lib/widgets/page_view.dart diff --git a/lib/ui/popup_menu_button.dart b/lib/widgets/popup_menu_button.dart similarity index 100% rename from lib/ui/popup_menu_button.dart rename to lib/widgets/popup_menu_button.dart diff --git a/lib/ui/refresh_indicator.dart b/lib/widgets/refresh_indicator.dart similarity index 100% rename from lib/ui/refresh_indicator.dart rename to lib/widgets/refresh_indicator.dart diff --git a/lib/ui/scaffold.dart b/lib/widgets/scaffold.dart similarity index 100% rename from lib/ui/scaffold.dart rename to lib/widgets/scaffold.dart diff --git a/lib/ui/scroll_behaviour.dart b/lib/widgets/scroll_behaviour.dart similarity index 100% rename from lib/ui/scroll_behaviour.dart rename to lib/widgets/scroll_behaviour.dart diff --git a/lib/ui/shape.dart b/lib/widgets/shape.dart similarity index 100% rename from lib/ui/shape.dart rename to lib/widgets/shape.dart diff --git a/lib/ui/shimmer.dart b/lib/widgets/shimmer.dart similarity index 100% rename from lib/ui/shimmer.dart rename to lib/widgets/shimmer.dart diff --git a/lib/ui/snackbar.dart b/lib/widgets/snackbar.dart similarity index 100% rename from lib/ui/snackbar.dart rename to lib/widgets/snackbar.dart diff --git a/lib/ui/snackbar/snackbar.dart b/lib/widgets/snackbar/snackbar.dart similarity index 100% rename from lib/ui/snackbar/snackbar.dart rename to lib/widgets/snackbar/snackbar.dart diff --git a/lib/ui/snackbar/snackbar_error.dart b/lib/widgets/snackbar/snackbar_error.dart similarity index 100% rename from lib/ui/snackbar/snackbar_error.dart rename to lib/widgets/snackbar/snackbar_error.dart diff --git a/lib/ui/snackbar/snackbar_info.dart b/lib/widgets/snackbar/snackbar_info.dart similarity index 83% rename from lib/ui/snackbar/snackbar_info.dart rename to lib/widgets/snackbar/snackbar_info.dart index c9642780..59ad7066 100644 --- a/lib/ui/snackbar/snackbar_info.dart +++ b/lib/widgets/snackbar/snackbar_info.dart @@ -1,3 +1,4 @@ +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/core.dart'; Future showLunaInfoSnackBar({ @@ -9,7 +10,7 @@ Future showLunaInfoSnackBar({ }) async => showLunaSnackBar( title: title, - message: lunaSafeString(message), + message: message.uiSafe(), type: LunaSnackbarType.INFO, showButton: showButton, buttonText: buttonText, diff --git a/lib/ui/snackbar/snackbar_success.dart b/lib/widgets/snackbar/snackbar_success.dart similarity index 83% rename from lib/ui/snackbar/snackbar_success.dart rename to lib/widgets/snackbar/snackbar_success.dart index a7f1c53d..61f9e9a7 100644 --- a/lib/ui/snackbar/snackbar_success.dart +++ b/lib/widgets/snackbar/snackbar_success.dart @@ -1,3 +1,4 @@ +import 'package:lunasea/extensions/string.dart'; import 'package:lunasea/core.dart'; Future showLunaSuccessSnackBar({ @@ -9,7 +10,7 @@ Future showLunaSuccessSnackBar({ }) async => showLunaSnackBar( title: title, - message: lunaSafeString(message), + message: message.uiSafe(), type: LunaSnackbarType.SUCCESS, showButton: showButton, buttonText: buttonText, diff --git a/lib/ui/switch.dart b/lib/widgets/switch.dart similarity index 100% rename from lib/ui/switch.dart rename to lib/widgets/switch.dart diff --git a/lib/ui/table.dart b/lib/widgets/table.dart similarity index 100% rename from lib/ui/table.dart rename to lib/widgets/table.dart diff --git a/lib/ui/table/table_card.dart b/lib/widgets/table/table_card.dart similarity index 100% rename from lib/ui/table/table_card.dart rename to lib/widgets/table/table_card.dart diff --git a/lib/ui/table/table_content.dart b/lib/widgets/table/table_content.dart similarity index 98% rename from lib/ui/table/table_content.dart rename to lib/widgets/table/table_content.dart index fd91c301..b5d91ad0 100644 --- a/lib/ui/table/table_content.dart +++ b/lib/widgets/table/table_content.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lunasea/core.dart'; +import 'package:lunasea/extensions/string.dart'; enum _Type { CONTENT, diff --git a/lib/ui/text.dart b/lib/widgets/text.dart similarity index 100% rename from lib/ui/text.dart rename to lib/widgets/text.dart diff --git a/lib/ui/text_span.dart b/lib/widgets/text_span.dart similarity index 100% rename from lib/ui/text_span.dart rename to lib/widgets/text_span.dart diff --git a/lib/ui/text_style.dart b/lib/widgets/text_style.dart similarity index 100% rename from lib/ui/text_style.dart rename to lib/widgets/text_style.dart diff --git a/lib/ui/theme.dart b/lib/widgets/theme.dart similarity index 100% rename from lib/ui/theme.dart rename to lib/widgets/theme.dart diff --git a/lib/ui/ui.dart b/lib/widgets/ui.dart similarity index 99% rename from lib/ui/ui.dart rename to lib/widgets/ui.dart index c421dd5a..935d2750 100644 --- a/lib/ui/ui.dart +++ b/lib/widgets/ui.dart @@ -4,6 +4,7 @@ import 'package:lunasea/core.dart'; export 'package:easy_localization/easy_localization.dart'; export 'appbar.dart'; +export 'assets.dart'; export 'banner.dart'; export 'block.dart'; export 'bottom_bar.dart'; diff --git a/lib/ui/will_pop_scope.dart b/lib/widgets/will_pop_scope.dart similarity index 100% rename from lib/ui/will_pop_scope.dart rename to lib/widgets/will_pop_scope.dart diff --git a/localization/lunasea/en.json b/localization/lunasea/en.json index 2feb11c1..81d3c03e 100644 --- a/localization/lunasea/en.json +++ b/localization/lunasea/en.json @@ -17,6 +17,8 @@ "lunasea.Clear": "Clear", "lunasea.Close": "Close", "lunasea.ComingSoon": "Coming Soon", + "lunasea.Copied": "Copied", + "lunasea.CopiedContentToTheClipboard": "Copied Content to the Clipboard", "lunasea.Dashboard": "Dashboard", "lunasea.DaysAgo": "{} Days Ago", "lunasea.Delete": "Delete", diff --git a/package.json b/package.json index ec8e64e8..01d6cfc6 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "generate:localization": "dart ./scripts/generate_localization.dart", "git:ignore": "npm run git:ignore:environment && npm run git:ignore:firebase", "git:ignore:environment": "git update-index --skip-worktree .env", - "git:ignore:firebase": "git update-index --skip-worktree lib/firebase_options.dart", + "git:ignore:firebase": "git update-index --skip-worktree lib/firebase/options.dart", "prepare": "husky install && npm run git:ignore && flutter pub get", "prepare:keychain": "npm run prepare:keychain:ios && npm run prepare:keychain:macos", "prepare:keychain:ios": "cd ios && bundle exec fastlane keychain_create && bundle exec fastlane keychain_setup", diff --git a/pubspec.lock b/pubspec.lock index 4b2261e3..c67a8fab 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1322,7 +1322,7 @@ packages: name: url_launcher url: "https://pub.dartlang.org" source: hosted - version: "6.0.20" + version: "6.1.1" url_launcher_android: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 6b381943..05409892 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -55,7 +55,7 @@ dependencies: table_calendar: ^3.0.5 transparent_image: ^2.0.0 tuple: ^2.0.0 - url_launcher: ^6.0.20 + url_launcher: ^6.1.1 uuid: ^3.0.6 wake_on_lan: ^3.0.0 window_manager: ^0.2.1