gitextract_68o3_ggl/ ├── .github/ │ └── workflows/ │ ├── code-analysis.yml │ └── update-dependencies-action.yml ├── .gitignore ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── app/ │ ├── .gitignore │ ├── build.gradle.kts │ ├── google-services.json │ ├── proguard-rules.pro │ └── src/ │ ├── androidTest/ │ │ └── kotlin/ │ │ └── com/ │ │ └── github/ │ │ └── odaridavid/ │ │ └── weatherapp/ │ │ └── SettingsRepositoryTest.kt │ ├── debug/ │ │ └── res/ │ │ ├── drawable/ │ │ │ └── ic_launcher_background.xml │ │ ├── drawable-v24/ │ │ │ └── ic_launcher_foreground.xml │ │ └── mipmap-anydpi-v26/ │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ ├── main/ │ │ ├── AndroidManifest.xml │ │ ├── java/ │ │ │ └── com/ │ │ │ └── github/ │ │ │ └── odaridavid/ │ │ │ └── weatherapp/ │ │ │ ├── MainViewModel.kt │ │ │ ├── WeatherApp.kt │ │ │ ├── common/ │ │ │ │ ├── AndroidExtensions.kt │ │ │ │ └── LocationRequest.kt │ │ │ ├── data/ │ │ │ │ ├── Extensions.kt │ │ │ │ ├── settings/ │ │ │ │ │ └── DefaultSettingsRepository.kt │ │ │ │ └── weather/ │ │ │ │ ├── DefaultWeatherRepository.kt │ │ │ │ ├── FirebaseLogger.kt │ │ │ │ └── remote/ │ │ │ │ ├── DefaultRemoteWeatherDataSource.kt │ │ │ │ ├── Mappers.kt │ │ │ │ ├── OpenWeatherService.kt │ │ │ │ ├── RemoteWeatherDataSource.kt │ │ │ │ └── WeatherResponse.kt │ │ │ ├── designsystem/ │ │ │ │ ├── Theme.kt │ │ │ │ ├── atom/ │ │ │ │ │ ├── Color.kt │ │ │ │ │ ├── Dimensions.kt │ │ │ │ │ ├── Shape.kt │ │ │ │ │ └── Type.kt │ │ │ │ ├── molecule/ │ │ │ │ │ ├── Buttons.kt │ │ │ │ │ ├── Image.kt │ │ │ │ │ └── Text.kt │ │ │ │ ├── organism/ │ │ │ │ │ ├── BottomSheets.kt │ │ │ │ │ ├── Dialogs.kt │ │ │ │ │ ├── NavBars.kt │ │ │ │ │ ├── Row.kt │ │ │ │ │ └── TextWidgets.kt │ │ │ │ └── templates/ │ │ │ │ ├── ErrorScreen.kt │ │ │ │ ├── InfoScreens.kt │ │ │ │ └── ProgressScreens.kt │ │ │ ├── di/ │ │ │ │ ├── ClientModule.kt │ │ │ │ └── RepositoryModule.kt │ │ │ └── ui/ │ │ │ ├── AppNavGraph.kt │ │ │ ├── MainActivity.kt │ │ │ ├── about/ │ │ │ │ └── AboutScreen.kt │ │ │ ├── home/ │ │ │ │ ├── HomeScreen.kt │ │ │ │ ├── HomeScreenIntent.kt │ │ │ │ ├── HomeViewModel.kt │ │ │ │ └── Mappers.kt │ │ │ ├── settings/ │ │ │ │ ├── SettingsScreen.kt │ │ │ │ ├── SettingsScreenIntent.kt │ │ │ │ ├── SettingsViewModel.kt │ │ │ │ └── UIMapper.kt │ │ │ └── update/ │ │ │ ├── UpdateAppException.kt │ │ │ ├── UpdateManager.kt │ │ │ └── UpdateStateFactory.kt │ │ └── res/ │ │ ├── drawable/ │ │ │ ├── ic_arrow_back.xml │ │ │ ├── ic_exclude_24.xml │ │ │ ├── ic_info_24.xml │ │ │ ├── ic_language.xml │ │ │ ├── ic_launcher_background.xml │ │ │ ├── ic_settings.xml │ │ │ ├── ic_time_24.xml │ │ │ └── ic_units.xml │ │ ├── drawable-night/ │ │ │ ├── ic_arrow_back.xml │ │ │ ├── ic_exclude_24.xml │ │ │ ├── ic_info_24.xml │ │ │ ├── ic_language.xml │ │ │ ├── ic_settings.xml │ │ │ ├── ic_time_24.xml │ │ │ └── ic_units.xml │ │ ├── drawable-v24/ │ │ │ └── ic_launcher_foreground.xml │ │ ├── mipmap-anydpi-v26/ │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ ├── values/ │ │ │ ├── colors.xml │ │ │ ├── strings.xml │ │ │ └── themes.xml │ │ └── xml/ │ │ ├── backup_rules.xml │ │ └── data_extraction_rules.xml │ └── test/ │ └── java/ │ └── com/ │ └── github/ │ └── odaridavid/ │ └── weatherapp/ │ ├── HomeViewModelTest.kt │ ├── MainViewModelTest.kt │ ├── SettingsRepositoryTest.kt │ ├── SettingsViewModelTest.kt │ ├── UIMapperTest.kt │ ├── WeatherRepositoryTest.kt │ ├── fakes/ │ │ ├── FakeSettingsRepository.kt │ │ └── Fakes.kt │ └── rules/ │ └── MainCoroutineRule.kt ├── build.gradle.kts ├── gradle/ │ ├── libs.versions.toml │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── iOSApp/ │ ├── iOSApp/ │ │ ├── Assets.xcassets/ │ │ │ ├── AccentColor.colorset/ │ │ │ │ └── Contents.json │ │ │ ├── AppIcon.appiconset/ │ │ │ │ └── Contents.json │ │ │ └── Contents.json │ │ ├── ContentView.swift │ │ ├── Preview Content/ │ │ │ └── Preview Assets.xcassets/ │ │ │ └── Contents.json │ │ └── iOSAppApp.swift │ ├── iOSApp.xcodeproj/ │ │ ├── project.pbxproj │ │ ├── project.xcworkspace/ │ │ │ ├── contents.xcworkspacedata │ │ │ ├── xcshareddata/ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ └── xcuserdata/ │ │ │ └── odari.xcuserdatad/ │ │ │ └── UserInterfaceState.xcuserstate │ │ └── xcuserdata/ │ │ └── odari.xcuserdatad/ │ │ └── xcschemes/ │ │ └── xcschememanagement.plist │ ├── iOSAppTests/ │ │ └── iOSAppTests.swift │ └── iOSAppUITests/ │ ├── iOSAppUITests.swift │ └── iOSAppUITestsLaunchTests.swift ├── pull_request_template.md ├── settings.gradle.kts └── shared/ ├── build.gradle.kts └── src/ └── commonMain/ └── kotlin/ └── com/ └── github/ └── odaridavid/ └── weatherapp/ ├── api/ │ ├── Logger.kt │ ├── SettingsRepository.kt │ └── WeatherRepository.kt └── model/ ├── DefaultLocation.kt ├── ExcludedData.kt ├── Result.kt ├── SupportedLanguage.kt ├── Throwables.kt ├── TimeFormat.kt ├── Units.kt └── Weather.kt