From d7645e4bc06d4e09c6e4852c09f9b86f70bf1e9b Mon Sep 17 00:00:00 2001 From: rhenwinch Date: Mon, 22 Jan 2024 16:36:57 +0800 Subject: [PATCH] Mobile app modularization complete. Former-commit-id: 1dad10d1cf51851a706de6bb6a2ed8c2e6e4d275 --- .github/ISSUE_TEMPLATE/config.yml | 1 + .github/ISSUE_TEMPLATE/report_issue.yml | 98 ++ .github/ISSUE_TEMPLATE/request_feature.yml | 24 + .github/workflows/Build.yml | 75 ++ .gitignore | 2 +- .idea/androidTestResultsUserPreferences.xml | 36 - .idea/deploymentTargetDropDown.xml | 21 +- .idea/discord.xml | 7 - .idea/gradle.xml | 28 +- .idea/inspectionProfiles/Project_Default.xml | 1 - .idea/migrations.xml | 10 + app/build.gradle.kts | 152 +-- app/proguard-rules.pro | 19 +- app/release/app-release.apk.REMOVED.git-id | 1 - app/release/output-metadata.json | 20 - .../1.json | 134 --- .../service/AppUpdaterServiceTest.kt | 40 - app/src/main/AndroidManifest.xml | 76 +- app/src/main/ic_launcher-playstore.png | Bin 8742 -> 0 bytes .../java/com/flixclusive/common/Constants.kt | 13 - .../java/com/flixclusive/common/UiText.kt | 30 - .../data/api/GithubConfigService.kt | 21 - .../flixclusive/data/api/TMDBApiService.kt | 99 -- .../data/config/ConfigurationProviderImpl.kt | 143 --- .../flixclusive/data/database/AppDatabase.kt | 129 --- .../database/converter/FilmDataConverter.kt | 21 - .../converter/WatchHistoryItemConverter.kt | 43 - .../flixclusive/data/database/dao/UserDao.kt | 29 - .../data/database/dao/WatchHistoryDao.kt | 33 - .../data/database/dao/WatchlistDao.kt | 33 - .../flixclusive/data/dto/tmdb/TMDBMovieDto.kt | 72 -- .../data/dto/tmdb/TMDBTvShowDto.kt | 85 -- .../dto/tmdb/common/BelongsToCollection.kt | 12 - .../data/dto/tmdb/common/ImageResponseDto.kt | 11 - .../data/dto/tmdb/common/ProductionCompany.kt | 13 - .../data/dto/tmdb/common/ProductionCountry.kt | 11 - .../data/dto/tmdb/common/SpokenLanguage.kt | 14 - .../data/dto/tmdb/common/TMDBGenresDto.kt | 10 - .../data/dto/tmdb/common/TMDBImageDto.kt | 17 - .../flixclusive/data/dto/tmdb/tv/Creator.kt | 13 - .../data/dto/tmdb/tv/CrewMember.kt | 17 - .../data/dto/tmdb/tv/EpisodeAir.kt | 19 - .../flixclusive/data/dto/tmdb/tv/GuestStar.kt | 17 - .../flixclusive/data/dto/tmdb/tv/Network.kt | 13 - .../data/dto/tmdb/tv/TMDBEpisodeDto.kt | 34 - .../data/dto/tmdb/tv/TMDBSeasonDto.kt | 25 - .../data/dto/tmdb/tv/TvShowSeasonsPreview.kt | 26 - .../preferences/AppSettingsManagerImpl.kt | 28 - .../repository/ProvidersRepositoryImpl.kt | 130 --- .../repository/SourceLinksRepositoryImpl.kt | 150 --- .../data/repository/TMDBRepositoryImpl.kt | 293 ------ .../data/repository/UserRepositoryImpl.kt | 37 - .../repository/WatchHistoryRepositoryImpl.kt | 41 - .../repository/WatchlistRepositoryImpl.kt | 40 - .../data/usecase/FilmProviderUseCaseImpl.kt | 31 - .../usecase/HomeItemsProviderUseCaseImpl.kt | 214 ---- .../data/usecase/SeasonProviderUseCaseImpl.kt | 22 - .../usecase/SourceLinksProviderUseCaseImpl.kt | 293 ------ .../WatchHistoryItemManagerUseCaseImpl.kt | 141 --- .../WatchlistItemManagerUseCaseImpl.kt | 25 - .../data/utils/ExceptionExtensions.kt | 44 - .../main/java/com/flixclusive/di/AppModule.kt | 106 -- .../com/flixclusive/di/AppSettingsModule.kt | 57 -- .../com/flixclusive/di/CoroutinesModule.kt | 41 - .../java/com/flixclusive/di/DatabaseModule.kt | 23 - .../java/com/flixclusive/di/NetworkModule.kt | 125 --- .../di/SourceLinksProviderModule.kt | 29 - .../java/com/flixclusive/di/UseCaseModule.kt | 65 -- .../PaginatedSearchItemsDeserializer.kt | 50 - .../com/flixclusive/domain/common/Resource.kt | 23 - .../domain/common/SearchItemDeserializer.kt | 70 -- .../domain/config/ConfigurationProvider.kt | 28 - .../flixclusive/domain/model/SourceData.kt | 12 - .../domain/model/SourceDataState.kt | 58 -- .../domain/model/config/AppConfig.kt | 12 - .../domain/model/config/CategoryItem.kt | 10 - .../domain/model/config/HomeCategoryItem.kt | 34 - .../domain/model/config/ProviderStatus.kt | 6 - .../domain/model/config/SearchCategoryItem.kt | 34 - .../flixclusive/domain/model/entities/User.kt | 18 - .../entities/UserWithWatchHistoryList.kt | 13 - .../model/entities/UserWithWatchlist.kt | 13 - .../domain/model/entities/WatchHistoryItem.kt | 44 - .../domain/model/entities/WatchlistItem.kt | 21 - .../model/provider/SourceProviderDetails.kt | 9 - .../com/flixclusive/domain/model/tmdb/Film.kt | 20 - .../flixclusive/domain/model/tmdb/FilmImpl.kt | 38 - .../flixclusive/domain/model/tmdb/FilmType.kt | 41 - .../flixclusive/domain/model/tmdb/Genre.kt | 11 - .../flixclusive/domain/model/tmdb/Movie.kt | 48 - .../domain/model/tmdb/Recommendation.kt | 34 - .../flixclusive/domain/model/tmdb/Season.kt | 13 - .../domain/model/tmdb/TMDBCollection.kt | 14 - .../domain/model/tmdb/TMDBEpisode.kt | 27 - .../domain/model/tmdb/TMDBPageResponse.kt | 12 - .../domain/model/tmdb/TMDBSearchItem.kt | 113 --- .../flixclusive/domain/model/tmdb/TvShow.kt | 70 -- .../domain/model/tmdb/WatchProvider.kt | 111 --- .../domain/preferences/AppSettings.kt | 138 --- .../domain/preferences/AppSettingsManager.kt | 12 - .../preferences/AppSettingsSerialiazer.kt | 31 - .../preferences/ProviderConfiguration.kt | 9 - .../domain/repository/ProvidersRepository.kt | 19 - .../repository/SourceLinksRepository.kt | 24 - .../domain/repository/TMDBRepository.kt | 74 -- .../domain/repository/UserRepository.kt | 16 - .../repository/WatchHistoryRepository.kt | 18 - .../domain/repository/WatchlistRepository.kt | 18 - .../domain/usecase/FilmProviderUseCase.kt | 14 - .../usecase/HomeItemsProviderUseCase.kt | 24 - .../domain/usecase/SeasonProviderUseCase.kt | 7 - .../usecase/SourceLinksProviderUseCase.kt | 31 - .../usecase/WatchHistoryItemManagerUseCase.kt | 19 - .../usecase/WatchlistItemManagerUseCase.kt | 8 - .../domain/utils/FilmProviderUtils.kt | 19 - .../com/flixclusive/domain/utils/TMDBUtils.kt | 63 -- .../domain/utils/WatchHistoryUtils.kt | 122 --- .../common/FadeInAndOutScreenTransition.kt | 17 - .../flixclusive/presentation/common/Font.kt | 16 - .../presentation/common/PagingState.kt | 10 - .../common/composables/SourceDataDialog.kt | 88 -- .../common/player/FlixclusivePlayer.kt | 574 ----------- .../common/player/utils/PlayerBuilderUtils.kt | 110 --- .../common/player/utils/SubtitleUtils.kt | 42 - .../config/AppConfigurationUiState.kt | 15 - .../config/AppConfigurationViewModel.kt | 76 -- .../viewmodels/film/FilmScreenNavArgs.kt | 7 - .../common/viewmodels/film/FilmUiState.kt | 11 - .../home/HomeContentScreenViewModel.kt | 246 ----- .../common/viewmodels/home/HomeUiState.kt | 11 - .../viewmodels/player/BasePlayerViewModel.kt | 400 -------- .../viewmodels/player/PlayerScreenNavArgs.kt | 9 - .../viewmodels/see_all/SeeAllScreenNavArgs.kt | 7 - .../mobile/common/MobileRootNavGraph.kt | 8 - .../common/composables/film/FilmButtons.kt | 131 --- .../common/composables/film/FilmHeader.kt | 196 ---- .../transitions/CommonScreenTransition.kt | 19 - .../presentation/mobile/main/MainActivity.kt | 140 --- .../presentation/mobile/main/MainApp.kt | 221 ----- .../main/MainMobileActivityViewModel.kt | 30 - .../mobile/main/MainMobileSharedViewModel.kt | 239 ----- .../mobile/main/MobileAppDestination.kt | 41 - .../mobile/main/MobileAppUiState.kt | 15 - .../utils/OnDoubleNavBarItemClickObserver.kt | 29 - .../utils/OnSeeMoreDetailsClickObserver.kt | 31 - .../screens/crash/CrashMobileActivity.kt | 210 ---- .../mobile/screens/home/HomeMobileScreen.kt | 84 -- .../screens/home/HomeScreenTransition.kt | 31 - .../screens/home/film/HomeFilmScreen.kt | 45 - .../screens/home/genre/HomeGenreScreen.kt | 37 - .../screens/home/see_all/HomeSeeAllScreen.kt | 35 - .../screens/player/PlayerScreenTransition.kt | 14 - .../mobile/screens/player/PlayerViewModel.kt | 209 ---- .../screens/player/controls/BottomControls.kt | 398 -------- .../PlayerAudioAndSubtitleDialog.kt | 223 ----- .../dialogs/servers/PlayerServersDialog.kt | 124 --- .../screens/player/utils/PlayerPiPUtils.kt | 97 -- .../screens/player/utils/PlayerUiUtils.kt | 97 -- .../preferences/PreferencesMobileScreen.kt | 83 -- .../PreferencesMobileScreenTransition.kt | 30 - .../preferences/about/AboutMobileScreen.kt | 237 ----- .../preferences/content/PreferencesItems.kt | 49 - .../content/PreferencesRootMobileScreen.kt | 240 ----- .../film/PreferencesFilmMobileScreen.kt | 45 - .../genre/PreferencesGenreMobileScreen.kt | 37 - .../watchlist/WatchlistMobileScreen.kt | 99 -- .../screens/search/SearchMobileScreen.kt | 92 -- .../search/SearchMobileScreenTransition.kt | 34 - .../content/SearchInitialContentUiState.kt | 6 - .../content/SearchInitialContentViewModel.kt | 180 ---- .../screens/search/film/SearchFilmScreen.kt | 45 - .../screens/search/genre/SearchGenreScreen.kt | 37 - .../search/see_all/SearchSeeAllScreen.kt | 35 - .../splash_screen/SplashMobileActivity.kt | 58 -- .../splash_screen/dialog/ErrorMobileDialog.kt | 102 -- .../presentation/mobile/theme/MobileTheme.kt | 117 --- .../mobile/theme/MobileTypography.kt | 116 --- .../mobile/utils/ComposeMobileUtils.kt | 26 - .../flixclusive/presentation/theme/Color.kt | 90 -- .../tv/common/DefaultTvNavArgs.kt | 5 - .../presentation/tv/common/TvRootNavGraph.kt | 8 - .../presentation/tv/common/UserIdleTimer.kt | 5 - .../tv/common/composables/FilmCardTv.kt | 64 -- .../tv/common/composables/FilmTvOverview.kt | 134 --- .../presentation/tv/main/MainApp.kt | 134 --- .../tv/main/MainTvSharedViewModel.kt | 20 - .../presentation/tv/main/NavDrawer.kt | 229 ----- .../presentation/tv/main/TVMainActivity.kt | 36 - .../presentation/tv/main/TvAppDestination.kt | 41 - .../presentation/tv/main/TvAppUiState.kt | 5 - .../tv/screens/film/FilmTvButtons.kt | 334 ------- .../tv/screens/film/FilmTvEpisodesScreen.kt | 523 ---------- .../tv/screens/film/FilmTvScreen.kt | 376 ------- .../tv/screens/film/FilmTvScreenRow.kt | 180 ---- .../tv/screens/home/HomeTvFilmsRow.kt | 141 --- .../tv/screens/home/HomeTvScreen.kt | 147 --- .../FilmEmphasisBackground.kt | 97 -- .../ImmersiveHomeBackground.kt | 99 -- .../tv/screens/player/FilmTvPlayerScreen.kt | 316 ------ .../tv/screens/player/TvPlayerViewModel.kt | 81 -- .../controls/SlidingAudioAndDisplaySheet.kt | 325 ------- .../controls/SlidingPlayerSettingsSheet.kt | 327 ------- .../player/controls/TvBottomControls.kt | 327 ------- .../player/controls/TvPlaybackControls.kt | 229 ----- .../screens/player/controls/TvTopControls.kt | 233 ----- .../controls/settings/SpeedometerScreen.kt | 140 --- .../tv/screens/search/SearchCustomKeyboard.kt | 249 ----- .../tv/screens/search/SearchTvScreen.kt | 150 --- .../screens/search/SearchTvScreenViewModel.kt | 99 -- .../screens/splash_screen/SplashTvScreen.kt | 149 --- .../splash_screen/dialog/ErrorTvDialog.kt | 110 --- .../splash_screen/dialog/UpdateTvDialog.kt | 147 --- .../tv/screens/watchlist/WatchlistTvScreen.kt | 15 - .../presentation/tv/theme/TvTheme.kt | 142 --- .../presentation/tv/theme/TvTypography.kt | 116 --- .../presentation/tv/utils/ComposeTvUtils.kt | 168 ---- .../presentation/tv/utils/ModifierTvUtils.kt | 348 ------- .../presentation/tv/utils/PlayerTvUtils.kt | 31 - .../presentation/utils/ComposeUtils.kt | 90 -- .../presentation/utils/FormatterUtils.kt | 181 ---- .../presentation/utils/IconResource.kt | 33 - .../presentation/utils/ImageRequestCreator.kt | 38 - .../presentation/utils/LazyListUtils.kt | 77 -- .../presentation/utils/ModifierUtils.kt | 63 -- .../network/NetworkConnectivityObserver.kt | 73 -- .../flixclusive/service/utils/IntentUtils.kt | 22 - .../java/com/flixclusive/utils/LoggerUtils.kt | 18 - .../kotlin/com/flixclusive/AppNavigation.kt | 101 ++ .../com/flixclusive/FlixclusiveApplication.kt | 25 +- .../com/flixclusive/crash/CrashActivity.kt | 49 + .../flixclusive/crash/CrashReportSender.kt | 54 ++ .../flixclusive}/crash/GlobalCrashHandler.kt | 14 +- .../crash/di/CrashReportSenderModule.kt | 17 + .../com/flixclusive/mobile/MobileActivity.kt | 105 ++ .../com/flixclusive/mobile/MobileApp.kt | 238 +++++ .../flixclusive/mobile/MobileAppNavigator.kt | 128 +++ .../flixclusive}/mobile/MobileAppUiState.kt | 8 +- .../flixclusive/mobile/MobileAppViewModel.kt | 456 +++++---- .../mobile/component/BottomBar.kt} | 98 +- .../mobile/component}/FilmCoverPreview.kt | 4 +- .../component/FilmPreviewBottomSheet.kt} | 67 +- .../com/flixclusive/util/NavigationHelper.kt | 183 ++++ .../com/flixclusive/util/TvModeHelper.kt | 11 + app/src/main/res/drawable/bookmark.xml | 2 +- app/src/main/res/drawable/home.xml | 9 - app/src/main/res/drawable/home_outlined.xml | 13 - app/src/main/res/drawable/information.xml | 6 +- .../main/res/drawable/round_subtitles_24.xml | 5 - app/src/main/res/drawable/time.xml | 4 +- app/src/main/res/values-v31/themes.xml | 53 +- app/src/main/res/values/strings.xml | 229 ----- app/src/main/res/values/themes.xml | 42 +- app/src/main/res/xml/provider_paths.xml | 22 +- .../crash/CrashReportSenderTest.kt | 55 ++ build-logic/convention/build.gradle.kts | 12 + .../AndroidApplicationConventionPlugin.kt | 1 + .../kotlin/DestinationsConventionPlugin.kt | 39 +- .../main/kotlin/ExtractorConventionPlugin.kt | 20 + .../main/kotlin/FeatureConventionPlugin.kt | 1 - .../main/kotlin/ProviderConventionPlugin.kt | 20 + .../main/kotlin/TestingConventionPlugin.kt | 35 + build.gradle.kts | 1 + core/database/build.gradle.kts | 2 +- .../2.json | 0 .../flixclusive/core/database/AppDatabase.kt | 2 +- .../core/database/dao/WatchHistoryDao.kt | 2 +- .../core/database/di/DatabaseModule.kt | 2 +- .../core/database/util/FilmDataConverter.kt | 5 +- .../util/WatchHistoryItemConverter.kt | 8 +- core/datastore/build.gradle.kts | 2 +- .../core/datastore/AppSettingsManager.kt | 6 +- .../core/datastore/di/AppSettingsModule.kt | 20 +- .../core/datastore/di/DataStoreModule.kt | 7 - core/network/build.gradle.kts | 3 +- .../core/network/di/OkHttpModule.kt | 2 +- .../core/network/di/RetrofitModule.kt | 13 +- .../FlixclusiveConfigurationService.kt | 9 +- .../core/network/retrofit/TMDBApiService.kt | 8 +- .../core/network/retrofit/dto/TMDBMovieDto.kt | 10 +- .../network/retrofit/dto/TMDBTvShowDto.kt | 12 +- .../retrofit/dto/common/TMDBGenresDto.kt | 10 - .../network/retrofit/dto/tv/TMDBEpisodeDto.kt | 2 +- .../network/retrofit/dto/tv/TMDBSeasonDto.kt | 6 +- .../retrofit/dto/tv/TvShowSeasonsPreview.kt | 8 +- .../util/PaginatedSearchItemsDeserializer.kt | 9 +- .../network/util/SearchItemDeserializer.kt | 31 +- core/theme/build.gradle.kts | 4 +- .../com/flixclusive/core/theme/Color.kt | 1 + core/ui/{ => common}/.gitignore | 0 core/ui/common/build.gradle.kts | 24 + .../flixclusive/core/ui/common}/FilmCover.kt | 10 +- .../GradientCircularProgressIndicator.kt | 8 +- .../core/ui/common/TopBarWithBackButton.kt | 11 +- .../navigation/CommonScreenNavigator.kt | 7 + .../core/ui/common/navigation/GoBackAction.kt | 5 + .../navigation/StartHomeScreenAction.kt | 5 + .../common/navigation/UpdateScreenNavArgs.kt | 10 + .../core/ui/common/util/CoilBuilderHelper.kt | 37 + .../core/ui/common/util/ModifierExtensions.kt | 62 ++ .../core/ui/common/util/StringExtensions.kt | 11 + .../core/ui/common/util/TextExtensions.kt | 18 + .../core/ui/common/util}/ToastExtensions.kt | 2 +- .../src/main/res/drawable/database_icon.xml | 0 .../common}/src/main/res/drawable/delete.xml | 0 core/ui/common/src/main/res/drawable/home.xml | 9 + .../src/main/res/drawable/home_outlined.xml | 9 + .../src/main/res/drawable/left_arrow.xml | 0 .../main/res/drawable/movie_placeholder.png | Bin 0 -> 1050 bytes .../ui/common}/src/main/res/drawable/play.xml | 0 .../src/main/res/drawable/round_close_24.xml | 0 .../res/drawable/round_content_copy_24.xml | 0 .../res/drawable/round_error_outline_24.xml | 0 .../src/main/res/drawable/round_library.xml | 0 .../sample_movie_subtitle_preview.jpg | Bin .../common}/src/main/res/drawable/search.xml | 0 .../src/main/res/drawable/search_outlined.xml | 0 .../src/main/res/drawable/settings.xml | 0 .../src/main/res/drawable/settings_filled.xml | 0 .../res/drawable/time_circle_outlined.xml | 21 + .../res/mipmap-anydpi-v26/ic_launcher.xml | 0 .../mipmap-anydpi-v26/ic_launcher_round.xml | 0 .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin .../mipmap-hdpi/ic_launcher_foreground.png | Bin .../res/mipmap-hdpi/ic_launcher_round.png | Bin .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin .../mipmap-mdpi/ic_launcher_foreground.png | Bin .../res/mipmap-mdpi/ic_launcher_round.png | Bin .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin .../mipmap-xhdpi/ic_launcher_foreground.png | Bin .../res/mipmap-xhdpi/ic_launcher_round.png | Bin .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin .../mipmap-xxhdpi/ic_launcher_foreground.png | Bin .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin .../res/values/ic_launcher_background.xml | 0 {data/util => core/ui/film}/.gitignore | 0 core/ui/film/build.gradle.kts | 21 + .../core/ui/film/BaseFilmScreenViewModel.kt | 106 +- .../core/ui/film/FilmScreenNavArgs.kt | 7 + .../flixclusive/core/ui/film/FilmUiState.kt | 11 + core/ui/home/.gitignore | 1 + core/ui/home/build.gradle.kts | 21 + .../core/ui/home/HomeScreenViewModel.kt | 130 +++ core/ui/mobile/.gitignore | 1 + core/ui/mobile/build.gradle.kts | 25 + .../mobile/InternetMonitorSnackbarVisuals.kt | 9 +- .../core/ui/mobile/IsInPipModeProvider.kt | 12 + .../core/ui/mobile}/KeyEventHandler.kt | 8 +- .../ui/mobile/component/CollapsibleTopBar.kt | 25 +- .../ui/mobile/component}/FilmTypeFilters.kt | 25 +- .../ui/mobile/component}/FilmsGridScreen.kt | 58 +- .../core/ui/mobile/component/GenreButton.kt | 48 + .../core/ui/mobile/component/RetryButton.kt | 10 +- .../ui/mobile/component/SourceDataDialog.kt | 85 +- .../ui/mobile/component}/film/FilmCard.kt | 13 +- .../component}/film/FilmCardPlaceholder.kt | 4 +- .../core/ui/mobile/util/ColorHelper.kt | 9 + .../core/ui/mobile/util/LazyListExtensions.kt | 69 ++ .../core/ui/mobile/util/SystemUiHelper.kt | 38 + .../core/ui/mobile/util/UxHelper.kt | 14 + .../mobile}/src/main/res/drawable/filter.xml | 0 .../src/main/res/drawable/right_arrow.xml | 0 .../src/main/res/drawable/round_wifi_24.xml | 0 .../main/res/drawable/round_wifi_off_24.xml | 0 core/ui/player/.gitignore | 1 + core/ui/player/build.gradle.kts | 33 + .../core/ui/player/BasePlayerViewModel.kt | 512 ++++++++++ .../ui/player/FlixclusivePlayerManager.kt | 644 ++++++++++++ .../core/ui/player/PlayerScreenNavArgs.kt | 9 + .../core/ui/player/PlayerSnackbarMessage.kt | 20 + .../core/ui}/player/PlayerUiState.kt | 4 +- .../di/FlixclusivePlayerManagerModule.kt | 31 + .../ui}/player/renderer/CustomTextRenderer.kt | 7 +- .../player/renderer/NonFinalTextRenderer.java | 9 +- .../ui/player/util/PlayerBuilderHelper.kt | 106 ++ .../core/ui/player/util/PlayerCacheManager.kt | 59 ++ .../core/ui/player/util/PlayerPiPHelper.kt | 98 ++ .../core/ui/player/util/PlayerUiUtil.kt | 314 +++--- .../core/ui/player/util/SubtitleHelper.kt | 47 + .../res/drawable/chevron_left_black_24dp.xml | 0 .../res/drawable/chevron_right_black_24dp.xml | 0 .../res/drawable/forward_30_black_24dp.xml | 0 .../res/drawable/forward_5_black_24dp.xml | 0 .../res/drawable/outline_subtitles_24.xml | 0 .../res/drawable/outline_video_library_24.xml | 0 .../player}/src/main/res/drawable/pause.xml | 0 .../drawable/record_voice_over_black_24dp.xml | 0 .../res/drawable/replay_10_black_24dp.xml | 0 .../res/drawable/replay_30_black_24dp.xml | 0 .../main/res/drawable/resize_mode_icon.xml | 0 .../res/drawable/round_cloud_queue_24.xml | 0 .../main/res/drawable/round_forward_10_24.xml | 0 .../round_keyboard_double_arrow_left_24.xml | 0 .../round_keyboard_double_arrow_right_24.xml | 0 .../src/main/res/drawable/round_replay_24.xml | 0 .../main/res/drawable/round_replay_5_24.xml | 0 .../main/res/drawable/round_skip_next_24.xml | 0 .../src/main/res/drawable/speedometer.xml | 0 .../main/res/drawable/speedometer_filled.xml | 0 .../src/main/res/drawable/sync_black_24dp.xml | 0 .../src/main/res/layout/custom_player.xml | 0 .../custom_player_controller_layout.xml | 0 core/ui/setup/.gitignore | 1 + core/ui/setup/build.gradle.kts | 15 + .../core/ui/setup/SetupScreensViewModel.kt | 46 + .../mobile/OnDoubleNavBarItemClickObserver.kt | 29 - .../mobile/OnSeeMoreDetailsClickObserver.kt | 31 - core/ui/src/main/res/values/strings.xml | 5 - core/ui/tv/.gitignore | 1 + core/ui/tv/build.gradle.kts | 23 + .../core/ui/tv/SourceDataDialog.kt | 90 +- .../core/ui/tv/util/LazyListExtensions.kt | 8 + .../core/ui/tv/util/ModifierExtensions.kt | 349 +++++++ core/util/build.gradle.kts | 10 +- .../core/util/activity/FileHelper.kt | 21 + .../core/util/activity/IntentHelper.kt | 25 + .../core/util/activity/PermissionHelper.kt | 28 + .../flixclusive/core/util/common/Constants.kt | 13 - .../configuration/ConfigurationConstants.kt | 4 + .../{network => dispatcher}/AppDispatchers.kt | 26 +- .../di/CoroutineScopesModule.kt | 54 +- .../di/DispatchersModule.kt | 42 +- .../core/util/common/ui/PagingState.kt | 12 + .../core/util/coroutines/CoroutineHelper.kt | 2 +- ...eptionExtensions.kt => ExceptionHelper.kt} | 101 +- .../core/util/film/FilmFormatHelper.kt | 21 +- .../core/util/navigation/NavigationHelper.kt | 25 - .../core/util/network/CryptographyUtil.kt | 198 ++-- .../core/util/network}/JsoupHelper.kt | 2 +- .../core/util/network}/OkHttpHelper.kt | 4 +- core/util/src/main/res/values/strings.xml | 248 ++++- data/configuration/build.gradle.kts | 2 +- .../configuration/AppConfigurationManager.kt | 43 +- .../DefaultAppConfigurationManager.kt | 115 ++- .../di/AppConfigurationModule.kt | 2 + .../src/main/res/values/strings.xml | 4 - data/network/.gitignore | 1 + data/{util => network}/build.gradle.kts | 6 +- .../src/main/AndroidManifest.xml | 5 +- .../flixclusive/data/util/InternetMonitor.kt | 12 +- .../data/util/InternetMonitorManager.kt | 154 +-- .../data/util/di/InternetMonitorModule.kt | 34 +- data/provider/build.gradle.kts | 10 +- .../provider/DefaultProviderRepository.kt | 12 +- .../provider/DefaultSourceLinksRepository.kt | 53 +- .../data/provider/ProviderRepository.kt | 4 +- .../data/provider/SourceLinksRepository.kt | 6 +- .../data/provider/di/ProviderModule.kt | 3 + data/provider/src/main/res/values/strings.xml | 5 - data/tmdb/build.gradle.kts | 4 +- .../data/tmdb/DefaultTMDBRepository.kt | 28 +- .../data/tmdb/di/TmdbDataModule.kt | 2 + .../flixclusive/data/tmdb/util/TMDBHelper.kt | 13 +- data/user/build.gradle.kts | 2 +- .../data/user/DefaultUserRepository.kt | 4 +- .../data/user/di/UserDataModule.kt | 2 + data/watch_history/build.gradle.kts | 2 +- .../DefaultWatchHistoryRepository.kt | 4 +- .../di/WatchHistoryDataModule.kt | 2 + data/watchlist/build.gradle.kts | 2 +- .../watchlist/DefaultWatchlistRepository.kt | 4 +- .../data/watchlist/di/WatchlistDataModule.kt | 2 + domain/database/build.gradle.kts | 2 +- ...ase.kt => ToggleWatchlistStatusUseCase.kt} | 4 +- ...rUseCase.kt => WatchTimeUpdaterUseCase.kt} | 47 +- domain/home/build.gradle.kts | 5 +- .../domain/home/HomeItemsProviderUseCase.kt | 350 +++++-- domain/provider/build.gradle.kts | 4 +- .../provider/SourceLinksProviderUseCase.kt | 82 +- .../provider/src/main/res/values/strings.xml | 8 - domain/search/.gitignore | 1 + domain/search/build.gradle.kts | 14 + .../GetSearchRecommendedCardsUseCase.kt | 107 ++ domain/tmdb/build.gradle.kts | 1 + .../domain/tmdb/SeasonProviderUseCase.kt | 62 +- extractor/base/build.gradle.kts | 4 +- .../flixclusive/extractor/base/Extractor.kt | 4 + extractor/mixdrop/build.gradle.kts | 8 +- .../flixclusive/extractor/mixdrop/MixDrop.kt | 8 +- extractor/upcloud/build.gradle.kts | 8 +- .../flixclusive/extractor/upcloud/UpCloud.kt | 20 +- .../extractor/upcloud/dto/UpCloudEmbedData.kt | 6 +- feature/mobile/about/.gitignore | 1 + feature/mobile/about/build.gradle.kts | 21 + .../feature/mobile/about/AboutScreen.kt | 45 + .../mobile/about/AboutScreenViewModel.kt | 13 + .../mobile/about/component/BodyContent.kt | 127 +++ .../feature/mobile/about/component/Header.kt | 104 ++ .../about/src/main/res/values/strings.xml | 3 + feature/mobile/crash/.gitignore | 1 + feature/mobile/crash/build.gradle.kts | 20 + .../feature/mobile/crash/CrashMobileScreen.kt | 189 ++++ feature/mobile/film/.gitignore | 1 + feature/mobile/film/build.gradle.kts | 25 + .../feature/mobile/film/FilmScreen.kt | 236 +++-- .../mobile}/film/FilmScreenPlaceholder.kt | 19 +- .../mobile/film/FilmScreenViewModel.kt | 29 + .../mobile/film/component/EpisodeCard.kt | 30 +- .../mobile/film/component}/FilmOverview.kt | 63 +- .../film/component/FilmScreenButtons.kt | 194 ++++ .../mobile/film/component/FilmScreenHeader.kt | 268 +++++ .../film/component/TvShowSeasonDropdown.kt | 15 +- .../mobile/film/util/FilmFormatHelper.kt | 34 + .../src/main/res/drawable/add_bookmark.xml | 9 + .../src/main/res/drawable/added_bookmark.xml | 9 + .../src/main/res/drawable/anim_caret_down.xml | 0 .../src/main/res/drawable/down_arrow.xml | 0 .../film/src/main/res/drawable/left_arrow.xml | 13 + .../main/res/drawable/movie_placeholder.png | Bin 0 -> 1050 bytes .../film}/src/main/res/drawable/up_arrow.xml | 0 feature/mobile/genre/.gitignore | 1 + feature/mobile/genre/build.gradle.kts | 19 + .../feature/mobile}/genre/GenreScreen.kt | 32 +- .../mobile/genre/GenreScreenNavArgs.kt | 7 + .../feature/mobile}/genre/GenreViewModel.kt | 39 +- feature/mobile/home/build.gradle.kts | 15 +- .../mobile/home}/HomeContinueWatchingRow.kt | 54 +- .../feature/mobile/home/HomeFilmsRow.kt | 48 +- .../feature/mobile/home}/HomeHeader.kt | 78 +- .../feature/mobile/home/HomeScreen.kt | 121 +-- .../mobile/home/HomeMobileScreen.kt | 88 -- .../mobile/home/HomeScreenTransition.kt | 31 - .../home/content/HomeContinueWatchingRow.kt | 261 ----- .../mobile/home/content/HomeHeader.kt | 303 ------ .../mobile/home/content/HomeMobileFilmsRow.kt | 151 --- .../mobile/home/content/HomeScreenContent.kt | 271 ------ .../mobile/home/film/HomeFilmScreen.kt | 45 - .../mobile/home/genre/HomeGenreScreen.kt | 37 - .../mobile/home/see_all/HomeSeeAllScreen.kt | 35 - .../main/res/drawable/round_more_vert_24.xml | 0 feature/mobile/player/.gitignore | 1 + feature/mobile/player/build.gradle.kts | 33 + .../feature/mobile}/player/PlayerScreen.kt | 249 +++-- .../mobile/player/PlayerScreenViewModel.kt | 138 +++ .../feature/mobile}/player/PlayerSnackbar.kt | 59 +- .../mobile/player/controls/BottomControls.kt | 465 +++++++++ .../mobile}/player/controls/CenterControls.kt | 45 +- .../mobile}/player/controls/LockControls.kt | 11 +- .../mobile}/player/controls/PlayerControls.kt | 201 ++-- .../mobile}/player/controls/TopControls.kt | 55 +- .../controls/common/BasePlayerDialog.kt | 8 +- .../common/EnlargedTouchableButton.kt | 4 +- .../controls/common/ListContentHolder.kt | 24 +- .../player/controls/common/ListItem.kt | 23 +- .../controls/common/PlayerDialogButton.kt | 9 +- .../controls/common/slider/CustomSlider.kt | 918 ++++++++++++++++++ .../slider/util/ColorSchemeKeyTokens.kt | 10 + .../common/slider/util/ColorTokensHelper.kt | 27 + .../common/slider/util/SliderTokens.kt | 27 + .../PlayerAudioAndSubtitleDialog.kt | 172 ++++ .../dialogs/servers/PlayerServersDialog.kt | 156 +++ .../dialogs/settings/PlayerSettingsDialog.kt | 73 +- .../dialogs/settings/PlayerSettingsList.kt | 15 +- .../dialogs/settings/PlayerSettingsPanel.kt | 8 +- .../dialogs/settings/SubtitleSyncPanel.kt | 57 +- .../controls/episodes/EpisodesScreen.kt | 39 +- .../episodes/composables/EpisodeCard.kt | 62 +- .../episodes/composables/EpisodesRow.kt | 41 +- .../episodes/composables/SeasonPill.kt | 22 +- .../episodes/composables/SeasonsRow.kt | 21 +- .../controls/gestures/PlayerVerticalSlider.kt | 25 +- .../gestures/SeekerAndSliderGestures.kt | 107 +- .../mobile/player/util}/PlayerPipReceiver.kt | 4 +- .../mobile/player/util/PlayerUiHelper.kt | 51 + .../src/main/res/drawable/outline_lock_24.xml | 0 .../main/res/drawable/round_lock_open_24.xml | 0 .../main/res/drawable/round_wb_sunny_24.xml | 0 .../res/drawable/volume_down_black_24dp.xml | 0 .../res/drawable/volume_off_black_24dp.xml | 0 .../res/drawable/volume_up_black_24dp.xml | 0 feature/mobile/preferences/.gitignore | 1 + .../mobile/preferences}/build.gradle.kts | 14 +- .../preferences/PreferencesNavigationItem.kt | 10 + .../mobile/preferences/PreferencesScreen.kt | 117 +++ .../preferences/component/HeaderButton.kt | 51 + .../preferences/component/PreferenceItem.kt | 59 ++ .../preferences/component/ShareHeader.kt | 91 ++ .../src/main/res/drawable/round_info_24.xml | 0 .../src/main/res/drawable/round_share_24.xml | 0 .../src/main/res/drawable/round_update_24.xml | 0 .../src/main/res/drawable/time_circle.xml | 0 feature/mobile/provider/.gitignore | 1 + feature/mobile/provider/build.gradle.kts | 22 + .../feature/mobile/provider/ProviderCard.kt | 14 +- .../mobile/provider/ProvidersScreen.kt | 39 +- .../provider/ProvidersScreenViewModel.kt | 10 +- .../mobile/provider/util}/DragAndDropUtils.kt | 4 +- .../util}/ItemListDragAndDropState.kt | 23 +- .../res/drawable/round_drag_indicator_24.xml | 0 feature/mobile/recently-watched/.gitignore | 1 + .../mobile/recently-watched/build.gradle.kts | 22 + .../recentlyWatched/RecentlyWatchedScreen.kt | 60 +- .../RecentlyWatchedScreenViewModel.kt | 11 +- feature/mobile/search-expanded/.gitignore | 1 + .../mobile/search-expanded/build.gradle.kts | 24 + .../searchExpanded/SearchExpandedScreen.kt | 118 +-- .../SearchExpandedScreenViewModel.kt | 65 +- .../mobile/searchExpanded}/SearchFilter.kt | 10 +- .../searchExpanded}/SearchFiltersButtons.kt | 22 +- .../src/main/res/drawable/close_square.xml | 2 +- feature/mobile/search/.gitignore | 1 + feature/mobile/search/build.gradle.kts | 25 + .../feature/mobile/search/SearchScreen.kt | 149 ++- .../mobile/search/SearchScreenViewModel.kt | 40 + .../search/component}/SearchItemCard.kt | 19 +- .../mobile/search/component}/SearchItemRow.kt | 69 +- feature/mobile/see-all/.gitignore | 1 + feature/mobile/see-all/build.gradle.kts | 20 + .../feature/mobile/seeAll/SeeAllScreen.kt | 29 +- .../mobile/seeAll/SeeAllScreenNavArgs.kt | 8 + .../feature/mobile/seeAll}/SeeAllViewModel.kt | 43 +- feature/mobile/settings/.gitignore | 1 + feature/mobile/settings/build.gradle.kts | 23 + .../feature/mobile}/settings/SettingsItem.kt | 4 +- .../feature/mobile/settings/SettingsScreen.kt | 320 ++---- .../settings/SettingsScreenViewModel.kt | 36 +- .../settings/component/SettingsGroup.kt | 53 + .../settings/component/SettingsGroupItem.kt | 97 ++ .../component/dialog}/BaseSettingsDialog.kt | 12 +- .../dialog}/advanced/AdvancedDialogWrapper.kt | 16 +- .../advanced/dialog/AdvancedDialogDoH.kt | 19 +- .../dialog}/player/PlayerDialogWrapper.kt | 59 +- .../player/dialog/PlayerBufferLength.kt | 24 +- .../dialog}/player/dialog/PlayerBufferSize.kt | 32 +- .../player/dialog/PlayerDiskCacheSize.kt | 46 +- .../dialog}/player/dialog/PlayerQuality.kt | 22 +- .../dialog}/player/dialog/PlayerResizeMode.kt | 28 +- .../dialog}/player/dialog/PlayerSeekLength.kt | 16 +- .../subtitles/SubtitleDialogWrapper.kt | 30 +- .../dialog}/subtitles/SubtitlePreview.kt | 25 +- .../subtitles/SubtitleSettingsDialog.kt | 14 +- .../dialog/SubtitleDialogEdgeType.kt | 18 +- .../SubtitleDialogFontBackgroundColor.kt | 32 +- .../dialog/SubtitleDialogFontColor.kt | 16 +- .../dialog/SubtitleDialogFontStyle.kt | 16 +- .../dialog/SubtitleDialogLanguages.kt | 12 +- .../subtitles/dialog/SubtitleDialogSize.kt | 18 +- .../dialog/util/SubtitleSettingsHelper.kt | 21 + .../mobile/settings/util/ColorPickerHelper.kt | 4 +- .../mobile/settings/util/ComposeHelper.kt | 40 + feature/mobile/splash-screen/.gitignore | 1 + feature/mobile/splash-screen/build.gradle.kts | 25 + .../mobile/splashScreen/SplashScreen.kt | 135 ++- .../splashScreen/component/CustomCheckbox.kt | 100 ++ .../splashScreen/component/ErrorDialog.kt | 115 +++ .../component/PlayerCacheSizeWarning.kt | 199 ++++ .../res/drawable/flixclusive_animated_tag.xml | 0 .../src/main/res/drawable/warning.xml | 9 + feature/mobile/update/.gitignore | 1 + feature/mobile/update/build.gradle.kts | 23 + .../update/src/main/AndroidManifest.xml | 4 + .../feature/mobile/update/UpdateDialog.kt | 77 +- .../feature/mobile/update/UpdateScreen.kt | 145 +-- .../src/main/res/drawable/flixclusive_tag.xml | 0 .../round_check_circle_outline_24.xml | 0 feature/mobile/watchlist/.gitignore | 1 + feature/mobile/watchlist/build.gradle.kts | 22 + .../mobile/watchlist/WatchlistScreen.kt | 81 ++ .../watchlist/WatchlistScreenViewModel.kt | 10 +- gradle.properties | 11 +- gradle/libs.versions.toml | 150 +-- .../model/configuration/HomeCategoryItem.kt | 66 +- .../model/configuration/SearchCategoryItem.kt | 17 +- model/database/build.gradle.kts | 3 +- .../database/UserWithWatchHistoryList.kt | 4 +- .../database/util}/WatchHistoryItemHelper.kt | 33 +- .../model/datastore/AppSettings.kt | 31 +- model/provider/build.gradle.kts | 3 +- .../model/provider/SourceDataState.kt | 13 +- .../flixclusive/model/provider/Subtitle.kt | 49 +- .../provider/src/main/res/values/strings.xml | 9 - .../kotlin/com/flixclusive/model/tmdb/Film.kt | 8 +- .../com/flixclusive/model/tmdb/FilmImpl.kt | 6 +- .../com/flixclusive/model/tmdb/Movie.kt | 10 +- .../flixclusive/model/tmdb/Recommendation.kt | 11 +- .../flixclusive/model/tmdb/TMDBSearchItem.kt | 84 +- .../com/flixclusive/model/tmdb/TvShow.kt | 34 +- provider/base/build.gradle.kts | 17 +- .../com/flixclusive/provider/base/Provider.kt | 2 +- .../flixclusive/provider/base/ProviderData.kt | 32 +- provider/flixhq/build.gradle.kts | 11 +- .../com/flixclusive/provider/flixhq/FlixHQ.kt | 8 +- .../flixclusive/provider/flixhq/FlixHQTest.kt | 2 +- provider/lookmovie/build.gradle.kts | 13 +- .../provider/lookmovie/LookMovie.kt | 12 +- provider/superstream/build.gradle.kts | 13 +- .../provider/superstream/SuperStream.kt | 37 +- .../provider/superstream/SuperStreamCommon.kt | 2 +- .../provider/superstream/SuperStreamTest.kt | 39 + service/.gitignore | 1 + service/build.gradle.kts | 16 + service/src/main/AndroidManifest.xml | 9 + .../update}/AppUpdateNotificationBuilder.kt | 39 +- .../service/update}/AppUpdaterReceiver.kt | 8 +- .../service/update}/AppUpdaterService.kt | 84 +- .../service/update/util}/FileExtensions.kt | 10 +- .../update/util}/NotificationExtensions.kt | 13 +- .../service/update/util}/OkHttpExtensions.kt | 2 +- .../service/update/util}/OkioExtensions.kt | 2 +- .../service/update/util}/ProgressListener.kt | 2 +- .../update/util}/ProgressResponseBody.kt | 2 +- .../res/drawable/round_error_outline_24.xml | 2 +- .../main/res/drawable/round_refresh_24.xml | 0 .../drawable/round_system_update_alt_24.xml | 0 service/src/main/res/values/colors.xml | 4 + settings.gradle.kts | 41 +- 708 files changed, 13293 insertions(+), 23392 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/config.yml create mode 100644 .github/ISSUE_TEMPLATE/report_issue.yml create mode 100644 .github/ISSUE_TEMPLATE/request_feature.yml create mode 100644 .github/workflows/Build.yml delete mode 100644 .idea/androidTestResultsUserPreferences.xml delete mode 100644 .idea/discord.xml create mode 100644 .idea/migrations.xml delete mode 100644 app/release/app-release.apk.REMOVED.git-id delete mode 100644 app/release/output-metadata.json delete mode 100644 app/schemas/com.flixclusive.data.database.AppDatabase/1.json delete mode 100644 app/src/androidTest/java/com/flixclusive/service/AppUpdaterServiceTest.kt delete mode 100644 app/src/main/ic_launcher-playstore.png delete mode 100644 app/src/main/java/com/flixclusive/common/Constants.kt delete mode 100644 app/src/main/java/com/flixclusive/common/UiText.kt delete mode 100644 app/src/main/java/com/flixclusive/data/api/GithubConfigService.kt delete mode 100644 app/src/main/java/com/flixclusive/data/api/TMDBApiService.kt delete mode 100644 app/src/main/java/com/flixclusive/data/config/ConfigurationProviderImpl.kt delete mode 100644 app/src/main/java/com/flixclusive/data/database/AppDatabase.kt delete mode 100644 app/src/main/java/com/flixclusive/data/database/converter/FilmDataConverter.kt delete mode 100644 app/src/main/java/com/flixclusive/data/database/converter/WatchHistoryItemConverter.kt delete mode 100644 app/src/main/java/com/flixclusive/data/database/dao/UserDao.kt delete mode 100644 app/src/main/java/com/flixclusive/data/database/dao/WatchHistoryDao.kt delete mode 100644 app/src/main/java/com/flixclusive/data/database/dao/WatchlistDao.kt delete mode 100644 app/src/main/java/com/flixclusive/data/dto/tmdb/TMDBMovieDto.kt delete mode 100644 app/src/main/java/com/flixclusive/data/dto/tmdb/TMDBTvShowDto.kt delete mode 100644 app/src/main/java/com/flixclusive/data/dto/tmdb/common/BelongsToCollection.kt delete mode 100644 app/src/main/java/com/flixclusive/data/dto/tmdb/common/ImageResponseDto.kt delete mode 100644 app/src/main/java/com/flixclusive/data/dto/tmdb/common/ProductionCompany.kt delete mode 100644 app/src/main/java/com/flixclusive/data/dto/tmdb/common/ProductionCountry.kt delete mode 100644 app/src/main/java/com/flixclusive/data/dto/tmdb/common/SpokenLanguage.kt delete mode 100644 app/src/main/java/com/flixclusive/data/dto/tmdb/common/TMDBGenresDto.kt delete mode 100644 app/src/main/java/com/flixclusive/data/dto/tmdb/common/TMDBImageDto.kt delete mode 100644 app/src/main/java/com/flixclusive/data/dto/tmdb/tv/Creator.kt delete mode 100644 app/src/main/java/com/flixclusive/data/dto/tmdb/tv/CrewMember.kt delete mode 100644 app/src/main/java/com/flixclusive/data/dto/tmdb/tv/EpisodeAir.kt delete mode 100644 app/src/main/java/com/flixclusive/data/dto/tmdb/tv/GuestStar.kt delete mode 100644 app/src/main/java/com/flixclusive/data/dto/tmdb/tv/Network.kt delete mode 100644 app/src/main/java/com/flixclusive/data/dto/tmdb/tv/TMDBEpisodeDto.kt delete mode 100644 app/src/main/java/com/flixclusive/data/dto/tmdb/tv/TMDBSeasonDto.kt delete mode 100644 app/src/main/java/com/flixclusive/data/dto/tmdb/tv/TvShowSeasonsPreview.kt delete mode 100644 app/src/main/java/com/flixclusive/data/preferences/AppSettingsManagerImpl.kt delete mode 100644 app/src/main/java/com/flixclusive/data/repository/ProvidersRepositoryImpl.kt delete mode 100644 app/src/main/java/com/flixclusive/data/repository/SourceLinksRepositoryImpl.kt delete mode 100644 app/src/main/java/com/flixclusive/data/repository/TMDBRepositoryImpl.kt delete mode 100644 app/src/main/java/com/flixclusive/data/repository/UserRepositoryImpl.kt delete mode 100644 app/src/main/java/com/flixclusive/data/repository/WatchHistoryRepositoryImpl.kt delete mode 100644 app/src/main/java/com/flixclusive/data/repository/WatchlistRepositoryImpl.kt delete mode 100644 app/src/main/java/com/flixclusive/data/usecase/FilmProviderUseCaseImpl.kt delete mode 100644 app/src/main/java/com/flixclusive/data/usecase/HomeItemsProviderUseCaseImpl.kt delete mode 100644 app/src/main/java/com/flixclusive/data/usecase/SeasonProviderUseCaseImpl.kt delete mode 100644 app/src/main/java/com/flixclusive/data/usecase/SourceLinksProviderUseCaseImpl.kt delete mode 100644 app/src/main/java/com/flixclusive/data/usecase/WatchHistoryItemManagerUseCaseImpl.kt delete mode 100644 app/src/main/java/com/flixclusive/data/usecase/WatchlistItemManagerUseCaseImpl.kt delete mode 100644 app/src/main/java/com/flixclusive/data/utils/ExceptionExtensions.kt delete mode 100644 app/src/main/java/com/flixclusive/di/AppModule.kt delete mode 100644 app/src/main/java/com/flixclusive/di/AppSettingsModule.kt delete mode 100644 app/src/main/java/com/flixclusive/di/CoroutinesModule.kt delete mode 100644 app/src/main/java/com/flixclusive/di/DatabaseModule.kt delete mode 100644 app/src/main/java/com/flixclusive/di/NetworkModule.kt delete mode 100644 app/src/main/java/com/flixclusive/di/SourceLinksProviderModule.kt delete mode 100644 app/src/main/java/com/flixclusive/di/UseCaseModule.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/common/PaginatedSearchItemsDeserializer.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/common/Resource.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/common/SearchItemDeserializer.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/config/ConfigurationProvider.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/model/SourceData.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/model/SourceDataState.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/model/config/AppConfig.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/model/config/CategoryItem.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/model/config/HomeCategoryItem.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/model/config/ProviderStatus.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/model/config/SearchCategoryItem.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/model/entities/User.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/model/entities/UserWithWatchHistoryList.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/model/entities/UserWithWatchlist.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/model/entities/WatchHistoryItem.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/model/entities/WatchlistItem.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/model/provider/SourceProviderDetails.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/model/tmdb/Film.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/model/tmdb/FilmImpl.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/model/tmdb/FilmType.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/model/tmdb/Genre.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/model/tmdb/Movie.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/model/tmdb/Recommendation.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/model/tmdb/Season.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/model/tmdb/TMDBCollection.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/model/tmdb/TMDBEpisode.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/model/tmdb/TMDBPageResponse.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/model/tmdb/TMDBSearchItem.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/model/tmdb/TvShow.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/model/tmdb/WatchProvider.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/preferences/AppSettings.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/preferences/AppSettingsManager.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/preferences/AppSettingsSerialiazer.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/preferences/ProviderConfiguration.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/repository/ProvidersRepository.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/repository/SourceLinksRepository.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/repository/TMDBRepository.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/repository/UserRepository.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/repository/WatchHistoryRepository.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/repository/WatchlistRepository.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/usecase/FilmProviderUseCase.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/usecase/HomeItemsProviderUseCase.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/usecase/SeasonProviderUseCase.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/usecase/SourceLinksProviderUseCase.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/usecase/WatchHistoryItemManagerUseCase.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/usecase/WatchlistItemManagerUseCase.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/utils/FilmProviderUtils.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/utils/TMDBUtils.kt delete mode 100644 app/src/main/java/com/flixclusive/domain/utils/WatchHistoryUtils.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/common/FadeInAndOutScreenTransition.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/common/Font.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/common/PagingState.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/common/composables/SourceDataDialog.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/common/player/FlixclusivePlayer.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/common/player/utils/PlayerBuilderUtils.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/common/player/utils/SubtitleUtils.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/common/viewmodels/config/AppConfigurationUiState.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/common/viewmodels/config/AppConfigurationViewModel.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/common/viewmodels/film/FilmScreenNavArgs.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/common/viewmodels/film/FilmUiState.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/common/viewmodels/home/HomeContentScreenViewModel.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/common/viewmodels/home/HomeUiState.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/common/viewmodels/player/BasePlayerViewModel.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/common/viewmodels/player/PlayerScreenNavArgs.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/common/viewmodels/see_all/SeeAllScreenNavArgs.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/common/MobileRootNavGraph.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/common/composables/film/FilmButtons.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/common/composables/film/FilmHeader.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/common/transitions/CommonScreenTransition.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/main/MainActivity.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/main/MainApp.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/main/MainMobileActivityViewModel.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/main/MainMobileSharedViewModel.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/main/MobileAppDestination.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/main/MobileAppUiState.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/main/utils/OnDoubleNavBarItemClickObserver.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/main/utils/OnSeeMoreDetailsClickObserver.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/screens/crash/CrashMobileActivity.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/screens/home/HomeMobileScreen.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/screens/home/HomeScreenTransition.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/screens/home/film/HomeFilmScreen.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/screens/home/genre/HomeGenreScreen.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/screens/home/see_all/HomeSeeAllScreen.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/screens/player/PlayerScreenTransition.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/screens/player/PlayerViewModel.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/screens/player/controls/BottomControls.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/screens/player/controls/dialogs/audio_and_subtitle/PlayerAudioAndSubtitleDialog.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/screens/player/controls/dialogs/servers/PlayerServersDialog.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/screens/player/utils/PlayerPiPUtils.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/screens/player/utils/PlayerUiUtils.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/screens/preferences/PreferencesMobileScreen.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/screens/preferences/PreferencesMobileScreenTransition.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/screens/preferences/about/AboutMobileScreen.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/screens/preferences/content/PreferencesItems.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/screens/preferences/content/PreferencesRootMobileScreen.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/screens/preferences/film/PreferencesFilmMobileScreen.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/screens/preferences/genre/PreferencesGenreMobileScreen.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/screens/preferences/watchlist/WatchlistMobileScreen.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/screens/search/SearchMobileScreen.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/screens/search/SearchMobileScreenTransition.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/screens/search/content/SearchInitialContentUiState.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/screens/search/content/SearchInitialContentViewModel.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/screens/search/film/SearchFilmScreen.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/screens/search/genre/SearchGenreScreen.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/screens/search/see_all/SearchSeeAllScreen.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/screens/splash_screen/SplashMobileActivity.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/screens/splash_screen/dialog/ErrorMobileDialog.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/theme/MobileTheme.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/theme/MobileTypography.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/mobile/utils/ComposeMobileUtils.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/theme/Color.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/tv/common/DefaultTvNavArgs.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/tv/common/TvRootNavGraph.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/tv/common/UserIdleTimer.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/tv/common/composables/FilmCardTv.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/tv/common/composables/FilmTvOverview.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/tv/main/MainApp.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/tv/main/MainTvSharedViewModel.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/tv/main/NavDrawer.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/tv/main/TVMainActivity.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/tv/main/TvAppDestination.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/tv/main/TvAppUiState.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/tv/screens/film/FilmTvButtons.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/tv/screens/film/FilmTvEpisodesScreen.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/tv/screens/film/FilmTvScreen.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/tv/screens/film/FilmTvScreenRow.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/tv/screens/home/HomeTvFilmsRow.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/tv/screens/home/HomeTvScreen.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/tv/screens/home/immersive_background/FilmEmphasisBackground.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/tv/screens/home/immersive_background/ImmersiveHomeBackground.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/tv/screens/player/FilmTvPlayerScreen.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/tv/screens/player/TvPlayerViewModel.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/tv/screens/player/controls/SlidingAudioAndDisplaySheet.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/tv/screens/player/controls/SlidingPlayerSettingsSheet.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/tv/screens/player/controls/TvBottomControls.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/tv/screens/player/controls/TvPlaybackControls.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/tv/screens/player/controls/TvTopControls.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/tv/screens/player/controls/settings/SpeedometerScreen.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/tv/screens/search/SearchCustomKeyboard.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/tv/screens/search/SearchTvScreen.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/tv/screens/search/SearchTvScreenViewModel.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/tv/screens/splash_screen/SplashTvScreen.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/tv/screens/splash_screen/dialog/ErrorTvDialog.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/tv/screens/splash_screen/dialog/UpdateTvDialog.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/tv/screens/watchlist/WatchlistTvScreen.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/tv/theme/TvTheme.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/tv/theme/TvTypography.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/tv/utils/ComposeTvUtils.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/tv/utils/ModifierTvUtils.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/tv/utils/PlayerTvUtils.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/utils/ComposeUtils.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/utils/FormatterUtils.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/utils/IconResource.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/utils/ImageRequestCreator.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/utils/LazyListUtils.kt delete mode 100644 app/src/main/java/com/flixclusive/presentation/utils/ModifierUtils.kt delete mode 100644 app/src/main/java/com/flixclusive/service/network/NetworkConnectivityObserver.kt delete mode 100644 app/src/main/java/com/flixclusive/service/utils/IntentUtils.kt delete mode 100644 app/src/main/java/com/flixclusive/utils/LoggerUtils.kt create mode 100644 app/src/main/kotlin/com/flixclusive/AppNavigation.kt rename app/src/main/{java => kotlin}/com/flixclusive/FlixclusiveApplication.kt (50%) create mode 100644 app/src/main/kotlin/com/flixclusive/crash/CrashActivity.kt create mode 100644 app/src/main/kotlin/com/flixclusive/crash/CrashReportSender.kt rename app/src/main/{java/com/flixclusive/presentation/mobile/screens => kotlin/com/flixclusive}/crash/GlobalCrashHandler.kt (81%) create mode 100644 app/src/main/kotlin/com/flixclusive/crash/di/CrashReportSenderModule.kt create mode 100644 app/src/main/kotlin/com/flixclusive/mobile/MobileActivity.kt create mode 100644 app/src/main/kotlin/com/flixclusive/mobile/MobileApp.kt create mode 100644 app/src/main/kotlin/com/flixclusive/mobile/MobileAppNavigator.kt rename {core/ui/src/main/kotlin/com/flixclusive/core/ui => app/src/main/kotlin/com/flixclusive}/mobile/MobileAppUiState.kt (59%) rename core/ui/src/main/kotlin/com/flixclusive/core/ui/mobile/MainMobileSharedViewModel.kt => app/src/main/kotlin/com/flixclusive/mobile/MobileAppViewModel.kt (73%) rename app/src/main/{java/com/flixclusive/presentation/mobile/main/composables/MainNavigationBar.kt => kotlin/com/flixclusive/mobile/component/BottomBar.kt} (65%) rename app/src/main/{java/com/flixclusive/presentation/mobile/main/composables => kotlin/com/flixclusive/mobile/component}/FilmCoverPreview.kt (82%) rename app/src/main/{java/com/flixclusive/presentation/mobile/common/composables/film/FilmBottomSheetPreview.kt => kotlin/com/flixclusive/mobile/component/FilmPreviewBottomSheet.kt} (82%) create mode 100644 app/src/main/kotlin/com/flixclusive/util/NavigationHelper.kt create mode 100644 app/src/main/kotlin/com/flixclusive/util/TvModeHelper.kt delete mode 100644 app/src/main/res/drawable/home.xml delete mode 100644 app/src/main/res/drawable/home_outlined.xml delete mode 100644 app/src/main/res/drawable/round_subtitles_24.xml delete mode 100644 app/src/main/res/values/strings.xml create mode 100644 app/src/test/kotlin/com/flixclusive/crash/CrashReportSenderTest.kt create mode 100644 build-logic/convention/src/main/kotlin/ExtractorConventionPlugin.kt create mode 100644 build-logic/convention/src/main/kotlin/ProviderConventionPlugin.kt create mode 100644 build-logic/convention/src/main/kotlin/TestingConventionPlugin.kt rename {app/schemas/com.flixclusive.data.database.AppDatabase => core/database/schemas/com.flixclusive.core.database.AppDatabase}/2.json (100%) delete mode 100644 core/network/src/main/kotlin/com/flixclusive/core/network/retrofit/dto/common/TMDBGenresDto.kt rename core/ui/{ => common}/.gitignore (100%) create mode 100644 core/ui/common/build.gradle.kts rename {app/src/main/java/com/flixclusive/presentation/common/composables => core/ui/common/src/main/kotlin/com/flixclusive/core/ui/common}/FilmCover.kt (89%) rename {app/src/main/java/com/flixclusive/presentation/mobile/common/composables => core/ui/common/src/main/kotlin/com/flixclusive/core/ui/common}/GradientCircularProgressIndicator.kt (87%) rename app/src/main/java/com/flixclusive/presentation/mobile/screens/preferences/common/TopBarWithNavigationIcon.kt => core/ui/common/src/main/kotlin/com/flixclusive/core/ui/common/TopBarWithBackButton.kt (86%) create mode 100644 core/ui/common/src/main/kotlin/com/flixclusive/core/ui/common/navigation/CommonScreenNavigator.kt create mode 100644 core/ui/common/src/main/kotlin/com/flixclusive/core/ui/common/navigation/GoBackAction.kt create mode 100644 core/ui/common/src/main/kotlin/com/flixclusive/core/ui/common/navigation/StartHomeScreenAction.kt create mode 100644 core/ui/common/src/main/kotlin/com/flixclusive/core/ui/common/navigation/UpdateScreenNavArgs.kt create mode 100644 core/ui/common/src/main/kotlin/com/flixclusive/core/ui/common/util/CoilBuilderHelper.kt create mode 100644 core/ui/common/src/main/kotlin/com/flixclusive/core/ui/common/util/ModifierExtensions.kt create mode 100644 core/ui/common/src/main/kotlin/com/flixclusive/core/ui/common/util/StringExtensions.kt create mode 100644 core/ui/common/src/main/kotlin/com/flixclusive/core/ui/common/util/TextExtensions.kt rename {app/src/main/java/com/flixclusive/presentation/utils => core/ui/common/src/main/kotlin/com/flixclusive/core/ui/common/util}/ToastExtensions.kt (82%) rename app/src/main/res/drawable/source_db.xml => core/ui/common/src/main/res/drawable/database_icon.xml (100%) rename {app => core/ui/common}/src/main/res/drawable/delete.xml (100%) create mode 100644 core/ui/common/src/main/res/drawable/home.xml create mode 100644 core/ui/common/src/main/res/drawable/home_outlined.xml rename {app => core/ui/common}/src/main/res/drawable/left_arrow.xml (100%) create mode 100644 core/ui/common/src/main/res/drawable/movie_placeholder.png rename {app => core/ui/common}/src/main/res/drawable/play.xml (100%) rename {app => core/ui/common}/src/main/res/drawable/round_close_24.xml (100%) rename {app => core/ui/common}/src/main/res/drawable/round_content_copy_24.xml (100%) rename {app => core/ui/common}/src/main/res/drawable/round_error_outline_24.xml (100%) rename {app => core/ui/common}/src/main/res/drawable/round_library.xml (100%) rename {app => core/ui/common}/src/main/res/drawable/sample_movie_subtitle_preview.jpg (100%) rename {app => core/ui/common}/src/main/res/drawable/search.xml (100%) rename {app => core/ui/common}/src/main/res/drawable/search_outlined.xml (100%) rename {app => core/ui/common}/src/main/res/drawable/settings.xml (100%) rename {app => core/ui/common}/src/main/res/drawable/settings_filled.xml (100%) create mode 100644 core/ui/common/src/main/res/drawable/time_circle_outlined.xml rename {app => core/ui/common}/src/main/res/mipmap-anydpi-v26/ic_launcher.xml (100%) rename {app => core/ui/common}/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml (100%) rename {app => core/ui/common}/src/main/res/mipmap-hdpi/ic_launcher.png (100%) rename {app => core/ui/common}/src/main/res/mipmap-hdpi/ic_launcher_foreground.png (100%) rename {app => core/ui/common}/src/main/res/mipmap-hdpi/ic_launcher_round.png (100%) rename {app => core/ui/common}/src/main/res/mipmap-mdpi/ic_launcher.png (100%) rename {app => core/ui/common}/src/main/res/mipmap-mdpi/ic_launcher_foreground.png (100%) rename {app => core/ui/common}/src/main/res/mipmap-mdpi/ic_launcher_round.png (100%) rename {app => core/ui/common}/src/main/res/mipmap-xhdpi/ic_launcher.png (100%) rename {app => core/ui/common}/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png (100%) rename {app => core/ui/common}/src/main/res/mipmap-xhdpi/ic_launcher_round.png (100%) rename {app => core/ui/common}/src/main/res/mipmap-xxhdpi/ic_launcher.png (100%) rename {app => core/ui/common}/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png (100%) rename {app => core/ui/common}/src/main/res/mipmap-xxhdpi/ic_launcher_round.png (100%) rename {app => core/ui/common}/src/main/res/mipmap-xxxhdpi/ic_launcher.png (100%) rename {app => core/ui/common}/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png (100%) rename {app => core/ui/common}/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png (100%) rename {app => core/ui/common}/src/main/res/values/ic_launcher_background.xml (100%) rename {data/util => core/ui/film}/.gitignore (100%) create mode 100644 core/ui/film/build.gradle.kts rename app/src/main/java/com/flixclusive/presentation/common/viewmodels/film/FilmScreenViewModel.kt => core/ui/film/src/main/kotlin/com/flixclusive/core/ui/film/BaseFilmScreenViewModel.kt (51%) create mode 100644 core/ui/film/src/main/kotlin/com/flixclusive/core/ui/film/FilmScreenNavArgs.kt create mode 100644 core/ui/film/src/main/kotlin/com/flixclusive/core/ui/film/FilmUiState.kt create mode 100644 core/ui/home/.gitignore create mode 100644 core/ui/home/build.gradle.kts create mode 100644 core/ui/home/src/main/kotlin/com/flixclusive/core/ui/home/HomeScreenViewModel.kt create mode 100644 core/ui/mobile/.gitignore create mode 100644 core/ui/mobile/build.gradle.kts rename app/src/main/java/com/flixclusive/presentation/mobile/main/composables/NetworkConnectivitySnackbar.kt => core/ui/mobile/src/main/kotlin/com/flixclusive/core/ui/mobile/InternetMonitorSnackbarVisuals.kt (92%) create mode 100644 core/ui/mobile/src/main/kotlin/com/flixclusive/core/ui/mobile/IsInPipModeProvider.kt rename {app/src/main/java/com/flixclusive/presentation/mobile/common => core/ui/mobile/src/main/kotlin/com/flixclusive/core/ui/mobile}/KeyEventHandler.kt (88%) rename app/src/main/java/com/flixclusive/presentation/mobile/common/composables/film/CollapsedFilmTopAppBar.kt => core/ui/mobile/src/main/kotlin/com/flixclusive/core/ui/mobile/component/CollapsibleTopBar.kt (78%) rename {app/src/main/java/com/flixclusive/presentation/mobile/common/composables => core/ui/mobile/src/main/kotlin/com/flixclusive/core/ui/mobile/component}/FilmTypeFilters.kt (76%) rename {app/src/main/java/com/flixclusive/presentation/mobile/common/composables => core/ui/mobile/src/main/kotlin/com/flixclusive/core/ui/mobile/component}/FilmsGridScreen.kt (81%) create mode 100644 core/ui/mobile/src/main/kotlin/com/flixclusive/core/ui/mobile/component/GenreButton.kt rename app/src/main/java/com/flixclusive/presentation/mobile/common/composables/ErrorScreenWithButton.kt => core/ui/mobile/src/main/kotlin/com/flixclusive/core/ui/mobile/component/RetryButton.kt (87%) rename app/src/main/java/com/flixclusive/presentation/common/composables/SourceStateDialogMobileContent.kt => core/ui/mobile/src/main/kotlin/com/flixclusive/core/ui/mobile/component/SourceDataDialog.kt (62%) rename {app/src/main/java/com/flixclusive/presentation/mobile/common/composables => core/ui/mobile/src/main/kotlin/com/flixclusive/core/ui/mobile/component}/film/FilmCard.kt (79%) rename {app/src/main/java/com/flixclusive/presentation/mobile/common/composables => core/ui/mobile/src/main/kotlin/com/flixclusive/core/ui/mobile/component}/film/FilmCardPlaceholder.kt (91%) create mode 100644 core/ui/mobile/src/main/kotlin/com/flixclusive/core/ui/mobile/util/ColorHelper.kt create mode 100644 core/ui/mobile/src/main/kotlin/com/flixclusive/core/ui/mobile/util/LazyListExtensions.kt create mode 100644 core/ui/mobile/src/main/kotlin/com/flixclusive/core/ui/mobile/util/SystemUiHelper.kt create mode 100644 core/ui/mobile/src/main/kotlin/com/flixclusive/core/ui/mobile/util/UxHelper.kt rename {app => core/ui/mobile}/src/main/res/drawable/filter.xml (100%) rename {app => core/ui/mobile}/src/main/res/drawable/right_arrow.xml (100%) rename {app => core/ui/mobile}/src/main/res/drawable/round_wifi_24.xml (100%) rename {app => core/ui/mobile}/src/main/res/drawable/round_wifi_off_24.xml (100%) create mode 100644 core/ui/player/.gitignore create mode 100644 core/ui/player/build.gradle.kts create mode 100644 core/ui/player/src/main/java/com/flixclusive/core/ui/player/BasePlayerViewModel.kt create mode 100644 core/ui/player/src/main/java/com/flixclusive/core/ui/player/FlixclusivePlayerManager.kt create mode 100644 core/ui/player/src/main/java/com/flixclusive/core/ui/player/PlayerScreenNavArgs.kt create mode 100644 core/ui/player/src/main/java/com/flixclusive/core/ui/player/PlayerSnackbarMessage.kt rename {app/src/main/java/com/flixclusive/presentation/common => core/ui/player/src/main/java/com/flixclusive/core/ui}/player/PlayerUiState.kt (76%) create mode 100644 core/ui/player/src/main/java/com/flixclusive/core/ui/player/di/FlixclusivePlayerManagerModule.kt rename {app/src/main/java/com/flixclusive/presentation/common => core/ui/player/src/main/java/com/flixclusive/core/ui}/player/renderer/CustomTextRenderer.kt (71%) rename {app/src/main/java/com/flixclusive/presentation/common => core/ui/player/src/main/java/com/flixclusive/core/ui}/player/renderer/NonFinalTextRenderer.java (98%) create mode 100644 core/ui/player/src/main/java/com/flixclusive/core/ui/player/util/PlayerBuilderHelper.kt create mode 100644 core/ui/player/src/main/java/com/flixclusive/core/ui/player/util/PlayerCacheManager.kt create mode 100644 core/ui/player/src/main/java/com/flixclusive/core/ui/player/util/PlayerPiPHelper.kt rename app/src/main/java/com/flixclusive/presentation/common/player/utils/PlayerComposeUtils.kt => core/ui/player/src/main/java/com/flixclusive/core/ui/player/util/PlayerUiUtil.kt (56%) create mode 100644 core/ui/player/src/main/java/com/flixclusive/core/ui/player/util/SubtitleHelper.kt rename {app => core/ui/player}/src/main/res/drawable/chevron_left_black_24dp.xml (100%) rename {app => core/ui/player}/src/main/res/drawable/chevron_right_black_24dp.xml (100%) rename {app => core/ui/player}/src/main/res/drawable/forward_30_black_24dp.xml (100%) rename {app => core/ui/player}/src/main/res/drawable/forward_5_black_24dp.xml (100%) rename {app => core/ui/player}/src/main/res/drawable/outline_subtitles_24.xml (100%) rename {app => core/ui/player}/src/main/res/drawable/outline_video_library_24.xml (100%) rename {app => core/ui/player}/src/main/res/drawable/pause.xml (100%) rename {app => core/ui/player}/src/main/res/drawable/record_voice_over_black_24dp.xml (100%) rename {app => core/ui/player}/src/main/res/drawable/replay_10_black_24dp.xml (100%) rename {app => core/ui/player}/src/main/res/drawable/replay_30_black_24dp.xml (100%) rename {app => core/ui/player}/src/main/res/drawable/resize_mode_icon.xml (100%) rename {app => core/ui/player}/src/main/res/drawable/round_cloud_queue_24.xml (100%) rename {app => core/ui/player}/src/main/res/drawable/round_forward_10_24.xml (100%) rename {app => core/ui/player}/src/main/res/drawable/round_keyboard_double_arrow_left_24.xml (100%) rename {app => core/ui/player}/src/main/res/drawable/round_keyboard_double_arrow_right_24.xml (100%) rename {app => core/ui/player}/src/main/res/drawable/round_replay_24.xml (100%) rename {app => core/ui/player}/src/main/res/drawable/round_replay_5_24.xml (100%) rename {app => core/ui/player}/src/main/res/drawable/round_skip_next_24.xml (100%) rename {app => core/ui/player}/src/main/res/drawable/speedometer.xml (100%) rename {app => core/ui/player}/src/main/res/drawable/speedometer_filled.xml (100%) rename {app => core/ui/player}/src/main/res/drawable/sync_black_24dp.xml (100%) rename {app => core/ui/player}/src/main/res/layout/custom_player.xml (100%) rename {app => core/ui/player}/src/main/res/layout/custom_player_controller_layout.xml (100%) create mode 100644 core/ui/setup/.gitignore create mode 100644 core/ui/setup/build.gradle.kts create mode 100644 core/ui/setup/src/main/kotlin/com/flixclusive/core/ui/setup/SetupScreensViewModel.kt delete mode 100644 core/ui/src/main/kotlin/com/flixclusive/core/ui/mobile/OnDoubleNavBarItemClickObserver.kt delete mode 100644 core/ui/src/main/kotlin/com/flixclusive/core/ui/mobile/OnSeeMoreDetailsClickObserver.kt delete mode 100644 core/ui/src/main/res/values/strings.xml create mode 100644 core/ui/tv/.gitignore create mode 100644 core/ui/tv/build.gradle.kts rename app/src/main/java/com/flixclusive/presentation/common/composables/SourceDataDialogTvContent.kt => core/ui/tv/src/main/kotlin/com/flixclusive/core/ui/tv/SourceDataDialog.kt (54%) create mode 100644 core/ui/tv/src/main/kotlin/com/flixclusive/core/ui/tv/util/LazyListExtensions.kt create mode 100644 core/ui/tv/src/main/kotlin/com/flixclusive/core/ui/tv/util/ModifierExtensions.kt create mode 100644 core/util/src/main/kotlin/com/flixclusive/core/util/activity/FileHelper.kt create mode 100644 core/util/src/main/kotlin/com/flixclusive/core/util/activity/IntentHelper.kt create mode 100644 core/util/src/main/kotlin/com/flixclusive/core/util/activity/PermissionHelper.kt delete mode 100644 core/util/src/main/kotlin/com/flixclusive/core/util/common/Constants.kt create mode 100644 core/util/src/main/kotlin/com/flixclusive/core/util/common/configuration/ConfigurationConstants.kt rename core/util/src/main/kotlin/com/flixclusive/core/util/common/{network => dispatcher}/AppDispatchers.kt (84%) rename core/util/src/main/kotlin/com/flixclusive/core/util/common/{network => dispatcher}/di/CoroutineScopesModule.kt (78%) rename core/util/src/main/kotlin/com/flixclusive/core/util/common/{network => dispatcher}/di/DispatchersModule.kt (73%) create mode 100644 core/util/src/main/kotlin/com/flixclusive/core/util/common/ui/PagingState.kt rename core/util/src/main/kotlin/com/flixclusive/core/util/exception/{ExceptionExtensions.kt => ExceptionHelper.kt} (85%) delete mode 100644 core/util/src/main/kotlin/com/flixclusive/core/util/navigation/NavigationHelper.kt rename provider/base/src/main/kotlin/com/flixclusive/provider/base/util/CryptographyHelper.kt => core/util/src/main/kotlin/com/flixclusive/core/util/network/CryptographyUtil.kt (96%) rename {provider/base/src/main/kotlin/com/flixclusive/provider/base/util => core/util/src/main/kotlin/com/flixclusive/core/util/network}/JsoupHelper.kt (82%) rename {provider/base/src/main/kotlin/com/flixclusive/provider/base/util => core/util/src/main/kotlin/com/flixclusive/core/util/network}/OkHttpHelper.kt (95%) delete mode 100644 data/configuration/src/main/res/values/strings.xml create mode 100644 data/network/.gitignore rename data/{util => network}/build.gradle.kts (66%) rename data/{util => network}/src/main/AndroidManifest.xml (70%) rename data/{util => network}/src/main/kotlin/com/flixclusive/data/util/InternetMonitor.kt (95%) rename data/{util => network}/src/main/kotlin/com/flixclusive/data/util/InternetMonitorManager.kt (84%) rename data/{util => network}/src/main/kotlin/com/flixclusive/data/util/di/InternetMonitorModule.kt (91%) delete mode 100644 data/provider/src/main/res/values/strings.xml rename domain/database/src/main/kotlin/com/flixclusive/domain/database/{WatchlistItemManagerUseCase.kt => ToggleWatchlistStatusUseCase.kt} (82%) rename domain/database/src/main/kotlin/com/flixclusive/domain/database/{WatchHistoryItemManagerUseCase.kt => WatchTimeUpdaterUseCase.kt} (70%) delete mode 100644 domain/provider/src/main/res/values/strings.xml create mode 100644 domain/search/.gitignore create mode 100644 domain/search/build.gradle.kts create mode 100644 domain/search/src/main/kotlin/com/flixclusive/domain/search/GetSearchRecommendedCardsUseCase.kt create mode 100644 feature/mobile/about/.gitignore create mode 100644 feature/mobile/about/build.gradle.kts create mode 100644 feature/mobile/about/src/main/kotlin/com/flixclusive/feature/mobile/about/AboutScreen.kt create mode 100644 feature/mobile/about/src/main/kotlin/com/flixclusive/feature/mobile/about/AboutScreenViewModel.kt create mode 100644 feature/mobile/about/src/main/kotlin/com/flixclusive/feature/mobile/about/component/BodyContent.kt create mode 100644 feature/mobile/about/src/main/kotlin/com/flixclusive/feature/mobile/about/component/Header.kt create mode 100644 feature/mobile/about/src/main/res/values/strings.xml create mode 100644 feature/mobile/crash/.gitignore create mode 100644 feature/mobile/crash/build.gradle.kts create mode 100644 feature/mobile/crash/src/main/kotlin/com/flixclusive/feature/mobile/crash/CrashMobileScreen.kt create mode 100644 feature/mobile/film/.gitignore create mode 100644 feature/mobile/film/build.gradle.kts rename app/src/main/java/com/flixclusive/presentation/mobile/common/composables/film/FilmMobileScreen.kt => feature/mobile/film/src/main/kotlin/com/flixclusive/feature/mobile/film/FilmScreen.kt (50%) rename {app/src/main/java/com/flixclusive/presentation/mobile/common/composables => feature/mobile/film/src/main/kotlin/com/flixclusive/feature/mobile}/film/FilmScreenPlaceholder.kt (90%) create mode 100644 feature/mobile/film/src/main/kotlin/com/flixclusive/feature/mobile/film/FilmScreenViewModel.kt rename app/src/main/java/com/flixclusive/presentation/mobile/common/composables/film/FilmEpisode.kt => feature/mobile/film/src/main/kotlin/com/flixclusive/feature/mobile/film/component/EpisodeCard.kt (89%) rename {app/src/main/java/com/flixclusive/presentation/mobile/common/composables/film => feature/mobile/film/src/main/kotlin/com/flixclusive/feature/mobile/film/component}/FilmOverview.kt (75%) create mode 100644 feature/mobile/film/src/main/kotlin/com/flixclusive/feature/mobile/film/component/FilmScreenButtons.kt create mode 100644 feature/mobile/film/src/main/kotlin/com/flixclusive/feature/mobile/film/component/FilmScreenHeader.kt rename app/src/main/java/com/flixclusive/presentation/mobile/common/composables/film/FilmSeasons.kt => feature/mobile/film/src/main/kotlin/com/flixclusive/feature/mobile/film/component/TvShowSeasonDropdown.kt (92%) create mode 100644 feature/mobile/film/src/main/kotlin/com/flixclusive/feature/mobile/film/util/FilmFormatHelper.kt create mode 100644 feature/mobile/film/src/main/res/drawable/add_bookmark.xml create mode 100644 feature/mobile/film/src/main/res/drawable/added_bookmark.xml rename {app => feature/mobile/film}/src/main/res/drawable/anim_caret_down.xml (100%) rename {app => feature/mobile/film}/src/main/res/drawable/down_arrow.xml (100%) create mode 100644 feature/mobile/film/src/main/res/drawable/left_arrow.xml create mode 100644 feature/mobile/film/src/main/res/drawable/movie_placeholder.png rename {app => feature/mobile/film}/src/main/res/drawable/up_arrow.xml (100%) create mode 100644 feature/mobile/genre/.gitignore create mode 100644 feature/mobile/genre/build.gradle.kts rename {app/src/main/java/com/flixclusive/presentation/mobile/common/composables => feature/mobile/genre/src/main/kotlin/com/flixclusive/feature/mobile}/genre/GenreScreen.kt (65%) create mode 100644 feature/mobile/genre/src/main/kotlin/com/flixclusive/feature/mobile/genre/GenreScreenNavArgs.kt rename {app/src/main/java/com/flixclusive/presentation/mobile/common/composables => feature/mobile/genre/src/main/kotlin/com/flixclusive/feature/mobile}/genre/GenreViewModel.kt (76%) rename {app/src/main/java/com/flixclusive/presentation/mobile/screens/home/content => feature/mobile/home/src/main/kotlin/com/flixclusive/feature/mobile/home}/HomeContinueWatchingRow.kt (82%) rename app/src/main/java/com/flixclusive/presentation/mobile/screens/home/content/HomeMobileFilmsRow.kt => feature/mobile/home/src/main/kotlin/com/flixclusive/feature/mobile/home/HomeFilmsRow.kt (74%) rename {app/src/main/java/com/flixclusive/presentation/mobile/screens/home/content => feature/mobile/home/src/main/kotlin/com/flixclusive/feature/mobile/home}/HomeHeader.kt (77%) rename app/src/main/java/com/flixclusive/presentation/mobile/screens/home/content/HomeScreenContent.kt => feature/mobile/home/src/main/kotlin/com/flixclusive/feature/mobile/home/HomeScreen.kt (66%) delete mode 100644 feature/mobile/home/src/main/kotlin/com/flixclusive/mobile/home/HomeMobileScreen.kt delete mode 100644 feature/mobile/home/src/main/kotlin/com/flixclusive/mobile/home/HomeScreenTransition.kt delete mode 100644 feature/mobile/home/src/main/kotlin/com/flixclusive/mobile/home/content/HomeContinueWatchingRow.kt delete mode 100644 feature/mobile/home/src/main/kotlin/com/flixclusive/mobile/home/content/HomeHeader.kt delete mode 100644 feature/mobile/home/src/main/kotlin/com/flixclusive/mobile/home/content/HomeMobileFilmsRow.kt delete mode 100644 feature/mobile/home/src/main/kotlin/com/flixclusive/mobile/home/content/HomeScreenContent.kt delete mode 100644 feature/mobile/home/src/main/kotlin/com/flixclusive/mobile/home/film/HomeFilmScreen.kt delete mode 100644 feature/mobile/home/src/main/kotlin/com/flixclusive/mobile/home/genre/HomeGenreScreen.kt delete mode 100644 feature/mobile/home/src/main/kotlin/com/flixclusive/mobile/home/see_all/HomeSeeAllScreen.kt rename {app => feature/mobile/home}/src/main/res/drawable/round_more_vert_24.xml (100%) create mode 100644 feature/mobile/player/.gitignore create mode 100644 feature/mobile/player/build.gradle.kts rename {app/src/main/java/com/flixclusive/presentation/mobile/screens => feature/mobile/player/src/main/java/com/flixclusive/feature/mobile}/player/PlayerScreen.kt (68%) create mode 100644 feature/mobile/player/src/main/java/com/flixclusive/feature/mobile/player/PlayerScreenViewModel.kt rename {app/src/main/java/com/flixclusive/presentation/mobile/screens => feature/mobile/player/src/main/java/com/flixclusive/feature/mobile}/player/PlayerSnackbar.kt (69%) create mode 100644 feature/mobile/player/src/main/java/com/flixclusive/feature/mobile/player/controls/BottomControls.kt rename {app/src/main/java/com/flixclusive/presentation/mobile/screens => feature/mobile/player/src/main/java/com/flixclusive/feature/mobile}/player/controls/CenterControls.kt (76%) rename {app/src/main/java/com/flixclusive/presentation/mobile/screens => feature/mobile/player/src/main/java/com/flixclusive/feature/mobile}/player/controls/LockControls.kt (88%) rename {app/src/main/java/com/flixclusive/presentation/mobile/screens => feature/mobile/player/src/main/java/com/flixclusive/feature/mobile}/player/controls/PlayerControls.kt (60%) rename {app/src/main/java/com/flixclusive/presentation/mobile/screens => feature/mobile/player/src/main/java/com/flixclusive/feature/mobile}/player/controls/TopControls.kt (76%) rename {app/src/main/java/com/flixclusive/presentation/mobile/screens => feature/mobile/player/src/main/java/com/flixclusive/feature/mobile}/player/controls/common/BasePlayerDialog.kt (83%) rename {app/src/main/java/com/flixclusive/presentation/mobile/screens => feature/mobile/player/src/main/java/com/flixclusive/feature/mobile}/player/controls/common/EnlargedTouchableButton.kt (94%) rename {app/src/main/java/com/flixclusive/presentation/mobile/screens => feature/mobile/player/src/main/java/com/flixclusive/feature/mobile}/player/controls/common/ListContentHolder.kt (84%) rename {app/src/main/java/com/flixclusive/presentation/mobile/screens => feature/mobile/player/src/main/java/com/flixclusive/feature/mobile}/player/controls/common/ListItem.kt (88%) rename {app/src/main/java/com/flixclusive/presentation/mobile/screens => feature/mobile/player/src/main/java/com/flixclusive/feature/mobile}/player/controls/common/PlayerDialogButton.kt (81%) create mode 100644 feature/mobile/player/src/main/java/com/flixclusive/feature/mobile/player/controls/common/slider/CustomSlider.kt create mode 100644 feature/mobile/player/src/main/java/com/flixclusive/feature/mobile/player/controls/common/slider/util/ColorSchemeKeyTokens.kt create mode 100644 feature/mobile/player/src/main/java/com/flixclusive/feature/mobile/player/controls/common/slider/util/ColorTokensHelper.kt create mode 100644 feature/mobile/player/src/main/java/com/flixclusive/feature/mobile/player/controls/common/slider/util/SliderTokens.kt create mode 100644 feature/mobile/player/src/main/java/com/flixclusive/feature/mobile/player/controls/dialogs/audio_and_subtitle/PlayerAudioAndSubtitleDialog.kt create mode 100644 feature/mobile/player/src/main/java/com/flixclusive/feature/mobile/player/controls/dialogs/servers/PlayerServersDialog.kt rename {app/src/main/java/com/flixclusive/presentation/mobile/screens => feature/mobile/player/src/main/java/com/flixclusive/feature/mobile}/player/controls/dialogs/settings/PlayerSettingsDialog.kt (68%) rename {app/src/main/java/com/flixclusive/presentation/mobile/screens => feature/mobile/player/src/main/java/com/flixclusive/feature/mobile}/player/controls/dialogs/settings/PlayerSettingsList.kt (84%) rename {app/src/main/java/com/flixclusive/presentation/mobile/screens => feature/mobile/player/src/main/java/com/flixclusive/feature/mobile}/player/controls/dialogs/settings/PlayerSettingsPanel.kt (81%) rename {app/src/main/java/com/flixclusive/presentation/mobile/screens => feature/mobile/player/src/main/java/com/flixclusive/feature/mobile}/player/controls/dialogs/settings/SubtitleSyncPanel.kt (77%) rename {app/src/main/java/com/flixclusive/presentation/mobile/screens => feature/mobile/player/src/main/java/com/flixclusive/feature/mobile}/player/controls/episodes/EpisodesScreen.kt (82%) rename {app/src/main/java/com/flixclusive/presentation/mobile/screens => feature/mobile/player/src/main/java/com/flixclusive/feature/mobile}/player/controls/episodes/composables/EpisodeCard.kt (82%) rename {app/src/main/java/com/flixclusive/presentation/mobile/screens => feature/mobile/player/src/main/java/com/flixclusive/feature/mobile}/player/controls/episodes/composables/EpisodesRow.kt (76%) rename {app/src/main/java/com/flixclusive/presentation/mobile/screens => feature/mobile/player/src/main/java/com/flixclusive/feature/mobile}/player/controls/episodes/composables/SeasonPill.kt (80%) rename {app/src/main/java/com/flixclusive/presentation/mobile/screens => feature/mobile/player/src/main/java/com/flixclusive/feature/mobile}/player/controls/episodes/composables/SeasonsRow.kt (82%) rename app/src/main/java/com/flixclusive/presentation/mobile/screens/player/controls/gestures/PlayerSlider.kt => feature/mobile/player/src/main/java/com/flixclusive/feature/mobile/player/controls/gestures/PlayerVerticalSlider.kt (89%) rename {app/src/main/java/com/flixclusive/presentation/mobile/screens => feature/mobile/player/src/main/java/com/flixclusive/feature/mobile}/player/controls/gestures/SeekerAndSliderGestures.kt (75%) rename {app/src/main/java/com/flixclusive/presentation/mobile/screens/player/utils => feature/mobile/player/src/main/java/com/flixclusive/feature/mobile/player/util}/PlayerPipReceiver.kt (92%) create mode 100644 feature/mobile/player/src/main/java/com/flixclusive/feature/mobile/player/util/PlayerUiHelper.kt rename {app => feature/mobile/player}/src/main/res/drawable/outline_lock_24.xml (100%) rename {app => feature/mobile/player}/src/main/res/drawable/round_lock_open_24.xml (100%) rename {app => feature/mobile/player}/src/main/res/drawable/round_wb_sunny_24.xml (100%) rename {app => feature/mobile/player}/src/main/res/drawable/volume_down_black_24dp.xml (100%) rename {app => feature/mobile/player}/src/main/res/drawable/volume_off_black_24dp.xml (100%) rename {app => feature/mobile/player}/src/main/res/drawable/volume_up_black_24dp.xml (100%) create mode 100644 feature/mobile/preferences/.gitignore rename {core/ui => feature/mobile/preferences}/build.gradle.kts (52%) create mode 100644 feature/mobile/preferences/src/main/kotlin/com/flixclusive/feature/mobile/preferences/PreferencesNavigationItem.kt create mode 100644 feature/mobile/preferences/src/main/kotlin/com/flixclusive/feature/mobile/preferences/PreferencesScreen.kt create mode 100644 feature/mobile/preferences/src/main/kotlin/com/flixclusive/feature/mobile/preferences/component/HeaderButton.kt create mode 100644 feature/mobile/preferences/src/main/kotlin/com/flixclusive/feature/mobile/preferences/component/PreferenceItem.kt create mode 100644 feature/mobile/preferences/src/main/kotlin/com/flixclusive/feature/mobile/preferences/component/ShareHeader.kt rename {app => feature/mobile/preferences}/src/main/res/drawable/round_info_24.xml (100%) rename {app => feature/mobile/preferences}/src/main/res/drawable/round_share_24.xml (100%) rename {app => feature/mobile/preferences}/src/main/res/drawable/round_update_24.xml (100%) rename {app => feature/mobile/preferences}/src/main/res/drawable/time_circle.xml (100%) create mode 100644 feature/mobile/provider/.gitignore create mode 100644 feature/mobile/provider/build.gradle.kts rename app/src/main/java/com/flixclusive/presentation/mobile/screens/preferences/providers/ProviderItemCard.kt => feature/mobile/provider/src/main/kotlin/com/flixclusive/feature/mobile/provider/ProviderCard.kt (91%) rename app/src/main/java/com/flixclusive/presentation/mobile/screens/preferences/providers/ProvidersListScreen.kt => feature/mobile/provider/src/main/kotlin/com/flixclusive/feature/mobile/provider/ProvidersScreen.kt (71%) rename app/src/main/java/com/flixclusive/presentation/mobile/screens/preferences/providers/ProvidersListViewModel.kt => feature/mobile/provider/src/main/kotlin/com/flixclusive/feature/mobile/provider/ProvidersScreenViewModel.kt (76%) rename {app/src/main/java/com/flixclusive/presentation/mobile/utils => feature/mobile/provider/src/main/kotlin/com/flixclusive/feature/mobile/provider/util}/DragAndDropUtils.kt (95%) rename {app/src/main/java/com/flixclusive/presentation/mobile/utils => feature/mobile/provider/src/main/kotlin/com/flixclusive/feature/mobile/provider/util}/ItemListDragAndDropState.kt (92%) rename {app => feature/mobile/provider}/src/main/res/drawable/round_drag_indicator_24.xml (100%) create mode 100644 feature/mobile/recently-watched/.gitignore create mode 100644 feature/mobile/recently-watched/build.gradle.kts rename app/src/main/java/com/flixclusive/presentation/mobile/screens/preferences/recently_watched/RecentlyWatchedMobileScreen.kt => feature/mobile/recently-watched/src/main/kotlin/com/flixclusive/feature/mobile/recentlyWatched/RecentlyWatchedScreen.kt (51%) rename app/src/main/java/com/flixclusive/presentation/mobile/screens/preferences/recently_watched/RecentlyWatchedViewModel.kt => feature/mobile/recently-watched/src/main/kotlin/com/flixclusive/feature/mobile/recentlyWatched/RecentlyWatchedScreenViewModel.kt (72%) create mode 100644 feature/mobile/search-expanded/.gitignore create mode 100644 feature/mobile/search-expanded/build.gradle.kts rename app/src/main/java/com/flixclusive/presentation/mobile/screens/search/expanded_content/SearchScreenExpanded.kt => feature/mobile/search-expanded/src/main/kotlin/com/flixclusive/feature/mobile/searchExpanded/SearchExpandedScreen.kt (70%) rename app/src/main/java/com/flixclusive/presentation/mobile/screens/search/expanded_content/SearchExpandedViewModel.kt => feature/mobile/search-expanded/src/main/kotlin/com/flixclusive/feature/mobile/searchExpanded/SearchExpandedScreenViewModel.kt (72%) rename {app/src/main/java/com/flixclusive/presentation/mobile/screens/search/common => feature/mobile/search-expanded/src/main/kotlin/com/flixclusive/feature/mobile/searchExpanded}/SearchFilter.kt (54%) rename {app/src/main/java/com/flixclusive/presentation/mobile/screens/search/expanded_content => feature/mobile/search-expanded/src/main/kotlin/com/flixclusive/feature/mobile/searchExpanded}/SearchFiltersButtons.kt (76%) rename {app => feature/mobile/search-expanded}/src/main/res/drawable/close_square.xml (94%) create mode 100644 feature/mobile/search/.gitignore create mode 100644 feature/mobile/search/build.gradle.kts rename app/src/main/java/com/flixclusive/presentation/mobile/screens/search/content/SearchScreenContent.kt => feature/mobile/search/src/main/kotlin/com/flixclusive/feature/mobile/search/SearchScreen.kt (53%) create mode 100644 feature/mobile/search/src/main/kotlin/com/flixclusive/feature/mobile/search/SearchScreenViewModel.kt rename {app/src/main/java/com/flixclusive/presentation/mobile/screens/search/content => feature/mobile/search/src/main/kotlin/com/flixclusive/feature/mobile/search/component}/SearchItemCard.kt (82%) rename {app/src/main/java/com/flixclusive/presentation/mobile/screens/search/content => feature/mobile/search/src/main/kotlin/com/flixclusive/feature/mobile/search/component}/SearchItemRow.kt (62%) create mode 100644 feature/mobile/see-all/.gitignore create mode 100644 feature/mobile/see-all/build.gradle.kts rename app/src/main/java/com/flixclusive/presentation/mobile/common/composables/see_all/SeeAllMobileScreen.kt => feature/mobile/see-all/src/main/kotlin/com/flixclusive/feature/mobile/seeAll/SeeAllScreen.kt (67%) create mode 100644 feature/mobile/see-all/src/main/kotlin/com/flixclusive/feature/mobile/seeAll/SeeAllScreenNavArgs.kt rename {app/src/main/java/com/flixclusive/presentation/common/viewmodels/see_all => feature/mobile/see-all/src/main/kotlin/com/flixclusive/feature/mobile/seeAll}/SeeAllViewModel.kt (77%) create mode 100644 feature/mobile/settings/.gitignore create mode 100644 feature/mobile/settings/build.gradle.kts rename {app/src/main/java/com/flixclusive/presentation/mobile/screens/preferences => feature/mobile/settings/src/main/kotlin/com/flixclusive/feature/mobile}/settings/SettingsItem.kt (73%) rename app/src/main/java/com/flixclusive/presentation/mobile/screens/preferences/settings/SettingsMobileScreen.kt => feature/mobile/settings/src/main/kotlin/com/flixclusive/feature/mobile/settings/SettingsScreen.kt (52%) rename app/src/main/java/com/flixclusive/presentation/mobile/screens/preferences/settings/SettingsMobileScreenViewModel.kt => feature/mobile/settings/src/main/kotlin/com/flixclusive/feature/mobile/settings/SettingsScreenViewModel.kt (55%) create mode 100644 feature/mobile/settings/src/main/kotlin/com/flixclusive/feature/mobile/settings/component/SettingsGroup.kt create mode 100644 feature/mobile/settings/src/main/kotlin/com/flixclusive/feature/mobile/settings/component/SettingsGroupItem.kt rename {app/src/main/java/com/flixclusive/presentation/mobile/screens/preferences/settings/dialog_groups => feature/mobile/settings/src/main/kotlin/com/flixclusive/feature/mobile/settings/component/dialog}/BaseSettingsDialog.kt (88%) rename {app/src/main/java/com/flixclusive/presentation/mobile/screens/preferences/settings/dialog_groups => feature/mobile/settings/src/main/kotlin/com/flixclusive/feature/mobile/settings/component/dialog}/advanced/AdvancedDialogWrapper.kt (55%) rename {app/src/main/java/com/flixclusive/presentation/mobile/screens/preferences/settings/dialog_groups => feature/mobile/settings/src/main/kotlin/com/flixclusive/feature/mobile/settings/component/dialog}/advanced/dialog/AdvancedDialogDoH.kt (82%) rename {app/src/main/java/com/flixclusive/presentation/mobile/screens/preferences/settings/dialog_groups => feature/mobile/settings/src/main/kotlin/com/flixclusive/feature/mobile/settings/component/dialog}/player/PlayerDialogWrapper.kt (54%) rename {app/src/main/java/com/flixclusive/presentation/mobile/screens/preferences/settings/dialog_groups => feature/mobile/settings/src/main/kotlin/com/flixclusive/feature/mobile/settings/component/dialog}/player/dialog/PlayerBufferLength.kt (80%) rename {app/src/main/java/com/flixclusive/presentation/mobile/screens/preferences/settings/dialog_groups => feature/mobile/settings/src/main/kotlin/com/flixclusive/feature/mobile/settings/component/dialog}/player/dialog/PlayerBufferSize.kt (74%) rename {app/src/main/java/com/flixclusive/presentation/mobile/screens/preferences/settings/dialog_groups => feature/mobile/settings/src/main/kotlin/com/flixclusive/feature/mobile/settings/component/dialog}/player/dialog/PlayerDiskCacheSize.kt (61%) rename {app/src/main/java/com/flixclusive/presentation/mobile/screens/preferences/settings/dialog_groups => feature/mobile/settings/src/main/kotlin/com/flixclusive/feature/mobile/settings/component/dialog}/player/dialog/PlayerQuality.kt (77%) rename {app/src/main/java/com/flixclusive/presentation/mobile/screens/preferences/settings/dialog_groups => feature/mobile/settings/src/main/kotlin/com/flixclusive/feature/mobile/settings/component/dialog}/player/dialog/PlayerResizeMode.kt (72%) rename {app/src/main/java/com/flixclusive/presentation/mobile/screens/preferences/settings/dialog_groups => feature/mobile/settings/src/main/kotlin/com/flixclusive/feature/mobile/settings/component/dialog}/player/dialog/PlayerSeekLength.kt (81%) rename {app/src/main/java/com/flixclusive/presentation/mobile/screens/preferences/settings/dialog_groups => feature/mobile/settings/src/main/kotlin/com/flixclusive/feature/mobile/settings/component/dialog}/subtitles/SubtitleDialogWrapper.kt (63%) rename {app/src/main/java/com/flixclusive/presentation/mobile/screens/preferences/settings/dialog_groups => feature/mobile/settings/src/main/kotlin/com/flixclusive/feature/mobile/settings/component/dialog}/subtitles/SubtitlePreview.kt (79%) rename {app/src/main/java/com/flixclusive/presentation/mobile/screens/preferences/settings/dialog_groups => feature/mobile/settings/src/main/kotlin/com/flixclusive/feature/mobile/settings/component/dialog}/subtitles/SubtitleSettingsDialog.kt (89%) rename {app/src/main/java/com/flixclusive/presentation/mobile/screens/preferences/settings/dialog_groups => feature/mobile/settings/src/main/kotlin/com/flixclusive/feature/mobile/settings/component/dialog}/subtitles/dialog/SubtitleDialogEdgeType.kt (83%) rename {app/src/main/java/com/flixclusive/presentation/mobile/screens/preferences/settings/dialog_groups => feature/mobile/settings/src/main/kotlin/com/flixclusive/feature/mobile/settings/component/dialog}/subtitles/dialog/SubtitleDialogFontBackgroundColor.kt (84%) rename {app/src/main/java/com/flixclusive/presentation/mobile/screens/preferences/settings/dialog_groups => feature/mobile/settings/src/main/kotlin/com/flixclusive/feature/mobile/settings/component/dialog}/subtitles/dialog/SubtitleDialogFontColor.kt (80%) rename {app/src/main/java/com/flixclusive/presentation/mobile/screens/preferences/settings/dialog_groups => feature/mobile/settings/src/main/kotlin/com/flixclusive/feature/mobile/settings/component/dialog}/subtitles/dialog/SubtitleDialogFontStyle.kt (78%) rename {app/src/main/java/com/flixclusive/presentation/mobile/screens/preferences/settings/dialog_groups => feature/mobile/settings/src/main/kotlin/com/flixclusive/feature/mobile/settings/component/dialog}/subtitles/dialog/SubtitleDialogLanguages.kt (87%) rename {app/src/main/java/com/flixclusive/presentation/mobile/screens/preferences/settings/dialog_groups => feature/mobile/settings/src/main/kotlin/com/flixclusive/feature/mobile/settings/component/dialog}/subtitles/dialog/SubtitleDialogSize.kt (76%) create mode 100644 feature/mobile/settings/src/main/kotlin/com/flixclusive/feature/mobile/settings/component/dialog/subtitles/dialog/util/SubtitleSettingsHelper.kt rename app/src/main/java/com/flixclusive/presentation/utils/ColorPickerUtils.kt => feature/mobile/settings/src/main/kotlin/com/flixclusive/feature/mobile/settings/util/ColorPickerHelper.kt (98%) create mode 100644 feature/mobile/settings/src/main/kotlin/com/flixclusive/feature/mobile/settings/util/ComposeHelper.kt create mode 100644 feature/mobile/splash-screen/.gitignore create mode 100644 feature/mobile/splash-screen/build.gradle.kts rename app/src/main/java/com/flixclusive/presentation/mobile/screens/splash_screen/SplashMobileScreen.kt => feature/mobile/splash-screen/src/main/kotlin/com/flixclusive/feature/mobile/splashScreen/SplashScreen.kt (52%) create mode 100644 feature/mobile/splash-screen/src/main/kotlin/com/flixclusive/feature/mobile/splashScreen/component/CustomCheckbox.kt create mode 100644 feature/mobile/splash-screen/src/main/kotlin/com/flixclusive/feature/mobile/splashScreen/component/ErrorDialog.kt create mode 100644 feature/mobile/splash-screen/src/main/kotlin/com/flixclusive/feature/mobile/splashScreen/component/PlayerCacheSizeWarning.kt rename {app => feature/mobile/splash-screen}/src/main/res/drawable/flixclusive_animated_tag.xml (100%) create mode 100644 feature/mobile/splash-screen/src/main/res/drawable/warning.xml create mode 100644 feature/mobile/update/.gitignore create mode 100644 feature/mobile/update/build.gradle.kts create mode 100644 feature/mobile/update/src/main/AndroidManifest.xml rename app/src/main/java/com/flixclusive/presentation/mobile/screens/preferences/update/UpdateDialogScreen.kt => feature/mobile/update/src/main/kotlin/com/flixclusive/feature/mobile/update/UpdateDialog.kt (66%) rename app/src/main/java/com/flixclusive/presentation/mobile/screens/update/UpdateMobileActivity.kt => feature/mobile/update/src/main/kotlin/com/flixclusive/feature/mobile/update/UpdateScreen.kt (67%) rename {app => feature/mobile/update}/src/main/res/drawable/flixclusive_tag.xml (100%) rename {app => feature/mobile/update}/src/main/res/drawable/round_check_circle_outline_24.xml (100%) create mode 100644 feature/mobile/watchlist/.gitignore create mode 100644 feature/mobile/watchlist/build.gradle.kts create mode 100644 feature/mobile/watchlist/src/main/kotlin/com/flixclusive/feature/mobile/watchlist/WatchlistScreen.kt rename app/src/main/java/com/flixclusive/presentation/mobile/screens/preferences/watchlist/WatchlistViewModel.kt => feature/mobile/watchlist/src/main/kotlin/com/flixclusive/feature/mobile/watchlist/WatchlistScreenViewModel.kt (73%) rename {core/util/src/main/kotlin/com/flixclusive/core/util/database => model/database/src/main/kotlin/com/flixclusive/model/database/util}/WatchHistoryItemHelper.kt (96%) delete mode 100644 model/provider/src/main/res/values/strings.xml rename model/provider/src/main/kotlin/com/flixclusive/model/provider/ProviderWrapper.kt => provider/base/src/main/kotlin/com/flixclusive/provider/base/ProviderData.kt (68%) create mode 100644 service/.gitignore create mode 100644 service/build.gradle.kts create mode 100644 service/src/main/AndroidManifest.xml rename {app/src/main/java/com/flixclusive/service/app_updater => service/src/main/kotlin/com/flixclusive/service/update}/AppUpdateNotificationBuilder.kt (66%) rename {app/src/main/java/com/flixclusive/service/app_updater => service/src/main/kotlin/com/flixclusive/service/update}/AppUpdaterReceiver.kt (87%) rename {app/src/main/java/com/flixclusive/service/app_updater => service/src/main/kotlin/com/flixclusive/service/update}/AppUpdaterService.kt (75%) rename {app/src/main/java/com/flixclusive/service/utils => service/src/main/kotlin/com/flixclusive/service/update/util}/FileExtensions.kt (59%) rename {app/src/main/java/com/flixclusive/service/utils => service/src/main/kotlin/com/flixclusive/service/update/util}/NotificationExtensions.kt (87%) rename {app/src/main/java/com/flixclusive/service/app_updater/utils => service/src/main/kotlin/com/flixclusive/service/update/util}/OkHttpExtensions.kt (97%) rename {app/src/main/java/com/flixclusive/service/app_updater/utils => service/src/main/kotlin/com/flixclusive/service/update/util}/OkioExtensions.kt (90%) rename {app/src/main/java/com/flixclusive/service/app_updater/utils => service/src/main/kotlin/com/flixclusive/service/update/util}/ProgressListener.kt (66%) rename {app/src/main/java/com/flixclusive/service/app_updater/utils => service/src/main/kotlin/com/flixclusive/service/update/util}/ProgressResponseBody.kt (96%) rename app/src/main/res/drawable/round_skip_previous_24.xml => service/src/main/res/drawable/round_error_outline_24.xml (50%) rename {app => service}/src/main/res/drawable/round_refresh_24.xml (100%) rename {app => service}/src/main/res/drawable/round_system_update_alt_24.xml (100%) create mode 100644 service/src/main/res/values/colors.xml diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 000000000..ec4bb386b --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1 @@ +blank_issues_enabled: false \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/report_issue.yml b/.github/ISSUE_TEMPLATE/report_issue.yml new file mode 100644 index 000000000..5c5c0e30d --- /dev/null +++ b/.github/ISSUE_TEMPLATE/report_issue.yml @@ -0,0 +1,98 @@ +# Tachiyomi (RIP king!) issue template + +name: 🐞 Issue report +description: Report an issue in Flixclusive +labels: [Bug] +body: + + - type: textarea + id: reproduce-steps + attributes: + label: Steps to reproduce + description: Provide an example of the issue. + placeholder: | + Example: + 1. First step + 2. Second step + 3. Issue here + validations: + required: true + + - type: textarea + id: expected-behavior + attributes: + label: Expected behavior + description: Explain what you should expect to happen. + placeholder: | + Example: + "This should happen..." + validations: + required: true + + - type: textarea + id: actual-behavior + attributes: + label: Actual behavior + description: Explain what actually happens. + placeholder: | + Example: + "This happened instead..." + validations: + required: true + + - type: textarea + id: crash-logs + attributes: + label: Crash logs (or stack trace) + placeholder: | + You can paste the crash logs in plain text or upload it as an attachment. + + - type: input + id: flixclusive-version + attributes: + label: Flixclusive version + description: You can find your Flixclusive version in **Preferences → About Flixclusive**. + placeholder: | + Example: "1.2.1" + validations: + required: true + + - type: input + id: android-version + attributes: + label: Android version + description: You can find this somewhere in your Android settings. + placeholder: | + Example: "Android 11" + validations: + required: true + + - type: input + id: device + attributes: + label: Device + description: List your device and model. + placeholder: | + Example: "Google Pixel 5" + validations: + required: true + + - type: textarea + id: other-details + attributes: + label: Other details + placeholder: | + Additional details and attachments. + + - type: checkboxes + id: acknowledgements + attributes: + label: Acknowledgements + description: Please read carefully! Reading comprehension is rare nowadays. + options: + - label: I have searched the existing issues and this is a new ticket, **NOT** a duplicate or related to another open or closed issue. + required: true + - label: I have written a short but informative title. + required: true + - label: I have updated the app to the **[latest version](https://github.com/rhenwinch/Flixclusive/releases/latest)**. + required: true diff --git a/.github/ISSUE_TEMPLATE/request_feature.yml b/.github/ISSUE_TEMPLATE/request_feature.yml new file mode 100644 index 000000000..755a34751 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/request_feature.yml @@ -0,0 +1,24 @@ +# Tachiyomi (RIP king!) feature template + +name: ⭐ Feature request +description: Suggest a feature to improve Flixclusive +labels: [Feature request] +body: + + - type: textarea + id: feature-description + attributes: + label: Describe your suggested feature + description: How can Flixclusive be improved? + placeholder: | + Example: + "It should work like this..." + validations: + required: true + + - type: textarea + id: other-details + attributes: + label: Other details + placeholder: | + Additional details and attachments. diff --git a/.github/workflows/Build.yml b/.github/workflows/Build.yml new file mode 100644 index 000000000..737b40fb7 --- /dev/null +++ b/.github/workflows/Build.yml @@ -0,0 +1,75 @@ +name: GitHub Release with APKs + +on: + push: + branches: + - 'master' + tags: + - 'v*' + +concurrency: + group: "pre-release" + cancel-in-progress: true + +jobs: + build: + name: Build app + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Validate Gradle Wrapper + uses: gradle/wrapper-validation-action@v1 + + - name: Setup Android SDK + run: | + ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager "build-tools;29.0.3" + + - name: Set up JDK + uses: actions/setup-java@v4 + with: + java-version: 17 + distribution: adopt + + - name: Build Release + uses: gradle/gradle-command-action@v2 + with: + arguments: ktlintCheck :app:assemblePrerelease :app:assembleRelease + + - name: Get tag name + run: | + set -x + echo "VERSION_TAG=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_ENV + + - name: Sign APK + uses: r0adkll/sign-android-release@v1 + with: + releaseDirectory: app/build/outputs/apk/release + signingKeyBase64: ${{ secrets.SIGNING_KEY }} + alias: ${{ secrets.ALIAS }} + keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }} + keyPassword: ${{ secrets.KEY_PASSWORD }} + + - name: Clean up build artifacts= + run: | + set -e + mv app/build/outputs/apk/release/app-release.apk flixclusive-release.apk + + - name: Create Release + uses: softprops/action-gh-release@v1 + with: + tag_name: ${{ env.VERSION_TAG }} + name: ${{ env.VERSION_TAG }} + body: | + --- + **NOTE: Android TV is still unstable!! I advise not to use it yet** + + ### Updates for ${{ env.VERSION_TAG }}: + files: | + flixclusive-release.apk + draft: true + prerelease: false + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore index 4933299a1..45475aa44 100644 --- a/.gitignore +++ b/.gitignore @@ -13,4 +13,4 @@ .externalNativeBuild .cxx local.properties -app/google-services.json \ No newline at end of file +keystore.jks \ No newline at end of file diff --git a/.idea/androidTestResultsUserPreferences.xml b/.idea/androidTestResultsUserPreferences.xml deleted file mode 100644 index 76904ec91..000000000 --- a/.idea/androidTestResultsUserPreferences.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml index 625238858..bf231e7ee 100644 --- a/.idea/deploymentTargetDropDown.xml +++ b/.idea/deploymentTargetDropDown.xml @@ -2,13 +2,26 @@ - + - - + + + + + + + + + + + + + + + - + diff --git a/.idea/discord.xml b/.idea/discord.xml deleted file mode 100644 index d8e956166..000000000 --- a/.idea/discord.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 8d8c0c577..076f3a67e 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -17,7 +17,7 @@