├── .github ├── actions │ └── get-avd-info │ │ └── action.yml └── workflows │ ├── android.yml │ └── android_old.yml ├── .gitignore ├── .idea ├── .name ├── icon.svg └── runConfigurations │ ├── All_Tests.xml │ ├── Detekt.xml │ └── Lint.xml ├── LICENCE ├── README.md ├── app ├── .gitignore ├── build.gradle.kts ├── lint-baseline.xml ├── proguard-rules.pro └── src │ ├── androidTest │ └── AndroidManifest.xml │ └── main │ ├── AndroidManifest.xml │ ├── ic_launcher-playstore.png │ ├── java │ └── com │ │ └── infinitepower │ │ └── newquiz │ │ ├── NewQuizApp.kt │ │ ├── core │ │ ├── navigation │ │ │ ├── AppNavGraphs.kt │ │ │ ├── CommonNavGraphNavigator.kt │ │ │ └── NavigationItem.kt │ │ └── workers │ │ │ └── AppStartLoggingAnalyticsWorker.kt │ │ ├── initializer │ │ ├── EnqueueStartWorksInitializer.kt │ │ └── WorkManagerInitializer.kt │ │ └── ui │ │ ├── components │ │ ├── DataCollectionConsentDialog.kt │ │ └── DiamondsCounter.kt │ │ ├── main │ │ ├── MainActivity.kt │ │ ├── MainScreenUiEvent.kt │ │ ├── MainScreenUiState.kt │ │ └── MainViewModel.kt │ │ └── navigation │ │ ├── CompactNavigationContainer.kt │ │ ├── ExpandedNavigationContainer.kt │ │ ├── MediumNavigationContainer.kt │ │ ├── NavDrawerContent.kt │ │ └── NavigationContainer.kt │ └── res │ ├── drawable │ ├── round_password_24.xml │ ├── round_play_circle_24.xml │ └── round_quiz_24.xml │ ├── resources.properties │ ├── values-night │ └── splash_screen.xml │ ├── values │ ├── colors.xml │ ├── leak_canary.xml │ ├── splash_screen.xml │ └── strings.xml │ └── xml-v25 │ └── shortcuts.xml ├── build-logic ├── .gitignore ├── README.md ├── convention │ ├── build.gradle.kts │ └── src │ │ └── main │ │ └── kotlin │ │ ├── AndroidApplicationComposeConventionPlugin.kt │ │ ├── AndroidApplicationConventionPlugin.kt │ │ ├── AndroidApplicationFirebaseConventionPlugin.kt │ │ ├── AndroidComposeDestinationsConventionPlugin.kt │ │ ├── AndroidFeatureConventionPlugin.kt │ │ ├── AndroidHiltConventionPlugin.kt │ │ ├── AndroidLibraryComposeConventionPlugin.kt │ │ ├── AndroidLibraryConventionPlugin.kt │ │ ├── AndroidRoomConventionPlugin.kt │ │ ├── DetektConventionPlugin.kt │ │ ├── JvmLibraryConventionPlugin.kt │ │ ├── KotlinSerializationConventionPlugin.kt │ │ └── com │ │ └── infinitepower │ │ └── newquiz │ │ ├── AndroidCompose.kt │ │ ├── AndroidInstrumentedTests.kt │ │ ├── Flavors.kt │ │ ├── KotlinAndroid.kt │ │ ├── ProjectConfig.kt │ │ ├── ProjectExtensions.kt │ │ └── Utils.kt ├── gradle.properties └── settings.gradle.kts ├── build.gradle.kts ├── comparison-quiz ├── .gitignore ├── README.md ├── build.gradle.kts ├── consumer-rules.pro ├── proguard-rules.pro └── src │ ├── androidTest │ ├── AndroidManifest.xml │ └── java │ │ └── com │ │ └── infinitepower │ │ └── newquiz │ │ └── comparison_quiz │ │ ├── data │ │ └── comparison_quiz │ │ │ └── FakeComparisonQuizRepositoryImpl.kt │ │ ├── list │ │ └── components │ │ │ ├── ComparisonModeComponentTest.kt │ │ │ └── ComparisonModeComponentsTest.kt │ │ └── ui │ │ ├── ComparisonQuizScreenTest.kt │ │ └── components │ │ └── ComparisonItemTest.kt │ ├── main │ ├── AndroidManifest.xml │ └── java │ │ └── com │ │ └── infinitepower │ │ └── newquiz │ │ └── comparison_quiz │ │ ├── core │ │ ├── ComparisonQuizCoreImpl.kt │ │ └── workers │ │ │ └── ComparisonQuizEndGameWorker.kt │ │ ├── di │ │ └── ComparisonQuizModule.kt │ │ ├── list │ │ ├── ComparisonQuizListScreen.kt │ │ ├── ComparisonQuizListScreenUiEvent.kt │ │ ├── ComparisonQuizListScreenUiState.kt │ │ ├── ComparisonQuizListScreenViewModel.kt │ │ └── components │ │ │ ├── ComparisonModeComponent.kt │ │ │ └── ComparisonModeComponents.kt │ │ └── ui │ │ ├── AnimationState.kt │ │ ├── ComparisonQuizScreen.kt │ │ ├── ComparisonQuizUiEvent.kt │ │ ├── ComparisonQuizUiState.kt │ │ ├── ComparisonQuizViewModel.kt │ │ └── components │ │ ├── ComparisonItem.kt │ │ ├── ComparisonMidContent.kt │ │ ├── GameOverContent.kt │ │ └── MiddleCircle.kt │ └── test │ └── java │ └── com │ └── infinitepower │ └── newquiz │ └── comparison_quiz │ └── core │ └── ComparisonQuizCoreImplTest.kt ├── compose_compiler_config.conf ├── core ├── .gitignore ├── analytics │ ├── .gitignore │ ├── LOGGING_ANALYTICS.md │ ├── README.md │ ├── build.gradle.kts │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src │ │ ├── foss │ │ └── kotlin │ │ │ └── com │ │ │ └── infinitepower │ │ │ └── newquiz │ │ │ └── core │ │ │ └── analytics │ │ │ └── FossAnalyticsModule.kt │ │ ├── main │ │ ├── AndroidManifest.xml │ │ └── kotlin │ │ │ └── com │ │ │ └── infinitepower │ │ │ └── newquiz │ │ │ └── core │ │ │ └── analytics │ │ │ ├── AnalyticsEvent.kt │ │ │ ├── AnalyticsHelper.kt │ │ │ ├── LocalDebugAnalyticsHelper.kt │ │ │ ├── NoOpAnalyticsHelper.kt │ │ │ ├── UiHelpers.kt │ │ │ └── UserProperty.kt │ │ └── normal │ │ └── kotlin │ │ └── com │ │ └── infinitepower │ │ └── newquiz │ │ └── core │ │ └── analytics │ │ ├── FirebaseAnalyticsHelper.kt │ │ └── NormalAnalyticsModule.kt ├── build.gradle.kts ├── consumer-rules.pro ├── database │ ├── .gitignore │ ├── build.gradle.kts │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ ├── schemas │ │ └── com.infinitepower.newquiz.core.database.AppDatabase │ │ │ ├── 1.json │ │ │ ├── 2.json │ │ │ ├── 3.json │ │ │ ├── 4.json │ │ │ ├── 5.json │ │ │ ├── 6.json │ │ │ └── 7.json │ └── src │ │ ├── androidTest │ │ ├── AndroidManifest.xml │ │ └── kotlin │ │ │ └── com │ │ │ └── infinitepower │ │ │ └── newquiz │ │ │ └── core │ │ │ └── database │ │ │ └── dao │ │ │ └── DailyChallengeDaoTest.kt │ │ └── main │ │ ├── AndroidManifest.xml │ │ └── kotlin │ │ └── com │ │ └── infinitepower │ │ └── newquiz │ │ └── core │ │ └── database │ │ ├── AppDatabase.kt │ │ ├── dao │ │ ├── DailyChallengeDao.kt │ │ ├── GameResultDao.kt │ │ ├── MazeQuizDao.kt │ │ └── SavedMultiChoiceQuestionsDao.kt │ │ ├── di │ │ ├── DaoModule.kt │ │ └── DatabaseModule.kt │ │ ├── model │ │ ├── DailyChallengeTaskEntity.kt │ │ ├── MazeQuizItemEntity.kt │ │ ├── MultiChoiceQuestionEntity.kt │ │ └── user │ │ │ ├── BaseGameResultEntity.kt │ │ │ ├── ComparisonQuizGameResultEntity.kt │ │ │ ├── MultiChoiceGameResultEntity.kt │ │ │ └── WordleGameResultEntity.kt │ │ └── util │ │ ├── converters │ │ ├── ListConverter.kt │ │ ├── LocalDateConverter.kt │ │ ├── MathFormulaConverter.kt │ │ └── QuestionDifficultyConverter.kt │ │ └── mappers │ │ └── MultiChoiceQuestionMapper.kt ├── datastore │ ├── .gitignore │ ├── build.gradle.kts │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src │ │ ├── main │ │ ├── AndroidManifest.xml │ │ └── kotlin │ │ │ └── com │ │ │ └── infinitepower │ │ │ └── newquiz │ │ │ └── core │ │ │ └── datastore │ │ │ ├── PreferenceRequest.kt │ │ │ ├── common │ │ │ ├── LocalUserCommon.kt │ │ │ ├── RecentCategoryDataStoreCommon.kt │ │ │ └── SettingsCommon.kt │ │ │ ├── di │ │ │ ├── LocalUserDatastoreModule.kt │ │ │ ├── RecentCategoriesDatastoreModule.kt │ │ │ └── SettingsDataStoreModule.kt │ │ │ └── manager │ │ │ ├── DataStoreManager.kt │ │ │ └── PreferencesDatastoreManager.kt │ │ ├── normal │ │ └── kotlin │ │ │ └── com │ │ │ └── infinitepower │ │ │ └── newquiz │ │ │ └── core │ │ │ └── datastore │ │ │ ├── common │ │ │ ├── DataAnalyticsCommon.kt │ │ │ └── TranslationCommon.kt │ │ │ └── di │ │ │ └── DataAnalyticsDatastoreModule.kt │ │ └── test │ │ └── kotlin │ │ └── com │ │ └── infinitepower │ │ └── newquiz │ │ └── core │ │ └── datastore │ │ └── manager │ │ └── PreferencesDatastoreManagerTest.kt ├── proguard-rules.pro ├── remote-config │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ └── src │ │ ├── foss │ │ └── kotlin │ │ │ └── com │ │ │ └── infinitepower │ │ │ └── newquiz │ │ │ └── core │ │ │ └── remote_config │ │ │ └── initializer │ │ │ └── RemoteConfigInitializer.kt │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── kotlin │ │ │ └── com │ │ │ │ └── infinitepower │ │ │ │ └── newquiz │ │ │ │ └── core │ │ │ │ └── remote_config │ │ │ │ ├── LocalDefaultsRemoteConfig.kt │ │ │ │ ├── RemoteConfig.kt │ │ │ │ ├── RemoteConfigValue.kt │ │ │ │ └── RemoteConfigXmlParser.kt │ │ └── res │ │ │ └── xml │ │ │ └── remote_config_defaults.xml │ │ ├── normal │ │ └── kotlin │ │ │ └── com │ │ │ └── infinitepower │ │ │ └── newquiz │ │ │ └── core │ │ │ └── remote_config │ │ │ ├── FirebaseRemoteConfigImpl.kt │ │ │ └── initializer │ │ │ └── RemoteConfigInitializer.kt │ │ └── test │ │ └── kotlin │ │ └── com │ │ └── infinitepower │ │ └── newquiz │ │ └── core │ │ └── remote_config │ │ ├── LocalRemoteConfig.kt │ │ └── RemoteConfigTest.kt ├── src │ ├── androidTest │ │ ├── AndroidManifest.xml │ │ ├── assets │ │ │ └── buttons │ │ │ │ ├── back_button.png │ │ │ │ └── back_button2.png │ │ └── java │ │ │ └── com │ │ │ └── infinitepower │ │ │ └── newquiz │ │ │ └── core │ │ │ └── ui │ │ │ └── components │ │ │ ├── RemainingTimeComponentTest.kt │ │ │ ├── category │ │ │ ├── CategoryComponentTest.kt │ │ │ └── CategoryConnectionInfoBadgeTest.kt │ │ │ ├── icon │ │ │ └── button │ │ │ │ └── BackIconButtonTest.kt │ │ │ └── skip_question │ │ │ └── SkipQuestionDialogTest.kt │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── com │ │ │ │ └── infinitepower │ │ │ │ └── newquiz │ │ │ │ └── core │ │ │ │ ├── NumberFormatter.kt │ │ │ │ ├── common │ │ │ │ ├── BaseApiUrls.kt │ │ │ │ ├── Common.kt │ │ │ │ ├── compose │ │ │ │ │ └── preview │ │ │ │ │ │ └── BooleanPreviewParameterProvider.kt │ │ │ │ └── database │ │ │ │ │ └── DatabaseCommon.kt │ │ │ │ ├── compose │ │ │ │ └── preferences │ │ │ │ │ └── LocalPreferenceEnabledStatus.kt │ │ │ │ ├── di │ │ │ │ ├── KtorModule.kt │ │ │ │ └── NetworkStatusModule.kt │ │ │ │ ├── game │ │ │ │ ├── ComparisonQuizCore.kt │ │ │ │ ├── GameCore.kt │ │ │ │ └── SkipGame.kt │ │ │ │ ├── math │ │ │ │ └── evaluator │ │ │ │ │ ├── Expressions.kt │ │ │ │ │ └── internal │ │ │ │ │ ├── Evaluator.kt │ │ │ │ │ ├── Expr.kt │ │ │ │ │ ├── Function.kt │ │ │ │ │ ├── Parser.kt │ │ │ │ │ ├── Scanner.kt │ │ │ │ │ ├── Token.kt │ │ │ │ │ └── TokenType.kt │ │ │ │ ├── navigation │ │ │ │ └── MazeNavigator.kt │ │ │ │ ├── network │ │ │ │ ├── NetworkStatusTracker.kt │ │ │ │ └── NetworkStatusTrackerImpl.kt │ │ │ │ ├── theme │ │ │ │ ├── ExtendedColor.kt │ │ │ │ ├── LocalAnimationsEnabled.kt │ │ │ │ ├── Spacing.kt │ │ │ │ ├── Theme.kt │ │ │ │ └── Type.kt │ │ │ │ ├── ui │ │ │ │ ├── DisabledEmphasisWrappers.kt │ │ │ │ ├── ObserveAsEvents.kt │ │ │ │ ├── SnackbarController.kt │ │ │ │ ├── components │ │ │ │ │ ├── AppNameWithLogo.kt │ │ │ │ │ ├── RemainingTimeComponent.kt │ │ │ │ │ ├── RoundedPolygonShape.kt │ │ │ │ │ ├── category │ │ │ │ │ │ ├── CategoryBadge.kt │ │ │ │ │ │ └── CategoryComponent.kt │ │ │ │ │ ├── icon │ │ │ │ │ │ └── button │ │ │ │ │ │ │ └── BackIconButton.kt │ │ │ │ │ └── skip_question │ │ │ │ │ │ ├── SkipButton.kt │ │ │ │ │ │ └── SkipQuestionDialog.kt │ │ │ │ ├── home │ │ │ │ │ ├── ExpandCategoriesButton.kt │ │ │ │ │ ├── HomeCategoriesItems.kt │ │ │ │ │ └── HomeLazyColumn.kt │ │ │ │ ├── home_card │ │ │ │ │ ├── HomeListContent.kt │ │ │ │ │ ├── components │ │ │ │ │ │ ├── HomeCardIcon.kt │ │ │ │ │ │ ├── HomeCardItemContent.kt │ │ │ │ │ │ ├── HomeGroupTitle.kt │ │ │ │ │ │ ├── HomeHorizontalItems.kt │ │ │ │ │ │ ├── HomeLargeCard.kt │ │ │ │ │ │ ├── HomeMediumCard.kt │ │ │ │ │ │ └── PlayRandomQuizCard.kt │ │ │ │ │ └── model │ │ │ │ │ │ └── HomeCardItem.kt │ │ │ │ ├── icons │ │ │ │ │ └── TrophyIcon.kt │ │ │ │ └── text │ │ │ │ │ └── CompactDecimalText.kt │ │ │ │ └── util │ │ │ │ ├── ComposeUtils.kt │ │ │ │ ├── PackageUtils.kt │ │ │ │ ├── UiTextUtils.kt │ │ │ │ ├── UriUtils.kt │ │ │ │ ├── android │ │ │ │ ├── DrawableUtils.kt │ │ │ │ └── resources │ │ │ │ │ └── ResourcesUtil.kt │ │ │ │ ├── collections │ │ │ │ └── Collections.kt │ │ │ │ ├── kotlin │ │ │ │ ├── BooleanUtils.kt │ │ │ │ ├── CollectionsUtils.kt │ │ │ │ ├── Math.kt │ │ │ │ ├── NumberUtils.kt │ │ │ │ └── SetUtils.kt │ │ │ │ └── model │ │ │ │ └── QuestionDifficultyUtil.kt │ │ └── res │ │ │ ├── drawable-hdpi │ │ │ ├── animals.webp │ │ │ ├── art.webp │ │ │ ├── books.webp │ │ │ ├── celebrities.webp │ │ │ ├── entertainment_board_games.webp │ │ │ ├── entertainment_cartoon_and_animations.webp │ │ │ ├── entertainment_comics.webp │ │ │ ├── entertainment_japanese_anime_and_manga.webp │ │ │ ├── entertainment_television.webp │ │ │ ├── entertainment_video_games.webp │ │ │ ├── films.webp │ │ │ ├── general_knowledge.webp │ │ │ ├── geography.webp │ │ │ ├── history.webp │ │ │ ├── music.webp │ │ │ ├── musicals_and_theatres.webp │ │ │ ├── mythology.webp │ │ │ ├── politics.webp │ │ │ ├── science_and_nature.webp │ │ │ ├── science_computers.webp │ │ │ ├── science_gadgets.webp │ │ │ ├── science_mathematics.webp │ │ │ ├── sports.webp │ │ │ └── vehicles.webp │ │ │ ├── drawable-mdpi │ │ │ ├── animals.webp │ │ │ ├── art.webp │ │ │ ├── books.webp │ │ │ ├── celebrities.webp │ │ │ ├── entertainment_board_games.webp │ │ │ ├── entertainment_cartoon_and_animations.webp │ │ │ ├── entertainment_comics.webp │ │ │ ├── entertainment_japanese_anime_and_manga.webp │ │ │ ├── entertainment_television.webp │ │ │ ├── entertainment_video_games.webp │ │ │ ├── films.webp │ │ │ ├── general_knowledge.webp │ │ │ ├── geography.webp │ │ │ ├── history.webp │ │ │ ├── music.webp │ │ │ ├── musicals_and_theatres.webp │ │ │ ├── mythology.webp │ │ │ ├── politics.webp │ │ │ ├── science_and_nature.webp │ │ │ ├── science_computers.webp │ │ │ ├── science_gadgets.webp │ │ │ ├── science_mathematics.webp │ │ │ ├── sports.webp │ │ │ └── vehicles.webp │ │ │ ├── drawable-xhdpi │ │ │ ├── animals.webp │ │ │ ├── art.webp │ │ │ ├── books.webp │ │ │ ├── celebrities.webp │ │ │ ├── entertainment_board_games.webp │ │ │ ├── entertainment_cartoon_and_animations.webp │ │ │ ├── entertainment_comics.webp │ │ │ ├── entertainment_japanese_anime_and_manga.webp │ │ │ ├── entertainment_television.webp │ │ │ ├── entertainment_video_games.webp │ │ │ ├── films.webp │ │ │ ├── general_knowledge.webp │ │ │ ├── geography.webp │ │ │ ├── history.webp │ │ │ ├── music.webp │ │ │ ├── musicals_and_theatres.webp │ │ │ ├── mythology.webp │ │ │ ├── politics.webp │ │ │ ├── science_and_nature.webp │ │ │ ├── science_computers.webp │ │ │ ├── science_gadgets.webp │ │ │ ├── science_mathematics.webp │ │ │ ├── sports.webp │ │ │ └── vehicles.webp │ │ │ ├── drawable-xxhdpi │ │ │ ├── animals.webp │ │ │ ├── art.webp │ │ │ ├── books.webp │ │ │ ├── celebrities.webp │ │ │ ├── entertainment_board_games.webp │ │ │ ├── entertainment_cartoon_and_animations.webp │ │ │ ├── entertainment_comics.webp │ │ │ ├── entertainment_japanese_anime_and_manga.webp │ │ │ ├── entertainment_television.webp │ │ │ ├── entertainment_video_games.webp │ │ │ ├── films.webp │ │ │ ├── general_knowledge.webp │ │ │ ├── geography.webp │ │ │ ├── history.webp │ │ │ ├── music.webp │ │ │ ├── musicals_and_theatres.webp │ │ │ ├── mythology.webp │ │ │ ├── politics.webp │ │ │ ├── science_and_nature.webp │ │ │ ├── science_computers.webp │ │ │ ├── science_gadgets.webp │ │ │ ├── science_mathematics.webp │ │ │ ├── sports.webp │ │ │ └── vehicles.webp │ │ │ ├── drawable-xxxhdpi │ │ │ ├── animals.webp │ │ │ ├── art.webp │ │ │ ├── books.webp │ │ │ ├── celebrities.webp │ │ │ ├── entertainment_board_games.webp │ │ │ ├── entertainment_cartoon_and_animations.webp │ │ │ ├── entertainment_comics.webp │ │ │ ├── entertainment_japanese_anime_and_manga.webp │ │ │ ├── entertainment_television.webp │ │ │ ├── entertainment_video_games.webp │ │ │ ├── films.webp │ │ │ ├── general_knowledge.webp │ │ │ ├── geography.webp │ │ │ ├── history.webp │ │ │ ├── music.webp │ │ │ ├── musicals_and_theatres.webp │ │ │ ├── mythology.webp │ │ │ ├── politics.webp │ │ │ ├── science_and_nature.webp │ │ │ ├── science_computers.webp │ │ │ ├── science_gadgets.webp │ │ │ ├── science_mathematics.webp │ │ │ ├── sports.webp │ │ │ └── vehicles.webp │ │ │ ├── drawable │ │ │ ├── github_logo.xml │ │ │ ├── logo_monochromatic.xml │ │ │ ├── round_android_24.xml │ │ │ └── round_flag_circle_24.xml │ │ │ ├── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.webp │ │ │ ├── ic_launcher_foreground.webp │ │ │ └── ic_launcher_round.webp │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.webp │ │ │ ├── ic_launcher_foreground.webp │ │ │ └── ic_launcher_round.webp │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.webp │ │ │ ├── ic_launcher_foreground.webp │ │ │ └── ic_launcher_round.webp │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.webp │ │ │ ├── ic_launcher_foreground.webp │ │ │ └── ic_launcher_round.webp │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher_foreground.webp │ │ │ └── ic_launcher_round.webp │ │ │ ├── raw │ │ │ ├── trophy2.json │ │ │ ├── trophy_winner.json │ │ │ ├── wordle_list.txt │ │ │ ├── wordle_list_es.txt │ │ │ ├── wordle_list_fr.txt │ │ │ └── wordle_list_pt.txt │ │ │ ├── values-de │ │ │ └── strings.xml │ │ │ ├── values-es │ │ │ └── strings.xml │ │ │ ├── values-et │ │ │ └── strings.xml │ │ │ ├── values-fr │ │ │ └── strings.xml │ │ │ ├── values-nb-rNO │ │ │ └── strings.xml │ │ │ ├── values-night │ │ │ └── themes.xml │ │ │ ├── values-pt │ │ │ └── strings.xml │ │ │ ├── values-ta │ │ │ └── strings.xml │ │ │ ├── values-v29 │ │ │ └── themes.xml │ │ │ └── values │ │ │ ├── ic_launcher_background.xml │ │ │ ├── strings.xml │ │ │ └── themes.xml │ ├── normal │ │ ├── AndroidManifest.xml │ │ └── kotlin │ │ │ └── com │ │ │ └── infinitepower │ │ │ └── newquiz │ │ │ └── core │ │ │ └── initializer │ │ │ └── CoreFirebaseInitializer.kt │ └── test │ │ └── java │ │ └── com │ │ └── infinitepower │ │ └── newquiz │ │ └── core │ │ ├── NumberFormatterTest.kt │ │ ├── game │ │ └── ComparisonQuizDataTest.kt │ │ └── util │ │ ├── UiTextTests.kt │ │ ├── collections │ │ └── CollectionsTest.kt │ │ └── kotlin │ │ ├── BooleanUtilsTest.kt │ │ ├── CollectionsUtilsTest.kt │ │ ├── MathTest.kt │ │ ├── NumberUtilsTest.kt │ │ └── SetUtilsTest.kt ├── testing │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ └── src │ │ ├── foss │ │ └── kotlin │ │ │ └── com │ │ │ └── infinitepower │ │ │ └── newquiz │ │ │ └── core │ │ │ └── testing │ │ │ └── di │ │ │ └── TestRemoteConfigModule.kt │ │ ├── main │ │ ├── AndroidManifest.xml │ │ └── kotlin │ │ │ └── com │ │ │ └── infinitepower │ │ │ └── newquiz │ │ │ └── core │ │ │ └── testing │ │ │ ├── NewQuizTestRunner.kt │ │ │ ├── ScreenshotComparator.kt │ │ │ ├── data │ │ │ ├── fake │ │ │ │ ├── FakeComparisonQuizData.kt │ │ │ │ └── FakeData.kt │ │ │ └── repository │ │ │ │ ├── comparison_quiz │ │ │ │ └── FakeComparisonQuizRepositoryImpl.kt │ │ │ │ ├── multi_choice_quiz │ │ │ │ └── TestMultiChoiceQuestionRepositoryImpl.kt │ │ │ │ └── numbers │ │ │ │ └── FakeNumberTriviaQuestionApiImpl.kt │ │ │ ├── di │ │ │ ├── TestDatabaseModule.kt │ │ │ ├── TestKtorModule.kt │ │ │ ├── TestRepositoryModule.kt │ │ │ └── WorkManagerModule.kt │ │ │ ├── domain │ │ │ ├── FakeDailyChallengeDao.kt │ │ │ └── FakeGameResultDao.kt │ │ │ ├── ui │ │ │ └── theme │ │ │ │ └── TestTheme.kt │ │ │ └── utils │ │ │ ├── ComposeRule.kt │ │ │ ├── LocaleUtils.kt │ │ │ └── LogUtils.kt │ │ └── normal │ │ └── kotlin │ │ └── com │ │ └── infinitepower │ │ └── newquiz │ │ └── core │ │ └── testing │ │ └── di │ │ ├── RemoteConfigModule.kt │ │ └── TestAnalyticsModule.kt ├── translation │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src │ │ ├── androidTestNormal │ │ └── kotlin │ │ │ └── com │ │ │ └── infinitepower │ │ │ └── newquiz │ │ │ └── translation │ │ │ └── GoogleTranslatorUtilTest.kt │ │ ├── foss │ │ └── kotlin │ │ │ └── com │ │ │ └── infinitepower │ │ │ └── newquiz │ │ │ └── core │ │ │ └── translation │ │ │ ├── NoTranslatorUtil.kt │ │ │ └── di │ │ │ └── TranslatorModule.kt │ │ ├── main │ │ ├── AndroidManifest.xml │ │ └── kotlin │ │ │ └── com │ │ │ └── infinitepower │ │ │ └── newquiz │ │ │ └── core │ │ │ └── translation │ │ │ ├── TranslatorLanguageSettings.kt │ │ │ ├── TranslatorModelState.kt │ │ │ └── TranslatorUtil.kt │ │ ├── normal │ │ └── kotlin │ │ │ └── com │ │ │ └── infinitepower │ │ │ └── newquiz │ │ │ └── core │ │ │ └── translation │ │ │ ├── GoogleTranslatorUtil.kt │ │ │ └── di │ │ │ └── GoogleTranslatorModule.kt │ │ ├── testFoss │ │ └── kotlin │ │ │ └── com │ │ │ └── infinitepower │ │ │ └── newquiz │ │ │ └── core │ │ │ └── translation │ │ │ └── NoTranslatorUtilTest.kt │ │ └── testNormal │ │ └── kotlin │ │ └── com │ │ └── infinitepower │ │ └── newquiz │ │ └── core │ │ └── translation │ │ └── GoogleTranslatorUtilTest.kt └── user-services │ ├── .gitignore │ ├── build.gradle.kts │ └── src │ ├── androidTest │ ├── AndroidManifest.xml │ └── kotlin │ │ └── com │ │ └── infinitepower │ │ └── newquiz │ │ └── core │ │ └── user_services │ │ └── LocalUserServiceImplTest.kt │ ├── main │ ├── AndroidManifest.xml │ └── kotlin │ │ └── com │ │ └── infinitepower │ │ └── newquiz │ │ └── core │ │ └── user_services │ │ ├── DateTimeRangeFormatter.kt │ │ ├── GameResultTracker.kt │ │ ├── InsufficientDiamondsException.kt │ │ ├── LocalUserService.kt │ │ ├── LocalUserServiceImpl.kt │ │ ├── UserService.kt │ │ ├── XpManager.kt │ │ ├── data │ │ └── xp │ │ │ ├── ComparisonQuizXpGeneratorImpl.kt │ │ │ ├── MultiChoiceQuizXpGeneratorImpl.kt │ │ │ └── WordleXpGeneratorImpl.kt │ │ ├── di │ │ ├── UserModule.kt │ │ └── XpGeneratorsModule.kt │ │ ├── domain │ │ └── xp │ │ │ ├── ComparisonQuizXpGenerator.kt │ │ │ ├── MultiChoiceQuizXpGenerator.kt │ │ │ ├── WordleXpGenerator.kt │ │ │ └── XpGenerator.kt │ │ ├── model │ │ └── User.kt │ │ └── workers │ │ └── MultiChoiceQuizEndGameWorker.kt │ └── test │ └── kotlin │ └── com │ └── infinitepower │ └── newquiz │ └── core │ └── user_services │ ├── DateTimeRangeFormatterTest.kt │ ├── LocalUserServiceImplUnitTest.kt │ ├── data │ └── xp │ │ ├── ComparisonQuizXpGeneratorImplTest.kt │ │ ├── MultiChoiceQuizXpGeneratorImplTest.kt │ │ └── WordleXpGeneratorImplTest.kt │ └── model │ └── UserTest.kt ├── data ├── .gitignore ├── build.gradle.kts ├── consumer-rules.pro ├── proguard-rules.pro └── src │ ├── androidTest │ ├── AndroidManifest.xml │ └── java │ │ └── com │ │ └── infinitepower │ │ └── newquiz │ │ └── data │ │ ├── daily_challenge │ │ └── DailyChallengeRepositoryImplTest.kt │ │ ├── repository │ │ ├── comparison_quiz │ │ │ └── ComparisonQuizRepositoryImplTest.kt │ │ └── country │ │ │ └── CountryRepositoryImplTest.kt │ │ └── worker │ │ ├── daily_challenge │ │ └── VerifyDailyChallengeWorkerTest.kt │ │ └── maze │ │ ├── CleanMazeQuizWorkerTest.kt │ │ └── GenerateMazeQuizWorkerTest.kt │ ├── main │ ├── AndroidManifest.xml │ ├── assets │ │ └── flags │ │ │ ├── ad.svg │ │ │ ├── ae.svg │ │ │ ├── af.svg │ │ │ ├── ag.svg │ │ │ ├── al.svg │ │ │ ├── am.svg │ │ │ ├── ao.svg │ │ │ ├── ar.svg │ │ │ ├── at.svg │ │ │ ├── au.svg │ │ │ ├── az.svg │ │ │ ├── ba.svg │ │ │ ├── bb.svg │ │ │ ├── bd.svg │ │ │ ├── be.svg │ │ │ ├── bf.svg │ │ │ ├── bg.svg │ │ │ ├── bh.svg │ │ │ ├── bi.svg │ │ │ ├── bj.svg │ │ │ ├── bn.svg │ │ │ ├── bo.svg │ │ │ ├── br.svg │ │ │ ├── bs.svg │ │ │ ├── bt.svg │ │ │ ├── bw.svg │ │ │ ├── by.svg │ │ │ ├── bz.svg │ │ │ ├── ca.svg │ │ │ ├── cd.svg │ │ │ ├── cf.svg │ │ │ ├── cg.svg │ │ │ ├── ch.svg │ │ │ ├── ci.svg │ │ │ ├── cl.svg │ │ │ ├── cm.svg │ │ │ ├── cn.svg │ │ │ ├── co.svg │ │ │ ├── cr.svg │ │ │ ├── cu.svg │ │ │ ├── cv.svg │ │ │ ├── cy.svg │ │ │ ├── cz.svg │ │ │ ├── de.svg │ │ │ ├── dj.svg │ │ │ ├── dk.svg │ │ │ ├── dm.svg │ │ │ ├── do.svg │ │ │ ├── dz.svg │ │ │ ├── ec.svg │ │ │ ├── ee.svg │ │ │ ├── eg.svg │ │ │ ├── eh.svg │ │ │ ├── er.svg │ │ │ ├── es.svg │ │ │ ├── et.svg │ │ │ ├── fi.svg │ │ │ ├── fj.svg │ │ │ ├── fm.svg │ │ │ ├── fr.svg │ │ │ ├── ga.svg │ │ │ ├── gb.svg │ │ │ ├── gd.svg │ │ │ ├── ge.svg │ │ │ ├── gh.svg │ │ │ ├── gm.svg │ │ │ ├── gn.svg │ │ │ ├── gq.svg │ │ │ ├── gr.svg │ │ │ ├── gt.svg │ │ │ ├── gw.svg │ │ │ ├── gy.svg │ │ │ ├── hn.svg │ │ │ ├── hr.svg │ │ │ ├── ht.svg │ │ │ ├── hu.svg │ │ │ ├── id.svg │ │ │ ├── ie.svg │ │ │ ├── il.svg │ │ │ ├── in.svg │ │ │ ├── iq.svg │ │ │ ├── ir.svg │ │ │ ├── is.svg │ │ │ ├── it.svg │ │ │ ├── jm.svg │ │ │ ├── jo.svg │ │ │ ├── jp.svg │ │ │ ├── ke.svg │ │ │ ├── kg.svg │ │ │ ├── kh.svg │ │ │ ├── ki.svg │ │ │ ├── km.svg │ │ │ ├── kn.svg │ │ │ ├── kp.svg │ │ │ ├── kr.svg │ │ │ ├── kw.svg │ │ │ ├── kz.svg │ │ │ ├── la.svg │ │ │ ├── lb.svg │ │ │ ├── lc.svg │ │ │ ├── li.svg │ │ │ ├── lk.svg │ │ │ ├── lr.svg │ │ │ ├── ls.svg │ │ │ ├── lt.svg │ │ │ ├── lu.svg │ │ │ ├── lv.svg │ │ │ ├── ly.svg │ │ │ ├── ma.svg │ │ │ ├── mc.svg │ │ │ ├── md.svg │ │ │ ├── me.svg │ │ │ ├── mg.svg │ │ │ ├── mh.svg │ │ │ ├── mk.svg │ │ │ ├── ml.svg │ │ │ ├── mm.svg │ │ │ ├── mn.svg │ │ │ ├── mr.svg │ │ │ ├── mt.svg │ │ │ ├── mu.svg │ │ │ ├── mv.svg │ │ │ ├── mw.svg │ │ │ ├── mx.svg │ │ │ ├── my.svg │ │ │ ├── mz.svg │ │ │ ├── na.svg │ │ │ ├── ne.svg │ │ │ ├── ng.svg │ │ │ ├── ni.svg │ │ │ ├── nl.svg │ │ │ ├── no.svg │ │ │ ├── np.svg │ │ │ ├── nr.svg │ │ │ ├── nz.svg │ │ │ ├── om.svg │ │ │ ├── pa.svg │ │ │ ├── pe.svg │ │ │ ├── pg.svg │ │ │ ├── ph.svg │ │ │ ├── pk.svg │ │ │ ├── pl.svg │ │ │ ├── pt.svg │ │ │ ├── pw.svg │ │ │ ├── py.svg │ │ │ ├── qa.svg │ │ │ ├── ro.svg │ │ │ ├── rs.svg │ │ │ ├── ru.svg │ │ │ ├── rw.svg │ │ │ ├── sa.svg │ │ │ ├── sb.svg │ │ │ ├── sc.svg │ │ │ ├── sd.svg │ │ │ ├── se.svg │ │ │ ├── sg.svg │ │ │ ├── si.svg │ │ │ ├── sk.svg │ │ │ ├── sl.svg │ │ │ ├── sm.svg │ │ │ ├── sn.svg │ │ │ ├── so.svg │ │ │ ├── sr.svg │ │ │ ├── ss.svg │ │ │ ├── st.svg │ │ │ ├── sv.svg │ │ │ ├── sy.svg │ │ │ ├── sz.svg │ │ │ ├── td.svg │ │ │ ├── tg.svg │ │ │ ├── th.svg │ │ │ ├── tj.svg │ │ │ ├── tl.svg │ │ │ ├── tm.svg │ │ │ ├── tn.svg │ │ │ ├── to.svg │ │ │ ├── tr.svg │ │ │ ├── tt.svg │ │ │ ├── tv.svg │ │ │ ├── tw.svg │ │ │ ├── tz.svg │ │ │ ├── ua.svg │ │ │ ├── ug.svg │ │ │ ├── us.svg │ │ │ ├── uy.svg │ │ │ ├── uz.svg │ │ │ ├── vc.svg │ │ │ ├── ve.svg │ │ │ ├── vn.svg │ │ │ ├── vu.svg │ │ │ ├── ws.svg │ │ │ ├── ye.svg │ │ │ ├── za.svg │ │ │ ├── zm.svg │ │ │ └── zw.svg │ ├── java │ │ └── com │ │ │ └── infinitepower │ │ │ └── newquiz │ │ │ └── data │ │ │ ├── di │ │ │ ├── MathModule.kt │ │ │ └── RepositoryModule.kt │ │ │ ├── local │ │ │ ├── multi_choice_quiz │ │ │ │ └── category │ │ │ │ │ └── MultiChoiceQuestionCategories.kt │ │ │ └── wordle │ │ │ │ └── WordleCategories.kt │ │ │ ├── repository │ │ │ ├── UserConfigRepositoryImpl.kt │ │ │ ├── comparison_quiz │ │ │ │ ├── ComparisonQuizApi.kt │ │ │ │ ├── ComparisonQuizApiImpl.kt │ │ │ │ └── ComparisonQuizRepositoryImpl.kt │ │ │ ├── country │ │ │ │ ├── CountryEntity.kt │ │ │ │ └── CountryRepositoryImpl.kt │ │ │ ├── daily_challenge │ │ │ │ ├── DailyChallengeRepositoryImpl.kt │ │ │ │ └── util │ │ │ │ │ └── DailyChallengeTypeTitleUtil.kt │ │ │ ├── home │ │ │ │ └── RecentCategoriesRepositoryImpl.kt │ │ │ ├── math_quiz │ │ │ │ └── MathQuizCoreRepositoryImpl.kt │ │ │ ├── maze_quiz │ │ │ │ └── MazeQuizRepositoryImpl.kt │ │ │ ├── multi_choice_quiz │ │ │ │ ├── CountryCapitalFlagsQuizRepositoryImpl.kt │ │ │ │ ├── FlagQuizRepositoryImpl.kt │ │ │ │ ├── GuessMathSolutionRepositoryImpl.kt │ │ │ │ ├── LogoQuizRepositoryImpl.kt │ │ │ │ ├── MultiChoiceQuestionRepositoryImpl.kt │ │ │ │ ├── dto │ │ │ │ │ └── OpenTDBQuestionResponse.kt │ │ │ │ └── saved_questions │ │ │ │ │ └── SavedMultiChoiceQuestionsRepositoryImpl.kt │ │ │ ├── numbers │ │ │ │ ├── NumberTriviaQuestionApiImpl.kt │ │ │ │ └── NumberTriviaQuestionRepositoryImpl.kt │ │ │ └── wordle │ │ │ │ ├── InvalidWordError.kt │ │ │ │ └── WordleRepositoryImpl.kt │ │ │ ├── util │ │ │ ├── mappers │ │ │ │ ├── comparisonquiz │ │ │ │ │ └── ComparisonQuizMapper.kt │ │ │ │ ├── daily_challenge │ │ │ │ │ └── DailyChallengeTaskMapper.kt │ │ │ │ └── maze │ │ │ │ │ └── MazeQuizMappers.kt │ │ │ └── translation │ │ │ │ └── WordleTitleUtil.kt │ │ │ └── worker │ │ │ ├── UpdateGlobalEventDataWorker.kt │ │ │ ├── daily_challenge │ │ │ └── VerifyDailyChallengeWorker.kt │ │ │ ├── maze │ │ │ ├── CleanMazeQuizWorker.kt │ │ │ └── GenerateMazeQuizWorker.kt │ │ │ └── multichoicequiz │ │ │ └── DownloadMultiChoiceQuestionsWorker.kt │ └── res │ │ └── raw │ │ └── all_countries.json │ └── test │ └── java │ └── com │ └── infinitepower │ └── newquiz │ └── data │ ├── local │ ├── math_quiz │ │ └── MathQuizCoreRepositoryImplTest.kt │ └── wordle │ │ └── WordleCategoriesTest.kt │ └── repository │ ├── comparison_quiz │ ├── ComparisonQuizApiImplTest.kt │ └── ComparisonQuizRepositoryImplTest.kt │ ├── country │ ├── CountryRepositoryImplTest.kt │ └── TestCountryRepositoryImpl.kt │ ├── daily_challenge │ └── DailyChallengeRepositoryImplTest.kt │ ├── home │ └── RecentCategoriesRepositoryImplTest.kt │ ├── maze_quiz │ └── MazeQuizRepositoryImplTest.kt │ ├── multi_choice_quiz │ ├── CountryCapitalFlagsQuizRepositoryImplTest.kt │ └── FlagQuizRepositoryImplTest.kt │ └── wordle │ └── WordleRepositoryImplTest.kt ├── detekt-compose.yml ├── detekt.yml ├── domain ├── .gitignore ├── build.gradle.kts └── src │ ├── main │ └── java │ │ └── com │ │ └── infinitepower │ │ └── newquiz │ │ └── domain │ │ ├── repository │ │ ├── CountryRepository.kt │ │ ├── UserConfigRepository.kt │ │ ├── comparison_quiz │ │ │ └── ComparisonQuizRepository.kt │ │ ├── daily_challenge │ │ │ └── DailyChallengeRepository.kt │ │ ├── home │ │ │ └── RecentCategoriesRepository.kt │ │ ├── math_quiz │ │ │ └── MathQuizCoreRepository.kt │ │ ├── maze │ │ │ └── MazeQuizRepository.kt │ │ ├── multi_choice_quiz │ │ │ ├── CountryCapitalFlagsQuizRepository.kt │ │ │ ├── FlagQuizRepository.kt │ │ │ ├── GuessMathSolutionRepository.kt │ │ │ ├── LogoQuizRepository.kt │ │ │ ├── MultiChoiceQuestionBaseRepository.kt │ │ │ ├── MultiChoiceQuestionRepository.kt │ │ │ └── saved_questions │ │ │ │ └── SavedMultiChoiceQuestionsRepository.kt │ │ ├── numbers │ │ │ ├── NumberTriviaQuestionApi.kt │ │ │ └── NumberTriviaQuestionRepository.kt │ │ └── wordle │ │ │ └── WordleRepository.kt │ │ └── use_case │ │ └── question │ │ ├── GetRandomMultiChoiceQuestionUseCase.kt │ │ └── IsQuestionSavedUseCase.kt │ └── test │ └── kotlin │ └── com │ └── infinitepower │ └── newquiz │ └── domain │ └── use_case │ └── question │ └── IsQuestionSavedUseCaseTest.kt ├── feature ├── daily-challenge │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ └── kotlin │ │ └── com │ │ └── infinitepower │ │ └── newquiz │ │ └── feature │ │ └── daily_challenge │ │ ├── DailyChallengeScreen.kt │ │ ├── DailyChallengeScreenNavigator.kt │ │ ├── DailyChallengeScreenUiEvent.kt │ │ ├── DailyChallengeScreenUiState.kt │ │ ├── DailyChallengeScreenViewModel.kt │ │ └── components │ │ └── DailyChallengeCard.kt ├── maze │ ├── .gitignore │ ├── build.gradle.kts │ └── src │ │ ├── main │ │ ├── AndroidManifest.xml │ │ └── kotlin │ │ │ └── com │ │ │ └── infinitepower │ │ │ └── newquiz │ │ │ └── feature │ │ │ └── maze │ │ │ ├── MazeScreen.kt │ │ │ ├── MazeScreenUiEvent.kt │ │ │ ├── MazeScreenUiState.kt │ │ │ ├── MazeScreenViewModel.kt │ │ │ ├── categories_info │ │ │ ├── MazeCategoriesInfoScreen.kt │ │ │ ├── MazeCategoriesInfoUiState.kt │ │ │ └── MazeCategoriesInfoViewModel.kt │ │ │ ├── common │ │ │ └── MazeCategories.kt │ │ │ ├── components │ │ │ ├── CategoriesInfoBottomSheet.kt │ │ │ ├── InvalidCategoriesCard.kt │ │ │ ├── MazeCompletedCard.kt │ │ │ ├── MazeItemButton.kt │ │ │ ├── MazePath.kt │ │ │ └── ScrollToCurrentQuestionButton.kt │ │ │ ├── generate │ │ │ ├── GenerateMazeScreen.kt │ │ │ ├── GenerateMazeScreenUiEvent.kt │ │ │ ├── GenerateMazeScreenUiState.kt │ │ │ └── GenerateMazeScreenViewModel.kt │ │ │ └── level_results │ │ │ ├── LevelResultsScreen.kt │ │ │ ├── LevelResultsScreenUiState.kt │ │ │ ├── LevelResultsScreenViewModel.kt │ │ │ └── components │ │ │ ├── LevelCompletedContent.kt │ │ │ └── LevelFailedContent.kt │ │ └── test │ │ └── kotlin │ │ └── com │ │ └── infinitepower │ │ └── newquiz │ │ └── feature │ │ └── maze │ │ └── MazeScreenUiStateTest.kt ├── profile │ ├── .gitignore │ ├── build.gradle.kts │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ └── kotlin │ │ └── com │ │ └── infinitepower │ │ └── newquiz │ │ └── feature │ │ └── profile │ │ ├── ProfileScreen.kt │ │ ├── ProfileScreenUiEvent.kt │ │ ├── ProfileScreenUiState.kt │ │ ├── ProfileViewModel.kt │ │ └── components │ │ ├── GoodDayText.kt │ │ ├── MainUserCard.kt │ │ ├── UserXpAndLevelCard.kt │ │ ├── XpEarnedByDayCard.kt │ │ └── chart │ │ └── Marker.kt └── settings │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ └── src │ ├── foss │ └── kotlin │ │ └── com │ │ └── infinitepower │ │ └── newquiz │ │ └── feature │ │ └── settings │ │ ├── common │ │ └── BuildVariant.kt │ │ └── screens │ │ └── PreferencesScreen.kt │ ├── main │ ├── AndroidManifest.xml │ └── kotlin │ │ └── com │ │ └── infinitepower │ │ └── newquiz │ │ └── feature │ │ └── settings │ │ ├── SettingsScreen.kt │ │ ├── components │ │ ├── AboutAndHelpButtons.kt │ │ └── preferences │ │ │ ├── PreferenceGroupHeader.kt │ │ │ ├── PreferenceItem.kt │ │ │ └── widgets │ │ │ ├── CustomPreferenceWidget.kt │ │ │ ├── DropDownPreferenceWidget.kt │ │ │ ├── ListPreferenceWidget.kt │ │ │ ├── MultiSelectListPreferenceWidget.kt │ │ │ ├── NavigationButtonWidget.kt │ │ │ ├── SeekBarPreferenceWidget.kt │ │ │ ├── SwitchPreferenceWidget.kt │ │ │ └── TextPreferenceWidget.kt │ │ ├── model │ │ ├── Preference.kt │ │ └── ScreenKey.kt │ │ ├── screens │ │ ├── PreferenceScreen.kt │ │ ├── about_and_help │ │ │ └── AboutAndHelpScreen.kt │ │ ├── animations │ │ │ └── AnimationsScreen.kt │ │ ├── general │ │ │ ├── GeneralScreen.kt │ │ │ ├── GeneralScreenUiEvent.kt │ │ │ ├── GeneralScreenUiState.kt │ │ │ └── GeneralScreenViewModel.kt │ │ ├── main │ │ │ └── MainScreen.kt │ │ ├── multi_choice_quiz │ │ │ └── MultiChoiceQuizScreen.kt │ │ └── wordle │ │ │ └── WordleScreen.kt │ │ └── util │ │ ├── ShowCategoryConnectionInfoUtils.kt │ │ └── datastore │ │ └── DatastoreUtils.kt │ └── normal │ └── kotlin │ └── com │ └── infinitepower │ └── newquiz │ └── feature │ └── settings │ ├── common │ └── BuildVariant.kt │ └── screens │ ├── PreferencesScreen.kt │ ├── analytics │ └── AnimationsScreen.kt │ └── translation │ ├── TranslationScreen.kt │ ├── TranslationScreenUiEvent.kt │ ├── TranslationScreenUiState.kt │ └── TranslationScreenViewModel.kt ├── gradle.properties ├── gradle ├── libs.versions.toml └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── lint.xml ├── model ├── .gitignore ├── build.gradle.kts └── src │ ├── main │ └── java │ │ └── com │ │ └── infinitepower │ │ └── newquiz │ │ └── model │ │ ├── BaseCategory.kt │ │ ├── DataAnalyticsConsentState.kt │ │ ├── GameMode.kt │ │ ├── GameModeCategory.kt │ │ ├── Language.kt │ │ ├── NumberFormatType.kt │ │ ├── RemainingTime.kt │ │ ├── Resource.kt │ │ ├── TimestampWithValue.kt │ │ ├── UiText.kt │ │ ├── XP.kt │ │ ├── category │ │ └── ShowCategoryConnectionInfo.kt │ │ ├── comparison_quiz │ │ ├── ComparisonMode.kt │ │ ├── ComparisonQuizCategory.kt │ │ ├── ComparisonQuizCategoryEntity.kt │ │ ├── ComparisonQuizHelperValueState.kt │ │ ├── ComparisonQuizItem.kt │ │ ├── ComparisonQuizItemEntity.kt │ │ └── ComparisonQuizQuestion.kt │ │ ├── country │ │ ├── Continent.kt │ │ └── Country.kt │ │ ├── daily_challenge │ │ └── DailyChallengeTask.kt │ │ ├── global_event │ │ └── GameEvent.kt │ │ ├── math_quiz │ │ └── MathFormula.kt │ │ ├── maze │ │ ├── MazePoint.kt │ │ └── MazeQuiz.kt │ │ ├── multi_choice_quiz │ │ ├── MultiChoiceBaseCategory.kt │ │ ├── MultiChoiceCategory.kt │ │ ├── MultiChoiceQuestion.kt │ │ ├── MultiChoiceQuestionStep.kt │ │ ├── MultiChoiceQuestionType.kt │ │ ├── QuestionLanguage.kt │ │ ├── SelectedAnswer.kt │ │ ├── logo_quiz │ │ │ └── LogoQuizBaseItem.kt │ │ └── saved │ │ │ └── SortSavedQuestionsBy.kt │ │ ├── number │ │ ├── NumberTriviaQuestion.kt │ │ └── NumberTriviaQuestionsEntity.kt │ │ ├── question │ │ └── QuestionDifficulty.kt │ │ ├── regional_preferences │ │ ├── DistanceUnitType.kt │ │ ├── RegionalPreferences.kt │ │ └── TemperatureUnit.kt │ │ ├── util │ │ ├── base64 │ │ │ ├── Base64.kt │ │ │ ├── Base64Encoding.kt │ │ │ └── Base64Url.kt │ │ └── serializers │ │ │ └── URISerializer.kt │ │ └── wordle │ │ ├── WordleCategory.kt │ │ ├── WordleItem.kt │ │ ├── WordleQuizType.kt │ │ ├── WordleRowItem.kt │ │ └── WordleWord.kt │ └── test │ └── java │ └── com │ └── infinitepower │ └── newquiz │ └── model │ ├── RemainingTimeTest.kt │ ├── category │ └── ShowCategoryConnectionInfoTest.kt │ ├── comparison_quiz │ ├── ComparisonQuizCategoryTest.kt │ └── ComparisonQuizQuestionTest.kt │ ├── daily_challenge │ ├── DailyChallengeTaskTest.kt │ └── DailyChallengeTaskTypeTest.kt │ ├── math_quiz │ └── maze │ │ ├── MazePointTest.kt │ │ └── MazeQuizTest.kt │ ├── multi_choice_quiz │ └── MultiChoiceQuestionTest.kt │ ├── util │ └── base64 │ │ ├── Base64Test.kt │ │ └── Base64UrlTest.kt │ └── wordle │ ├── WordleItemTest.kt │ └── WordleRowItemTest.kt ├── multi-choice-quiz ├── .gitignore ├── README.md ├── build.gradle.kts ├── consumer-rules.pro ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── infinitepower │ │ └── newquiz │ │ └── multi_choice_quiz │ │ ├── MultiChoiceQuizScreenTest.kt │ │ └── components │ │ ├── CardQuestionOptionTest.kt │ │ ├── QuizStepViewRowTest.kt │ │ └── QuizStepViewTest.kt │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── infinitepower │ │ └── newquiz │ │ └── multi_choice_quiz │ │ ├── MultiChoiceQuizScreen.kt │ │ ├── MultiChoiceQuizScreenUiEvent.kt │ │ ├── MultiChoiceQuizScreenUiState.kt │ │ ├── MultiChoiceQuizScreenViewModel.kt │ │ ├── components │ │ ├── CardQuestionAnswer.kt │ │ ├── MultiChoiceQuizContainer.kt │ │ ├── QuizStepView.kt │ │ ├── QuizTopBar.kt │ │ └── difficulty │ │ │ ├── BaseCardDifficultyContent.kt │ │ │ ├── FilledCardDifficulty.kt │ │ │ ├── OutlinedCardDifficulty.kt │ │ │ └── SelectableDifficultyRow.kt │ │ ├── list │ │ ├── MultiChoiceQuizListScreen.kt │ │ ├── MultiChoiceQuizListScreenUiState.kt │ │ └── MultiChoiceQuizListScreenViewModel.kt │ │ ├── results │ │ └── MultiChoiceQuizResultsScreen.kt │ │ └── saved_questions │ │ ├── SavedMultiChoiceQuestionsScreen.kt │ │ ├── SavedMultiChoiceQuestionsScreenNavigator.kt │ │ ├── SavedMultiChoiceQuestionsUiEvent.kt │ │ ├── SavedMultiChoiceQuestionsUiState.kt │ │ ├── SavedMultiChoiceQuestionsViewModel.kt │ │ └── components │ │ └── SavedQuestionItem.kt │ └── res │ └── values │ └── strings.xml ├── pictures ├── NewQuiz-Promotion-green-night.png ├── NewQuiz-Promotion-purple-light.png ├── comparison_quiz.jpg ├── multichoicequiz.jpg └── wordle.jpg ├── settings.gradle.kts └── wordle ├── .gitignore ├── README.md ├── build.gradle.kts ├── consumer-rules.pro ├── proguard-rules.pro └── src ├── androidTest └── java │ └── com │ └── infinitepower │ └── newquiz │ └── wordle │ ├── WordleScreenTest.kt │ └── components │ ├── WordleKeyBoardTest.kt │ └── WordleRowComponentTest.kt ├── main ├── AndroidManifest.xml └── java │ └── com │ └── infinitepower │ └── newquiz │ └── wordle │ ├── WordleScreen.kt │ ├── WordleScreenUiEvent.kt │ ├── WordleScreenUiState.kt │ ├── WordleScreenViewModel.kt │ ├── components │ ├── InfoDialog.kt │ ├── WordleKeyBoard.kt │ └── WordleRowComponent.kt │ ├── list │ ├── WordleListScreen.kt │ ├── WordleListScreenViewModel.kt │ └── WordleListUiState.kt │ └── util │ ├── InvalidWordErrorUiText.kt │ ├── word │ └── WordUtil.kt │ └── worker │ └── WordleEndGameWorker.kt └── test └── java └── com └── infinitepower └── newquiz └── wordle └── util └── word └── WordUtilTest.kt /.github/actions/get-avd-info/action.yml: -------------------------------------------------------------------------------- 1 | # From: coil-kt/coil 2 | name: 'Get AVD Info' 3 | description: 'Get the AVD info based on its API level.' 4 | inputs: 5 | api-level: 6 | required: true 7 | outputs: 8 | arch: 9 | value: ${{ steps.get-avd-arch.outputs.arch }} 10 | target: 11 | value: ${{ steps.get-avd-target.outputs.target }} 12 | runs: 13 | using: "composite" 14 | steps: 15 | - id: get-avd-arch 16 | run: echo "::set-output name=arch::$(if [ ${{ inputs.api-level }} -ge 30 ]; then echo x86_64; else echo x86; fi)" 17 | shell: bash 18 | - id: get-avd-target 19 | run: echo "::set-output name=target::$(echo default)" 20 | shell: bash -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .gradle 2 | /local.properties 3 | .DS_Store 4 | /build 5 | /captures 6 | .externalNativeBuild 7 | .cxx 8 | local.properties 9 | 10 | /app/build 11 | /app/release 12 | 13 | /buildSrc/build 14 | 15 | # built application files 16 | *.apk 17 | *.ap_ 18 | 19 | # files for the dex VM 20 | *.dex 21 | 22 | # Java class files 23 | *.class 24 | 25 | # generated files 26 | bin/ 27 | gen/ 28 | out/ 29 | 30 | # Eclipse project files 31 | .classpath 32 | .project 33 | 34 | # IDEA/Android Studio project files, because 35 | # the project can be imported from settings.gradle.kts 36 | *.iml 37 | .idea/* 38 | !.idea/copyright 39 | # Keep the code styles. 40 | !/.idea/codeStyles 41 | /.idea/codeStyles/* 42 | !/.idea/codeStyles/Project.xml 43 | !/.idea/codeStyles/codeStyleConfig.xml 44 | !.idea/runConfigurations/ 45 | 46 | .kotlin 47 | -------------------------------------------------------------------------------- /.idea/.name: -------------------------------------------------------------------------------- 1 | NewQuiz -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | google-services.json 3 | 4 | *.apk 5 | *.aab 6 | *.dm 7 | output-metadata.json -------------------------------------------------------------------------------- /app/lint-baseline.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/ic_launcher-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/app/src/main/ic_launcher-playstore.png -------------------------------------------------------------------------------- /app/src/main/java/com/infinitepower/newquiz/NewQuizApp.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz 2 | 3 | import android.app.Application 4 | import dagger.hilt.android.HiltAndroidApp 5 | 6 | @HiltAndroidApp 7 | class NewQuizApp : Application() 8 | -------------------------------------------------------------------------------- /app/src/main/java/com/infinitepower/newquiz/ui/main/MainScreenUiEvent.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz.ui.main 2 | 3 | import androidx.annotation.Keep 4 | 5 | sealed interface MainScreenUiEvent { 6 | @Keep 7 | data class OnDataAnalyticsConsentClick( 8 | val agreed: Boolean 9 | ) : MainScreenUiEvent 10 | } 11 | -------------------------------------------------------------------------------- /app/src/main/java/com/infinitepower/newquiz/ui/main/MainScreenUiState.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz.ui.main 2 | 3 | import androidx.annotation.Keep 4 | import com.infinitepower.newquiz.core.theme.AnimationsEnabled 5 | 6 | /** 7 | * Represents the state of the main screen. 8 | * 9 | * @param loading True if the main screen state is loading. The splash screen will be shown until this is false. 10 | */ 11 | @Keep 12 | data class MainScreenUiState( 13 | val loading: Boolean = true, 14 | val showDataAnalyticsConsentDialog: Boolean = false, 15 | val dailyChallengeClaimableCount: Int = 0, 16 | val animationsEnabled: AnimationsEnabled = AnimationsEnabled(), 17 | val userDiamonds: UInt = 0u 18 | ) 19 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/round_play_circle_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/resources.properties: -------------------------------------------------------------------------------- 1 | unqualifiedResLocale=en -------------------------------------------------------------------------------- /app/src/main/res/values-night/splash_screen.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FF000000 4 | #FFFFFFFF 5 | -------------------------------------------------------------------------------- /app/src/main/res/values/leak_canary.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values/splash_screen.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | NewQuiz 3 | -------------------------------------------------------------------------------- /build-logic/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/caches 5 | /.idea/libraries 6 | /.idea/modules.xml 7 | /.idea/workspace.xml 8 | /.idea/navEditor.xml 9 | /.idea/assetWizardSettings.xml 10 | .DS_Store 11 | /build 12 | /convention/build 13 | /captures 14 | .externalNativeBuild 15 | .cxx 16 | local.properties 17 | -------------------------------------------------------------------------------- /build-logic/README.md: -------------------------------------------------------------------------------- 1 | # Build logic 2 | 3 | The build-logic folder defines project-specific convention plugins, used to keep a single source of truth for common module configurations. 4 | 5 | Based in the [Now in Android](https://github.com/android/nowinandroid) project. -------------------------------------------------------------------------------- /build-logic/convention/src/main/kotlin/AndroidApplicationComposeConventionPlugin.kt: -------------------------------------------------------------------------------- 1 | import com.android.build.api.dsl.ApplicationExtension 2 | import com.infinitepower.newquiz.configureAndroidCompose 3 | import org.gradle.api.Plugin 4 | import org.gradle.api.Project 5 | import org.gradle.kotlin.dsl.getByType 6 | 7 | class AndroidApplicationComposeConventionPlugin : Plugin { 8 | override fun apply(target: Project) { 9 | with(target) { 10 | pluginManager.apply("com.android.application") 11 | 12 | val extension = extensions.getByType() 13 | configureAndroidCompose(extension) 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /build-logic/convention/src/main/kotlin/AndroidLibraryComposeConventionPlugin.kt: -------------------------------------------------------------------------------- 1 | import com.android.build.api.dsl.LibraryExtension 2 | import com.infinitepower.newquiz.configureAndroidCompose 3 | import org.gradle.api.Plugin 4 | import org.gradle.api.Project 5 | import org.gradle.kotlin.dsl.configure 6 | 7 | class AndroidLibraryComposeConventionPlugin : Plugin { 8 | override fun apply(target: Project) { 9 | with(target) { 10 | with(pluginManager) { 11 | apply("newquiz.android.library") 12 | } 13 | 14 | extensions.configure { 15 | configureAndroidCompose(this) 16 | } 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /build-logic/convention/src/main/kotlin/KotlinSerializationConventionPlugin.kt: -------------------------------------------------------------------------------- 1 | import com.infinitepower.newquiz.implementation 2 | import com.infinitepower.newquiz.libs 3 | import org.gradle.api.Plugin 4 | import org.gradle.api.Project 5 | import org.gradle.kotlin.dsl.dependencies 6 | 7 | class KotlinSerializationConventionPlugin : Plugin { 8 | override fun apply(target: Project) { 9 | with(target) { 10 | plugins.apply("kotlinx-serialization") 11 | 12 | dependencies { 13 | implementation(libs.findLibrary("kotlinx.serialization.json").get()) 14 | } 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /build-logic/convention/src/main/kotlin/com/infinitepower/newquiz/AndroidInstrumentedTests.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz 2 | 3 | import com.android.build.api.variant.LibraryAndroidComponentsExtension 4 | import org.gradle.api.Project 5 | 6 | /** 7 | * Disable android tests if there is no androidTest folder. 8 | */ 9 | internal fun LibraryAndroidComponentsExtension.disableUnnecessaryAndroidTests( 10 | project: Project, 11 | ) = beforeVariants { 12 | it.enableAndroidTest = it.enableAndroidTest 13 | && project.projectDir.resolve("src/androidTest").exists() 14 | } 15 | -------------------------------------------------------------------------------- /build-logic/convention/src/main/kotlin/com/infinitepower/newquiz/ProjectConfig.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz 2 | 3 | import org.gradle.api.JavaVersion 4 | 5 | object ProjectConfig { 6 | const val compileSdk = 35 7 | 8 | const val minSdk = 21 9 | 10 | const val targetSdk = 35 11 | 12 | val javaVersionCompatibility = JavaVersion.VERSION_17 13 | 14 | const val jvmTargetVersion = "17" 15 | 16 | const val jvmToolchainVersion = 17 17 | } 18 | -------------------------------------------------------------------------------- /build-logic/convention/src/main/kotlin/com/infinitepower/newquiz/ProjectExtensions.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz 2 | 3 | import org.gradle.api.Project 4 | import org.gradle.api.artifacts.VersionCatalog 5 | import org.gradle.api.artifacts.VersionCatalogsExtension 6 | import org.gradle.kotlin.dsl.getByType 7 | 8 | val Project.libs 9 | get(): VersionCatalog = extensions.getByType().named("libs") 10 | -------------------------------------------------------------------------------- /build-logic/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.parallel=true 2 | org.gradle.caching=true 3 | org.gradle.configureondemand=true 4 | -------------------------------------------------------------------------------- /build-logic/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | dependencyResolutionManagement { 2 | repositories { 3 | google() 4 | mavenCentral() 5 | } 6 | 7 | versionCatalogs { 8 | create("libs") { 9 | from(files("../gradle/libs.versions.toml")) 10 | } 11 | } 12 | } 13 | 14 | rootProject.name = "build-logic" 15 | include(":convention") 16 | -------------------------------------------------------------------------------- /comparison-quiz/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /comparison-quiz/README.md: -------------------------------------------------------------------------------- 1 | # Comparison quiz 2 | 3 | This is the code for the comparison game mode. 4 | 5 | ![NewQuiz purple light](../pictures/comparison_quiz.jpg) -------------------------------------------------------------------------------- /comparison-quiz/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/comparison-quiz/consumer-rules.pro -------------------------------------------------------------------------------- /comparison-quiz/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Temporary fix 2 | -dontwarn java.lang.invoke.StringConcatFactory -------------------------------------------------------------------------------- /comparison-quiz/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /comparison-quiz/src/main/java/com/infinitepower/newquiz/comparison_quiz/di/ComparisonQuizModule.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz.comparison_quiz.di 2 | 3 | import com.infinitepower.newquiz.comparison_quiz.core.ComparisonQuizCoreImpl 4 | import com.infinitepower.newquiz.core.game.ComparisonQuizCore 5 | import dagger.Binds 6 | import dagger.Module 7 | import dagger.hilt.InstallIn 8 | import dagger.hilt.android.components.ViewModelComponent 9 | 10 | @Module 11 | @InstallIn(ViewModelComponent::class) 12 | abstract class ComparisonQuizModule { 13 | @Binds 14 | abstract fun bindComparisonQuizCore(impl: ComparisonQuizCoreImpl): ComparisonQuizCore 15 | } 16 | -------------------------------------------------------------------------------- /comparison-quiz/src/main/java/com/infinitepower/newquiz/comparison_quiz/list/ComparisonQuizListScreenUiEvent.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz.comparison_quiz.list 2 | 3 | import androidx.annotation.Keep 4 | import com.infinitepower.newquiz.model.comparison_quiz.ComparisonMode 5 | 6 | interface ComparisonQuizListScreenUiEvent { 7 | @Keep 8 | data class SelectMode( 9 | val mode: ComparisonMode 10 | ) : ComparisonQuizListScreenUiEvent 11 | } 12 | -------------------------------------------------------------------------------- /comparison-quiz/src/main/java/com/infinitepower/newquiz/comparison_quiz/ui/ComparisonQuizUiEvent.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz.comparison_quiz.ui 2 | 3 | import androidx.annotation.Keep 4 | import com.infinitepower.newquiz.model.comparison_quiz.ComparisonQuizItem 5 | 6 | interface ComparisonQuizUiEvent { 7 | @Keep 8 | data class OnAnswerClick( 9 | val item: ComparisonQuizItem 10 | ) : ComparisonQuizUiEvent 11 | 12 | object ShowSkipQuestionDialog : ComparisonQuizUiEvent 13 | 14 | object DismissSkipQuestionDialog : ComparisonQuizUiEvent 15 | 16 | object SkipQuestion : ComparisonQuizUiEvent 17 | } 18 | -------------------------------------------------------------------------------- /compose_compiler_config.conf: -------------------------------------------------------------------------------- 1 | // Consider LocalDateTime stable 2 | java.time.LocalDateTime 3 | // Consider my datalayer and all submodules stable 4 | com.infinitepower.newquiz.model.** 5 | com.infinitepower.newquiz.domain.repository.home.HomeCategories<*> -------------------------------------------------------------------------------- /core/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /core/analytics/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /core/analytics/README.md: -------------------------------------------------------------------------------- 1 | # Analytics Module (:core:analytics) 2 | 3 | The Analytics module provides a way to track user interactions with the application. 4 | 5 | ## Normal Flavor 6 | 7 | The normal flavor of the Analytics module uses the [Firebase Analytics](https://firebase.google.com/docs/analytics) service to track user interactions. 8 | 9 | ## FOSS Flavor 10 | 11 | The FOSS flavor of the Analytics module don't track any user interaction to the any third party services. Only logs the user interactions to the console. 12 | -------------------------------------------------------------------------------- /core/analytics/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | alias(libs.plugins.newquiz.android.library.compose) 3 | alias(libs.plugins.newquiz.android.hilt) 4 | alias(libs.plugins.newquiz.detekt) 5 | } 6 | 7 | android { 8 | namespace = "com.infinitepower.newquiz.core.analytics" 9 | } 10 | 11 | dependencies { 12 | implementation(libs.androidx.compose.runtime) 13 | 14 | normalImplementation(platform(libs.firebase.bom)) 15 | normalImplementation(libs.firebase.analytics) 16 | normalImplementation(libs.firebase.crashlytics) 17 | normalImplementation(libs.firebase.perf) 18 | 19 | implementation(projects.model) 20 | normalImplementation(projects.core.datastore) 21 | } 22 | -------------------------------------------------------------------------------- /core/analytics/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/analytics/consumer-rules.pro -------------------------------------------------------------------------------- /core/analytics/src/foss/kotlin/com/infinitepower/newquiz/core/analytics/FossAnalyticsModule.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz.core.analytics 2 | 3 | import dagger.Binds 4 | import dagger.Module 5 | import dagger.hilt.InstallIn 6 | import dagger.hilt.components.SingletonComponent 7 | 8 | @Module 9 | @InstallIn(SingletonComponent::class) 10 | abstract class FossAnalyticsModule { 11 | @Binds 12 | abstract fun bindAnalyticsHelper(impl: LocalDebugAnalyticsHelper): AnalyticsHelper 13 | } -------------------------------------------------------------------------------- /core/analytics/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /core/analytics/src/main/kotlin/com/infinitepower/newquiz/core/analytics/UiHelpers.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz.core.analytics 2 | 3 | import androidx.compose.runtime.staticCompositionLocalOf 4 | 5 | /** 6 | * A local composition that provides an [AnalyticsHelper] instance. 7 | */ 8 | val LocalAnalyticsHelper = staticCompositionLocalOf { 9 | LocalDebugAnalyticsHelper() 10 | } 11 | -------------------------------------------------------------------------------- /core/analytics/src/main/kotlin/com/infinitepower/newquiz/core/analytics/UserProperty.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz.core.analytics 2 | 3 | import androidx.annotation.Size 4 | 5 | sealed class UserProperty( 6 | @Size(min = 1L, max = 24L) val name: String, 7 | @Size(max = 36L) val value: String? 8 | ) { 9 | data class WordleLanguage(val lang: String) : UserProperty( 10 | name = "wordle_lang", 11 | value = lang 12 | ) 13 | 14 | data class TranslatorModelDownloaded(val downloaded: Boolean) : UserProperty( 15 | name = "translator_downloaded", 16 | value = downloaded.toString() 17 | ) 18 | } 19 | -------------------------------------------------------------------------------- /core/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/consumer-rules.pro -------------------------------------------------------------------------------- /core/database/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /core/database/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | alias(libs.plugins.newquiz.android.library) 3 | alias(libs.plugins.newquiz.android.room) 4 | alias(libs.plugins.newquiz.android.hilt) 5 | alias(libs.plugins.newquiz.kotlin.serialization) 6 | alias(libs.plugins.newquiz.detekt) 7 | } 8 | 9 | android { 10 | namespace = "com.infinitepower.newquiz.core.database" 11 | } 12 | 13 | dependencies { 14 | implementation(libs.kotlinx.datetime) 15 | 16 | implementation(projects.model) 17 | 18 | androidTestImplementation(projects.core.testing) 19 | } 20 | -------------------------------------------------------------------------------- /core/database/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/database/consumer-rules.pro -------------------------------------------------------------------------------- /core/database/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /core/database/src/androidTest/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 9 | 10 | -------------------------------------------------------------------------------- /core/database/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /core/database/src/main/kotlin/com/infinitepower/newquiz/core/database/model/DailyChallengeTaskEntity.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz.core.database.model 2 | 3 | import androidx.annotation.Keep 4 | import androidx.room.Entity 5 | import androidx.room.PrimaryKey 6 | 7 | @Keep 8 | @Entity(tableName = "daily_challenge_tasks") 9 | data class DailyChallengeTaskEntity( 10 | @PrimaryKey(autoGenerate = true) val id: Int = 0, 11 | val diamondsReward: Int, 12 | val experienceReward: Int, 13 | val isClaimed: Boolean, 14 | val currentValue: Int, 15 | val maxValue: Int, 16 | val type: String, 17 | val startDate: Long, 18 | val endDate: Long 19 | ) 20 | -------------------------------------------------------------------------------- /core/database/src/main/kotlin/com/infinitepower/newquiz/core/database/model/user/BaseGameResultEntity.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz.core.database.model.user 2 | 3 | interface BaseGameResultEntity { 4 | val gameId: Int 5 | val earnedXp: Int 6 | val playedAt: Long 7 | } 8 | -------------------------------------------------------------------------------- /core/database/src/main/kotlin/com/infinitepower/newquiz/core/database/util/converters/ListConverter.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz.core.database.util.converters 2 | 3 | import androidx.room.TypeConverter 4 | import kotlinx.serialization.encodeToString 5 | import kotlinx.serialization.json.Json 6 | 7 | class ListConverter { 8 | @TypeConverter 9 | fun stringListToJson(value: List): String = Json.encodeToString(value) 10 | 11 | @TypeConverter 12 | fun jsonToStringList(value: String): List = Json.decodeFromString(value) 13 | } 14 | -------------------------------------------------------------------------------- /core/database/src/main/kotlin/com/infinitepower/newquiz/core/database/util/converters/LocalDateConverter.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz.core.database.util.converters 2 | 3 | import androidx.room.TypeConverter 4 | import kotlinx.datetime.LocalDate 5 | 6 | class LocalDateConverter { 7 | @TypeConverter 8 | fun localDateToJson(value: LocalDate): String = value.toString() 9 | 10 | @TypeConverter 11 | fun stringToLocalDate(value: String): LocalDate = LocalDate.parse(value) 12 | } 13 | -------------------------------------------------------------------------------- /core/database/src/main/kotlin/com/infinitepower/newquiz/core/database/util/converters/MathFormulaConverter.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz.core.database.util.converters 2 | 3 | import androidx.room.TypeConverter 4 | import com.infinitepower.newquiz.model.math_quiz.MathFormula 5 | 6 | class MathFormulaConverter { 7 | @TypeConverter 8 | fun mathFormulaToJson(value: MathFormula): String = value.fullFormula 9 | 10 | @TypeConverter 11 | fun stringToMathFormula(value: String): MathFormula = MathFormula.fromStringFullFormula(value) 12 | } 13 | -------------------------------------------------------------------------------- /core/database/src/main/kotlin/com/infinitepower/newquiz/core/database/util/converters/QuestionDifficultyConverter.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz.core.database.util.converters 2 | 3 | import androidx.room.TypeConverter 4 | import com.infinitepower.newquiz.model.question.QuestionDifficulty 5 | 6 | class QuestionDifficultyConverter { 7 | @TypeConverter 8 | fun localDateToJson(value: QuestionDifficulty): String = value.id 9 | 10 | @TypeConverter 11 | fun stringToLocalDate(value: String): QuestionDifficulty = QuestionDifficulty.from(value) 12 | } 13 | -------------------------------------------------------------------------------- /core/datastore/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /core/datastore/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | alias(libs.plugins.newquiz.android.library) 3 | alias(libs.plugins.newquiz.android.hilt) 4 | alias(libs.plugins.newquiz.detekt) 5 | } 6 | 7 | android { 8 | namespace = "com.infinitepower.newquiz.core.datastore" 9 | } 10 | 11 | dependencies { 12 | api(libs.androidx.dataStore.preferences) 13 | 14 | implementation(projects.model) 15 | implementation(projects.core) 16 | } 17 | -------------------------------------------------------------------------------- /core/datastore/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/datastore/consumer-rules.pro -------------------------------------------------------------------------------- /core/datastore/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /core/datastore/src/main/kotlin/com/infinitepower/newquiz/core/datastore/PreferenceRequest.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz.core.datastore 2 | 3 | import androidx.datastore.preferences.core.Preferences 4 | 5 | open class PreferenceRequest( 6 | val key: Preferences.Key, 7 | val defaultValue: T 8 | ) 9 | -------------------------------------------------------------------------------- /core/datastore/src/main/kotlin/com/infinitepower/newquiz/core/datastore/manager/DataStoreManager.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz.core.datastore.manager 2 | 3 | import androidx.datastore.preferences.core.Preferences 4 | import com.infinitepower.newquiz.core.datastore.PreferenceRequest 5 | import kotlinx.coroutines.flow.Flow 6 | 7 | interface DataStoreManager { 8 | val preferenceFlow: Flow 9 | 10 | suspend fun getPreference(preferenceEntry: PreferenceRequest): T 11 | 12 | fun getPreferenceFlow(request: PreferenceRequest): Flow 13 | 14 | suspend fun editPreference(key: Preferences.Key, newValue: T) 15 | 16 | suspend fun editPreferences(vararg prefs: Preferences.Pair<*>) 17 | 18 | suspend fun clearPreferences() 19 | } 20 | -------------------------------------------------------------------------------- /core/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | -dontwarn java.lang.invoke.StringConcatFactory -------------------------------------------------------------------------------- /core/remote-config/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /core/remote-config/README.md: -------------------------------------------------------------------------------- 1 | # Remote Config Module (:core:remote_config) 2 | -------------------------------------------------------------------------------- /core/remote-config/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | alias(libs.plugins.newquiz.android.library) 3 | alias(libs.plugins.newquiz.android.hilt) 4 | alias(libs.plugins.newquiz.kotlin.serialization) 5 | alias(libs.plugins.newquiz.detekt) 6 | } 7 | 8 | android { 9 | namespace = "com.infinitepower.newquiz.core.remote_config" 10 | } 11 | 12 | dependencies { 13 | implementation(libs.androidx.startup.runtime) 14 | 15 | normalImplementation(platform(libs.firebase.bom)) 16 | normalImplementation(libs.firebase.remoteConfig) 17 | 18 | implementation(projects.model) 19 | normalImplementation(projects.core) 20 | } 21 | -------------------------------------------------------------------------------- /core/remote-config/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 11 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /core/src/androidTest/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 9 | 10 | -------------------------------------------------------------------------------- /core/src/androidTest/assets/buttons/back_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/androidTest/assets/buttons/back_button.png -------------------------------------------------------------------------------- /core/src/androidTest/assets/buttons/back_button2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/androidTest/assets/buttons/back_button2.png -------------------------------------------------------------------------------- /core/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /core/src/main/java/com/infinitepower/newquiz/core/common/BaseApiUrls.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz.core.common 2 | 3 | object BaseApiUrls { 4 | const val NEWQUIZ = "https://newquiz-app.vercel.app" 5 | } -------------------------------------------------------------------------------- /core/src/main/java/com/infinitepower/newquiz/core/common/Common.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz.core.common 2 | 3 | const val DEFAULT_USER_PHOTO = "https://firebasestorage.googleapis.com/v0/b/newsocial-app.appspot.com/o/Default%2Fuser_default_image.png?alt=media&token=69389847-7158-42aa-aab5-fc6a5499d3c7" -------------------------------------------------------------------------------- /core/src/main/java/com/infinitepower/newquiz/core/common/compose/preview/BooleanPreviewParameterProvider.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz.core.common.compose.preview 2 | 3 | import androidx.compose.ui.tooling.preview.PreviewParameterProvider 4 | 5 | class BooleanPreviewParameterProvider : PreviewParameterProvider { 6 | override val values: Sequence 7 | get() = sequenceOf(true, false) 8 | } -------------------------------------------------------------------------------- /core/src/main/java/com/infinitepower/newquiz/core/common/database/DatabaseCommon.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz.core.common.database 2 | 3 | object DatabaseCommon { 4 | object UserCollection { 5 | const val NAME = "users" 6 | 7 | const val FIELD_DIAMONDS = "data.diamonds" 8 | const val FIELD_TOTAL_XP = "data.totalXp" 9 | const val FIELD_LAST_QUIZ_TIMES = "data.multiChoiceQuizData.lastQuizTimes" 10 | const val FIELD_TOTAL_QUESTIONS_PLAYED = "data.multiChoiceQuizData.totalQuestionsPlayed" 11 | const val FIELD_CORRECT_ANSWERS = "data.multiChoiceQuizData.totalCorrectAnswers" 12 | 13 | const val FIELD_WORDLE_WORDS_PLAYED = "data.wordleData.wordsPlayed" 14 | const val FIELD_WORDLE_WORDS_CORRECT = "data.wordleData.wordsCorrect" 15 | } 16 | } -------------------------------------------------------------------------------- /core/src/main/java/com/infinitepower/newquiz/core/compose/preferences/LocalPreferenceEnabledStatus.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz.core.compose.preferences 2 | 3 | import androidx.compose.runtime.ProvidableCompositionLocal 4 | import androidx.compose.runtime.compositionLocalOf 5 | import androidx.compose.runtime.structuralEqualityPolicy 6 | 7 | val LocalPreferenceEnabledStatus: ProvidableCompositionLocal = 8 | compositionLocalOf(structuralEqualityPolicy()) { true } -------------------------------------------------------------------------------- /core/src/main/java/com/infinitepower/newquiz/core/di/KtorModule.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz.core.di 2 | 3 | import dagger.Module 4 | import dagger.Provides 5 | import dagger.hilt.InstallIn 6 | import dagger.hilt.components.SingletonComponent 7 | import io.ktor.client.HttpClient 8 | import io.ktor.client.engine.okhttp.OkHttp 9 | import javax.inject.Singleton 10 | 11 | @Module 12 | @InstallIn(SingletonComponent::class) 13 | object KtorModule { 14 | @Provides 15 | @Singleton 16 | fun providerKtorClient(): HttpClient = HttpClient(OkHttp) 17 | } 18 | -------------------------------------------------------------------------------- /core/src/main/java/com/infinitepower/newquiz/core/di/NetworkStatusModule.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz.core.di 2 | 3 | import com.infinitepower.newquiz.core.network.NetworkStatusTracker 4 | import com.infinitepower.newquiz.core.network.NetworkStatusTrackerImpl 5 | import dagger.Binds 6 | import dagger.Module 7 | import dagger.hilt.InstallIn 8 | import dagger.hilt.components.SingletonComponent 9 | 10 | @Module 11 | @InstallIn(SingletonComponent::class) 12 | abstract class NetworkStatusModule { 13 | @Binds 14 | abstract fun bindNetworkStatusTracker( 15 | networkStatusTrackerImpl: NetworkStatusTrackerImpl 16 | ): NetworkStatusTracker 17 | } -------------------------------------------------------------------------------- /core/src/main/java/com/infinitepower/newquiz/core/game/SkipGame.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz.core.game 2 | 3 | interface SkipGame { 4 | val skipCost: UInt 5 | 6 | suspend fun getUserDiamonds(): UInt 7 | 8 | suspend fun skip() 9 | } 10 | -------------------------------------------------------------------------------- /core/src/main/java/com/infinitepower/newquiz/core/math/evaluator/internal/Function.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz.core.math.evaluator.internal 2 | 3 | import java.math.BigDecimal 4 | 5 | abstract class Function { 6 | abstract fun call(arguments: List): BigDecimal 7 | } 8 | -------------------------------------------------------------------------------- /core/src/main/java/com/infinitepower/newquiz/core/math/evaluator/internal/Token.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz.core.math.evaluator.internal 2 | 3 | internal class Token( 4 | val type: TokenType, 5 | val lexeme: String, 6 | val literal: Any?, 7 | ) { 8 | override fun toString() = "$type $lexeme $literal" 9 | } 10 | -------------------------------------------------------------------------------- /core/src/main/java/com/infinitepower/newquiz/core/math/evaluator/internal/TokenType.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz.core.math.evaluator.internal 2 | 3 | internal enum class TokenType { 4 | // Basic operators 5 | PLUS, 6 | MINUS, 7 | STAR, 8 | SLASH, 9 | MODULO, 10 | EXPONENT, 11 | ASSIGN, 12 | FACTORIAL, 13 | 14 | // Logical operators 15 | EQUAL_EQUAL, 16 | NOT_EQUAL, 17 | GREATER, 18 | GREATER_EQUAL, 19 | LESS, 20 | LESS_EQUAL, 21 | BAR_BAR, 22 | AMP_AMP, 23 | 24 | // Other 25 | COMMA, 26 | 27 | // Parentheses 28 | LEFT_PAREN, 29 | RIGHT_PAREN, 30 | 31 | // Literals 32 | NUMBER, 33 | IDENTIFIER, 34 | 35 | EOF 36 | } 37 | -------------------------------------------------------------------------------- /core/src/main/java/com/infinitepower/newquiz/core/navigation/MazeNavigator.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz.core.navigation 2 | 3 | import com.infinitepower.newquiz.model.maze.MazeQuiz 4 | 5 | interface MazeNavigator { 6 | fun navigateToGame(item: MazeQuiz.MazeItem) 7 | 8 | fun navigateToMazeResults(itemId: Int) 9 | } 10 | -------------------------------------------------------------------------------- /core/src/main/java/com/infinitepower/newquiz/core/network/NetworkStatusTracker.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz.core.network 2 | 3 | import kotlinx.coroutines.flow.Flow 4 | 5 | interface NetworkStatusTracker { 6 | val isOnline: Flow 7 | 8 | fun isCurrentlyConnected(): Boolean 9 | } -------------------------------------------------------------------------------- /core/src/main/java/com/infinitepower/newquiz/core/theme/LocalAnimationsEnabled.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz.core.theme 2 | 3 | import androidx.annotation.Keep 4 | import androidx.compose.material3.MaterialTheme 5 | import androidx.compose.runtime.Composable 6 | import androidx.compose.runtime.ReadOnlyComposable 7 | import androidx.compose.runtime.compositionLocalOf 8 | 9 | @Keep 10 | data class AnimationsEnabled( 11 | val global: Boolean = true, 12 | val wordle: Boolean = true, 13 | val multiChoice: Boolean = true 14 | ) 15 | 16 | val LocalAnimationsEnabled = compositionLocalOf { AnimationsEnabled() } 17 | 18 | val MaterialTheme.animationsEnabled: AnimationsEnabled 19 | @Composable 20 | @ReadOnlyComposable 21 | get() = LocalAnimationsEnabled.current 22 | -------------------------------------------------------------------------------- /core/src/main/java/com/infinitepower/newquiz/core/util/UriUtils.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz.core.util 2 | 3 | import android.net.Uri 4 | import java.net.URI 5 | 6 | fun URI.toAndroidUri(): Uri = Uri.parse(this.toString()) 7 | 8 | fun Uri.toJavaURI(): URI = URI.create(this.toString()) 9 | 10 | fun emptyJavaURI(): URI = URI.create("") 11 | -------------------------------------------------------------------------------- /core/src/main/java/com/infinitepower/newquiz/core/util/android/DrawableUtils.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz.core.util.android 2 | 3 | /* 4 | /** 5 | * Get the dominant color of the image asynchronously 6 | */ 7 | fun Drawable.getDominantColor( 8 | onFinish: (Color) -> Unit 9 | ) { 10 | val bitmap = (this as BitmapDrawable).bitmap.copy(Bitmap.Config.ARGB_8888, true) 11 | 12 | Palette.from(bitmap).generate { palette -> 13 | palette?.vibrantSwatch?.rgb?.let { colorValue -> 14 | onFinish(Color(colorValue)) 15 | } 16 | } 17 | } 18 | 19 | */ -------------------------------------------------------------------------------- /core/src/main/java/com/infinitepower/newquiz/core/util/android/resources/ResourcesUtil.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz.core.util.android.resources 2 | 3 | import android.content.res.Resources 4 | import androidx.annotation.RawRes 5 | import kotlinx.coroutines.Dispatchers 6 | import kotlinx.coroutines.withContext 7 | import kotlinx.serialization.json.Json 8 | 9 | suspend inline fun Resources.readRawJson(@RawRes rawResId: Int): T { 10 | return withContext(Dispatchers.IO) { 11 | val resStr = openRawResource(rawResId).use { 12 | it.readBytes().decodeToString() 13 | } 14 | 15 | Json.decodeFromString(resStr) 16 | } 17 | } -------------------------------------------------------------------------------- /core/src/main/java/com/infinitepower/newquiz/core/util/collections/Collections.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz.core.util.collections 2 | 3 | inline fun Iterable.indexOfFirstOrNull(predicate: (T) -> Boolean) = indexOfFirst(predicate).takeIf { it >= 0 } -------------------------------------------------------------------------------- /core/src/main/java/com/infinitepower/newquiz/core/util/kotlin/BooleanUtils.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz.core.util.kotlin 2 | 3 | fun Boolean.toInt(): Int = if (this) 1 else 0 4 | 5 | fun Boolean.toLong(): Long = if (this) 1L else 0L 6 | 7 | fun Boolean.toULong(): ULong = if (this) 1uL else 0uL -------------------------------------------------------------------------------- /core/src/main/java/com/infinitepower/newquiz/core/util/kotlin/Math.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz.core.util.kotlin 2 | 3 | import kotlin.math.pow 4 | import kotlin.math.roundToInt 5 | 6 | fun Double.roundToUInt(): UInt = roundToInt().toUInt() 7 | 8 | infix fun UInt.pow(n: Int): UInt = toDouble().pow(n).toUInt() 9 | 10 | infix operator fun ULong.div(other: Float): Float = toLong() / other 11 | 12 | infix operator fun ULong.div(other: Double): Double = toLong() / other 13 | -------------------------------------------------------------------------------- /core/src/main/java/com/infinitepower/newquiz/core/util/kotlin/NumberUtils.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz.core.util.kotlin 2 | 3 | fun Int.toDoubleDigit(): String = String.format("%02d", this) 4 | 5 | operator fun UInt.times(multiplierFactor: Float): UInt { 6 | return this.toInt().times(multiplierFactor).toUInt() 7 | } 8 | 9 | operator fun UIntRange.times(multiplierFactor: Float): UIntRange { 10 | return this.first * multiplierFactor..this.last * multiplierFactor 11 | } 12 | -------------------------------------------------------------------------------- /core/src/main/java/com/infinitepower/newquiz/core/util/kotlin/SetUtils.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz.core.util.kotlin 2 | 3 | fun Set.removeFirst(): Set { 4 | return this - first() 5 | } 6 | 7 | fun Set.removeLast(): Set { 8 | return this - last() 9 | } 10 | -------------------------------------------------------------------------------- /core/src/main/java/com/infinitepower/newquiz/core/util/model/QuestionDifficultyUtil.kt: -------------------------------------------------------------------------------- 1 | package com.infinitepower.newquiz.core.util.model 2 | 3 | import com.infinitepower.newquiz.model.UiText 4 | import com.infinitepower.newquiz.model.question.QuestionDifficulty 5 | import com.infinitepower.newquiz.core.R as CoreR 6 | 7 | fun QuestionDifficulty.getText(): UiText = when (this) { 8 | is QuestionDifficulty.Easy -> UiText.StringResource(CoreR.string.easy) 9 | is QuestionDifficulty.Medium -> UiText.StringResource(CoreR.string.medium) 10 | is QuestionDifficulty.Hard -> UiText.StringResource(CoreR.string.hard) 11 | } -------------------------------------------------------------------------------- /core/src/main/res/drawable-hdpi/animals.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-hdpi/animals.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-hdpi/art.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-hdpi/art.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-hdpi/books.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-hdpi/books.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-hdpi/celebrities.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-hdpi/celebrities.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-hdpi/entertainment_board_games.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-hdpi/entertainment_board_games.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-hdpi/entertainment_cartoon_and_animations.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-hdpi/entertainment_cartoon_and_animations.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-hdpi/entertainment_comics.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-hdpi/entertainment_comics.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-hdpi/entertainment_japanese_anime_and_manga.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-hdpi/entertainment_japanese_anime_and_manga.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-hdpi/entertainment_television.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-hdpi/entertainment_television.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-hdpi/entertainment_video_games.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-hdpi/entertainment_video_games.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-hdpi/films.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-hdpi/films.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-hdpi/general_knowledge.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-hdpi/general_knowledge.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-hdpi/geography.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-hdpi/geography.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-hdpi/history.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-hdpi/history.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-hdpi/music.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-hdpi/music.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-hdpi/musicals_and_theatres.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-hdpi/musicals_and_theatres.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-hdpi/mythology.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-hdpi/mythology.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-hdpi/politics.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-hdpi/politics.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-hdpi/science_and_nature.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-hdpi/science_and_nature.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-hdpi/science_computers.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-hdpi/science_computers.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-hdpi/science_gadgets.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-hdpi/science_gadgets.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-hdpi/science_mathematics.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-hdpi/science_mathematics.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-hdpi/sports.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-hdpi/sports.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-hdpi/vehicles.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-hdpi/vehicles.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-mdpi/animals.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-mdpi/animals.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-mdpi/art.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-mdpi/art.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-mdpi/books.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-mdpi/books.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-mdpi/celebrities.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-mdpi/celebrities.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-mdpi/entertainment_board_games.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-mdpi/entertainment_board_games.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-mdpi/entertainment_cartoon_and_animations.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-mdpi/entertainment_cartoon_and_animations.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-mdpi/entertainment_comics.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-mdpi/entertainment_comics.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-mdpi/entertainment_japanese_anime_and_manga.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-mdpi/entertainment_japanese_anime_and_manga.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-mdpi/entertainment_television.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-mdpi/entertainment_television.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-mdpi/entertainment_video_games.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-mdpi/entertainment_video_games.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-mdpi/films.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-mdpi/films.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-mdpi/general_knowledge.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-mdpi/general_knowledge.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-mdpi/geography.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-mdpi/geography.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-mdpi/history.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-mdpi/history.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-mdpi/music.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-mdpi/music.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-mdpi/musicals_and_theatres.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-mdpi/musicals_and_theatres.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-mdpi/mythology.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-mdpi/mythology.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-mdpi/politics.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-mdpi/politics.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-mdpi/science_and_nature.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-mdpi/science_and_nature.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-mdpi/science_computers.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-mdpi/science_computers.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-mdpi/science_gadgets.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-mdpi/science_gadgets.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-mdpi/science_mathematics.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-mdpi/science_mathematics.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-mdpi/sports.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-mdpi/sports.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-mdpi/vehicles.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-mdpi/vehicles.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xhdpi/animals.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xhdpi/animals.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xhdpi/art.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xhdpi/art.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xhdpi/books.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xhdpi/books.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xhdpi/celebrities.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xhdpi/celebrities.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xhdpi/entertainment_board_games.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xhdpi/entertainment_board_games.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xhdpi/entertainment_cartoon_and_animations.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xhdpi/entertainment_cartoon_and_animations.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xhdpi/entertainment_comics.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xhdpi/entertainment_comics.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xhdpi/entertainment_japanese_anime_and_manga.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xhdpi/entertainment_japanese_anime_and_manga.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xhdpi/entertainment_television.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xhdpi/entertainment_television.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xhdpi/entertainment_video_games.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xhdpi/entertainment_video_games.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xhdpi/films.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xhdpi/films.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xhdpi/general_knowledge.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xhdpi/general_knowledge.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xhdpi/geography.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xhdpi/geography.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xhdpi/history.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xhdpi/history.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xhdpi/music.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xhdpi/music.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xhdpi/musicals_and_theatres.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xhdpi/musicals_and_theatres.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xhdpi/mythology.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xhdpi/mythology.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xhdpi/politics.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xhdpi/politics.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xhdpi/science_and_nature.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xhdpi/science_and_nature.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xhdpi/science_computers.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xhdpi/science_computers.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xhdpi/science_gadgets.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xhdpi/science_gadgets.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xhdpi/science_mathematics.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xhdpi/science_mathematics.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xhdpi/sports.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xhdpi/sports.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xhdpi/vehicles.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xhdpi/vehicles.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxhdpi/animals.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxhdpi/animals.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxhdpi/art.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxhdpi/art.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxhdpi/books.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxhdpi/books.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxhdpi/celebrities.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxhdpi/celebrities.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxhdpi/entertainment_board_games.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxhdpi/entertainment_board_games.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxhdpi/entertainment_cartoon_and_animations.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxhdpi/entertainment_cartoon_and_animations.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxhdpi/entertainment_comics.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxhdpi/entertainment_comics.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxhdpi/entertainment_japanese_anime_and_manga.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxhdpi/entertainment_japanese_anime_and_manga.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxhdpi/entertainment_television.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxhdpi/entertainment_television.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxhdpi/entertainment_video_games.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxhdpi/entertainment_video_games.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxhdpi/films.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxhdpi/films.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxhdpi/general_knowledge.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxhdpi/general_knowledge.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxhdpi/geography.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxhdpi/geography.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxhdpi/history.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxhdpi/history.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxhdpi/music.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxhdpi/music.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxhdpi/musicals_and_theatres.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxhdpi/musicals_and_theatres.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxhdpi/mythology.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxhdpi/mythology.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxhdpi/politics.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxhdpi/politics.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxhdpi/science_and_nature.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxhdpi/science_and_nature.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxhdpi/science_computers.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxhdpi/science_computers.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxhdpi/science_gadgets.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxhdpi/science_gadgets.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxhdpi/science_mathematics.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxhdpi/science_mathematics.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxhdpi/sports.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxhdpi/sports.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxhdpi/vehicles.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxhdpi/vehicles.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxxhdpi/animals.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxxhdpi/animals.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxxhdpi/art.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxxhdpi/art.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxxhdpi/books.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxxhdpi/books.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxxhdpi/celebrities.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxxhdpi/celebrities.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxxhdpi/entertainment_board_games.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxxhdpi/entertainment_board_games.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxxhdpi/entertainment_cartoon_and_animations.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxxhdpi/entertainment_cartoon_and_animations.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxxhdpi/entertainment_comics.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxxhdpi/entertainment_comics.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxxhdpi/entertainment_japanese_anime_and_manga.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxxhdpi/entertainment_japanese_anime_and_manga.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxxhdpi/entertainment_television.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxxhdpi/entertainment_television.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxxhdpi/entertainment_video_games.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxxhdpi/entertainment_video_games.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxxhdpi/films.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxxhdpi/films.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxxhdpi/general_knowledge.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxxhdpi/general_knowledge.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxxhdpi/geography.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxxhdpi/geography.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxxhdpi/history.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxxhdpi/history.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxxhdpi/music.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxxhdpi/music.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxxhdpi/musicals_and_theatres.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxxhdpi/musicals_and_theatres.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxxhdpi/mythology.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxxhdpi/mythology.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxxhdpi/politics.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxxhdpi/politics.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxxhdpi/science_and_nature.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxxhdpi/science_and_nature.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxxhdpi/science_computers.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxxhdpi/science_computers.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxxhdpi/science_gadgets.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxxhdpi/science_gadgets.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxxhdpi/science_mathematics.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxxhdpi/science_mathematics.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxxhdpi/sports.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxxhdpi/sports.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable-xxxhdpi/vehicles.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/drawable-xxxhdpi/vehicles.webp -------------------------------------------------------------------------------- /core/src/main/res/drawable/github_logo.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /core/src/main/res/drawable/round_android_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /core/src/main/res/drawable/round_flag_circle_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /core/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /core/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /core/src/main/res/mipmap-hdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/mipmap-hdpi/ic_launcher.webp -------------------------------------------------------------------------------- /core/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp -------------------------------------------------------------------------------- /core/src/main/res/mipmap-hdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/mipmap-hdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /core/src/main/res/mipmap-mdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/mipmap-mdpi/ic_launcher.webp -------------------------------------------------------------------------------- /core/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp -------------------------------------------------------------------------------- /core/src/main/res/mipmap-mdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/mipmap-mdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /core/src/main/res/mipmap-xhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/mipmap-xhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /core/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp -------------------------------------------------------------------------------- /core/src/main/res/mipmap-xhdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/mipmap-xhdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /core/src/main/res/mipmap-xxhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/mipmap-xxhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /core/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp -------------------------------------------------------------------------------- /core/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /core/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp -------------------------------------------------------------------------------- /core/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joaomanaia/newquiz/c6f3748ce80e0318a583f1785da728f7a3fdd0aa/core/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /core/src/main/res/values-et/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Salvestatud küsimused 4 | Lisavalikud 5 | Kiire mälumäng 6 | Tagasi 7 | Lõputu Wordle 8 | Igapäevane Wordle 9 | Kontrolli 10 | Mängi uuesti 11 | Sulge 12 | Mäng on läbi 13 | -------------------------------------------------------------------------------- /core/src/main/res/values-night/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | -------------------------------------------------------------------------------- /core/src/main/res/values/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #6040D7 4 | -------------------------------------------------------------------------------- /core/src/main/res/values/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 |