From c77d89bcc723ff9e41e0cdf8a43bc05e3fc4ba59 Mon Sep 17 00:00:00 2001 From: Tien Do Nam Date: Wed, 27 Sep 2023 21:51:49 +0200 Subject: [PATCH] feat: split project into app, common, cli --- .fvm/fvm_config.json | 2 +- .github/workflows/ci.yml | 8 +- .github/workflows/linux_build.yml | 17 +- .gitignore | 51 +-- .metadata | 45 --- CHANGELOG.md | 2 +- CONTRIBUTING.md | 4 +- README.md | 4 +- app/.gitignore | 45 +++ .../AppImageBuilder.yml | 0 .../analysis_options.yaml | 0 {android => app/android}/.gitignore | 0 {android => app/android}/app/build.gradle | 0 .../app/src/debug/AndroidManifest.xml | 0 .../android}/app/src/main/AndroidManifest.xml | 0 .../app/src/main/ic_launcher-playstore.png | Bin .../localsend/localsend_app/MainActivity.kt | 0 .../res/drawable-v21/launch_background.xml | 0 .../app/src/main/res/drawable/banner.png | Bin .../res/drawable/ic_launcher_foreground.xml | 0 .../main/res/drawable/launch_background.xml | 0 .../res/mipmap-anydpi-v26/ic_launcher.xml | 0 .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin .../mipmap-hdpi/ic_launcher_foreground.png | Bin .../mipmap-hdpi/ic_launcher_monochrome.png | Bin .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin .../mipmap-mdpi/ic_launcher_foreground.png | Bin .../mipmap-mdpi/ic_launcher_monochrome.png | Bin .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin .../mipmap-xhdpi/ic_launcher_foreground.png | Bin .../mipmap-xhdpi/ic_launcher_monochrome.png | Bin .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin .../mipmap-xxhdpi/ic_launcher_foreground.png | Bin .../mipmap-xxhdpi/ic_launcher_monochrome.png | Bin .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin .../mipmap-xxxhdpi/ic_launcher_monochrome.png | Bin .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin .../app/src/main/res/values-night/styles.xml | 0 .../res/values/ic_launcher_background.xml | 0 .../app/src/main/res/values/styles.xml | 0 .../app/src/profile/AndroidManifest.xml | 0 {android => app/android}/build.gradle | 0 {android => app/android}/gradle.properties | 0 .../gradle/wrapper/gradle-wrapper.properties | 0 {android => app/android}/settings.gradle | 0 {assets => app/assets}/CHANGELOG.md | 0 .../i18n/_missing_translations_ar.json | 0 .../i18n/_missing_translations_bn.json | 0 .../i18n/_missing_translations_ca.json | 0 .../i18n/_missing_translations_cs.json | 0 .../i18n/_missing_translations_de.json | 0 .../i18n/_missing_translations_es_ES.json | 0 .../i18n/_missing_translations_fa.json | 0 .../i18n/_missing_translations_fr_FR.json | 0 .../i18n/_missing_translations_hu.json | 0 .../i18n/_missing_translations_in.json | 0 .../i18n/_missing_translations_it.json | 0 .../i18n/_missing_translations_iw.json | 0 .../i18n/_missing_translations_ja.json | 0 .../i18n/_missing_translations_km.json | 0 .../i18n/_missing_translations_ko.json | 0 .../i18n/_missing_translations_ne.json | 0 .../i18n/_missing_translations_nl.json | 0 .../i18n/_missing_translations_pl.json | 0 .../i18n/_missing_translations_pt_BR.json | 0 .../i18n/_missing_translations_ru.json | 0 .../i18n/_missing_translations_sv.json | 0 .../i18n/_missing_translations_tr.json | 0 .../i18n/_missing_translations_uk.json | 0 .../i18n/_missing_translations_ur.json | 0 .../i18n/_missing_translations_zh_CN.json | 0 .../i18n/_missing_translations_zh_HK.json | 0 .../i18n/_missing_translations_zh_TW.json | 0 .../assets}/i18n/_unused_translations.json | 0 {assets => app/assets}/i18n/strings.i18n.json | 0 .../assets}/i18n/strings_ar.i18n.json | 0 .../assets}/i18n/strings_bn.i18n.json | 0 .../assets}/i18n/strings_ca.i18n.json | 0 .../assets}/i18n/strings_cs.i18n.json | 0 .../assets}/i18n/strings_de.i18n.json | 0 .../assets}/i18n/strings_es-ES.i18n.json | 0 .../assets}/i18n/strings_fa.i18n.json | 0 .../assets}/i18n/strings_fr-FR.i18n.json | 0 .../assets}/i18n/strings_hu.i18n.json | 0 .../assets}/i18n/strings_in.i18n.json | 0 .../assets}/i18n/strings_it.i18n.json | 0 .../assets}/i18n/strings_iw.i18n.json | 0 .../assets}/i18n/strings_ja.i18n.json | 0 .../assets}/i18n/strings_km.i18n.json | 0 .../assets}/i18n/strings_ko.i18n.json | 0 .../assets}/i18n/strings_ne.i18n.json | 0 .../assets}/i18n/strings_nl.i18n.json | 0 .../assets}/i18n/strings_pl.i18n.json | 0 .../assets}/i18n/strings_pt-BR.i18n.json | 0 .../assets}/i18n/strings_ru.i18n.json | 0 .../assets}/i18n/strings_sv.i18n.json | 0 .../assets}/i18n/strings_tr.i18n.json | 0 .../assets}/i18n/strings_uk.i18n.json | 0 .../assets}/i18n/strings_ur.i18n.json | 0 .../assets}/i18n/strings_zh-CN.i18n.json | 0 .../assets}/i18n/strings_zh-HK.i18n.json | 0 .../assets}/i18n/strings_zh-TW.i18n.json | 0 {assets => app/assets}/img/logo-128.png | Bin {assets => app/assets}/img/logo-256.png | Bin {assets => app/assets}/img/logo-32-black.png | Bin {assets => app/assets}/img/logo-32-white.png | Bin {assets => app/assets}/img/logo-32.ico | Bin {assets => app/assets}/img/logo-32.png | Bin {assets => app/assets}/img/logo-512.png | Bin {assets => app/assets}/web/error-403.html | 0 {assets => app/assets}/web/index.html | 0 {assets => app/assets}/web/main.js | 0 build.yaml => app/build.yaml | 0 .../android/en-US/full_description.txt | 0 .../metadata/android/en-US/images/icon.png | Bin .../en-US/images/phoneScreenshots/1.jpg | Bin .../en-US/images/phoneScreenshots/2.jpg | Bin .../en-US/images/phoneScreenshots/3.jpg | Bin .../en-US/images/phoneScreenshots/4.jpg | Bin .../android/en-US/short_description.txt | 0 {ios => app/ios}/.gitignore | 0 .../ios}/Flutter/AppFrameworkInfo.plist | 0 {ios => app/ios}/Flutter/Debug.xcconfig | 0 {ios => app/ios}/Flutter/Release.xcconfig | 0 {ios => app/ios}/Podfile | 0 {ios => app/ios}/Podfile.lock | 0 .../ios}/Runner.xcodeproj/project.pbxproj | 0 .../contents.xcworkspacedata | 0 .../xcshareddata/IDEWorkspaceChecks.plist | 0 .../xcshareddata/WorkspaceSettings.xcsettings | 0 .../xcshareddata/xcschemes/Runner.xcscheme | 0 .../contents.xcworkspacedata | 0 .../xcshareddata/IDEWorkspaceChecks.plist | 0 .../xcshareddata/WorkspaceSettings.xcsettings | 0 {ios => app/ios}/Runner/AppDelegate.swift | 0 .../AppIcon.appiconset/Contents.json | 0 .../AppIcon.appiconset/Icon-App-1024.png | Bin .../AppIcon.appiconset/Icon-App-20.png | Bin .../AppIcon.appiconset/Icon-App-20@2x.png | Bin .../AppIcon.appiconset/Icon-App-20@3x.png | Bin .../AppIcon.appiconset/Icon-App-29.png | Bin .../AppIcon.appiconset/Icon-App-29@2x.png | Bin .../AppIcon.appiconset/Icon-App-29@3x.png | Bin .../AppIcon.appiconset/Icon-App-40.png | Bin .../AppIcon.appiconset/Icon-App-40@2x.png | Bin .../AppIcon.appiconset/Icon-App-40@3x.png | Bin .../AppIcon.appiconset/Icon-App-60@2x.png | Bin .../AppIcon.appiconset/Icon-App-60@3x.png | Bin .../AppIcon.appiconset/Icon-App-76.png | Bin .../AppIcon.appiconset/Icon-App-76@2x.png | Bin .../AppIcon.appiconset/Icon-App-83.5@2x.png | Bin .../LaunchImage.imageset/Contents.json | 0 .../LaunchImage.imageset/LaunchImage.png | Bin .../LaunchImage.imageset/LaunchImage@2x.png | Bin .../LaunchImage.imageset/LaunchImage@3x.png | Bin .../LaunchImage.imageset/README.md | 0 .../Runner/Base.lproj/LaunchScreen.storyboard | 0 .../ios}/Runner/Base.lproj/Main.storyboard | 0 {ios => app/ios}/Runner/Info.plist | 0 .../Runner/LocalNetworkAuthorization.swift | 0 .../ios}/Runner/Runner-Bridging-Header.h | 0 {ios => app/ios}/Runner/Runner.entitlements | 0 .../Base.lproj/MainInterface.storyboard | 0 {ios => app/ios}/ShareExtension/Info.plist | 0 .../ShareExtension.entitlements | 0 .../ShareExtension/ShareViewController.swift | 0 {lib => app/lib}/constants.dart | 0 {lib => app/lib}/init.dart | 0 {lib => app/lib}/main.dart | 0 {lib => app/lib}/model/cross_file.dart | 0 {lib => app/lib}/model/device.dart | 0 {lib => app/lib}/model/dto/file_dto.dart | 0 {lib => app/lib}/model/dto/info_dto.dart | 0 .../lib}/model/dto/info_register_dto.dart | 0 {lib => app/lib}/model/dto/multicast_dto.dart | 0 .../model/dto/prepare_upload_request_dto.dart | 0 .../dto/prepare_upload_response_dto.dart | 0 .../dto/receive_request_response_dto.dart | 0 {lib => app/lib}/model/dto/register_dto.dart | 0 {lib => app/lib}/model/file_status.dart | 0 {lib => app/lib}/model/file_type.dart | 0 {lib => app/lib}/model/log_entry.dart | 0 .../lib}/model/persistence/color_mode.dart | 0 .../persistence/stored_security_context.dart | 0 .../lib}/model/receive_history_entry.dart | 0 {lib => app/lib}/model/send_mode.dart | 0 {lib => app/lib}/model/session_status.dart | 0 .../model/state/nearby_devices_state.dart | 0 .../lib}/model/state/network_state.dart | 0 .../model/state/send/send_session_state.dart | 0 .../lib}/model/state/send/sending_file.dart | 0 .../model/state/send/web/web_send_file.dart | 0 .../state/send/web/web_send_session.dart | 0 .../model/state/send/web/web_send_state.dart | 0 .../state/server/receive_session_state.dart | 0 .../model/state/server/receiving_file.dart | 0 .../lib}/model/state/server/server_state.dart | 0 .../lib}/model/state/settings_state.dart | 0 {lib => app/lib}/pages/about_page.dart | 0 {lib => app/lib}/pages/apk_picker_page.dart | 0 {lib => app/lib}/pages/changelog_page.dart | 0 {lib => app/lib}/pages/debug/debug_page.dart | 0 .../pages/debug/discovery_debug_page.dart | 0 .../lib}/pages/debug/http_logs_page.dart | 0 .../lib}/pages/debug/security_debug_page.dart | 0 {lib => app/lib}/pages/home_page.dart | 0 {lib => app/lib}/pages/language_page.dart | 0 {lib => app/lib}/pages/progress_page.dart | 0 .../lib}/pages/receive_history_page.dart | 0 .../lib}/pages/receive_options_page.dart | 0 {lib => app/lib}/pages/receive_page.dart | 0 .../lib}/pages/selected_files_page.dart | 0 {lib => app/lib}/pages/send_page.dart | 0 {lib => app/lib}/pages/tabs/receive_tab.dart | 0 {lib => app/lib}/pages/tabs/send_tab.dart | 0 {lib => app/lib}/pages/tabs/settings_tab.dart | 0 {lib => app/lib}/pages/troubleshoot_page.dart | 0 {lib => app/lib}/pages/web_send_page.dart | 0 .../lib}/provider/animation_provider.dart | 0 {lib => app/lib}/provider/apk_provider.dart | 0 .../lib}/provider/app_arguments_provider.dart | 0 .../lib}/provider/device_info_provider.dart | 0 {lib => app/lib}/provider/dio_provider.dart | 0 .../lib}/provider/last_devices.provider.dart | 0 .../logging/discovery_logs_provider.dart | 0 .../provider/logging/http_logs_provider.dart | 0 .../provider/network/multicast_provider.dart | 0 .../network/nearby_devices_provider.dart | 0 .../lib}/provider/network/scan_provider.dart | 0 .../lib}/provider/network/send_provider.dart | 0 .../server/controller/receive_controller.dart | 0 .../server/controller/send_controller.dart | 0 .../network/server/server_provider.dart | 0 .../provider/network/server/server_utils.dart | 0 .../network/targeted_discovery_provider.dart | 0 .../lib}/provider/network_info_provider.dart | 0 .../provider/param/apk_provider_param.dart | 0 .../param/cached_apk_provider_param.dart | 0 .../lib}/provider/persistence_provider.dart | 0 .../lib}/provider/progress_provider.dart | 0 .../provider/receive_history_provider.dart | 0 .../lib}/provider/security_provider.dart | 0 .../selected_receiving_files_provider.dart | 0 .../selected_sending_files_provider.dart | 0 .../lib}/provider/settings_provider.dart | 0 {lib => app/lib}/provider/tv_provider.dart | 0 .../lib}/provider/ui/home_tab_provider.dart | 0 .../lib}/provider/version_provider.dart | 0 .../provider/window_dimensions_provider.dart | 0 {lib => app/lib}/riverpie.dart | 0 {lib => app/lib}/theme.dart | 0 {lib => app/lib}/util/alias_generator.dart | 0 {lib => app/lib}/util/api_route_builder.dart | 0 {lib => app/lib}/util/file_path_helper.dart | 0 {lib => app/lib}/util/file_size_helper.dart | 0 {lib => app/lib}/util/file_speed_helper.dart | 0 {lib => app/lib}/util/ip_helper.dart | 0 .../lib}/util/native/autostart_helper.dart | 0 .../lib}/util/native/cache_helper.dart | 0 {lib => app/lib}/util/native/cmd_helper.dart | 0 .../lib}/util/native/device_info_helper.dart | 0 {lib => app/lib}/util/native/file_picker.dart | 0 {lib => app/lib}/util/native/file_saver.dart | 0 .../native/get_destination_directory.dart | 0 .../native/ios_network_permission_helper.dart | 0 {lib => app/lib}/util/native/open_file.dart | 0 {lib => app/lib}/util/native/open_folder.dart | 0 .../lib}/util/native/pick_directory_path.dart | 0 .../lib}/util/native/platform_check.dart | 0 {lib => app/lib}/util/native/tray_helper.dart | 0 {lib => app/lib}/util/platform_strings.dart | 0 {lib => app/lib}/util/security_helper.dart | 0 {lib => app/lib}/util/sleep.dart | 0 {lib => app/lib}/util/task_runner.dart | 0 ...asset_picker_translated_text_delegate.dart | 0 {lib => app/lib}/util/ui/dynamic_colors.dart | 0 {lib => app/lib}/util/ui/nav_bar_padding.dart | 0 {lib => app/lib}/util/ui/snackbar.dart | 0 .../lib}/util/user_agent_analyzer.dart | 0 .../widget/animated_opacity_cross_fade.dart | 0 .../animations/initial_fade_transition.dart | 0 .../animations/initial_slide_transition.dart | 0 {lib => app/lib}/widget/big_button.dart | 0 {lib => app/lib}/widget/copyable_text.dart | 0 .../lib}/widget/custom_dropdown_button.dart | 0 .../lib}/widget/custom_icon_button.dart | 0 .../lib}/widget/custom_progress_bar.dart | 0 {lib => app/lib}/widget/debug_entry.dart | 0 {lib => app/lib}/widget/device_bage.dart | 0 .../lib}/widget/dialogs/add_file_dialog.dart | 0 .../widget/dialogs/address_input_dialog.dart | 0 .../widget/dialogs/cancel_session_dialog.dart | 0 .../dialogs/cannot_open_file_dialog.dart | 0 .../widget/dialogs/custom_bottom_sheet.dart | 0 .../dialogs/encryption_disabled_notice.dart | 0 .../lib}/widget/dialogs/error_dialog.dart | 0 .../lib}/widget/dialogs/file_info_dialog.dart | 0 .../dialogs/file_name_input_dialog.dart | 0 .../ios_network_permission_dialog.dart | 0 .../lib}/widget/dialogs/loading_dialog.dart | 0 .../widget/dialogs/message_input_dialog.dart | 0 .../lib}/widget/dialogs/no_files_dialog.dart | 0 .../widget/dialogs/no_permission_dialog.dart | 0 .../not_available_on_platform_dialog.dart | 0 .../lib}/widget/dialogs/qr_dialog.dart | 0 .../widget/dialogs/quick_actions_dialog.dart | 0 .../widget/dialogs/quick_save_notice.dart | 0 .../widget/dialogs/send_mode_help_dialog.dart | 0 .../lib}/widget/dialogs/text_field_tv.dart | 0 {lib => app/lib}/widget/file_thumbnail.dart | 0 {lib => app/lib}/widget/labeled_checkbox.dart | 0 .../widget/list_tile/custom_list_tile.dart | 0 .../widget/list_tile/device_list_tile.dart | 0 .../device_placeholder_list_tile.dart | 0 {lib => app/lib}/widget/local_send_logo.dart | 0 .../lib}/widget/opacity_slideshow.dart | 0 .../lib}/widget/responsive_builder.dart | 0 .../lib}/widget/responsive_list_view.dart | 0 {lib => app/lib}/widget/rotating_widget.dart | 0 .../widget/sliver/sliver_pinned_header.dart | 0 .../widget/watcher/life_cycle_watcher.dart | 0 .../lib}/widget/watcher/shortcut_watcher.dart | 0 .../lib}/widget/watcher/tray_watcher.dart | 0 .../lib}/widget/watcher/window_watcher.dart | 0 {linux => app/linux}/.gitignore | 0 {linux => app/linux}/CMakeLists.txt | 0 {linux => app/linux}/flutter/CMakeLists.txt | 0 .../flutter/generated_plugin_registrant.cc | 0 .../flutter/generated_plugin_registrant.h | 0 .../linux}/flutter/generated_plugins.cmake | 0 {linux => app/linux}/main.cc | 0 {linux => app/linux}/my_application.cc | 0 {linux => app/linux}/my_application.h | 0 .../linux}/packaging/deb/make_config.yaml | 0 {macos => app/macos}/.gitignore | 0 .../macos}/Flutter/Flutter-Debug.xcconfig | 0 .../macos}/Flutter/Flutter-Release.xcconfig | 0 .../Flutter/GeneratedPluginRegistrant.swift | 0 {macos => app/macos}/Podfile | 0 {macos => app/macos}/Podfile.lock | 0 .../macos}/Runner.xcodeproj/project.pbxproj | 0 .../xcshareddata/IDEWorkspaceChecks.plist | 0 .../xcshareddata/xcschemes/Runner.xcscheme | 0 .../contents.xcworkspacedata | 0 .../xcshareddata/IDEWorkspaceChecks.plist | 0 {macos => app/macos}/Runner/AppDelegate.swift | 0 .../AppIcon.appiconset/Contents.json | 0 .../AppIcon.appiconset/logo-1024-mac-1024.png | Bin .../AppIcon.appiconset/logo-1024-mac-128.png | Bin .../AppIcon.appiconset/logo-1024-mac-16.png | Bin .../AppIcon.appiconset/logo-1024-mac-256.png | Bin .../AppIcon.appiconset/logo-1024-mac-32.png | Bin .../AppIcon.appiconset/logo-1024-mac-512.png | Bin .../AppIcon.appiconset/logo-1024-mac-64.png | Bin .../macos}/Runner/Base.lproj/MainMenu.xib | 0 .../macos}/Runner/Configs/AppInfo.xcconfig | 0 .../macos}/Runner/Configs/Debug.xcconfig | 0 .../macos}/Runner/Configs/Release.xcconfig | 0 .../macos}/Runner/Configs/Warnings.xcconfig | 0 .../macos}/Runner/DebugProfile.entitlements | 0 {macos => app/macos}/Runner/Info.plist | 0 .../macos}/Runner/MainFlutterWindow.swift | 0 .../macos}/Runner/Release.entitlements | 0 pubspec.lock => app/pubspec.lock | 0 pubspec.yaml => app/pubspec.yaml | 0 {test => app/test}/unit/i18n_test.dart | 0 .../dto/prepare_upload_request_dto_test.dart | 0 .../provider/network_info_provider_test.dart | 0 .../unit/util/api_route_builder_test.dart | 0 .../test}/unit/util/security_helper_test.dart | 0 .../test}/unit/util/task_runner_test.dart | 0 {web => app/web}/favicon.png | Bin {web => app/web}/icons/Icon-192.png | Bin {web => app/web}/icons/Icon-512.png | Bin {web => app/web}/icons/Icon-maskable-192.png | Bin {web => app/web}/icons/Icon-maskable-512.png | Bin {web => app/web}/index.html | 0 {web => app/web}/manifest.json | 0 {windows => app/windows}/.gitignore | 0 {windows => app/windows}/CMakeLists.txt | 0 .../windows}/flutter/CMakeLists.txt | 0 .../flutter/generated_plugin_registrant.cc | 0 .../flutter/generated_plugin_registrant.h | 0 .../windows}/flutter/generated_plugins.cmake | 0 .../windows}/runner/CMakeLists.txt | 0 {windows => app/windows}/runner/Runner.rc | 0 .../windows}/runner/flutter_window.cpp | 0 .../windows}/runner/flutter_window.h | 0 {windows => app/windows}/runner/main.cpp | 0 {windows => app/windows}/runner/resource.h | 0 .../windows}/runner/resources/app_icon.ico | Bin .../windows}/runner/runner.exe.manifest | 0 {windows => app/windows}/runner/utils.cpp | 0 {windows => app/windows}/runner/utils.h | 0 .../windows}/runner/win32_window.cpp | 0 .../windows}/runner/win32_window.h | 0 cli/.gitignore | 3 + cli/README.md | 3 + cli/analysis_options.yaml | 10 + cli/bin/cli.dart | 5 + cli/lib/main.dart | 3 + cli/pubspec.lock | 380 ++++++++++++++++++ cli/pubspec.yaml | 15 + common/.gitignore | 7 + common/README.md | 3 + common/analysis_options.yaml | 10 + common/lib/common.dart | 1 + common/lib/src/common_base.dart | 6 + common/pubspec.yaml | 15 + 410 files changed, 534 insertions(+), 105 deletions(-) delete mode 100644 .metadata create mode 100644 app/.gitignore rename AppImageBuilder.yml => app/AppImageBuilder.yml (100%) rename analysis_options.yaml => app/analysis_options.yaml (100%) rename {android => app/android}/.gitignore (100%) rename {android => app/android}/app/build.gradle (100%) rename {android => app/android}/app/src/debug/AndroidManifest.xml (100%) rename {android => app/android}/app/src/main/AndroidManifest.xml (100%) rename {android => app/android}/app/src/main/ic_launcher-playstore.png (100%) rename {android => app/android}/app/src/main/kotlin/org/localsend/localsend_app/MainActivity.kt (100%) rename {android => app/android}/app/src/main/res/drawable-v21/launch_background.xml (100%) rename {android => app/android}/app/src/main/res/drawable/banner.png (100%) rename {android => app/android}/app/src/main/res/drawable/ic_launcher_foreground.xml (100%) rename {android => app/android}/app/src/main/res/drawable/launch_background.xml (100%) rename {android => app/android}/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml (100%) rename {android => app/android}/app/src/main/res/mipmap-hdpi/ic_launcher.png (100%) rename {android => app/android}/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png (100%) rename {android => app/android}/app/src/main/res/mipmap-hdpi/ic_launcher_monochrome.png (100%) rename {android => app/android}/app/src/main/res/mipmap-mdpi/ic_launcher.png (100%) rename {android => app/android}/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png (100%) rename {android => app/android}/app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.png (100%) rename {android => app/android}/app/src/main/res/mipmap-xhdpi/ic_launcher.png (100%) rename {android => app/android}/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png (100%) rename {android => app/android}/app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.png (100%) rename {android => app/android}/app/src/main/res/mipmap-xxhdpi/ic_launcher.png (100%) rename {android => app/android}/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png (100%) rename {android => app/android}/app/src/main/res/mipmap-xxhdpi/ic_launcher_monochrome.png (100%) rename {android => app/android}/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png (100%) rename {android => app/android}/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png (100%) rename {android => app/android}/app/src/main/res/mipmap-xxxhdpi/ic_launcher_monochrome.png (100%) rename {android => app/android}/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png (100%) rename {android => app/android}/app/src/main/res/values-night/styles.xml (100%) rename {android => app/android}/app/src/main/res/values/ic_launcher_background.xml (100%) rename {android => app/android}/app/src/main/res/values/styles.xml (100%) rename {android => app/android}/app/src/profile/AndroidManifest.xml (100%) rename {android => app/android}/build.gradle (100%) rename {android => app/android}/gradle.properties (100%) rename {android => app/android}/gradle/wrapper/gradle-wrapper.properties (100%) rename {android => app/android}/settings.gradle (100%) rename {assets => app/assets}/CHANGELOG.md (100%) rename {assets => app/assets}/i18n/_missing_translations_ar.json (100%) rename {assets => app/assets}/i18n/_missing_translations_bn.json (100%) rename {assets => app/assets}/i18n/_missing_translations_ca.json (100%) rename {assets => app/assets}/i18n/_missing_translations_cs.json (100%) rename {assets => app/assets}/i18n/_missing_translations_de.json (100%) rename {assets => app/assets}/i18n/_missing_translations_es_ES.json (100%) rename {assets => app/assets}/i18n/_missing_translations_fa.json (100%) rename {assets => app/assets}/i18n/_missing_translations_fr_FR.json (100%) rename {assets => app/assets}/i18n/_missing_translations_hu.json (100%) rename {assets => app/assets}/i18n/_missing_translations_in.json (100%) rename {assets => app/assets}/i18n/_missing_translations_it.json (100%) rename {assets => app/assets}/i18n/_missing_translations_iw.json (100%) rename {assets => app/assets}/i18n/_missing_translations_ja.json (100%) rename {assets => app/assets}/i18n/_missing_translations_km.json (100%) rename {assets => app/assets}/i18n/_missing_translations_ko.json (100%) rename {assets => app/assets}/i18n/_missing_translations_ne.json (100%) rename {assets => app/assets}/i18n/_missing_translations_nl.json (100%) rename {assets => app/assets}/i18n/_missing_translations_pl.json (100%) rename {assets => app/assets}/i18n/_missing_translations_pt_BR.json (100%) rename {assets => app/assets}/i18n/_missing_translations_ru.json (100%) rename {assets => app/assets}/i18n/_missing_translations_sv.json (100%) rename {assets => app/assets}/i18n/_missing_translations_tr.json (100%) rename {assets => app/assets}/i18n/_missing_translations_uk.json (100%) rename {assets => app/assets}/i18n/_missing_translations_ur.json (100%) rename {assets => app/assets}/i18n/_missing_translations_zh_CN.json (100%) rename {assets => app/assets}/i18n/_missing_translations_zh_HK.json (100%) rename {assets => app/assets}/i18n/_missing_translations_zh_TW.json (100%) rename {assets => app/assets}/i18n/_unused_translations.json (100%) rename {assets => app/assets}/i18n/strings.i18n.json (100%) rename {assets => app/assets}/i18n/strings_ar.i18n.json (100%) rename {assets => app/assets}/i18n/strings_bn.i18n.json (100%) rename {assets => app/assets}/i18n/strings_ca.i18n.json (100%) rename {assets => app/assets}/i18n/strings_cs.i18n.json (100%) rename {assets => app/assets}/i18n/strings_de.i18n.json (100%) rename {assets => app/assets}/i18n/strings_es-ES.i18n.json (100%) rename {assets => app/assets}/i18n/strings_fa.i18n.json (100%) rename {assets => app/assets}/i18n/strings_fr-FR.i18n.json (100%) rename {assets => app/assets}/i18n/strings_hu.i18n.json (100%) rename {assets => app/assets}/i18n/strings_in.i18n.json (100%) rename {assets => app/assets}/i18n/strings_it.i18n.json (100%) rename {assets => app/assets}/i18n/strings_iw.i18n.json (100%) rename {assets => app/assets}/i18n/strings_ja.i18n.json (100%) rename {assets => app/assets}/i18n/strings_km.i18n.json (100%) rename {assets => app/assets}/i18n/strings_ko.i18n.json (100%) rename {assets => app/assets}/i18n/strings_ne.i18n.json (100%) rename {assets => app/assets}/i18n/strings_nl.i18n.json (100%) rename {assets => app/assets}/i18n/strings_pl.i18n.json (100%) rename {assets => app/assets}/i18n/strings_pt-BR.i18n.json (100%) rename {assets => app/assets}/i18n/strings_ru.i18n.json (100%) rename {assets => app/assets}/i18n/strings_sv.i18n.json (100%) rename {assets => app/assets}/i18n/strings_tr.i18n.json (100%) rename {assets => app/assets}/i18n/strings_uk.i18n.json (100%) rename {assets => app/assets}/i18n/strings_ur.i18n.json (100%) rename {assets => app/assets}/i18n/strings_zh-CN.i18n.json (100%) rename {assets => app/assets}/i18n/strings_zh-HK.i18n.json (100%) rename {assets => app/assets}/i18n/strings_zh-TW.i18n.json (100%) rename {assets => app/assets}/img/logo-128.png (100%) rename {assets => app/assets}/img/logo-256.png (100%) rename {assets => app/assets}/img/logo-32-black.png (100%) rename {assets => app/assets}/img/logo-32-white.png (100%) rename {assets => app/assets}/img/logo-32.ico (100%) rename {assets => app/assets}/img/logo-32.png (100%) rename {assets => app/assets}/img/logo-512.png (100%) rename {assets => app/assets}/web/error-403.html (100%) rename {assets => app/assets}/web/index.html (100%) rename {assets => app/assets}/web/main.js (100%) rename build.yaml => app/build.yaml (100%) rename {fastlane => app/fastlane}/metadata/android/en-US/full_description.txt (100%) rename {fastlane => app/fastlane}/metadata/android/en-US/images/icon.png (100%) rename {fastlane => app/fastlane}/metadata/android/en-US/images/phoneScreenshots/1.jpg (100%) rename {fastlane => app/fastlane}/metadata/android/en-US/images/phoneScreenshots/2.jpg (100%) rename {fastlane => app/fastlane}/metadata/android/en-US/images/phoneScreenshots/3.jpg (100%) rename {fastlane => app/fastlane}/metadata/android/en-US/images/phoneScreenshots/4.jpg (100%) rename {fastlane => app/fastlane}/metadata/android/en-US/short_description.txt (100%) rename {ios => app/ios}/.gitignore (100%) rename {ios => app/ios}/Flutter/AppFrameworkInfo.plist (100%) rename {ios => app/ios}/Flutter/Debug.xcconfig (100%) rename {ios => app/ios}/Flutter/Release.xcconfig (100%) rename {ios => app/ios}/Podfile (100%) rename {ios => app/ios}/Podfile.lock (100%) rename {ios => app/ios}/Runner.xcodeproj/project.pbxproj (100%) rename {ios => app/ios}/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata (100%) rename {ios => app/ios}/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (100%) rename {ios => app/ios}/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings (100%) rename {ios => app/ios}/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme (100%) rename {ios => app/ios}/Runner.xcworkspace/contents.xcworkspacedata (100%) rename {ios => app/ios}/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (100%) rename {ios => app/ios}/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings (100%) rename {ios => app/ios}/Runner/AppDelegate.swift (100%) rename {ios => app/ios}/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename {ios => app/ios}/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024.png (100%) rename {ios => app/ios}/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20.png (100%) rename {ios => app/ios}/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20@2x.png (100%) rename {ios => app/ios}/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20@3x.png (100%) rename {ios => app/ios}/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29.png (100%) rename {ios => app/ios}/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29@2x.png (100%) rename {ios => app/ios}/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29@3x.png (100%) rename {ios => app/ios}/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40.png (100%) rename {ios => app/ios}/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40@2x.png (100%) rename {ios => app/ios}/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40@3x.png (100%) rename {ios => app/ios}/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60@2x.png (100%) rename {ios => app/ios}/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60@3x.png (100%) rename {ios => app/ios}/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76.png (100%) rename {ios => app/ios}/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76@2x.png (100%) rename {ios => app/ios}/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5@2x.png (100%) rename {ios => app/ios}/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json (100%) rename {ios => app/ios}/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png (100%) rename {ios => app/ios}/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png (100%) rename {ios => app/ios}/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png (100%) rename {ios => app/ios}/Runner/Assets.xcassets/LaunchImage.imageset/README.md (100%) rename {ios => app/ios}/Runner/Base.lproj/LaunchScreen.storyboard (100%) rename {ios => app/ios}/Runner/Base.lproj/Main.storyboard (100%) rename {ios => app/ios}/Runner/Info.plist (100%) rename {ios => app/ios}/Runner/LocalNetworkAuthorization.swift (100%) rename {ios => app/ios}/Runner/Runner-Bridging-Header.h (100%) rename {ios => app/ios}/Runner/Runner.entitlements (100%) rename {ios => app/ios}/ShareExtension/Base.lproj/MainInterface.storyboard (100%) rename {ios => app/ios}/ShareExtension/Info.plist (100%) rename {ios => app/ios}/ShareExtension/ShareExtension.entitlements (100%) rename {ios => app/ios}/ShareExtension/ShareViewController.swift (100%) rename {lib => app/lib}/constants.dart (100%) rename {lib => app/lib}/init.dart (100%) rename {lib => app/lib}/main.dart (100%) rename {lib => app/lib}/model/cross_file.dart (100%) rename {lib => app/lib}/model/device.dart (100%) rename {lib => app/lib}/model/dto/file_dto.dart (100%) rename {lib => app/lib}/model/dto/info_dto.dart (100%) rename {lib => app/lib}/model/dto/info_register_dto.dart (100%) rename {lib => app/lib}/model/dto/multicast_dto.dart (100%) rename {lib => app/lib}/model/dto/prepare_upload_request_dto.dart (100%) rename {lib => app/lib}/model/dto/prepare_upload_response_dto.dart (100%) rename {lib => app/lib}/model/dto/receive_request_response_dto.dart (100%) rename {lib => app/lib}/model/dto/register_dto.dart (100%) rename {lib => app/lib}/model/file_status.dart (100%) rename {lib => app/lib}/model/file_type.dart (100%) rename {lib => app/lib}/model/log_entry.dart (100%) rename {lib => app/lib}/model/persistence/color_mode.dart (100%) rename {lib => app/lib}/model/persistence/stored_security_context.dart (100%) rename {lib => app/lib}/model/receive_history_entry.dart (100%) rename {lib => app/lib}/model/send_mode.dart (100%) rename {lib => app/lib}/model/session_status.dart (100%) rename {lib => app/lib}/model/state/nearby_devices_state.dart (100%) rename {lib => app/lib}/model/state/network_state.dart (100%) rename {lib => app/lib}/model/state/send/send_session_state.dart (100%) rename {lib => app/lib}/model/state/send/sending_file.dart (100%) rename {lib => app/lib}/model/state/send/web/web_send_file.dart (100%) rename {lib => app/lib}/model/state/send/web/web_send_session.dart (100%) rename {lib => app/lib}/model/state/send/web/web_send_state.dart (100%) rename {lib => app/lib}/model/state/server/receive_session_state.dart (100%) rename {lib => app/lib}/model/state/server/receiving_file.dart (100%) rename {lib => app/lib}/model/state/server/server_state.dart (100%) rename {lib => app/lib}/model/state/settings_state.dart (100%) rename {lib => app/lib}/pages/about_page.dart (100%) rename {lib => app/lib}/pages/apk_picker_page.dart (100%) rename {lib => app/lib}/pages/changelog_page.dart (100%) rename {lib => app/lib}/pages/debug/debug_page.dart (100%) rename {lib => app/lib}/pages/debug/discovery_debug_page.dart (100%) rename {lib => app/lib}/pages/debug/http_logs_page.dart (100%) rename {lib => app/lib}/pages/debug/security_debug_page.dart (100%) rename {lib => app/lib}/pages/home_page.dart (100%) rename {lib => app/lib}/pages/language_page.dart (100%) rename {lib => app/lib}/pages/progress_page.dart (100%) rename {lib => app/lib}/pages/receive_history_page.dart (100%) rename {lib => app/lib}/pages/receive_options_page.dart (100%) rename {lib => app/lib}/pages/receive_page.dart (100%) rename {lib => app/lib}/pages/selected_files_page.dart (100%) rename {lib => app/lib}/pages/send_page.dart (100%) rename {lib => app/lib}/pages/tabs/receive_tab.dart (100%) rename {lib => app/lib}/pages/tabs/send_tab.dart (100%) rename {lib => app/lib}/pages/tabs/settings_tab.dart (100%) rename {lib => app/lib}/pages/troubleshoot_page.dart (100%) rename {lib => app/lib}/pages/web_send_page.dart (100%) rename {lib => app/lib}/provider/animation_provider.dart (100%) rename {lib => app/lib}/provider/apk_provider.dart (100%) rename {lib => app/lib}/provider/app_arguments_provider.dart (100%) rename {lib => app/lib}/provider/device_info_provider.dart (100%) rename {lib => app/lib}/provider/dio_provider.dart (100%) rename {lib => app/lib}/provider/last_devices.provider.dart (100%) rename {lib => app/lib}/provider/logging/discovery_logs_provider.dart (100%) rename {lib => app/lib}/provider/logging/http_logs_provider.dart (100%) rename {lib => app/lib}/provider/network/multicast_provider.dart (100%) rename {lib => app/lib}/provider/network/nearby_devices_provider.dart (100%) rename {lib => app/lib}/provider/network/scan_provider.dart (100%) rename {lib => app/lib}/provider/network/send_provider.dart (100%) rename {lib => app/lib}/provider/network/server/controller/receive_controller.dart (100%) rename {lib => app/lib}/provider/network/server/controller/send_controller.dart (100%) rename {lib => app/lib}/provider/network/server/server_provider.dart (100%) rename {lib => app/lib}/provider/network/server/server_utils.dart (100%) rename {lib => app/lib}/provider/network/targeted_discovery_provider.dart (100%) rename {lib => app/lib}/provider/network_info_provider.dart (100%) rename {lib => app/lib}/provider/param/apk_provider_param.dart (100%) rename {lib => app/lib}/provider/param/cached_apk_provider_param.dart (100%) rename {lib => app/lib}/provider/persistence_provider.dart (100%) rename {lib => app/lib}/provider/progress_provider.dart (100%) rename {lib => app/lib}/provider/receive_history_provider.dart (100%) rename {lib => app/lib}/provider/security_provider.dart (100%) rename {lib => app/lib}/provider/selection/selected_receiving_files_provider.dart (100%) rename {lib => app/lib}/provider/selection/selected_sending_files_provider.dart (100%) rename {lib => app/lib}/provider/settings_provider.dart (100%) rename {lib => app/lib}/provider/tv_provider.dart (100%) rename {lib => app/lib}/provider/ui/home_tab_provider.dart (100%) rename {lib => app/lib}/provider/version_provider.dart (100%) rename {lib => app/lib}/provider/window_dimensions_provider.dart (100%) rename {lib => app/lib}/riverpie.dart (100%) rename {lib => app/lib}/theme.dart (100%) rename {lib => app/lib}/util/alias_generator.dart (100%) rename {lib => app/lib}/util/api_route_builder.dart (100%) rename {lib => app/lib}/util/file_path_helper.dart (100%) rename {lib => app/lib}/util/file_size_helper.dart (100%) rename {lib => app/lib}/util/file_speed_helper.dart (100%) rename {lib => app/lib}/util/ip_helper.dart (100%) rename {lib => app/lib}/util/native/autostart_helper.dart (100%) rename {lib => app/lib}/util/native/cache_helper.dart (100%) rename {lib => app/lib}/util/native/cmd_helper.dart (100%) rename {lib => app/lib}/util/native/device_info_helper.dart (100%) rename {lib => app/lib}/util/native/file_picker.dart (100%) rename {lib => app/lib}/util/native/file_saver.dart (100%) rename {lib => app/lib}/util/native/get_destination_directory.dart (100%) rename {lib => app/lib}/util/native/ios_network_permission_helper.dart (100%) rename {lib => app/lib}/util/native/open_file.dart (100%) rename {lib => app/lib}/util/native/open_folder.dart (100%) rename {lib => app/lib}/util/native/pick_directory_path.dart (100%) rename {lib => app/lib}/util/native/platform_check.dart (100%) rename {lib => app/lib}/util/native/tray_helper.dart (100%) rename {lib => app/lib}/util/platform_strings.dart (100%) rename {lib => app/lib}/util/security_helper.dart (100%) rename {lib => app/lib}/util/sleep.dart (100%) rename {lib => app/lib}/util/task_runner.dart (100%) rename {lib => app/lib}/util/ui/asset_picker_translated_text_delegate.dart (100%) rename {lib => app/lib}/util/ui/dynamic_colors.dart (100%) rename {lib => app/lib}/util/ui/nav_bar_padding.dart (100%) rename {lib => app/lib}/util/ui/snackbar.dart (100%) rename {lib => app/lib}/util/user_agent_analyzer.dart (100%) rename {lib => app/lib}/widget/animated_opacity_cross_fade.dart (100%) rename {lib => app/lib}/widget/animations/initial_fade_transition.dart (100%) rename {lib => app/lib}/widget/animations/initial_slide_transition.dart (100%) rename {lib => app/lib}/widget/big_button.dart (100%) rename {lib => app/lib}/widget/copyable_text.dart (100%) rename {lib => app/lib}/widget/custom_dropdown_button.dart (100%) rename {lib => app/lib}/widget/custom_icon_button.dart (100%) rename {lib => app/lib}/widget/custom_progress_bar.dart (100%) rename {lib => app/lib}/widget/debug_entry.dart (100%) rename {lib => app/lib}/widget/device_bage.dart (100%) rename {lib => app/lib}/widget/dialogs/add_file_dialog.dart (100%) rename {lib => app/lib}/widget/dialogs/address_input_dialog.dart (100%) rename {lib => app/lib}/widget/dialogs/cancel_session_dialog.dart (100%) rename {lib => app/lib}/widget/dialogs/cannot_open_file_dialog.dart (100%) rename {lib => app/lib}/widget/dialogs/custom_bottom_sheet.dart (100%) rename {lib => app/lib}/widget/dialogs/encryption_disabled_notice.dart (100%) rename {lib => app/lib}/widget/dialogs/error_dialog.dart (100%) rename {lib => app/lib}/widget/dialogs/file_info_dialog.dart (100%) rename {lib => app/lib}/widget/dialogs/file_name_input_dialog.dart (100%) rename {lib => app/lib}/widget/dialogs/ios_network_permission_dialog.dart (100%) rename {lib => app/lib}/widget/dialogs/loading_dialog.dart (100%) rename {lib => app/lib}/widget/dialogs/message_input_dialog.dart (100%) rename {lib => app/lib}/widget/dialogs/no_files_dialog.dart (100%) rename {lib => app/lib}/widget/dialogs/no_permission_dialog.dart (100%) rename {lib => app/lib}/widget/dialogs/not_available_on_platform_dialog.dart (100%) rename {lib => app/lib}/widget/dialogs/qr_dialog.dart (100%) rename {lib => app/lib}/widget/dialogs/quick_actions_dialog.dart (100%) rename {lib => app/lib}/widget/dialogs/quick_save_notice.dart (100%) rename {lib => app/lib}/widget/dialogs/send_mode_help_dialog.dart (100%) rename {lib => app/lib}/widget/dialogs/text_field_tv.dart (100%) rename {lib => app/lib}/widget/file_thumbnail.dart (100%) rename {lib => app/lib}/widget/labeled_checkbox.dart (100%) rename {lib => app/lib}/widget/list_tile/custom_list_tile.dart (100%) rename {lib => app/lib}/widget/list_tile/device_list_tile.dart (100%) rename {lib => app/lib}/widget/list_tile/device_placeholder_list_tile.dart (100%) rename {lib => app/lib}/widget/local_send_logo.dart (100%) rename {lib => app/lib}/widget/opacity_slideshow.dart (100%) rename {lib => app/lib}/widget/responsive_builder.dart (100%) rename {lib => app/lib}/widget/responsive_list_view.dart (100%) rename {lib => app/lib}/widget/rotating_widget.dart (100%) rename {lib => app/lib}/widget/sliver/sliver_pinned_header.dart (100%) rename {lib => app/lib}/widget/watcher/life_cycle_watcher.dart (100%) rename {lib => app/lib}/widget/watcher/shortcut_watcher.dart (100%) rename {lib => app/lib}/widget/watcher/tray_watcher.dart (100%) rename {lib => app/lib}/widget/watcher/window_watcher.dart (100%) rename {linux => app/linux}/.gitignore (100%) rename {linux => app/linux}/CMakeLists.txt (100%) rename {linux => app/linux}/flutter/CMakeLists.txt (100%) rename {linux => app/linux}/flutter/generated_plugin_registrant.cc (100%) rename {linux => app/linux}/flutter/generated_plugin_registrant.h (100%) rename {linux => app/linux}/flutter/generated_plugins.cmake (100%) rename {linux => app/linux}/main.cc (100%) rename {linux => app/linux}/my_application.cc (100%) rename {linux => app/linux}/my_application.h (100%) rename {linux => app/linux}/packaging/deb/make_config.yaml (100%) rename {macos => app/macos}/.gitignore (100%) rename {macos => app/macos}/Flutter/Flutter-Debug.xcconfig (100%) rename {macos => app/macos}/Flutter/Flutter-Release.xcconfig (100%) rename {macos => app/macos}/Flutter/GeneratedPluginRegistrant.swift (100%) rename {macos => app/macos}/Podfile (100%) rename {macos => app/macos}/Podfile.lock (100%) rename {macos => app/macos}/Runner.xcodeproj/project.pbxproj (100%) rename {macos => app/macos}/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (100%) rename {macos => app/macos}/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme (100%) rename {macos => app/macos}/Runner.xcworkspace/contents.xcworkspacedata (100%) rename {macos => app/macos}/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (100%) rename {macos => app/macos}/Runner/AppDelegate.swift (100%) rename {macos => app/macos}/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename {macos => app/macos}/Runner/Assets.xcassets/AppIcon.appiconset/logo-1024-mac-1024.png (100%) rename {macos => app/macos}/Runner/Assets.xcassets/AppIcon.appiconset/logo-1024-mac-128.png (100%) rename {macos => app/macos}/Runner/Assets.xcassets/AppIcon.appiconset/logo-1024-mac-16.png (100%) rename {macos => app/macos}/Runner/Assets.xcassets/AppIcon.appiconset/logo-1024-mac-256.png (100%) rename {macos => app/macos}/Runner/Assets.xcassets/AppIcon.appiconset/logo-1024-mac-32.png (100%) rename {macos => app/macos}/Runner/Assets.xcassets/AppIcon.appiconset/logo-1024-mac-512.png (100%) rename {macos => app/macos}/Runner/Assets.xcassets/AppIcon.appiconset/logo-1024-mac-64.png (100%) rename {macos => app/macos}/Runner/Base.lproj/MainMenu.xib (100%) rename {macos => app/macos}/Runner/Configs/AppInfo.xcconfig (100%) rename {macos => app/macos}/Runner/Configs/Debug.xcconfig (100%) rename {macos => app/macos}/Runner/Configs/Release.xcconfig (100%) rename {macos => app/macos}/Runner/Configs/Warnings.xcconfig (100%) rename {macos => app/macos}/Runner/DebugProfile.entitlements (100%) rename {macos => app/macos}/Runner/Info.plist (100%) rename {macos => app/macos}/Runner/MainFlutterWindow.swift (100%) rename {macos => app/macos}/Runner/Release.entitlements (100%) rename pubspec.lock => app/pubspec.lock (100%) rename pubspec.yaml => app/pubspec.yaml (100%) rename {test => app/test}/unit/i18n_test.dart (100%) rename {test => app/test}/unit/model/dto/prepare_upload_request_dto_test.dart (100%) rename {test => app/test}/unit/provider/network_info_provider_test.dart (100%) rename {test => app/test}/unit/util/api_route_builder_test.dart (100%) rename {test => app/test}/unit/util/security_helper_test.dart (100%) rename {test => app/test}/unit/util/task_runner_test.dart (100%) rename {web => app/web}/favicon.png (100%) rename {web => app/web}/icons/Icon-192.png (100%) rename {web => app/web}/icons/Icon-512.png (100%) rename {web => app/web}/icons/Icon-maskable-192.png (100%) rename {web => app/web}/icons/Icon-maskable-512.png (100%) rename {web => app/web}/index.html (100%) rename {web => app/web}/manifest.json (100%) rename {windows => app/windows}/.gitignore (100%) rename {windows => app/windows}/CMakeLists.txt (100%) rename {windows => app/windows}/flutter/CMakeLists.txt (100%) rename {windows => app/windows}/flutter/generated_plugin_registrant.cc (100%) rename {windows => app/windows}/flutter/generated_plugin_registrant.h (100%) rename {windows => app/windows}/flutter/generated_plugins.cmake (100%) rename {windows => app/windows}/runner/CMakeLists.txt (100%) rename {windows => app/windows}/runner/Runner.rc (100%) rename {windows => app/windows}/runner/flutter_window.cpp (100%) rename {windows => app/windows}/runner/flutter_window.h (100%) rename {windows => app/windows}/runner/main.cpp (100%) rename {windows => app/windows}/runner/resource.h (100%) rename {windows => app/windows}/runner/resources/app_icon.ico (100%) rename {windows => app/windows}/runner/runner.exe.manifest (100%) rename {windows => app/windows}/runner/utils.cpp (100%) rename {windows => app/windows}/runner/utils.h (100%) rename {windows => app/windows}/runner/win32_window.cpp (100%) rename {windows => app/windows}/runner/win32_window.h (100%) create mode 100644 cli/.gitignore create mode 100644 cli/README.md create mode 100644 cli/analysis_options.yaml create mode 100644 cli/bin/cli.dart create mode 100644 cli/lib/main.dart create mode 100644 cli/pubspec.lock create mode 100644 cli/pubspec.yaml create mode 100644 common/.gitignore create mode 100644 common/README.md create mode 100644 common/analysis_options.yaml create mode 100644 common/lib/common.dart create mode 100644 common/lib/src/common_base.dart create mode 100644 common/pubspec.yaml diff --git a/.fvm/fvm_config.json b/.fvm/fvm_config.json index e341c5be..42fa11a9 100644 --- a/.fvm/fvm_config.json +++ b/.fvm/fvm_config.json @@ -1,4 +1,4 @@ { - "flutterSdkVersion": "3.13.2", + "flutterSdkVersion": "3.13.5", "flavors": {} } \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6bd452dc..71b9c4a4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,7 +7,7 @@ on: branches: [main] env: - FLUTTER_VERSION: "3.13.2" + FLUTTER_VERSION: "3.13.5" jobs: format: @@ -20,8 +20,10 @@ jobs: flutter-version: ${{ env.FLUTTER_VERSION }} channel: "stable" - name: Dependencies + working-directory: app run: flutter pub get - name: Check format + working-directory: app run: dart format --line-length 150 --set-exit-if-changed lib test test: @@ -34,10 +36,14 @@ jobs: flutter-version: ${{ env.FLUTTER_VERSION }} channel: "stable" - name: Dependencies + working-directory: app run: flutter pub get - name: Build generated files + working-directory: app run: flutter pub run build_runner build -d - name: Analyze + working-directory: app run: flutter analyze - name: Test + working-directory: app run: flutter test diff --git a/.github/workflows/linux_build.yml b/.github/workflows/linux_build.yml index f0adba0d..3cc0cc2a 100644 --- a/.github/workflows/linux_build.yml +++ b/.github/workflows/linux_build.yml @@ -4,7 +4,7 @@ on: workflow_dispatch: env: - FLUTTER_VERSION: "3.13.2" + FLUTTER_VERSION: "3.13.5" APK_BUILD_DIR: "/tmp/build" jobs: @@ -18,6 +18,7 @@ jobs: - name: Get version from pubspec.yaml id: get_version + working-directory: app run: | VERSION=$(sed -n 's/^version: \([0-9]*\.[0-9]*\.[0-9]*\).*/\1/p' pubspec.yaml) echo "version=$VERSION" >> $GITHUB_OUTPUT @@ -28,16 +29,18 @@ jobs: channel: "stable" - name: Dependencies + working-directory: app run: flutter pub get - name: Build generated files + working-directory: app run: flutter pub run build_runner build -d - name: Upload updated lib files with generated code uses: actions/upload-artifact@v3 with: name: lib-files - path: ./lib/* + path: ./app/lib/* build_appimage: needs: build @@ -50,7 +53,7 @@ jobs: uses: actions/download-artifact@v3 with: name: lib-files - path: lib + path: app/lib - name: Install dependencies run: | @@ -63,17 +66,21 @@ jobs: channel: "stable" - name: Dependencies + working-directory: app run: flutter pub get - name: Compile linux + working-directory: app run: flutter build linux - name: Copy compiled linux files + working-directory: app run: | mkdir AppDir cp -r build/linux/x64/release/bundle/* AppDir/ - name: Copy logo to AppDir + working-directory: app run: | mkdir -p AppDir/usr/share/icons/hicolor/32x32/apps cp assets/img/logo-32.png AppDir/usr/share/icons/hicolor/32x32/apps/localsend.png @@ -85,10 +92,10 @@ jobs: - name: Build AppImage uses: AppImageCrafters/build-appimage@57c3bc6963f870ce3be103117de5b5e33ffbaeb6 with: - recipe: ./AppImageBuilder.yml + recipe: ./app/AppImageBuilder.yml - name: Upload AppImage file uses: actions/upload-artifact@v3 with: name: appimage-result - path: ./*.AppImage + path: ./app/*.AppImage diff --git a/.gitignore b/.gitignore index 4f526718..7ddefb7b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,57 +1,12 @@ /.fvm/flutter_sdk +.idea # Linux AppImage -/AppDir -/appimage-build +/app/AppDir +/app/appimage-build *.g.dart *.gen.dart *.freezed.dart /secrets - -# Miscellaneous -*.class -*.log -*.pyc -*.swp -.DS_Store -.atom/ -.buildlog/ -.history -.svn/ -migrate_working_dir/ - -# IntelliJ related -*.iml -*.ipr -*.iws -.idea/ - -# The .vscode folder contains launch configuration and tasks you configure in -# VS Code which you may wish to be included in version control, so this line -# is commented out by default. -#.vscode/ - -# Flutter/Dart/Pub related -**/doc/api/ -**/ios/Flutter/.last_build_id -.dart_tool/ -.flutter-plugins -.flutter-plugins-dependencies -.packages -.pub-cache/ -.pub/ -/build/ -/dist/ - -# Symbolication related -app.*.symbols - -# Obfuscation related -app.*.map.json - -# Android Studio will place build artifacts here -/android/app/debug -/android/app/profile -/android/app/release diff --git a/.metadata b/.metadata deleted file mode 100644 index 3fdf5328..00000000 --- a/.metadata +++ /dev/null @@ -1,45 +0,0 @@ -# This file tracks properties of this Flutter project. -# Used by Flutter tool to assess capabilities and perform upgrades etc. -# -# This file should be version controlled. - -version: - revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 - channel: stable - -project_type: app - -# Tracks metadata for the flutter migrate command -migration: - platforms: - - platform: root - create_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 - base_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 - - platform: android - create_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 - base_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 - - platform: ios - create_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 - base_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 - - platform: linux - create_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 - base_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 - - platform: macos - create_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 - base_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 - - platform: web - create_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 - base_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 - - platform: windows - create_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 - base_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 - - # User provided section - - # List of Local paths (relative to this file) that should be - # ignored by the migrate tool. - # - # Files that are not part of the templates will be ignored by default. - unmanaged_files: - - 'lib/main.dart' - - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/CHANGELOG.md b/CHANGELOG.md index a9c0fd9b..614e0576 120000 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1 +1 @@ -assets/CHANGELOG.md \ No newline at end of file +app/assets/CHANGELOG.md \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a6ef753a..9e34d2b0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -22,8 +22,8 @@ You can help translating this app to other languages! 1. Fork this repository 2. Choose one - - Add missing translations in existing languages: Only update `_missing_translations_.json` in [assets/i18n](https://github.com/localsend/localsend/tree/main/assets/i18n) - - Fix existing translations: Update `strings_.i18n.json` in [assets/i18n](https://github.com/localsend/localsend/tree/main/assets/i18n) + - Add missing translations in existing languages: Only update `_missing_translations_.json` in [assets/i18n](https://github.com/localsend/localsend/tree/main/app/assets/i18n) + - Fix existing translations: Update `strings_.i18n.json` in [assets/i18n](https://github.com/localsend/localsend/tree/main/app/assets/i18n) - Add new languages: Create a new file, see also: [locale codes](https://saimana.com/list-of-country-locale-code/). 3. Optional: Re-run this app 1. Make sure you have [run](#run) this app once. diff --git a/README.md b/README.md index 095be735..25e2f693 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ LocalSend is a cross-platform app that enables secure communication between devi It is recommended to download the app either from an app store or from a package manager because the app does not have auto-update. -| Windows | macOS | Linux | Android | iOS | Fire OS | +| Windows | macOS | Linux | Android | iOS | Fire OS | |--------------------------|-------------------------|--------------------|----------------|---------------|------------| | [Winget][] | [App Store][] | [Flathub][] | [Play Store][] | [App Store][] | [Amazon][] | | [Scoop][] | [Homebrew][] | [AUR][] | [F-Droid][] | | | @@ -106,7 +106,7 @@ You can help translating this app to other languages! 3. Run app via `flutter run` 4. Open a pull request -[i18n]: https://github.com/localsend/localsend/tree/main/assets/i18n +[i18n]: https://github.com/localsend/localsend/tree/main/app/assets/i18n [locale codes]: https://saimana.com/list-of-country-locale-code/ #### _Take note:_ Fields decorated with `@` are not meant to be translated, they are not used in the app in any way, being merely informative text about the file or to give context to the translator. diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 00000000..29302296 --- /dev/null +++ b/app/.gitignore @@ -0,0 +1,45 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.packages +.pub-cache/ +.pub/ +/build/ +/dist/ + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json + +# Android Studio will place build artifacts here +/android/app/debug +/android/app/profile +/android/app/release diff --git a/AppImageBuilder.yml b/app/AppImageBuilder.yml similarity index 100% rename from AppImageBuilder.yml rename to app/AppImageBuilder.yml diff --git a/analysis_options.yaml b/app/analysis_options.yaml similarity index 100% rename from analysis_options.yaml rename to app/analysis_options.yaml diff --git a/android/.gitignore b/app/android/.gitignore similarity index 100% rename from android/.gitignore rename to app/android/.gitignore diff --git a/android/app/build.gradle b/app/android/app/build.gradle similarity index 100% rename from android/app/build.gradle rename to app/android/app/build.gradle diff --git a/android/app/src/debug/AndroidManifest.xml b/app/android/app/src/debug/AndroidManifest.xml similarity index 100% rename from android/app/src/debug/AndroidManifest.xml rename to app/android/app/src/debug/AndroidManifest.xml diff --git a/android/app/src/main/AndroidManifest.xml b/app/android/app/src/main/AndroidManifest.xml similarity index 100% rename from android/app/src/main/AndroidManifest.xml rename to app/android/app/src/main/AndroidManifest.xml diff --git a/android/app/src/main/ic_launcher-playstore.png b/app/android/app/src/main/ic_launcher-playstore.png similarity index 100% rename from android/app/src/main/ic_launcher-playstore.png rename to app/android/app/src/main/ic_launcher-playstore.png diff --git a/android/app/src/main/kotlin/org/localsend/localsend_app/MainActivity.kt b/app/android/app/src/main/kotlin/org/localsend/localsend_app/MainActivity.kt similarity index 100% rename from android/app/src/main/kotlin/org/localsend/localsend_app/MainActivity.kt rename to app/android/app/src/main/kotlin/org/localsend/localsend_app/MainActivity.kt diff --git a/android/app/src/main/res/drawable-v21/launch_background.xml b/app/android/app/src/main/res/drawable-v21/launch_background.xml similarity index 100% rename from android/app/src/main/res/drawable-v21/launch_background.xml rename to app/android/app/src/main/res/drawable-v21/launch_background.xml diff --git a/android/app/src/main/res/drawable/banner.png b/app/android/app/src/main/res/drawable/banner.png similarity index 100% rename from android/app/src/main/res/drawable/banner.png rename to app/android/app/src/main/res/drawable/banner.png diff --git a/android/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/android/app/src/main/res/drawable/ic_launcher_foreground.xml similarity index 100% rename from android/app/src/main/res/drawable/ic_launcher_foreground.xml rename to app/android/app/src/main/res/drawable/ic_launcher_foreground.xml diff --git a/android/app/src/main/res/drawable/launch_background.xml b/app/android/app/src/main/res/drawable/launch_background.xml similarity index 100% rename from android/app/src/main/res/drawable/launch_background.xml rename to app/android/app/src/main/res/drawable/launch_background.xml diff --git a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml similarity index 100% rename from android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml rename to app/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from android/app/src/main/res/mipmap-hdpi/ic_launcher.png rename to app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/app/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png similarity index 100% rename from android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png rename to app/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher_monochrome.png b/app/android/app/src/main/res/mipmap-hdpi/ic_launcher_monochrome.png similarity index 100% rename from android/app/src/main/res/mipmap-hdpi/ic_launcher_monochrome.png rename to app/android/app/src/main/res/mipmap-hdpi/ic_launcher_monochrome.png diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from android/app/src/main/res/mipmap-mdpi/ic_launcher.png rename to app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/app/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png similarity index 100% rename from android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png rename to app/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.png b/app/android/app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.png similarity index 100% rename from android/app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.png rename to app/android/app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.png diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from android/app/src/main/res/mipmap-xhdpi/ic_launcher.png rename to app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png similarity index 100% rename from android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png rename to app/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.png b/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.png similarity index 100% rename from android/app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.png rename to app/android/app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.png diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png rename to app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png similarity index 100% rename from android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png rename to app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_monochrome.png b/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_monochrome.png similarity index 100% rename from android/app/src/main/res/mipmap-xxhdpi/ic_launcher_monochrome.png rename to app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_monochrome.png diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png rename to app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png similarity index 100% rename from android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png rename to app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_monochrome.png b/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_monochrome.png similarity index 100% rename from android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_monochrome.png rename to app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_monochrome.png diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png similarity index 100% rename from android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png rename to app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png diff --git a/android/app/src/main/res/values-night/styles.xml b/app/android/app/src/main/res/values-night/styles.xml similarity index 100% rename from android/app/src/main/res/values-night/styles.xml rename to app/android/app/src/main/res/values-night/styles.xml diff --git a/android/app/src/main/res/values/ic_launcher_background.xml b/app/android/app/src/main/res/values/ic_launcher_background.xml similarity index 100% rename from android/app/src/main/res/values/ic_launcher_background.xml rename to app/android/app/src/main/res/values/ic_launcher_background.xml diff --git a/android/app/src/main/res/values/styles.xml b/app/android/app/src/main/res/values/styles.xml similarity index 100% rename from android/app/src/main/res/values/styles.xml rename to app/android/app/src/main/res/values/styles.xml diff --git a/android/app/src/profile/AndroidManifest.xml b/app/android/app/src/profile/AndroidManifest.xml similarity index 100% rename from android/app/src/profile/AndroidManifest.xml rename to app/android/app/src/profile/AndroidManifest.xml diff --git a/android/build.gradle b/app/android/build.gradle similarity index 100% rename from android/build.gradle rename to app/android/build.gradle diff --git a/android/gradle.properties b/app/android/gradle.properties similarity index 100% rename from android/gradle.properties rename to app/android/gradle.properties diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/app/android/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from android/gradle/wrapper/gradle-wrapper.properties rename to app/android/gradle/wrapper/gradle-wrapper.properties diff --git a/android/settings.gradle b/app/android/settings.gradle similarity index 100% rename from android/settings.gradle rename to app/android/settings.gradle diff --git a/assets/CHANGELOG.md b/app/assets/CHANGELOG.md similarity index 100% rename from assets/CHANGELOG.md rename to app/assets/CHANGELOG.md diff --git a/assets/i18n/_missing_translations_ar.json b/app/assets/i18n/_missing_translations_ar.json similarity index 100% rename from assets/i18n/_missing_translations_ar.json rename to app/assets/i18n/_missing_translations_ar.json diff --git a/assets/i18n/_missing_translations_bn.json b/app/assets/i18n/_missing_translations_bn.json similarity index 100% rename from assets/i18n/_missing_translations_bn.json rename to app/assets/i18n/_missing_translations_bn.json diff --git a/assets/i18n/_missing_translations_ca.json b/app/assets/i18n/_missing_translations_ca.json similarity index 100% rename from assets/i18n/_missing_translations_ca.json rename to app/assets/i18n/_missing_translations_ca.json diff --git a/assets/i18n/_missing_translations_cs.json b/app/assets/i18n/_missing_translations_cs.json similarity index 100% rename from assets/i18n/_missing_translations_cs.json rename to app/assets/i18n/_missing_translations_cs.json diff --git a/assets/i18n/_missing_translations_de.json b/app/assets/i18n/_missing_translations_de.json similarity index 100% rename from assets/i18n/_missing_translations_de.json rename to app/assets/i18n/_missing_translations_de.json diff --git a/assets/i18n/_missing_translations_es_ES.json b/app/assets/i18n/_missing_translations_es_ES.json similarity index 100% rename from assets/i18n/_missing_translations_es_ES.json rename to app/assets/i18n/_missing_translations_es_ES.json diff --git a/assets/i18n/_missing_translations_fa.json b/app/assets/i18n/_missing_translations_fa.json similarity index 100% rename from assets/i18n/_missing_translations_fa.json rename to app/assets/i18n/_missing_translations_fa.json diff --git a/assets/i18n/_missing_translations_fr_FR.json b/app/assets/i18n/_missing_translations_fr_FR.json similarity index 100% rename from assets/i18n/_missing_translations_fr_FR.json rename to app/assets/i18n/_missing_translations_fr_FR.json diff --git a/assets/i18n/_missing_translations_hu.json b/app/assets/i18n/_missing_translations_hu.json similarity index 100% rename from assets/i18n/_missing_translations_hu.json rename to app/assets/i18n/_missing_translations_hu.json diff --git a/assets/i18n/_missing_translations_in.json b/app/assets/i18n/_missing_translations_in.json similarity index 100% rename from assets/i18n/_missing_translations_in.json rename to app/assets/i18n/_missing_translations_in.json diff --git a/assets/i18n/_missing_translations_it.json b/app/assets/i18n/_missing_translations_it.json similarity index 100% rename from assets/i18n/_missing_translations_it.json rename to app/assets/i18n/_missing_translations_it.json diff --git a/assets/i18n/_missing_translations_iw.json b/app/assets/i18n/_missing_translations_iw.json similarity index 100% rename from assets/i18n/_missing_translations_iw.json rename to app/assets/i18n/_missing_translations_iw.json diff --git a/assets/i18n/_missing_translations_ja.json b/app/assets/i18n/_missing_translations_ja.json similarity index 100% rename from assets/i18n/_missing_translations_ja.json rename to app/assets/i18n/_missing_translations_ja.json diff --git a/assets/i18n/_missing_translations_km.json b/app/assets/i18n/_missing_translations_km.json similarity index 100% rename from assets/i18n/_missing_translations_km.json rename to app/assets/i18n/_missing_translations_km.json diff --git a/assets/i18n/_missing_translations_ko.json b/app/assets/i18n/_missing_translations_ko.json similarity index 100% rename from assets/i18n/_missing_translations_ko.json rename to app/assets/i18n/_missing_translations_ko.json diff --git a/assets/i18n/_missing_translations_ne.json b/app/assets/i18n/_missing_translations_ne.json similarity index 100% rename from assets/i18n/_missing_translations_ne.json rename to app/assets/i18n/_missing_translations_ne.json diff --git a/assets/i18n/_missing_translations_nl.json b/app/assets/i18n/_missing_translations_nl.json similarity index 100% rename from assets/i18n/_missing_translations_nl.json rename to app/assets/i18n/_missing_translations_nl.json diff --git a/assets/i18n/_missing_translations_pl.json b/app/assets/i18n/_missing_translations_pl.json similarity index 100% rename from assets/i18n/_missing_translations_pl.json rename to app/assets/i18n/_missing_translations_pl.json diff --git a/assets/i18n/_missing_translations_pt_BR.json b/app/assets/i18n/_missing_translations_pt_BR.json similarity index 100% rename from assets/i18n/_missing_translations_pt_BR.json rename to app/assets/i18n/_missing_translations_pt_BR.json diff --git a/assets/i18n/_missing_translations_ru.json b/app/assets/i18n/_missing_translations_ru.json similarity index 100% rename from assets/i18n/_missing_translations_ru.json rename to app/assets/i18n/_missing_translations_ru.json diff --git a/assets/i18n/_missing_translations_sv.json b/app/assets/i18n/_missing_translations_sv.json similarity index 100% rename from assets/i18n/_missing_translations_sv.json rename to app/assets/i18n/_missing_translations_sv.json diff --git a/assets/i18n/_missing_translations_tr.json b/app/assets/i18n/_missing_translations_tr.json similarity index 100% rename from assets/i18n/_missing_translations_tr.json rename to app/assets/i18n/_missing_translations_tr.json diff --git a/assets/i18n/_missing_translations_uk.json b/app/assets/i18n/_missing_translations_uk.json similarity index 100% rename from assets/i18n/_missing_translations_uk.json rename to app/assets/i18n/_missing_translations_uk.json diff --git a/assets/i18n/_missing_translations_ur.json b/app/assets/i18n/_missing_translations_ur.json similarity index 100% rename from assets/i18n/_missing_translations_ur.json rename to app/assets/i18n/_missing_translations_ur.json diff --git a/assets/i18n/_missing_translations_zh_CN.json b/app/assets/i18n/_missing_translations_zh_CN.json similarity index 100% rename from assets/i18n/_missing_translations_zh_CN.json rename to app/assets/i18n/_missing_translations_zh_CN.json diff --git a/assets/i18n/_missing_translations_zh_HK.json b/app/assets/i18n/_missing_translations_zh_HK.json similarity index 100% rename from assets/i18n/_missing_translations_zh_HK.json rename to app/assets/i18n/_missing_translations_zh_HK.json diff --git a/assets/i18n/_missing_translations_zh_TW.json b/app/assets/i18n/_missing_translations_zh_TW.json similarity index 100% rename from assets/i18n/_missing_translations_zh_TW.json rename to app/assets/i18n/_missing_translations_zh_TW.json diff --git a/assets/i18n/_unused_translations.json b/app/assets/i18n/_unused_translations.json similarity index 100% rename from assets/i18n/_unused_translations.json rename to app/assets/i18n/_unused_translations.json diff --git a/assets/i18n/strings.i18n.json b/app/assets/i18n/strings.i18n.json similarity index 100% rename from assets/i18n/strings.i18n.json rename to app/assets/i18n/strings.i18n.json diff --git a/assets/i18n/strings_ar.i18n.json b/app/assets/i18n/strings_ar.i18n.json similarity index 100% rename from assets/i18n/strings_ar.i18n.json rename to app/assets/i18n/strings_ar.i18n.json diff --git a/assets/i18n/strings_bn.i18n.json b/app/assets/i18n/strings_bn.i18n.json similarity index 100% rename from assets/i18n/strings_bn.i18n.json rename to app/assets/i18n/strings_bn.i18n.json diff --git a/assets/i18n/strings_ca.i18n.json b/app/assets/i18n/strings_ca.i18n.json similarity index 100% rename from assets/i18n/strings_ca.i18n.json rename to app/assets/i18n/strings_ca.i18n.json diff --git a/assets/i18n/strings_cs.i18n.json b/app/assets/i18n/strings_cs.i18n.json similarity index 100% rename from assets/i18n/strings_cs.i18n.json rename to app/assets/i18n/strings_cs.i18n.json diff --git a/assets/i18n/strings_de.i18n.json b/app/assets/i18n/strings_de.i18n.json similarity index 100% rename from assets/i18n/strings_de.i18n.json rename to app/assets/i18n/strings_de.i18n.json diff --git a/assets/i18n/strings_es-ES.i18n.json b/app/assets/i18n/strings_es-ES.i18n.json similarity index 100% rename from assets/i18n/strings_es-ES.i18n.json rename to app/assets/i18n/strings_es-ES.i18n.json diff --git a/assets/i18n/strings_fa.i18n.json b/app/assets/i18n/strings_fa.i18n.json similarity index 100% rename from assets/i18n/strings_fa.i18n.json rename to app/assets/i18n/strings_fa.i18n.json diff --git a/assets/i18n/strings_fr-FR.i18n.json b/app/assets/i18n/strings_fr-FR.i18n.json similarity index 100% rename from assets/i18n/strings_fr-FR.i18n.json rename to app/assets/i18n/strings_fr-FR.i18n.json diff --git a/assets/i18n/strings_hu.i18n.json b/app/assets/i18n/strings_hu.i18n.json similarity index 100% rename from assets/i18n/strings_hu.i18n.json rename to app/assets/i18n/strings_hu.i18n.json diff --git a/assets/i18n/strings_in.i18n.json b/app/assets/i18n/strings_in.i18n.json similarity index 100% rename from assets/i18n/strings_in.i18n.json rename to app/assets/i18n/strings_in.i18n.json diff --git a/assets/i18n/strings_it.i18n.json b/app/assets/i18n/strings_it.i18n.json similarity index 100% rename from assets/i18n/strings_it.i18n.json rename to app/assets/i18n/strings_it.i18n.json diff --git a/assets/i18n/strings_iw.i18n.json b/app/assets/i18n/strings_iw.i18n.json similarity index 100% rename from assets/i18n/strings_iw.i18n.json rename to app/assets/i18n/strings_iw.i18n.json diff --git a/assets/i18n/strings_ja.i18n.json b/app/assets/i18n/strings_ja.i18n.json similarity index 100% rename from assets/i18n/strings_ja.i18n.json rename to app/assets/i18n/strings_ja.i18n.json diff --git a/assets/i18n/strings_km.i18n.json b/app/assets/i18n/strings_km.i18n.json similarity index 100% rename from assets/i18n/strings_km.i18n.json rename to app/assets/i18n/strings_km.i18n.json diff --git a/assets/i18n/strings_ko.i18n.json b/app/assets/i18n/strings_ko.i18n.json similarity index 100% rename from assets/i18n/strings_ko.i18n.json rename to app/assets/i18n/strings_ko.i18n.json diff --git a/assets/i18n/strings_ne.i18n.json b/app/assets/i18n/strings_ne.i18n.json similarity index 100% rename from assets/i18n/strings_ne.i18n.json rename to app/assets/i18n/strings_ne.i18n.json diff --git a/assets/i18n/strings_nl.i18n.json b/app/assets/i18n/strings_nl.i18n.json similarity index 100% rename from assets/i18n/strings_nl.i18n.json rename to app/assets/i18n/strings_nl.i18n.json diff --git a/assets/i18n/strings_pl.i18n.json b/app/assets/i18n/strings_pl.i18n.json similarity index 100% rename from assets/i18n/strings_pl.i18n.json rename to app/assets/i18n/strings_pl.i18n.json diff --git a/assets/i18n/strings_pt-BR.i18n.json b/app/assets/i18n/strings_pt-BR.i18n.json similarity index 100% rename from assets/i18n/strings_pt-BR.i18n.json rename to app/assets/i18n/strings_pt-BR.i18n.json diff --git a/assets/i18n/strings_ru.i18n.json b/app/assets/i18n/strings_ru.i18n.json similarity index 100% rename from assets/i18n/strings_ru.i18n.json rename to app/assets/i18n/strings_ru.i18n.json diff --git a/assets/i18n/strings_sv.i18n.json b/app/assets/i18n/strings_sv.i18n.json similarity index 100% rename from assets/i18n/strings_sv.i18n.json rename to app/assets/i18n/strings_sv.i18n.json diff --git a/assets/i18n/strings_tr.i18n.json b/app/assets/i18n/strings_tr.i18n.json similarity index 100% rename from assets/i18n/strings_tr.i18n.json rename to app/assets/i18n/strings_tr.i18n.json diff --git a/assets/i18n/strings_uk.i18n.json b/app/assets/i18n/strings_uk.i18n.json similarity index 100% rename from assets/i18n/strings_uk.i18n.json rename to app/assets/i18n/strings_uk.i18n.json diff --git a/assets/i18n/strings_ur.i18n.json b/app/assets/i18n/strings_ur.i18n.json similarity index 100% rename from assets/i18n/strings_ur.i18n.json rename to app/assets/i18n/strings_ur.i18n.json diff --git a/assets/i18n/strings_zh-CN.i18n.json b/app/assets/i18n/strings_zh-CN.i18n.json similarity index 100% rename from assets/i18n/strings_zh-CN.i18n.json rename to app/assets/i18n/strings_zh-CN.i18n.json diff --git a/assets/i18n/strings_zh-HK.i18n.json b/app/assets/i18n/strings_zh-HK.i18n.json similarity index 100% rename from assets/i18n/strings_zh-HK.i18n.json rename to app/assets/i18n/strings_zh-HK.i18n.json diff --git a/assets/i18n/strings_zh-TW.i18n.json b/app/assets/i18n/strings_zh-TW.i18n.json similarity index 100% rename from assets/i18n/strings_zh-TW.i18n.json rename to app/assets/i18n/strings_zh-TW.i18n.json diff --git a/assets/img/logo-128.png b/app/assets/img/logo-128.png similarity index 100% rename from assets/img/logo-128.png rename to app/assets/img/logo-128.png diff --git a/assets/img/logo-256.png b/app/assets/img/logo-256.png similarity index 100% rename from assets/img/logo-256.png rename to app/assets/img/logo-256.png diff --git a/assets/img/logo-32-black.png b/app/assets/img/logo-32-black.png similarity index 100% rename from assets/img/logo-32-black.png rename to app/assets/img/logo-32-black.png diff --git a/assets/img/logo-32-white.png b/app/assets/img/logo-32-white.png similarity index 100% rename from assets/img/logo-32-white.png rename to app/assets/img/logo-32-white.png diff --git a/assets/img/logo-32.ico b/app/assets/img/logo-32.ico similarity index 100% rename from assets/img/logo-32.ico rename to app/assets/img/logo-32.ico diff --git a/assets/img/logo-32.png b/app/assets/img/logo-32.png similarity index 100% rename from assets/img/logo-32.png rename to app/assets/img/logo-32.png diff --git a/assets/img/logo-512.png b/app/assets/img/logo-512.png similarity index 100% rename from assets/img/logo-512.png rename to app/assets/img/logo-512.png diff --git a/assets/web/error-403.html b/app/assets/web/error-403.html similarity index 100% rename from assets/web/error-403.html rename to app/assets/web/error-403.html diff --git a/assets/web/index.html b/app/assets/web/index.html similarity index 100% rename from assets/web/index.html rename to app/assets/web/index.html diff --git a/assets/web/main.js b/app/assets/web/main.js similarity index 100% rename from assets/web/main.js rename to app/assets/web/main.js diff --git a/build.yaml b/app/build.yaml similarity index 100% rename from build.yaml rename to app/build.yaml diff --git a/fastlane/metadata/android/en-US/full_description.txt b/app/fastlane/metadata/android/en-US/full_description.txt similarity index 100% rename from fastlane/metadata/android/en-US/full_description.txt rename to app/fastlane/metadata/android/en-US/full_description.txt diff --git a/fastlane/metadata/android/en-US/images/icon.png b/app/fastlane/metadata/android/en-US/images/icon.png similarity index 100% rename from fastlane/metadata/android/en-US/images/icon.png rename to app/fastlane/metadata/android/en-US/images/icon.png diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/1.jpg b/app/fastlane/metadata/android/en-US/images/phoneScreenshots/1.jpg similarity index 100% rename from fastlane/metadata/android/en-US/images/phoneScreenshots/1.jpg rename to app/fastlane/metadata/android/en-US/images/phoneScreenshots/1.jpg diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/2.jpg b/app/fastlane/metadata/android/en-US/images/phoneScreenshots/2.jpg similarity index 100% rename from fastlane/metadata/android/en-US/images/phoneScreenshots/2.jpg rename to app/fastlane/metadata/android/en-US/images/phoneScreenshots/2.jpg diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/3.jpg b/app/fastlane/metadata/android/en-US/images/phoneScreenshots/3.jpg similarity index 100% rename from fastlane/metadata/android/en-US/images/phoneScreenshots/3.jpg rename to app/fastlane/metadata/android/en-US/images/phoneScreenshots/3.jpg diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/4.jpg b/app/fastlane/metadata/android/en-US/images/phoneScreenshots/4.jpg similarity index 100% rename from fastlane/metadata/android/en-US/images/phoneScreenshots/4.jpg rename to app/fastlane/metadata/android/en-US/images/phoneScreenshots/4.jpg diff --git a/fastlane/metadata/android/en-US/short_description.txt b/app/fastlane/metadata/android/en-US/short_description.txt similarity index 100% rename from fastlane/metadata/android/en-US/short_description.txt rename to app/fastlane/metadata/android/en-US/short_description.txt diff --git a/ios/.gitignore b/app/ios/.gitignore similarity index 100% rename from ios/.gitignore rename to app/ios/.gitignore diff --git a/ios/Flutter/AppFrameworkInfo.plist b/app/ios/Flutter/AppFrameworkInfo.plist similarity index 100% rename from ios/Flutter/AppFrameworkInfo.plist rename to app/ios/Flutter/AppFrameworkInfo.plist diff --git a/ios/Flutter/Debug.xcconfig b/app/ios/Flutter/Debug.xcconfig similarity index 100% rename from ios/Flutter/Debug.xcconfig rename to app/ios/Flutter/Debug.xcconfig diff --git a/ios/Flutter/Release.xcconfig b/app/ios/Flutter/Release.xcconfig similarity index 100% rename from ios/Flutter/Release.xcconfig rename to app/ios/Flutter/Release.xcconfig diff --git a/ios/Podfile b/app/ios/Podfile similarity index 100% rename from ios/Podfile rename to app/ios/Podfile diff --git a/ios/Podfile.lock b/app/ios/Podfile.lock similarity index 100% rename from ios/Podfile.lock rename to app/ios/Podfile.lock diff --git a/ios/Runner.xcodeproj/project.pbxproj b/app/ios/Runner.xcodeproj/project.pbxproj similarity index 100% rename from ios/Runner.xcodeproj/project.pbxproj rename to app/ios/Runner.xcodeproj/project.pbxproj diff --git a/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/app/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to app/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings similarity index 100% rename from ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings rename to app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/app/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme similarity index 100% rename from ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme rename to app/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme diff --git a/ios/Runner.xcworkspace/contents.xcworkspacedata b/app/ios/Runner.xcworkspace/contents.xcworkspacedata similarity index 100% rename from ios/Runner.xcworkspace/contents.xcworkspacedata rename to app/ios/Runner.xcworkspace/contents.xcworkspacedata diff --git a/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/app/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to app/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/app/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings similarity index 100% rename from ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings rename to app/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings diff --git a/ios/Runner/AppDelegate.swift b/app/ios/Runner/AppDelegate.swift similarity index 100% rename from ios/Runner/AppDelegate.swift rename to app/ios/Runner/AppDelegate.swift diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json rename to app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024.png b/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024.png similarity index 100% rename from ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024.png rename to app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024.png diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20.png b/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20.png similarity index 100% rename from ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20.png rename to app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20.png diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20@2x.png b/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20@2x.png similarity index 100% rename from ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20@2x.png rename to app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20@2x.png diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20@3x.png b/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20@3x.png similarity index 100% rename from ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20@3x.png rename to app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20@3x.png diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29.png b/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29.png similarity index 100% rename from ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29.png rename to app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29.png diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29@2x.png b/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29@2x.png similarity index 100% rename from ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29@2x.png rename to app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29@2x.png diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29@3x.png b/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29@3x.png similarity index 100% rename from ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29@3x.png rename to app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29@3x.png diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40.png b/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40.png similarity index 100% rename from ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40.png rename to app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40.png diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40@2x.png b/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40@2x.png similarity index 100% rename from ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40@2x.png rename to app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40@2x.png diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40@3x.png b/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40@3x.png similarity index 100% rename from ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40@3x.png rename to app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40@3x.png diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60@2x.png b/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60@2x.png similarity index 100% rename from ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60@2x.png rename to app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60@2x.png diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60@3x.png b/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60@3x.png similarity index 100% rename from ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60@3x.png rename to app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60@3x.png diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76.png b/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76.png similarity index 100% rename from ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76.png rename to app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76.png diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76@2x.png b/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76@2x.png similarity index 100% rename from ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76@2x.png rename to app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76@2x.png diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5@2x.png b/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5@2x.png similarity index 100% rename from ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5@2x.png rename to app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5@2x.png diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json similarity index 100% rename from ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json rename to app/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png similarity index 100% rename from ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png rename to app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png similarity index 100% rename from ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png rename to app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png similarity index 100% rename from ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png rename to app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md similarity index 100% rename from ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md rename to app/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md diff --git a/ios/Runner/Base.lproj/LaunchScreen.storyboard b/app/ios/Runner/Base.lproj/LaunchScreen.storyboard similarity index 100% rename from ios/Runner/Base.lproj/LaunchScreen.storyboard rename to app/ios/Runner/Base.lproj/LaunchScreen.storyboard diff --git a/ios/Runner/Base.lproj/Main.storyboard b/app/ios/Runner/Base.lproj/Main.storyboard similarity index 100% rename from ios/Runner/Base.lproj/Main.storyboard rename to app/ios/Runner/Base.lproj/Main.storyboard diff --git a/ios/Runner/Info.plist b/app/ios/Runner/Info.plist similarity index 100% rename from ios/Runner/Info.plist rename to app/ios/Runner/Info.plist diff --git a/ios/Runner/LocalNetworkAuthorization.swift b/app/ios/Runner/LocalNetworkAuthorization.swift similarity index 100% rename from ios/Runner/LocalNetworkAuthorization.swift rename to app/ios/Runner/LocalNetworkAuthorization.swift diff --git a/ios/Runner/Runner-Bridging-Header.h b/app/ios/Runner/Runner-Bridging-Header.h similarity index 100% rename from ios/Runner/Runner-Bridging-Header.h rename to app/ios/Runner/Runner-Bridging-Header.h diff --git a/ios/Runner/Runner.entitlements b/app/ios/Runner/Runner.entitlements similarity index 100% rename from ios/Runner/Runner.entitlements rename to app/ios/Runner/Runner.entitlements diff --git a/ios/ShareExtension/Base.lproj/MainInterface.storyboard b/app/ios/ShareExtension/Base.lproj/MainInterface.storyboard similarity index 100% rename from ios/ShareExtension/Base.lproj/MainInterface.storyboard rename to app/ios/ShareExtension/Base.lproj/MainInterface.storyboard diff --git a/ios/ShareExtension/Info.plist b/app/ios/ShareExtension/Info.plist similarity index 100% rename from ios/ShareExtension/Info.plist rename to app/ios/ShareExtension/Info.plist diff --git a/ios/ShareExtension/ShareExtension.entitlements b/app/ios/ShareExtension/ShareExtension.entitlements similarity index 100% rename from ios/ShareExtension/ShareExtension.entitlements rename to app/ios/ShareExtension/ShareExtension.entitlements diff --git a/ios/ShareExtension/ShareViewController.swift b/app/ios/ShareExtension/ShareViewController.swift similarity index 100% rename from ios/ShareExtension/ShareViewController.swift rename to app/ios/ShareExtension/ShareViewController.swift diff --git a/lib/constants.dart b/app/lib/constants.dart similarity index 100% rename from lib/constants.dart rename to app/lib/constants.dart diff --git a/lib/init.dart b/app/lib/init.dart similarity index 100% rename from lib/init.dart rename to app/lib/init.dart diff --git a/lib/main.dart b/app/lib/main.dart similarity index 100% rename from lib/main.dart rename to app/lib/main.dart diff --git a/lib/model/cross_file.dart b/app/lib/model/cross_file.dart similarity index 100% rename from lib/model/cross_file.dart rename to app/lib/model/cross_file.dart diff --git a/lib/model/device.dart b/app/lib/model/device.dart similarity index 100% rename from lib/model/device.dart rename to app/lib/model/device.dart diff --git a/lib/model/dto/file_dto.dart b/app/lib/model/dto/file_dto.dart similarity index 100% rename from lib/model/dto/file_dto.dart rename to app/lib/model/dto/file_dto.dart diff --git a/lib/model/dto/info_dto.dart b/app/lib/model/dto/info_dto.dart similarity index 100% rename from lib/model/dto/info_dto.dart rename to app/lib/model/dto/info_dto.dart diff --git a/lib/model/dto/info_register_dto.dart b/app/lib/model/dto/info_register_dto.dart similarity index 100% rename from lib/model/dto/info_register_dto.dart rename to app/lib/model/dto/info_register_dto.dart diff --git a/lib/model/dto/multicast_dto.dart b/app/lib/model/dto/multicast_dto.dart similarity index 100% rename from lib/model/dto/multicast_dto.dart rename to app/lib/model/dto/multicast_dto.dart diff --git a/lib/model/dto/prepare_upload_request_dto.dart b/app/lib/model/dto/prepare_upload_request_dto.dart similarity index 100% rename from lib/model/dto/prepare_upload_request_dto.dart rename to app/lib/model/dto/prepare_upload_request_dto.dart diff --git a/lib/model/dto/prepare_upload_response_dto.dart b/app/lib/model/dto/prepare_upload_response_dto.dart similarity index 100% rename from lib/model/dto/prepare_upload_response_dto.dart rename to app/lib/model/dto/prepare_upload_response_dto.dart diff --git a/lib/model/dto/receive_request_response_dto.dart b/app/lib/model/dto/receive_request_response_dto.dart similarity index 100% rename from lib/model/dto/receive_request_response_dto.dart rename to app/lib/model/dto/receive_request_response_dto.dart diff --git a/lib/model/dto/register_dto.dart b/app/lib/model/dto/register_dto.dart similarity index 100% rename from lib/model/dto/register_dto.dart rename to app/lib/model/dto/register_dto.dart diff --git a/lib/model/file_status.dart b/app/lib/model/file_status.dart similarity index 100% rename from lib/model/file_status.dart rename to app/lib/model/file_status.dart diff --git a/lib/model/file_type.dart b/app/lib/model/file_type.dart similarity index 100% rename from lib/model/file_type.dart rename to app/lib/model/file_type.dart diff --git a/lib/model/log_entry.dart b/app/lib/model/log_entry.dart similarity index 100% rename from lib/model/log_entry.dart rename to app/lib/model/log_entry.dart diff --git a/lib/model/persistence/color_mode.dart b/app/lib/model/persistence/color_mode.dart similarity index 100% rename from lib/model/persistence/color_mode.dart rename to app/lib/model/persistence/color_mode.dart diff --git a/lib/model/persistence/stored_security_context.dart b/app/lib/model/persistence/stored_security_context.dart similarity index 100% rename from lib/model/persistence/stored_security_context.dart rename to app/lib/model/persistence/stored_security_context.dart diff --git a/lib/model/receive_history_entry.dart b/app/lib/model/receive_history_entry.dart similarity index 100% rename from lib/model/receive_history_entry.dart rename to app/lib/model/receive_history_entry.dart diff --git a/lib/model/send_mode.dart b/app/lib/model/send_mode.dart similarity index 100% rename from lib/model/send_mode.dart rename to app/lib/model/send_mode.dart diff --git a/lib/model/session_status.dart b/app/lib/model/session_status.dart similarity index 100% rename from lib/model/session_status.dart rename to app/lib/model/session_status.dart diff --git a/lib/model/state/nearby_devices_state.dart b/app/lib/model/state/nearby_devices_state.dart similarity index 100% rename from lib/model/state/nearby_devices_state.dart rename to app/lib/model/state/nearby_devices_state.dart diff --git a/lib/model/state/network_state.dart b/app/lib/model/state/network_state.dart similarity index 100% rename from lib/model/state/network_state.dart rename to app/lib/model/state/network_state.dart diff --git a/lib/model/state/send/send_session_state.dart b/app/lib/model/state/send/send_session_state.dart similarity index 100% rename from lib/model/state/send/send_session_state.dart rename to app/lib/model/state/send/send_session_state.dart diff --git a/lib/model/state/send/sending_file.dart b/app/lib/model/state/send/sending_file.dart similarity index 100% rename from lib/model/state/send/sending_file.dart rename to app/lib/model/state/send/sending_file.dart diff --git a/lib/model/state/send/web/web_send_file.dart b/app/lib/model/state/send/web/web_send_file.dart similarity index 100% rename from lib/model/state/send/web/web_send_file.dart rename to app/lib/model/state/send/web/web_send_file.dart diff --git a/lib/model/state/send/web/web_send_session.dart b/app/lib/model/state/send/web/web_send_session.dart similarity index 100% rename from lib/model/state/send/web/web_send_session.dart rename to app/lib/model/state/send/web/web_send_session.dart diff --git a/lib/model/state/send/web/web_send_state.dart b/app/lib/model/state/send/web/web_send_state.dart similarity index 100% rename from lib/model/state/send/web/web_send_state.dart rename to app/lib/model/state/send/web/web_send_state.dart diff --git a/lib/model/state/server/receive_session_state.dart b/app/lib/model/state/server/receive_session_state.dart similarity index 100% rename from lib/model/state/server/receive_session_state.dart rename to app/lib/model/state/server/receive_session_state.dart diff --git a/lib/model/state/server/receiving_file.dart b/app/lib/model/state/server/receiving_file.dart similarity index 100% rename from lib/model/state/server/receiving_file.dart rename to app/lib/model/state/server/receiving_file.dart diff --git a/lib/model/state/server/server_state.dart b/app/lib/model/state/server/server_state.dart similarity index 100% rename from lib/model/state/server/server_state.dart rename to app/lib/model/state/server/server_state.dart diff --git a/lib/model/state/settings_state.dart b/app/lib/model/state/settings_state.dart similarity index 100% rename from lib/model/state/settings_state.dart rename to app/lib/model/state/settings_state.dart diff --git a/lib/pages/about_page.dart b/app/lib/pages/about_page.dart similarity index 100% rename from lib/pages/about_page.dart rename to app/lib/pages/about_page.dart diff --git a/lib/pages/apk_picker_page.dart b/app/lib/pages/apk_picker_page.dart similarity index 100% rename from lib/pages/apk_picker_page.dart rename to app/lib/pages/apk_picker_page.dart diff --git a/lib/pages/changelog_page.dart b/app/lib/pages/changelog_page.dart similarity index 100% rename from lib/pages/changelog_page.dart rename to app/lib/pages/changelog_page.dart diff --git a/lib/pages/debug/debug_page.dart b/app/lib/pages/debug/debug_page.dart similarity index 100% rename from lib/pages/debug/debug_page.dart rename to app/lib/pages/debug/debug_page.dart diff --git a/lib/pages/debug/discovery_debug_page.dart b/app/lib/pages/debug/discovery_debug_page.dart similarity index 100% rename from lib/pages/debug/discovery_debug_page.dart rename to app/lib/pages/debug/discovery_debug_page.dart diff --git a/lib/pages/debug/http_logs_page.dart b/app/lib/pages/debug/http_logs_page.dart similarity index 100% rename from lib/pages/debug/http_logs_page.dart rename to app/lib/pages/debug/http_logs_page.dart diff --git a/lib/pages/debug/security_debug_page.dart b/app/lib/pages/debug/security_debug_page.dart similarity index 100% rename from lib/pages/debug/security_debug_page.dart rename to app/lib/pages/debug/security_debug_page.dart diff --git a/lib/pages/home_page.dart b/app/lib/pages/home_page.dart similarity index 100% rename from lib/pages/home_page.dart rename to app/lib/pages/home_page.dart diff --git a/lib/pages/language_page.dart b/app/lib/pages/language_page.dart similarity index 100% rename from lib/pages/language_page.dart rename to app/lib/pages/language_page.dart diff --git a/lib/pages/progress_page.dart b/app/lib/pages/progress_page.dart similarity index 100% rename from lib/pages/progress_page.dart rename to app/lib/pages/progress_page.dart diff --git a/lib/pages/receive_history_page.dart b/app/lib/pages/receive_history_page.dart similarity index 100% rename from lib/pages/receive_history_page.dart rename to app/lib/pages/receive_history_page.dart diff --git a/lib/pages/receive_options_page.dart b/app/lib/pages/receive_options_page.dart similarity index 100% rename from lib/pages/receive_options_page.dart rename to app/lib/pages/receive_options_page.dart diff --git a/lib/pages/receive_page.dart b/app/lib/pages/receive_page.dart similarity index 100% rename from lib/pages/receive_page.dart rename to app/lib/pages/receive_page.dart diff --git a/lib/pages/selected_files_page.dart b/app/lib/pages/selected_files_page.dart similarity index 100% rename from lib/pages/selected_files_page.dart rename to app/lib/pages/selected_files_page.dart diff --git a/lib/pages/send_page.dart b/app/lib/pages/send_page.dart similarity index 100% rename from lib/pages/send_page.dart rename to app/lib/pages/send_page.dart diff --git a/lib/pages/tabs/receive_tab.dart b/app/lib/pages/tabs/receive_tab.dart similarity index 100% rename from lib/pages/tabs/receive_tab.dart rename to app/lib/pages/tabs/receive_tab.dart diff --git a/lib/pages/tabs/send_tab.dart b/app/lib/pages/tabs/send_tab.dart similarity index 100% rename from lib/pages/tabs/send_tab.dart rename to app/lib/pages/tabs/send_tab.dart diff --git a/lib/pages/tabs/settings_tab.dart b/app/lib/pages/tabs/settings_tab.dart similarity index 100% rename from lib/pages/tabs/settings_tab.dart rename to app/lib/pages/tabs/settings_tab.dart diff --git a/lib/pages/troubleshoot_page.dart b/app/lib/pages/troubleshoot_page.dart similarity index 100% rename from lib/pages/troubleshoot_page.dart rename to app/lib/pages/troubleshoot_page.dart diff --git a/lib/pages/web_send_page.dart b/app/lib/pages/web_send_page.dart similarity index 100% rename from lib/pages/web_send_page.dart rename to app/lib/pages/web_send_page.dart diff --git a/lib/provider/animation_provider.dart b/app/lib/provider/animation_provider.dart similarity index 100% rename from lib/provider/animation_provider.dart rename to app/lib/provider/animation_provider.dart diff --git a/lib/provider/apk_provider.dart b/app/lib/provider/apk_provider.dart similarity index 100% rename from lib/provider/apk_provider.dart rename to app/lib/provider/apk_provider.dart diff --git a/lib/provider/app_arguments_provider.dart b/app/lib/provider/app_arguments_provider.dart similarity index 100% rename from lib/provider/app_arguments_provider.dart rename to app/lib/provider/app_arguments_provider.dart diff --git a/lib/provider/device_info_provider.dart b/app/lib/provider/device_info_provider.dart similarity index 100% rename from lib/provider/device_info_provider.dart rename to app/lib/provider/device_info_provider.dart diff --git a/lib/provider/dio_provider.dart b/app/lib/provider/dio_provider.dart similarity index 100% rename from lib/provider/dio_provider.dart rename to app/lib/provider/dio_provider.dart diff --git a/lib/provider/last_devices.provider.dart b/app/lib/provider/last_devices.provider.dart similarity index 100% rename from lib/provider/last_devices.provider.dart rename to app/lib/provider/last_devices.provider.dart diff --git a/lib/provider/logging/discovery_logs_provider.dart b/app/lib/provider/logging/discovery_logs_provider.dart similarity index 100% rename from lib/provider/logging/discovery_logs_provider.dart rename to app/lib/provider/logging/discovery_logs_provider.dart diff --git a/lib/provider/logging/http_logs_provider.dart b/app/lib/provider/logging/http_logs_provider.dart similarity index 100% rename from lib/provider/logging/http_logs_provider.dart rename to app/lib/provider/logging/http_logs_provider.dart diff --git a/lib/provider/network/multicast_provider.dart b/app/lib/provider/network/multicast_provider.dart similarity index 100% rename from lib/provider/network/multicast_provider.dart rename to app/lib/provider/network/multicast_provider.dart diff --git a/lib/provider/network/nearby_devices_provider.dart b/app/lib/provider/network/nearby_devices_provider.dart similarity index 100% rename from lib/provider/network/nearby_devices_provider.dart rename to app/lib/provider/network/nearby_devices_provider.dart diff --git a/lib/provider/network/scan_provider.dart b/app/lib/provider/network/scan_provider.dart similarity index 100% rename from lib/provider/network/scan_provider.dart rename to app/lib/provider/network/scan_provider.dart diff --git a/lib/provider/network/send_provider.dart b/app/lib/provider/network/send_provider.dart similarity index 100% rename from lib/provider/network/send_provider.dart rename to app/lib/provider/network/send_provider.dart diff --git a/lib/provider/network/server/controller/receive_controller.dart b/app/lib/provider/network/server/controller/receive_controller.dart similarity index 100% rename from lib/provider/network/server/controller/receive_controller.dart rename to app/lib/provider/network/server/controller/receive_controller.dart diff --git a/lib/provider/network/server/controller/send_controller.dart b/app/lib/provider/network/server/controller/send_controller.dart similarity index 100% rename from lib/provider/network/server/controller/send_controller.dart rename to app/lib/provider/network/server/controller/send_controller.dart diff --git a/lib/provider/network/server/server_provider.dart b/app/lib/provider/network/server/server_provider.dart similarity index 100% rename from lib/provider/network/server/server_provider.dart rename to app/lib/provider/network/server/server_provider.dart diff --git a/lib/provider/network/server/server_utils.dart b/app/lib/provider/network/server/server_utils.dart similarity index 100% rename from lib/provider/network/server/server_utils.dart rename to app/lib/provider/network/server/server_utils.dart diff --git a/lib/provider/network/targeted_discovery_provider.dart b/app/lib/provider/network/targeted_discovery_provider.dart similarity index 100% rename from lib/provider/network/targeted_discovery_provider.dart rename to app/lib/provider/network/targeted_discovery_provider.dart diff --git a/lib/provider/network_info_provider.dart b/app/lib/provider/network_info_provider.dart similarity index 100% rename from lib/provider/network_info_provider.dart rename to app/lib/provider/network_info_provider.dart diff --git a/lib/provider/param/apk_provider_param.dart b/app/lib/provider/param/apk_provider_param.dart similarity index 100% rename from lib/provider/param/apk_provider_param.dart rename to app/lib/provider/param/apk_provider_param.dart diff --git a/lib/provider/param/cached_apk_provider_param.dart b/app/lib/provider/param/cached_apk_provider_param.dart similarity index 100% rename from lib/provider/param/cached_apk_provider_param.dart rename to app/lib/provider/param/cached_apk_provider_param.dart diff --git a/lib/provider/persistence_provider.dart b/app/lib/provider/persistence_provider.dart similarity index 100% rename from lib/provider/persistence_provider.dart rename to app/lib/provider/persistence_provider.dart diff --git a/lib/provider/progress_provider.dart b/app/lib/provider/progress_provider.dart similarity index 100% rename from lib/provider/progress_provider.dart rename to app/lib/provider/progress_provider.dart diff --git a/lib/provider/receive_history_provider.dart b/app/lib/provider/receive_history_provider.dart similarity index 100% rename from lib/provider/receive_history_provider.dart rename to app/lib/provider/receive_history_provider.dart diff --git a/lib/provider/security_provider.dart b/app/lib/provider/security_provider.dart similarity index 100% rename from lib/provider/security_provider.dart rename to app/lib/provider/security_provider.dart diff --git a/lib/provider/selection/selected_receiving_files_provider.dart b/app/lib/provider/selection/selected_receiving_files_provider.dart similarity index 100% rename from lib/provider/selection/selected_receiving_files_provider.dart rename to app/lib/provider/selection/selected_receiving_files_provider.dart diff --git a/lib/provider/selection/selected_sending_files_provider.dart b/app/lib/provider/selection/selected_sending_files_provider.dart similarity index 100% rename from lib/provider/selection/selected_sending_files_provider.dart rename to app/lib/provider/selection/selected_sending_files_provider.dart diff --git a/lib/provider/settings_provider.dart b/app/lib/provider/settings_provider.dart similarity index 100% rename from lib/provider/settings_provider.dart rename to app/lib/provider/settings_provider.dart diff --git a/lib/provider/tv_provider.dart b/app/lib/provider/tv_provider.dart similarity index 100% rename from lib/provider/tv_provider.dart rename to app/lib/provider/tv_provider.dart diff --git a/lib/provider/ui/home_tab_provider.dart b/app/lib/provider/ui/home_tab_provider.dart similarity index 100% rename from lib/provider/ui/home_tab_provider.dart rename to app/lib/provider/ui/home_tab_provider.dart diff --git a/lib/provider/version_provider.dart b/app/lib/provider/version_provider.dart similarity index 100% rename from lib/provider/version_provider.dart rename to app/lib/provider/version_provider.dart diff --git a/lib/provider/window_dimensions_provider.dart b/app/lib/provider/window_dimensions_provider.dart similarity index 100% rename from lib/provider/window_dimensions_provider.dart rename to app/lib/provider/window_dimensions_provider.dart diff --git a/lib/riverpie.dart b/app/lib/riverpie.dart similarity index 100% rename from lib/riverpie.dart rename to app/lib/riverpie.dart diff --git a/lib/theme.dart b/app/lib/theme.dart similarity index 100% rename from lib/theme.dart rename to app/lib/theme.dart diff --git a/lib/util/alias_generator.dart b/app/lib/util/alias_generator.dart similarity index 100% rename from lib/util/alias_generator.dart rename to app/lib/util/alias_generator.dart diff --git a/lib/util/api_route_builder.dart b/app/lib/util/api_route_builder.dart similarity index 100% rename from lib/util/api_route_builder.dart rename to app/lib/util/api_route_builder.dart diff --git a/lib/util/file_path_helper.dart b/app/lib/util/file_path_helper.dart similarity index 100% rename from lib/util/file_path_helper.dart rename to app/lib/util/file_path_helper.dart diff --git a/lib/util/file_size_helper.dart b/app/lib/util/file_size_helper.dart similarity index 100% rename from lib/util/file_size_helper.dart rename to app/lib/util/file_size_helper.dart diff --git a/lib/util/file_speed_helper.dart b/app/lib/util/file_speed_helper.dart similarity index 100% rename from lib/util/file_speed_helper.dart rename to app/lib/util/file_speed_helper.dart diff --git a/lib/util/ip_helper.dart b/app/lib/util/ip_helper.dart similarity index 100% rename from lib/util/ip_helper.dart rename to app/lib/util/ip_helper.dart diff --git a/lib/util/native/autostart_helper.dart b/app/lib/util/native/autostart_helper.dart similarity index 100% rename from lib/util/native/autostart_helper.dart rename to app/lib/util/native/autostart_helper.dart diff --git a/lib/util/native/cache_helper.dart b/app/lib/util/native/cache_helper.dart similarity index 100% rename from lib/util/native/cache_helper.dart rename to app/lib/util/native/cache_helper.dart diff --git a/lib/util/native/cmd_helper.dart b/app/lib/util/native/cmd_helper.dart similarity index 100% rename from lib/util/native/cmd_helper.dart rename to app/lib/util/native/cmd_helper.dart diff --git a/lib/util/native/device_info_helper.dart b/app/lib/util/native/device_info_helper.dart similarity index 100% rename from lib/util/native/device_info_helper.dart rename to app/lib/util/native/device_info_helper.dart diff --git a/lib/util/native/file_picker.dart b/app/lib/util/native/file_picker.dart similarity index 100% rename from lib/util/native/file_picker.dart rename to app/lib/util/native/file_picker.dart diff --git a/lib/util/native/file_saver.dart b/app/lib/util/native/file_saver.dart similarity index 100% rename from lib/util/native/file_saver.dart rename to app/lib/util/native/file_saver.dart diff --git a/lib/util/native/get_destination_directory.dart b/app/lib/util/native/get_destination_directory.dart similarity index 100% rename from lib/util/native/get_destination_directory.dart rename to app/lib/util/native/get_destination_directory.dart diff --git a/lib/util/native/ios_network_permission_helper.dart b/app/lib/util/native/ios_network_permission_helper.dart similarity index 100% rename from lib/util/native/ios_network_permission_helper.dart rename to app/lib/util/native/ios_network_permission_helper.dart diff --git a/lib/util/native/open_file.dart b/app/lib/util/native/open_file.dart similarity index 100% rename from lib/util/native/open_file.dart rename to app/lib/util/native/open_file.dart diff --git a/lib/util/native/open_folder.dart b/app/lib/util/native/open_folder.dart similarity index 100% rename from lib/util/native/open_folder.dart rename to app/lib/util/native/open_folder.dart diff --git a/lib/util/native/pick_directory_path.dart b/app/lib/util/native/pick_directory_path.dart similarity index 100% rename from lib/util/native/pick_directory_path.dart rename to app/lib/util/native/pick_directory_path.dart diff --git a/lib/util/native/platform_check.dart b/app/lib/util/native/platform_check.dart similarity index 100% rename from lib/util/native/platform_check.dart rename to app/lib/util/native/platform_check.dart diff --git a/lib/util/native/tray_helper.dart b/app/lib/util/native/tray_helper.dart similarity index 100% rename from lib/util/native/tray_helper.dart rename to app/lib/util/native/tray_helper.dart diff --git a/lib/util/platform_strings.dart b/app/lib/util/platform_strings.dart similarity index 100% rename from lib/util/platform_strings.dart rename to app/lib/util/platform_strings.dart diff --git a/lib/util/security_helper.dart b/app/lib/util/security_helper.dart similarity index 100% rename from lib/util/security_helper.dart rename to app/lib/util/security_helper.dart diff --git a/lib/util/sleep.dart b/app/lib/util/sleep.dart similarity index 100% rename from lib/util/sleep.dart rename to app/lib/util/sleep.dart diff --git a/lib/util/task_runner.dart b/app/lib/util/task_runner.dart similarity index 100% rename from lib/util/task_runner.dart rename to app/lib/util/task_runner.dart diff --git a/lib/util/ui/asset_picker_translated_text_delegate.dart b/app/lib/util/ui/asset_picker_translated_text_delegate.dart similarity index 100% rename from lib/util/ui/asset_picker_translated_text_delegate.dart rename to app/lib/util/ui/asset_picker_translated_text_delegate.dart diff --git a/lib/util/ui/dynamic_colors.dart b/app/lib/util/ui/dynamic_colors.dart similarity index 100% rename from lib/util/ui/dynamic_colors.dart rename to app/lib/util/ui/dynamic_colors.dart diff --git a/lib/util/ui/nav_bar_padding.dart b/app/lib/util/ui/nav_bar_padding.dart similarity index 100% rename from lib/util/ui/nav_bar_padding.dart rename to app/lib/util/ui/nav_bar_padding.dart diff --git a/lib/util/ui/snackbar.dart b/app/lib/util/ui/snackbar.dart similarity index 100% rename from lib/util/ui/snackbar.dart rename to app/lib/util/ui/snackbar.dart diff --git a/lib/util/user_agent_analyzer.dart b/app/lib/util/user_agent_analyzer.dart similarity index 100% rename from lib/util/user_agent_analyzer.dart rename to app/lib/util/user_agent_analyzer.dart diff --git a/lib/widget/animated_opacity_cross_fade.dart b/app/lib/widget/animated_opacity_cross_fade.dart similarity index 100% rename from lib/widget/animated_opacity_cross_fade.dart rename to app/lib/widget/animated_opacity_cross_fade.dart diff --git a/lib/widget/animations/initial_fade_transition.dart b/app/lib/widget/animations/initial_fade_transition.dart similarity index 100% rename from lib/widget/animations/initial_fade_transition.dart rename to app/lib/widget/animations/initial_fade_transition.dart diff --git a/lib/widget/animations/initial_slide_transition.dart b/app/lib/widget/animations/initial_slide_transition.dart similarity index 100% rename from lib/widget/animations/initial_slide_transition.dart rename to app/lib/widget/animations/initial_slide_transition.dart diff --git a/lib/widget/big_button.dart b/app/lib/widget/big_button.dart similarity index 100% rename from lib/widget/big_button.dart rename to app/lib/widget/big_button.dart diff --git a/lib/widget/copyable_text.dart b/app/lib/widget/copyable_text.dart similarity index 100% rename from lib/widget/copyable_text.dart rename to app/lib/widget/copyable_text.dart diff --git a/lib/widget/custom_dropdown_button.dart b/app/lib/widget/custom_dropdown_button.dart similarity index 100% rename from lib/widget/custom_dropdown_button.dart rename to app/lib/widget/custom_dropdown_button.dart diff --git a/lib/widget/custom_icon_button.dart b/app/lib/widget/custom_icon_button.dart similarity index 100% rename from lib/widget/custom_icon_button.dart rename to app/lib/widget/custom_icon_button.dart diff --git a/lib/widget/custom_progress_bar.dart b/app/lib/widget/custom_progress_bar.dart similarity index 100% rename from lib/widget/custom_progress_bar.dart rename to app/lib/widget/custom_progress_bar.dart diff --git a/lib/widget/debug_entry.dart b/app/lib/widget/debug_entry.dart similarity index 100% rename from lib/widget/debug_entry.dart rename to app/lib/widget/debug_entry.dart diff --git a/lib/widget/device_bage.dart b/app/lib/widget/device_bage.dart similarity index 100% rename from lib/widget/device_bage.dart rename to app/lib/widget/device_bage.dart diff --git a/lib/widget/dialogs/add_file_dialog.dart b/app/lib/widget/dialogs/add_file_dialog.dart similarity index 100% rename from lib/widget/dialogs/add_file_dialog.dart rename to app/lib/widget/dialogs/add_file_dialog.dart diff --git a/lib/widget/dialogs/address_input_dialog.dart b/app/lib/widget/dialogs/address_input_dialog.dart similarity index 100% rename from lib/widget/dialogs/address_input_dialog.dart rename to app/lib/widget/dialogs/address_input_dialog.dart diff --git a/lib/widget/dialogs/cancel_session_dialog.dart b/app/lib/widget/dialogs/cancel_session_dialog.dart similarity index 100% rename from lib/widget/dialogs/cancel_session_dialog.dart rename to app/lib/widget/dialogs/cancel_session_dialog.dart diff --git a/lib/widget/dialogs/cannot_open_file_dialog.dart b/app/lib/widget/dialogs/cannot_open_file_dialog.dart similarity index 100% rename from lib/widget/dialogs/cannot_open_file_dialog.dart rename to app/lib/widget/dialogs/cannot_open_file_dialog.dart diff --git a/lib/widget/dialogs/custom_bottom_sheet.dart b/app/lib/widget/dialogs/custom_bottom_sheet.dart similarity index 100% rename from lib/widget/dialogs/custom_bottom_sheet.dart rename to app/lib/widget/dialogs/custom_bottom_sheet.dart diff --git a/lib/widget/dialogs/encryption_disabled_notice.dart b/app/lib/widget/dialogs/encryption_disabled_notice.dart similarity index 100% rename from lib/widget/dialogs/encryption_disabled_notice.dart rename to app/lib/widget/dialogs/encryption_disabled_notice.dart diff --git a/lib/widget/dialogs/error_dialog.dart b/app/lib/widget/dialogs/error_dialog.dart similarity index 100% rename from lib/widget/dialogs/error_dialog.dart rename to app/lib/widget/dialogs/error_dialog.dart diff --git a/lib/widget/dialogs/file_info_dialog.dart b/app/lib/widget/dialogs/file_info_dialog.dart similarity index 100% rename from lib/widget/dialogs/file_info_dialog.dart rename to app/lib/widget/dialogs/file_info_dialog.dart diff --git a/lib/widget/dialogs/file_name_input_dialog.dart b/app/lib/widget/dialogs/file_name_input_dialog.dart similarity index 100% rename from lib/widget/dialogs/file_name_input_dialog.dart rename to app/lib/widget/dialogs/file_name_input_dialog.dart diff --git a/lib/widget/dialogs/ios_network_permission_dialog.dart b/app/lib/widget/dialogs/ios_network_permission_dialog.dart similarity index 100% rename from lib/widget/dialogs/ios_network_permission_dialog.dart rename to app/lib/widget/dialogs/ios_network_permission_dialog.dart diff --git a/lib/widget/dialogs/loading_dialog.dart b/app/lib/widget/dialogs/loading_dialog.dart similarity index 100% rename from lib/widget/dialogs/loading_dialog.dart rename to app/lib/widget/dialogs/loading_dialog.dart diff --git a/lib/widget/dialogs/message_input_dialog.dart b/app/lib/widget/dialogs/message_input_dialog.dart similarity index 100% rename from lib/widget/dialogs/message_input_dialog.dart rename to app/lib/widget/dialogs/message_input_dialog.dart diff --git a/lib/widget/dialogs/no_files_dialog.dart b/app/lib/widget/dialogs/no_files_dialog.dart similarity index 100% rename from lib/widget/dialogs/no_files_dialog.dart rename to app/lib/widget/dialogs/no_files_dialog.dart diff --git a/lib/widget/dialogs/no_permission_dialog.dart b/app/lib/widget/dialogs/no_permission_dialog.dart similarity index 100% rename from lib/widget/dialogs/no_permission_dialog.dart rename to app/lib/widget/dialogs/no_permission_dialog.dart diff --git a/lib/widget/dialogs/not_available_on_platform_dialog.dart b/app/lib/widget/dialogs/not_available_on_platform_dialog.dart similarity index 100% rename from lib/widget/dialogs/not_available_on_platform_dialog.dart rename to app/lib/widget/dialogs/not_available_on_platform_dialog.dart diff --git a/lib/widget/dialogs/qr_dialog.dart b/app/lib/widget/dialogs/qr_dialog.dart similarity index 100% rename from lib/widget/dialogs/qr_dialog.dart rename to app/lib/widget/dialogs/qr_dialog.dart diff --git a/lib/widget/dialogs/quick_actions_dialog.dart b/app/lib/widget/dialogs/quick_actions_dialog.dart similarity index 100% rename from lib/widget/dialogs/quick_actions_dialog.dart rename to app/lib/widget/dialogs/quick_actions_dialog.dart diff --git a/lib/widget/dialogs/quick_save_notice.dart b/app/lib/widget/dialogs/quick_save_notice.dart similarity index 100% rename from lib/widget/dialogs/quick_save_notice.dart rename to app/lib/widget/dialogs/quick_save_notice.dart diff --git a/lib/widget/dialogs/send_mode_help_dialog.dart b/app/lib/widget/dialogs/send_mode_help_dialog.dart similarity index 100% rename from lib/widget/dialogs/send_mode_help_dialog.dart rename to app/lib/widget/dialogs/send_mode_help_dialog.dart diff --git a/lib/widget/dialogs/text_field_tv.dart b/app/lib/widget/dialogs/text_field_tv.dart similarity index 100% rename from lib/widget/dialogs/text_field_tv.dart rename to app/lib/widget/dialogs/text_field_tv.dart diff --git a/lib/widget/file_thumbnail.dart b/app/lib/widget/file_thumbnail.dart similarity index 100% rename from lib/widget/file_thumbnail.dart rename to app/lib/widget/file_thumbnail.dart diff --git a/lib/widget/labeled_checkbox.dart b/app/lib/widget/labeled_checkbox.dart similarity index 100% rename from lib/widget/labeled_checkbox.dart rename to app/lib/widget/labeled_checkbox.dart diff --git a/lib/widget/list_tile/custom_list_tile.dart b/app/lib/widget/list_tile/custom_list_tile.dart similarity index 100% rename from lib/widget/list_tile/custom_list_tile.dart rename to app/lib/widget/list_tile/custom_list_tile.dart diff --git a/lib/widget/list_tile/device_list_tile.dart b/app/lib/widget/list_tile/device_list_tile.dart similarity index 100% rename from lib/widget/list_tile/device_list_tile.dart rename to app/lib/widget/list_tile/device_list_tile.dart diff --git a/lib/widget/list_tile/device_placeholder_list_tile.dart b/app/lib/widget/list_tile/device_placeholder_list_tile.dart similarity index 100% rename from lib/widget/list_tile/device_placeholder_list_tile.dart rename to app/lib/widget/list_tile/device_placeholder_list_tile.dart diff --git a/lib/widget/local_send_logo.dart b/app/lib/widget/local_send_logo.dart similarity index 100% rename from lib/widget/local_send_logo.dart rename to app/lib/widget/local_send_logo.dart diff --git a/lib/widget/opacity_slideshow.dart b/app/lib/widget/opacity_slideshow.dart similarity index 100% rename from lib/widget/opacity_slideshow.dart rename to app/lib/widget/opacity_slideshow.dart diff --git a/lib/widget/responsive_builder.dart b/app/lib/widget/responsive_builder.dart similarity index 100% rename from lib/widget/responsive_builder.dart rename to app/lib/widget/responsive_builder.dart diff --git a/lib/widget/responsive_list_view.dart b/app/lib/widget/responsive_list_view.dart similarity index 100% rename from lib/widget/responsive_list_view.dart rename to app/lib/widget/responsive_list_view.dart diff --git a/lib/widget/rotating_widget.dart b/app/lib/widget/rotating_widget.dart similarity index 100% rename from lib/widget/rotating_widget.dart rename to app/lib/widget/rotating_widget.dart diff --git a/lib/widget/sliver/sliver_pinned_header.dart b/app/lib/widget/sliver/sliver_pinned_header.dart similarity index 100% rename from lib/widget/sliver/sliver_pinned_header.dart rename to app/lib/widget/sliver/sliver_pinned_header.dart diff --git a/lib/widget/watcher/life_cycle_watcher.dart b/app/lib/widget/watcher/life_cycle_watcher.dart similarity index 100% rename from lib/widget/watcher/life_cycle_watcher.dart rename to app/lib/widget/watcher/life_cycle_watcher.dart diff --git a/lib/widget/watcher/shortcut_watcher.dart b/app/lib/widget/watcher/shortcut_watcher.dart similarity index 100% rename from lib/widget/watcher/shortcut_watcher.dart rename to app/lib/widget/watcher/shortcut_watcher.dart diff --git a/lib/widget/watcher/tray_watcher.dart b/app/lib/widget/watcher/tray_watcher.dart similarity index 100% rename from lib/widget/watcher/tray_watcher.dart rename to app/lib/widget/watcher/tray_watcher.dart diff --git a/lib/widget/watcher/window_watcher.dart b/app/lib/widget/watcher/window_watcher.dart similarity index 100% rename from lib/widget/watcher/window_watcher.dart rename to app/lib/widget/watcher/window_watcher.dart diff --git a/linux/.gitignore b/app/linux/.gitignore similarity index 100% rename from linux/.gitignore rename to app/linux/.gitignore diff --git a/linux/CMakeLists.txt b/app/linux/CMakeLists.txt similarity index 100% rename from linux/CMakeLists.txt rename to app/linux/CMakeLists.txt diff --git a/linux/flutter/CMakeLists.txt b/app/linux/flutter/CMakeLists.txt similarity index 100% rename from linux/flutter/CMakeLists.txt rename to app/linux/flutter/CMakeLists.txt diff --git a/linux/flutter/generated_plugin_registrant.cc b/app/linux/flutter/generated_plugin_registrant.cc similarity index 100% rename from linux/flutter/generated_plugin_registrant.cc rename to app/linux/flutter/generated_plugin_registrant.cc diff --git a/linux/flutter/generated_plugin_registrant.h b/app/linux/flutter/generated_plugin_registrant.h similarity index 100% rename from linux/flutter/generated_plugin_registrant.h rename to app/linux/flutter/generated_plugin_registrant.h diff --git a/linux/flutter/generated_plugins.cmake b/app/linux/flutter/generated_plugins.cmake similarity index 100% rename from linux/flutter/generated_plugins.cmake rename to app/linux/flutter/generated_plugins.cmake diff --git a/linux/main.cc b/app/linux/main.cc similarity index 100% rename from linux/main.cc rename to app/linux/main.cc diff --git a/linux/my_application.cc b/app/linux/my_application.cc similarity index 100% rename from linux/my_application.cc rename to app/linux/my_application.cc diff --git a/linux/my_application.h b/app/linux/my_application.h similarity index 100% rename from linux/my_application.h rename to app/linux/my_application.h diff --git a/linux/packaging/deb/make_config.yaml b/app/linux/packaging/deb/make_config.yaml similarity index 100% rename from linux/packaging/deb/make_config.yaml rename to app/linux/packaging/deb/make_config.yaml diff --git a/macos/.gitignore b/app/macos/.gitignore similarity index 100% rename from macos/.gitignore rename to app/macos/.gitignore diff --git a/macos/Flutter/Flutter-Debug.xcconfig b/app/macos/Flutter/Flutter-Debug.xcconfig similarity index 100% rename from macos/Flutter/Flutter-Debug.xcconfig rename to app/macos/Flutter/Flutter-Debug.xcconfig diff --git a/macos/Flutter/Flutter-Release.xcconfig b/app/macos/Flutter/Flutter-Release.xcconfig similarity index 100% rename from macos/Flutter/Flutter-Release.xcconfig rename to app/macos/Flutter/Flutter-Release.xcconfig diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/app/macos/Flutter/GeneratedPluginRegistrant.swift similarity index 100% rename from macos/Flutter/GeneratedPluginRegistrant.swift rename to app/macos/Flutter/GeneratedPluginRegistrant.swift diff --git a/macos/Podfile b/app/macos/Podfile similarity index 100% rename from macos/Podfile rename to app/macos/Podfile diff --git a/macos/Podfile.lock b/app/macos/Podfile.lock similarity index 100% rename from macos/Podfile.lock rename to app/macos/Podfile.lock diff --git a/macos/Runner.xcodeproj/project.pbxproj b/app/macos/Runner.xcodeproj/project.pbxproj similarity index 100% rename from macos/Runner.xcodeproj/project.pbxproj rename to app/macos/Runner.xcodeproj/project.pbxproj diff --git a/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/app/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to app/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/app/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme similarity index 100% rename from macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme rename to app/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme diff --git a/macos/Runner.xcworkspace/contents.xcworkspacedata b/app/macos/Runner.xcworkspace/contents.xcworkspacedata similarity index 100% rename from macos/Runner.xcworkspace/contents.xcworkspacedata rename to app/macos/Runner.xcworkspace/contents.xcworkspacedata diff --git a/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/app/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to app/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/macos/Runner/AppDelegate.swift b/app/macos/Runner/AppDelegate.swift similarity index 100% rename from macos/Runner/AppDelegate.swift rename to app/macos/Runner/AppDelegate.swift diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json rename to app/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/logo-1024-mac-1024.png b/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/logo-1024-mac-1024.png similarity index 100% rename from macos/Runner/Assets.xcassets/AppIcon.appiconset/logo-1024-mac-1024.png rename to app/macos/Runner/Assets.xcassets/AppIcon.appiconset/logo-1024-mac-1024.png diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/logo-1024-mac-128.png b/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/logo-1024-mac-128.png similarity index 100% rename from macos/Runner/Assets.xcassets/AppIcon.appiconset/logo-1024-mac-128.png rename to app/macos/Runner/Assets.xcassets/AppIcon.appiconset/logo-1024-mac-128.png diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/logo-1024-mac-16.png b/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/logo-1024-mac-16.png similarity index 100% rename from macos/Runner/Assets.xcassets/AppIcon.appiconset/logo-1024-mac-16.png rename to app/macos/Runner/Assets.xcassets/AppIcon.appiconset/logo-1024-mac-16.png diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/logo-1024-mac-256.png b/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/logo-1024-mac-256.png similarity index 100% rename from macos/Runner/Assets.xcassets/AppIcon.appiconset/logo-1024-mac-256.png rename to app/macos/Runner/Assets.xcassets/AppIcon.appiconset/logo-1024-mac-256.png diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/logo-1024-mac-32.png b/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/logo-1024-mac-32.png similarity index 100% rename from macos/Runner/Assets.xcassets/AppIcon.appiconset/logo-1024-mac-32.png rename to app/macos/Runner/Assets.xcassets/AppIcon.appiconset/logo-1024-mac-32.png diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/logo-1024-mac-512.png b/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/logo-1024-mac-512.png similarity index 100% rename from macos/Runner/Assets.xcassets/AppIcon.appiconset/logo-1024-mac-512.png rename to app/macos/Runner/Assets.xcassets/AppIcon.appiconset/logo-1024-mac-512.png diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/logo-1024-mac-64.png b/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/logo-1024-mac-64.png similarity index 100% rename from macos/Runner/Assets.xcassets/AppIcon.appiconset/logo-1024-mac-64.png rename to app/macos/Runner/Assets.xcassets/AppIcon.appiconset/logo-1024-mac-64.png diff --git a/macos/Runner/Base.lproj/MainMenu.xib b/app/macos/Runner/Base.lproj/MainMenu.xib similarity index 100% rename from macos/Runner/Base.lproj/MainMenu.xib rename to app/macos/Runner/Base.lproj/MainMenu.xib diff --git a/macos/Runner/Configs/AppInfo.xcconfig b/app/macos/Runner/Configs/AppInfo.xcconfig similarity index 100% rename from macos/Runner/Configs/AppInfo.xcconfig rename to app/macos/Runner/Configs/AppInfo.xcconfig diff --git a/macos/Runner/Configs/Debug.xcconfig b/app/macos/Runner/Configs/Debug.xcconfig similarity index 100% rename from macos/Runner/Configs/Debug.xcconfig rename to app/macos/Runner/Configs/Debug.xcconfig diff --git a/macos/Runner/Configs/Release.xcconfig b/app/macos/Runner/Configs/Release.xcconfig similarity index 100% rename from macos/Runner/Configs/Release.xcconfig rename to app/macos/Runner/Configs/Release.xcconfig diff --git a/macos/Runner/Configs/Warnings.xcconfig b/app/macos/Runner/Configs/Warnings.xcconfig similarity index 100% rename from macos/Runner/Configs/Warnings.xcconfig rename to app/macos/Runner/Configs/Warnings.xcconfig diff --git a/macos/Runner/DebugProfile.entitlements b/app/macos/Runner/DebugProfile.entitlements similarity index 100% rename from macos/Runner/DebugProfile.entitlements rename to app/macos/Runner/DebugProfile.entitlements diff --git a/macos/Runner/Info.plist b/app/macos/Runner/Info.plist similarity index 100% rename from macos/Runner/Info.plist rename to app/macos/Runner/Info.plist diff --git a/macos/Runner/MainFlutterWindow.swift b/app/macos/Runner/MainFlutterWindow.swift similarity index 100% rename from macos/Runner/MainFlutterWindow.swift rename to app/macos/Runner/MainFlutterWindow.swift diff --git a/macos/Runner/Release.entitlements b/app/macos/Runner/Release.entitlements similarity index 100% rename from macos/Runner/Release.entitlements rename to app/macos/Runner/Release.entitlements diff --git a/pubspec.lock b/app/pubspec.lock similarity index 100% rename from pubspec.lock rename to app/pubspec.lock diff --git a/pubspec.yaml b/app/pubspec.yaml similarity index 100% rename from pubspec.yaml rename to app/pubspec.yaml diff --git a/test/unit/i18n_test.dart b/app/test/unit/i18n_test.dart similarity index 100% rename from test/unit/i18n_test.dart rename to app/test/unit/i18n_test.dart diff --git a/test/unit/model/dto/prepare_upload_request_dto_test.dart b/app/test/unit/model/dto/prepare_upload_request_dto_test.dart similarity index 100% rename from test/unit/model/dto/prepare_upload_request_dto_test.dart rename to app/test/unit/model/dto/prepare_upload_request_dto_test.dart diff --git a/test/unit/provider/network_info_provider_test.dart b/app/test/unit/provider/network_info_provider_test.dart similarity index 100% rename from test/unit/provider/network_info_provider_test.dart rename to app/test/unit/provider/network_info_provider_test.dart diff --git a/test/unit/util/api_route_builder_test.dart b/app/test/unit/util/api_route_builder_test.dart similarity index 100% rename from test/unit/util/api_route_builder_test.dart rename to app/test/unit/util/api_route_builder_test.dart diff --git a/test/unit/util/security_helper_test.dart b/app/test/unit/util/security_helper_test.dart similarity index 100% rename from test/unit/util/security_helper_test.dart rename to app/test/unit/util/security_helper_test.dart diff --git a/test/unit/util/task_runner_test.dart b/app/test/unit/util/task_runner_test.dart similarity index 100% rename from test/unit/util/task_runner_test.dart rename to app/test/unit/util/task_runner_test.dart diff --git a/web/favicon.png b/app/web/favicon.png similarity index 100% rename from web/favicon.png rename to app/web/favicon.png diff --git a/web/icons/Icon-192.png b/app/web/icons/Icon-192.png similarity index 100% rename from web/icons/Icon-192.png rename to app/web/icons/Icon-192.png diff --git a/web/icons/Icon-512.png b/app/web/icons/Icon-512.png similarity index 100% rename from web/icons/Icon-512.png rename to app/web/icons/Icon-512.png diff --git a/web/icons/Icon-maskable-192.png b/app/web/icons/Icon-maskable-192.png similarity index 100% rename from web/icons/Icon-maskable-192.png rename to app/web/icons/Icon-maskable-192.png diff --git a/web/icons/Icon-maskable-512.png b/app/web/icons/Icon-maskable-512.png similarity index 100% rename from web/icons/Icon-maskable-512.png rename to app/web/icons/Icon-maskable-512.png diff --git a/web/index.html b/app/web/index.html similarity index 100% rename from web/index.html rename to app/web/index.html diff --git a/web/manifest.json b/app/web/manifest.json similarity index 100% rename from web/manifest.json rename to app/web/manifest.json diff --git a/windows/.gitignore b/app/windows/.gitignore similarity index 100% rename from windows/.gitignore rename to app/windows/.gitignore diff --git a/windows/CMakeLists.txt b/app/windows/CMakeLists.txt similarity index 100% rename from windows/CMakeLists.txt rename to app/windows/CMakeLists.txt diff --git a/windows/flutter/CMakeLists.txt b/app/windows/flutter/CMakeLists.txt similarity index 100% rename from windows/flutter/CMakeLists.txt rename to app/windows/flutter/CMakeLists.txt diff --git a/windows/flutter/generated_plugin_registrant.cc b/app/windows/flutter/generated_plugin_registrant.cc similarity index 100% rename from windows/flutter/generated_plugin_registrant.cc rename to app/windows/flutter/generated_plugin_registrant.cc diff --git a/windows/flutter/generated_plugin_registrant.h b/app/windows/flutter/generated_plugin_registrant.h similarity index 100% rename from windows/flutter/generated_plugin_registrant.h rename to app/windows/flutter/generated_plugin_registrant.h diff --git a/windows/flutter/generated_plugins.cmake b/app/windows/flutter/generated_plugins.cmake similarity index 100% rename from windows/flutter/generated_plugins.cmake rename to app/windows/flutter/generated_plugins.cmake diff --git a/windows/runner/CMakeLists.txt b/app/windows/runner/CMakeLists.txt similarity index 100% rename from windows/runner/CMakeLists.txt rename to app/windows/runner/CMakeLists.txt diff --git a/windows/runner/Runner.rc b/app/windows/runner/Runner.rc similarity index 100% rename from windows/runner/Runner.rc rename to app/windows/runner/Runner.rc diff --git a/windows/runner/flutter_window.cpp b/app/windows/runner/flutter_window.cpp similarity index 100% rename from windows/runner/flutter_window.cpp rename to app/windows/runner/flutter_window.cpp diff --git a/windows/runner/flutter_window.h b/app/windows/runner/flutter_window.h similarity index 100% rename from windows/runner/flutter_window.h rename to app/windows/runner/flutter_window.h diff --git a/windows/runner/main.cpp b/app/windows/runner/main.cpp similarity index 100% rename from windows/runner/main.cpp rename to app/windows/runner/main.cpp diff --git a/windows/runner/resource.h b/app/windows/runner/resource.h similarity index 100% rename from windows/runner/resource.h rename to app/windows/runner/resource.h diff --git a/windows/runner/resources/app_icon.ico b/app/windows/runner/resources/app_icon.ico similarity index 100% rename from windows/runner/resources/app_icon.ico rename to app/windows/runner/resources/app_icon.ico diff --git a/windows/runner/runner.exe.manifest b/app/windows/runner/runner.exe.manifest similarity index 100% rename from windows/runner/runner.exe.manifest rename to app/windows/runner/runner.exe.manifest diff --git a/windows/runner/utils.cpp b/app/windows/runner/utils.cpp similarity index 100% rename from windows/runner/utils.cpp rename to app/windows/runner/utils.cpp diff --git a/windows/runner/utils.h b/app/windows/runner/utils.h similarity index 100% rename from windows/runner/utils.h rename to app/windows/runner/utils.h diff --git a/windows/runner/win32_window.cpp b/app/windows/runner/win32_window.cpp similarity index 100% rename from windows/runner/win32_window.cpp rename to app/windows/runner/win32_window.cpp diff --git a/windows/runner/win32_window.h b/app/windows/runner/win32_window.h similarity index 100% rename from windows/runner/win32_window.h rename to app/windows/runner/win32_window.h diff --git a/cli/.gitignore b/cli/.gitignore new file mode 100644 index 00000000..3a857904 --- /dev/null +++ b/cli/.gitignore @@ -0,0 +1,3 @@ +# https://dart.dev/guides/libraries/private-files +# Created by `dart pub` +.dart_tool/ diff --git a/cli/README.md b/cli/README.md new file mode 100644 index 00000000..2c8a7b6a --- /dev/null +++ b/cli/README.md @@ -0,0 +1,3 @@ +# cli + +The LocalSend CLI. diff --git a/cli/analysis_options.yaml b/cli/analysis_options.yaml new file mode 100644 index 00000000..45ca19ea --- /dev/null +++ b/cli/analysis_options.yaml @@ -0,0 +1,10 @@ +include: package:lints/recommended.yaml + +linter: + rules: + prefer_single_quotes: true + sort_pub_dependencies: true + always_use_package_imports: true + directives_ordering: true + unawaited_futures: true + discarded_futures: true diff --git a/cli/bin/cli.dart b/cli/bin/cli.dart new file mode 100644 index 00000000..c684c132 --- /dev/null +++ b/cli/bin/cli.dart @@ -0,0 +1,5 @@ +import 'package:cli/main.dart' as m; + +void main(List arguments) { + m.main(arguments); +} diff --git a/cli/lib/main.dart b/cli/lib/main.dart new file mode 100644 index 00000000..d721de6e --- /dev/null +++ b/cli/lib/main.dart @@ -0,0 +1,3 @@ +void main(List arguments) { + print('Hello world!'); +} diff --git a/cli/pubspec.lock b/cli/pubspec.lock new file mode 100644 index 00000000..a9fb0116 --- /dev/null +++ b/cli/pubspec.lock @@ -0,0 +1,380 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + _fe_analyzer_shared: + dependency: transitive + description: + name: _fe_analyzer_shared + sha256: eb376e9acf6938204f90eb3b1f00b578640d3188b4c8a8ec054f9f479af8d051 + url: "https://pub.dev" + source: hosted + version: "64.0.0" + analyzer: + dependency: transitive + description: + name: analyzer + sha256: "69f54f967773f6c26c7dcb13e93d7ccee8b17a641689da39e878d5cf13b06893" + url: "https://pub.dev" + source: hosted + version: "6.2.0" + args: + dependency: transitive + description: + name: args + sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596 + url: "https://pub.dev" + source: hosted + version: "2.4.2" + async: + dependency: transitive + description: + name: async + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + url: "https://pub.dev" + source: hosted + version: "2.11.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + collection: + dependency: transitive + description: + name: collection + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a + url: "https://pub.dev" + source: hosted + version: "1.18.0" + common: + dependency: "direct main" + description: + path: "../common" + relative: true + source: path + version: "1.0.0" + convert: + dependency: transitive + description: + name: convert + sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" + url: "https://pub.dev" + source: hosted + version: "3.1.1" + coverage: + dependency: transitive + description: + name: coverage + sha256: "2fb815080e44a09b85e0f2ca8a820b15053982b2e714b59267719e8a9ff17097" + url: "https://pub.dev" + source: hosted + version: "1.6.3" + crypto: + dependency: transitive + description: + name: crypto + sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab + url: "https://pub.dev" + source: hosted + version: "3.0.3" + file: + dependency: transitive + description: + name: file + sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c" + url: "https://pub.dev" + source: hosted + version: "7.0.0" + frontend_server_client: + dependency: transitive + description: + name: frontend_server_client + sha256: "408e3ca148b31c20282ad6f37ebfa6f4bdc8fede5b74bc2f08d9d92b55db3612" + url: "https://pub.dev" + source: hosted + version: "3.2.0" + glob: + dependency: transitive + description: + name: glob + sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + http_multi_server: + dependency: transitive + description: + name: http_multi_server + sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b" + url: "https://pub.dev" + source: hosted + version: "3.2.1" + http_parser: + dependency: transitive + description: + name: http_parser + sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" + url: "https://pub.dev" + source: hosted + version: "4.0.2" + io: + dependency: transitive + description: + name: io + sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e" + url: "https://pub.dev" + source: hosted + version: "1.0.4" + js: + dependency: transitive + description: + name: js + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 + url: "https://pub.dev" + source: hosted + version: "0.6.7" + lints: + dependency: "direct dev" + description: + name: lints + sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + logging: + dependency: transitive + description: + name: logging + sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340" + url: "https://pub.dev" + source: hosted + version: "1.2.0" + matcher: + dependency: transitive + description: + name: matcher + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" + url: "https://pub.dev" + source: hosted + version: "0.12.16" + meta: + dependency: transitive + description: + name: meta + sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e + url: "https://pub.dev" + source: hosted + version: "1.10.0" + mime: + dependency: transitive + description: + name: mime + sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e + url: "https://pub.dev" + source: hosted + version: "1.0.4" + node_preamble: + dependency: transitive + description: + name: node_preamble + sha256: "6e7eac89047ab8a8d26cf16127b5ed26de65209847630400f9aefd7cd5c730db" + url: "https://pub.dev" + source: hosted + version: "2.0.2" + package_config: + dependency: transitive + description: + name: package_config + sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd" + url: "https://pub.dev" + source: hosted + version: "2.1.0" + path: + dependency: transitive + description: + name: path + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + url: "https://pub.dev" + source: hosted + version: "1.8.3" + pool: + dependency: transitive + description: + name: pool + sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a" + url: "https://pub.dev" + source: hosted + version: "1.5.1" + pub_semver: + dependency: transitive + description: + name: pub_semver + sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + shelf: + dependency: transitive + description: + name: shelf + sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4 + url: "https://pub.dev" + source: hosted + version: "1.4.1" + shelf_packages_handler: + dependency: transitive + description: + name: shelf_packages_handler + sha256: "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e" + url: "https://pub.dev" + source: hosted + version: "3.0.2" + shelf_static: + dependency: transitive + description: + name: shelf_static + sha256: a41d3f53c4adf0f57480578c1d61d90342cd617de7fc8077b1304643c2d85c1e + url: "https://pub.dev" + source: hosted + version: "1.1.2" + shelf_web_socket: + dependency: transitive + description: + name: shelf_web_socket + sha256: "9ca081be41c60190ebcb4766b2486a7d50261db7bd0f5d9615f2d653637a84c1" + url: "https://pub.dev" + source: hosted + version: "1.0.4" + source_map_stack_trace: + dependency: transitive + description: + name: source_map_stack_trace + sha256: "84cf769ad83aa6bb61e0aa5a18e53aea683395f196a6f39c4c881fb90ed4f7ae" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + source_maps: + dependency: transitive + description: + name: source_maps + sha256: "708b3f6b97248e5781f493b765c3337db11c5d2c81c3094f10904bfa8004c703" + url: "https://pub.dev" + source: hosted + version: "0.10.12" + source_span: + dependency: transitive + description: + name: source_span + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + url: "https://pub.dev" + source: hosted + version: "1.10.0" + stack_trace: + dependency: transitive + description: + name: stack_trace + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" + url: "https://pub.dev" + source: hosted + version: "1.11.1" + stream_channel: + dependency: transitive + description: + name: stream_channel + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + url: "https://pub.dev" + source: hosted + version: "2.1.2" + string_scanner: + dependency: transitive + description: + name: string_scanner + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" + source: hosted + version: "1.2.0" + term_glyph: + dependency: transitive + description: + name: term_glyph + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" + source: hosted + version: "1.2.1" + test: + dependency: "direct dev" + description: + name: test + sha256: "9b0dd8e36af4a5b1569029949d50a52cb2a2a2fdaa20cebb96e6603b9ae241f9" + url: "https://pub.dev" + source: hosted + version: "1.24.6" + test_api: + dependency: transitive + description: + name: test_api + sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" + url: "https://pub.dev" + source: hosted + version: "0.6.1" + test_core: + dependency: transitive + description: + name: test_core + sha256: "4bef837e56375537055fdbbbf6dd458b1859881f4c7e6da936158f77d61ab265" + url: "https://pub.dev" + source: hosted + version: "0.5.6" + typed_data: + dependency: transitive + description: + name: typed_data + sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c + url: "https://pub.dev" + source: hosted + version: "1.3.2" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: c538be99af830f478718b51630ec1b6bee5e74e52c8a802d328d9e71d35d2583 + url: "https://pub.dev" + source: hosted + version: "11.10.0" + watcher: + dependency: transitive + description: + name: watcher + sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + web_socket_channel: + dependency: transitive + description: + name: web_socket_channel + sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b + url: "https://pub.dev" + source: hosted + version: "2.4.0" + webkit_inspection_protocol: + dependency: transitive + description: + name: webkit_inspection_protocol + sha256: "87d3f2333bb240704cd3f1c6b5b7acd8a10e7f0bc28c28dcf14e782014f4a572" + url: "https://pub.dev" + source: hosted + version: "1.2.1" + yaml: + dependency: transitive + description: + name: yaml + sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" + url: "https://pub.dev" + source: hosted + version: "3.1.2" +sdks: + dart: ">=3.1.1 <4.0.0" diff --git a/cli/pubspec.yaml b/cli/pubspec.yaml new file mode 100644 index 00000000..e2b5c949 --- /dev/null +++ b/cli/pubspec.yaml @@ -0,0 +1,15 @@ +name: cli +description: A sample command-line application. +version: 1.0.0 +publish_to: "none" + +environment: + sdk: ^3.1.1 + +dependencies: + common: + path: ../common + +dev_dependencies: + lints: ^2.0.0 + test: ^1.21.0 diff --git a/common/.gitignore b/common/.gitignore new file mode 100644 index 00000000..3cceda55 --- /dev/null +++ b/common/.gitignore @@ -0,0 +1,7 @@ +# https://dart.dev/guides/libraries/private-files +# Created by `dart pub` +.dart_tool/ + +# Avoid committing pubspec.lock for library packages; see +# https://dart.dev/guides/libraries/private-files#pubspeclock. +pubspec.lock diff --git a/common/README.md b/common/README.md new file mode 100644 index 00000000..d64c28d7 --- /dev/null +++ b/common/README.md @@ -0,0 +1,3 @@ +# common + +Common code used by the app and by the cli. diff --git a/common/analysis_options.yaml b/common/analysis_options.yaml new file mode 100644 index 00000000..45ca19ea --- /dev/null +++ b/common/analysis_options.yaml @@ -0,0 +1,10 @@ +include: package:lints/recommended.yaml + +linter: + rules: + prefer_single_quotes: true + sort_pub_dependencies: true + always_use_package_imports: true + directives_ordering: true + unawaited_futures: true + discarded_futures: true diff --git a/common/lib/common.dart b/common/lib/common.dart new file mode 100644 index 00000000..8f479357 --- /dev/null +++ b/common/lib/common.dart @@ -0,0 +1 @@ +export 'src/common_base.dart'; diff --git a/common/lib/src/common_base.dart b/common/lib/src/common_base.dart new file mode 100644 index 00000000..e8a6f159 --- /dev/null +++ b/common/lib/src/common_base.dart @@ -0,0 +1,6 @@ +// TODO: Put public facing types in this file. + +/// Checks if you are awesome. Spoiler: you are. +class Awesome { + bool get isAwesome => true; +} diff --git a/common/pubspec.yaml b/common/pubspec.yaml new file mode 100644 index 00000000..6eba7a5e --- /dev/null +++ b/common/pubspec.yaml @@ -0,0 +1,15 @@ +name: common +description: A starting point for Dart libraries or applications. +version: 1.0.0 +publish_to: "none" + +environment: + sdk: ^3.1.1 + +# Add regular dependencies here. +dependencies: + # path: ^1.8.0 + +dev_dependencies: + lints: ^2.0.0 + test: ^1.21.0