├── .gitignore ├── README.md ├── lunasea-cloud-functions ├── .firebaserc ├── .gitignore ├── README.md ├── firebase.json └── functions │ ├── .eslintignore │ ├── .eslintrc.js │ ├── .gitignore │ ├── .prettierignore │ ├── .prettierrc.json │ ├── package-lock.json │ ├── package.json │ ├── src │ ├── controllers │ │ ├── delete_user.ts │ │ └── index.ts │ ├── index.ts │ └── services │ │ ├── firestore │ │ ├── delete_user.ts │ │ └── index.ts │ │ ├── index.ts │ │ └── storage │ │ ├── delete_user.ts │ │ └── index.ts │ ├── tsconfig.dev.json │ └── tsconfig.json ├── lunasea-docs ├── .gitbook │ └── assets │ │ ├── background.png │ │ ├── firebase_crashlytics_example (1).png │ │ ├── firebase_crashlytics_example.png │ │ ├── img_1184.jpg │ │ ├── lidarr_notification_example (1).png │ │ ├── lidarr_notification_example.png │ │ ├── overseerr_notification_example.png │ │ ├── overseerr_notification_sample_v2 (1).png │ │ ├── overseerr_notification_sample_v2.png │ │ ├── radarr_notification_example (1).png │ │ ├── radarr_notification_example.png │ │ ├── sonarr_notification_example (1).png │ │ └── sonarr_notification_example.png ├── README.md ├── SUMMARY.md ├── getting-started │ ├── build-channels.md │ ├── donations.md │ ├── frequently-asked-questions.md │ └── platform-restrictions.md ├── lunasea │ ├── cloud-account.md │ ├── local-backup-and-restore.md │ ├── logs.md │ ├── notifications │ │ ├── README.md │ │ ├── custom-notifications.md │ │ ├── lidarr.md │ │ ├── overseerr.md │ │ ├── radarr.md │ │ ├── sonarr.md │ │ └── tautulli.md │ └── profiles.md ├── modules │ ├── lidarr.md │ ├── newznab-search.md │ ├── nzbget.md │ ├── overseerr.md │ ├── radarr.md │ ├── sabnzbd.md │ ├── sonarr.md │ ├── tautulli.md │ └── wake-on-lan.md └── releases │ ├── android.md │ ├── ios.md │ ├── linux.md │ ├── macos.md │ ├── web.md │ └── windows.md ├── lunasea-notification-service ├── .dockerignore ├── .env.sample ├── .eslintignore ├── .eslintrc.json ├── .github │ └── workflows │ │ └── build.yaml ├── .gitignore ├── .husky │ ├── .gitignore │ └── pre-commit ├── .npmrc ├── .prettierignore ├── .prettierrc.json ├── .vscode │ └── settings.json ├── Dockerfile ├── LICENSE ├── README.md ├── nodemon.json ├── package-lock.json ├── package.json ├── src │ ├── api │ │ ├── fanart_tv │ │ │ └── index.ts │ │ ├── index.ts │ │ └── the_movie_db │ │ │ ├── api.ts │ │ │ ├── cache.ts │ │ │ ├── index.ts │ │ │ └── models.ts │ ├── index.ts │ ├── modules │ │ ├── custom │ │ │ ├── controller.ts │ │ │ └── index.ts │ │ ├── index.ts │ │ ├── lidarr │ │ │ ├── controller.ts │ │ │ ├── index.ts │ │ │ ├── models.ts │ │ │ └── payloads.ts │ │ ├── overseerr │ │ │ ├── controller.ts │ │ │ ├── index.ts │ │ │ ├── models.ts │ │ │ └── payloads.ts │ │ ├── radarr │ │ │ ├── controller.ts │ │ │ ├── index.ts │ │ │ ├── models.ts │ │ │ └── payloads.ts │ │ ├── sonarr │ │ │ ├── controller.ts │ │ │ ├── index.ts │ │ │ ├── models.ts │ │ │ └── payloads.ts │ │ └── tautulli │ │ │ ├── controller.ts │ │ │ ├── index.ts │ │ │ ├── models.ts │ │ │ └── payloads.ts │ ├── server │ │ ├── index.ts │ │ ├── middleware.ts │ │ ├── models.ts │ │ └── server.ts │ ├── services │ │ ├── firebase │ │ │ ├── cache.ts │ │ │ └── index.ts │ │ ├── index.ts │ │ └── redis │ │ │ └── index.ts │ └── utils │ │ ├── constants.ts │ │ ├── environment.ts │ │ ├── index.ts │ │ ├── logger.ts │ │ └── notifications.ts └── tsconfig.json └── lunasea ├── .commitlintrc ├── .czrc ├── .dockerignore ├── .firebaserc ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug-report.md │ ├── config.yml │ └── other.md ├── actions │ ├── prepare_for_build │ │ └── action.yml │ └── prepare_for_deployment │ │ └── action.yml ├── scripts │ └── notify_discord_embed.js └── workflows │ ├── build.yml │ ├── build_android.yml │ ├── build_ios.yml │ ├── build_linux.yml │ ├── build_macos.yml │ ├── build_web.yml │ ├── build_windows.yml │ └── prepare.yml ├── .gitignore ├── .husky ├── commit-msg └── prepare-commit-msg ├── .metadata ├── .prettierignore ├── .ruby-version ├── .versionrc ├── .vscode └── launch.json ├── CHANGELOG.md ├── Dockerfile ├── LICENSE.md ├── README.md ├── analysis_options.yaml ├── android ├── .gitignore ├── Gemfile ├── Gemfile.lock ├── app │ ├── build.gradle │ └── src │ │ ├── debug │ │ └── AndroidManifest.xml │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── kotlin │ │ │ └── app │ │ │ │ └── lunasea │ │ │ │ └── lunasea │ │ │ │ └── MainActivity.kt │ │ └── res │ │ │ ├── drawable-hdpi │ │ │ ├── notification.png │ │ │ └── splash.png │ │ │ ├── drawable-mdpi │ │ │ ├── notification.png │ │ │ └── splash.png │ │ │ ├── drawable-v21 │ │ │ ├── background.png │ │ │ └── launch_background.xml │ │ │ ├── drawable-xhdpi │ │ │ ├── notification.png │ │ │ └── splash.png │ │ │ ├── drawable-xxhdpi │ │ │ ├── notification.png │ │ │ └── splash.png │ │ │ ├── drawable-xxxhdpi │ │ │ ├── notification.png │ │ │ └── splash.png │ │ │ ├── drawable │ │ │ ├── background.png │ │ │ ├── ic_launcher_foreground.xml │ │ │ ├── ic_launcher_monochrome.xml │ │ │ ├── ic_notification.xml │ │ │ └── launch_background.xml │ │ │ ├── mipmap-anydpi-v26 │ │ │ └── ic_launcher.xml │ │ │ ├── mipmap-hdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-mdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── values-v31 │ │ │ └── styles.xml │ │ │ └── values │ │ │ ├── colors.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ └── profile │ │ └── AndroidManifest.xml ├── build.gradle ├── fastlane │ ├── Appfile │ ├── Fastfile │ └── README.md ├── gradle.properties ├── gradle │ └── wrapper │ │ └── gradle-wrapper.properties ├── key.properties.sample ├── settings.gradle └── settings_aar.gradle ├── assets ├── LunaBrandIcons.ttf ├── changelog.json ├── changelog_stable.json ├── icon │ ├── icon.png │ ├── icon_adaptive.png │ ├── icon_linux.png │ ├── icon_web.png │ └── icon_windows.png ├── images │ ├── branding_full.png │ ├── branding_logo.png │ └── brands │ │ ├── config.json │ │ ├── lidarr.svg │ │ ├── musicbrainz.svg │ │ ├── nzbget.svg │ │ ├── overseerr.svg │ │ ├── radarr.svg │ │ ├── sabnzbd.svg │ │ ├── sonarr.svg │ │ ├── tautulli.svg │ │ ├── thetvdb.svg │ │ └── tvmaze.svg └── localization │ ├── ca.json │ ├── de.json │ ├── el.json │ ├── en.json │ ├── es.json │ ├── fr.json │ ├── hr.json │ ├── hu.json │ ├── it.json │ ├── nb-NO.json │ ├── nb.json │ ├── nl.json │ ├── pt.json │ ├── ro.json │ ├── ru.json │ ├── sk.json │ ├── sv.json │ ├── tr.json │ ├── vi.json │ ├── zh-Hans.json │ └── zh.json ├── build.yaml ├── debian ├── DEBIAN │ ├── control │ ├── postinst │ └── postrm └── usr │ └── share │ ├── applications │ └── lunasea.desktop │ └── icons │ └── lunasea.png ├── environment_config.yaml ├── ios ├── .gitignore ├── Flutter │ ├── AppFrameworkInfo.plist │ ├── Debug.xcconfig │ └── Release.xcconfig ├── Gemfile ├── Gemfile.lock ├── Podfile ├── Podfile.lock ├── Runner.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── xcshareddata │ │ └── xcschemes │ │ └── Runner.xcscheme ├── Runner.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── Runner │ ├── AppDelegate.swift │ ├── Assets.xcassets │ │ ├── AppIcon.appiconset │ │ │ ├── Contents.json │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ ├── Icon-App-20x20@1x.png │ │ │ ├── Icon-App-20x20@2x.png │ │ │ ├── Icon-App-20x20@3x.png │ │ │ ├── Icon-App-29x29@1x.png │ │ │ ├── Icon-App-29x29@2x.png │ │ │ ├── Icon-App-29x29@3x.png │ │ │ ├── Icon-App-40x40@1x.png │ │ │ ├── Icon-App-40x40@2x.png │ │ │ ├── Icon-App-40x40@3x.png │ │ │ ├── Icon-App-50x50@1x.png │ │ │ ├── Icon-App-50x50@2x.png │ │ │ ├── Icon-App-57x57@1x.png │ │ │ ├── Icon-App-57x57@2x.png │ │ │ ├── Icon-App-60x60@2x.png │ │ │ ├── Icon-App-60x60@3x.png │ │ │ ├── Icon-App-72x72@1x.png │ │ │ ├── Icon-App-72x72@2x.png │ │ │ ├── Icon-App-76x76@1x.png │ │ │ ├── Icon-App-76x76@2x.png │ │ │ └── Icon-App-83.5x83.5@2x.png │ │ ├── LaunchBackground.imageset │ │ │ ├── Contents.json │ │ │ └── background.png │ │ └── LaunchImage.imageset │ │ │ ├── Contents.json │ │ │ ├── LaunchImage.png │ │ │ ├── LaunchImage@2x.png │ │ │ ├── LaunchImage@3x.png │ │ │ └── README.md │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── Info.plist │ ├── Runner-Bridging-Header.h │ └── Runner.entitlements └── fastlane │ ├── Appfile │ ├── Fastfile │ ├── Matchfile │ └── README.md ├── lib ├── api │ ├── nzbget │ │ ├── api.dart │ │ └── models │ │ │ ├── status.dart │ │ │ └── version.dart │ ├── radarr │ │ ├── commands.dart │ │ ├── commands │ │ │ ├── command.dart │ │ │ ├── command │ │ │ │ ├── backup.dart │ │ │ │ ├── downloaded_movies_scan.dart │ │ │ │ ├── manual_import.dart │ │ │ │ ├── missing_movie_search.dart │ │ │ │ ├── movies_search.dart │ │ │ │ ├── refresh_monitored_downloads.dart │ │ │ │ ├── refresh_movie.dart │ │ │ │ └── rss_sync.dart │ │ │ ├── credits.dart │ │ │ ├── credits │ │ │ │ └── get_credits.dart │ │ │ ├── exclusions.dart │ │ │ ├── exclusions │ │ │ │ ├── get_all_exclusions.dart │ │ │ │ └── get_exclusion.dart │ │ │ ├── extra_file.dart │ │ │ ├── extra_file │ │ │ │ └── get_extra_files.dart │ │ │ ├── filesystem.dart │ │ │ ├── filesystem │ │ │ │ ├── get_all_disk_spaces.dart │ │ │ │ └── get_filesystem.dart │ │ │ ├── health_check.dart │ │ │ ├── health_check │ │ │ │ └── get_all_health_checks.dart │ │ │ ├── history.dart │ │ │ ├── history │ │ │ │ ├── get_history.dart │ │ │ │ └── get_movie_history.dart │ │ │ ├── import_list.dart │ │ │ ├── import_list │ │ │ │ ├── get_all_import_lists.dart │ │ │ │ ├── get_import_list.dart │ │ │ │ └── get_movies_from_list.dart │ │ │ ├── language.dart │ │ │ ├── language │ │ │ │ ├── get_all_languages.dart │ │ │ │ └── get_language.dart │ │ │ ├── manual_import.dart │ │ │ ├── manual_import │ │ │ │ ├── get_manual_import.dart │ │ │ │ └── update_manual_import.dart │ │ │ ├── movie.dart │ │ │ ├── movie │ │ │ │ ├── add_movie.dart │ │ │ │ ├── delete_movie.dart │ │ │ │ ├── get_all_movies.dart │ │ │ │ ├── get_movie.dart │ │ │ │ └── update_movie.dart │ │ │ ├── movie_file.dart │ │ │ ├── movie_file │ │ │ │ ├── delete_movie_file.dart │ │ │ │ └── get_movie_file.dart │ │ │ ├── movie_lookup.dart │ │ │ ├── movie_lookup │ │ │ │ └── get_movie_lookup.dart │ │ │ ├── quality_profile.dart │ │ │ ├── quality_profile │ │ │ │ ├── get_all_quality_profiles.dart │ │ │ │ ├── get_quality_definitions.dart │ │ │ │ └── get_quality_profile.dart │ │ │ ├── queue.dart │ │ │ ├── queue │ │ │ │ ├── delete_queue.dart │ │ │ │ ├── get_queue.dart │ │ │ │ └── get_queue_status.dart │ │ │ ├── release.dart │ │ │ ├── release │ │ │ │ ├── get_releases.dart │ │ │ │ └── push_release.dart │ │ │ ├── root_folder.dart │ │ │ ├── root_folder │ │ │ │ └── get_root_folders.dart │ │ │ ├── system.dart │ │ │ ├── system │ │ │ │ └── get_status.dart │ │ │ ├── tag.dart │ │ │ └── tag │ │ │ │ ├── add_tag.dart │ │ │ │ ├── delete_tag.dart │ │ │ │ ├── get_all_tags.dart │ │ │ │ ├── get_tag.dart │ │ │ │ └── update_tag.dart │ │ ├── models.dart │ │ ├── models │ │ │ ├── command │ │ │ │ ├── command.dart │ │ │ │ └── command_body.dart │ │ │ ├── custom_format │ │ │ │ ├── custom_format.dart │ │ │ │ └── custom_format_specifications.dart │ │ │ ├── exclusions │ │ │ │ └── exclusion.dart │ │ │ ├── extrafile │ │ │ │ └── extra_file.dart │ │ │ ├── filesystem │ │ │ │ ├── directory.dart │ │ │ │ ├── disk_space.dart │ │ │ │ ├── file.dart │ │ │ │ └── filesystem.dart │ │ │ ├── health_check │ │ │ │ └── health_check.dart │ │ │ ├── history │ │ │ │ ├── history.dart │ │ │ │ └── history_record.dart │ │ │ ├── image │ │ │ │ └── image.dart │ │ │ ├── import_list │ │ │ │ └── import_list.dart │ │ │ ├── manual_import │ │ │ │ ├── manual_import.dart │ │ │ │ ├── manual_import_file.dart │ │ │ │ ├── manual_import_rejection.dart │ │ │ │ ├── manual_import_update.dart │ │ │ │ └── manual_import_update_data.dart │ │ │ ├── movie │ │ │ │ ├── alternate_titles.dart │ │ │ │ ├── collection.dart │ │ │ │ ├── credits.dart │ │ │ │ ├── movie.dart │ │ │ │ ├── movie_file.dart │ │ │ │ ├── movie_file_media_info.dart │ │ │ │ ├── movie_file_quality.dart │ │ │ │ └── rating.dart │ │ │ ├── quality_profile │ │ │ │ ├── format_item.dart │ │ │ │ ├── item.dart │ │ │ │ ├── language.dart │ │ │ │ ├── quality.dart │ │ │ │ ├── quality_definition.dart │ │ │ │ ├── quality_profile.dart │ │ │ │ └── quality_revision.dart │ │ │ ├── queue │ │ │ │ ├── queue.dart │ │ │ │ ├── queue_record.dart │ │ │ │ ├── queue_status.dart │ │ │ │ └── queue_status_message.dart │ │ │ ├── release │ │ │ │ └── release.dart │ │ │ ├── root_folder │ │ │ │ ├── root_folder.dart │ │ │ │ └── unmapped_folder.dart │ │ │ ├── system │ │ │ │ └── status.dart │ │ │ └── tag │ │ │ │ └── tag.dart │ │ ├── radarr.dart │ │ ├── types.dart │ │ ├── types │ │ │ ├── availability.dart │ │ │ ├── credit_type.dart │ │ │ ├── event_type.dart │ │ │ ├── filesystem_type.dart │ │ │ ├── health_check_type.dart │ │ │ ├── history_sort_key.dart │ │ │ ├── import_mode.dart │ │ │ ├── protocol_type.dart │ │ │ ├── queue_record_status.dart │ │ │ ├── queue_sort_key.dart │ │ │ ├── sort_direction.dart │ │ │ ├── tracked_download_state.dart │ │ │ └── tracked_download_status.dart │ │ └── utilities.dart │ ├── sabnzbd │ │ ├── api.dart │ │ ├── models │ │ │ ├── action_result.dart │ │ │ ├── categories.dart │ │ │ ├── history.dart │ │ │ ├── queue.dart │ │ │ ├── server.dart │ │ │ ├── server_stats.dart │ │ │ ├── stage_log.dart │ │ │ ├── status.dart │ │ │ └── version.dart │ │ └── types │ │ │ ├── action.dart │ │ │ ├── clear_history.dart │ │ │ ├── on_complete_action.dart │ │ │ ├── post_processing.dart │ │ │ ├── priority.dart │ │ │ ├── sort_category.dart │ │ │ └── sort_direction.dart │ ├── sonarr │ │ ├── controllers.dart │ │ ├── controllers │ │ │ ├── calendar.dart │ │ │ ├── calendar │ │ │ │ └── get_calendar.dart │ │ │ ├── command.dart │ │ │ ├── command │ │ │ │ ├── backup.dart │ │ │ │ ├── episode_search.dart │ │ │ │ ├── missing_episode_search.dart │ │ │ │ ├── queue.dart │ │ │ │ ├── refresh_monitored_downloads.dart │ │ │ │ ├── refresh_series.dart │ │ │ │ ├── rescan_series.dart │ │ │ │ ├── rss_sync.dart │ │ │ │ ├── season_search.dart │ │ │ │ └── series_search.dart │ │ │ ├── episode.dart │ │ │ ├── episode │ │ │ │ ├── get_episode.dart │ │ │ │ ├── get_episodes.dart │ │ │ │ ├── set_monitored.dart │ │ │ │ └── update_episode.dart │ │ │ ├── episode_file.dart │ │ │ ├── episode_file │ │ │ │ ├── delete_episode_file.dart │ │ │ │ ├── delete_episode_files.dart │ │ │ │ ├── get_episode_file.dart │ │ │ │ └── get_series_episode_files.dart │ │ │ ├── history.dart │ │ │ ├── history │ │ │ │ ├── get_history.dart │ │ │ │ └── get_history_by_series.dart │ │ │ ├── import_list.dart │ │ │ ├── import_list │ │ │ │ └── get_exclusion_list.dart │ │ │ ├── profile.dart │ │ │ ├── profile │ │ │ │ ├── get_language_profiles.dart │ │ │ │ └── get_quality_profiles.dart │ │ │ ├── queue.dart │ │ │ ├── queue │ │ │ │ ├── delete_queue.dart │ │ │ │ ├── get_queue.dart │ │ │ │ └── get_queue_details.dart │ │ │ ├── release.dart │ │ │ ├── release │ │ │ │ ├── add_release.dart │ │ │ │ ├── get_release.dart │ │ │ │ └── get_season_release.dart │ │ │ ├── root_folder.dart │ │ │ ├── root_folder │ │ │ │ └── get_root_folders.dart │ │ │ ├── series.dart │ │ │ ├── series │ │ │ │ ├── add_series.dart │ │ │ │ ├── delete_series.dart │ │ │ │ ├── get_all_series.dart │ │ │ │ ├── get_series.dart │ │ │ │ └── update_series.dart │ │ │ ├── series_lookup.dart │ │ │ ├── series_lookup │ │ │ │ └── lookup.dart │ │ │ ├── system.dart │ │ │ ├── system │ │ │ │ └── get_status.dart │ │ │ ├── tag.dart │ │ │ ├── tag │ │ │ │ ├── add_tag.dart │ │ │ │ ├── delete_tag.dart │ │ │ │ ├── get_all_tags.dart │ │ │ │ ├── get_tag.dart │ │ │ │ └── update_tag.dart │ │ │ ├── wanted.dart │ │ │ └── wanted │ │ │ │ └── get_missing.dart │ │ ├── models.dart │ │ ├── models │ │ │ ├── calendar │ │ │ │ └── calendar.dart │ │ │ ├── command │ │ │ │ ├── command.dart │ │ │ │ └── command_body.dart │ │ │ ├── episode │ │ │ │ └── episode.dart │ │ │ ├── episode_file │ │ │ │ ├── episode_file.dart │ │ │ │ ├── episode_file_language.dart │ │ │ │ ├── episode_file_media_info.dart │ │ │ │ ├── episode_file_quality.dart │ │ │ │ ├── episode_file_quality_quality.dart │ │ │ │ └── episode_file_quality_revision.dart │ │ │ ├── history │ │ │ │ ├── history.dart │ │ │ │ └── history_record.dart │ │ │ ├── import_list │ │ │ │ └── exclusion.dart │ │ │ ├── profile │ │ │ │ ├── language_profile.dart │ │ │ │ ├── language_profile_cutoff.dart │ │ │ │ ├── language_profile_item.dart │ │ │ │ ├── language_profile_item_language.dart │ │ │ │ ├── quality_profile.dart │ │ │ │ ├── quality_profile_cutoff.dart │ │ │ │ ├── quality_profile_item.dart │ │ │ │ └── quality_profile_item_quality.dart │ │ │ ├── queue │ │ │ │ ├── queue.dart │ │ │ │ ├── queue_record.dart │ │ │ │ └── queue_status_message.dart │ │ │ ├── release │ │ │ │ ├── added_release.dart │ │ │ │ └── release.dart │ │ │ ├── root_folder │ │ │ │ ├── root_folder.dart │ │ │ │ └── unmapped_folder.dart │ │ │ ├── series │ │ │ │ ├── alternate_title.dart │ │ │ │ ├── image.dart │ │ │ │ ├── rating.dart │ │ │ │ ├── season.dart │ │ │ │ ├── season_statistics.dart │ │ │ │ ├── series.dart │ │ │ │ └── series_statistics.dart │ │ │ ├── system │ │ │ │ └── status.dart │ │ │ ├── tag │ │ │ │ └── tag.dart │ │ │ └── wanted_missing │ │ │ │ ├── missing.dart │ │ │ │ └── missing_record.dart │ │ ├── sonarr.dart │ │ ├── types.dart │ │ ├── types │ │ │ ├── event_type.dart │ │ │ ├── history_sort_key.dart │ │ │ ├── protocol_type.dart │ │ │ ├── queue_sort_key.dart │ │ │ ├── queue_status_type.dart │ │ │ ├── queue_tracked_download_state_type.dart │ │ │ ├── queue_tracked_download_status_type.dart │ │ │ ├── series_monitor_type.dart │ │ │ ├── series_type.dart │ │ │ ├── sort_dir.dart │ │ │ └── wanted_missing_sort_key.dart │ │ └── utilities.dart │ ├── tautulli │ │ ├── commands.dart │ │ ├── commands │ │ │ ├── activity.dart │ │ │ ├── activity │ │ │ │ ├── delete_temp_sessions.dart │ │ │ │ ├── get_activity.dart │ │ │ │ └── terminate_session.dart │ │ │ ├── history.dart │ │ │ ├── history │ │ │ │ ├── delete_history.dart │ │ │ │ ├── get_history.dart │ │ │ │ ├── get_home_stats.dart │ │ │ │ ├── get_plays_by_date.dart │ │ │ │ ├── get_plays_by_dayofweek.dart │ │ │ │ ├── get_plays_by_hourofday.dart │ │ │ │ ├── get_plays_by_source_resolution.dart │ │ │ │ ├── get_plays_by_stream_resolution.dart │ │ │ │ ├── get_plays_by_stream_type.dart │ │ │ │ ├── get_plays_by_top_10_platforms.dart │ │ │ │ ├── get_plays_by_top_10_users.dart │ │ │ │ ├── get_plays_per_month.dart │ │ │ │ ├── get_stream_data.dart │ │ │ │ ├── get_stream_type_by_top_10_platforms.dart │ │ │ │ └── get_stream_type_by_top_10_users.dart │ │ │ ├── libraries.dart │ │ │ ├── libraries │ │ │ │ ├── delete_all_library_history.dart │ │ │ │ ├── delete_library.dart │ │ │ │ ├── delete_recently_added.dart │ │ │ │ ├── edit_library.dart │ │ │ │ ├── get_libraries.dart │ │ │ │ ├── get_libraries_table.dart │ │ │ │ ├── get_library.dart │ │ │ │ ├── get_library_media_info.dart │ │ │ │ ├── get_library_names.dart │ │ │ │ ├── get_library_user_stats.dart │ │ │ │ ├── get_library_watch_time_stats.dart │ │ │ │ ├── get_metadata.dart │ │ │ │ ├── get_new_rating_keys.dart │ │ │ │ ├── get_old_rating_keys.dart │ │ │ │ ├── get_recently_added.dart │ │ │ │ ├── get_synced_items.dart │ │ │ │ ├── refresh_libraries_list.dart │ │ │ │ ├── search.dart │ │ │ │ ├── undelete_library.dart │ │ │ │ └── update_metadata_details.dart │ │ │ ├── miscellaneous.dart │ │ │ ├── miscellaneous │ │ │ │ ├── arnold.dart │ │ │ │ ├── docs.dart │ │ │ │ ├── docs_md.dart │ │ │ │ ├── download_config.dart │ │ │ │ ├── download_database.dart │ │ │ │ ├── download_log.dart │ │ │ │ ├── download_plex_log.dart │ │ │ │ ├── get_date_formats.dart │ │ │ │ ├── get_geoip_lookup.dart │ │ │ │ ├── get_logs.dart │ │ │ │ ├── get_plex_log.dart │ │ │ │ ├── get_server_friendly_name.dart │ │ │ │ ├── get_server_id.dart │ │ │ │ ├── get_server_identity.dart │ │ │ │ ├── get_server_list.dart │ │ │ │ ├── get_server_pref.dart │ │ │ │ ├── get_servers_info.dart │ │ │ │ ├── get_whois_lookup.dart │ │ │ │ ├── pms_image_proxy.dart │ │ │ │ └── sql.dart │ │ │ ├── notifications.dart │ │ │ ├── notifications │ │ │ │ ├── add_newsletter_config.dart │ │ │ │ ├── add_notifier_config.dart │ │ │ │ ├── delete_mobile_device.dart │ │ │ │ ├── delete_newsletter.dart │ │ │ │ ├── delete_notifier.dart │ │ │ │ ├── get_newsletter_config.dart │ │ │ │ ├── get_newsletter_log.dart │ │ │ │ ├── get_newsletters.dart │ │ │ │ ├── get_notification_log.dart │ │ │ │ ├── get_notifier_config.dart │ │ │ │ ├── get_notifier_parameters.dart │ │ │ │ ├── get_notifiers.dart │ │ │ │ ├── notify.dart │ │ │ │ ├── notify_newsletter.dart │ │ │ │ ├── notify_recently_added.dart │ │ │ │ ├── register_device.dart │ │ │ │ ├── set_mobile_device_config.dart │ │ │ │ ├── set_newsletter_config.dart │ │ │ │ └── set_notifier_config.dart │ │ │ ├── system.dart │ │ │ ├── system │ │ │ │ ├── backup_config.dart │ │ │ │ ├── backup_db.dart │ │ │ │ ├── delete_cache.dart │ │ │ │ ├── delete_hosted_images.dart │ │ │ │ ├── delete_image_cache.dart │ │ │ │ ├── delete_login_log.dart │ │ │ │ ├── delete_lookup_info.dart │ │ │ │ ├── delete_media_info_cache.dart │ │ │ │ ├── delete_newsletter_log.dart │ │ │ │ ├── delete_notification_log.dart │ │ │ │ ├── get_pms_token.dart │ │ │ │ ├── get_pms_update.dart │ │ │ │ ├── get_settings.dart │ │ │ │ ├── restart.dart │ │ │ │ ├── status.dart │ │ │ │ ├── update.dart │ │ │ │ └── update_check.dart │ │ │ ├── users.dart │ │ │ └── users │ │ │ │ ├── delete_all_user_history.dart │ │ │ │ ├── delete_user.dart │ │ │ │ ├── edit_user.dart │ │ │ │ ├── get_user.dart │ │ │ │ ├── get_user_ips.dart │ │ │ │ ├── get_user_logins.dart │ │ │ │ ├── get_user_names.dart │ │ │ │ ├── get_user_player_stats.dart │ │ │ │ ├── get_user_watch_time_stats.dart │ │ │ │ ├── get_users.dart │ │ │ │ ├── get_users_table.dart │ │ │ │ ├── refresh_users_list.dart │ │ │ │ └── undelete_user.dart │ │ ├── models.dart │ │ ├── models │ │ │ ├── activity │ │ │ │ ├── activity.dart │ │ │ │ └── session.dart │ │ │ ├── history │ │ │ │ ├── graph_data.dart │ │ │ │ ├── history.dart │ │ │ │ ├── history_record.dart │ │ │ │ ├── home_stats.dart │ │ │ │ ├── series_data.dart │ │ │ │ └── stream_data.dart │ │ │ ├── libraries │ │ │ │ ├── audio_stream.dart │ │ │ │ ├── libraries_table.dart │ │ │ │ ├── library.dart │ │ │ │ ├── library_media_info.dart │ │ │ │ ├── library_media_info_record.dart │ │ │ │ ├── library_name.dart │ │ │ │ ├── library_user_stats.dart │ │ │ │ ├── library_watch_time_stats.dart │ │ │ │ ├── media_info.dart │ │ │ │ ├── media_info_parts.dart │ │ │ │ ├── metadata.dart │ │ │ │ ├── recently_added.dart │ │ │ │ ├── search.dart │ │ │ │ ├── search_result.dart │ │ │ │ ├── search_results.dart │ │ │ │ ├── single_library.dart │ │ │ │ ├── subtitle_stream.dart │ │ │ │ ├── synced_item.dart │ │ │ │ ├── table_library.dart │ │ │ │ └── video_stream.dart │ │ │ ├── miscellaneous │ │ │ │ ├── date_format.dart │ │ │ │ ├── geolocation_info.dart │ │ │ │ ├── log.dart │ │ │ │ ├── plex_log.dart │ │ │ │ ├── server.dart │ │ │ │ ├── server_identity.dart │ │ │ │ ├── server_info.dart │ │ │ │ ├── whois_info.dart │ │ │ │ └── whois_subnet.dart │ │ │ ├── notifications │ │ │ │ ├── newsletter.dart │ │ │ │ ├── newsletter_config.dart │ │ │ │ ├── newsletter_log_record.dart │ │ │ │ ├── newsletter_logs.dart │ │ │ │ ├── notification_log_record.dart │ │ │ │ ├── notification_logs.dart │ │ │ │ ├── notifier.dart │ │ │ │ ├── notifier_config.dart │ │ │ │ ├── notifier_config_actions.dart │ │ │ │ └── notifier_parameter.dart │ │ │ ├── system │ │ │ │ ├── pms_update.dart │ │ │ │ └── update_check.dart │ │ │ └── users │ │ │ │ ├── table_user.dart │ │ │ │ ├── user.dart │ │ │ │ ├── user_ip_record.dart │ │ │ │ ├── user_ips.dart │ │ │ │ ├── user_login_record.dart │ │ │ │ ├── user_logins.dart │ │ │ │ ├── user_name.dart │ │ │ │ ├── user_player_stats.dart │ │ │ │ ├── user_watch_time_stats.dart │ │ │ │ └── users_table.dart │ │ ├── tautulli.dart │ │ ├── types.dart │ │ ├── types │ │ │ ├── api_lookup_service.dart │ │ │ ├── fallback_image.dart │ │ │ ├── graph_y_axis.dart │ │ │ ├── image_host_service.dart │ │ │ ├── media.dart │ │ │ ├── order_column_history.dart │ │ │ ├── order_column_libraries.dart │ │ │ ├── order_column_library_media_info.dart │ │ │ ├── order_column_log.dart │ │ │ ├── order_column_newsletter_log.dart │ │ │ ├── order_column_notification_log.dart │ │ │ ├── order_column_user_ips.dart │ │ │ ├── order_column_user_logins.dart │ │ │ ├── order_column_users.dart │ │ │ ├── order_direction.dart │ │ │ ├── plex_log_type.dart │ │ │ ├── section.dart │ │ │ ├── session_location.dart │ │ │ ├── session_state.dart │ │ │ ├── stats_type.dart │ │ │ ├── transcode_decision.dart │ │ │ ├── user_group.dart │ │ │ └── watched_status.dart │ │ └── utilities.dart │ └── wake_on_lan │ │ ├── platform │ │ ├── wake_on_lan_html.dart │ │ ├── wake_on_lan_io.dart │ │ └── wake_on_lan_stub.dart │ │ └── wake_on_lan.dart ├── core.dart ├── database │ ├── box.dart │ ├── config.dart │ ├── database.dart │ ├── models │ │ ├── deprecated.dart │ │ ├── external_module.dart │ │ ├── indexer.dart │ │ ├── log.dart │ │ └── profile.dart │ ├── table.dart │ └── tables │ │ ├── bios.dart │ │ ├── dashboard.dart │ │ ├── lidarr.dart │ │ ├── lunasea.dart │ │ ├── nzbget.dart │ │ ├── radarr.dart │ │ ├── sabnzbd.dart │ │ ├── search.dart │ │ ├── sonarr.dart │ │ └── tautulli.dart ├── extensions │ ├── datetime.dart │ ├── double │ │ └── time.dart │ ├── duration │ │ └── timestamp.dart │ ├── int │ │ ├── bytes.dart │ │ └── duration.dart │ ├── page_controller.dart │ ├── scroll_controller.dart │ └── string │ │ ├── links.dart │ │ └── string.dart ├── main.dart ├── modules.dart ├── modules │ ├── dashboard │ │ ├── core │ │ │ ├── adapters │ │ │ │ ├── calendar_starting_day.dart │ │ │ │ ├── calendar_starting_size.dart │ │ │ │ └── calendar_starting_type.dart │ │ │ ├── api │ │ │ │ ├── api.dart │ │ │ │ └── data │ │ │ │ │ ├── abstract.dart │ │ │ │ │ ├── lidarr.dart │ │ │ │ │ ├── radarr.dart │ │ │ │ │ └── sonarr.dart │ │ │ ├── dialogs.dart │ │ │ └── state.dart │ │ └── routes │ │ │ └── dashboard │ │ │ ├── pages │ │ │ ├── calendar.dart │ │ │ └── modules.dart │ │ │ ├── route.dart │ │ │ └── widgets │ │ │ ├── calendar_view.dart │ │ │ ├── content_block.dart │ │ │ ├── navigation_bar.dart │ │ │ ├── schedule_view.dart │ │ │ └── switch_view_action.dart │ ├── external_modules │ │ └── routes │ │ │ ├── external_modules.dart │ │ │ └── external_modules │ │ │ ├── route.dart │ │ │ ├── widgets.dart │ │ │ └── widgets │ │ │ └── module_tile.dart │ ├── lidarr.dart │ ├── lidarr │ │ ├── core.dart │ │ ├── core │ │ │ ├── api.dart │ │ │ ├── api │ │ │ │ ├── api.dart │ │ │ │ ├── data.dart │ │ │ │ └── data │ │ │ │ │ ├── album.dart │ │ │ │ │ ├── catalogue.dart │ │ │ │ │ ├── history.dart │ │ │ │ │ ├── metadata.dart │ │ │ │ │ ├── missing.dart │ │ │ │ │ ├── monitor_status.dart │ │ │ │ │ ├── qualityprofile.dart │ │ │ │ │ ├── release.dart │ │ │ │ │ ├── rootfolder.dart │ │ │ │ │ ├── search.dart │ │ │ │ │ └── track.dart │ │ │ ├── constants.dart │ │ │ ├── dialogs.dart │ │ │ ├── sorting.dart │ │ │ ├── sorting │ │ │ │ ├── catalogue.dart │ │ │ │ └── releases.dart │ │ │ ├── state.dart │ │ │ └── webhooks.dart │ │ ├── routes.dart │ │ ├── routes │ │ │ ├── add_details.dart │ │ │ ├── add_search.dart │ │ │ ├── catalogue.dart │ │ │ ├── details_album.dart │ │ │ ├── details_artist.dart │ │ │ ├── edit_artist.dart │ │ │ ├── history.dart │ │ │ ├── lidarr.dart │ │ │ ├── missing.dart │ │ │ └── search_results.dart │ │ ├── sheets │ │ │ └── links.dart │ │ ├── widgets.dart │ │ └── widgets │ │ │ ├── add_search_bar.dart │ │ │ ├── add_search_result_tile.dart │ │ │ ├── artist_navigation_bar.dart │ │ │ ├── catalogue_hide_button.dart │ │ │ ├── catalogue_search_bar.dart │ │ │ ├── catalogue_sorting_button.dart │ │ │ ├── catalogue_tile.dart │ │ │ ├── description_block.dart │ │ │ ├── details_album_list.dart │ │ │ ├── details_album_tile.dart │ │ │ ├── details_album_track_tile.dart │ │ │ ├── details_edit_button.dart │ │ │ ├── details_overview.dart │ │ │ ├── details_settings_button.dart │ │ │ ├── history_tile.dart │ │ │ ├── missing_tile.dart │ │ │ ├── navigation_bar.dart │ │ │ ├── releases_hide_button.dart │ │ │ ├── releases_search_bar.dart │ │ │ ├── releases_sorting_button.dart │ │ │ └── search_result_tile.dart │ ├── nzbget.dart │ ├── nzbget │ │ ├── core.dart │ │ ├── core │ │ │ ├── api.dart │ │ │ ├── api │ │ │ │ ├── api.dart │ │ │ │ ├── data.dart │ │ │ │ └── data │ │ │ │ │ ├── category.dart │ │ │ │ │ ├── history.dart │ │ │ │ │ ├── log.dart │ │ │ │ │ ├── priority.dart │ │ │ │ │ ├── queue.dart │ │ │ │ │ ├── sort.dart │ │ │ │ │ ├── statistics.dart │ │ │ │ │ └── status.dart │ │ │ ├── dialogs.dart │ │ │ └── state.dart │ │ ├── routes.dart │ │ ├── routes │ │ │ ├── history.dart │ │ │ ├── nzbget.dart │ │ │ ├── queue.dart │ │ │ └── statistics.dart │ │ ├── widgets.dart │ │ └── widgets │ │ │ ├── app_bar_stats.dart │ │ │ ├── history_hide_button.dart │ │ │ ├── history_search_bar.dart │ │ │ ├── history_tile.dart │ │ │ ├── log_tile.dart │ │ │ ├── navigation_bar.dart │ │ │ ├── queue_fab.dart │ │ │ └── queue_tile.dart │ ├── radarr.dart │ ├── radarr │ │ ├── core.dart │ │ ├── core │ │ │ ├── api_helper.dart │ │ │ ├── bottom_modal_sheets.dart │ │ │ ├── dialogs.dart │ │ │ ├── extensions.dart │ │ │ ├── extensions │ │ │ │ ├── radarr_disk_space.dart │ │ │ │ ├── radarr_event_type.dart │ │ │ │ ├── radarr_extra_file.dart │ │ │ │ ├── radarr_health_check_type.dart │ │ │ │ ├── radarr_history_record.dart │ │ │ │ ├── radarr_import_mode.dart │ │ │ │ ├── radarr_manual_import.dart │ │ │ │ ├── radarr_movie.dart │ │ │ │ ├── radarr_movie_file.dart │ │ │ │ ├── radarr_movie_file_media_info.dart │ │ │ │ ├── radarr_quality_profile.dart │ │ │ │ ├── radarr_queue_record.dart │ │ │ │ ├── radarr_release.dart │ │ │ │ ├── radarr_root_folder.dart │ │ │ │ └── radarr_system_status.dart │ │ │ ├── state.dart │ │ │ ├── types.dart │ │ │ ├── types │ │ │ │ ├── filter_movies.dart │ │ │ │ ├── filter_releases.dart │ │ │ │ ├── settings_global.dart │ │ │ │ ├── settings_movie.dart │ │ │ │ ├── sorting_movies.dart │ │ │ │ └── sorting_releases.dart │ │ │ └── webhooks.dart │ │ ├── routes.dart │ │ └── routes │ │ │ ├── add_movie.dart │ │ │ ├── add_movie │ │ │ ├── route.dart │ │ │ ├── state.dart │ │ │ ├── widgets.dart │ │ │ └── widgets │ │ │ │ ├── discovery_results_tile.dart │ │ │ │ ├── navigation_bar.dart │ │ │ │ ├── page_discover.dart │ │ │ │ ├── page_search.dart │ │ │ │ ├── search_results_tile.dart │ │ │ │ └── search_search_bar.dart │ │ │ ├── add_movie_details.dart │ │ │ ├── add_movie_details │ │ │ ├── route.dart │ │ │ ├── state.dart │ │ │ ├── widgets.dart │ │ │ └── widgets │ │ │ │ ├── bottom_action_bar.dart │ │ │ │ ├── tile_minimum_availability.dart │ │ │ │ ├── tile_monitored.dart │ │ │ │ ├── tile_quality_profile.dart │ │ │ │ ├── tile_root_folder.dart │ │ │ │ └── tile_tags.dart │ │ │ ├── catalogue.dart │ │ │ ├── catalogue │ │ │ ├── route.dart │ │ │ ├── widgets.dart │ │ │ └── widgets │ │ │ │ ├── movie_tile.dart │ │ │ │ ├── search_bar.dart │ │ │ │ ├── search_bar_filter_button.dart │ │ │ │ ├── search_bar_sort_button.dart │ │ │ │ └── search_bar_view_button.dart │ │ │ ├── edit_movie.dart │ │ │ ├── edit_movie │ │ │ ├── route.dart │ │ │ ├── state.dart │ │ │ ├── widgets.dart │ │ │ └── widgets │ │ │ │ ├── bottom_action_bar.dart │ │ │ │ ├── tile_monitored.dart │ │ │ │ ├── tile_path.dart │ │ │ │ ├── tile_quality_profile.dart │ │ │ │ ├── tile_radarr_availability.dart │ │ │ │ └── tile_tags.dart │ │ │ ├── history.dart │ │ │ ├── history │ │ │ ├── route.dart │ │ │ ├── widgets.dart │ │ │ └── widgets │ │ │ │ └── history_tile.dart │ │ │ ├── manual_import.dart │ │ │ ├── manual_import │ │ │ ├── route.dart │ │ │ ├── state.dart │ │ │ ├── widgets.dart │ │ │ └── widgets │ │ │ │ ├── appbar_path_bar.dart │ │ │ │ ├── bottom_action_bar.dart │ │ │ │ ├── directory_tile.dart │ │ │ │ └── parent_directory_tile.dart │ │ │ ├── manual_import_details.dart │ │ │ ├── manual_import_details │ │ │ ├── route.dart │ │ │ ├── state.dart │ │ │ ├── widgets.dart │ │ │ └── widgets │ │ │ │ ├── appbar_configure_movies.dart │ │ │ │ ├── bottom_action_bar.dart │ │ │ │ └── import_tile.dart │ │ │ ├── missing.dart │ │ │ ├── missing │ │ │ ├── route.dart │ │ │ ├── widgets.dart │ │ │ └── widgets │ │ │ │ └── missing_tile.dart │ │ │ ├── more.dart │ │ │ ├── more │ │ │ └── route.dart │ │ │ ├── movie_details.dart │ │ │ ├── movie_details │ │ │ ├── route.dart │ │ │ ├── sheets │ │ │ │ └── links.dart │ │ │ ├── state.dart │ │ │ ├── widgets.dart │ │ │ └── widgets │ │ │ │ ├── appbar_settings_action.dart │ │ │ │ ├── cast_crew_tile.dart │ │ │ │ ├── files_extra_file_block.dart │ │ │ │ ├── files_file_block.dart │ │ │ │ ├── navigation_bar.dart │ │ │ │ ├── overview_movie_description_tile.dart │ │ │ │ ├── overview_movie_information_block.dart │ │ │ │ ├── page_cast_crew.dart │ │ │ │ ├── page_files.dart │ │ │ │ ├── page_history.dart │ │ │ │ └── page_overview.dart │ │ │ ├── queue.dart │ │ │ ├── queue │ │ │ ├── route.dart │ │ │ ├── widgets.dart │ │ │ └── widgets │ │ │ │ └── queue_tile.dart │ │ │ ├── radarr.dart │ │ │ ├── radarr │ │ │ ├── route.dart │ │ │ ├── widgets.dart │ │ │ └── widgets │ │ │ │ ├── appbar_add_movie_action.dart │ │ │ │ ├── appbar_global_settings_action.dart │ │ │ │ └── navigation_bar.dart │ │ │ ├── releases.dart │ │ │ ├── releases │ │ │ ├── route.dart │ │ │ ├── state.dart │ │ │ ├── widgets.dart │ │ │ └── widgets │ │ │ │ ├── release_tile.dart │ │ │ │ ├── search_bar.dart │ │ │ │ ├── search_bar_filter_button.dart │ │ │ │ └── search_bar_sort_button.dart │ │ │ ├── system_status.dart │ │ │ ├── system_status │ │ │ ├── pages.dart │ │ │ ├── pages │ │ │ │ ├── page_about.dart │ │ │ │ ├── page_disk_space.dart │ │ │ │ └── page_health_check.dart │ │ │ ├── route.dart │ │ │ ├── state.dart │ │ │ ├── widgets.dart │ │ │ └── widgets │ │ │ │ ├── disk_space_tile.dart │ │ │ │ ├── health_tile.dart │ │ │ │ ├── navigation_bar.dart │ │ │ │ └── root_folder_tile.dart │ │ │ ├── tags.dart │ │ │ ├── tags │ │ │ ├── route.dart │ │ │ ├── widgets.dart │ │ │ └── widgets │ │ │ │ ├── appbar_action_add_tag.dart │ │ │ │ └── tag_tile.dart │ │ │ ├── upcoming.dart │ │ │ └── upcoming │ │ │ ├── route.dart │ │ │ ├── widgets.dart │ │ │ └── widgets │ │ │ └── upcoming_tile.dart │ ├── sabnzbd.dart │ ├── sabnzbd │ │ ├── core.dart │ │ ├── core │ │ │ ├── api.dart │ │ │ ├── api │ │ │ │ ├── api.dart │ │ │ │ ├── data.dart │ │ │ │ └── data │ │ │ │ │ ├── category.dart │ │ │ │ │ ├── history.dart │ │ │ │ │ ├── queue.dart │ │ │ │ │ ├── statistics.dart │ │ │ │ │ ├── statistics_server.dart │ │ │ │ │ └── status.dart │ │ │ ├── dialogs.dart │ │ │ └── state.dart │ │ ├── routes.dart │ │ ├── routes │ │ │ ├── history.dart │ │ │ ├── history_stages.dart │ │ │ ├── queue.dart │ │ │ ├── sabnzbd.dart │ │ │ └── statistics.dart │ │ ├── widgets.dart │ │ └── widgets │ │ │ ├── app_bar_stats.dart │ │ │ ├── history_hide_button.dart │ │ │ ├── history_search_bar.dart │ │ │ ├── history_tile.dart │ │ │ ├── navigation_bar.dart │ │ │ ├── queue_fab.dart │ │ │ └── queue_tile.dart │ ├── search.dart │ ├── search │ │ ├── core.dart │ │ ├── core │ │ │ ├── api.dart │ │ │ ├── dialogs.dart │ │ │ ├── models.dart │ │ │ ├── models │ │ │ │ ├── category.dart │ │ │ │ ├── result.dart │ │ │ │ └── subcategory.dart │ │ │ ├── state.dart │ │ │ ├── types.dart │ │ │ └── types │ │ │ │ └── download_type.dart │ │ ├── routes.dart │ │ └── routes │ │ │ ├── categories.dart │ │ │ ├── categories │ │ │ ├── route.dart │ │ │ ├── widgets.dart │ │ │ └── widgets │ │ │ │ └── category_tile.dart │ │ │ ├── indexers.dart │ │ │ ├── indexers │ │ │ ├── route.dart │ │ │ ├── widgets.dart │ │ │ └── widgets │ │ │ │ └── indexer_tile.dart │ │ │ ├── results.dart │ │ │ ├── results │ │ │ ├── route.dart │ │ │ ├── widgets.dart │ │ │ └── widgets │ │ │ │ └── result_tile.dart │ │ │ ├── search.dart │ │ │ ├── search │ │ │ ├── route.dart │ │ │ ├── widgets.dart │ │ │ └── widgets │ │ │ │ └── search_bar.dart │ │ │ ├── subcategories.dart │ │ │ └── subcategories │ │ │ ├── route.dart │ │ │ ├── widgets.dart │ │ │ └── widgets │ │ │ ├── all_subcategories_tile.dart │ │ │ └── subcategory_tile.dart │ ├── settings.dart │ ├── settings │ │ ├── core.dart │ │ ├── core │ │ │ ├── banners.dart │ │ │ ├── dialogs.dart │ │ │ ├── pages.dart │ │ │ ├── pages │ │ │ │ └── headers.dart │ │ │ ├── state.dart │ │ │ ├── types.dart │ │ │ ├── types │ │ │ │ └── header.dart │ │ │ ├── utilities.dart │ │ │ └── utilities │ │ │ │ └── headers.dart │ │ └── routes │ │ │ ├── configuration │ │ │ └── route.dart │ │ │ ├── configuration_dashboard │ │ │ ├── pages.dart │ │ │ ├── pages │ │ │ │ ├── calendar_settings.dart │ │ │ │ └── default_pages.dart │ │ │ └── route.dart │ │ │ ├── configuration_drawer │ │ │ └── route.dart │ │ │ ├── configuration_external_modules │ │ │ ├── pages.dart │ │ │ ├── pages │ │ │ │ ├── add_module.dart │ │ │ │ └── edit_module.dart │ │ │ └── route.dart │ │ │ ├── configuration_general │ │ │ └── route.dart │ │ │ ├── configuration_lidarr │ │ │ ├── pages.dart │ │ │ ├── pages │ │ │ │ ├── connection_details.dart │ │ │ │ ├── default_pages.dart │ │ │ │ └── headers.dart │ │ │ └── route.dart │ │ │ ├── configuration_nzbget │ │ │ ├── pages.dart │ │ │ ├── pages │ │ │ │ ├── connection_details.dart │ │ │ │ ├── default_pages.dart │ │ │ │ └── headers.dart │ │ │ └── route.dart │ │ │ ├── configuration_quick_actions │ │ │ └── route.dart │ │ │ ├── configuration_radarr │ │ │ ├── pages.dart │ │ │ ├── pages │ │ │ │ ├── connection_details.dart │ │ │ │ ├── default_options.dart │ │ │ │ ├── default_pages.dart │ │ │ │ └── headers.dart │ │ │ └── route.dart │ │ │ ├── configuration_sabnzbd │ │ │ ├── pages │ │ │ │ ├── connection_details.dart │ │ │ │ ├── default_pages.dart │ │ │ │ └── headers.dart │ │ │ └── route.dart │ │ │ ├── configuration_search │ │ │ ├── pages.dart │ │ │ ├── pages │ │ │ │ ├── add_indexer.dart │ │ │ │ ├── add_indexer_headers.dart │ │ │ │ ├── edit_indexer.dart │ │ │ │ └── edit_indexer_headers.dart │ │ │ └── route.dart │ │ │ ├── configuration_sonarr │ │ │ ├── pages.dart │ │ │ ├── pages │ │ │ │ ├── connection_details.dart │ │ │ │ ├── default_options.dart │ │ │ │ ├── default_pages.dart │ │ │ │ └── headers.dart │ │ │ └── route.dart │ │ │ ├── configuration_tautulli │ │ │ ├── pages.dart │ │ │ ├── pages │ │ │ │ ├── connection_details.dart │ │ │ │ ├── default_pages.dart │ │ │ │ └── headers.dart │ │ │ └── route.dart │ │ │ ├── configuration_wake_on_lan │ │ │ └── route.dart │ │ │ ├── profiles │ │ │ └── route.dart │ │ │ ├── settings │ │ │ └── route.dart │ │ │ ├── system │ │ │ ├── route.dart │ │ │ ├── widgets.dart │ │ │ └── widgets │ │ │ │ ├── backup_tile.dart │ │ │ │ └── restore_tile.dart │ │ │ └── system_logs │ │ │ ├── pages.dart │ │ │ ├── pages │ │ │ └── log_details.dart │ │ │ ├── route.dart │ │ │ ├── widgets.dart │ │ │ └── widgets │ │ │ └── log_tile.dart │ ├── sonarr.dart │ ├── sonarr │ │ ├── core.dart │ │ ├── core │ │ │ ├── api_controller.dart │ │ │ ├── dialogs.dart │ │ │ ├── extensions.dart │ │ │ ├── extensions │ │ │ │ ├── sonarr_calendar.dart │ │ │ │ ├── sonarr_episode.dart │ │ │ │ ├── sonarr_episode_file_media_info.dart │ │ │ │ ├── sonarr_event_type.dart │ │ │ │ ├── sonarr_history.dart │ │ │ │ ├── sonarr_protocol.dart │ │ │ │ ├── sonarr_queue_record.dart │ │ │ │ ├── sonarr_queue_status.dart │ │ │ │ ├── sonarr_release.dart │ │ │ │ ├── sonarr_series.dart │ │ │ │ ├── sonarr_series_monitor_type.dart │ │ │ │ └── sonarr_series_season.dart │ │ │ ├── state.dart │ │ │ ├── types.dart │ │ │ ├── types │ │ │ │ ├── filter_releases.dart │ │ │ │ ├── filter_series.dart │ │ │ │ ├── monitor_status.dart │ │ │ │ ├── settings_episode.dart │ │ │ │ ├── settings_episode_multi.dart │ │ │ │ ├── settings_global.dart │ │ │ │ ├── settings_season.dart │ │ │ │ ├── settings_series.dart │ │ │ │ ├── sorting_releases.dart │ │ │ │ └── sorting_series.dart │ │ │ └── webhooks.dart │ │ ├── routes.dart │ │ └── routes │ │ │ ├── add_series.dart │ │ │ ├── add_series │ │ │ ├── route.dart │ │ │ ├── state.dart │ │ │ ├── widgets.dart │ │ │ └── widgets │ │ │ │ ├── appbar.dart │ │ │ │ ├── page_search.dart │ │ │ │ └── search_results_tile.dart │ │ │ ├── add_series_details.dart │ │ │ ├── add_series_details │ │ │ ├── route.dart │ │ │ ├── state.dart │ │ │ ├── widgets.dart │ │ │ └── widgets │ │ │ │ ├── bottom_action_bar.dart │ │ │ │ ├── tile_language_profile.dart │ │ │ │ ├── tile_monitor.dart │ │ │ │ ├── tile_quality_profile.dart │ │ │ │ ├── tile_root_folder.dart │ │ │ │ ├── tile_series_type.dart │ │ │ │ ├── tile_tags.dart │ │ │ │ └── tile_use_season_folders.dart │ │ │ ├── catalogue.dart │ │ │ ├── catalogue │ │ │ ├── route.dart │ │ │ ├── widgets.dart │ │ │ └── widgets │ │ │ │ ├── search_bar.dart │ │ │ │ ├── search_bar_filter_button.dart │ │ │ │ ├── search_bar_sort_button.dart │ │ │ │ ├── search_bar_view_button.dart │ │ │ │ └── series_tile.dart │ │ │ ├── edit_series.dart │ │ │ ├── edit_series │ │ │ ├── route.dart │ │ │ ├── state.dart │ │ │ ├── widgets.dart │ │ │ └── widgets │ │ │ │ ├── bottom_action_bar.dart │ │ │ │ ├── tile_language_profile.dart │ │ │ │ ├── tile_monitored.dart │ │ │ │ ├── tile_quality_profile.dart │ │ │ │ ├── tile_series_path.dart │ │ │ │ ├── tile_series_type.dart │ │ │ │ ├── tile_tags.dart │ │ │ │ └── tile_use_season_folders.dart │ │ │ ├── history.dart │ │ │ ├── history │ │ │ ├── route.dart │ │ │ ├── widgets.dart │ │ │ └── widgets │ │ │ │ └── history_tile.dart │ │ │ ├── missing.dart │ │ │ ├── missing │ │ │ ├── route.dart │ │ │ ├── widgets.dart │ │ │ └── widgets │ │ │ │ └── missing_tile.dart │ │ │ ├── more.dart │ │ │ ├── more │ │ │ └── route.dart │ │ │ ├── queue.dart │ │ │ ├── queue │ │ │ ├── route.dart │ │ │ ├── state.dart │ │ │ ├── widgets.dart │ │ │ └── widgets │ │ │ │ └── queue_tile.dart │ │ │ ├── releases.dart │ │ │ ├── releases │ │ │ ├── route.dart │ │ │ ├── state.dart │ │ │ ├── widgets.dart │ │ │ └── widgets │ │ │ │ ├── release_tile.dart │ │ │ │ ├── search_bar.dart │ │ │ │ ├── search_bar_filter_button.dart │ │ │ │ └── search_bar_sort_button.dart │ │ │ ├── season_details.dart │ │ │ ├── season_details │ │ │ ├── route.dart │ │ │ ├── sheets.dart │ │ │ ├── sheets │ │ │ │ ├── episode_details.dart │ │ │ │ └── media_info.dart │ │ │ ├── state.dart │ │ │ ├── widgets.dart │ │ │ └── widgets │ │ │ │ ├── episode_tile.dart │ │ │ │ ├── navigation_bar.dart │ │ │ │ ├── page_episodes.dart │ │ │ │ ├── page_history.dart │ │ │ │ └── season_header.dart │ │ │ ├── series_details.dart │ │ │ ├── series_details │ │ │ ├── route.dart │ │ │ ├── sheets │ │ │ │ └── links.dart │ │ │ ├── state.dart │ │ │ ├── widgets.dart │ │ │ └── widgets │ │ │ │ ├── appbar_settings_action.dart │ │ │ │ ├── navigation_bar.dart │ │ │ │ ├── overview_series_description_tile.dart │ │ │ │ ├── overview_series_information_block.dart.dart │ │ │ │ ├── page_history.dart │ │ │ │ ├── page_overview.dart │ │ │ │ ├── page_seasons.dart │ │ │ │ ├── season_all_tile.dart │ │ │ │ └── season_tile.dart │ │ │ ├── sonarr.dart │ │ │ ├── sonarr │ │ │ ├── route.dart │ │ │ ├── widgets.dart │ │ │ └── widgets │ │ │ │ ├── appbar_add_series_action.dart │ │ │ │ ├── appbar_global_settings_action.dart │ │ │ │ └── navigation_bar.dart │ │ │ ├── tags.dart │ │ │ ├── tags │ │ │ ├── route.dart │ │ │ ├── widgets.dart │ │ │ └── widgets │ │ │ │ ├── appbar_action_add_tag.dart │ │ │ │ └── tag_tile.dart │ │ │ ├── upcoming.dart │ │ │ └── upcoming │ │ │ ├── route.dart │ │ │ ├── widgets.dart │ │ │ └── widgets │ │ │ └── upcoming_tile.dart │ ├── tautulli.dart │ └── tautulli │ │ ├── core.dart │ │ ├── core │ │ ├── api_helper.dart │ │ ├── dialogs.dart │ │ ├── extensions.dart │ │ ├── extensions │ │ │ ├── tautulli_activity.dart │ │ │ ├── tautulli_history_record.dart │ │ │ ├── tautulli_session.dart │ │ │ ├── tautulli_table_library.dart │ │ │ └── tautulli_transcode_decision.dart │ │ ├── graphs.dart │ │ ├── graphs │ │ │ ├── bar_graph.dart │ │ │ ├── graph.dart │ │ │ └── line_graph.dart │ │ ├── state.dart │ │ ├── types.dart │ │ ├── types │ │ │ ├── media_details_switcher.dart │ │ │ ├── settings_global.dart │ │ │ └── statistics_time_range.dart │ │ └── webhooks.dart │ │ ├── routes.dart │ │ └── routes │ │ ├── activity.dart │ │ ├── activity │ │ ├── route.dart │ │ ├── widgets.dart │ │ └── widgets │ │ │ ├── activity_status.dart │ │ │ └── activity_tile.dart │ │ ├── activity_details.dart │ │ ├── activity_details │ │ ├── route.dart │ │ ├── widgets.dart │ │ └── widgets │ │ │ ├── appbar_metadata_action.dart │ │ │ ├── appbar_user_action.dart │ │ │ ├── block_metadata.dart │ │ │ ├── block_player.dart │ │ │ ├── block_stream.dart │ │ │ └── bottom_action_bar.dart │ │ ├── check_for_updates.dart │ │ ├── check_for_updates │ │ ├── route.dart │ │ ├── state.dart │ │ ├── widgets.dart │ │ └── widgets │ │ │ ├── pms_tile.dart │ │ │ └── tautulli_tile.dart │ │ ├── graphs.dart │ │ ├── graphs │ │ ├── route.dart │ │ ├── widgets.dart │ │ └── widgets │ │ │ ├── navigation_bar.dart │ │ │ └── type_button.dart │ │ ├── graphs_play_by_period.dart │ │ ├── graphs_play_by_period │ │ ├── route.dart │ │ ├── widgets.dart │ │ └── widgets │ │ │ ├── daily_play_count_graph.dart │ │ │ ├── play_count_by_day_of_week_graph.dart │ │ │ ├── play_count_by_top_platforms_graph.dart │ │ │ ├── play_count_by_top_users_graph.dart │ │ │ └── plays_by_month_graph.dart │ │ ├── graphs_stream_information.dart │ │ ├── graphs_stream_information │ │ ├── route.dart │ │ ├── widgets.dart │ │ └── widgets │ │ │ ├── daily_stream_type_breakdown_graph.dart │ │ │ ├── play_count_by_platform_stream_type_graph.dart │ │ │ ├── play_count_by_source_resolution_graph.dart │ │ │ ├── play_count_by_stream_resolution_graph.dart │ │ │ └── play_count_by_user_stream_type_graph.dart │ │ ├── history.dart │ │ ├── history │ │ ├── route.dart │ │ ├── widgets.dart │ │ └── widgets │ │ │ └── history_tile.dart │ │ ├── history_details.dart │ │ ├── history_details │ │ ├── route.dart │ │ ├── widgets.dart │ │ └── widgets │ │ │ ├── information.dart │ │ │ ├── metadata.dart │ │ │ └── user.dart │ │ ├── ipaddress_details.dart │ │ ├── ipaddress_details │ │ ├── route.dart │ │ ├── state.dart │ │ ├── widgets.dart │ │ └── widgets │ │ │ ├── geolocation_tile.dart │ │ │ └── whois_tile.dart │ │ ├── libraries.dart │ │ ├── libraries │ │ ├── route.dart │ │ ├── widgets.dart │ │ └── widgets │ │ │ └── library_tile.dart │ │ ├── libraries_details.dart │ │ ├── libraries_details │ │ ├── route.dart │ │ ├── widgets.dart │ │ └── widgets │ │ │ ├── information.dart │ │ │ ├── information_details.dart │ │ │ ├── information_global_stats.dart │ │ │ ├── navigation_bar.dart │ │ │ ├── user_stats.dart │ │ │ └── user_stats_tile.dart │ │ ├── logs.dart │ │ ├── logs │ │ └── route.dart │ │ ├── logs_logins.dart │ │ ├── logs_logins │ │ ├── route.dart │ │ ├── state.dart │ │ ├── widgets.dart │ │ └── widgets │ │ │ └── log_tile.dart │ │ ├── logs_newsletters.dart │ │ ├── logs_newsletters │ │ ├── route.dart │ │ ├── state.dart │ │ ├── widgets.dart │ │ └── widgets │ │ │ └── log_tile.dart │ │ ├── logs_notifications.dart │ │ ├── logs_notifications │ │ ├── route.dart │ │ ├── state.dart │ │ ├── widgets.dart │ │ └── widgets │ │ │ └── log_tile.dart │ │ ├── logs_plex_media_scanner.dart │ │ ├── logs_plex_media_scanner │ │ ├── route.dart │ │ ├── state.dart │ │ ├── widgets.dart │ │ └── widgets │ │ │ └── log_tile.dart │ │ ├── logs_plex_media_server.dart │ │ ├── logs_plex_media_server │ │ ├── route.dart │ │ ├── state.dart │ │ ├── widgets.dart │ │ └── widgets │ │ │ └── log_tile.dart │ │ ├── logs_tautulli.dart │ │ ├── logs_tautulli │ │ ├── route.dart │ │ ├── state.dart │ │ ├── widgets.dart │ │ └── widgets │ │ │ └── log_tile.dart │ │ ├── media_details.dart │ │ ├── media_details │ │ ├── route.dart │ │ ├── widgets.dart │ │ └── widgets │ │ │ ├── history.dart │ │ │ ├── metadata.dart │ │ │ ├── metadata_header.dart │ │ │ ├── metadata_metadata.dart │ │ │ ├── metadata_summary.dart │ │ │ ├── navigation_bar.dart │ │ │ └── open_plex_button.dart │ │ ├── more.dart │ │ ├── more │ │ └── route.dart │ │ ├── recently_added.dart │ │ ├── recently_added │ │ ├── route.dart │ │ ├── widgets.dart │ │ └── widgets │ │ │ └── content_tile.dart │ │ ├── search.dart │ │ ├── search │ │ ├── route.dart │ │ ├── widgets.dart │ │ └── widgets │ │ │ ├── search_appbar.dart │ │ │ ├── search_result_tile.dart │ │ │ └── search_results.dart │ │ ├── statistics.dart │ │ ├── statistics │ │ ├── route.dart │ │ ├── widgets.dart │ │ └── widgets │ │ │ ├── media_tile.dart │ │ │ ├── platform_tile.dart │ │ │ ├── recently_watched_tile.dart │ │ │ ├── stream_tile.dart │ │ │ ├── time_range_button.dart │ │ │ ├── type_button.dart │ │ │ └── user_tile.dart │ │ ├── synced_items.dart │ │ ├── synced_items │ │ ├── route.dart │ │ ├── widgets.dart │ │ └── widgets │ │ │ └── synced_item_tile.dart │ │ ├── tautulli.dart │ │ ├── tautulli │ │ ├── route.dart │ │ ├── widgets.dart │ │ └── widgets │ │ │ ├── appbar_global_settings_action.dart │ │ │ └── navigation_bar.dart │ │ ├── users.dart │ │ ├── users │ │ ├── route.dart │ │ ├── widgets.dart │ │ └── widgets │ │ │ └── user_tile.dart │ │ ├── users_details.dart │ │ └── users_details │ │ ├── route.dart │ │ ├── widgets.dart │ │ └── widgets │ │ ├── history.dart │ │ ├── ip_addresses.dart │ │ ├── navigation_bar.dart │ │ ├── profile.dart │ │ └── synced_items.dart ├── router │ ├── router.dart │ ├── routes.dart │ └── routes │ │ ├── bios.dart │ │ ├── dashboard.dart │ │ ├── external_modules.dart │ │ ├── lidarr.dart │ │ ├── nzbget.dart │ │ ├── radarr.dart │ │ ├── sabnzbd.dart │ │ ├── search.dart │ │ ├── settings.dart │ │ ├── sonarr.dart │ │ └── tautulli.dart ├── system │ ├── bios.dart │ ├── cache │ │ ├── image │ │ │ ├── image_cache.dart │ │ │ └── platform │ │ │ │ ├── image_cache_html.dart │ │ │ │ ├── image_cache_io.dart │ │ │ │ └── image_cache_stub.dart │ │ └── memory │ │ │ ├── memory_cache.dart │ │ │ └── memory_store.dart │ ├── filesystem │ │ ├── file.dart │ │ ├── filesystem.dart │ │ └── platform │ │ │ ├── filesystem_html.dart │ │ │ ├── filesystem_io.dart │ │ │ └── filesystem_stub.dart │ ├── flavor.dart │ ├── logger.dart │ ├── network │ │ ├── network.dart │ │ └── platform │ │ │ ├── network_html.dart │ │ │ ├── network_io.dart │ │ │ └── network_stub.dart │ ├── platform.dart │ ├── quick_actions │ │ ├── platform │ │ │ ├── quick_actions_html.dart │ │ │ ├── quick_actions_io.dart │ │ │ └── quick_actions_stub.dart │ │ └── quick_actions.dart │ ├── recovery_mode │ │ ├── action_tile.dart │ │ ├── actions │ │ │ ├── bootstrap.dart │ │ │ └── clear_database.dart │ │ └── main.dart │ ├── state.dart │ ├── webhooks.dart │ └── window_manager │ │ ├── platform │ │ ├── window_manager_html.dart │ │ ├── window_manager_io.dart │ │ └── window_manager_stub.dart │ │ └── window_manager.dart ├── types │ ├── enum │ │ ├── readable.dart │ │ └── serializable.dart │ ├── exception.dart │ ├── indexer_icon.dart │ ├── list_view_option.dart │ ├── loading_state.dart │ └── log_type.dart ├── utils │ ├── dialogs.dart │ ├── links.dart │ ├── parser.dart │ ├── profile_tools.dart │ ├── uuid.dart │ └── validator.dart ├── vendor.dart └── widgets │ ├── pages │ ├── error_route.dart │ ├── invalid_route.dart │ └── not_enabled.dart │ ├── sheets │ └── download_client │ │ ├── button.dart │ │ └── sheet.dart │ ├── ui.dart │ └── ui │ ├── appbar.dart │ ├── assets.dart │ ├── banner.dart │ ├── block.dart │ ├── block │ ├── block.dart │ └── grid_block.dart │ ├── bottom_bar.dart │ ├── bottom_bar │ ├── action_bar.dart │ ├── action_bar_card.dart │ ├── badge.dart │ └── navigation_bar.dart │ ├── bottom_modal_sheet.dart │ ├── button.dart │ ├── card.dart │ ├── colors.dart │ ├── containers.dart │ ├── containers │ └── button_container.dart │ ├── controllers.dart │ ├── controllers │ └── page_controller.dart │ ├── deprecated.dart │ ├── dialog.dart │ ├── divider.dart │ ├── drawer.dart │ ├── drawer │ ├── drawer.dart │ └── drawer_header.dart │ ├── floating_action_button.dart │ ├── floating_action_button │ ├── floating_action_button.dart │ └── floating_action_button_animated.dart │ ├── grid_view.dart │ ├── grid_view │ └── grid_view_builder.dart │ ├── header.dart │ ├── highlighted_node.dart │ ├── icons.dart │ ├── icons │ ├── icon.dart │ └── icon_button.dart │ ├── images.dart │ ├── images │ ├── network_image.dart │ └── network_image_provider │ │ ├── network_image_provider.dart │ │ └── platform │ │ ├── network_image_provider_html.dart │ │ ├── network_image_provider_io.dart │ │ └── network_image_provider_stub.dart │ ├── input_bar.dart │ ├── linear_indicator.dart │ ├── list_tile.dart │ ├── list_tile │ ├── expandable_list_tile.dart │ └── list_tile.dart │ ├── list_view.dart │ ├── list_view │ ├── custom_scroll_view.dart │ ├── list_view.dart │ ├── list_view_builder.dart │ ├── list_view_modal.dart │ ├── list_view_modal_builder.dart │ ├── paged_list_view.dart │ ├── reorderable_list_view.dart │ ├── reorderable_list_view_builder.dart │ └── reorderable_list_view_dragger.dart │ ├── loader.dart │ ├── message.dart │ ├── mixins.dart │ ├── mixins │ ├── load_callback.dart │ └── scroll_controller.dart │ ├── page_view.dart │ ├── popup_menu_button.dart │ ├── refresh_indicator.dart │ ├── scaffold.dart │ ├── shape.dart │ ├── shimmer.dart │ ├── snackbar.dart │ ├── snackbar │ ├── snackbar.dart │ ├── snackbar_error.dart │ ├── snackbar_info.dart │ └── snackbar_success.dart │ ├── switch.dart │ ├── table.dart │ ├── table │ ├── table_card.dart │ └── table_content.dart │ ├── text.dart │ ├── text_span.dart │ ├── text_style.dart │ └── theme.dart ├── linux ├── .gitignore ├── CMakeLists.txt ├── flutter │ ├── CMakeLists.txt │ ├── generated_plugin_registrant.cc │ ├── generated_plugin_registrant.h │ └── generated_plugins.cmake ├── main.cc ├── my_application.cc └── my_application.h ├── localization ├── dashboard │ ├── ca.json │ ├── de.json │ ├── el.json │ ├── en.json │ ├── es.json │ ├── fr.json │ ├── hr.json │ ├── hu.json │ ├── it.json │ ├── nb-NO.json │ ├── nl.json │ ├── pt.json │ ├── ro.json │ ├── ru.json │ ├── sk.json │ ├── sv.json │ ├── tr.json │ ├── vi.json │ └── zh-Hans.json ├── lidarr │ ├── ca.json │ ├── de.json │ ├── el.json │ ├── en.json │ ├── es.json │ ├── fr.json │ ├── hr.json │ ├── hu.json │ ├── it.json │ ├── nb-NO.json │ ├── nl.json │ ├── pt.json │ ├── ro.json │ ├── ru.json │ ├── sk.json │ ├── sv.json │ ├── tr.json │ ├── vi.json │ └── zh-Hans.json ├── lunasea │ ├── ca.json │ ├── de.json │ ├── el.json │ ├── en.json │ ├── es.json │ ├── fr.json │ ├── hr.json │ ├── hu.json │ ├── it.json │ ├── nb-NO.json │ ├── nl.json │ ├── pt.json │ ├── ro.json │ ├── ru.json │ ├── sk.json │ ├── sv.json │ ├── tr.json │ ├── vi.json │ └── zh-Hans.json ├── nzbget │ ├── ca.json │ ├── de.json │ ├── el.json │ ├── en.json │ ├── es.json │ ├── fr.json │ ├── hr.json │ ├── hu.json │ ├── it.json │ ├── nb-NO.json │ ├── nl.json │ ├── pt.json │ ├── ro.json │ ├── ru.json │ ├── sk.json │ ├── sv.json │ ├── tr.json │ ├── vi.json │ └── zh-Hans.json ├── overseerr │ ├── ca.json │ ├── de.json │ ├── el.json │ ├── en.json │ ├── es.json │ ├── fr.json │ ├── hr.json │ ├── hu.json │ ├── it.json │ ├── nb-NO.json │ ├── nl.json │ ├── pt.json │ ├── ro.json │ ├── ru.json │ ├── sk.json │ ├── sv.json │ ├── tr.json │ ├── vi.json │ └── zh-Hans.json ├── radarr │ ├── ca.json │ ├── de.json │ ├── el.json │ ├── en.json │ ├── es.json │ ├── fr.json │ ├── hr.json │ ├── hu.json │ ├── it.json │ ├── nb-NO.json │ ├── nl.json │ ├── pt.json │ ├── ro.json │ ├── ru.json │ ├── sk.json │ ├── sv.json │ ├── tr.json │ ├── vi.json │ └── zh-Hans.json ├── sabnzbd │ ├── ca.json │ ├── de.json │ ├── el.json │ ├── en.json │ ├── es.json │ ├── fr.json │ ├── hr.json │ ├── hu.json │ ├── it.json │ ├── nb-NO.json │ ├── nl.json │ ├── pt.json │ ├── ro.json │ ├── ru.json │ ├── sk.json │ ├── sv.json │ ├── tr.json │ ├── vi.json │ └── zh-Hans.json ├── search │ ├── ca.json │ ├── de.json │ ├── el.json │ ├── en.json │ ├── es.json │ ├── fr.json │ ├── hr.json │ ├── hu.json │ ├── it.json │ ├── nb-NO.json │ ├── nl.json │ ├── pt.json │ ├── ro.json │ ├── ru.json │ ├── sk.json │ ├── sv.json │ ├── tr.json │ ├── vi.json │ └── zh-Hans.json ├── settings │ ├── ca.json │ ├── de.json │ ├── el.json │ ├── en.json │ ├── es.json │ ├── fr.json │ ├── hr.json │ ├── hu.json │ ├── it.json │ ├── nb-NO.json │ ├── nl.json │ ├── pt.json │ ├── ro.json │ ├── ru.json │ ├── sk.json │ ├── sv.json │ ├── tr.json │ ├── vi.json │ └── zh-Hans.json ├── sonarr │ ├── ca.json │ ├── de.json │ ├── el.json │ ├── en.json │ ├── es.json │ ├── fr.json │ ├── hr.json │ ├── hu.json │ ├── it.json │ ├── nb-NO.json │ ├── nl.json │ ├── pt.json │ ├── ro.json │ ├── ru.json │ ├── sk.json │ ├── sv.json │ ├── tr.json │ ├── vi.json │ └── zh-Hans.json ├── tautulli │ ├── ca.json │ ├── de.json │ ├── el.json │ ├── en.json │ ├── es.json │ ├── fr.json │ ├── hr.json │ ├── hu.json │ ├── it.json │ ├── nb-NO.json │ ├── nl.json │ ├── pt.json │ ├── ro.json │ ├── ru.json │ ├── sk.json │ ├── sv.json │ ├── tr.json │ ├── vi.json │ └── zh-Hans.json └── wake_on_lan │ ├── ca.json │ ├── de.json │ ├── el.json │ ├── en.json │ ├── es.json │ ├── fr.json │ ├── hr.json │ ├── hu.json │ ├── it.json │ ├── nb-NO.json │ ├── nl.json │ ├── pt.json │ ├── ro.json │ ├── ru.json │ ├── sk.json │ ├── sv.json │ ├── tr.json │ ├── vi.json │ └── zh-Hans.json ├── macos ├── .gitignore ├── Flutter │ ├── Flutter-Debug.xcconfig │ ├── Flutter-Release.xcconfig │ └── GeneratedPluginRegistrant.swift ├── Gemfile ├── Gemfile.lock ├── Podfile ├── Podfile.lock ├── Runner.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── xcshareddata │ │ └── xcschemes │ │ └── Runner.xcscheme ├── Runner.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── Runner │ ├── AppDelegate.swift │ ├── Assets.xcassets │ │ └── AppIcon.appiconset │ │ │ ├── Contents.json │ │ │ ├── icon_128.png │ │ │ ├── icon_128@2x.png │ │ │ ├── icon_16.png │ │ │ ├── icon_16@2x.png │ │ │ ├── icon_256.png │ │ │ ├── icon_256@2x.png │ │ │ ├── icon_32.png │ │ │ ├── icon_32@2x.png │ │ │ ├── icon_512.png │ │ │ └── icon_512@2x.png │ ├── Base.lproj │ │ └── MainMenu.xib │ ├── Configs │ │ ├── AppInfo.xcconfig │ │ ├── Debug.xcconfig │ │ ├── Release.xcconfig │ │ └── Warnings.xcconfig │ ├── DebugProfile.entitlements │ ├── Info.plist │ ├── MainFlutterWindow.swift │ └── Release.entitlements └── fastlane │ ├── Appfile │ ├── Fastfile │ ├── Matchfile │ └── README.md ├── package-lock.json ├── package.json ├── pubspec.lock ├── pubspec.yaml ├── scripts ├── generate_changelog.dart ├── generate_debian.dart └── generate_localization.dart ├── snap ├── gui │ ├── lunasea.desktop │ └── lunasea.png └── snapcraft.yaml ├── spider.yaml ├── web ├── android-icon-144x144.png ├── android-icon-192x192.png ├── android-icon-36x36.png ├── android-icon-48x48.png ├── android-icon-72x72.png ├── android-icon-96x96.png ├── apple-icon-114x114.png ├── apple-icon-120x120.png ├── apple-icon-144x144.png ├── apple-icon-152x152.png ├── apple-icon-180x180.png ├── apple-icon-57x57.png ├── apple-icon-60x60.png ├── apple-icon-72x72.png ├── apple-icon-76x76.png ├── apple-icon-precomposed.png ├── apple-icon.png ├── browserconfig.xml ├── favicon-16x16.png ├── favicon-32x32.png ├── favicon-96x96.png ├── favicon.ico ├── firebase-messaging-sw.js ├── index.html ├── manifest.json ├── ms-icon-144x144.png ├── ms-icon-150x150.png ├── ms-icon-310x310.png ├── ms-icon-70x70.png └── splash │ ├── img │ ├── dark-1x.png │ ├── dark-2x.png │ ├── dark-3x.png │ ├── dark-4x.png │ ├── light-1x.png │ ├── light-2x.png │ ├── light-3x.png │ └── light-4x.png │ ├── splash.js │ └── style.css └── windows ├── .gitignore ├── CMakeLists.txt ├── flutter ├── CMakeLists.txt ├── generated_plugin_registrant.cc ├── generated_plugin_registrant.h └── generated_plugins.cmake └── runner ├── CMakeLists.txt ├── Runner.rc ├── flutter_window.cpp ├── flutter_window.h ├── main.cpp ├── resource.h ├── resources └── app_icon.ico ├── runner.exe.manifest ├── utils.cpp ├── utils.h ├── win32_window.cpp └── win32_window.h /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # LunaSea  LunaSea 2 | 3 | > This is a mono-repository for archival of the entire LunaSea project. 4 | -------------------------------------------------------------------------------- /lunasea-cloud-functions/.firebaserc: -------------------------------------------------------------------------------- 1 | { 2 | "projects": { 3 | "default": "comettools-lunasea" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /lunasea-cloud-functions/README.md: -------------------------------------------------------------------------------- 1 | # LunaSea Cloud Functions 2 | 3 | A collection of Cloud Functions that are associated with LunaSea. 4 | 5 | ## Controllers 6 | 7 | | Trigger | Controller | 8 | | :------------ | :--------------------- | 9 | | Auth.onDelete | `deleteUserController` | 10 | -------------------------------------------------------------------------------- /lunasea-cloud-functions/firebase.json: -------------------------------------------------------------------------------- 1 | { 2 | "functions": { 3 | "predeploy": [ 4 | "npm --prefix \"$RESOURCE_DIR\" run lint", 5 | "npm --prefix \"$RESOURCE_DIR\" run build" 6 | ] 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /lunasea-cloud-functions/functions/.eslintignore: -------------------------------------------------------------------------------- 1 | .eslintrc.js 2 | -------------------------------------------------------------------------------- /lunasea-cloud-functions/functions/.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled JavaScript files 2 | lib/**/*.js 3 | lib/**/*.js.map 4 | 5 | # TypeScript v1 declaration files 6 | typings/ 7 | 8 | # Node.js dependency directory 9 | node_modules/ 10 | -------------------------------------------------------------------------------- /lunasea-cloud-functions/functions/.prettierignore: -------------------------------------------------------------------------------- 1 | .eslintrc.js -------------------------------------------------------------------------------- /lunasea-cloud-functions/functions/.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "trailingComma": "all", 3 | "tabWidth": 2, 4 | "semi": true, 5 | "singleQuote": true, 6 | "bracketSpacing": true, 7 | "arrowParens": "always", 8 | "endOfLine": "lf", 9 | "printWidth": 80 10 | } -------------------------------------------------------------------------------- /lunasea-cloud-functions/functions/src/controllers/delete_user.ts: -------------------------------------------------------------------------------- 1 | import * as functions from 'firebase-functions'; 2 | import { Firestore, Storage } from '../services'; 3 | 4 | export const deleteUserController = functions.auth 5 | .user() 6 | .onDelete(async (user: functions.auth.UserRecord) => { 7 | await Firestore.deleteUser(user); 8 | await Storage.deleteUser(user); 9 | }); 10 | -------------------------------------------------------------------------------- /lunasea-cloud-functions/functions/src/controllers/index.ts: -------------------------------------------------------------------------------- 1 | import { deleteUserController } from './delete_user'; 2 | export { deleteUserController }; 3 | -------------------------------------------------------------------------------- /lunasea-cloud-functions/functions/src/index.ts: -------------------------------------------------------------------------------- 1 | import * as admin from 'firebase-admin'; 2 | import { deleteUserController } from './controllers'; 3 | 4 | admin.initializeApp(); 5 | export { deleteUserController }; 6 | -------------------------------------------------------------------------------- /lunasea-cloud-functions/functions/src/services/firestore/index.ts: -------------------------------------------------------------------------------- 1 | import * as admin from 'firebase-admin'; 2 | import { deleteUser } from './delete_user'; 3 | 4 | const getUserRootPath = (user: admin.auth.UserRecord) => `users/${user.uid}`; 5 | 6 | export { deleteUser, getUserRootPath }; 7 | -------------------------------------------------------------------------------- /lunasea-cloud-functions/functions/src/services/index.ts: -------------------------------------------------------------------------------- 1 | import * as Firestore from './firestore'; 2 | import * as Storage from './storage'; 3 | export { Firestore, Storage }; 4 | -------------------------------------------------------------------------------- /lunasea-cloud-functions/functions/src/services/storage/index.ts: -------------------------------------------------------------------------------- 1 | import * as admin from 'firebase-admin'; 2 | import { deleteUser } from './delete_user'; 3 | 4 | const getBackupBucket = () => admin.storage().bucket('backup.lunasea.app'); 5 | 6 | export { deleteUser, getBackupBucket }; 7 | -------------------------------------------------------------------------------- /lunasea-cloud-functions/functions/tsconfig.dev.json: -------------------------------------------------------------------------------- 1 | { 2 | "include": [ 3 | ".eslintrc.js" 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /lunasea-cloud-functions/functions/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "noImplicitReturns": true, 5 | "noUnusedLocals": true, 6 | "outDir": "lib", 7 | "sourceMap": true, 8 | "strict": true, 9 | "target": "es2017" 10 | }, 11 | "compileOnSave": true, 12 | "include": [ 13 | "src" 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /lunasea-docs/.gitbook/assets/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea-docs/.gitbook/assets/background.png -------------------------------------------------------------------------------- /lunasea-docs/.gitbook/assets/firebase_crashlytics_example (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea-docs/.gitbook/assets/firebase_crashlytics_example (1).png -------------------------------------------------------------------------------- /lunasea-docs/.gitbook/assets/firebase_crashlytics_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea-docs/.gitbook/assets/firebase_crashlytics_example.png -------------------------------------------------------------------------------- /lunasea-docs/.gitbook/assets/img_1184.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea-docs/.gitbook/assets/img_1184.jpg -------------------------------------------------------------------------------- /lunasea-docs/.gitbook/assets/lidarr_notification_example (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea-docs/.gitbook/assets/lidarr_notification_example (1).png -------------------------------------------------------------------------------- /lunasea-docs/.gitbook/assets/lidarr_notification_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea-docs/.gitbook/assets/lidarr_notification_example.png -------------------------------------------------------------------------------- /lunasea-docs/.gitbook/assets/overseerr_notification_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea-docs/.gitbook/assets/overseerr_notification_example.png -------------------------------------------------------------------------------- /lunasea-docs/.gitbook/assets/overseerr_notification_sample_v2 (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea-docs/.gitbook/assets/overseerr_notification_sample_v2 (1).png -------------------------------------------------------------------------------- /lunasea-docs/.gitbook/assets/overseerr_notification_sample_v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea-docs/.gitbook/assets/overseerr_notification_sample_v2.png -------------------------------------------------------------------------------- /lunasea-docs/.gitbook/assets/radarr_notification_example (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea-docs/.gitbook/assets/radarr_notification_example (1).png -------------------------------------------------------------------------------- /lunasea-docs/.gitbook/assets/radarr_notification_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea-docs/.gitbook/assets/radarr_notification_example.png -------------------------------------------------------------------------------- /lunasea-docs/.gitbook/assets/sonarr_notification_example (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea-docs/.gitbook/assets/sonarr_notification_example (1).png -------------------------------------------------------------------------------- /lunasea-docs/.gitbook/assets/sonarr_notification_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea-docs/.gitbook/assets/sonarr_notification_example.png -------------------------------------------------------------------------------- /lunasea-docs/modules/nzbget.md: -------------------------------------------------------------------------------- 1 | # NZBGet 2 | 3 | {% hint style="info" %} 4 | Coming Soon! 5 | {% endhint %} 6 | -------------------------------------------------------------------------------- /lunasea-docs/modules/overseerr.md: -------------------------------------------------------------------------------- 1 | # Overseerr 2 | 3 | {% hint style="info" %} 4 | Coming Soon! 5 | {% endhint %} 6 | -------------------------------------------------------------------------------- /lunasea-docs/modules/sabnzbd.md: -------------------------------------------------------------------------------- 1 | # SABnzbd 2 | 3 | {% hint style="info" %} 4 | Coming Soon! 5 | {% endhint %} 6 | -------------------------------------------------------------------------------- /lunasea-docs/modules/tautulli.md: -------------------------------------------------------------------------------- 1 | # Tautulli 2 | 3 | {% hint style="info" %} 4 | Coming Soon! 5 | {% endhint %} 6 | -------------------------------------------------------------------------------- /lunasea-docs/modules/wake-on-lan.md: -------------------------------------------------------------------------------- 1 | # Wake on LAN 2 | 3 | {% hint style="info" %} 4 | Coming Soon! 5 | {% endhint %} 6 | -------------------------------------------------------------------------------- /lunasea-notification-service/.dockerignore: -------------------------------------------------------------------------------- 1 | data/ 2 | node_modules/ 3 | .dockerignore 4 | .env 5 | .env.sample 6 | .eslintignore 7 | .eslintrc.json 8 | .gitignore 9 | .prettierignore 10 | .prettierrc.json 11 | Dockerfile 12 | LICENSE 13 | nodemon.json 14 | npm-debug.log 15 | README.md 16 | server.log 17 | serviceaccount.json 18 | -------------------------------------------------------------------------------- /lunasea-notification-service/.env.sample: -------------------------------------------------------------------------------- 1 | FIREBASE_CLIENT_EMAIL= 2 | FIREBASE_DATABASE_URL= 3 | FIREBASE_PRIVATE_KEY= 4 | FIREBASE_PROJECT_ID= 5 | FANART_TV_API_KEY= 6 | THEMOVIEDB_API_KEY= 7 | REDIS_USE_TLS="false" 8 | REDIS_HOST= 9 | REDIS_PORT="6379" 10 | REDIS_USER="default" 11 | REDIS_PASS="" 12 | -------------------------------------------------------------------------------- /lunasea-notification-service/.eslintignore: -------------------------------------------------------------------------------- 1 | dist/** 2 | node_modules/** 3 | .eslintrc.json 4 | .prettierrc.json 5 | nodemon.json 6 | package-lock.json 7 | package.json 8 | tsconfig.json 9 | -------------------------------------------------------------------------------- /lunasea-notification-service/.husky/.gitignore: -------------------------------------------------------------------------------- 1 | _ 2 | -------------------------------------------------------------------------------- /lunasea-notification-service/.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | npx --no-install pretty-quick --staged 5 | -------------------------------------------------------------------------------- /lunasea-notification-service/.npmrc: -------------------------------------------------------------------------------- 1 | message="chore(release): v%s" -------------------------------------------------------------------------------- /lunasea-notification-service/.prettierignore: -------------------------------------------------------------------------------- 1 | dist/** 2 | node_modules/** 3 | package-lock.json 4 | -------------------------------------------------------------------------------- /lunasea-notification-service/.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "trailingComma": "all", 3 | "tabWidth": 2, 4 | "semi": true, 5 | "singleQuote": true, 6 | "bracketSpacing": true, 7 | "arrowParens": "always", 8 | "endOfLine": "lf", 9 | "printWidth": 100 10 | } 11 | -------------------------------------------------------------------------------- /lunasea-notification-service/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "yaml.schemas": { 3 | "https://json.schemastore.org/github-workflow.json": "file:///Users/jagandeepbrar/Git/LunaSea-Notification-Service/.github/workflows/build.yaml" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /lunasea-notification-service/nodemon.json: -------------------------------------------------------------------------------- 1 | { 2 | "restartable": "rs", 3 | "ignore": [".git", "node_modules", "dist"], 4 | "watch": ["src"], 5 | "exec": "ts-node -r dotenv/config", 6 | "env": { 7 | "NODE_ENV": "development" 8 | }, 9 | "ext": "js,json,ts" 10 | } 11 | -------------------------------------------------------------------------------- /lunasea-notification-service/src/api/index.ts: -------------------------------------------------------------------------------- 1 | import * as FanartTV from './fanart_tv'; 2 | import * as TheMovieDB from './the_movie_db'; 3 | export { FanartTV, TheMovieDB }; 4 | -------------------------------------------------------------------------------- /lunasea-notification-service/src/index.ts: -------------------------------------------------------------------------------- 1 | import { Server } from './server'; 2 | import { Firebase, Redis } from './services'; 3 | 4 | Firebase.initialize(); 5 | Redis.initialize(); 6 | Server.start(); 7 | -------------------------------------------------------------------------------- /lunasea-notification-service/src/modules/custom/index.ts: -------------------------------------------------------------------------------- 1 | import * as Controller from './controller'; 2 | export { Controller }; 3 | -------------------------------------------------------------------------------- /lunasea-notification-service/src/modules/lidarr/index.ts: -------------------------------------------------------------------------------- 1 | import * as Controller from './controller'; 2 | import * as Models from './models'; 3 | import * as Payloads from './payloads'; 4 | export { Controller, Models, Payloads }; 5 | -------------------------------------------------------------------------------- /lunasea-notification-service/src/modules/overseerr/index.ts: -------------------------------------------------------------------------------- 1 | import * as Controller from './controller'; 2 | import * as Models from './models'; 3 | import * as Payloads from './payloads'; 4 | export { Controller, Models, Payloads }; 5 | -------------------------------------------------------------------------------- /lunasea-notification-service/src/modules/radarr/index.ts: -------------------------------------------------------------------------------- 1 | import * as Controller from './controller'; 2 | import * as Models from './models'; 3 | import * as Payloads from './payloads'; 4 | export { Controller, Models, Payloads }; 5 | -------------------------------------------------------------------------------- /lunasea-notification-service/src/modules/sonarr/index.ts: -------------------------------------------------------------------------------- 1 | import * as Controller from './controller'; 2 | import * as Models from './models'; 3 | import * as Payloads from './payloads'; 4 | export { Controller, Models, Payloads }; 5 | -------------------------------------------------------------------------------- /lunasea-notification-service/src/modules/tautulli/index.ts: -------------------------------------------------------------------------------- 1 | import * as Controller from './controller'; 2 | import * as Models from './models'; 3 | import * as Payloads from './payloads'; 4 | export { Controller, Models, Payloads }; 5 | -------------------------------------------------------------------------------- /lunasea-notification-service/src/server/index.ts: -------------------------------------------------------------------------------- 1 | import * as Middleware from './middleware'; 2 | import * as Models from './models'; 3 | import * as Server from './server'; 4 | export { Server, Middleware, Models }; 5 | -------------------------------------------------------------------------------- /lunasea-notification-service/src/server/models.ts: -------------------------------------------------------------------------------- 1 | export interface Response { 2 | message: string; 3 | } 4 | -------------------------------------------------------------------------------- /lunasea-notification-service/src/services/index.ts: -------------------------------------------------------------------------------- 1 | import * as Firebase from './firebase'; 2 | import * as Redis from './redis'; 3 | export { Firebase, Redis }; 4 | -------------------------------------------------------------------------------- /lunasea-notification-service/src/utils/index.ts: -------------------------------------------------------------------------------- 1 | import * as Constants from './constants'; 2 | import * as Environment from './environment'; 3 | import * as Notifications from './notifications'; 4 | import { Logger } from './logger'; 5 | 6 | export { Constants, Environment, Notifications, Logger }; 7 | -------------------------------------------------------------------------------- /lunasea-notification-service/src/utils/logger.ts: -------------------------------------------------------------------------------- 1 | import pino from 'pino'; 2 | 3 | export const Logger = pino({ 4 | mixin: () => { 5 | return { 6 | service: 'lunasea-notification-service', 7 | version: process.env.npm_package_version, 8 | }; 9 | }, 10 | level: process.env.NODE_ENV === 'development' ? 'debug' : 'info', 11 | }); 12 | 13 | process.on('uncaughtException', (e) => Logger.error(e)); 14 | process.on('unhandledRejection', (e) => Logger.error(e)); 15 | -------------------------------------------------------------------------------- /lunasea-notification-service/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "esModuleInterop": true, 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "outDir": "dist", 7 | "sourceMap": true, 8 | "strict": true, 9 | "target": "es2018", 10 | "resolveJsonModule": true, 11 | "skipLibCheck": true 12 | }, 13 | "exclude": ["node_modules", "dist", ".git"], 14 | "include": ["src/**/*"], 15 | "lib": ["ES2018"] 16 | } 17 | -------------------------------------------------------------------------------- /lunasea/.commitlintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": [ 3 | "@commitlint/config-conventional" 4 | ], 5 | "rules": { 6 | "type-enum": [ 7 | 2, 8 | "always", 9 | [ 10 | "chore", 11 | "docs", 12 | "feat", 13 | "fix", 14 | "refactor", 15 | "release" 16 | ] 17 | ] 18 | } 19 | } -------------------------------------------------------------------------------- /lunasea/.dockerignore: -------------------------------------------------------------------------------- 1 | .git/ 2 | .dart_tool/ 3 | android/ 4 | build/ 5 | ios/ 6 | linux/ 7 | localization/ 8 | macos/ 9 | node_modules/ 10 | shaders/ 11 | snap/ 12 | windows/ 13 | -------------------------------------------------------------------------------- /lunasea/.firebaserc: -------------------------------------------------------------------------------- 1 | { 2 | "projects": { 3 | "default": "comettools-lunasea" 4 | } 5 | } -------------------------------------------------------------------------------- /lunasea/.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: jagandeepbrar 2 | ko_fi: jagandeepbrar 3 | -------------------------------------------------------------------------------- /lunasea/.github/ISSUE_TEMPLATE/other.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Other 3 | about: Anything else for LunaSea 4 | title: "[Other] " 5 | labels: other 6 | assignees: '' 7 | 8 | --- 9 | -------------------------------------------------------------------------------- /lunasea/.husky/commit-msg: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | npx --no -- commitlint --edit 5 | -------------------------------------------------------------------------------- /lunasea/.husky/prepare-commit-msg: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | exec < /dev/tty && npx cz --hook || true 5 | -------------------------------------------------------------------------------- /lunasea/.prettierignore: -------------------------------------------------------------------------------- 1 | CHANGELOG.md 2 | -------------------------------------------------------------------------------- /lunasea/.ruby-version: -------------------------------------------------------------------------------- 1 | 2.7.6 -------------------------------------------------------------------------------- /lunasea/android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | -------------------------------------------------------------------------------- /lunasea/android/Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | 3 | gem "fastlane" 4 | gem "abbrev" 5 | gem "logger" 6 | gem "mutex_m" 7 | gem "csv" 8 | -------------------------------------------------------------------------------- /lunasea/android/app/src/main/kotlin/app/lunasea/lunasea/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package app.lunasea.lunasea 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | import android.os.Build 6 | import android.view.ViewTreeObserver 7 | import android.view.WindowManager 8 | class MainActivity: FlutterActivity() { 9 | } -------------------------------------------------------------------------------- /lunasea/android/app/src/main/res/drawable-hdpi/notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/android/app/src/main/res/drawable-hdpi/notification.png -------------------------------------------------------------------------------- /lunasea/android/app/src/main/res/drawable-hdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/android/app/src/main/res/drawable-hdpi/splash.png -------------------------------------------------------------------------------- /lunasea/android/app/src/main/res/drawable-mdpi/notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/android/app/src/main/res/drawable-mdpi/notification.png -------------------------------------------------------------------------------- /lunasea/android/app/src/main/res/drawable-mdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/android/app/src/main/res/drawable-mdpi/splash.png -------------------------------------------------------------------------------- /lunasea/android/app/src/main/res/drawable-v21/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/android/app/src/main/res/drawable-v21/background.png -------------------------------------------------------------------------------- /lunasea/android/app/src/main/res/drawable-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /lunasea/android/app/src/main/res/drawable-xhdpi/notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/android/app/src/main/res/drawable-xhdpi/notification.png -------------------------------------------------------------------------------- /lunasea/android/app/src/main/res/drawable-xhdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/android/app/src/main/res/drawable-xhdpi/splash.png -------------------------------------------------------------------------------- /lunasea/android/app/src/main/res/drawable-xxhdpi/notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/android/app/src/main/res/drawable-xxhdpi/notification.png -------------------------------------------------------------------------------- /lunasea/android/app/src/main/res/drawable-xxhdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/android/app/src/main/res/drawable-xxhdpi/splash.png -------------------------------------------------------------------------------- /lunasea/android/app/src/main/res/drawable-xxxhdpi/notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/android/app/src/main/res/drawable-xxxhdpi/notification.png -------------------------------------------------------------------------------- /lunasea/android/app/src/main/res/drawable-xxxhdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/android/app/src/main/res/drawable-xxxhdpi/splash.png -------------------------------------------------------------------------------- /lunasea/android/app/src/main/res/drawable/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/android/app/src/main/res/drawable/background.png -------------------------------------------------------------------------------- /lunasea/android/app/src/main/res/drawable/ic_notification.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /lunasea/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /lunasea/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /lunasea/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /lunasea/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /lunasea/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /lunasea/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /lunasea/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /lunasea/android/app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #32323E 4 | #32323E 5 | #4ECCA3 6 | -------------------------------------------------------------------------------- /lunasea/android/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | [{\"include\": \"https://www.lunasea.app/.well-known/assetlinks.json\"}] 3 | 4 | -------------------------------------------------------------------------------- /lunasea/android/build.gradle: -------------------------------------------------------------------------------- 1 | allprojects { 2 | repositories { 3 | google() 4 | mavenCentral() 5 | } 6 | } 7 | 8 | rootProject.buildDir = '../build' 9 | subprojects { 10 | project.buildDir = "${rootProject.buildDir}/${project.name}" 11 | } 12 | subprojects { 13 | project.evaluationDependsOn(':app') 14 | } 15 | 16 | tasks.register("clean", Delete) { 17 | delete rootProject.buildDir 18 | } 19 | -------------------------------------------------------------------------------- /lunasea/android/fastlane/Appfile: -------------------------------------------------------------------------------- 1 | package_name("app.lunasea.lunasea") 2 | -------------------------------------------------------------------------------- /lunasea/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.useAndroidX=true 3 | android.enableJetifier=true 4 | -------------------------------------------------------------------------------- /lunasea/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | zipStoreBase=GRADLE_USER_HOME 4 | zipStorePath=wrapper/dists 5 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-all.zip 6 | -------------------------------------------------------------------------------- /lunasea/android/key.properties.sample: -------------------------------------------------------------------------------- 1 | storePassword= 2 | keyPassword= 3 | keyAlias= 4 | storeFile=../key.jks 5 | -------------------------------------------------------------------------------- /lunasea/android/settings_aar.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | -------------------------------------------------------------------------------- /lunasea/assets/LunaBrandIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/assets/LunaBrandIcons.ttf -------------------------------------------------------------------------------- /lunasea/assets/changelog.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /lunasea/assets/changelog_stable.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /lunasea/assets/icon/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/assets/icon/icon.png -------------------------------------------------------------------------------- /lunasea/assets/icon/icon_adaptive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/assets/icon/icon_adaptive.png -------------------------------------------------------------------------------- /lunasea/assets/icon/icon_linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/assets/icon/icon_linux.png -------------------------------------------------------------------------------- /lunasea/assets/icon/icon_web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/assets/icon/icon_web.png -------------------------------------------------------------------------------- /lunasea/assets/icon/icon_windows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/assets/icon/icon_windows.png -------------------------------------------------------------------------------- /lunasea/assets/images/branding_full.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/assets/images/branding_full.png -------------------------------------------------------------------------------- /lunasea/assets/images/branding_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/assets/images/branding_logo.png -------------------------------------------------------------------------------- /lunasea/assets/localization/nb.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /lunasea/assets/localization/vi.json: -------------------------------------------------------------------------------- 1 | { 2 | "lunasea.Add": "Thêm", 3 | "lunasea.ChangeProfiles": "Thay đổi thông tin", 4 | "lunasea.Changelog": "Bản ghi các thay đổi", 5 | "lunasea.CopiedContentToTheClipboard": "Nội dung đã được sao chép vào Clipboard" 6 | } -------------------------------------------------------------------------------- /lunasea/assets/localization/zh.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /lunasea/build.yaml: -------------------------------------------------------------------------------- 1 | targets: 2 | $default: 3 | sources: 4 | - lib/** 5 | - pubspec.* 6 | - $package$ 7 | builders: 8 | # Hive 9 | hive_generator: 10 | enabled: true 11 | # JSON Serializable 12 | json_serializable: 13 | enabled: true 14 | options: 15 | explicit_to_json: true 16 | include_if_null: false 17 | 18 | # Retrofit 19 | retrofit_generator: 20 | enabled: true 21 | -------------------------------------------------------------------------------- /lunasea/debian/DEBIAN/control: -------------------------------------------------------------------------------- 1 | Package:LunaSea 2 | Architecture:amd64 3 | Essential:no 4 | Priority:optional 5 | Maintainer:LunaSea Support 6 | Description:Self-hosted software controller built using Flutter 7 | -------------------------------------------------------------------------------- /lunasea/debian/DEBIAN/postinst: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ln -sf '/usr/share/lunasea/lunasea' '/usr/bin/lunasea' 4 | -------------------------------------------------------------------------------- /lunasea/debian/DEBIAN/postrm: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | rm -f '/usr/bin/lunasea' 4 | -------------------------------------------------------------------------------- /lunasea/debian/usr/share/applications/lunasea.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=LunaSea 3 | Comment=Self-hosted software controller built using Flutter 4 | Icon=/usr/share/icons/lunasea.png 5 | Terminal=false 6 | Type=Application 7 | Categories=Utilities;Entertainment; 8 | Exec=/usr/bin/lunasea 9 | TryExec=/usr/bin/lunasea 10 | -------------------------------------------------------------------------------- /lunasea/debian/usr/share/icons/lunasea.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/debian/usr/share/icons/lunasea.png -------------------------------------------------------------------------------- /lunasea/environment_config.yaml: -------------------------------------------------------------------------------- 1 | environment_config: 2 | path: system/environment.dart 3 | class: LunaEnvironment 4 | 5 | fields: 6 | build: 7 | type: int 8 | default: 9999999999 9 | env_var: BUILD 10 | commit: 11 | type: String 12 | default: master 13 | env_var: COMMIT 14 | flavor: 15 | type: String 16 | default: edge 17 | env_var: FLAVOR 18 | -------------------------------------------------------------------------------- /lunasea/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 3 | #include "Generated.xcconfig" 4 | -------------------------------------------------------------------------------- /lunasea/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 3 | #include "Generated.xcconfig" 4 | -------------------------------------------------------------------------------- /lunasea/ios/Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | 3 | gem "fastlane" 4 | gem "cocoapods" 5 | gem "abbrev" 6 | gem "logger" 7 | gem "mutex_m" 8 | gem "csv" 9 | -------------------------------------------------------------------------------- /lunasea/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /lunasea/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /lunasea/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /lunasea/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /lunasea/ios/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import Flutter 3 | 4 | @main 5 | @objc class AppDelegate: FlutterAppDelegate { 6 | override func application( 7 | _ application: UIApplication, 8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? 9 | ) -> Bool { 10 | GeneratedPluginRegistrant.register(with: self) 11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png -------------------------------------------------------------------------------- /lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png -------------------------------------------------------------------------------- /lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png -------------------------------------------------------------------------------- /lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png -------------------------------------------------------------------------------- /lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png -------------------------------------------------------------------------------- /lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png -------------------------------------------------------------------------------- /lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /lunasea/ios/Runner/Assets.xcassets/LaunchBackground.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "background.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lunasea/ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png -------------------------------------------------------------------------------- /lunasea/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /lunasea/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /lunasea/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /lunasea/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /lunasea/ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" -------------------------------------------------------------------------------- /lunasea/ios/Runner/Runner.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.developer.associated-domains 6 | 7 | webcredentials:www.lunasea.app 8 | 9 | com.apple.developer.networking.wifi-info 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /lunasea/ios/fastlane/Appfile: -------------------------------------------------------------------------------- 1 | app_identifier("app.lunasea.lunasea") 2 | apple_id(ENV["APPLE_ID"]) 3 | itc_team_id(ENV["APPLE_ITC_TEAM_ID"]) 4 | team_id(ENV["APPLE_TEAM_ID"]) 5 | -------------------------------------------------------------------------------- /lunasea/ios/fastlane/Matchfile: -------------------------------------------------------------------------------- 1 | git_url("git@github.com:JagandeepBrar/fastlane-match-storage.git") 2 | storage_mode("git") 3 | app_identifier(["app.lunasea.lunasea"]) 4 | platform("ios") 5 | -------------------------------------------------------------------------------- /lunasea/lib/api/radarr/commands/command/backup.dart: -------------------------------------------------------------------------------- 1 | part of radarr_commands; 2 | 3 | Future _commandBackup(Dio client) async { 4 | Response response = await client.post('command', data: { 5 | 'name': 'Backup', 6 | }); 7 | return RadarrCommand.fromJson(response.data); 8 | } 9 | -------------------------------------------------------------------------------- /lunasea/lib/api/radarr/commands/command/downloaded_movies_scan.dart: -------------------------------------------------------------------------------- 1 | part of radarr_commands; 2 | 3 | Future _commandDownloadedMoviesScan( 4 | Dio client, { 5 | required String path, 6 | }) async { 7 | Response response = await client.post('command', data: { 8 | 'name': 'DownloadedMoviesScan', 9 | 'path': path, 10 | }); 11 | return RadarrCommand.fromJson(response.data); 12 | } 13 | -------------------------------------------------------------------------------- /lunasea/lib/api/radarr/commands/command/missing_movie_search.dart: -------------------------------------------------------------------------------- 1 | part of radarr_commands; 2 | 3 | Future _commandMissingMovieSearch(Dio client) async { 4 | Response response = await client.post('command', data: { 5 | 'name': 'MissingMoviesSearch', 6 | }); 7 | return RadarrCommand.fromJson(response.data); 8 | } 9 | -------------------------------------------------------------------------------- /lunasea/lib/api/radarr/commands/command/movies_search.dart: -------------------------------------------------------------------------------- 1 | part of radarr_commands; 2 | 3 | Future _commandMoviesSearch( 4 | Dio client, { 5 | required List movieIds, 6 | }) async { 7 | Response response = await client.post('command', data: { 8 | 'name': 'MoviesSearch', 9 | 'movieIds': movieIds, 10 | }); 11 | return RadarrCommand.fromJson(response.data); 12 | } 13 | -------------------------------------------------------------------------------- /lunasea/lib/api/radarr/commands/command/refresh_monitored_downloads.dart: -------------------------------------------------------------------------------- 1 | part of radarr_commands; 2 | 3 | Future _commandRefreshMonitoredDownloads(Dio client) async { 4 | Response response = await client.post('command', data: { 5 | 'name': 'RefreshMonitoredDownloads', 6 | }); 7 | return RadarrCommand.fromJson(response.data); 8 | } 9 | -------------------------------------------------------------------------------- /lunasea/lib/api/radarr/commands/command/refresh_movie.dart: -------------------------------------------------------------------------------- 1 | part of radarr_commands; 2 | 3 | Future _commandRefreshMovie( 4 | Dio client, { 5 | List? movieIds, 6 | }) async { 7 | Response response = await client.post('command', data: { 8 | 'name': 'RefreshMovie', 9 | if (movieIds != null) 'movieIds': movieIds, 10 | }); 11 | return RadarrCommand.fromJson(response.data); 12 | } 13 | -------------------------------------------------------------------------------- /lunasea/lib/api/radarr/commands/command/rss_sync.dart: -------------------------------------------------------------------------------- 1 | part of radarr_commands; 2 | 3 | Future _commandRSSSync(Dio client) async { 4 | Response response = await client.post('command', data: { 5 | 'name': 'RssSync', 6 | }); 7 | return RadarrCommand.fromJson(response.data); 8 | } 9 | -------------------------------------------------------------------------------- /lunasea/lib/api/radarr/commands/credits/get_credits.dart: -------------------------------------------------------------------------------- 1 | part of radarr_commands; 2 | 3 | Future> _commandGetCredits( 4 | Dio client, { 5 | required int movieId, 6 | }) async { 7 | Response response = await client.get('credit', queryParameters: { 8 | 'movieId': movieId, 9 | }); 10 | return (response.data as List) 11 | .map((credit) => RadarrMovieCredits.fromJson(credit)) 12 | .toList(); 13 | } 14 | -------------------------------------------------------------------------------- /lunasea/lib/api/radarr/commands/exclusions/get_all_exclusions.dart: -------------------------------------------------------------------------------- 1 | part of radarr_commands; 2 | 3 | Future> _commandGetAllExclusions(Dio client) async { 4 | Response response = await client.get('exclusions'); 5 | return (response.data as List) 6 | .map((exclusion) => RadarrExclusion.fromJson(exclusion)) 7 | .toList(); 8 | } 9 | -------------------------------------------------------------------------------- /lunasea/lib/api/radarr/commands/exclusions/get_exclusion.dart: -------------------------------------------------------------------------------- 1 | part of radarr_commands; 2 | 3 | Future _commandGetExclusions( 4 | Dio client, { 5 | required int exclusionId, 6 | }) async { 7 | Response response = await client.get('exclusions/$exclusionId'); 8 | return RadarrExclusion.fromJson(response.data); 9 | } 10 | -------------------------------------------------------------------------------- /lunasea/lib/api/radarr/commands/extra_file/get_extra_files.dart: -------------------------------------------------------------------------------- 1 | part of radarr_commands; 2 | 3 | Future> _commandGetExtraFiles( 4 | Dio client, { 5 | required int movieId, 6 | }) async { 7 | Response response = await client.get('extraFile', queryParameters: { 8 | 'movieId': movieId, 9 | }); 10 | return (response.data as List) 11 | .map((credit) => RadarrExtraFile.fromJson(credit)) 12 | .toList(); 13 | } 14 | -------------------------------------------------------------------------------- /lunasea/lib/api/radarr/commands/filesystem/get_all_disk_spaces.dart: -------------------------------------------------------------------------------- 1 | part of radarr_commands; 2 | 3 | Future> _commandGetAllDiskSpaces(Dio client) async { 4 | Response response = await client.get('diskspace'); 5 | return (response.data as List) 6 | .map((exclusion) => RadarrDiskSpace.fromJson(exclusion)) 7 | .toList(); 8 | } 9 | -------------------------------------------------------------------------------- /lunasea/lib/api/radarr/commands/health_check/get_all_health_checks.dart: -------------------------------------------------------------------------------- 1 | part of radarr_commands; 2 | 3 | Future> _commandGetAllHealthChecks(Dio client) async { 4 | Response response = await client.get('health'); 5 | return (response.data as List) 6 | .map((health) => RadarrHealthCheck.fromJson(health)) 7 | .toList(); 8 | } 9 | -------------------------------------------------------------------------------- /lunasea/lib/api/radarr/commands/history/get_movie_history.dart: -------------------------------------------------------------------------------- 1 | part of radarr_commands; 2 | 3 | Future> _commandGetMovieHistory( 4 | Dio client, { 5 | required int movieId, 6 | }) async { 7 | Response response = await client.get('history/movie', queryParameters: { 8 | 'movieId': movieId, 9 | }); 10 | return (response.data as List) 11 | .map((file) => RadarrHistoryRecord.fromJson(file)) 12 | .toList(); 13 | } 14 | -------------------------------------------------------------------------------- /lunasea/lib/api/radarr/commands/import_list/get_all_import_lists.dart: -------------------------------------------------------------------------------- 1 | part of radarr_commands; 2 | 3 | Future> _commandGetAllImportLists(Dio client) async { 4 | Response response = await client.get('importlist'); 5 | return (response.data as List) 6 | .map((list) => RadarrImportList.fromJson(list)) 7 | .toList(); 8 | } 9 | -------------------------------------------------------------------------------- /lunasea/lib/api/radarr/commands/import_list/get_import_list.dart: -------------------------------------------------------------------------------- 1 | part of radarr_commands; 2 | 3 | Future _commandGetImportList( 4 | Dio client, { 5 | required int listId, 6 | }) async { 7 | Response response = await client.get('importlist/$listId'); 8 | return RadarrImportList.fromJson(response.data); 9 | } 10 | -------------------------------------------------------------------------------- /lunasea/lib/api/radarr/commands/language/get_all_languages.dart: -------------------------------------------------------------------------------- 1 | part of radarr_commands; 2 | 3 | Future> _commandGetAllLanguages(Dio client) async { 4 | Response response = await client.get('language'); 5 | return (response.data as List) 6 | .map((profile) => RadarrLanguage.fromJson(profile)) 7 | .toList(); 8 | } 9 | -------------------------------------------------------------------------------- /lunasea/lib/api/radarr/commands/language/get_language.dart: -------------------------------------------------------------------------------- 1 | part of radarr_commands; 2 | 3 | Future _commandGetLanguage( 4 | Dio client, { 5 | required int languageId, 6 | }) async { 7 | Response response = await client.get('language/$languageId'); 8 | return RadarrLanguage.fromJson(response.data); 9 | } 10 | -------------------------------------------------------------------------------- /lunasea/lib/api/radarr/commands/movie/delete_movie.dart: -------------------------------------------------------------------------------- 1 | part of radarr_commands; 2 | 3 | Future _commandDeleteMovie( 4 | Dio client, { 5 | required int movieId, 6 | bool addImportExclusion = false, 7 | bool deleteFiles = false, 8 | }) async { 9 | await client.delete('movie/$movieId', queryParameters: { 10 | 'addImportExclusion': addImportExclusion, 11 | 'deleteFiles': deleteFiles, 12 | }); 13 | return; 14 | } 15 | -------------------------------------------------------------------------------- /lunasea/lib/api/radarr/commands/movie/get_all_movies.dart: -------------------------------------------------------------------------------- 1 | part of radarr_commands; 2 | 3 | Future> _commandGetAllMovies(Dio client) async { 4 | Response response = await client.get('movie'); 5 | return (response.data as List) 6 | .map((series) => RadarrMovie.fromJson(series)) 7 | .toList(); 8 | } 9 | -------------------------------------------------------------------------------- /lunasea/lib/api/radarr/commands/movie/get_movie.dart: -------------------------------------------------------------------------------- 1 | part of radarr_commands; 2 | 3 | Future _commandGetMovie( 4 | Dio client, { 5 | required int movieId, 6 | }) async { 7 | Response response = await client.get('movie/$movieId'); 8 | return RadarrMovie.fromJson(response.data); 9 | } 10 | -------------------------------------------------------------------------------- /lunasea/lib/api/radarr/commands/movie/update_movie.dart: -------------------------------------------------------------------------------- 1 | part of radarr_commands; 2 | 3 | Future _commandUpdateMovie( 4 | Dio client, { 5 | required RadarrMovie movie, 6 | required bool moveFiles, 7 | }) async { 8 | Response response = await client.put( 9 | 'movie', 10 | data: movie.toJson(), 11 | queryParameters: { 12 | 'moveFiles': moveFiles, 13 | }, 14 | ); 15 | return RadarrMovie.fromJson(response.data); 16 | } 17 | -------------------------------------------------------------------------------- /lunasea/lib/api/radarr/commands/movie_file/delete_movie_file.dart: -------------------------------------------------------------------------------- 1 | part of radarr_commands; 2 | 3 | Future _commandDeleteMovieFile( 4 | Dio client, { 5 | required int movieFileId, 6 | }) async { 7 | await client.delete('moviefile/$movieFileId'); 8 | return; 9 | } 10 | -------------------------------------------------------------------------------- /lunasea/lib/api/radarr/commands/movie_file/get_movie_file.dart: -------------------------------------------------------------------------------- 1 | part of radarr_commands; 2 | 3 | Future> _commandGetMovieFile( 4 | Dio client, { 5 | required int movieId, 6 | }) async { 7 | Response response = await client.get('moviefile', queryParameters: { 8 | 'movieId': movieId, 9 | }); 10 | return (response.data as List) 11 | .map((file) => RadarrMovieFile.fromJson(file)) 12 | .toList(); 13 | } 14 | -------------------------------------------------------------------------------- /lunasea/lib/api/radarr/commands/movie_lookup/get_movie_lookup.dart: -------------------------------------------------------------------------------- 1 | part of radarr_commands; 2 | 3 | Future> _commandGetMovieLookup( 4 | Dio client, { 5 | required String term, 6 | }) async { 7 | Response response = await client.get('movie/lookup', queryParameters: { 8 | 'term': term, 9 | }); 10 | return (response.data as List) 11 | .map((lookup) => RadarrMovie.fromJson(lookup)) 12 | .toList(); 13 | } 14 | -------------------------------------------------------------------------------- /lunasea/lib/api/radarr/commands/quality_profile/get_all_quality_profiles.dart: -------------------------------------------------------------------------------- 1 | part of radarr_commands; 2 | 3 | Future> _commandGetAllQualityProfiles( 4 | Dio client) async { 5 | Response response = await client.get('qualityprofile'); 6 | return (response.data as List) 7 | .map((profile) => RadarrQualityProfile.fromJson(profile)) 8 | .toList(); 9 | } 10 | -------------------------------------------------------------------------------- /lunasea/lib/api/radarr/commands/quality_profile/get_quality_definitions.dart: -------------------------------------------------------------------------------- 1 | part of radarr_commands; 2 | 3 | Future> _commandGetQualityDefinitions( 4 | Dio client) async { 5 | Response response = await client.get('qualitydefinition'); 6 | return (response.data as List) 7 | .map((profile) => RadarrQualityDefinition.fromJson(profile)) 8 | .toList(); 9 | } 10 | -------------------------------------------------------------------------------- /lunasea/lib/api/radarr/commands/quality_profile/get_quality_profile.dart: -------------------------------------------------------------------------------- 1 | part of radarr_commands; 2 | 3 | Future _commandGetQualityProfile( 4 | Dio client, { 5 | required int profileId, 6 | }) async { 7 | Response response = await client.get('qualityprofile/$profileId'); 8 | return RadarrQualityProfile.fromJson(response.data); 9 | } 10 | -------------------------------------------------------------------------------- /lunasea/lib/api/radarr/commands/queue/delete_queue.dart: -------------------------------------------------------------------------------- 1 | part of radarr_commands; 2 | 3 | Future _commandDeleteQueue( 4 | Dio client, { 5 | required int id, 6 | bool removeFromClient = false, 7 | bool blacklist = false, 8 | }) async { 9 | await client.delete('queue/$id', queryParameters: { 10 | 'removeFromClient': removeFromClient, 11 | 'blacklist': blacklist, 12 | }); 13 | return; 14 | } 15 | -------------------------------------------------------------------------------- /lunasea/lib/api/radarr/commands/queue/get_queue_status.dart: -------------------------------------------------------------------------------- 1 | part of radarr_commands; 2 | 3 | Future _commandGetQueueStatus(Dio client) async { 4 | Response response = await client.get('queue/status'); 5 | return RadarrQueueStatus.fromJson(response.data); 6 | } 7 | -------------------------------------------------------------------------------- /lunasea/lib/api/radarr/commands/release/get_releases.dart: -------------------------------------------------------------------------------- 1 | part of radarr_commands; 2 | 3 | Future> _commandGetReleases( 4 | Dio client, { 5 | required int movieId, 6 | }) async { 7 | Response response = await client.get('release', queryParameters: { 8 | 'movieId': movieId, 9 | }); 10 | return (response.data as List) 11 | .map((release) => RadarrRelease.fromJson(release)) 12 | .toList(); 13 | } 14 | -------------------------------------------------------------------------------- /lunasea/lib/api/radarr/commands/release/push_release.dart: -------------------------------------------------------------------------------- 1 | part of radarr_commands; 2 | 3 | Future _commandPushRelease( 4 | Dio client, { 5 | required String guid, 6 | required int indexerId, 7 | }) async { 8 | await client.post('release', data: { 9 | 'guid': guid, 10 | 'indexerId': indexerId, 11 | }); 12 | } 13 | -------------------------------------------------------------------------------- /lunasea/lib/api/radarr/commands/root_folder/get_root_folders.dart: -------------------------------------------------------------------------------- 1 | part of radarr_commands; 2 | 3 | Future> _commandGetRootFolders(Dio client) async { 4 | Response response = await client.get('rootfolder'); 5 | return (response.data as List) 6 | .map((folder) => RadarrRootFolder.fromJson(folder)) 7 | .toList(); 8 | } 9 | -------------------------------------------------------------------------------- /lunasea/lib/api/radarr/commands/system/get_status.dart: -------------------------------------------------------------------------------- 1 | part of radarr_commands; 2 | 3 | Future _commandGetSystemStatus(Dio client) async { 4 | Response response = await client.get('system/status'); 5 | return RadarrSystemStatus.fromJson(response.data); 6 | } 7 | -------------------------------------------------------------------------------- /lunasea/lib/api/radarr/commands/tag/add_tag.dart: -------------------------------------------------------------------------------- 1 | part of radarr_commands; 2 | 3 | Future _commandAddTag( 4 | Dio client, { 5 | required String label, 6 | }) async { 7 | Response response = await client.post('tag', data: { 8 | 'label': label, 9 | }); 10 | return RadarrTag.fromJson(response.data); 11 | } 12 | -------------------------------------------------------------------------------- /lunasea/lib/api/radarr/commands/tag/delete_tag.dart: -------------------------------------------------------------------------------- 1 | part of radarr_commands; 2 | 3 | Future _commandDeleteTag( 4 | Dio client, { 5 | required int id, 6 | }) async { 7 | await client.delete('tag/$id'); 8 | return; 9 | } 10 | -------------------------------------------------------------------------------- /lunasea/lib/api/radarr/commands/tag/get_all_tags.dart: -------------------------------------------------------------------------------- 1 | part of radarr_commands; 2 | 3 | Future> _commandGetAllTags(Dio client) async { 4 | Response response = await client.get('tag'); 5 | return (response.data as List).map((tag) => RadarrTag.fromJson(tag)).toList(); 6 | } 7 | -------------------------------------------------------------------------------- /lunasea/lib/api/radarr/commands/tag/get_tag.dart: -------------------------------------------------------------------------------- 1 | part of radarr_commands; 2 | 3 | Future _commandGetTag( 4 | Dio client, { 5 | required int id, 6 | }) async { 7 | Response response = await client.get('tag/$id'); 8 | return RadarrTag.fromJson(response.data); 9 | } 10 | -------------------------------------------------------------------------------- /lunasea/lib/api/radarr/commands/tag/update_tag.dart: -------------------------------------------------------------------------------- 1 | part of radarr_commands; 2 | 3 | Future _commandUpdateTag( 4 | Dio client, { 5 | required RadarrTag tag, 6 | }) async { 7 | Response response = await client.put('tag', data: tag.toJson()); 8 | return RadarrTag.fromJson(response.data); 9 | } 10 | -------------------------------------------------------------------------------- /lunasea/lib/api/sabnzbd/types/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:lunasea/types/enum/serializable.dart'; 2 | 3 | enum SABnzbdAction with EnumSerializable { 4 | FALSE('0'), 5 | TRUE('1'); 6 | 7 | @override 8 | final String value; 9 | 10 | const SABnzbdAction(this.value); 11 | } 12 | -------------------------------------------------------------------------------- /lunasea/lib/api/sonarr/controllers/command/backup.dart: -------------------------------------------------------------------------------- 1 | part of sonarr_commands; 2 | 3 | Future _commandBackup(Dio client) async { 4 | Response response = await client.post('command', data: { 5 | 'name': 'Backup', 6 | }); 7 | return SonarrCommand.fromJson(response.data); 8 | } 9 | -------------------------------------------------------------------------------- /lunasea/lib/api/sonarr/controllers/command/episode_search.dart: -------------------------------------------------------------------------------- 1 | part of sonarr_commands; 2 | 3 | Future _commandEpisodeSearch( 4 | Dio client, { 5 | required List episodeIds, 6 | }) async { 7 | Response response = await client.post('command', data: { 8 | 'name': 'EpisodeSearch', 9 | 'episodeIds': episodeIds, 10 | }); 11 | return SonarrCommand.fromJson(response.data); 12 | } 13 | -------------------------------------------------------------------------------- /lunasea/lib/api/sonarr/controllers/command/missing_episode_search.dart: -------------------------------------------------------------------------------- 1 | part of sonarr_commands; 2 | 3 | Future _commandMissingEpisodeSearch(Dio client) async { 4 | Response response = await client.post('command', data: { 5 | 'name': 'missingEpisodeSearch', 6 | }); 7 | return SonarrCommand.fromJson(response.data); 8 | } 9 | -------------------------------------------------------------------------------- /lunasea/lib/api/sonarr/controllers/command/queue.dart: -------------------------------------------------------------------------------- 1 | part of sonarr_commands; 2 | 3 | Future> _commandCommandQueue(Dio client) async { 4 | Response response = await client.get('command'); 5 | return (response.data as List) 6 | .map((command) => SonarrCommand.fromJson(command)) 7 | .toList(); 8 | } 9 | -------------------------------------------------------------------------------- /lunasea/lib/api/sonarr/controllers/command/refresh_monitored_downloads.dart: -------------------------------------------------------------------------------- 1 | part of sonarr_commands; 2 | 3 | Future _commandRefreshMonitoredDownloads(Dio client) async { 4 | Response response = await client.post('command', data: { 5 | 'name': 'RefreshMonitoredDownloads', 6 | }); 7 | return SonarrCommand.fromJson(response.data); 8 | } 9 | -------------------------------------------------------------------------------- /lunasea/lib/api/sonarr/controllers/command/refresh_series.dart: -------------------------------------------------------------------------------- 1 | part of sonarr_commands; 2 | 3 | Future _commandRefreshSeries( 4 | Dio client, { 5 | int? seriesId, 6 | }) async { 7 | Response response = await client.post('command', data: { 8 | 'name': 'RefreshSeries', 9 | if (seriesId != null) 'seriesId': seriesId, 10 | }); 11 | return SonarrCommand.fromJson(response.data); 12 | } 13 | -------------------------------------------------------------------------------- /lunasea/lib/api/sonarr/controllers/command/rescan_series.dart: -------------------------------------------------------------------------------- 1 | part of sonarr_commands; 2 | 3 | Future _commandRescanSeries( 4 | Dio client, { 5 | int? seriesId, 6 | }) async { 7 | Response response = await client.post('command', data: { 8 | 'name': 'RescanSeries', 9 | if (seriesId != null) 'seriesId': seriesId, 10 | }); 11 | return SonarrCommand.fromJson(response.data); 12 | } 13 | -------------------------------------------------------------------------------- /lunasea/lib/api/sonarr/controllers/command/rss_sync.dart: -------------------------------------------------------------------------------- 1 | part of sonarr_commands; 2 | 3 | Future _commandRSSSync(Dio client) async { 4 | Response response = await client.post('command', data: { 5 | 'name': 'RssSync', 6 | }); 7 | return SonarrCommand.fromJson(response.data); 8 | } 9 | -------------------------------------------------------------------------------- /lunasea/lib/api/sonarr/controllers/command/season_search.dart: -------------------------------------------------------------------------------- 1 | part of sonarr_commands; 2 | 3 | Future _commandSeasonSearch( 4 | Dio client, { 5 | required int seriesId, 6 | required int seasonNumber, 7 | }) async { 8 | Response response = await client.post('command', data: { 9 | 'name': 'SeasonSearch', 10 | 'seriesId': seriesId, 11 | 'seasonNumber': seasonNumber, 12 | }); 13 | return SonarrCommand.fromJson(response.data); 14 | } 15 | -------------------------------------------------------------------------------- /lunasea/lib/api/sonarr/controllers/command/series_search.dart: -------------------------------------------------------------------------------- 1 | part of sonarr_commands; 2 | 3 | Future _commandSeriesSearch( 4 | Dio client, { 5 | required int seriesId, 6 | }) async { 7 | Response response = await client.post('command', data: { 8 | 'name': 'SeriesSearch', 9 | 'seriesId': seriesId, 10 | }); 11 | return SonarrCommand.fromJson(response.data); 12 | } 13 | -------------------------------------------------------------------------------- /lunasea/lib/api/sonarr/controllers/episode/get_episode.dart: -------------------------------------------------------------------------------- 1 | part of sonarr_commands; 2 | 3 | Future _commandGetEpisode( 4 | Dio client, { 5 | required int episodeId, 6 | }) async { 7 | Response response = await client.get('episode/$episodeId'); 8 | return SonarrEpisode.fromJson(response.data); 9 | } 10 | -------------------------------------------------------------------------------- /lunasea/lib/api/sonarr/controllers/episode/update_episode.dart: -------------------------------------------------------------------------------- 1 | part of sonarr_commands; 2 | 3 | Future _commandUpdateEpisode( 4 | Dio client, { 5 | required SonarrEpisode episode, 6 | }) async { 7 | Response response = await client.put('episode', data: episode.toJson()); 8 | return SonarrEpisode.fromJson(response.data); 9 | } 10 | -------------------------------------------------------------------------------- /lunasea/lib/api/sonarr/controllers/episode_file/delete_episode_file.dart: -------------------------------------------------------------------------------- 1 | part of sonarr_commands; 2 | 3 | Future _commandDeleteEpisodeFile( 4 | Dio client, { 5 | required int episodeFileId, 6 | }) async { 7 | await client.delete('episodefile/$episodeFileId'); 8 | } 9 | -------------------------------------------------------------------------------- /lunasea/lib/api/sonarr/controllers/episode_file/delete_episode_files.dart: -------------------------------------------------------------------------------- 1 | part of sonarr_commands; 2 | 3 | Future _commandDeleteEpisodeFiles( 4 | Dio client, { 5 | required List episodeFileIds, 6 | }) async { 7 | await client.delete('episodefile/bulk', data: { 8 | 'episodeFileIds': episodeFileIds, 9 | }); 10 | } 11 | -------------------------------------------------------------------------------- /lunasea/lib/api/sonarr/controllers/episode_file/get_episode_file.dart: -------------------------------------------------------------------------------- 1 | part of sonarr_commands; 2 | 3 | Future _commandGetEpisodeFile( 4 | Dio client, { 5 | required int episodeId, 6 | }) async { 7 | Response response = await client.get('episodefile/$episodeId'); 8 | return SonarrEpisodeFile.fromJson(response.data); 9 | } 10 | -------------------------------------------------------------------------------- /lunasea/lib/api/sonarr/controllers/episode_file/get_series_episode_files.dart: -------------------------------------------------------------------------------- 1 | part of sonarr_commands; 2 | 3 | Future> _commandGetSeriesEpisodeFiles( 4 | Dio client, { 5 | required int seriesId, 6 | }) async { 7 | Response response = await client.get('episodefile', queryParameters: { 8 | 'seriesId': seriesId, 9 | }); 10 | return (response.data as List) 11 | .map((episode) => SonarrEpisodeFile.fromJson(episode)) 12 | .toList(); 13 | } 14 | -------------------------------------------------------------------------------- /lunasea/lib/api/sonarr/controllers/import_list/get_exclusion_list.dart: -------------------------------------------------------------------------------- 1 | part of sonarr_commands; 2 | 3 | Future> _commandGetExclusionList( 4 | Dio client, 5 | ) async { 6 | Response response = await client.get('importlistexclusion'); 7 | return (response.data as List) 8 | .map((series) => SonarrExclusion.fromJson(series)) 9 | .toList(); 10 | } 11 | -------------------------------------------------------------------------------- /lunasea/lib/api/sonarr/controllers/profile/get_language_profiles.dart: -------------------------------------------------------------------------------- 1 | part of sonarr_commands; 2 | 3 | Future> _commandGetLanguageProfiles( 4 | Dio client, 5 | ) async { 6 | Response response = await client.get('languageprofile'); 7 | return (response.data as List) 8 | .map((profile) => SonarrLanguageProfile.fromJson(profile)) 9 | .toList(); 10 | } 11 | -------------------------------------------------------------------------------- /lunasea/lib/api/sonarr/controllers/profile/get_quality_profiles.dart: -------------------------------------------------------------------------------- 1 | part of sonarr_commands; 2 | 3 | Future> _commandGetQualityProfiles( 4 | Dio client, 5 | ) async { 6 | Response response = await client.get('qualityprofile'); 7 | return (response.data as List) 8 | .map((profile) => SonarrQualityProfile.fromJson(profile)) 9 | .toList(); 10 | } 11 | -------------------------------------------------------------------------------- /lunasea/lib/api/sonarr/controllers/queue/delete_queue.dart: -------------------------------------------------------------------------------- 1 | part of sonarr_commands; 2 | 3 | Future _commandDeleteQueue( 4 | Dio client, { 5 | required int id, 6 | bool? removeFromClient, 7 | bool? blocklist, 8 | }) async { 9 | await client.delete('queue/$id', queryParameters: { 10 | if (removeFromClient != null) 'removeFromClient': removeFromClient, 11 | if (blocklist != null) 'blocklist': blocklist, 12 | }); 13 | } 14 | -------------------------------------------------------------------------------- /lunasea/lib/api/sonarr/controllers/release/add_release.dart: -------------------------------------------------------------------------------- 1 | part of sonarr_commands; 2 | 3 | Future _commandAddRelease( 4 | Dio client, { 5 | required String guid, 6 | required int indexerId, 7 | }) async { 8 | Response response = await client.post( 9 | 'release', 10 | data: { 11 | 'guid': guid, 12 | 'indexerId': indexerId, 13 | }, 14 | ); 15 | return SonarrAddedRelease.fromJson(response.data); 16 | } 17 | -------------------------------------------------------------------------------- /lunasea/lib/api/sonarr/controllers/release/get_release.dart: -------------------------------------------------------------------------------- 1 | part of sonarr_commands; 2 | 3 | Future> _commandGetReleases( 4 | Dio client, { 5 | required int episodeId, 6 | }) async { 7 | Response response = await client.get('release', queryParameters: { 8 | 'episodeId': episodeId, 9 | }); 10 | return (response.data as List) 11 | .map((series) => SonarrRelease.fromJson(series)) 12 | .toList(); 13 | } 14 | -------------------------------------------------------------------------------- /lunasea/lib/api/sonarr/controllers/root_folder/get_root_folders.dart: -------------------------------------------------------------------------------- 1 | part of sonarr_commands; 2 | 3 | Future> _commandGetRootFolders(Dio client) async { 4 | Response response = await client.get('rootfolder'); 5 | return (response.data as List) 6 | .map((folder) => SonarrRootFolder.fromJson(folder)) 7 | .toList(); 8 | } 9 | -------------------------------------------------------------------------------- /lunasea/lib/api/sonarr/controllers/series/delete_series.dart: -------------------------------------------------------------------------------- 1 | part of sonarr_commands; 2 | 3 | Future _commandDeleteSeries( 4 | Dio client, { 5 | required int seriesId, 6 | bool deleteFiles = false, 7 | bool addImportListExclusion = false, 8 | }) async { 9 | await client.delete('series/$seriesId', queryParameters: { 10 | 'deleteFiles': deleteFiles, 11 | 'addImportListExclusion': addImportListExclusion, 12 | }); 13 | } 14 | -------------------------------------------------------------------------------- /lunasea/lib/api/sonarr/controllers/series/get_all_series.dart: -------------------------------------------------------------------------------- 1 | part of sonarr_commands; 2 | 3 | Future> _commandGetAllSeries( 4 | Dio client, { 5 | bool includeSeasonImages = false, 6 | }) async { 7 | Response response = await client.get('series', queryParameters: { 8 | 'includeSeasonImages': includeSeasonImages, 9 | }); 10 | return (response.data as List) 11 | .map((series) => SonarrSeries.fromJson(series)) 12 | .toList(); 13 | } 14 | -------------------------------------------------------------------------------- /lunasea/lib/api/sonarr/controllers/series/get_series.dart: -------------------------------------------------------------------------------- 1 | part of sonarr_commands; 2 | 3 | Future _commandGetSeries( 4 | Dio client, { 5 | required int seriesId, 6 | bool includeSeasonImages = false, 7 | }) async { 8 | Response response = await client.get('series/$seriesId', queryParameters: { 9 | 'includeSeasonImages': includeSeasonImages, 10 | }); 11 | return SonarrSeries.fromJson(response.data); 12 | } 13 | -------------------------------------------------------------------------------- /lunasea/lib/api/sonarr/controllers/series/update_series.dart: -------------------------------------------------------------------------------- 1 | part of sonarr_commands; 2 | 3 | Future _commandUpdateSeries( 4 | Dio client, { 5 | required SonarrSeries series, 6 | }) async { 7 | Response response = await client.put('series', data: series.toJson()); 8 | return SonarrSeries.fromJson(response.data); 9 | } 10 | -------------------------------------------------------------------------------- /lunasea/lib/api/sonarr/controllers/series_lookup/lookup.dart: -------------------------------------------------------------------------------- 1 | part of sonarr_commands; 2 | 3 | Future> _commandGetSeriesLookup( 4 | Dio client, { 5 | required String term, 6 | }) async { 7 | Response response = await client.get('series/lookup', queryParameters: { 8 | 'term': term, 9 | }); 10 | return (response.data as List) 11 | .map((series) => SonarrSeries.fromJson(series)) 12 | .toList(); 13 | } 14 | -------------------------------------------------------------------------------- /lunasea/lib/api/sonarr/controllers/system/get_status.dart: -------------------------------------------------------------------------------- 1 | part of sonarr_commands; 2 | 3 | Future _commandGetStatus(Dio client) async { 4 | Response response = await client.get('system/status'); 5 | return SonarrStatus.fromJson(response.data); 6 | } 7 | -------------------------------------------------------------------------------- /lunasea/lib/api/sonarr/controllers/tag/add_tag.dart: -------------------------------------------------------------------------------- 1 | part of sonarr_commands; 2 | 3 | Future _commandAddTag( 4 | Dio client, { 5 | required String label, 6 | }) async { 7 | Response response = await client.post('tag', data: { 8 | 'label': label, 9 | }); 10 | return SonarrTag.fromJson(response.data); 11 | } 12 | -------------------------------------------------------------------------------- /lunasea/lib/api/sonarr/controllers/tag/delete_tag.dart: -------------------------------------------------------------------------------- 1 | part of sonarr_commands; 2 | 3 | Future _commandDeleteTag( 4 | Dio client, { 5 | required int id, 6 | }) async { 7 | await client.delete('tag/$id'); 8 | return; 9 | } 10 | -------------------------------------------------------------------------------- /lunasea/lib/api/sonarr/controllers/tag/get_all_tags.dart: -------------------------------------------------------------------------------- 1 | part of sonarr_commands; 2 | 3 | Future> _commandGetAllTags(Dio client) async { 4 | Response response = await client.get('tag'); 5 | return (response.data as List).map((tag) => SonarrTag.fromJson(tag)).toList(); 6 | } 7 | -------------------------------------------------------------------------------- /lunasea/lib/api/sonarr/controllers/tag/get_tag.dart: -------------------------------------------------------------------------------- 1 | part of sonarr_commands; 2 | 3 | Future _commandGetTag( 4 | Dio client, { 5 | required int id, 6 | }) async { 7 | Response response = await client.get('tag/$id'); 8 | return SonarrTag.fromJson(response.data); 9 | } 10 | -------------------------------------------------------------------------------- /lunasea/lib/api/sonarr/controllers/tag/update_tag.dart: -------------------------------------------------------------------------------- 1 | part of sonarr_commands; 2 | 3 | Future _commandUpdateTag( 4 | Dio client, { 5 | required SonarrTag tag, 6 | }) async { 7 | Response response = await client.put('tag', data: tag.toJson()); 8 | return SonarrTag.fromJson(response.data); 9 | } 10 | -------------------------------------------------------------------------------- /lunasea/lib/api/tautulli/commands/miscellaneous/docs_md.dart: -------------------------------------------------------------------------------- 1 | part of tautulli_commands; 2 | 3 | Future _commandDocsMd(Dio client) async { 4 | Response response = await client.get( 5 | '/', 6 | queryParameters: { 7 | 'cmd': 'docs_md', 8 | }, 9 | options: Options( 10 | responseType: ResponseType.bytes, 11 | ), 12 | ); 13 | return (response.data as Uint8List?); 14 | } 15 | -------------------------------------------------------------------------------- /lunasea/lib/api/tautulli/commands/miscellaneous/download_config.dart: -------------------------------------------------------------------------------- 1 | part of tautulli_commands; 2 | 3 | Future _commandDownloadConfig(Dio client) async { 4 | Response response = await client.get( 5 | '/', 6 | queryParameters: { 7 | 'cmd': 'download_config', 8 | }, 9 | options: Options( 10 | responseType: ResponseType.bytes, 11 | ), 12 | ); 13 | return (response.data as Uint8List?); 14 | } 15 | -------------------------------------------------------------------------------- /lunasea/lib/api/tautulli/commands/miscellaneous/download_database.dart: -------------------------------------------------------------------------------- 1 | part of tautulli_commands; 2 | 3 | Future _commandDownloadDatabase(Dio client) async { 4 | Response response = await client.get( 5 | '/', 6 | queryParameters: { 7 | 'cmd': 'download_database', 8 | }, 9 | options: Options( 10 | responseType: ResponseType.bytes, 11 | ), 12 | ); 13 | return (response.data as Uint8List?); 14 | } 15 | -------------------------------------------------------------------------------- /lunasea/lib/api/tautulli/commands/miscellaneous/download_log.dart: -------------------------------------------------------------------------------- 1 | part of tautulli_commands; 2 | 3 | Future _commandDownloadLog(Dio client) async { 4 | Response response = await client.get( 5 | '/', 6 | queryParameters: { 7 | 'cmd': 'download_log', 8 | }, 9 | options: Options( 10 | responseType: ResponseType.bytes, 11 | ), 12 | ); 13 | return (response.data as Uint8List?); 14 | } 15 | -------------------------------------------------------------------------------- /lunasea/lib/api/tautulli/commands/miscellaneous/download_plex_log.dart: -------------------------------------------------------------------------------- 1 | part of tautulli_commands; 2 | 3 | Future _commandDownloadPlexLog(Dio client) async { 4 | Response response = await client.get( 5 | '/', 6 | queryParameters: { 7 | 'cmd': 'download_plex_log', 8 | }, 9 | options: Options( 10 | responseType: ResponseType.bytes, 11 | ), 12 | ); 13 | return (response.data as Uint8List?); 14 | } 15 | -------------------------------------------------------------------------------- /lunasea/lib/api/tautulli/commands/system/backup_db.dart: -------------------------------------------------------------------------------- 1 | part of tautulli_commands; 2 | 3 | Future _commandBackupDB(Dio client) async { 4 | Response response = await client.get( 5 | '/', 6 | queryParameters: { 7 | 'cmd': 'backup_db', 8 | }, 9 | ); 10 | switch ((response.data['response']['result'] as String?)) { 11 | case 'success': 12 | return; 13 | case 'error': 14 | default: 15 | throw Exception(response.data['response']['message']); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /lunasea/lib/api/tautulli/commands/system/delete_cache.dart: -------------------------------------------------------------------------------- 1 | part of tautulli_commands; 2 | 3 | Future _commandDeleteCache(Dio client) async { 4 | Response response = await client.get( 5 | '/', 6 | queryParameters: { 7 | 'cmd': 'delete_cache', 8 | }, 9 | ); 10 | switch ((response.data['response']['result'] as String?)) { 11 | case 'success': 12 | return; 13 | case 'error': 14 | default: 15 | throw Exception(response.data['response']['message']); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /lunasea/lib/api/tautulli/commands/system/restart.dart: -------------------------------------------------------------------------------- 1 | part of tautulli_commands; 2 | 3 | Future _commandRestart(Dio client) async { 4 | Response response = await client.get( 5 | '/', 6 | queryParameters: { 7 | 'cmd': 'restart', 8 | }, 9 | ); 10 | switch ((response.data['response']['result'] as String?)) { 11 | case 'success': 12 | return; 13 | case 'error': 14 | default: 15 | throw Exception(response.data['response']['message']); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /lunasea/lib/api/tautulli/commands/system/update.dart: -------------------------------------------------------------------------------- 1 | part of tautulli_commands; 2 | 3 | Future _commandUpdate(Dio client) async { 4 | Response response = await client.get( 5 | '/', 6 | queryParameters: { 7 | 'cmd': 'update', 8 | }, 9 | ); 10 | switch ((response.data['response']['result'] as String?)) { 11 | case 'success': 12 | return; 13 | case 'error': 14 | default: 15 | throw Exception(response.data['response']['message']); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /lunasea/lib/api/wake_on_lan/platform/wake_on_lan_html.dart: -------------------------------------------------------------------------------- 1 | import 'package:lunasea/api/wake_on_lan/wake_on_lan.dart'; 2 | 3 | bool isPlatformSupported() => false; 4 | LunaWakeOnLAN getWakeOnLAN() => 5 | throw UnsupportedError('LunaWakeOnLAN unsupported'); 6 | -------------------------------------------------------------------------------- /lunasea/lib/api/wake_on_lan/platform/wake_on_lan_stub.dart: -------------------------------------------------------------------------------- 1 | import 'package:lunasea/api/wake_on_lan/wake_on_lan.dart'; 2 | 3 | bool isPlatformSupported() => false; 4 | LunaWakeOnLAN getWakeOnLAN() => 5 | throw UnsupportedError('LunaWakeOnLAN unsupported'); 6 | -------------------------------------------------------------------------------- /lunasea/lib/api/wake_on_lan/wake_on_lan.dart: -------------------------------------------------------------------------------- 1 | // ignore: always_use_package_imports 2 | import 'platform/wake_on_lan_stub.dart' 3 | if (dart.library.io) 'platform/wake_on_lan_io.dart' 4 | if (dart.library.html) 'platform/wake_on_lan_html.dart'; 5 | 6 | abstract class LunaWakeOnLAN { 7 | static bool get isSupported => isPlatformSupported(); 8 | factory LunaWakeOnLAN() => getWakeOnLAN(); 9 | 10 | Future wake(); 11 | } 12 | -------------------------------------------------------------------------------- /lunasea/lib/database/tables/nzbget.dart: -------------------------------------------------------------------------------- 1 | import 'package:lunasea/database/table.dart'; 2 | 3 | enum NZBGetDatabase with LunaTableMixin { 4 | NAVIGATION_INDEX(0); 5 | 6 | @override 7 | LunaTable get table => LunaTable.nzbget; 8 | 9 | @override 10 | final T fallback; 11 | 12 | const NZBGetDatabase(this.fallback); 13 | } 14 | -------------------------------------------------------------------------------- /lunasea/lib/database/tables/sabnzbd.dart: -------------------------------------------------------------------------------- 1 | import 'package:lunasea/database/table.dart'; 2 | 3 | enum SABnzbdDatabase with LunaTableMixin { 4 | NAVIGATION_INDEX(0); 5 | 6 | @override 7 | LunaTable get table => LunaTable.sabnzbd; 8 | 9 | @override 10 | final T fallback; 11 | 12 | const SABnzbdDatabase(this.fallback); 13 | } 14 | -------------------------------------------------------------------------------- /lunasea/lib/database/tables/search.dart: -------------------------------------------------------------------------------- 1 | import 'package:lunasea/database/table.dart'; 2 | 3 | enum SearchDatabase with LunaTableMixin { 4 | HIDE_XXX(false), 5 | SHOW_LINKS(true); 6 | 7 | @override 8 | LunaTable get table => LunaTable.search; 9 | 10 | @override 11 | final T fallback; 12 | 13 | const SearchDatabase(this.fallback); 14 | } 15 | -------------------------------------------------------------------------------- /lunasea/lib/extensions/page_controller.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | extension PageControllerExtension on PageController { 4 | Future protectedJumpToPage(int index) async { 5 | if (this.hasClients) this.jumpToPage(index); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /lunasea/lib/modules/external_modules/routes/external_modules.dart: -------------------------------------------------------------------------------- 1 | export 'external_modules/route.dart'; 2 | export 'external_modules/widgets.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/external_modules/routes/external_modules/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/module_tile.dart'; 2 | -------------------------------------------------------------------------------- /lunasea/lib/modules/lidarr.dart: -------------------------------------------------------------------------------- 1 | export 'lidarr/core.dart'; 2 | export 'lidarr/routes.dart'; 3 | export 'lidarr/widgets.dart'; 4 | -------------------------------------------------------------------------------- /lunasea/lib/modules/lidarr/core.dart: -------------------------------------------------------------------------------- 1 | export 'package:lunasea/database/tables/lidarr.dart'; 2 | export 'core/api.dart'; 3 | export 'core/constants.dart'; 4 | export 'core/dialogs.dart'; 5 | export 'core/sorting.dart'; 6 | export 'core/state.dart'; 7 | export 'core/webhooks.dart'; 8 | -------------------------------------------------------------------------------- /lunasea/lib/modules/lidarr/core/api.dart: -------------------------------------------------------------------------------- 1 | export 'api/api.dart'; 2 | export 'api/data.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/lidarr/core/api/data.dart: -------------------------------------------------------------------------------- 1 | export 'data/album.dart'; 2 | export 'data/catalogue.dart'; 3 | export 'data/history.dart'; 4 | export 'data/metadata.dart'; 5 | export 'data/missing.dart'; 6 | export 'data/monitor_status.dart'; 7 | export 'data/qualityprofile.dart'; 8 | export 'data/release.dart'; 9 | export 'data/rootfolder.dart'; 10 | export 'data/search.dart'; 11 | export 'data/track.dart'; 12 | -------------------------------------------------------------------------------- /lunasea/lib/modules/lidarr/core/api/data/metadata.dart: -------------------------------------------------------------------------------- 1 | import 'package:lunasea/core.dart'; 2 | 3 | part 'metadata.g.dart'; 4 | 5 | @HiveType(typeId: 10, adapterName: 'LidarrMetadataProfileAdapter') 6 | class LidarrMetadataProfile { 7 | @HiveField(0) 8 | int? id; 9 | @HiveField(1) 10 | String? name; 11 | 12 | LidarrMetadataProfile({ 13 | required this.id, 14 | required this.name, 15 | }); 16 | } 17 | -------------------------------------------------------------------------------- /lunasea/lib/modules/lidarr/core/api/data/qualityprofile.dart: -------------------------------------------------------------------------------- 1 | import 'package:lunasea/core.dart'; 2 | 3 | part 'qualityprofile.g.dart'; 4 | 5 | @HiveType(typeId: 9, adapterName: 'LidarrQualityProfileAdapter') 6 | class LidarrQualityProfile { 7 | @HiveField(0) 8 | int? id; 9 | @HiveField(1) 10 | String? name; 11 | 12 | LidarrQualityProfile({ 13 | required this.id, 14 | required this.name, 15 | }); 16 | } 17 | -------------------------------------------------------------------------------- /lunasea/lib/modules/lidarr/core/sorting.dart: -------------------------------------------------------------------------------- 1 | export 'sorting/catalogue.dart'; 2 | export 'sorting/releases.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/lidarr/routes.dart: -------------------------------------------------------------------------------- 1 | export 'routes/add_details.dart'; 2 | export 'routes/add_search.dart'; 3 | export 'routes/catalogue.dart'; 4 | export 'routes/details_album.dart'; 5 | export 'routes/details_artist.dart'; 6 | export 'routes/edit_artist.dart'; 7 | export 'routes/history.dart'; 8 | export 'routes/lidarr.dart'; 9 | export 'routes/missing.dart'; 10 | export 'routes/search_results.dart'; 11 | -------------------------------------------------------------------------------- /lunasea/lib/modules/nzbget.dart: -------------------------------------------------------------------------------- 1 | export 'nzbget/core.dart'; 2 | export 'nzbget/routes.dart'; 3 | export 'nzbget/widgets.dart'; 4 | -------------------------------------------------------------------------------- /lunasea/lib/modules/nzbget/core.dart: -------------------------------------------------------------------------------- 1 | export 'core/api.dart'; 2 | export 'core/dialogs.dart'; 3 | export 'core/state.dart'; 4 | -------------------------------------------------------------------------------- /lunasea/lib/modules/nzbget/core/api.dart: -------------------------------------------------------------------------------- 1 | export 'api/api.dart'; 2 | export 'api/data.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/nzbget/core/api/data.dart: -------------------------------------------------------------------------------- 1 | export 'data/category.dart'; 2 | export 'data/history.dart'; 3 | export 'data/log.dart'; 4 | export 'data/priority.dart'; 5 | export 'data/queue.dart'; 6 | export 'data/sort.dart'; 7 | export 'data/statistics.dart'; 8 | export 'data/status.dart'; 9 | -------------------------------------------------------------------------------- /lunasea/lib/modules/nzbget/core/api/data/category.dart: -------------------------------------------------------------------------------- 1 | class NZBGetCategoryData { 2 | String name; 3 | 4 | NZBGetCategoryData({ 5 | required this.name, 6 | }); 7 | } 8 | -------------------------------------------------------------------------------- /lunasea/lib/modules/nzbget/routes.dart: -------------------------------------------------------------------------------- 1 | export 'routes/history.dart'; 2 | export 'routes/nzbget.dart'; 3 | export 'routes/queue.dart'; 4 | export 'routes/statistics.dart'; 5 | -------------------------------------------------------------------------------- /lunasea/lib/modules/nzbget/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/app_bar_stats.dart'; 2 | export 'widgets/history_hide_button.dart'; 3 | export 'widgets/history_search_bar.dart'; 4 | export 'widgets/history_tile.dart'; 5 | export 'widgets/log_tile.dart'; 6 | export 'widgets/navigation_bar.dart'; 7 | export 'widgets/queue_fab.dart'; 8 | export 'widgets/queue_tile.dart'; 9 | -------------------------------------------------------------------------------- /lunasea/lib/modules/radarr.dart: -------------------------------------------------------------------------------- 1 | export '../api/radarr/radarr.dart'; 2 | export '../api/radarr/commands.dart'; 3 | export '../api/radarr/models.dart'; 4 | export '../api/radarr/types.dart'; 5 | export '../api/radarr/utilities.dart'; 6 | export 'radarr/core.dart'; 7 | export 'radarr/routes.dart'; 8 | -------------------------------------------------------------------------------- /lunasea/lib/modules/radarr/core.dart: -------------------------------------------------------------------------------- 1 | export 'package:lunasea/database/tables/radarr.dart'; 2 | export 'core/api_helper.dart'; 3 | export 'core/bottom_modal_sheets.dart'; 4 | export 'core/dialogs.dart'; 5 | export 'core/extensions.dart'; 6 | export 'core/state.dart'; 7 | export 'core/types.dart'; 8 | export 'core/webhooks.dart'; 9 | -------------------------------------------------------------------------------- /lunasea/lib/modules/radarr/core/extensions/radarr_quality_profile.dart: -------------------------------------------------------------------------------- 1 | import 'package:lunasea/core.dart'; 2 | import 'package:lunasea/modules/radarr.dart'; 3 | 4 | extension RadarrQualityProfileExtension on RadarrQualityProfile { 5 | String? get lunaName { 6 | if (this.name != null && this.name!.isNotEmpty) return this.name; 7 | return LunaUI.TEXT_EMDASH; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /lunasea/lib/modules/radarr/core/types.dart: -------------------------------------------------------------------------------- 1 | export 'types/filter_movies.dart'; 2 | export 'types/filter_releases.dart'; 3 | export 'types/settings_global.dart'; 4 | export 'types/settings_movie.dart'; 5 | export 'types/sorting_movies.dart'; 6 | export 'types/sorting_releases.dart'; 7 | -------------------------------------------------------------------------------- /lunasea/lib/modules/radarr/routes/add_movie.dart: -------------------------------------------------------------------------------- 1 | export 'add_movie/route.dart'; 2 | export 'add_movie/state.dart'; 3 | export 'add_movie/widgets.dart'; 4 | -------------------------------------------------------------------------------- /lunasea/lib/modules/radarr/routes/add_movie/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/discovery_results_tile.dart'; 2 | export 'widgets/navigation_bar.dart'; 3 | export 'widgets/page_discover.dart'; 4 | export 'widgets/page_search.dart'; 5 | export 'widgets/search_results_tile.dart'; 6 | export 'widgets/search_search_bar.dart'; 7 | -------------------------------------------------------------------------------- /lunasea/lib/modules/radarr/routes/add_movie_details.dart: -------------------------------------------------------------------------------- 1 | export 'add_movie_details/route.dart'; 2 | export 'add_movie_details/state.dart'; 3 | export 'add_movie_details/widgets.dart'; 4 | -------------------------------------------------------------------------------- /lunasea/lib/modules/radarr/routes/add_movie_details/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/bottom_action_bar.dart'; 2 | export 'widgets/tile_minimum_availability.dart'; 3 | export 'widgets/tile_monitored.dart'; 4 | export 'widgets/tile_quality_profile.dart'; 5 | export 'widgets/tile_root_folder.dart'; 6 | export 'widgets/tile_tags.dart'; 7 | -------------------------------------------------------------------------------- /lunasea/lib/modules/radarr/routes/catalogue.dart: -------------------------------------------------------------------------------- 1 | export 'catalogue/route.dart'; 2 | export 'catalogue/widgets.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/radarr/routes/catalogue/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/movie_tile.dart'; 2 | export 'widgets/search_bar.dart'; 3 | export 'widgets/search_bar_filter_button.dart'; 4 | export 'widgets/search_bar_sort_button.dart'; 5 | export 'widgets/search_bar_view_button.dart'; 6 | -------------------------------------------------------------------------------- /lunasea/lib/modules/radarr/routes/edit_movie.dart: -------------------------------------------------------------------------------- 1 | export 'edit_movie/route.dart'; 2 | export 'edit_movie/state.dart'; 3 | export 'edit_movie/widgets.dart'; 4 | -------------------------------------------------------------------------------- /lunasea/lib/modules/radarr/routes/edit_movie/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/bottom_action_bar.dart'; 2 | export 'widgets/tile_monitored.dart'; 3 | export 'widgets/tile_path.dart'; 4 | export 'widgets/tile_quality_profile.dart'; 5 | export 'widgets/tile_radarr_availability.dart'; 6 | export 'widgets/tile_tags.dart'; 7 | -------------------------------------------------------------------------------- /lunasea/lib/modules/radarr/routes/history.dart: -------------------------------------------------------------------------------- 1 | export 'history/route.dart'; 2 | export 'history/widgets.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/radarr/routes/history/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/history_tile.dart'; 2 | -------------------------------------------------------------------------------- /lunasea/lib/modules/radarr/routes/manual_import.dart: -------------------------------------------------------------------------------- 1 | export 'manual_import/route.dart'; 2 | export 'manual_import/state.dart'; 3 | export 'manual_import/widgets.dart'; 4 | -------------------------------------------------------------------------------- /lunasea/lib/modules/radarr/routes/manual_import/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/appbar_path_bar.dart'; 2 | export 'widgets/bottom_action_bar.dart'; 3 | export 'widgets/directory_tile.dart'; 4 | export 'widgets/parent_directory_tile.dart'; 5 | -------------------------------------------------------------------------------- /lunasea/lib/modules/radarr/routes/manual_import_details.dart: -------------------------------------------------------------------------------- 1 | export 'manual_import_details/route.dart'; 2 | export 'manual_import_details/state.dart'; 3 | export 'manual_import_details/widgets.dart'; 4 | -------------------------------------------------------------------------------- /lunasea/lib/modules/radarr/routes/manual_import_details/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/appbar_configure_movies.dart'; 2 | export 'widgets/bottom_action_bar.dart'; 3 | export 'widgets/import_tile.dart'; 4 | -------------------------------------------------------------------------------- /lunasea/lib/modules/radarr/routes/missing.dart: -------------------------------------------------------------------------------- 1 | export 'missing/route.dart'; 2 | export 'missing/widgets.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/radarr/routes/missing/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/missing_tile.dart'; 2 | -------------------------------------------------------------------------------- /lunasea/lib/modules/radarr/routes/more.dart: -------------------------------------------------------------------------------- 1 | export 'more/route.dart'; 2 | -------------------------------------------------------------------------------- /lunasea/lib/modules/radarr/routes/movie_details.dart: -------------------------------------------------------------------------------- 1 | export 'movie_details/route.dart'; 2 | export 'movie_details/state.dart'; 3 | export 'movie_details/widgets.dart'; 4 | -------------------------------------------------------------------------------- /lunasea/lib/modules/radarr/routes/queue.dart: -------------------------------------------------------------------------------- 1 | export 'queue/route.dart'; 2 | export 'queue/widgets.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/radarr/routes/queue/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/queue_tile.dart'; 2 | -------------------------------------------------------------------------------- /lunasea/lib/modules/radarr/routes/radarr.dart: -------------------------------------------------------------------------------- 1 | export 'radarr/route.dart'; 2 | export 'radarr/widgets.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/radarr/routes/radarr/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/appbar_add_movie_action.dart'; 2 | export 'widgets/appbar_global_settings_action.dart'; 3 | export 'widgets/navigation_bar.dart'; 4 | -------------------------------------------------------------------------------- /lunasea/lib/modules/radarr/routes/releases.dart: -------------------------------------------------------------------------------- 1 | export 'releases/route.dart'; 2 | export 'releases/state.dart'; 3 | export 'releases/widgets.dart'; 4 | -------------------------------------------------------------------------------- /lunasea/lib/modules/radarr/routes/releases/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/release_tile.dart'; 2 | export 'widgets/search_bar.dart'; 3 | export 'widgets/search_bar_filter_button.dart'; 4 | export 'widgets/search_bar_sort_button.dart'; 5 | -------------------------------------------------------------------------------- /lunasea/lib/modules/radarr/routes/system_status.dart: -------------------------------------------------------------------------------- 1 | export 'system_status/pages.dart'; 2 | export 'system_status/route.dart'; 3 | export 'system_status/state.dart'; 4 | export 'system_status/widgets.dart'; 5 | -------------------------------------------------------------------------------- /lunasea/lib/modules/radarr/routes/system_status/pages.dart: -------------------------------------------------------------------------------- 1 | export 'pages/page_about.dart'; 2 | export 'pages/page_disk_space.dart'; 3 | export 'pages/page_health_check.dart'; 4 | -------------------------------------------------------------------------------- /lunasea/lib/modules/radarr/routes/system_status/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/disk_space_tile.dart'; 2 | export 'widgets/health_tile.dart'; 3 | export 'widgets/navigation_bar.dart'; 4 | export 'widgets/root_folder_tile.dart'; 5 | -------------------------------------------------------------------------------- /lunasea/lib/modules/radarr/routes/tags.dart: -------------------------------------------------------------------------------- 1 | export 'tags/route.dart'; 2 | export 'tags/widgets.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/radarr/routes/tags/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/appbar_action_add_tag.dart'; 2 | export 'widgets/tag_tile.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/radarr/routes/upcoming.dart: -------------------------------------------------------------------------------- 1 | export 'upcoming/route.dart'; 2 | export 'upcoming/widgets.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/radarr/routes/upcoming/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/upcoming_tile.dart'; 2 | -------------------------------------------------------------------------------- /lunasea/lib/modules/sabnzbd.dart: -------------------------------------------------------------------------------- 1 | export 'sabnzbd/core.dart'; 2 | export 'sabnzbd/routes.dart'; 3 | export 'sabnzbd/widgets.dart'; 4 | -------------------------------------------------------------------------------- /lunasea/lib/modules/sabnzbd/core.dart: -------------------------------------------------------------------------------- 1 | export 'core/api.dart'; 2 | export 'core/dialogs.dart'; 3 | export 'core/state.dart'; 4 | -------------------------------------------------------------------------------- /lunasea/lib/modules/sabnzbd/core/api.dart: -------------------------------------------------------------------------------- 1 | export 'api/api.dart'; 2 | export 'api/data.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/sabnzbd/core/api/data.dart: -------------------------------------------------------------------------------- 1 | export 'data/category.dart'; 2 | export 'data/history.dart'; 3 | export 'data/queue.dart'; 4 | export 'data/statistics.dart'; 5 | export 'data/statistics_server.dart'; 6 | export 'data/status.dart'; 7 | -------------------------------------------------------------------------------- /lunasea/lib/modules/sabnzbd/core/api/data/category.dart: -------------------------------------------------------------------------------- 1 | class SABnzbdCategoryData { 2 | String? category; 3 | 4 | SABnzbdCategoryData({ 5 | required this.category, 6 | }); 7 | } 8 | -------------------------------------------------------------------------------- /lunasea/lib/modules/sabnzbd/core/api/data/statistics_server.dart: -------------------------------------------------------------------------------- 1 | class SABnzbdServerStatisticsData { 2 | String name; 3 | int? dailyUsage; 4 | int? weeklyUsage; 5 | int? monthlyUsage; 6 | int? totalUsage; 7 | 8 | SABnzbdServerStatisticsData({ 9 | required this.name, 10 | required this.dailyUsage, 11 | required this.weeklyUsage, 12 | required this.monthlyUsage, 13 | required this.totalUsage, 14 | }); 15 | } 16 | -------------------------------------------------------------------------------- /lunasea/lib/modules/sabnzbd/routes.dart: -------------------------------------------------------------------------------- 1 | export 'routes/history.dart'; 2 | export 'routes/history_stages.dart'; 3 | export 'routes/queue.dart'; 4 | export 'routes/sabnzbd.dart'; 5 | export 'routes/statistics.dart'; 6 | -------------------------------------------------------------------------------- /lunasea/lib/modules/sabnzbd/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/app_bar_stats.dart'; 2 | export 'widgets/history_hide_button.dart'; 3 | export 'widgets/history_search_bar.dart'; 4 | export 'widgets/history_tile.dart'; 5 | export 'widgets/navigation_bar.dart'; 6 | export 'widgets/queue_fab.dart'; 7 | export 'widgets/queue_tile.dart'; 8 | -------------------------------------------------------------------------------- /lunasea/lib/modules/search.dart: -------------------------------------------------------------------------------- 1 | export 'search/core.dart'; 2 | export 'search/routes.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/search/core.dart: -------------------------------------------------------------------------------- 1 | export 'package:lunasea/database/tables/search.dart'; 2 | export 'core/api.dart'; 3 | export 'core/dialogs.dart'; 4 | export 'core/models.dart'; 5 | export 'core/state.dart'; 6 | export 'core/types.dart'; 7 | -------------------------------------------------------------------------------- /lunasea/lib/modules/search/core/models.dart: -------------------------------------------------------------------------------- 1 | export 'models/category.dart'; 2 | export 'models/result.dart'; 3 | export 'models/subcategory.dart'; 4 | -------------------------------------------------------------------------------- /lunasea/lib/modules/search/core/models/subcategory.dart: -------------------------------------------------------------------------------- 1 | class NewznabSubcategoryData { 2 | int id; 3 | String? name; 4 | 5 | NewznabSubcategoryData({ 6 | required this.id, 7 | required this.name, 8 | }); 9 | 10 | @override 11 | String toString() => { 12 | 'id': id, 13 | 'name': name, 14 | }.toString(); 15 | } 16 | -------------------------------------------------------------------------------- /lunasea/lib/modules/search/core/types.dart: -------------------------------------------------------------------------------- 1 | export 'types/download_type.dart'; 2 | -------------------------------------------------------------------------------- /lunasea/lib/modules/search/routes.dart: -------------------------------------------------------------------------------- 1 | export 'routes/categories.dart'; 2 | export 'routes/indexers.dart'; 3 | export 'routes/results.dart'; 4 | export 'routes/search.dart'; 5 | export 'routes/subcategories.dart'; 6 | -------------------------------------------------------------------------------- /lunasea/lib/modules/search/routes/categories.dart: -------------------------------------------------------------------------------- 1 | export 'categories/route.dart'; 2 | export 'categories/widgets.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/search/routes/categories/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/category_tile.dart'; 2 | -------------------------------------------------------------------------------- /lunasea/lib/modules/search/routes/indexers.dart: -------------------------------------------------------------------------------- 1 | export 'indexers/route.dart'; 2 | export 'indexers/widgets.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/search/routes/indexers/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/indexer_tile.dart'; 2 | -------------------------------------------------------------------------------- /lunasea/lib/modules/search/routes/results.dart: -------------------------------------------------------------------------------- 1 | export 'results/route.dart'; 2 | export 'results/widgets.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/search/routes/results/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/result_tile.dart'; 2 | -------------------------------------------------------------------------------- /lunasea/lib/modules/search/routes/search.dart: -------------------------------------------------------------------------------- 1 | export 'search/route.dart'; 2 | export 'search/widgets.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/search/routes/search/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/search_bar.dart'; 2 | -------------------------------------------------------------------------------- /lunasea/lib/modules/search/routes/subcategories.dart: -------------------------------------------------------------------------------- 1 | export 'subcategories/route.dart'; 2 | export 'subcategories/widgets.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/search/routes/subcategories/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/all_subcategories_tile.dart'; 2 | export 'widgets/subcategory_tile.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/settings.dart: -------------------------------------------------------------------------------- 1 | export 'settings/core.dart'; 2 | -------------------------------------------------------------------------------- /lunasea/lib/modules/settings/core.dart: -------------------------------------------------------------------------------- 1 | export 'core/banners.dart'; 2 | export 'core/dialogs.dart'; 3 | export 'core/pages.dart'; 4 | export 'core/state.dart'; 5 | export 'core/types.dart'; 6 | export 'core/utilities.dart'; 7 | -------------------------------------------------------------------------------- /lunasea/lib/modules/settings/core/pages.dart: -------------------------------------------------------------------------------- 1 | export 'pages/headers.dart'; 2 | -------------------------------------------------------------------------------- /lunasea/lib/modules/settings/core/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:lunasea/core.dart'; 2 | 3 | class SettingsState extends LunaModuleState { 4 | @override 5 | void reset() {} 6 | } 7 | -------------------------------------------------------------------------------- /lunasea/lib/modules/settings/core/types.dart: -------------------------------------------------------------------------------- 1 | export 'types/header.dart'; 2 | -------------------------------------------------------------------------------- /lunasea/lib/modules/settings/core/utilities.dart: -------------------------------------------------------------------------------- 1 | export 'utilities/headers.dart'; 2 | -------------------------------------------------------------------------------- /lunasea/lib/modules/settings/routes/configuration_dashboard/pages.dart: -------------------------------------------------------------------------------- 1 | export 'pages/calendar_settings.dart'; 2 | export 'pages/default_pages.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/settings/routes/configuration_external_modules/pages.dart: -------------------------------------------------------------------------------- 1 | export 'pages/add_module.dart'; 2 | export 'pages/edit_module.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/settings/routes/configuration_lidarr/pages.dart: -------------------------------------------------------------------------------- 1 | export 'pages/connection_details.dart'; 2 | export 'pages/default_pages.dart'; 3 | export 'pages/headers.dart'; 4 | -------------------------------------------------------------------------------- /lunasea/lib/modules/settings/routes/configuration_nzbget/pages.dart: -------------------------------------------------------------------------------- 1 | export 'pages/connection_details.dart'; 2 | export 'pages/default_pages.dart'; 3 | export 'pages/headers.dart'; 4 | -------------------------------------------------------------------------------- /lunasea/lib/modules/settings/routes/configuration_radarr/pages.dart: -------------------------------------------------------------------------------- 1 | export 'pages/connection_details.dart'; 2 | export 'pages/default_options.dart'; 3 | export 'pages/default_pages.dart'; 4 | export 'pages/headers.dart'; 5 | -------------------------------------------------------------------------------- /lunasea/lib/modules/settings/routes/configuration_search/pages.dart: -------------------------------------------------------------------------------- 1 | export 'pages/add_indexer.dart'; 2 | export 'pages/add_indexer_headers.dart'; 3 | export 'pages/edit_indexer.dart'; 4 | export 'pages/edit_indexer_headers.dart'; 5 | -------------------------------------------------------------------------------- /lunasea/lib/modules/settings/routes/configuration_sonarr/pages.dart: -------------------------------------------------------------------------------- 1 | export 'pages/connection_details.dart'; 2 | export 'pages/default_options.dart'; 3 | export 'pages/default_pages.dart'; 4 | export 'pages/headers.dart'; 5 | -------------------------------------------------------------------------------- /lunasea/lib/modules/settings/routes/configuration_tautulli/pages.dart: -------------------------------------------------------------------------------- 1 | export 'pages/connection_details.dart'; 2 | export 'pages/default_pages.dart'; 3 | export 'pages/headers.dart'; 4 | -------------------------------------------------------------------------------- /lunasea/lib/modules/settings/routes/system/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/backup_tile.dart'; 2 | export 'widgets/restore_tile.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/settings/routes/system_logs/pages.dart: -------------------------------------------------------------------------------- 1 | export 'pages/log_details.dart'; 2 | -------------------------------------------------------------------------------- /lunasea/lib/modules/settings/routes/system_logs/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/log_tile.dart'; 2 | -------------------------------------------------------------------------------- /lunasea/lib/modules/sonarr.dart: -------------------------------------------------------------------------------- 1 | export '../api/sonarr/sonarr.dart'; 2 | export '../api/sonarr/controllers.dart'; 3 | export '../api/sonarr/models.dart'; 4 | export '../api/sonarr/types.dart'; 5 | export '../api/sonarr/utilities.dart'; 6 | export 'sonarr/core.dart'; 7 | export 'sonarr/routes.dart'; 8 | -------------------------------------------------------------------------------- /lunasea/lib/modules/sonarr/core.dart: -------------------------------------------------------------------------------- 1 | export 'package:lunasea/database/tables/sonarr.dart'; 2 | export 'core/api_controller.dart'; 3 | export 'core/dialogs.dart'; 4 | export 'core/extensions.dart'; 5 | export 'core/state.dart'; 6 | export 'core/types.dart'; 7 | export 'core/webhooks.dart'; 8 | -------------------------------------------------------------------------------- /lunasea/lib/modules/sonarr/core/types.dart: -------------------------------------------------------------------------------- 1 | export 'types/filter_releases.dart'; 2 | export 'types/filter_series.dart'; 3 | export 'types/monitor_status.dart'; 4 | export 'types/settings_episode_multi.dart'; 5 | export 'types/settings_episode.dart'; 6 | export 'types/settings_global.dart'; 7 | export 'types/settings_season.dart'; 8 | export 'types/settings_series.dart'; 9 | export 'types/sorting_releases.dart'; 10 | export 'types/sorting_series.dart'; 11 | -------------------------------------------------------------------------------- /lunasea/lib/modules/sonarr/routes/add_series.dart: -------------------------------------------------------------------------------- 1 | export 'add_series/route.dart'; 2 | export 'add_series/state.dart'; 3 | export 'add_series/widgets.dart'; 4 | -------------------------------------------------------------------------------- /lunasea/lib/modules/sonarr/routes/add_series/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/appbar.dart'; 2 | export 'widgets/page_search.dart'; 3 | export 'widgets/search_results_tile.dart'; 4 | -------------------------------------------------------------------------------- /lunasea/lib/modules/sonarr/routes/add_series_details.dart: -------------------------------------------------------------------------------- 1 | export 'add_series_details/route.dart'; 2 | export 'add_series_details/state.dart'; 3 | export 'add_series_details/widgets.dart'; 4 | -------------------------------------------------------------------------------- /lunasea/lib/modules/sonarr/routes/add_series_details/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/bottom_action_bar.dart'; 2 | export 'widgets/tile_language_profile.dart'; 3 | export 'widgets/tile_monitor.dart'; 4 | export 'widgets/tile_quality_profile.dart'; 5 | export 'widgets/tile_root_folder.dart'; 6 | export 'widgets/tile_series_type.dart'; 7 | export 'widgets/tile_tags.dart'; 8 | export 'widgets/tile_use_season_folders.dart'; 9 | -------------------------------------------------------------------------------- /lunasea/lib/modules/sonarr/routes/catalogue.dart: -------------------------------------------------------------------------------- 1 | export 'catalogue/route.dart'; 2 | export 'catalogue/widgets.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/sonarr/routes/catalogue/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/search_bar.dart'; 2 | export 'widgets/search_bar_filter_button.dart'; 3 | export 'widgets/search_bar_sort_button.dart'; 4 | export 'widgets/search_bar_view_button.dart'; 5 | export 'widgets/series_tile.dart'; 6 | -------------------------------------------------------------------------------- /lunasea/lib/modules/sonarr/routes/edit_series.dart: -------------------------------------------------------------------------------- 1 | export 'edit_series/route.dart'; 2 | export 'edit_series/state.dart'; 3 | export 'edit_series/widgets.dart'; 4 | -------------------------------------------------------------------------------- /lunasea/lib/modules/sonarr/routes/edit_series/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/bottom_action_bar.dart'; 2 | export 'widgets/tile_language_profile.dart'; 3 | export 'widgets/tile_monitored.dart'; 4 | export 'widgets/tile_quality_profile.dart'; 5 | export 'widgets/tile_series_path.dart'; 6 | export 'widgets/tile_series_type.dart'; 7 | export 'widgets/tile_tags.dart'; 8 | export 'widgets/tile_use_season_folders.dart'; 9 | -------------------------------------------------------------------------------- /lunasea/lib/modules/sonarr/routes/history.dart: -------------------------------------------------------------------------------- 1 | export 'history/route.dart'; 2 | export 'history/widgets.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/sonarr/routes/history/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/history_tile.dart'; 2 | -------------------------------------------------------------------------------- /lunasea/lib/modules/sonarr/routes/missing.dart: -------------------------------------------------------------------------------- 1 | export 'missing/route.dart'; 2 | export 'missing/widgets.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/sonarr/routes/missing/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/missing_tile.dart'; 2 | -------------------------------------------------------------------------------- /lunasea/lib/modules/sonarr/routes/more.dart: -------------------------------------------------------------------------------- 1 | export 'more/route.dart'; 2 | -------------------------------------------------------------------------------- /lunasea/lib/modules/sonarr/routes/queue.dart: -------------------------------------------------------------------------------- 1 | export 'queue/route.dart'; 2 | export 'queue/state.dart'; 3 | export 'queue/widgets.dart'; 4 | -------------------------------------------------------------------------------- /lunasea/lib/modules/sonarr/routes/queue/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/queue_tile.dart'; 2 | -------------------------------------------------------------------------------- /lunasea/lib/modules/sonarr/routes/releases.dart: -------------------------------------------------------------------------------- 1 | export 'releases/route.dart'; 2 | export 'releases/state.dart'; 3 | export 'releases/widgets.dart'; 4 | -------------------------------------------------------------------------------- /lunasea/lib/modules/sonarr/routes/releases/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/release_tile.dart'; 2 | export 'widgets/search_bar.dart'; 3 | export 'widgets/search_bar_filter_button.dart'; 4 | export 'widgets/search_bar_sort_button.dart'; 5 | -------------------------------------------------------------------------------- /lunasea/lib/modules/sonarr/routes/season_details.dart: -------------------------------------------------------------------------------- 1 | export 'season_details/route.dart'; 2 | export 'season_details/sheets.dart'; 3 | export 'season_details/state.dart'; 4 | export 'season_details/widgets.dart'; 5 | -------------------------------------------------------------------------------- /lunasea/lib/modules/sonarr/routes/season_details/sheets.dart: -------------------------------------------------------------------------------- 1 | export 'sheets/episode_details.dart'; 2 | export 'sheets/media_info.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/sonarr/routes/season_details/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/episode_tile.dart'; 2 | export 'widgets/navigation_bar.dart'; 3 | export 'widgets/page_episodes.dart'; 4 | export 'widgets/page_history.dart'; 5 | export 'widgets/season_header.dart'; 6 | -------------------------------------------------------------------------------- /lunasea/lib/modules/sonarr/routes/series_details.dart: -------------------------------------------------------------------------------- 1 | export 'series_details/route.dart'; 2 | export 'series_details/state.dart'; 3 | export 'series_details/widgets.dart'; 4 | -------------------------------------------------------------------------------- /lunasea/lib/modules/sonarr/routes/series_details/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/appbar_settings_action.dart'; 2 | export 'widgets/navigation_bar.dart'; 3 | export 'widgets/overview_series_description_tile.dart'; 4 | export 'widgets/overview_series_information_block.dart.dart'; 5 | export 'widgets/page_history.dart'; 6 | export 'widgets/page_overview.dart'; 7 | export 'widgets/page_seasons.dart'; 8 | export 'widgets/season_all_tile.dart'; 9 | export 'widgets/season_tile.dart'; 10 | -------------------------------------------------------------------------------- /lunasea/lib/modules/sonarr/routes/sonarr.dart: -------------------------------------------------------------------------------- 1 | export 'sonarr/route.dart'; 2 | export 'sonarr/widgets.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/sonarr/routes/sonarr/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/appbar_add_series_action.dart'; 2 | export 'widgets/appbar_global_settings_action.dart'; 3 | export 'widgets/navigation_bar.dart'; 4 | -------------------------------------------------------------------------------- /lunasea/lib/modules/sonarr/routes/tags.dart: -------------------------------------------------------------------------------- 1 | export 'tags/route.dart'; 2 | export 'tags/widgets.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/sonarr/routes/tags/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/appbar_action_add_tag.dart'; 2 | export 'widgets/tag_tile.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/sonarr/routes/upcoming.dart: -------------------------------------------------------------------------------- 1 | export 'upcoming/route.dart'; 2 | export 'upcoming/widgets.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/sonarr/routes/upcoming/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/upcoming_tile.dart'; 2 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli.dart: -------------------------------------------------------------------------------- 1 | export '../api/tautulli/tautulli.dart'; 2 | export '../api/tautulli/commands.dart'; 3 | export '../api/tautulli/models.dart'; 4 | export '../api/tautulli/types.dart'; 5 | export '../api/tautulli/utilities.dart'; 6 | export 'tautulli/core.dart'; 7 | export 'tautulli/routes.dart'; 8 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/core.dart: -------------------------------------------------------------------------------- 1 | export 'package:lunasea/database/tables/tautulli.dart'; 2 | export 'core/api_helper.dart'; 3 | export 'core/dialogs.dart'; 4 | export 'core/extensions.dart'; 5 | export 'core/graphs.dart'; 6 | export 'core/state.dart'; 7 | export 'core/types.dart'; 8 | export 'core/webhooks.dart'; 9 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/core/extensions.dart: -------------------------------------------------------------------------------- 1 | export 'extensions/tautulli_activity.dart'; 2 | export 'extensions/tautulli_history_record.dart'; 3 | export 'extensions/tautulli_session.dart'; 4 | export 'extensions/tautulli_table_library.dart'; 5 | export 'extensions/tautulli_transcode_decision.dart'; 6 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/core/graphs.dart: -------------------------------------------------------------------------------- 1 | export 'graphs/bar_graph.dart'; 2 | export 'graphs/graph.dart'; 3 | export 'graphs/line_graph.dart'; 4 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/core/types.dart: -------------------------------------------------------------------------------- 1 | export 'types/media_details_switcher.dart'; 2 | export 'types/settings_global.dart'; 3 | export 'types/statistics_time_range.dart'; 4 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/activity.dart: -------------------------------------------------------------------------------- 1 | export 'activity/route.dart'; 2 | export 'activity/widgets.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/activity/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/activity_status.dart'; 2 | export 'widgets/activity_tile.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/activity_details.dart: -------------------------------------------------------------------------------- 1 | export 'activity_details/route.dart'; 2 | export 'activity_details/widgets.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/activity_details/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/appbar_metadata_action.dart'; 2 | export 'widgets/appbar_user_action.dart'; 3 | export 'widgets/block_metadata.dart'; 4 | export 'widgets/block_player.dart'; 5 | export 'widgets/block_stream.dart'; 6 | export 'widgets/bottom_action_bar.dart'; 7 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/check_for_updates.dart: -------------------------------------------------------------------------------- 1 | export 'check_for_updates/route.dart'; 2 | export 'check_for_updates/state.dart'; 3 | export 'check_for_updates/widgets.dart'; 4 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/check_for_updates/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/pms_tile.dart'; 2 | export 'widgets/tautulli_tile.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/graphs.dart: -------------------------------------------------------------------------------- 1 | export 'graphs/route.dart'; 2 | export 'graphs/widgets.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/graphs/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/navigation_bar.dart'; 2 | export 'widgets/type_button.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/graphs_play_by_period.dart: -------------------------------------------------------------------------------- 1 | export 'graphs_play_by_period/route.dart'; 2 | export 'graphs_play_by_period/widgets.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/graphs_play_by_period/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/daily_play_count_graph.dart'; 2 | export 'widgets/play_count_by_day_of_week_graph.dart'; 3 | export 'widgets/play_count_by_top_platforms_graph.dart'; 4 | export 'widgets/play_count_by_top_users_graph.dart'; 5 | export 'widgets/plays_by_month_graph.dart'; 6 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/graphs_stream_information.dart: -------------------------------------------------------------------------------- 1 | export 'graphs_stream_information/route.dart'; 2 | export 'graphs_stream_information/widgets.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/graphs_stream_information/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/daily_stream_type_breakdown_graph.dart'; 2 | export 'widgets/play_count_by_platform_stream_type_graph.dart'; 3 | export 'widgets/play_count_by_source_resolution_graph.dart'; 4 | export 'widgets/play_count_by_stream_resolution_graph.dart'; 5 | export 'widgets/play_count_by_user_stream_type_graph.dart'; 6 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/history.dart: -------------------------------------------------------------------------------- 1 | export 'history/route.dart'; 2 | export 'history/widgets.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/history/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/history_tile.dart'; 2 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/history_details.dart: -------------------------------------------------------------------------------- 1 | export 'history_details/route.dart'; 2 | export 'history_details/widgets.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/history_details/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/information.dart'; 2 | export 'widgets/metadata.dart'; 3 | export 'widgets/user.dart'; 4 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/ipaddress_details.dart: -------------------------------------------------------------------------------- 1 | export 'ipaddress_details/route.dart'; 2 | export 'ipaddress_details/state.dart'; 3 | export 'ipaddress_details/widgets.dart'; 4 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/ipaddress_details/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/geolocation_tile.dart'; 2 | export 'widgets/whois_tile.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/libraries.dart: -------------------------------------------------------------------------------- 1 | export 'libraries/route.dart'; 2 | export 'libraries/widgets.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/libraries/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/library_tile.dart'; 2 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/libraries_details.dart: -------------------------------------------------------------------------------- 1 | export 'libraries_details/route.dart'; 2 | export 'libraries_details/widgets.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/libraries_details/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/information.dart'; 2 | export 'widgets/information_details.dart'; 3 | export 'widgets/information_global_stats.dart'; 4 | export 'widgets/navigation_bar.dart'; 5 | export 'widgets/user_stats.dart'; 6 | export 'widgets/user_stats_tile.dart'; 7 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/logs.dart: -------------------------------------------------------------------------------- 1 | export 'logs/route.dart'; 2 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/logs_logins.dart: -------------------------------------------------------------------------------- 1 | export 'logs_logins/route.dart'; 2 | export 'logs_logins/state.dart'; 3 | export 'logs_logins/widgets.dart'; 4 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/logs_logins/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/log_tile.dart'; 2 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/logs_newsletters.dart: -------------------------------------------------------------------------------- 1 | export 'logs_newsletters/route.dart'; 2 | export 'logs_newsletters/state.dart'; 3 | export 'logs_newsletters/widgets.dart'; 4 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/logs_newsletters/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/log_tile.dart'; 2 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/logs_notifications.dart: -------------------------------------------------------------------------------- 1 | export 'logs_notifications/route.dart'; 2 | export 'logs_notifications/state.dart'; 3 | export 'logs_notifications/widgets.dart'; 4 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/logs_notifications/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/log_tile.dart'; 2 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/logs_plex_media_scanner.dart: -------------------------------------------------------------------------------- 1 | export 'logs_plex_media_scanner/route.dart'; 2 | export 'logs_plex_media_scanner/state.dart'; 3 | export 'logs_plex_media_scanner/widgets.dart'; 4 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/logs_plex_media_scanner/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/log_tile.dart'; 2 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/logs_plex_media_server.dart: -------------------------------------------------------------------------------- 1 | export 'logs_plex_media_server/route.dart'; 2 | export 'logs_plex_media_server/state.dart'; 3 | export 'logs_plex_media_server/widgets.dart'; 4 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/logs_plex_media_server/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/log_tile.dart'; 2 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/logs_tautulli.dart: -------------------------------------------------------------------------------- 1 | export 'logs_tautulli/route.dart'; 2 | export 'logs_tautulli/state.dart'; 3 | export 'logs_tautulli/widgets.dart'; 4 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/logs_tautulli/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/log_tile.dart'; 2 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/media_details.dart: -------------------------------------------------------------------------------- 1 | export 'media_details/route.dart'; 2 | export 'media_details/widgets.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/media_details/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/history.dart'; 2 | export 'widgets/metadata.dart'; 3 | export 'widgets/metadata_header.dart'; 4 | export 'widgets/metadata_metadata.dart'; 5 | export 'widgets/metadata_summary.dart'; 6 | export 'widgets/navigation_bar.dart'; 7 | export 'widgets/open_plex_button.dart'; 8 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/more.dart: -------------------------------------------------------------------------------- 1 | export 'more/route.dart'; 2 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/recently_added.dart: -------------------------------------------------------------------------------- 1 | export 'recently_added/route.dart'; 2 | export 'recently_added/widgets.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/recently_added/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/content_tile.dart'; 2 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/search.dart: -------------------------------------------------------------------------------- 1 | export 'search/route.dart'; 2 | export 'search/widgets.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/search/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/search_appbar.dart'; 2 | export 'widgets/search_result_tile.dart'; 3 | export 'widgets/search_results.dart'; 4 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/statistics.dart: -------------------------------------------------------------------------------- 1 | export 'statistics/route.dart'; 2 | export 'statistics/widgets.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/statistics/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/media_tile.dart'; 2 | export 'widgets/platform_tile.dart'; 3 | export 'widgets/recently_watched_tile.dart'; 4 | export 'widgets/stream_tile.dart'; 5 | export 'widgets/time_range_button.dart'; 6 | export 'widgets/type_button.dart'; 7 | export 'widgets/user_tile.dart'; 8 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/synced_items.dart: -------------------------------------------------------------------------------- 1 | export 'synced_items/route.dart'; 2 | export 'synced_items/widgets.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/synced_items/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/synced_item_tile.dart'; 2 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/tautulli.dart: -------------------------------------------------------------------------------- 1 | export 'tautulli/route.dart'; 2 | export 'tautulli/widgets.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/tautulli/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/appbar_global_settings_action.dart'; 2 | export 'widgets/navigation_bar.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/users.dart: -------------------------------------------------------------------------------- 1 | export 'users/route.dart'; 2 | export 'users/widgets.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/users/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/user_tile.dart'; 2 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/users_details.dart: -------------------------------------------------------------------------------- 1 | export 'users_details/route.dart'; 2 | export 'users_details/widgets.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/modules/tautulli/routes/users_details/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'widgets/history.dart'; 2 | export 'widgets/ip_addresses.dart'; 3 | export 'widgets/navigation_bar.dart'; 4 | export 'widgets/profile.dart'; 5 | export 'widgets/synced_items.dart'; 6 | -------------------------------------------------------------------------------- /lunasea/lib/system/bios.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | import 'package:lunasea/system/quick_actions/quick_actions.dart'; 4 | 5 | class LunaOS { 6 | Future boot(BuildContext context) async { 7 | if (LunaQuickActions.isSupported) LunaQuickActions().initialize(); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /lunasea/lib/system/cache/image/platform/image_cache_html.dart: -------------------------------------------------------------------------------- 1 | // ignore: always_use_package_imports 2 | import '../image_cache.dart'; 3 | 4 | bool isPlatformSupported() => false; 5 | LunaImageCache getImageCache() => 6 | throw UnsupportedError('LunaImageCache unsupported'); 7 | -------------------------------------------------------------------------------- /lunasea/lib/system/cache/image/platform/image_cache_stub.dart: -------------------------------------------------------------------------------- 1 | // ignore: always_use_package_imports 2 | import '../image_cache.dart'; 3 | 4 | bool isPlatformSupported() => false; 5 | LunaImageCache getImageCache() => 6 | throw UnsupportedError('LunaImageCache unsupported'); 7 | -------------------------------------------------------------------------------- /lunasea/lib/system/filesystem/file.dart: -------------------------------------------------------------------------------- 1 | class LunaFile { 2 | List data; 3 | String name; 4 | String? path; 5 | 6 | LunaFile({ 7 | required this.data, 8 | required this.name, 9 | this.path, 10 | }); 11 | } 12 | -------------------------------------------------------------------------------- /lunasea/lib/system/filesystem/platform/filesystem_stub.dart: -------------------------------------------------------------------------------- 1 | // ignore: always_use_package_imports 2 | import '../filesystem.dart'; 3 | 4 | bool isPlatformSupported() => false; 5 | LunaFileSystem getFileSystem() => 6 | throw UnsupportedError('LunaFileSystem unsupported'); 7 | -------------------------------------------------------------------------------- /lunasea/lib/system/network/network.dart: -------------------------------------------------------------------------------- 1 | // ignore: always_use_package_imports 2 | import 'platform/network_stub.dart' 3 | if (dart.library.io) 'platform/network_io.dart' 4 | if (dart.library.html) 'platform/network_html.dart'; 5 | 6 | abstract class LunaNetwork { 7 | static bool get isSupported => isPlatformSupported(); 8 | factory LunaNetwork() => getNetwork(); 9 | 10 | void initialize(); 11 | } 12 | -------------------------------------------------------------------------------- /lunasea/lib/system/network/platform/network_html.dart: -------------------------------------------------------------------------------- 1 | // ignore: always_use_package_imports 2 | import '../network.dart'; 3 | 4 | bool isPlatformSupported() => false; 5 | LunaNetwork getNetwork() => throw UnsupportedError('LunaNetwork unsupported'); 6 | -------------------------------------------------------------------------------- /lunasea/lib/system/network/platform/network_stub.dart: -------------------------------------------------------------------------------- 1 | // ignore: always_use_package_imports 2 | import '../network.dart'; 3 | 4 | bool isPlatformSupported() => false; 5 | LunaNetwork getNetwork() => throw UnsupportedError('LunaNetwork unsupported'); 6 | -------------------------------------------------------------------------------- /lunasea/lib/system/quick_actions/platform/quick_actions_html.dart: -------------------------------------------------------------------------------- 1 | // ignore: always_use_package_imports 2 | import '../quick_actions.dart'; 3 | 4 | bool isPlatformSupported() => false; 5 | LunaQuickActions getQuickActions() => 6 | throw UnsupportedError('LunaQuickActions unsupported'); 7 | -------------------------------------------------------------------------------- /lunasea/lib/system/quick_actions/platform/quick_actions_stub.dart: -------------------------------------------------------------------------------- 1 | // ignore: always_use_package_imports 2 | import '../quick_actions.dart'; 3 | 4 | bool isPlatformSupported() => false; 5 | LunaQuickActions getQuickActions() => 6 | throw UnsupportedError('LunaQuickActions unsupported'); 7 | -------------------------------------------------------------------------------- /lunasea/lib/system/webhooks.dart: -------------------------------------------------------------------------------- 1 | import 'package:lunasea/core.dart'; 2 | 3 | abstract class LunaWebhooks { 4 | Future handle(Map data); 5 | 6 | static String buildUserTokenURL(String token, LunaModule module) { 7 | return 'https://notify.lunasea.app/v1/${module.key}/user/$token'; 8 | } 9 | 10 | static String buildDeviceTokenURL(String token, LunaModule module) { 11 | return 'https://notify.lunasea.app/v1/${module.key}/device/$token'; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /lunasea/lib/system/window_manager/platform/window_manager_html.dart: -------------------------------------------------------------------------------- 1 | // ignore: always_use_package_imports 2 | import '../window_manager.dart'; 3 | 4 | bool isPlatformSupported() => false; 5 | LunaWindowManager getWindowManager() => 6 | throw UnsupportedError('LunaWindowManager unsupported'); 7 | -------------------------------------------------------------------------------- /lunasea/lib/system/window_manager/platform/window_manager_stub.dart: -------------------------------------------------------------------------------- 1 | // ignore: always_use_package_imports 2 | import '../window_manager.dart'; 3 | 4 | bool isPlatformSupported() => false; 5 | LunaWindowManager getWindowManager() => 6 | throw UnsupportedError('LunaWindowManager unsupported'); 7 | -------------------------------------------------------------------------------- /lunasea/lib/types/enum/readable.dart: -------------------------------------------------------------------------------- 1 | mixin EnumReadable on Enum { 2 | String get readable; 3 | } 4 | -------------------------------------------------------------------------------- /lunasea/lib/types/enum/serializable.dart: -------------------------------------------------------------------------------- 1 | mixin EnumSerializable on Enum { 2 | String get value; 3 | 4 | String toJson() => this.value; 5 | 6 | @override 7 | String toString() => this.value; 8 | } 9 | -------------------------------------------------------------------------------- /lunasea/lib/types/exception.dart: -------------------------------------------------------------------------------- 1 | import 'package:lunasea/types/log_type.dart'; 2 | 3 | abstract class LunaException implements Exception { 4 | LunaLogType get type; 5 | } 6 | 7 | mixin WarningExceptionMixin implements LunaException { 8 | @override 9 | LunaLogType get type => LunaLogType.WARNING; 10 | } 11 | 12 | mixin ErrorExceptionMixin implements LunaException { 13 | @override 14 | LunaLogType get type => LunaLogType.ERROR; 15 | } 16 | -------------------------------------------------------------------------------- /lunasea/lib/types/loading_state.dart: -------------------------------------------------------------------------------- 1 | enum LunaLoadingState { 2 | ACTIVE, 3 | INACTIVE, 4 | ERROR, 5 | } 6 | -------------------------------------------------------------------------------- /lunasea/lib/utils/parser.dart: -------------------------------------------------------------------------------- 1 | abstract class LunaParser { 2 | static DateTime? dateTimeFromString(String? date) { 3 | return DateTime.tryParse(date ?? ''); 4 | } 5 | 6 | static String? dateTimeToISO8601(DateTime? date) { 7 | return date?.toIso8601String(); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /lunasea/lib/utils/uuid.dart: -------------------------------------------------------------------------------- 1 | import 'package:uuid/uuid.dart'; 2 | 3 | class LunaUUID { 4 | static const Uuid _generator = Uuid(); 5 | 6 | String generate() { 7 | return _generator.v4(); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /lunasea/lib/utils/validator.dart: -------------------------------------------------------------------------------- 1 | class LunaValidator { 2 | bool email(String email) { 3 | const regex = r"(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)"; 4 | return RegExp(regex).hasMatch(email); 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /lunasea/lib/widgets/ui/assets.dart: -------------------------------------------------------------------------------- 1 | class LunaAssets { 2 | LunaAssets._(); 3 | 4 | static const String brandingFull = 'assets/images/branding_full.png'; 5 | static const String brandingLogo = 'assets/images/branding_logo.png'; 6 | } 7 | -------------------------------------------------------------------------------- /lunasea/lib/widgets/ui/block.dart: -------------------------------------------------------------------------------- 1 | export 'block/block.dart'; 2 | export 'block/grid_block.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/widgets/ui/bottom_bar.dart: -------------------------------------------------------------------------------- 1 | export 'bottom_bar/action_bar_card.dart'; 2 | export 'bottom_bar/action_bar.dart'; 3 | export 'bottom_bar/badge.dart'; 4 | export 'bottom_bar/navigation_bar.dart'; 5 | -------------------------------------------------------------------------------- /lunasea/lib/widgets/ui/containers.dart: -------------------------------------------------------------------------------- 1 | export 'containers/button_container.dart'; 2 | -------------------------------------------------------------------------------- /lunasea/lib/widgets/ui/controllers.dart: -------------------------------------------------------------------------------- 1 | export 'controllers/page_controller.dart'; 2 | -------------------------------------------------------------------------------- /lunasea/lib/widgets/ui/deprecated.dart: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lunasea/lib/widgets/ui/divider.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:lunasea/core.dart'; 3 | 4 | class LunaDivider extends Divider { 5 | LunaDivider({ 6 | Key? key, 7 | }) : super( 8 | key: key, 9 | thickness: 1.0, 10 | color: LunaColours.accent.dimmed(), 11 | indent: LunaUI.DEFAULT_MARGIN_SIZE * 5, 12 | endIndent: LunaUI.DEFAULT_MARGIN_SIZE * 5, 13 | ); 14 | } 15 | -------------------------------------------------------------------------------- /lunasea/lib/widgets/ui/drawer.dart: -------------------------------------------------------------------------------- 1 | export 'drawer/drawer.dart'; 2 | export 'drawer/drawer_header.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/widgets/ui/floating_action_button.dart: -------------------------------------------------------------------------------- 1 | export 'floating_action_button/floating_action_button_animated.dart'; 2 | export 'floating_action_button/floating_action_button.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/widgets/ui/grid_view.dart: -------------------------------------------------------------------------------- 1 | export 'grid_view/grid_view_builder.dart'; 2 | -------------------------------------------------------------------------------- /lunasea/lib/widgets/ui/icons.dart: -------------------------------------------------------------------------------- 1 | export 'icons/icon_button.dart'; 2 | export 'icons/icon.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/widgets/ui/images.dart: -------------------------------------------------------------------------------- 1 | export 'images/network_image.dart'; 2 | export 'images/network_image_provider/network_image_provider.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/widgets/ui/images/network_image_provider/platform/network_image_provider_stub.dart: -------------------------------------------------------------------------------- 1 | // ignore: always_use_package_imports 2 | import '../network_image_provider.dart'; 3 | 4 | LunaNetworkImageProvider getNetworkImageProvider({ 5 | required String url, 6 | Map? headers, 7 | }) { 8 | throw UnsupportedError('LunaNetworkImageProvider unsupported'); 9 | } 10 | -------------------------------------------------------------------------------- /lunasea/lib/widgets/ui/list_tile.dart: -------------------------------------------------------------------------------- 1 | export 'list_tile/expandable_list_tile.dart'; 2 | export 'list_tile/list_tile.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/widgets/ui/list_view.dart: -------------------------------------------------------------------------------- 1 | export 'list_view/custom_scroll_view.dart'; 2 | export 'list_view/list_view.dart'; 3 | export 'list_view/list_view_builder.dart'; 4 | export 'list_view/list_view_modal.dart'; 5 | export 'list_view/list_view_modal_builder.dart'; 6 | export 'list_view/paged_list_view.dart'; 7 | export 'list_view/reorderable_list_view.dart'; 8 | export 'list_view/reorderable_list_view_builder.dart'; 9 | export 'list_view/reorderable_list_view_dragger.dart'; 10 | -------------------------------------------------------------------------------- /lunasea/lib/widgets/ui/mixins.dart: -------------------------------------------------------------------------------- 1 | export 'mixins/load_callback.dart'; 2 | export 'mixins/scroll_controller.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/widgets/ui/mixins/load_callback.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | /// Simple mixin to force a definition of [loadCallback], a post-frame callback added to the [initState] override. 4 | mixin LunaLoadCallbackMixin on State { 5 | @mustCallSuper 6 | @override 7 | void initState() { 8 | super.initState(); 9 | WidgetsBinding.instance.addPostFrameCallback((_) => loadCallback()); 10 | } 11 | 12 | Future loadCallback(); 13 | } 14 | -------------------------------------------------------------------------------- /lunasea/lib/widgets/ui/mixins/scroll_controller.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | mixin LunaScrollControllerMixin on State { 4 | final ScrollController scrollController = ScrollController(); 5 | 6 | @mustCallSuper 7 | @override 8 | void dispose() { 9 | scrollController.dispose(); 10 | super.dispose(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lunasea/lib/widgets/ui/snackbar.dart: -------------------------------------------------------------------------------- 1 | export 'snackbar/snackbar.dart'; 2 | export 'snackbar/snackbar_error.dart'; 3 | export 'snackbar/snackbar_info.dart'; 4 | export 'snackbar/snackbar_success.dart'; 5 | -------------------------------------------------------------------------------- /lunasea/lib/widgets/ui/table.dart: -------------------------------------------------------------------------------- 1 | export 'table/table_card.dart'; 2 | export 'table/table_content.dart'; 3 | -------------------------------------------------------------------------------- /lunasea/lib/widgets/ui/text_span.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:lunasea/core.dart'; 3 | 4 | class LunaTextSpan extends TextSpan { 5 | const LunaTextSpan.extended({ 6 | required String? text, 7 | }) : super( 8 | text: text, 9 | style: const TextStyle( 10 | height: LunaBlock.SUBTITLE_HEIGHT / LunaUI.FONT_SIZE_H3, 11 | ), 12 | ); 13 | } 14 | -------------------------------------------------------------------------------- /lunasea/linux/.gitignore: -------------------------------------------------------------------------------- 1 | flutter/ephemeral 2 | -------------------------------------------------------------------------------- /lunasea/linux/flutter/generated_plugin_registrant.h: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #ifndef GENERATED_PLUGIN_REGISTRANT_ 8 | #define GENERATED_PLUGIN_REGISTRANT_ 9 | 10 | #include 11 | 12 | // Registers Flutter plugins. 13 | void fl_register_plugins(FlPluginRegistry* registry); 14 | 15 | #endif // GENERATED_PLUGIN_REGISTRANT_ 16 | -------------------------------------------------------------------------------- /lunasea/linux/main.cc: -------------------------------------------------------------------------------- 1 | #include "my_application.h" 2 | 3 | int main(int argc, char** argv) { 4 | g_autoptr(MyApplication) app = my_application_new(); 5 | return g_application_run(G_APPLICATION(app), argc, argv); 6 | } 7 | -------------------------------------------------------------------------------- /lunasea/linux/my_application.h: -------------------------------------------------------------------------------- 1 | #ifndef FLUTTER_MY_APPLICATION_H_ 2 | #define FLUTTER_MY_APPLICATION_H_ 3 | 4 | #include 5 | 6 | G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION, 7 | GtkApplication) 8 | 9 | /** 10 | * my_application_new: 11 | * 12 | * Creates a new Flutter-based application. 13 | * 14 | * Returns: a new #MyApplication. 15 | */ 16 | MyApplication* my_application_new(); 17 | 18 | #endif // FLUTTER_MY_APPLICATION_H_ 19 | -------------------------------------------------------------------------------- /lunasea/localization/dashboard/ca.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/dashboard/vi.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/lidarr/ca.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/lidarr/de.json: -------------------------------------------------------------------------------- 1 | { 2 | "lidarr.StartSearchFor": "Beginne Suche nach…", 3 | "lidarr.StartSearchForMissingAlbums": "Beginne Suche nach fehlenden Alben" 4 | } 5 | -------------------------------------------------------------------------------- /lunasea/localization/lidarr/el.json: -------------------------------------------------------------------------------- 1 | { 2 | "lidarr.StartSearchForMissingAlbums": "Ξεκίνα αναζήτηση για άλμπουμ που λείπουν", 3 | "lidarr.StartSearchFor": "Ξεκίνα αναζήτηση…" 4 | } 5 | -------------------------------------------------------------------------------- /lunasea/localization/lidarr/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "lidarr.StartSearchFor": "Start Search For…", 3 | "lidarr.StartSearchForMissingAlbums": "Start search for missing albums" 4 | } -------------------------------------------------------------------------------- /lunasea/localization/lidarr/es.json: -------------------------------------------------------------------------------- 1 | { 2 | "lidarr.StartSearchFor": "Iniciar búsqueda de…", 3 | "lidarr.StartSearchForMissingAlbums": "Iniciar la búsqueda de álbumes que faltan" 4 | } 5 | -------------------------------------------------------------------------------- /lunasea/localization/lidarr/fr.json: -------------------------------------------------------------------------------- 1 | { 2 | "lidarr.StartSearchFor": "Démarrer la recherche de…", 3 | "lidarr.StartSearchForMissingAlbums": "Lancez la recherche des albums manquants" 4 | } 5 | -------------------------------------------------------------------------------- /lunasea/localization/lidarr/hr.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/lidarr/hu.json: -------------------------------------------------------------------------------- 1 | { 2 | "lidarr.StartSearchFor": "Indítsa el a keresést…", 3 | "lidarr.StartSearchForMissingAlbums": "Keresse ki a hiányzó albumokat" 4 | } 5 | -------------------------------------------------------------------------------- /lunasea/localization/lidarr/it.json: -------------------------------------------------------------------------------- 1 | { 2 | "lidarr.StartSearchFor": "Inizia la ricerca di…", 3 | "lidarr.StartSearchForMissingAlbums": "Inizia la ricerca degli album mancanti" 4 | } 5 | -------------------------------------------------------------------------------- /lunasea/localization/lidarr/nb-NO.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /lunasea/localization/lidarr/nl.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/lidarr/pt.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /lunasea/localization/lidarr/ro.json: -------------------------------------------------------------------------------- 1 | { 2 | "lidarr.StartSearchFor": "Începe Căutarea Pentru…", 3 | "lidarr.StartSearchForMissingAlbums": "Începe căutarea pentru albume lipsă" 4 | } 5 | -------------------------------------------------------------------------------- /lunasea/localization/lidarr/ru.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /lunasea/localization/lidarr/sk.json: -------------------------------------------------------------------------------- 1 | { 2 | "lidarr.StartSearchFor": "Začnite hľadať…", 3 | "lidarr.StartSearchForMissingAlbums": "Začnite hľadať chýbajúce albumy" 4 | } 5 | -------------------------------------------------------------------------------- /lunasea/localization/lidarr/sv.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /lunasea/localization/lidarr/tr.json: -------------------------------------------------------------------------------- 1 | { 2 | "lidarr.StartSearchFor": "Aramaya Başla…", 3 | "lidarr.StartSearchForMissingAlbums": "Eksik albümleri aramaya başla" 4 | } 5 | -------------------------------------------------------------------------------- /lunasea/localization/lidarr/vi.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/lidarr/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "lidarr.StartSearchFor": "开始搜索…", 3 | "lidarr.StartSearchForMissingAlbums": "开始搜索丢失的专辑" 4 | } 5 | -------------------------------------------------------------------------------- /lunasea/localization/lunasea/ca.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/lunasea/hr.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/lunasea/ro.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/lunasea/sk.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/lunasea/vi.json: -------------------------------------------------------------------------------- 1 | { 2 | "lunasea.Add": "Thêm", 3 | "lunasea.ChangeProfiles": "Thay đổi thông tin", 4 | "lunasea.Changelog": "Bản ghi các thay đổi", 5 | "lunasea.CopiedContentToTheClipboard": "Nội dung đã được sao chép vào Clipboard" 6 | } 7 | -------------------------------------------------------------------------------- /lunasea/localization/nzbget/ca.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/nzbget/de.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /lunasea/localization/nzbget/el.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/nzbget/en.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /lunasea/localization/nzbget/es.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/nzbget/fr.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /lunasea/localization/nzbget/hr.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/nzbget/hu.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/nzbget/it.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /lunasea/localization/nzbget/nb-NO.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /lunasea/localization/nzbget/nl.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/nzbget/pt.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /lunasea/localization/nzbget/ro.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/nzbget/ru.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /lunasea/localization/nzbget/sk.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/nzbget/sv.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /lunasea/localization/nzbget/tr.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/nzbget/vi.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/nzbget/zh-Hans.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/overseerr/ca.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/overseerr/hr.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/overseerr/nb-NO.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /lunasea/localization/overseerr/nl.json: -------------------------------------------------------------------------------- 1 | { 2 | "overseerr.NoRequests": "Geen Verzoeken", 3 | "overseerr.OneRequest": "1 Verzoek", 4 | "overseerr.Requests": "Verzoeken", 5 | "overseerr.NoRequestsFound": "Geen Verzoeken Gevonden", 6 | "overseerr.NoUsersFound": "Geen Gebruikers Gevonden", 7 | "overseerr.UnknownUser": "Onbekende Gebruiker", 8 | "overseerr.Users": "Gebruikers", 9 | "overseerr.SomeRequests": "{} Verzoeken" 10 | } 11 | -------------------------------------------------------------------------------- /lunasea/localization/overseerr/pt.json: -------------------------------------------------------------------------------- 1 | { 2 | "overseerr.NoRequestsFound": "Nenhum Pedido Encontrado", 3 | "overseerr.Requests": "Pedidos", 4 | "overseerr.NoUsersFound": "Nenhum Usuário Encontrado", 5 | "overseerr.NoRequests": "Sem Pedidos", 6 | "overseerr.OneRequest": "1 Pedido", 7 | "overseerr.SomeRequests": "{} Pedidos", 8 | "overseerr.UnknownUser": "Usuário Desconhecido", 9 | "overseerr.Users": "Usuários" 10 | } 11 | -------------------------------------------------------------------------------- /lunasea/localization/overseerr/ro.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/overseerr/ru.json: -------------------------------------------------------------------------------- 1 | { 2 | "overseerr.Users": "Пользователи", 3 | "overseerr.UnknownUser": "Неизвестный пользователь", 4 | "overseerr.NoUsersFound": "Пользователи не найдены", 5 | "overseerr.NoRequestsFound": "Запросы не найдены", 6 | "overseerr.Requests": "Запросы", 7 | "overseerr.NoRequests": "Нет запросов", 8 | "overseerr.OneRequest": "1 запрос", 9 | "overseerr.SomeRequests": "{} запросов" 10 | } 11 | -------------------------------------------------------------------------------- /lunasea/localization/overseerr/sv.json: -------------------------------------------------------------------------------- 1 | { 2 | "overseerr.Users": "Användare", 3 | "overseerr.UnknownUser": "Okänd användare", 4 | "overseerr.NoUsersFound": "Inga användare hittades" 5 | } 6 | -------------------------------------------------------------------------------- /lunasea/localization/overseerr/vi.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/radarr/hr.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/radarr/ro.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/radarr/sk.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/radarr/vi.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/sabnzbd/ca.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/sabnzbd/hr.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/sabnzbd/it.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /lunasea/localization/sabnzbd/nl.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/sabnzbd/pt.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /lunasea/localization/sabnzbd/ro.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/sabnzbd/ru.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /lunasea/localization/sabnzbd/sv.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /lunasea/localization/sabnzbd/vi.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/search/ca.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/search/hr.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/search/ro.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/search/vi.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/settings/ca.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/settings/hr.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/settings/ro.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/settings/vi.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/sonarr/ca.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/sonarr/hr.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/sonarr/it.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /lunasea/localization/sonarr/nb-NO.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /lunasea/localization/sonarr/sk.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/sonarr/sv.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /lunasea/localization/sonarr/vi.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/tautulli/ca.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/tautulli/hr.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/tautulli/ro.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/tautulli/vi.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/wake_on_lan/ca.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/wake_on_lan/de.json: -------------------------------------------------------------------------------- 1 | { 2 | "wake_on_lan.MagicPacketSent": "Magic Paket gesendet", 3 | "wake_on_lan.MagicPacketSentMessage": "Ihre Maschine sollte nun aufwachen!", 4 | "wake_on_lan.MagicPacketFailedToSend": "Senden von Magic Paket fehlgeschlagen" 5 | } 6 | -------------------------------------------------------------------------------- /lunasea/localization/wake_on_lan/el.json: -------------------------------------------------------------------------------- 1 | { 2 | "wake_on_lan.MagicPacketSent": "Αποστολή Magic Packet", 3 | "wake_on_lan.MagicPacketSentMessage": "Το μηχάνημα πρέπει να εκκινεί!", 4 | "wake_on_lan.MagicPacketFailedToSend": "Αποτυχία αποστολής Magic Packet" 5 | } 6 | -------------------------------------------------------------------------------- /lunasea/localization/wake_on_lan/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "wake_on_lan.MagicPacketSent": "Magic Packet Sent", 3 | "wake_on_lan.MagicPacketSentMessage": "Your machine should be waking up!", 4 | "wake_on_lan.MagicPacketFailedToSend": "Failed to Send Magic Packet" 5 | } -------------------------------------------------------------------------------- /lunasea/localization/wake_on_lan/es.json: -------------------------------------------------------------------------------- 1 | { 2 | "wake_on_lan.MagicPacketSent": "Paquete mágico enviado", 3 | "wake_on_lan.MagicPacketSentMessage": "¡Su máquina debería estar despertando!", 4 | "wake_on_lan.MagicPacketFailedToSend": "Error al enviar Magic Packet" 5 | } 6 | -------------------------------------------------------------------------------- /lunasea/localization/wake_on_lan/fr.json: -------------------------------------------------------------------------------- 1 | { 2 | "wake_on_lan.MagicPacketSent": "Paquet magique envoyé", 3 | "wake_on_lan.MagicPacketSentMessage": "Votre machine devrait se réveiller !", 4 | "wake_on_lan.MagicPacketFailedToSend": "Échec de l'envoi du paquet magique" 5 | } 6 | -------------------------------------------------------------------------------- /lunasea/localization/wake_on_lan/hr.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/wake_on_lan/hu.json: -------------------------------------------------------------------------------- 1 | { 2 | "wake_on_lan.MagicPacketSent": "Magic Packet elküldve", 3 | "wake_on_lan.MagicPacketSentMessage": "A gépednek fel kellene ébrednie!", 4 | "wake_on_lan.MagicPacketFailedToSend": "Nem sikerült Magic Packet-et küldeni" 5 | } 6 | -------------------------------------------------------------------------------- /lunasea/localization/wake_on_lan/it.json: -------------------------------------------------------------------------------- 1 | { 2 | "wake_on_lan.MagicPacketSent": "Pacchetto magico inviato", 3 | "wake_on_lan.MagicPacketSentMessage": "La tua macchina dovrebbe risvegliarsi!", 4 | "wake_on_lan.MagicPacketFailedToSend": "Invio del pacchetto magico fallito" 5 | } 6 | -------------------------------------------------------------------------------- /lunasea/localization/wake_on_lan/nb-NO.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /lunasea/localization/wake_on_lan/nl.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/wake_on_lan/pt.json: -------------------------------------------------------------------------------- 1 | { 2 | "wake_on_lan.MagicPacketSent": "Pacote mágico enviado", 3 | "wake_on_lan.MagicPacketSentMessage": "Sua máquina deve estar acordando!", 4 | "wake_on_lan.MagicPacketFailedToSend": "Falha ao enviar pacote mágico" 5 | } 6 | -------------------------------------------------------------------------------- /lunasea/localization/wake_on_lan/ro.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/wake_on_lan/ru.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /lunasea/localization/wake_on_lan/sk.json: -------------------------------------------------------------------------------- 1 | { 2 | "wake_on_lan.MagicPacketSent": "Odoslaný magický balík", 3 | "wake_on_lan.MagicPacketFailedToSend": "Nepodarilo sa odoslať magický balík", 4 | "wake_on_lan.MagicPacketSentMessage": "Váš počítač by sa mal prebúdzať!" 5 | } 6 | -------------------------------------------------------------------------------- /lunasea/localization/wake_on_lan/sv.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /lunasea/localization/wake_on_lan/tr.json: -------------------------------------------------------------------------------- 1 | { 2 | "wake_on_lan.MagicPacketSent": "Sihirli Paket Gönderildi", 3 | "wake_on_lan.MagicPacketSentMessage": "Makineniz uyanıyor olmalı!", 4 | "wake_on_lan.MagicPacketFailedToSend": "Sihirli Paket Gönderilemedi" 5 | } 6 | -------------------------------------------------------------------------------- /lunasea/localization/wake_on_lan/vi.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lunasea/localization/wake_on_lan/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "wake_on_lan.MagicPacketSent": "已发送幻包", 3 | "wake_on_lan.MagicPacketSentMessage": "您的机器正在唤醒!", 4 | "wake_on_lan.MagicPacketFailedToSend": "幻包发送失败" 5 | } 6 | -------------------------------------------------------------------------------- /lunasea/macos/.gitignore: -------------------------------------------------------------------------------- 1 | # Flutter-related 2 | **/Flutter/ephemeral/ 3 | **/Pods/ 4 | 5 | # Xcode-related 6 | **/xcuserdata/ 7 | -------------------------------------------------------------------------------- /lunasea/macos/Flutter/Flutter-Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "ephemeral/Flutter-Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /lunasea/macos/Flutter/Flutter-Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "ephemeral/Flutter-Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /lunasea/macos/Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | 3 | gem "fastlane" 4 | gem "cocoapods" 5 | gem "abbrev" 6 | gem "logger" 7 | gem "mutex_m" 8 | gem "csv" 9 | -------------------------------------------------------------------------------- /lunasea/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /lunasea/macos/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /lunasea/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /lunasea/macos/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | @main 5 | class AppDelegate: FlutterAppDelegate { 6 | override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { 7 | return true 8 | } 9 | 10 | override func applicationSupportsSecureRestorableState(_ app: NSApplication) -> Bool { 11 | return true 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /lunasea/macos/Runner/Assets.xcassets/AppIcon.appiconset/icon_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/macos/Runner/Assets.xcassets/AppIcon.appiconset/icon_128.png -------------------------------------------------------------------------------- /lunasea/macos/Runner/Assets.xcassets/AppIcon.appiconset/icon_128@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/macos/Runner/Assets.xcassets/AppIcon.appiconset/icon_128@2x.png -------------------------------------------------------------------------------- /lunasea/macos/Runner/Assets.xcassets/AppIcon.appiconset/icon_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/macos/Runner/Assets.xcassets/AppIcon.appiconset/icon_16.png -------------------------------------------------------------------------------- /lunasea/macos/Runner/Assets.xcassets/AppIcon.appiconset/icon_16@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/macos/Runner/Assets.xcassets/AppIcon.appiconset/icon_16@2x.png -------------------------------------------------------------------------------- /lunasea/macos/Runner/Assets.xcassets/AppIcon.appiconset/icon_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/macos/Runner/Assets.xcassets/AppIcon.appiconset/icon_256.png -------------------------------------------------------------------------------- /lunasea/macos/Runner/Assets.xcassets/AppIcon.appiconset/icon_256@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/macos/Runner/Assets.xcassets/AppIcon.appiconset/icon_256@2x.png -------------------------------------------------------------------------------- /lunasea/macos/Runner/Assets.xcassets/AppIcon.appiconset/icon_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/macos/Runner/Assets.xcassets/AppIcon.appiconset/icon_32.png -------------------------------------------------------------------------------- /lunasea/macos/Runner/Assets.xcassets/AppIcon.appiconset/icon_32@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/macos/Runner/Assets.xcassets/AppIcon.appiconset/icon_32@2x.png -------------------------------------------------------------------------------- /lunasea/macos/Runner/Assets.xcassets/AppIcon.appiconset/icon_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/macos/Runner/Assets.xcassets/AppIcon.appiconset/icon_512.png -------------------------------------------------------------------------------- /lunasea/macos/Runner/Assets.xcassets/AppIcon.appiconset/icon_512@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/macos/Runner/Assets.xcassets/AppIcon.appiconset/icon_512@2x.png -------------------------------------------------------------------------------- /lunasea/macos/Runner/Configs/AppInfo.xcconfig: -------------------------------------------------------------------------------- 1 | PRODUCT_NAME = LunaSea 2 | PRODUCT_BUNDLE_IDENTIFIER = app.lunasea.lunasea 3 | PRODUCT_COPYRIGHT = Copyright © 2023 Jagandeep Brar. All rights reserved. 4 | -------------------------------------------------------------------------------- /lunasea/macos/Runner/Configs/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Debug.xcconfig" 2 | #include "Warnings.xcconfig" 3 | #include "AppInfo.xcconfig" 4 | -------------------------------------------------------------------------------- /lunasea/macos/Runner/Configs/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Release.xcconfig" 2 | #include "Warnings.xcconfig" 3 | #include "AppInfo.xcconfig" 4 | -------------------------------------------------------------------------------- /lunasea/macos/Runner/MainFlutterWindow.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | class MainFlutterWindow: NSWindow { 5 | override func awakeFromNib() { 6 | let flutterViewController = FlutterViewController.init() 7 | let windowFrame = self.frame 8 | self.contentViewController = flutterViewController 9 | self.setFrame(windowFrame, display: true) 10 | 11 | RegisterGeneratedPlugins(registry: flutterViewController) 12 | 13 | super.awakeFromNib() 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /lunasea/macos/fastlane/Appfile: -------------------------------------------------------------------------------- 1 | app_identifier("app.lunasea.lunasea") 2 | apple_id(ENV["APPLE_ID"]) 3 | itc_team_id(ENV["APPLE_ITC_TEAM_ID"]) 4 | team_id(ENV["APPLE_TEAM_ID"]) 5 | -------------------------------------------------------------------------------- /lunasea/macos/fastlane/Matchfile: -------------------------------------------------------------------------------- 1 | git_url("git@github.com:JagandeepBrar/fastlane-match-storage.git") 2 | storage_mode("git") 3 | app_identifier("app.lunasea.lunasea") 4 | platform("macos") 5 | -------------------------------------------------------------------------------- /lunasea/snap/gui/lunasea.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=LunaSea 3 | Comment=Self-hosted software controller built using Flutter 4 | Exec=lunasea 5 | Icon=${SNAP}/meta/gui/lunasea.png 6 | Terminal=false 7 | Type=Application 8 | Categories=Utilities;Entertainment; 9 | -------------------------------------------------------------------------------- /lunasea/snap/gui/lunasea.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/snap/gui/lunasea.png -------------------------------------------------------------------------------- /lunasea/web/android-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/web/android-icon-144x144.png -------------------------------------------------------------------------------- /lunasea/web/android-icon-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/web/android-icon-192x192.png -------------------------------------------------------------------------------- /lunasea/web/android-icon-36x36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/web/android-icon-36x36.png -------------------------------------------------------------------------------- /lunasea/web/android-icon-48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/web/android-icon-48x48.png -------------------------------------------------------------------------------- /lunasea/web/android-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/web/android-icon-72x72.png -------------------------------------------------------------------------------- /lunasea/web/android-icon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/web/android-icon-96x96.png -------------------------------------------------------------------------------- /lunasea/web/apple-icon-114x114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/web/apple-icon-114x114.png -------------------------------------------------------------------------------- /lunasea/web/apple-icon-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/web/apple-icon-120x120.png -------------------------------------------------------------------------------- /lunasea/web/apple-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/web/apple-icon-144x144.png -------------------------------------------------------------------------------- /lunasea/web/apple-icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/web/apple-icon-152x152.png -------------------------------------------------------------------------------- /lunasea/web/apple-icon-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/web/apple-icon-180x180.png -------------------------------------------------------------------------------- /lunasea/web/apple-icon-57x57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/web/apple-icon-57x57.png -------------------------------------------------------------------------------- /lunasea/web/apple-icon-60x60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/web/apple-icon-60x60.png -------------------------------------------------------------------------------- /lunasea/web/apple-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/web/apple-icon-72x72.png -------------------------------------------------------------------------------- /lunasea/web/apple-icon-76x76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/web/apple-icon-76x76.png -------------------------------------------------------------------------------- /lunasea/web/apple-icon-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/web/apple-icon-precomposed.png -------------------------------------------------------------------------------- /lunasea/web/apple-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/web/apple-icon.png -------------------------------------------------------------------------------- /lunasea/web/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | #ffffff -------------------------------------------------------------------------------- /lunasea/web/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/web/favicon-16x16.png -------------------------------------------------------------------------------- /lunasea/web/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/web/favicon-32x32.png -------------------------------------------------------------------------------- /lunasea/web/favicon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/web/favicon-96x96.png -------------------------------------------------------------------------------- /lunasea/web/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/web/favicon.ico -------------------------------------------------------------------------------- /lunasea/web/firebase-messaging-sw.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/web/firebase-messaging-sw.js -------------------------------------------------------------------------------- /lunasea/web/ms-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/web/ms-icon-144x144.png -------------------------------------------------------------------------------- /lunasea/web/ms-icon-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/web/ms-icon-150x150.png -------------------------------------------------------------------------------- /lunasea/web/ms-icon-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/web/ms-icon-310x310.png -------------------------------------------------------------------------------- /lunasea/web/ms-icon-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/web/ms-icon-70x70.png -------------------------------------------------------------------------------- /lunasea/web/splash/img/dark-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/web/splash/img/dark-1x.png -------------------------------------------------------------------------------- /lunasea/web/splash/img/dark-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/web/splash/img/dark-2x.png -------------------------------------------------------------------------------- /lunasea/web/splash/img/dark-3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/web/splash/img/dark-3x.png -------------------------------------------------------------------------------- /lunasea/web/splash/img/dark-4x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/web/splash/img/dark-4x.png -------------------------------------------------------------------------------- /lunasea/web/splash/img/light-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/web/splash/img/light-1x.png -------------------------------------------------------------------------------- /lunasea/web/splash/img/light-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/web/splash/img/light-2x.png -------------------------------------------------------------------------------- /lunasea/web/splash/img/light-3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/web/splash/img/light-3x.png -------------------------------------------------------------------------------- /lunasea/web/splash/img/light-4x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/web/splash/img/light-4x.png -------------------------------------------------------------------------------- /lunasea/web/splash/splash.js: -------------------------------------------------------------------------------- 1 | function removeSplashFromWeb() { 2 | const elem = document.getElementById("splash"); 3 | if (elem) { 4 | elem.remove(); 5 | } 6 | document.body.style.background = "transparent"; 7 | } 8 | -------------------------------------------------------------------------------- /lunasea/windows/.gitignore: -------------------------------------------------------------------------------- 1 | flutter/ephemeral/ 2 | 3 | # Visual Studio user-specific files. 4 | *.suo 5 | *.user 6 | *.userosscache 7 | *.sln.docstates 8 | 9 | # Visual Studio build-related files. 10 | x64/ 11 | x86/ 12 | 13 | # Visual Studio cache files 14 | # files ending in .cache can be ignored 15 | *.[Cc]ache 16 | # but keep track of directories ending in .cache 17 | !*.[Cc]ache/ 18 | -------------------------------------------------------------------------------- /lunasea/windows/flutter/generated_plugin_registrant.h: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #ifndef GENERATED_PLUGIN_REGISTRANT_ 8 | #define GENERATED_PLUGIN_REGISTRANT_ 9 | 10 | #include 11 | 12 | // Registers Flutter plugins. 13 | void RegisterPlugins(flutter::PluginRegistry* registry); 14 | 15 | #endif // GENERATED_PLUGIN_REGISTRANT_ 16 | -------------------------------------------------------------------------------- /lunasea/windows/runner/resources/app_icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jagandeepbrar/lunasea/6ee0bf9a6f4ffc735b0c0000d62c795c822023ff/lunasea/windows/runner/resources/app_icon.ico --------------------------------------------------------------------------------