diff --git a/README.MD.other b/README.MD.other new file mode 100644 index 00000000..afde7890 --- /dev/null +++ b/README.MD.other @@ -0,0 +1,19 @@ +# ScanBridge + +### Android +To run the application on android device/emulator: + - open project in Android Studio and run imported android run configuration + +To build the application bundle: + - run `./gradlew :androidApp:assembleDebug` + - find `.apk` file in `androidApp/build/outputs/apk/debug/androidApp-debug.apk` + +### Desktop +Run the desktop application: `./gradlew :desktopApp:run` +Run the desktop **hot reload** application: `./gradlew :desktopApp:hotRun --auto` + +### iOS +To run the application on iPhone device/simulator: + - Open `iosApp/iosApp.xcproject` in Xcode and run standard configuration + - Or use [Kotlin Multiplatform Mobile plugin](https://plugins.jetbrains.com/plugin/14936-kotlin-multiplatform-mobile) for Android Studio + diff --git a/README.md b/README.md index a01bd621..679da54f 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@

- Get it on F-Droid - Get it on Google Play - Discover scanners in your network - Scan multiple pages - Use your scanner to the maximum of its abilities + Discover scanners in your network + Scan multiple pages + Use your scanner to the maximum of its abilities ## Features @@ -104,7 +104,7 @@ If you want to chat with me or other users, you can join the Matrix room ## Contributions Contributions are welcome, and it would be amazing if you want to help. Refer to -the [Contribution Guidelines](CONTRIBUTING.md) for more information. +the [Contribution Guidelines](androidApp/CONTRIBUTING.md) for more information. ## License diff --git a/app/.gitignore b/androidApp/.gitignore similarity index 100% rename from app/.gitignore rename to androidApp/.gitignore diff --git a/CHANGELOG.md b/androidApp/CHANGELOG.md similarity index 100% rename from CHANGELOG.md rename to androidApp/CHANGELOG.md diff --git a/CONTRIBUTING.md b/androidApp/CONTRIBUTING.md similarity index 100% rename from CONTRIBUTING.md rename to androidApp/CONTRIBUTING.md diff --git a/COPYING b/androidApp/COPYING similarity index 100% rename from COPYING rename to androidApp/COPYING diff --git a/Gemfile b/androidApp/Gemfile similarity index 100% rename from Gemfile rename to androidApp/Gemfile diff --git a/Gemfile.lock b/androidApp/Gemfile.lock similarity index 100% rename from Gemfile.lock rename to androidApp/Gemfile.lock diff --git a/adb+.sh b/androidApp/adb+.sh similarity index 100% rename from adb+.sh rename to androidApp/adb+.sh diff --git a/assets/GetItOnGooglePlay_Badge_Web_color_English.svg b/androidApp/assets/GetItOnGooglePlay_Badge_Web_color_English.svg similarity index 100% rename from assets/GetItOnGooglePlay_Badge_Web_color_English.svg rename to androidApp/assets/GetItOnGooglePlay_Badge_Web_color_English.svg diff --git a/assets/get-it-on-fdroid.svg b/androidApp/assets/get-it-on-fdroid.svg similarity index 100% rename from assets/get-it-on-fdroid.svg rename to androidApp/assets/get-it-on-fdroid.svg diff --git a/assets/icon.svg b/androidApp/assets/icon.svg similarity index 100% rename from assets/icon.svg rename to androidApp/assets/icon.svg diff --git a/app/build.gradle.kts b/androidApp/build.gradle.kts similarity index 89% rename from app/build.gradle.kts rename to androidApp/build.gradle.kts index 01f50bcc..32ce3b87 100644 --- a/app/build.gradle.kts +++ b/androidApp/build.gradle.kts @@ -18,26 +18,10 @@ plugins { id("app.cash.paraphrase") version "0.4.1" } -fun getGitCommitHash(): String { - return try { - val command = "git rev-parse --short HEAD" - val process = ProcessBuilder() - .command(command.split(" ")) - .directory(rootProject.projectDir) - .redirectError(ProcessBuilder.Redirect.INHERIT) - .start() - val wait = process.waitFor(60, TimeUnit.SECONDS) - if (!wait) { - return "unknown" - } - - val result = process.inputStream.bufferedReader().readText() - - result.trim() - } catch (_: Exception) { - "unknown" // Fallback - } -} +val gitHashProvider = providers.exec { + commandLine("git", "rev-parse", "--short", "HEAD") + isIgnoreExitValue = true +}.standardOutput.asText.map { it.trim() } tasks.withType().all { compilerOptions { @@ -76,10 +60,10 @@ android { getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) - buildConfigField("String", "GIT_COMMIT_HASH", "\"${getGitCommitHash()}\"") + buildConfigField("String", "GIT_COMMIT_HASH", "\"${gitHashProvider.get()}\"") } debug { - buildConfigField("String", "GIT_COMMIT_HASH", "\"${getGitCommitHash()}\"") + buildConfigField("String", "GIT_COMMIT_HASH", "\"${gitHashProvider.get()}\"") } } flavorDimensions += "edition" diff --git a/fastlane/Appfile b/androidApp/fastlane/Appfile similarity index 100% rename from fastlane/Appfile rename to androidApp/fastlane/Appfile diff --git a/fastlane/Fastfile b/androidApp/fastlane/Fastfile similarity index 100% rename from fastlane/Fastfile rename to androidApp/fastlane/Fastfile diff --git a/fastlane/README.md b/androidApp/fastlane/README.md similarity index 100% rename from fastlane/README.md rename to androidApp/fastlane/README.md diff --git a/fastlane/Screengrabfile b/androidApp/fastlane/Screengrabfile similarity index 100% rename from fastlane/Screengrabfile rename to androidApp/fastlane/Screengrabfile diff --git a/fastlane/metadata/android/de-DE/changelogs/1000000.txt b/androidApp/fastlane/metadata/android/de-DE/changelogs/1000000.txt similarity index 100% rename from fastlane/metadata/android/de-DE/changelogs/1000000.txt rename to androidApp/fastlane/metadata/android/de-DE/changelogs/1000000.txt diff --git a/fastlane/metadata/android/de-DE/changelogs/1000001.txt b/androidApp/fastlane/metadata/android/de-DE/changelogs/1000001.txt similarity index 100% rename from fastlane/metadata/android/de-DE/changelogs/1000001.txt rename to androidApp/fastlane/metadata/android/de-DE/changelogs/1000001.txt diff --git a/fastlane/metadata/android/de-DE/changelogs/1001000.txt b/androidApp/fastlane/metadata/android/de-DE/changelogs/1001000.txt similarity index 100% rename from fastlane/metadata/android/de-DE/changelogs/1001000.txt rename to androidApp/fastlane/metadata/android/de-DE/changelogs/1001000.txt diff --git a/fastlane/metadata/android/de-DE/changelogs/1002000.txt b/androidApp/fastlane/metadata/android/de-DE/changelogs/1002000.txt similarity index 100% rename from fastlane/metadata/android/de-DE/changelogs/1002000.txt rename to androidApp/fastlane/metadata/android/de-DE/changelogs/1002000.txt diff --git a/fastlane/metadata/android/de-DE/changelogs/1003000.txt b/androidApp/fastlane/metadata/android/de-DE/changelogs/1003000.txt similarity index 100% rename from fastlane/metadata/android/de-DE/changelogs/1003000.txt rename to androidApp/fastlane/metadata/android/de-DE/changelogs/1003000.txt diff --git a/fastlane/metadata/android/de-DE/changelogs/1004000.txt b/androidApp/fastlane/metadata/android/de-DE/changelogs/1004000.txt similarity index 100% rename from fastlane/metadata/android/de-DE/changelogs/1004000.txt rename to androidApp/fastlane/metadata/android/de-DE/changelogs/1004000.txt diff --git a/fastlane/metadata/android/de-DE/changelogs/1005000.txt b/androidApp/fastlane/metadata/android/de-DE/changelogs/1005000.txt similarity index 100% rename from fastlane/metadata/android/de-DE/changelogs/1005000.txt rename to androidApp/fastlane/metadata/android/de-DE/changelogs/1005000.txt diff --git a/fastlane/metadata/android/de-DE/changelogs/1006001.txt b/androidApp/fastlane/metadata/android/de-DE/changelogs/1006001.txt similarity index 100% rename from fastlane/metadata/android/de-DE/changelogs/1006001.txt rename to androidApp/fastlane/metadata/android/de-DE/changelogs/1006001.txt diff --git a/fastlane/metadata/android/de-DE/changelogs/1006002.txt b/androidApp/fastlane/metadata/android/de-DE/changelogs/1006002.txt similarity index 100% rename from fastlane/metadata/android/de-DE/changelogs/1006002.txt rename to androidApp/fastlane/metadata/android/de-DE/changelogs/1006002.txt diff --git a/fastlane/metadata/android/de-DE/changelogs/2000000.txt b/androidApp/fastlane/metadata/android/de-DE/changelogs/2000000.txt similarity index 100% rename from fastlane/metadata/android/de-DE/changelogs/2000000.txt rename to androidApp/fastlane/metadata/android/de-DE/changelogs/2000000.txt diff --git a/fastlane/metadata/android/de-DE/changelogs/2000001.txt b/androidApp/fastlane/metadata/android/de-DE/changelogs/2000001.txt similarity index 100% rename from fastlane/metadata/android/de-DE/changelogs/2000001.txt rename to androidApp/fastlane/metadata/android/de-DE/changelogs/2000001.txt diff --git a/fastlane/metadata/android/de-DE/changelogs/2001002.txt b/androidApp/fastlane/metadata/android/de-DE/changelogs/2001002.txt similarity index 100% rename from fastlane/metadata/android/de-DE/changelogs/2001002.txt rename to androidApp/fastlane/metadata/android/de-DE/changelogs/2001002.txt diff --git a/fastlane/metadata/android/de-DE/changelogs/2001003.txt b/androidApp/fastlane/metadata/android/de-DE/changelogs/2001003.txt similarity index 100% rename from fastlane/metadata/android/de-DE/changelogs/2001003.txt rename to androidApp/fastlane/metadata/android/de-DE/changelogs/2001003.txt diff --git a/fastlane/metadata/android/de-DE/changelogs/2001004.txt b/androidApp/fastlane/metadata/android/de-DE/changelogs/2001004.txt similarity index 100% rename from fastlane/metadata/android/de-DE/changelogs/2001004.txt rename to androidApp/fastlane/metadata/android/de-DE/changelogs/2001004.txt diff --git a/fastlane/metadata/android/de-DE/full_description.txt b/androidApp/fastlane/metadata/android/de-DE/full_description.txt similarity index 100% rename from fastlane/metadata/android/de-DE/full_description.txt rename to androidApp/fastlane/metadata/android/de-DE/full_description.txt diff --git a/fastlane/metadata/android/de-DE/images/phoneScreenshots/01-scannedPageScreen_1773391883115.png b/androidApp/fastlane/metadata/android/de-DE/images/phoneScreenshots/01-scannedPageScreen_1773391883115.png similarity index 100% rename from fastlane/metadata/android/de-DE/images/phoneScreenshots/01-scannedPageScreen_1773391883115.png rename to androidApp/fastlane/metadata/android/de-DE/images/phoneScreenshots/01-scannedPageScreen_1773391883115.png diff --git a/fastlane/metadata/android/de-DE/images/phoneScreenshots/02-scanSettings_1773391879801.png b/androidApp/fastlane/metadata/android/de-DE/images/phoneScreenshots/02-scanSettings_1773391879801.png similarity index 100% rename from fastlane/metadata/android/de-DE/images/phoneScreenshots/02-scanSettings_1773391879801.png rename to androidApp/fastlane/metadata/android/de-DE/images/phoneScreenshots/02-scanSettings_1773391879801.png diff --git a/fastlane/metadata/android/de-DE/images/phoneScreenshots/03-discoveryScreen_1773391880499.png b/androidApp/fastlane/metadata/android/de-DE/images/phoneScreenshots/03-discoveryScreen_1773391880499.png similarity index 100% rename from fastlane/metadata/android/de-DE/images/phoneScreenshots/03-discoveryScreen_1773391880499.png rename to androidApp/fastlane/metadata/android/de-DE/images/phoneScreenshots/03-discoveryScreen_1773391880499.png diff --git a/fastlane/metadata/android/de-DE/images/phoneScreenshots/04-emptyScanScreen_1773391882198.png b/androidApp/fastlane/metadata/android/de-DE/images/phoneScreenshots/04-emptyScanScreen_1773391882198.png similarity index 100% rename from fastlane/metadata/android/de-DE/images/phoneScreenshots/04-emptyScanScreen_1773391882198.png rename to androidApp/fastlane/metadata/android/de-DE/images/phoneScreenshots/04-emptyScanScreen_1773391882198.png diff --git a/fastlane/metadata/android/de-DE/images/phoneScreenshots/05-settingsScreen_1773391884031.png b/androidApp/fastlane/metadata/android/de-DE/images/phoneScreenshots/05-settingsScreen_1773391884031.png similarity index 100% rename from fastlane/metadata/android/de-DE/images/phoneScreenshots/05-settingsScreen_1773391884031.png rename to androidApp/fastlane/metadata/android/de-DE/images/phoneScreenshots/05-settingsScreen_1773391884031.png diff --git a/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/01-scannedPageScreen_1773392085232.png b/androidApp/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/01-scannedPageScreen_1773392085232.png similarity index 100% rename from fastlane/metadata/android/de-DE/images/sevenInchScreenshots/01-scannedPageScreen_1773392085232.png rename to androidApp/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/01-scannedPageScreen_1773392085232.png diff --git a/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/02-scanSettings_1773392081788.png b/androidApp/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/02-scanSettings_1773392081788.png similarity index 100% rename from fastlane/metadata/android/de-DE/images/sevenInchScreenshots/02-scanSettings_1773392081788.png rename to androidApp/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/02-scanSettings_1773392081788.png diff --git a/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/03-discoveryScreen_1773392082774.png b/androidApp/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/03-discoveryScreen_1773392082774.png similarity index 100% rename from fastlane/metadata/android/de-DE/images/sevenInchScreenshots/03-discoveryScreen_1773392082774.png rename to androidApp/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/03-discoveryScreen_1773392082774.png diff --git a/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/04-emptyScanScreen_1773392084316.png b/androidApp/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/04-emptyScanScreen_1773392084316.png similarity index 100% rename from fastlane/metadata/android/de-DE/images/sevenInchScreenshots/04-emptyScanScreen_1773392084316.png rename to androidApp/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/04-emptyScanScreen_1773392084316.png diff --git a/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/05-settingsScreen_1773392086217.png b/androidApp/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/05-settingsScreen_1773392086217.png similarity index 100% rename from fastlane/metadata/android/de-DE/images/sevenInchScreenshots/05-settingsScreen_1773392086217.png rename to androidApp/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/05-settingsScreen_1773392086217.png diff --git a/fastlane/metadata/android/de-DE/images/tenInchScreenshots/01-scannedPageScreen_1772541896730.png b/androidApp/fastlane/metadata/android/de-DE/images/tenInchScreenshots/01-scannedPageScreen_1772541896730.png similarity index 100% rename from fastlane/metadata/android/de-DE/images/tenInchScreenshots/01-scannedPageScreen_1772541896730.png rename to androidApp/fastlane/metadata/android/de-DE/images/tenInchScreenshots/01-scannedPageScreen_1772541896730.png diff --git a/fastlane/metadata/android/de-DE/images/tenInchScreenshots/02-scanSettings_1772541894045.png b/androidApp/fastlane/metadata/android/de-DE/images/tenInchScreenshots/02-scanSettings_1772541894045.png similarity index 100% rename from fastlane/metadata/android/de-DE/images/tenInchScreenshots/02-scanSettings_1772541894045.png rename to androidApp/fastlane/metadata/android/de-DE/images/tenInchScreenshots/02-scanSettings_1772541894045.png diff --git a/fastlane/metadata/android/de-DE/images/tenInchScreenshots/03-discoveryScreen_1772541894498.png b/androidApp/fastlane/metadata/android/de-DE/images/tenInchScreenshots/03-discoveryScreen_1772541894498.png similarity index 100% rename from fastlane/metadata/android/de-DE/images/tenInchScreenshots/03-discoveryScreen_1772541894498.png rename to androidApp/fastlane/metadata/android/de-DE/images/tenInchScreenshots/03-discoveryScreen_1772541894498.png diff --git a/fastlane/metadata/android/de-DE/images/tenInchScreenshots/04-emptyScanScreen_1772541895682.png b/androidApp/fastlane/metadata/android/de-DE/images/tenInchScreenshots/04-emptyScanScreen_1772541895682.png similarity index 100% rename from fastlane/metadata/android/de-DE/images/tenInchScreenshots/04-emptyScanScreen_1772541895682.png rename to androidApp/fastlane/metadata/android/de-DE/images/tenInchScreenshots/04-emptyScanScreen_1772541895682.png diff --git a/fastlane/metadata/android/de-DE/images/tenInchScreenshots/05-settingsScreen_1772541897397.png b/androidApp/fastlane/metadata/android/de-DE/images/tenInchScreenshots/05-settingsScreen_1772541897397.png similarity index 100% rename from fastlane/metadata/android/de-DE/images/tenInchScreenshots/05-settingsScreen_1772541897397.png rename to androidApp/fastlane/metadata/android/de-DE/images/tenInchScreenshots/05-settingsScreen_1772541897397.png diff --git a/fastlane/metadata/android/de-DE/short_description.txt b/androidApp/fastlane/metadata/android/de-DE/short_description.txt similarity index 100% rename from fastlane/metadata/android/de-DE/short_description.txt rename to androidApp/fastlane/metadata/android/de-DE/short_description.txt diff --git a/fastlane/metadata/android/de-DE/title.txt b/androidApp/fastlane/metadata/android/de-DE/title.txt similarity index 100% rename from fastlane/metadata/android/de-DE/title.txt rename to androidApp/fastlane/metadata/android/de-DE/title.txt diff --git a/fastlane/metadata/android/en-US/changelogs/1000000.txt b/androidApp/fastlane/metadata/android/en-US/changelogs/1000000.txt similarity index 100% rename from fastlane/metadata/android/en-US/changelogs/1000000.txt rename to androidApp/fastlane/metadata/android/en-US/changelogs/1000000.txt diff --git a/fastlane/metadata/android/en-US/changelogs/1000001.txt b/androidApp/fastlane/metadata/android/en-US/changelogs/1000001.txt similarity index 100% rename from fastlane/metadata/android/en-US/changelogs/1000001.txt rename to androidApp/fastlane/metadata/android/en-US/changelogs/1000001.txt diff --git a/fastlane/metadata/android/en-US/changelogs/1001000.txt b/androidApp/fastlane/metadata/android/en-US/changelogs/1001000.txt similarity index 100% rename from fastlane/metadata/android/en-US/changelogs/1001000.txt rename to androidApp/fastlane/metadata/android/en-US/changelogs/1001000.txt diff --git a/fastlane/metadata/android/en-US/changelogs/1002000.txt b/androidApp/fastlane/metadata/android/en-US/changelogs/1002000.txt similarity index 100% rename from fastlane/metadata/android/en-US/changelogs/1002000.txt rename to androidApp/fastlane/metadata/android/en-US/changelogs/1002000.txt diff --git a/fastlane/metadata/android/en-US/changelogs/1003000.txt b/androidApp/fastlane/metadata/android/en-US/changelogs/1003000.txt similarity index 100% rename from fastlane/metadata/android/en-US/changelogs/1003000.txt rename to androidApp/fastlane/metadata/android/en-US/changelogs/1003000.txt diff --git a/fastlane/metadata/android/en-US/changelogs/1004000.txt b/androidApp/fastlane/metadata/android/en-US/changelogs/1004000.txt similarity index 100% rename from fastlane/metadata/android/en-US/changelogs/1004000.txt rename to androidApp/fastlane/metadata/android/en-US/changelogs/1004000.txt diff --git a/fastlane/metadata/android/en-US/changelogs/1005000.txt b/androidApp/fastlane/metadata/android/en-US/changelogs/1005000.txt similarity index 100% rename from fastlane/metadata/android/en-US/changelogs/1005000.txt rename to androidApp/fastlane/metadata/android/en-US/changelogs/1005000.txt diff --git a/fastlane/metadata/android/en-US/changelogs/1006001.txt b/androidApp/fastlane/metadata/android/en-US/changelogs/1006001.txt similarity index 100% rename from fastlane/metadata/android/en-US/changelogs/1006001.txt rename to androidApp/fastlane/metadata/android/en-US/changelogs/1006001.txt diff --git a/fastlane/metadata/android/en-US/changelogs/1006002.txt b/androidApp/fastlane/metadata/android/en-US/changelogs/1006002.txt similarity index 100% rename from fastlane/metadata/android/en-US/changelogs/1006002.txt rename to androidApp/fastlane/metadata/android/en-US/changelogs/1006002.txt diff --git a/fastlane/metadata/android/en-US/changelogs/2000000.txt b/androidApp/fastlane/metadata/android/en-US/changelogs/2000000.txt similarity index 100% rename from fastlane/metadata/android/en-US/changelogs/2000000.txt rename to androidApp/fastlane/metadata/android/en-US/changelogs/2000000.txt diff --git a/fastlane/metadata/android/en-US/changelogs/2000001.txt b/androidApp/fastlane/metadata/android/en-US/changelogs/2000001.txt similarity index 100% rename from fastlane/metadata/android/en-US/changelogs/2000001.txt rename to androidApp/fastlane/metadata/android/en-US/changelogs/2000001.txt diff --git a/fastlane/metadata/android/en-US/changelogs/2001002.txt b/androidApp/fastlane/metadata/android/en-US/changelogs/2001002.txt similarity index 100% rename from fastlane/metadata/android/en-US/changelogs/2001002.txt rename to androidApp/fastlane/metadata/android/en-US/changelogs/2001002.txt diff --git a/fastlane/metadata/android/en-US/changelogs/2001003.txt b/androidApp/fastlane/metadata/android/en-US/changelogs/2001003.txt similarity index 100% rename from fastlane/metadata/android/en-US/changelogs/2001003.txt rename to androidApp/fastlane/metadata/android/en-US/changelogs/2001003.txt diff --git a/fastlane/metadata/android/en-US/changelogs/2001004.txt b/androidApp/fastlane/metadata/android/en-US/changelogs/2001004.txt similarity index 100% rename from fastlane/metadata/android/en-US/changelogs/2001004.txt rename to androidApp/fastlane/metadata/android/en-US/changelogs/2001004.txt diff --git a/fastlane/metadata/android/en-US/full_description.txt b/androidApp/fastlane/metadata/android/en-US/full_description.txt similarity index 100% rename from fastlane/metadata/android/en-US/full_description.txt rename to androidApp/fastlane/metadata/android/en-US/full_description.txt diff --git a/fastlane/metadata/android/en-US/images/icon.png b/androidApp/fastlane/metadata/android/en-US/images/icon.png similarity index 100% rename from fastlane/metadata/android/en-US/images/icon.png rename to androidApp/fastlane/metadata/android/en-US/images/icon.png diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/01-scannedPageScreen_1773391873581.png b/androidApp/fastlane/metadata/android/en-US/images/phoneScreenshots/01-scannedPageScreen_1773391873581.png similarity index 100% rename from fastlane/metadata/android/en-US/images/phoneScreenshots/01-scannedPageScreen_1773391873581.png rename to androidApp/fastlane/metadata/android/en-US/images/phoneScreenshots/01-scannedPageScreen_1773391873581.png diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/02-scanSettings_1773391870896.png b/androidApp/fastlane/metadata/android/en-US/images/phoneScreenshots/02-scanSettings_1773391870896.png similarity index 100% rename from fastlane/metadata/android/en-US/images/phoneScreenshots/02-scanSettings_1773391870896.png rename to androidApp/fastlane/metadata/android/en-US/images/phoneScreenshots/02-scanSettings_1773391870896.png diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/03-discoveryScreen_1773391871298.png b/androidApp/fastlane/metadata/android/en-US/images/phoneScreenshots/03-discoveryScreen_1773391871298.png similarity index 100% rename from fastlane/metadata/android/en-US/images/phoneScreenshots/03-discoveryScreen_1773391871298.png rename to androidApp/fastlane/metadata/android/en-US/images/phoneScreenshots/03-discoveryScreen_1773391871298.png diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/04-emptyScanScreen_1773391872597.png b/androidApp/fastlane/metadata/android/en-US/images/phoneScreenshots/04-emptyScanScreen_1773391872597.png similarity index 100% rename from fastlane/metadata/android/en-US/images/phoneScreenshots/04-emptyScanScreen_1773391872597.png rename to androidApp/fastlane/metadata/android/en-US/images/phoneScreenshots/04-emptyScanScreen_1773391872597.png diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/05-settingsScreen_1773391874196.png b/androidApp/fastlane/metadata/android/en-US/images/phoneScreenshots/05-settingsScreen_1773391874196.png similarity index 100% rename from fastlane/metadata/android/en-US/images/phoneScreenshots/05-settingsScreen_1773391874196.png rename to androidApp/fastlane/metadata/android/en-US/images/phoneScreenshots/05-settingsScreen_1773391874196.png diff --git a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/01-scannedPageScreen_1773392074370.png b/androidApp/fastlane/metadata/android/en-US/images/sevenInchScreenshots/01-scannedPageScreen_1773392074370.png similarity index 100% rename from fastlane/metadata/android/en-US/images/sevenInchScreenshots/01-scannedPageScreen_1773392074370.png rename to androidApp/fastlane/metadata/android/en-US/images/sevenInchScreenshots/01-scannedPageScreen_1773392074370.png diff --git a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/02-scanSettings_1773392071595.png b/androidApp/fastlane/metadata/android/en-US/images/sevenInchScreenshots/02-scanSettings_1773392071595.png similarity index 100% rename from fastlane/metadata/android/en-US/images/sevenInchScreenshots/02-scanSettings_1773392071595.png rename to androidApp/fastlane/metadata/android/en-US/images/sevenInchScreenshots/02-scanSettings_1773392071595.png diff --git a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/03-discoveryScreen_1773392071982.png b/androidApp/fastlane/metadata/android/en-US/images/sevenInchScreenshots/03-discoveryScreen_1773392071982.png similarity index 100% rename from fastlane/metadata/android/en-US/images/sevenInchScreenshots/03-discoveryScreen_1773392071982.png rename to androidApp/fastlane/metadata/android/en-US/images/sevenInchScreenshots/03-discoveryScreen_1773392071982.png diff --git a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/04-emptyScanScreen_1773392073386.png b/androidApp/fastlane/metadata/android/en-US/images/sevenInchScreenshots/04-emptyScanScreen_1773392073386.png similarity index 100% rename from fastlane/metadata/android/en-US/images/sevenInchScreenshots/04-emptyScanScreen_1773392073386.png rename to androidApp/fastlane/metadata/android/en-US/images/sevenInchScreenshots/04-emptyScanScreen_1773392073386.png diff --git a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/05-settingsScreen_1773392074964.png b/androidApp/fastlane/metadata/android/en-US/images/sevenInchScreenshots/05-settingsScreen_1773392074964.png similarity index 100% rename from fastlane/metadata/android/en-US/images/sevenInchScreenshots/05-settingsScreen_1773392074964.png rename to androidApp/fastlane/metadata/android/en-US/images/sevenInchScreenshots/05-settingsScreen_1773392074964.png diff --git a/fastlane/metadata/android/en-US/images/tenInchScreenshots/01-scannedPageScreen_1772541886403.png b/androidApp/fastlane/metadata/android/en-US/images/tenInchScreenshots/01-scannedPageScreen_1772541886403.png similarity index 100% rename from fastlane/metadata/android/en-US/images/tenInchScreenshots/01-scannedPageScreen_1772541886403.png rename to androidApp/fastlane/metadata/android/en-US/images/tenInchScreenshots/01-scannedPageScreen_1772541886403.png diff --git a/fastlane/metadata/android/en-US/images/tenInchScreenshots/02-scanSettings_1772541881705.png b/androidApp/fastlane/metadata/android/en-US/images/tenInchScreenshots/02-scanSettings_1772541881705.png similarity index 100% rename from fastlane/metadata/android/en-US/images/tenInchScreenshots/02-scanSettings_1772541881705.png rename to androidApp/fastlane/metadata/android/en-US/images/tenInchScreenshots/02-scanSettings_1772541881705.png diff --git a/fastlane/metadata/android/en-US/images/tenInchScreenshots/03-discoveryScreen_1772541884121.png b/androidApp/fastlane/metadata/android/en-US/images/tenInchScreenshots/03-discoveryScreen_1772541884121.png similarity index 100% rename from fastlane/metadata/android/en-US/images/tenInchScreenshots/03-discoveryScreen_1772541884121.png rename to androidApp/fastlane/metadata/android/en-US/images/tenInchScreenshots/03-discoveryScreen_1772541884121.png diff --git a/fastlane/metadata/android/en-US/images/tenInchScreenshots/04-emptyScanScreen_1772541885597.png b/androidApp/fastlane/metadata/android/en-US/images/tenInchScreenshots/04-emptyScanScreen_1772541885597.png similarity index 100% rename from fastlane/metadata/android/en-US/images/tenInchScreenshots/04-emptyScanScreen_1772541885597.png rename to androidApp/fastlane/metadata/android/en-US/images/tenInchScreenshots/04-emptyScanScreen_1772541885597.png diff --git a/fastlane/metadata/android/en-US/images/tenInchScreenshots/05-settingsScreen_1772541889078.png b/androidApp/fastlane/metadata/android/en-US/images/tenInchScreenshots/05-settingsScreen_1772541889078.png similarity index 100% rename from fastlane/metadata/android/en-US/images/tenInchScreenshots/05-settingsScreen_1772541889078.png rename to androidApp/fastlane/metadata/android/en-US/images/tenInchScreenshots/05-settingsScreen_1772541889078.png diff --git a/fastlane/metadata/android/en-US/short_description.txt b/androidApp/fastlane/metadata/android/en-US/short_description.txt similarity index 100% rename from fastlane/metadata/android/en-US/short_description.txt rename to androidApp/fastlane/metadata/android/en-US/short_description.txt diff --git a/fastlane/metadata/android/en-US/title.txt b/androidApp/fastlane/metadata/android/en-US/title.txt similarity index 100% rename from fastlane/metadata/android/en-US/title.txt rename to androidApp/fastlane/metadata/android/en-US/title.txt diff --git a/fastlane/metadata/android/it-IT/changelogs/1000000.txt b/androidApp/fastlane/metadata/android/it-IT/changelogs/1000000.txt similarity index 100% rename from fastlane/metadata/android/it-IT/changelogs/1000000.txt rename to androidApp/fastlane/metadata/android/it-IT/changelogs/1000000.txt diff --git a/fastlane/metadata/android/it-IT/changelogs/1000001.txt b/androidApp/fastlane/metadata/android/it-IT/changelogs/1000001.txt similarity index 100% rename from fastlane/metadata/android/it-IT/changelogs/1000001.txt rename to androidApp/fastlane/metadata/android/it-IT/changelogs/1000001.txt diff --git a/fastlane/metadata/android/it-IT/changelogs/1001000.txt b/androidApp/fastlane/metadata/android/it-IT/changelogs/1001000.txt similarity index 100% rename from fastlane/metadata/android/it-IT/changelogs/1001000.txt rename to androidApp/fastlane/metadata/android/it-IT/changelogs/1001000.txt diff --git a/fastlane/metadata/android/it-IT/changelogs/1002000.txt b/androidApp/fastlane/metadata/android/it-IT/changelogs/1002000.txt similarity index 100% rename from fastlane/metadata/android/it-IT/changelogs/1002000.txt rename to androidApp/fastlane/metadata/android/it-IT/changelogs/1002000.txt diff --git a/fastlane/metadata/android/it-IT/changelogs/1003000.txt b/androidApp/fastlane/metadata/android/it-IT/changelogs/1003000.txt similarity index 100% rename from fastlane/metadata/android/it-IT/changelogs/1003000.txt rename to androidApp/fastlane/metadata/android/it-IT/changelogs/1003000.txt diff --git a/fastlane/metadata/android/it-IT/changelogs/1004000.txt b/androidApp/fastlane/metadata/android/it-IT/changelogs/1004000.txt similarity index 100% rename from fastlane/metadata/android/it-IT/changelogs/1004000.txt rename to androidApp/fastlane/metadata/android/it-IT/changelogs/1004000.txt diff --git a/fastlane/metadata/android/it-IT/changelogs/1005000.txt b/androidApp/fastlane/metadata/android/it-IT/changelogs/1005000.txt similarity index 100% rename from fastlane/metadata/android/it-IT/changelogs/1005000.txt rename to androidApp/fastlane/metadata/android/it-IT/changelogs/1005000.txt diff --git a/fastlane/metadata/android/it-IT/changelogs/1006001.txt b/androidApp/fastlane/metadata/android/it-IT/changelogs/1006001.txt similarity index 100% rename from fastlane/metadata/android/it-IT/changelogs/1006001.txt rename to androidApp/fastlane/metadata/android/it-IT/changelogs/1006001.txt diff --git a/fastlane/metadata/android/it-IT/changelogs/1006002.txt b/androidApp/fastlane/metadata/android/it-IT/changelogs/1006002.txt similarity index 100% rename from fastlane/metadata/android/it-IT/changelogs/1006002.txt rename to androidApp/fastlane/metadata/android/it-IT/changelogs/1006002.txt diff --git a/fastlane/metadata/android/it-IT/changelogs/2000000.txt b/androidApp/fastlane/metadata/android/it-IT/changelogs/2000000.txt similarity index 100% rename from fastlane/metadata/android/it-IT/changelogs/2000000.txt rename to androidApp/fastlane/metadata/android/it-IT/changelogs/2000000.txt diff --git a/fastlane/metadata/android/it-IT/changelogs/2000001.txt b/androidApp/fastlane/metadata/android/it-IT/changelogs/2000001.txt similarity index 100% rename from fastlane/metadata/android/it-IT/changelogs/2000001.txt rename to androidApp/fastlane/metadata/android/it-IT/changelogs/2000001.txt diff --git a/fastlane/metadata/android/it-IT/changelogs/2001002.txt b/androidApp/fastlane/metadata/android/it-IT/changelogs/2001002.txt similarity index 100% rename from fastlane/metadata/android/it-IT/changelogs/2001002.txt rename to androidApp/fastlane/metadata/android/it-IT/changelogs/2001002.txt diff --git a/fastlane/metadata/android/it-IT/changelogs/2001003.txt b/androidApp/fastlane/metadata/android/it-IT/changelogs/2001003.txt similarity index 100% rename from fastlane/metadata/android/it-IT/changelogs/2001003.txt rename to androidApp/fastlane/metadata/android/it-IT/changelogs/2001003.txt diff --git a/fastlane/metadata/android/it-IT/changelogs/2001004.txt b/androidApp/fastlane/metadata/android/it-IT/changelogs/2001004.txt similarity index 100% rename from fastlane/metadata/android/it-IT/changelogs/2001004.txt rename to androidApp/fastlane/metadata/android/it-IT/changelogs/2001004.txt diff --git a/fastlane/metadata/android/it-IT/full_description.txt b/androidApp/fastlane/metadata/android/it-IT/full_description.txt similarity index 100% rename from fastlane/metadata/android/it-IT/full_description.txt rename to androidApp/fastlane/metadata/android/it-IT/full_description.txt diff --git a/fastlane/metadata/android/it-IT/images/phoneScreenshots/01-scannedPageScreen_1773391892623.png b/androidApp/fastlane/metadata/android/it-IT/images/phoneScreenshots/01-scannedPageScreen_1773391892623.png similarity index 100% rename from fastlane/metadata/android/it-IT/images/phoneScreenshots/01-scannedPageScreen_1773391892623.png rename to androidApp/fastlane/metadata/android/it-IT/images/phoneScreenshots/01-scannedPageScreen_1773391892623.png diff --git a/fastlane/metadata/android/it-IT/images/phoneScreenshots/02-scanSettings_1773391889434.png b/androidApp/fastlane/metadata/android/it-IT/images/phoneScreenshots/02-scanSettings_1773391889434.png similarity index 100% rename from fastlane/metadata/android/it-IT/images/phoneScreenshots/02-scanSettings_1773391889434.png rename to androidApp/fastlane/metadata/android/it-IT/images/phoneScreenshots/02-scanSettings_1773391889434.png diff --git a/fastlane/metadata/android/it-IT/images/phoneScreenshots/03-discoveryScreen_1773391890147.png b/androidApp/fastlane/metadata/android/it-IT/images/phoneScreenshots/03-discoveryScreen_1773391890147.png similarity index 100% rename from fastlane/metadata/android/it-IT/images/phoneScreenshots/03-discoveryScreen_1773391890147.png rename to androidApp/fastlane/metadata/android/it-IT/images/phoneScreenshots/03-discoveryScreen_1773391890147.png diff --git a/fastlane/metadata/android/it-IT/images/phoneScreenshots/04-emptyScanScreen_1773391891679.png b/androidApp/fastlane/metadata/android/it-IT/images/phoneScreenshots/04-emptyScanScreen_1773391891679.png similarity index 100% rename from fastlane/metadata/android/it-IT/images/phoneScreenshots/04-emptyScanScreen_1773391891679.png rename to androidApp/fastlane/metadata/android/it-IT/images/phoneScreenshots/04-emptyScanScreen_1773391891679.png diff --git a/fastlane/metadata/android/it-IT/images/phoneScreenshots/05-settingsScreen_1773391893582.png b/androidApp/fastlane/metadata/android/it-IT/images/phoneScreenshots/05-settingsScreen_1773391893582.png similarity index 100% rename from fastlane/metadata/android/it-IT/images/phoneScreenshots/05-settingsScreen_1773391893582.png rename to androidApp/fastlane/metadata/android/it-IT/images/phoneScreenshots/05-settingsScreen_1773391893582.png diff --git a/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/01-scannedPageScreen_1773392097014.png b/androidApp/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/01-scannedPageScreen_1773392097014.png similarity index 100% rename from fastlane/metadata/android/it-IT/images/sevenInchScreenshots/01-scannedPageScreen_1773392097014.png rename to androidApp/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/01-scannedPageScreen_1773392097014.png diff --git a/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/02-scanSettings_1773392093573.png b/androidApp/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/02-scanSettings_1773392093573.png similarity index 100% rename from fastlane/metadata/android/it-IT/images/sevenInchScreenshots/02-scanSettings_1773392093573.png rename to androidApp/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/02-scanSettings_1773392093573.png diff --git a/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/03-discoveryScreen_1773392094636.png b/androidApp/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/03-discoveryScreen_1773392094636.png similarity index 100% rename from fastlane/metadata/android/it-IT/images/sevenInchScreenshots/03-discoveryScreen_1773392094636.png rename to androidApp/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/03-discoveryScreen_1773392094636.png diff --git a/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/04-emptyScanScreen_1773392096232.png b/androidApp/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/04-emptyScanScreen_1773392096232.png similarity index 100% rename from fastlane/metadata/android/it-IT/images/sevenInchScreenshots/04-emptyScanScreen_1773392096232.png rename to androidApp/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/04-emptyScanScreen_1773392096232.png diff --git a/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/05-settingsScreen_1773392098119.png b/androidApp/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/05-settingsScreen_1773392098119.png similarity index 100% rename from fastlane/metadata/android/it-IT/images/sevenInchScreenshots/05-settingsScreen_1773392098119.png rename to androidApp/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/05-settingsScreen_1773392098119.png diff --git a/fastlane/metadata/android/it-IT/images/tenInchScreenshots/01-scannedPageScreen_1772541911340.png b/androidApp/fastlane/metadata/android/it-IT/images/tenInchScreenshots/01-scannedPageScreen_1772541911340.png similarity index 100% rename from fastlane/metadata/android/it-IT/images/tenInchScreenshots/01-scannedPageScreen_1772541911340.png rename to androidApp/fastlane/metadata/android/it-IT/images/tenInchScreenshots/01-scannedPageScreen_1772541911340.png diff --git a/fastlane/metadata/android/it-IT/images/tenInchScreenshots/02-scanSettings_1772541904718.png b/androidApp/fastlane/metadata/android/it-IT/images/tenInchScreenshots/02-scanSettings_1772541904718.png similarity index 100% rename from fastlane/metadata/android/it-IT/images/tenInchScreenshots/02-scanSettings_1772541904718.png rename to androidApp/fastlane/metadata/android/it-IT/images/tenInchScreenshots/02-scanSettings_1772541904718.png diff --git a/fastlane/metadata/android/it-IT/images/tenInchScreenshots/03-discoveryScreen_1772541907169.png b/androidApp/fastlane/metadata/android/it-IT/images/tenInchScreenshots/03-discoveryScreen_1772541907169.png similarity index 100% rename from fastlane/metadata/android/it-IT/images/tenInchScreenshots/03-discoveryScreen_1772541907169.png rename to androidApp/fastlane/metadata/android/it-IT/images/tenInchScreenshots/03-discoveryScreen_1772541907169.png diff --git a/fastlane/metadata/android/it-IT/images/tenInchScreenshots/04-emptyScanScreen_1772541910309.png b/androidApp/fastlane/metadata/android/it-IT/images/tenInchScreenshots/04-emptyScanScreen_1772541910309.png similarity index 100% rename from fastlane/metadata/android/it-IT/images/tenInchScreenshots/04-emptyScanScreen_1772541910309.png rename to androidApp/fastlane/metadata/android/it-IT/images/tenInchScreenshots/04-emptyScanScreen_1772541910309.png diff --git a/fastlane/metadata/android/it-IT/images/tenInchScreenshots/05-settingsScreen_1772541914017.png b/androidApp/fastlane/metadata/android/it-IT/images/tenInchScreenshots/05-settingsScreen_1772541914017.png similarity index 100% rename from fastlane/metadata/android/it-IT/images/tenInchScreenshots/05-settingsScreen_1772541914017.png rename to androidApp/fastlane/metadata/android/it-IT/images/tenInchScreenshots/05-settingsScreen_1772541914017.png diff --git a/fastlane/metadata/android/it-IT/short_description.txt b/androidApp/fastlane/metadata/android/it-IT/short_description.txt similarity index 100% rename from fastlane/metadata/android/it-IT/short_description.txt rename to androidApp/fastlane/metadata/android/it-IT/short_description.txt diff --git a/fastlane/metadata/android/it-IT/title.txt b/androidApp/fastlane/metadata/android/it-IT/title.txt similarity index 100% rename from fastlane/metadata/android/it-IT/title.txt rename to androidApp/fastlane/metadata/android/it-IT/title.txt diff --git a/fastlane/metadata/android/screenshots.html b/androidApp/fastlane/metadata/android/screenshots.html similarity index 100% rename from fastlane/metadata/android/screenshots.html rename to androidApp/fastlane/metadata/android/screenshots.html diff --git a/fastlane/playMetadata/de-DE/changelogs/1006002.txt b/androidApp/fastlane/playMetadata/de-DE/changelogs/1006002.txt similarity index 100% rename from fastlane/playMetadata/de-DE/changelogs/1006002.txt rename to androidApp/fastlane/playMetadata/de-DE/changelogs/1006002.txt diff --git a/fastlane/playMetadata/de-DE/changelogs/2000000.txt b/androidApp/fastlane/playMetadata/de-DE/changelogs/2000000.txt similarity index 100% rename from fastlane/playMetadata/de-DE/changelogs/2000000.txt rename to androidApp/fastlane/playMetadata/de-DE/changelogs/2000000.txt diff --git a/fastlane/playMetadata/de-DE/changelogs/2000001.txt b/androidApp/fastlane/playMetadata/de-DE/changelogs/2000001.txt similarity index 100% rename from fastlane/playMetadata/de-DE/changelogs/2000001.txt rename to androidApp/fastlane/playMetadata/de-DE/changelogs/2000001.txt diff --git a/fastlane/playMetadata/de-DE/changelogs/2001002.txt b/androidApp/fastlane/playMetadata/de-DE/changelogs/2001002.txt similarity index 100% rename from fastlane/playMetadata/de-DE/changelogs/2001002.txt rename to androidApp/fastlane/playMetadata/de-DE/changelogs/2001002.txt diff --git a/fastlane/playMetadata/de-DE/changelogs/2001003.txt b/androidApp/fastlane/playMetadata/de-DE/changelogs/2001003.txt similarity index 100% rename from fastlane/playMetadata/de-DE/changelogs/2001003.txt rename to androidApp/fastlane/playMetadata/de-DE/changelogs/2001003.txt diff --git a/fastlane/playMetadata/de-DE/changelogs/2001004.txt b/androidApp/fastlane/playMetadata/de-DE/changelogs/2001004.txt similarity index 100% rename from fastlane/playMetadata/de-DE/changelogs/2001004.txt rename to androidApp/fastlane/playMetadata/de-DE/changelogs/2001004.txt diff --git a/fastlane/playMetadata/de-DE/full_description.txt b/androidApp/fastlane/playMetadata/de-DE/full_description.txt similarity index 100% rename from fastlane/playMetadata/de-DE/full_description.txt rename to androidApp/fastlane/playMetadata/de-DE/full_description.txt diff --git a/fastlane/playMetadata/de-DE/images/chromeScreenshots/01-scannedPageScreen_1773392137705.png b/androidApp/fastlane/playMetadata/de-DE/images/chromeScreenshots/01-scannedPageScreen_1773392137705.png similarity index 100% rename from fastlane/playMetadata/de-DE/images/chromeScreenshots/01-scannedPageScreen_1773392137705.png rename to androidApp/fastlane/playMetadata/de-DE/images/chromeScreenshots/01-scannedPageScreen_1773392137705.png diff --git a/fastlane/playMetadata/de-DE/images/chromeScreenshots/02-scanSettings_1773392134051.png b/androidApp/fastlane/playMetadata/de-DE/images/chromeScreenshots/02-scanSettings_1773392134051.png similarity index 100% rename from fastlane/playMetadata/de-DE/images/chromeScreenshots/02-scanSettings_1773392134051.png rename to androidApp/fastlane/playMetadata/de-DE/images/chromeScreenshots/02-scanSettings_1773392134051.png diff --git a/fastlane/playMetadata/de-DE/images/chromeScreenshots/03-discoveryScreen_1773392134837.png b/androidApp/fastlane/playMetadata/de-DE/images/chromeScreenshots/03-discoveryScreen_1773392134837.png similarity index 100% rename from fastlane/playMetadata/de-DE/images/chromeScreenshots/03-discoveryScreen_1773392134837.png rename to androidApp/fastlane/playMetadata/de-DE/images/chromeScreenshots/03-discoveryScreen_1773392134837.png diff --git a/fastlane/playMetadata/de-DE/images/chromeScreenshots/04-emptyScanScreen_1773392136515.png b/androidApp/fastlane/playMetadata/de-DE/images/chromeScreenshots/04-emptyScanScreen_1773392136515.png similarity index 100% rename from fastlane/playMetadata/de-DE/images/chromeScreenshots/04-emptyScanScreen_1773392136515.png rename to androidApp/fastlane/playMetadata/de-DE/images/chromeScreenshots/04-emptyScanScreen_1773392136515.png diff --git a/fastlane/playMetadata/de-DE/images/chromeScreenshots/05-settingsScreen_1773392138645.png b/androidApp/fastlane/playMetadata/de-DE/images/chromeScreenshots/05-settingsScreen_1773392138645.png similarity index 100% rename from fastlane/playMetadata/de-DE/images/chromeScreenshots/05-settingsScreen_1773392138645.png rename to androidApp/fastlane/playMetadata/de-DE/images/chromeScreenshots/05-settingsScreen_1773392138645.png diff --git a/fastlane/playMetadata/de-DE/images/chromeScreenshots/06-supportScreen_1773392131057.png b/androidApp/fastlane/playMetadata/de-DE/images/chromeScreenshots/06-supportScreen_1773392131057.png similarity index 100% rename from fastlane/playMetadata/de-DE/images/chromeScreenshots/06-supportScreen_1773392131057.png rename to androidApp/fastlane/playMetadata/de-DE/images/chromeScreenshots/06-supportScreen_1773392131057.png diff --git a/fastlane/playMetadata/de-DE/images/featureGraphic.png b/androidApp/fastlane/playMetadata/de-DE/images/featureGraphic.png similarity index 100% rename from fastlane/playMetadata/de-DE/images/featureGraphic.png rename to androidApp/fastlane/playMetadata/de-DE/images/featureGraphic.png diff --git a/fastlane/playMetadata/de-DE/images/phoneScreenshots/01-scannedPageScreen_1773391854599.png b/androidApp/fastlane/playMetadata/de-DE/images/phoneScreenshots/01-scannedPageScreen_1773391854599.png similarity index 100% rename from fastlane/playMetadata/de-DE/images/phoneScreenshots/01-scannedPageScreen_1773391854599.png rename to androidApp/fastlane/playMetadata/de-DE/images/phoneScreenshots/01-scannedPageScreen_1773391854599.png diff --git a/fastlane/playMetadata/de-DE/images/phoneScreenshots/02-scanSettings_1773391851373.png b/androidApp/fastlane/playMetadata/de-DE/images/phoneScreenshots/02-scanSettings_1773391851373.png similarity index 100% rename from fastlane/playMetadata/de-DE/images/phoneScreenshots/02-scanSettings_1773391851373.png rename to androidApp/fastlane/playMetadata/de-DE/images/phoneScreenshots/02-scanSettings_1773391851373.png diff --git a/fastlane/playMetadata/de-DE/images/phoneScreenshots/03-discoveryScreen_1773391852033.png b/androidApp/fastlane/playMetadata/de-DE/images/phoneScreenshots/03-discoveryScreen_1773391852033.png similarity index 100% rename from fastlane/playMetadata/de-DE/images/phoneScreenshots/03-discoveryScreen_1773391852033.png rename to androidApp/fastlane/playMetadata/de-DE/images/phoneScreenshots/03-discoveryScreen_1773391852033.png diff --git a/fastlane/playMetadata/de-DE/images/phoneScreenshots/04-emptyScanScreen_1773391853682.png b/androidApp/fastlane/playMetadata/de-DE/images/phoneScreenshots/04-emptyScanScreen_1773391853682.png similarity index 100% rename from fastlane/playMetadata/de-DE/images/phoneScreenshots/04-emptyScanScreen_1773391853682.png rename to androidApp/fastlane/playMetadata/de-DE/images/phoneScreenshots/04-emptyScanScreen_1773391853682.png diff --git a/fastlane/playMetadata/de-DE/images/phoneScreenshots/05-settingsScreen_1773391855601.png b/androidApp/fastlane/playMetadata/de-DE/images/phoneScreenshots/05-settingsScreen_1773391855601.png similarity index 100% rename from fastlane/playMetadata/de-DE/images/phoneScreenshots/05-settingsScreen_1773391855601.png rename to androidApp/fastlane/playMetadata/de-DE/images/phoneScreenshots/05-settingsScreen_1773391855601.png diff --git a/fastlane/playMetadata/de-DE/images/phoneScreenshots/06-supportScreen_1773391848067.png b/androidApp/fastlane/playMetadata/de-DE/images/phoneScreenshots/06-supportScreen_1773391848067.png similarity index 100% rename from fastlane/playMetadata/de-DE/images/phoneScreenshots/06-supportScreen_1773391848067.png rename to androidApp/fastlane/playMetadata/de-DE/images/phoneScreenshots/06-supportScreen_1773391848067.png diff --git a/fastlane/playMetadata/de-DE/images/sevenInchScreenshots/01-scannedPageScreen_1773392051915.png b/androidApp/fastlane/playMetadata/de-DE/images/sevenInchScreenshots/01-scannedPageScreen_1773392051915.png similarity index 100% rename from fastlane/playMetadata/de-DE/images/sevenInchScreenshots/01-scannedPageScreen_1773392051915.png rename to androidApp/fastlane/playMetadata/de-DE/images/sevenInchScreenshots/01-scannedPageScreen_1773392051915.png diff --git a/fastlane/playMetadata/de-DE/images/sevenInchScreenshots/02-scanSettings_1773392048636.png b/androidApp/fastlane/playMetadata/de-DE/images/sevenInchScreenshots/02-scanSettings_1773392048636.png similarity index 100% rename from fastlane/playMetadata/de-DE/images/sevenInchScreenshots/02-scanSettings_1773392048636.png rename to androidApp/fastlane/playMetadata/de-DE/images/sevenInchScreenshots/02-scanSettings_1773392048636.png diff --git a/fastlane/playMetadata/de-DE/images/sevenInchScreenshots/03-discoveryScreen_1773392049419.png b/androidApp/fastlane/playMetadata/de-DE/images/sevenInchScreenshots/03-discoveryScreen_1773392049419.png similarity index 100% rename from fastlane/playMetadata/de-DE/images/sevenInchScreenshots/03-discoveryScreen_1773392049419.png rename to androidApp/fastlane/playMetadata/de-DE/images/sevenInchScreenshots/03-discoveryScreen_1773392049419.png diff --git a/fastlane/playMetadata/de-DE/images/sevenInchScreenshots/04-emptyScanScreen_1773392051098.png b/androidApp/fastlane/playMetadata/de-DE/images/sevenInchScreenshots/04-emptyScanScreen_1773392051098.png similarity index 100% rename from fastlane/playMetadata/de-DE/images/sevenInchScreenshots/04-emptyScanScreen_1773392051098.png rename to androidApp/fastlane/playMetadata/de-DE/images/sevenInchScreenshots/04-emptyScanScreen_1773392051098.png diff --git a/fastlane/playMetadata/de-DE/images/sevenInchScreenshots/05-settingsScreen_1773392052967.png b/androidApp/fastlane/playMetadata/de-DE/images/sevenInchScreenshots/05-settingsScreen_1773392052967.png similarity index 100% rename from fastlane/playMetadata/de-DE/images/sevenInchScreenshots/05-settingsScreen_1773392052967.png rename to androidApp/fastlane/playMetadata/de-DE/images/sevenInchScreenshots/05-settingsScreen_1773392052967.png diff --git a/fastlane/playMetadata/de-DE/images/sevenInchScreenshots/06-supportScreen_1773392044965.png b/androidApp/fastlane/playMetadata/de-DE/images/sevenInchScreenshots/06-supportScreen_1773392044965.png similarity index 100% rename from fastlane/playMetadata/de-DE/images/sevenInchScreenshots/06-supportScreen_1773392044965.png rename to androidApp/fastlane/playMetadata/de-DE/images/sevenInchScreenshots/06-supportScreen_1773392044965.png diff --git a/fastlane/playMetadata/de-DE/images/tenInchScreenshots/01-scannedPageScreen_1772541856637.png b/androidApp/fastlane/playMetadata/de-DE/images/tenInchScreenshots/01-scannedPageScreen_1772541856637.png similarity index 100% rename from fastlane/playMetadata/de-DE/images/tenInchScreenshots/01-scannedPageScreen_1772541856637.png rename to androidApp/fastlane/playMetadata/de-DE/images/tenInchScreenshots/01-scannedPageScreen_1772541856637.png diff --git a/fastlane/playMetadata/de-DE/images/tenInchScreenshots/02-scanSettings_1772541853898.png b/androidApp/fastlane/playMetadata/de-DE/images/tenInchScreenshots/02-scanSettings_1772541853898.png similarity index 100% rename from fastlane/playMetadata/de-DE/images/tenInchScreenshots/02-scanSettings_1772541853898.png rename to androidApp/fastlane/playMetadata/de-DE/images/tenInchScreenshots/02-scanSettings_1772541853898.png diff --git a/fastlane/playMetadata/de-DE/images/tenInchScreenshots/03-discoveryScreen_1772541854300.png b/androidApp/fastlane/playMetadata/de-DE/images/tenInchScreenshots/03-discoveryScreen_1772541854300.png similarity index 100% rename from fastlane/playMetadata/de-DE/images/tenInchScreenshots/03-discoveryScreen_1772541854300.png rename to androidApp/fastlane/playMetadata/de-DE/images/tenInchScreenshots/03-discoveryScreen_1772541854300.png diff --git a/fastlane/playMetadata/de-DE/images/tenInchScreenshots/04-emptyScanScreen_1772541855615.png b/androidApp/fastlane/playMetadata/de-DE/images/tenInchScreenshots/04-emptyScanScreen_1772541855615.png similarity index 100% rename from fastlane/playMetadata/de-DE/images/tenInchScreenshots/04-emptyScanScreen_1772541855615.png rename to androidApp/fastlane/playMetadata/de-DE/images/tenInchScreenshots/04-emptyScanScreen_1772541855615.png diff --git a/fastlane/playMetadata/de-DE/images/tenInchScreenshots/05-settingsScreen_1772541857282.png b/androidApp/fastlane/playMetadata/de-DE/images/tenInchScreenshots/05-settingsScreen_1772541857282.png similarity index 100% rename from fastlane/playMetadata/de-DE/images/tenInchScreenshots/05-settingsScreen_1772541857282.png rename to androidApp/fastlane/playMetadata/de-DE/images/tenInchScreenshots/05-settingsScreen_1772541857282.png diff --git a/fastlane/playMetadata/de-DE/images/tenInchScreenshots/06-supportScreen_1772541851562.png b/androidApp/fastlane/playMetadata/de-DE/images/tenInchScreenshots/06-supportScreen_1772541851562.png similarity index 100% rename from fastlane/playMetadata/de-DE/images/tenInchScreenshots/06-supportScreen_1772541851562.png rename to androidApp/fastlane/playMetadata/de-DE/images/tenInchScreenshots/06-supportScreen_1772541851562.png diff --git a/fastlane/playMetadata/de-DE/short_description.txt b/androidApp/fastlane/playMetadata/de-DE/short_description.txt similarity index 100% rename from fastlane/playMetadata/de-DE/short_description.txt rename to androidApp/fastlane/playMetadata/de-DE/short_description.txt diff --git a/fastlane/playMetadata/de-DE/title.txt b/androidApp/fastlane/playMetadata/de-DE/title.txt similarity index 100% rename from fastlane/playMetadata/de-DE/title.txt rename to androidApp/fastlane/playMetadata/de-DE/title.txt diff --git a/fastlane/playMetadata/de-DE/video.txt b/androidApp/fastlane/playMetadata/de-DE/video.txt similarity index 100% rename from fastlane/playMetadata/de-DE/video.txt rename to androidApp/fastlane/playMetadata/de-DE/video.txt diff --git a/fastlane/playMetadata/en-US/changelogs/1006002.txt b/androidApp/fastlane/playMetadata/en-US/changelogs/1006002.txt similarity index 100% rename from fastlane/playMetadata/en-US/changelogs/1006002.txt rename to androidApp/fastlane/playMetadata/en-US/changelogs/1006002.txt diff --git a/fastlane/playMetadata/en-US/changelogs/2000000.txt b/androidApp/fastlane/playMetadata/en-US/changelogs/2000000.txt similarity index 100% rename from fastlane/playMetadata/en-US/changelogs/2000000.txt rename to androidApp/fastlane/playMetadata/en-US/changelogs/2000000.txt diff --git a/fastlane/playMetadata/en-US/changelogs/2000001.txt b/androidApp/fastlane/playMetadata/en-US/changelogs/2000001.txt similarity index 100% rename from fastlane/playMetadata/en-US/changelogs/2000001.txt rename to androidApp/fastlane/playMetadata/en-US/changelogs/2000001.txt diff --git a/fastlane/playMetadata/en-US/changelogs/2001002.txt b/androidApp/fastlane/playMetadata/en-US/changelogs/2001002.txt similarity index 100% rename from fastlane/playMetadata/en-US/changelogs/2001002.txt rename to androidApp/fastlane/playMetadata/en-US/changelogs/2001002.txt diff --git a/fastlane/playMetadata/en-US/changelogs/2001003.txt b/androidApp/fastlane/playMetadata/en-US/changelogs/2001003.txt similarity index 100% rename from fastlane/playMetadata/en-US/changelogs/2001003.txt rename to androidApp/fastlane/playMetadata/en-US/changelogs/2001003.txt diff --git a/fastlane/playMetadata/en-US/changelogs/2001004.txt b/androidApp/fastlane/playMetadata/en-US/changelogs/2001004.txt similarity index 100% rename from fastlane/playMetadata/en-US/changelogs/2001004.txt rename to androidApp/fastlane/playMetadata/en-US/changelogs/2001004.txt diff --git a/fastlane/playMetadata/en-US/full_description.txt b/androidApp/fastlane/playMetadata/en-US/full_description.txt similarity index 100% rename from fastlane/playMetadata/en-US/full_description.txt rename to androidApp/fastlane/playMetadata/en-US/full_description.txt diff --git a/fastlane/playMetadata/en-US/images/chromeScreenshots/01-scannedPageScreen_1773392127266.png b/androidApp/fastlane/playMetadata/en-US/images/chromeScreenshots/01-scannedPageScreen_1773392127266.png similarity index 100% rename from fastlane/playMetadata/en-US/images/chromeScreenshots/01-scannedPageScreen_1773392127266.png rename to androidApp/fastlane/playMetadata/en-US/images/chromeScreenshots/01-scannedPageScreen_1773392127266.png diff --git a/fastlane/playMetadata/en-US/images/chromeScreenshots/02-scanSettings_1773392124079.png b/androidApp/fastlane/playMetadata/en-US/images/chromeScreenshots/02-scanSettings_1773392124079.png similarity index 100% rename from fastlane/playMetadata/en-US/images/chromeScreenshots/02-scanSettings_1773392124079.png rename to androidApp/fastlane/playMetadata/en-US/images/chromeScreenshots/02-scanSettings_1773392124079.png diff --git a/fastlane/playMetadata/en-US/images/chromeScreenshots/03-discoveryScreen_1773392124691.png b/androidApp/fastlane/playMetadata/en-US/images/chromeScreenshots/03-discoveryScreen_1773392124691.png similarity index 100% rename from fastlane/playMetadata/en-US/images/chromeScreenshots/03-discoveryScreen_1773392124691.png rename to androidApp/fastlane/playMetadata/en-US/images/chromeScreenshots/03-discoveryScreen_1773392124691.png diff --git a/fastlane/playMetadata/en-US/images/chromeScreenshots/04-emptyScanScreen_1773392126076.png b/androidApp/fastlane/playMetadata/en-US/images/chromeScreenshots/04-emptyScanScreen_1773392126076.png similarity index 100% rename from fastlane/playMetadata/en-US/images/chromeScreenshots/04-emptyScanScreen_1773392126076.png rename to androidApp/fastlane/playMetadata/en-US/images/chromeScreenshots/04-emptyScanScreen_1773392126076.png diff --git a/fastlane/playMetadata/en-US/images/chromeScreenshots/05-settingsScreen_1773392128027.png b/androidApp/fastlane/playMetadata/en-US/images/chromeScreenshots/05-settingsScreen_1773392128027.png similarity index 100% rename from fastlane/playMetadata/en-US/images/chromeScreenshots/05-settingsScreen_1773392128027.png rename to androidApp/fastlane/playMetadata/en-US/images/chromeScreenshots/05-settingsScreen_1773392128027.png diff --git a/fastlane/playMetadata/en-US/images/chromeScreenshots/06-supportScreen_1773392121020.png b/androidApp/fastlane/playMetadata/en-US/images/chromeScreenshots/06-supportScreen_1773392121020.png similarity index 100% rename from fastlane/playMetadata/en-US/images/chromeScreenshots/06-supportScreen_1773392121020.png rename to androidApp/fastlane/playMetadata/en-US/images/chromeScreenshots/06-supportScreen_1773392121020.png diff --git a/fastlane/playMetadata/en-US/images/featureGraphic.png b/androidApp/fastlane/playMetadata/en-US/images/featureGraphic.png similarity index 100% rename from fastlane/playMetadata/en-US/images/featureGraphic.png rename to androidApp/fastlane/playMetadata/en-US/images/featureGraphic.png diff --git a/fastlane/playMetadata/en-US/images/icon.png b/androidApp/fastlane/playMetadata/en-US/images/icon.png similarity index 100% rename from fastlane/playMetadata/en-US/images/icon.png rename to androidApp/fastlane/playMetadata/en-US/images/icon.png diff --git a/fastlane/playMetadata/en-US/images/phoneScreenshots/01-scannedPageScreen_1773391844501.png b/androidApp/fastlane/playMetadata/en-US/images/phoneScreenshots/01-scannedPageScreen_1773391844501.png similarity index 100% rename from fastlane/playMetadata/en-US/images/phoneScreenshots/01-scannedPageScreen_1773391844501.png rename to androidApp/fastlane/playMetadata/en-US/images/phoneScreenshots/01-scannedPageScreen_1773391844501.png diff --git a/fastlane/playMetadata/en-US/images/phoneScreenshots/02-scanSettings_1773391841799.png b/androidApp/fastlane/playMetadata/en-US/images/phoneScreenshots/02-scanSettings_1773391841799.png similarity index 100% rename from fastlane/playMetadata/en-US/images/phoneScreenshots/02-scanSettings_1773391841799.png rename to androidApp/fastlane/playMetadata/en-US/images/phoneScreenshots/02-scanSettings_1773391841799.png diff --git a/fastlane/playMetadata/en-US/images/phoneScreenshots/03-discoveryScreen_1773391842230.png b/androidApp/fastlane/playMetadata/en-US/images/phoneScreenshots/03-discoveryScreen_1773391842230.png similarity index 100% rename from fastlane/playMetadata/en-US/images/phoneScreenshots/03-discoveryScreen_1773391842230.png rename to androidApp/fastlane/playMetadata/en-US/images/phoneScreenshots/03-discoveryScreen_1773391842230.png diff --git a/fastlane/playMetadata/en-US/images/phoneScreenshots/04-emptyScanScreen_1773391843467.png b/androidApp/fastlane/playMetadata/en-US/images/phoneScreenshots/04-emptyScanScreen_1773391843467.png similarity index 100% rename from fastlane/playMetadata/en-US/images/phoneScreenshots/04-emptyScanScreen_1773391843467.png rename to androidApp/fastlane/playMetadata/en-US/images/phoneScreenshots/04-emptyScanScreen_1773391843467.png diff --git a/fastlane/playMetadata/en-US/images/phoneScreenshots/05-settingsScreen_1773391845183.png b/androidApp/fastlane/playMetadata/en-US/images/phoneScreenshots/05-settingsScreen_1773391845183.png similarity index 100% rename from fastlane/playMetadata/en-US/images/phoneScreenshots/05-settingsScreen_1773391845183.png rename to androidApp/fastlane/playMetadata/en-US/images/phoneScreenshots/05-settingsScreen_1773391845183.png diff --git a/fastlane/playMetadata/en-US/images/phoneScreenshots/06-supportScreen_1773391839216.png b/androidApp/fastlane/playMetadata/en-US/images/phoneScreenshots/06-supportScreen_1773391839216.png similarity index 100% rename from fastlane/playMetadata/en-US/images/phoneScreenshots/06-supportScreen_1773391839216.png rename to androidApp/fastlane/playMetadata/en-US/images/phoneScreenshots/06-supportScreen_1773391839216.png diff --git a/fastlane/playMetadata/en-US/images/sevenInchScreenshots/01-scannedPageScreen_1773392041217.png b/androidApp/fastlane/playMetadata/en-US/images/sevenInchScreenshots/01-scannedPageScreen_1773392041217.png similarity index 100% rename from fastlane/playMetadata/en-US/images/sevenInchScreenshots/01-scannedPageScreen_1773392041217.png rename to androidApp/fastlane/playMetadata/en-US/images/sevenInchScreenshots/01-scannedPageScreen_1773392041217.png diff --git a/fastlane/playMetadata/en-US/images/sevenInchScreenshots/02-scanSettings_1773392038538.png b/androidApp/fastlane/playMetadata/en-US/images/sevenInchScreenshots/02-scanSettings_1773392038538.png similarity index 100% rename from fastlane/playMetadata/en-US/images/sevenInchScreenshots/02-scanSettings_1773392038538.png rename to androidApp/fastlane/playMetadata/en-US/images/sevenInchScreenshots/02-scanSettings_1773392038538.png diff --git a/fastlane/playMetadata/en-US/images/sevenInchScreenshots/03-discoveryScreen_1773392039016.png b/androidApp/fastlane/playMetadata/en-US/images/sevenInchScreenshots/03-discoveryScreen_1773392039016.png similarity index 100% rename from fastlane/playMetadata/en-US/images/sevenInchScreenshots/03-discoveryScreen_1773392039016.png rename to androidApp/fastlane/playMetadata/en-US/images/sevenInchScreenshots/03-discoveryScreen_1773392039016.png diff --git a/fastlane/playMetadata/en-US/images/sevenInchScreenshots/04-emptyScanScreen_1773392040264.png b/androidApp/fastlane/playMetadata/en-US/images/sevenInchScreenshots/04-emptyScanScreen_1773392040264.png similarity index 100% rename from fastlane/playMetadata/en-US/images/sevenInchScreenshots/04-emptyScanScreen_1773392040264.png rename to androidApp/fastlane/playMetadata/en-US/images/sevenInchScreenshots/04-emptyScanScreen_1773392040264.png diff --git a/fastlane/playMetadata/en-US/images/sevenInchScreenshots/05-settingsScreen_1773392041800.png b/androidApp/fastlane/playMetadata/en-US/images/sevenInchScreenshots/05-settingsScreen_1773392041800.png similarity index 100% rename from fastlane/playMetadata/en-US/images/sevenInchScreenshots/05-settingsScreen_1773392041800.png rename to androidApp/fastlane/playMetadata/en-US/images/sevenInchScreenshots/05-settingsScreen_1773392041800.png diff --git a/fastlane/playMetadata/en-US/images/sevenInchScreenshots/06-supportScreen_1773392036000.png b/androidApp/fastlane/playMetadata/en-US/images/sevenInchScreenshots/06-supportScreen_1773392036000.png similarity index 100% rename from fastlane/playMetadata/en-US/images/sevenInchScreenshots/06-supportScreen_1773392036000.png rename to androidApp/fastlane/playMetadata/en-US/images/sevenInchScreenshots/06-supportScreen_1773392036000.png diff --git a/fastlane/playMetadata/en-US/images/tenInchScreenshots/01-scannedPageScreen_1772541846501.png b/androidApp/fastlane/playMetadata/en-US/images/tenInchScreenshots/01-scannedPageScreen_1772541846501.png similarity index 100% rename from fastlane/playMetadata/en-US/images/tenInchScreenshots/01-scannedPageScreen_1772541846501.png rename to androidApp/fastlane/playMetadata/en-US/images/tenInchScreenshots/01-scannedPageScreen_1772541846501.png diff --git a/fastlane/playMetadata/en-US/images/tenInchScreenshots/02-scanSettings_1772541839135.png b/androidApp/fastlane/playMetadata/en-US/images/tenInchScreenshots/02-scanSettings_1772541839135.png similarity index 100% rename from fastlane/playMetadata/en-US/images/tenInchScreenshots/02-scanSettings_1772541839135.png rename to androidApp/fastlane/playMetadata/en-US/images/tenInchScreenshots/02-scanSettings_1772541839135.png diff --git a/fastlane/playMetadata/en-US/images/tenInchScreenshots/03-discoveryScreen_1772541841584.png b/androidApp/fastlane/playMetadata/en-US/images/tenInchScreenshots/03-discoveryScreen_1772541841584.png similarity index 100% rename from fastlane/playMetadata/en-US/images/tenInchScreenshots/03-discoveryScreen_1772541841584.png rename to androidApp/fastlane/playMetadata/en-US/images/tenInchScreenshots/03-discoveryScreen_1772541841584.png diff --git a/fastlane/playMetadata/en-US/images/tenInchScreenshots/04-emptyScanScreen_1772541845528.png b/androidApp/fastlane/playMetadata/en-US/images/tenInchScreenshots/04-emptyScanScreen_1772541845528.png similarity index 100% rename from fastlane/playMetadata/en-US/images/tenInchScreenshots/04-emptyScanScreen_1772541845528.png rename to androidApp/fastlane/playMetadata/en-US/images/tenInchScreenshots/04-emptyScanScreen_1772541845528.png diff --git a/fastlane/playMetadata/en-US/images/tenInchScreenshots/05-settingsScreen_1772541849182.png b/androidApp/fastlane/playMetadata/en-US/images/tenInchScreenshots/05-settingsScreen_1772541849182.png similarity index 100% rename from fastlane/playMetadata/en-US/images/tenInchScreenshots/05-settingsScreen_1772541849182.png rename to androidApp/fastlane/playMetadata/en-US/images/tenInchScreenshots/05-settingsScreen_1772541849182.png diff --git a/fastlane/playMetadata/en-US/images/tenInchScreenshots/06-supportScreen_1772541835912.png b/androidApp/fastlane/playMetadata/en-US/images/tenInchScreenshots/06-supportScreen_1772541835912.png similarity index 100% rename from fastlane/playMetadata/en-US/images/tenInchScreenshots/06-supportScreen_1772541835912.png rename to androidApp/fastlane/playMetadata/en-US/images/tenInchScreenshots/06-supportScreen_1772541835912.png diff --git a/fastlane/playMetadata/en-US/short_description.txt b/androidApp/fastlane/playMetadata/en-US/short_description.txt similarity index 100% rename from fastlane/playMetadata/en-US/short_description.txt rename to androidApp/fastlane/playMetadata/en-US/short_description.txt diff --git a/fastlane/playMetadata/en-US/title.txt b/androidApp/fastlane/playMetadata/en-US/title.txt similarity index 100% rename from fastlane/playMetadata/en-US/title.txt rename to androidApp/fastlane/playMetadata/en-US/title.txt diff --git a/fastlane/playMetadata/en-US/video.txt b/androidApp/fastlane/playMetadata/en-US/video.txt similarity index 100% rename from fastlane/playMetadata/en-US/video.txt rename to androidApp/fastlane/playMetadata/en-US/video.txt diff --git a/fastlane/playMetadata/it-IT/changelogs/1006002.txt b/androidApp/fastlane/playMetadata/it-IT/changelogs/1006002.txt similarity index 100% rename from fastlane/playMetadata/it-IT/changelogs/1006002.txt rename to androidApp/fastlane/playMetadata/it-IT/changelogs/1006002.txt diff --git a/fastlane/playMetadata/it-IT/changelogs/2000000.txt b/androidApp/fastlane/playMetadata/it-IT/changelogs/2000000.txt similarity index 100% rename from fastlane/playMetadata/it-IT/changelogs/2000000.txt rename to androidApp/fastlane/playMetadata/it-IT/changelogs/2000000.txt diff --git a/fastlane/playMetadata/it-IT/changelogs/2000001.txt b/androidApp/fastlane/playMetadata/it-IT/changelogs/2000001.txt similarity index 100% rename from fastlane/playMetadata/it-IT/changelogs/2000001.txt rename to androidApp/fastlane/playMetadata/it-IT/changelogs/2000001.txt diff --git a/fastlane/playMetadata/it-IT/changelogs/2001002.txt b/androidApp/fastlane/playMetadata/it-IT/changelogs/2001002.txt similarity index 100% rename from fastlane/playMetadata/it-IT/changelogs/2001002.txt rename to androidApp/fastlane/playMetadata/it-IT/changelogs/2001002.txt diff --git a/fastlane/playMetadata/it-IT/changelogs/2001003.txt b/androidApp/fastlane/playMetadata/it-IT/changelogs/2001003.txt similarity index 100% rename from fastlane/playMetadata/it-IT/changelogs/2001003.txt rename to androidApp/fastlane/playMetadata/it-IT/changelogs/2001003.txt diff --git a/fastlane/playMetadata/it-IT/changelogs/2001004.txt b/androidApp/fastlane/playMetadata/it-IT/changelogs/2001004.txt similarity index 100% rename from fastlane/playMetadata/it-IT/changelogs/2001004.txt rename to androidApp/fastlane/playMetadata/it-IT/changelogs/2001004.txt diff --git a/fastlane/playMetadata/it-IT/full_description.txt b/androidApp/fastlane/playMetadata/it-IT/full_description.txt similarity index 100% rename from fastlane/playMetadata/it-IT/full_description.txt rename to androidApp/fastlane/playMetadata/it-IT/full_description.txt diff --git a/fastlane/playMetadata/it-IT/images/chromeScreenshots/01-scannedPageScreen_1773392147446.png b/androidApp/fastlane/playMetadata/it-IT/images/chromeScreenshots/01-scannedPageScreen_1773392147446.png similarity index 100% rename from fastlane/playMetadata/it-IT/images/chromeScreenshots/01-scannedPageScreen_1773392147446.png rename to androidApp/fastlane/playMetadata/it-IT/images/chromeScreenshots/01-scannedPageScreen_1773392147446.png diff --git a/fastlane/playMetadata/it-IT/images/chromeScreenshots/02-scanSettings_1773392144173.png b/androidApp/fastlane/playMetadata/it-IT/images/chromeScreenshots/02-scanSettings_1773392144173.png similarity index 100% rename from fastlane/playMetadata/it-IT/images/chromeScreenshots/02-scanSettings_1773392144173.png rename to androidApp/fastlane/playMetadata/it-IT/images/chromeScreenshots/02-scanSettings_1773392144173.png diff --git a/fastlane/playMetadata/it-IT/images/chromeScreenshots/03-discoveryScreen_1773392144879.png b/androidApp/fastlane/playMetadata/it-IT/images/chromeScreenshots/03-discoveryScreen_1773392144879.png similarity index 100% rename from fastlane/playMetadata/it-IT/images/chromeScreenshots/03-discoveryScreen_1773392144879.png rename to androidApp/fastlane/playMetadata/it-IT/images/chromeScreenshots/03-discoveryScreen_1773392144879.png diff --git a/fastlane/playMetadata/it-IT/images/chromeScreenshots/04-emptyScanScreen_1773392146388.png b/androidApp/fastlane/playMetadata/it-IT/images/chromeScreenshots/04-emptyScanScreen_1773392146388.png similarity index 100% rename from fastlane/playMetadata/it-IT/images/chromeScreenshots/04-emptyScanScreen_1773392146388.png rename to androidApp/fastlane/playMetadata/it-IT/images/chromeScreenshots/04-emptyScanScreen_1773392146388.png diff --git a/fastlane/playMetadata/it-IT/images/chromeScreenshots/05-settingsScreen_1773392148380.png b/androidApp/fastlane/playMetadata/it-IT/images/chromeScreenshots/05-settingsScreen_1773392148380.png similarity index 100% rename from fastlane/playMetadata/it-IT/images/chromeScreenshots/05-settingsScreen_1773392148380.png rename to androidApp/fastlane/playMetadata/it-IT/images/chromeScreenshots/05-settingsScreen_1773392148380.png diff --git a/fastlane/playMetadata/it-IT/images/chromeScreenshots/06-supportScreen_1773392140988.png b/androidApp/fastlane/playMetadata/it-IT/images/chromeScreenshots/06-supportScreen_1773392140988.png similarity index 100% rename from fastlane/playMetadata/it-IT/images/chromeScreenshots/06-supportScreen_1773392140988.png rename to androidApp/fastlane/playMetadata/it-IT/images/chromeScreenshots/06-supportScreen_1773392140988.png diff --git a/fastlane/playMetadata/it-IT/images/featureGraphic.png b/androidApp/fastlane/playMetadata/it-IT/images/featureGraphic.png similarity index 100% rename from fastlane/playMetadata/it-IT/images/featureGraphic.png rename to androidApp/fastlane/playMetadata/it-IT/images/featureGraphic.png diff --git a/fastlane/playMetadata/it-IT/images/phoneScreenshots/01-scannedPageScreen_1773391864832.png b/androidApp/fastlane/playMetadata/it-IT/images/phoneScreenshots/01-scannedPageScreen_1773391864832.png similarity index 100% rename from fastlane/playMetadata/it-IT/images/phoneScreenshots/01-scannedPageScreen_1773391864832.png rename to androidApp/fastlane/playMetadata/it-IT/images/phoneScreenshots/01-scannedPageScreen_1773391864832.png diff --git a/fastlane/playMetadata/it-IT/images/phoneScreenshots/02-scanSettings_1773391861554.png b/androidApp/fastlane/playMetadata/it-IT/images/phoneScreenshots/02-scanSettings_1773391861554.png similarity index 100% rename from fastlane/playMetadata/it-IT/images/phoneScreenshots/02-scanSettings_1773391861554.png rename to androidApp/fastlane/playMetadata/it-IT/images/phoneScreenshots/02-scanSettings_1773391861554.png diff --git a/fastlane/playMetadata/it-IT/images/phoneScreenshots/03-discoveryScreen_1773391862266.png b/androidApp/fastlane/playMetadata/it-IT/images/phoneScreenshots/03-discoveryScreen_1773391862266.png similarity index 100% rename from fastlane/playMetadata/it-IT/images/phoneScreenshots/03-discoveryScreen_1773391862266.png rename to androidApp/fastlane/playMetadata/it-IT/images/phoneScreenshots/03-discoveryScreen_1773391862266.png diff --git a/fastlane/playMetadata/it-IT/images/phoneScreenshots/04-emptyScanScreen_1773391863833.png b/androidApp/fastlane/playMetadata/it-IT/images/phoneScreenshots/04-emptyScanScreen_1773391863833.png similarity index 100% rename from fastlane/playMetadata/it-IT/images/phoneScreenshots/04-emptyScanScreen_1773391863833.png rename to androidApp/fastlane/playMetadata/it-IT/images/phoneScreenshots/04-emptyScanScreen_1773391863833.png diff --git a/fastlane/playMetadata/it-IT/images/phoneScreenshots/05-settingsScreen_1773391865784.png b/androidApp/fastlane/playMetadata/it-IT/images/phoneScreenshots/05-settingsScreen_1773391865784.png similarity index 100% rename from fastlane/playMetadata/it-IT/images/phoneScreenshots/05-settingsScreen_1773391865784.png rename to androidApp/fastlane/playMetadata/it-IT/images/phoneScreenshots/05-settingsScreen_1773391865784.png diff --git a/fastlane/playMetadata/it-IT/images/phoneScreenshots/06-supportScreen_1773391858142.png b/androidApp/fastlane/playMetadata/it-IT/images/phoneScreenshots/06-supportScreen_1773391858142.png similarity index 100% rename from fastlane/playMetadata/it-IT/images/phoneScreenshots/06-supportScreen_1773391858142.png rename to androidApp/fastlane/playMetadata/it-IT/images/phoneScreenshots/06-supportScreen_1773391858142.png diff --git a/fastlane/playMetadata/it-IT/images/sevenInchScreenshots/01-scannedPageScreen_1773392064698.png b/androidApp/fastlane/playMetadata/it-IT/images/sevenInchScreenshots/01-scannedPageScreen_1773392064698.png similarity index 100% rename from fastlane/playMetadata/it-IT/images/sevenInchScreenshots/01-scannedPageScreen_1773392064698.png rename to androidApp/fastlane/playMetadata/it-IT/images/sevenInchScreenshots/01-scannedPageScreen_1773392064698.png diff --git a/fastlane/playMetadata/it-IT/images/sevenInchScreenshots/02-scanSettings_1773392060668.png b/androidApp/fastlane/playMetadata/it-IT/images/sevenInchScreenshots/02-scanSettings_1773392060668.png similarity index 100% rename from fastlane/playMetadata/it-IT/images/sevenInchScreenshots/02-scanSettings_1773392060668.png rename to androidApp/fastlane/playMetadata/it-IT/images/sevenInchScreenshots/02-scanSettings_1773392060668.png diff --git a/fastlane/playMetadata/it-IT/images/sevenInchScreenshots/03-discoveryScreen_1773392062139.png b/androidApp/fastlane/playMetadata/it-IT/images/sevenInchScreenshots/03-discoveryScreen_1773392062139.png similarity index 100% rename from fastlane/playMetadata/it-IT/images/sevenInchScreenshots/03-discoveryScreen_1773392062139.png rename to androidApp/fastlane/playMetadata/it-IT/images/sevenInchScreenshots/03-discoveryScreen_1773392062139.png diff --git a/fastlane/playMetadata/it-IT/images/sevenInchScreenshots/04-emptyScanScreen_1773392063851.png b/androidApp/fastlane/playMetadata/it-IT/images/sevenInchScreenshots/04-emptyScanScreen_1773392063851.png similarity index 100% rename from fastlane/playMetadata/it-IT/images/sevenInchScreenshots/04-emptyScanScreen_1773392063851.png rename to androidApp/fastlane/playMetadata/it-IT/images/sevenInchScreenshots/04-emptyScanScreen_1773392063851.png diff --git a/fastlane/playMetadata/it-IT/images/sevenInchScreenshots/05-settingsScreen_1773392065789.png b/androidApp/fastlane/playMetadata/it-IT/images/sevenInchScreenshots/05-settingsScreen_1773392065789.png similarity index 100% rename from fastlane/playMetadata/it-IT/images/sevenInchScreenshots/05-settingsScreen_1773392065789.png rename to androidApp/fastlane/playMetadata/it-IT/images/sevenInchScreenshots/05-settingsScreen_1773392065789.png diff --git a/fastlane/playMetadata/it-IT/images/sevenInchScreenshots/06-supportScreen_1773392056702.png b/androidApp/fastlane/playMetadata/it-IT/images/sevenInchScreenshots/06-supportScreen_1773392056702.png similarity index 100% rename from fastlane/playMetadata/it-IT/images/sevenInchScreenshots/06-supportScreen_1773392056702.png rename to androidApp/fastlane/playMetadata/it-IT/images/sevenInchScreenshots/06-supportScreen_1773392056702.png diff --git a/fastlane/playMetadata/it-IT/images/tenInchScreenshots/01-scannedPageScreen_1772541871263.png b/androidApp/fastlane/playMetadata/it-IT/images/tenInchScreenshots/01-scannedPageScreen_1772541871263.png similarity index 100% rename from fastlane/playMetadata/it-IT/images/tenInchScreenshots/01-scannedPageScreen_1772541871263.png rename to androidApp/fastlane/playMetadata/it-IT/images/tenInchScreenshots/01-scannedPageScreen_1772541871263.png diff --git a/fastlane/playMetadata/it-IT/images/tenInchScreenshots/02-scanSettings_1772541864073.png b/androidApp/fastlane/playMetadata/it-IT/images/tenInchScreenshots/02-scanSettings_1772541864073.png similarity index 100% rename from fastlane/playMetadata/it-IT/images/tenInchScreenshots/02-scanSettings_1772541864073.png rename to androidApp/fastlane/playMetadata/it-IT/images/tenInchScreenshots/02-scanSettings_1772541864073.png diff --git a/fastlane/playMetadata/it-IT/images/tenInchScreenshots/03-discoveryScreen_1772541866487.png b/androidApp/fastlane/playMetadata/it-IT/images/tenInchScreenshots/03-discoveryScreen_1772541866487.png similarity index 100% rename from fastlane/playMetadata/it-IT/images/tenInchScreenshots/03-discoveryScreen_1772541866487.png rename to androidApp/fastlane/playMetadata/it-IT/images/tenInchScreenshots/03-discoveryScreen_1772541866487.png diff --git a/fastlane/playMetadata/it-IT/images/tenInchScreenshots/04-emptyScanScreen_1772541870383.png b/androidApp/fastlane/playMetadata/it-IT/images/tenInchScreenshots/04-emptyScanScreen_1772541870383.png similarity index 100% rename from fastlane/playMetadata/it-IT/images/tenInchScreenshots/04-emptyScanScreen_1772541870383.png rename to androidApp/fastlane/playMetadata/it-IT/images/tenInchScreenshots/04-emptyScanScreen_1772541870383.png diff --git a/fastlane/playMetadata/it-IT/images/tenInchScreenshots/05-settingsScreen_1772541873928.png b/androidApp/fastlane/playMetadata/it-IT/images/tenInchScreenshots/05-settingsScreen_1772541873928.png similarity index 100% rename from fastlane/playMetadata/it-IT/images/tenInchScreenshots/05-settingsScreen_1772541873928.png rename to androidApp/fastlane/playMetadata/it-IT/images/tenInchScreenshots/05-settingsScreen_1772541873928.png diff --git a/fastlane/playMetadata/it-IT/images/tenInchScreenshots/06-supportScreen_1772541861315.png b/androidApp/fastlane/playMetadata/it-IT/images/tenInchScreenshots/06-supportScreen_1772541861315.png similarity index 100% rename from fastlane/playMetadata/it-IT/images/tenInchScreenshots/06-supportScreen_1772541861315.png rename to androidApp/fastlane/playMetadata/it-IT/images/tenInchScreenshots/06-supportScreen_1772541861315.png diff --git a/fastlane/playMetadata/it-IT/short_description.txt b/androidApp/fastlane/playMetadata/it-IT/short_description.txt similarity index 100% rename from fastlane/playMetadata/it-IT/short_description.txt rename to androidApp/fastlane/playMetadata/it-IT/short_description.txt diff --git a/fastlane/playMetadata/it-IT/title.txt b/androidApp/fastlane/playMetadata/it-IT/title.txt similarity index 100% rename from fastlane/playMetadata/it-IT/title.txt rename to androidApp/fastlane/playMetadata/it-IT/title.txt diff --git a/fastlane/playMetadata/it-IT/video.txt b/androidApp/fastlane/playMetadata/it-IT/video.txt similarity index 100% rename from fastlane/playMetadata/it-IT/video.txt rename to androidApp/fastlane/playMetadata/it-IT/video.txt diff --git a/fastlane/playMetadata/screenshots.html b/androidApp/fastlane/playMetadata/screenshots.html similarity index 100% rename from fastlane/playMetadata/screenshots.html rename to androidApp/fastlane/playMetadata/screenshots.html diff --git a/androidApp/gradle/gradle-daemon-jvm.properties b/androidApp/gradle/gradle-daemon-jvm.properties new file mode 100644 index 00000000..c4e7acbd --- /dev/null +++ b/androidApp/gradle/gradle-daemon-jvm.properties @@ -0,0 +1,13 @@ +#This file is generated by updateDaemonJvm +toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/29ee363f71d060405f729a8f1b7f7aef/redirect +toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/67a0fee3c4236b6397dcbe8575ca2011/redirect +toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/536afcd1dff540251f85e5d2c80458cf/redirect +toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/67a0fee3c4236b6397dcbe8575ca2011/redirect +toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/0b98aec810298c2c1d7fdac5dac37910/redirect +toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/658299a896470fbb3103ba3a430ee227/redirect +toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/29ee363f71d060405f729a8f1b7f7aef/redirect +toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/67a0fee3c4236b6397dcbe8575ca2011/redirect +toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/248ffb1098f61659502d0c09aa348294/redirect +toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/ac151d55def6b6a9a159dc4cb4642851/redirect +toolchainVendor=JETBRAINS +toolchainVersion=21 diff --git a/androidApp/gradle/libs.versions.toml b/androidApp/gradle/libs.versions.toml new file mode 100644 index 00000000..e546184f --- /dev/null +++ b/androidApp/gradle/libs.versions.toml @@ -0,0 +1,100 @@ +[versions] +agp = "9.1.0" +coilCompose = "3.3.0" +constraintlayoutCompose = "1.1.1" +datastore = "1.2.0" +esclkt = "2.0.6" +escl-mock-server = "1.0.1" +itextCore = "9.3.0" +kotlin = "2.3.20-Beta1" +coreKtx = "1.17.0" +junit = "4.13.2" +junitVersion = "1.3.0" +espressoCore = "3.7.0" +kotlinReflect = "2.1.20" +kotlinxSerializationJson = "1.9.0" +lifecycleRuntimeKtx = "2.9.4" +activityCompose = "1.11.0" +composeBom = "2025.10.00" +room = "2.8.4" +timber = "5.0.1" +zoomable = "0.18.0" +material3 = "1.5.0-alpha06" +materialIcons = "1.7.8" +navigationCompose = "2.9.5" +versionsPlugin = "0.53.0" +screengrab = "2.1.1" +ktor = "3.4.0" +koin = "4.2.0-RC1" +koin-plugin = "0.3.0" +protobuf-plugin = "0.9.6" +protobuf-kotlin-lite = "4.33.5" +rules = "1.7.0" + +[libraries] + +androidx-datastore = { module = "androidx.datastore:datastore", version.ref = "datastore" } + +androidx-room-compiler = { module = "androidx.room:room-compiler", version.ref = "room" } +androidx-room-ktx = { module = "androidx.room:room-ktx", version.ref = "room" } +androidx-room-runtime = { module = "androidx.room:room-runtime", version.ref = "room" } + +koin-core = { module = "io.insert-koin:koin-core", version.ref = "koin" } +koin-annotations = { module = "io.insert-koin:koin-annotations", version.ref = "koin" } +koin-test = { module = "io.insert-koin:koin-test", version.ref = "koin" } +koin-test-junit4 = { module = "io.insert-koin:koin-test-junit4", version.ref = "koin" } + +# Android +koin-android = { module = "io.insert-koin:koin-android", version.ref = "koin" } +koin-android-test = { module = "io.insert-koin:koin-android-test", version.ref = "koin" } + +koin-compose = { module = "io.insert-koin:koin-compose", version.ref = "koin"} + +koin-androix-navigation = { module = "io.insert-koin:koin-androidx-compose-navigation", version.ref = "koin"} + +# Compose +koin-compose-viewmodel = { module = "io.insert-koin:koin-compose-viewmodel", version.ref = "koin" } +koin-compose-viewmodel-navigation = { module = "io.insert-koin:koin-compose-viewmodel-navigation", version.ref = "koin" } +koin-androidx-compose = { module = "io.insert-koin:koin-androidx-compose", version.ref = "koin" } + +ktor-okhttp = { module = "io.ktor:ktor-client-okhttp", version.ref = "ktor"} +ktor-logging = { module = "io.ktor:ktor-client-logging", version.ref = "ktor"} +androidx-constraintlayout-compose = { module = "androidx.constraintlayout:constraintlayout-compose", version.ref = "constraintlayoutCompose" } +androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } +androidx-lifecycle-viewmodel-compose = { module = "androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "lifecycleRuntimeKtx" } +androidx-material-icons-core = { module = "androidx.compose.material:material-icons-core" , version.ref = "materialIcons"} +androidx-navigation-compose = { module = "androidx.navigation:navigation-compose", version.ref = "navigationCompose" } +coil-compose = { module = "io.coil-kt.coil3:coil-compose", version.ref = "coilCompose" } +esclkt = { module = "io.github.chrisimx:esclkt", version.ref = "esclkt" } +itext7-core = { module = "com.itextpdf:itext-core", version.ref = "itextCore" } +junit = { group = "junit", name = "junit", version.ref = "junit" } +androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" } +androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" } +androidx-lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "lifecycleRuntimeKtx" } +androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "activityCompose" } +androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "composeBom" } +androidx-ui = { group = "androidx.compose.ui", name = "ui" } +androidx-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics" } +androidx-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" } +androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" } +androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" } +androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" } +androidx-material3 = { group = "androidx.compose.material3", name = "material3", version.ref = "material3" } +kotlin-reflect = { module = "org.jetbrains.kotlin:kotlin-reflect", version.ref = "kotlinReflect" } +kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinxSerializationJson" } +screengrab = { module = "tools.fastlane:screengrab", version.ref = "screengrab" } +timber = { module = "com.jakewharton.timber:timber", version.ref = "timber" } +zoomable = { module = "me.saket.telephoto:zoomable", version.ref = "zoomable" } +protobuf-kotlin-lite = { module = "com.google.protobuf:protobuf-kotlin-lite", version.ref = "protobuf-kotlin-lite"} +androidx-rules = { group = "androidx.test", name = "rules", version.ref = "rules" } + +escl-mock-server = { module = "io.github.chrisimx:escl-mock-server", version.ref = "escl-mock-server"} + +[plugins] +android-application = { id = "com.android.application", version.ref = "agp" } +kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } +kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } +versions = { id = "com.github.ben-manes.versions", version.ref = "versionsPlugin" } +koin = { id = "io.insert-koin.compiler.plugin", version.ref = "koin-plugin" } +protobuf = { id = "com.google.protobuf", version.ref = "protobuf-plugin" } +room = { id = "androidx.room", version.ref = "room"} \ No newline at end of file diff --git a/app/proguard-rules.pro b/androidApp/proguard-rules.pro similarity index 100% rename from app/proguard-rules.pro rename to androidApp/proguard-rules.pro diff --git a/app/schemas/io.github.chrisimx.scanbridge.db.ScanBridgeDb/1.json b/androidApp/schemas/io.github.chrisimx.scanbridge.db.ScanBridgeDb/1.json similarity index 100% rename from app/schemas/io.github.chrisimx.scanbridge.db.ScanBridgeDb/1.json rename to androidApp/schemas/io.github.chrisimx.scanbridge.db.ScanBridgeDb/1.json diff --git a/app/schemas/io.github.chrisimx.scanbridge.db.ScanBridgeDb/2.json b/androidApp/schemas/io.github.chrisimx.scanbridge.db.ScanBridgeDb/2.json similarity index 100% rename from app/schemas/io.github.chrisimx.scanbridge.db.ScanBridgeDb/2.json rename to androidApp/schemas/io.github.chrisimx.scanbridge.db.ScanBridgeDb/2.json diff --git a/app/src/androidTest/assets/scan-1.jpg b/androidApp/src/androidTest/assets/scan-1.jpg similarity index 100% rename from app/src/androidTest/assets/scan-1.jpg rename to androidApp/src/androidTest/assets/scan-1.jpg diff --git a/app/src/androidTest/java/io/github/chrisimx/scanbridge/ScanBridgeNavHost.kt b/androidApp/src/androidTest/java/io/github/chrisimx/scanbridge/ScanBridgeNavHost.kt similarity index 100% rename from app/src/androidTest/java/io/github/chrisimx/scanbridge/ScanBridgeNavHost.kt rename to androidApp/src/androidTest/java/io/github/chrisimx/scanbridge/ScanBridgeNavHost.kt diff --git a/app/src/androidTest/java/io/github/chrisimx/scanbridge/ScanBridgeTest.kt b/androidApp/src/androidTest/java/io/github/chrisimx/scanbridge/ScanBridgeTest.kt similarity index 100% rename from app/src/androidTest/java/io/github/chrisimx/scanbridge/ScanBridgeTest.kt rename to androidApp/src/androidTest/java/io/github/chrisimx/scanbridge/ScanBridgeTest.kt diff --git a/app/src/androidTest/java/io/github/chrisimx/scanbridge/screenshot/ScanBridgeScreenshotTest.kt b/androidApp/src/androidTest/java/io/github/chrisimx/scanbridge/screenshot/ScanBridgeScreenshotTest.kt similarity index 100% rename from app/src/androidTest/java/io/github/chrisimx/scanbridge/screenshot/ScanBridgeScreenshotTest.kt rename to androidApp/src/androidTest/java/io/github/chrisimx/scanbridge/screenshot/ScanBridgeScreenshotTest.kt diff --git a/app/src/debug/AndroidManifest.xml b/androidApp/src/debug/AndroidManifest.xml similarity index 100% rename from app/src/debug/AndroidManifest.xml rename to androidApp/src/debug/AndroidManifest.xml diff --git a/app/src/fdroid/java/io/github/chrisimx/scanbridge/StartupTabDefinitions.kt b/androidApp/src/fdroid/java/io/github/chrisimx/scanbridge/StartupTabDefinitions.kt similarity index 100% rename from app/src/fdroid/java/io/github/chrisimx/scanbridge/StartupTabDefinitions.kt rename to androidApp/src/fdroid/java/io/github/chrisimx/scanbridge/StartupTabDefinitions.kt diff --git a/app/src/main/AndroidManifest.xml b/androidApp/src/main/AndroidManifest.xml similarity index 100% rename from app/src/main/AndroidManifest.xml rename to androidApp/src/main/AndroidManifest.xml diff --git a/app/src/main/ic_launcher-playstore.png b/androidApp/src/main/ic_launcher-playstore.png similarity index 100% rename from app/src/main/ic_launcher-playstore.png rename to androidApp/src/main/ic_launcher-playstore.png diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/AppSettingsScreen.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/AppSettingsScreen.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/AppSettingsScreen.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/AppSettingsScreen.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/CrashActivity.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/CrashActivity.kt similarity index 96% rename from app/src/main/java/io/github/chrisimx/scanbridge/CrashActivity.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/CrashActivity.kt index 981beed2..5d196fb2 100644 --- a/app/src/main/java/io/github/chrisimx/scanbridge/CrashActivity.kt +++ b/androidApp/src/main/java/io/github/chrisimx/scanbridge/CrashActivity.kt @@ -13,7 +13,7 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll -import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi +// TODO: import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme @@ -28,7 +28,7 @@ import io.github.chrisimx.scanbridge.theme.ScanBridgeTheme import timber.log.Timber class CrashActivity : ComponentActivity() { - @OptIn(ExperimentalMaterial3ExpressiveApi::class) + // TODO: @OptIn(ExperimentalMaterial3ExpressiveApi::class) override fun onCreate(savedInstanceState: Bundle?) { enableEdgeToEdge() super.onCreate(savedInstanceState) diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/CrashHandler.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/CrashHandler.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/CrashHandler.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/CrashHandler.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/CropScreen.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/CropScreen.kt similarity index 97% rename from app/src/main/java/io/github/chrisimx/scanbridge/CropScreen.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/CropScreen.kt index 36597ab0..fbdd7f12 100644 --- a/app/src/main/java/io/github/chrisimx/scanbridge/CropScreen.kt +++ b/androidApp/src/main/java/io/github/chrisimx/scanbridge/CropScreen.kt @@ -6,7 +6,7 @@ import androidx.compose.animation.core.snap import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding -import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi +// TODO: import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi import androidx.compose.material3.ExtendedFloatingActionButton import androidx.compose.material3.FabPosition import androidx.compose.material3.Icon @@ -69,7 +69,7 @@ suspend fun finishCrop(cropRect: Rect, file: String): File? = withContext(Dispat return@withContext croppedFile } -@OptIn(ExperimentalMaterial3ExpressiveApi::class, ExperimentalTelephotoApi::class) +// TODO: @OptIn(ExperimentalMaterial3ExpressiveApi::class, ExperimentalTelephotoApi::class) @Composable fun CropScreen(scanId: Uuid, returnRoute: BaseRoute, navController: NavController) { val context = LocalContext.current diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/MainActivity.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/MainActivity.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/MainActivity.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/MainActivity.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/ScanBridgeApp.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/ScanBridgeApp.kt similarity index 97% rename from app/src/main/java/io/github/chrisimx/scanbridge/ScanBridgeApp.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/ScanBridgeApp.kt index 50578717..5d39c228 100644 --- a/app/src/main/java/io/github/chrisimx/scanbridge/ScanBridgeApp.kt +++ b/androidApp/src/main/java/io/github/chrisimx/scanbridge/ScanBridgeApp.kt @@ -24,7 +24,7 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.Favorite import androidx.compose.material3.AlertDialog import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi +// TODO: import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi import androidx.compose.material3.Icon import androidx.compose.material3.Text import androidx.compose.material3.TextButton @@ -59,7 +59,7 @@ import kotlinx.coroutines.withContext import kotlinx.serialization.json.Json import timber.log.Timber -@OptIn(ExperimentalMaterial3Api::class, ExperimentalMaterial3ExpressiveApi::class) +// TODO: @OptIn(ExperimentalMaterial3Api::class, ExperimentalMaterial3ExpressiveApi::class) @Composable fun ScanBridgeApp() { ScanBridgeTheme { diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/ScanBridgeApplication.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/ScanBridgeApplication.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/ScanBridgeApplication.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/ScanBridgeApplication.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/ScanBridgeNavHost.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/ScanBridgeNavHost.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/ScanBridgeNavHost.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/ScanBridgeNavHost.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/ScanSettings.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/ScanSettings.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/ScanSettings.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/ScanSettings.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/ScannerBrowser.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/ScannerBrowser.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/ScannerBrowser.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/ScannerBrowser.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/ScannerDiscoveryBackend.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/ScannerDiscoveryBackend.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/ScannerDiscoveryBackend.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/ScannerDiscoveryBackend.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/ScanningScreen.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/ScanningScreen.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/ScanningScreen.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/ScanningScreen.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/StartupScreen.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/StartupScreen.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/StartupScreen.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/StartupScreen.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/androidservice/ScanJobForegroundService.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/androidservice/ScanJobForegroundService.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/androidservice/ScanJobForegroundService.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/androidservice/ScanJobForegroundService.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/data/model/EditedCustomScanner.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/data/model/EditedCustomScanner.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/data/model/EditedCustomScanner.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/data/model/EditedCustomScanner.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/data/model/LegacyESCLScanSettings.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/data/model/LegacyESCLScanSettings.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/data/model/LegacyESCLScanSettings.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/data/model/LegacyESCLScanSettings.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/data/model/LegacySessionV2.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/data/model/LegacySessionV2.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/data/model/LegacySessionV2.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/data/model/LegacySessionV2.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/data/model/PaperFormat.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/data/model/PaperFormat.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/data/model/PaperFormat.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/data/model/PaperFormat.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/data/model/ScanJob.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/data/model/ScanJob.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/data/model/ScanJob.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/data/model/ScanJob.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/data/ui/CustomScannerViewModel.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/data/ui/CustomScannerViewModel.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/data/ui/CustomScannerViewModel.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/data/ui/CustomScannerViewModel.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/data/ui/ScanSettingsComposableStateHolder.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/data/ui/ScanSettingsComposableStateHolder.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/data/ui/ScanSettingsComposableStateHolder.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/data/ui/ScanSettingsComposableStateHolder.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/data/ui/ScanSettingsStateData.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/data/ui/ScanSettingsStateData.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/data/ui/ScanSettingsStateData.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/data/ui/ScanSettingsStateData.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/data/ui/ScanningScreenData.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/data/ui/ScanningScreenData.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/data/ui/ScanningScreenData.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/data/ui/ScanningScreenData.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/data/ui/ScanningScreenViewModel.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/data/ui/ScanningScreenViewModel.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/data/ui/ScanningScreenViewModel.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/data/ui/ScanningScreenViewModel.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/datastore/DataStores.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/datastore/DataStores.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/datastore/DataStores.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/datastore/DataStores.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/datastore/LastRouteStoreSerializer.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/datastore/LastRouteStoreSerializer.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/datastore/LastRouteStoreSerializer.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/datastore/LastRouteStoreSerializer.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/datastore/ScanBridgeSettingsSerializer.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/datastore/ScanBridgeSettingsSerializer.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/datastore/ScanBridgeSettingsSerializer.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/datastore/ScanBridgeSettingsSerializer.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/datastore/ScanSettingsDataStoreHelpers.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/datastore/ScanSettingsDataStoreHelpers.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/datastore/ScanSettingsDataStoreHelpers.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/datastore/ScanSettingsDataStoreHelpers.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/datastore/ShownMessagesSerializer.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/datastore/ShownMessagesSerializer.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/datastore/ShownMessagesSerializer.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/datastore/ShownMessagesSerializer.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/db/ScanBridgeDb.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/db/ScanBridgeDb.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/db/ScanBridgeDb.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/db/ScanBridgeDb.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/db/daos/CustomScannerDao.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/db/daos/CustomScannerDao.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/db/daos/CustomScannerDao.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/db/daos/CustomScannerDao.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/db/daos/ScannedPageDao.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/db/daos/ScannedPageDao.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/db/daos/ScannedPageDao.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/db/daos/ScannedPageDao.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/db/daos/SessionDao.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/db/daos/SessionDao.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/db/daos/SessionDao.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/db/daos/SessionDao.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/db/daos/TempFileDao.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/db/daos/TempFileDao.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/db/daos/TempFileDao.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/db/daos/TempFileDao.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/db/entities/CustomScanner.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/db/entities/CustomScanner.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/db/entities/CustomScanner.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/db/entities/CustomScanner.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/db/entities/ScannedPage.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/db/entities/ScannedPage.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/db/entities/ScannedPage.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/db/entities/ScannedPage.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/db/entities/Session.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/db/entities/Session.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/db/entities/Session.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/db/entities/Session.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/db/entities/TempFile.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/db/entities/TempFile.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/db/entities/TempFile.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/db/entities/TempFile.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/db/typeconverters/ScanSettingsTypeConverter.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/db/typeconverters/ScanSettingsTypeConverter.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/db/typeconverters/ScanSettingsTypeConverter.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/db/typeconverters/ScanSettingsTypeConverter.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/db/typeconverters/ScanSettingsUiDataTypeConverter.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/db/typeconverters/ScanSettingsUiDataTypeConverter.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/db/typeconverters/ScanSettingsUiDataTypeConverter.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/db/typeconverters/ScanSettingsUiDataTypeConverter.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/db/typeconverters/UrlTypeConverter.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/db/typeconverters/UrlTypeConverter.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/db/typeconverters/UrlTypeConverter.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/db/typeconverters/UrlTypeConverter.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/db/typeconverters/UuidTypeConverter.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/db/typeconverters/UuidTypeConverter.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/db/typeconverters/UuidTypeConverter.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/db/typeconverters/UuidTypeConverter.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/logs/FileLogger.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/logs/FileLogger.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/logs/FileLogger.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/logs/FileLogger.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/services/AndroidLocaleProvider.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/services/AndroidLocaleProvider.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/services/AndroidLocaleProvider.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/services/AndroidLocaleProvider.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/services/DebugLogService.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/services/DebugLogService.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/services/DebugLogService.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/services/DebugLogService.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/services/FileDebugLogService.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/services/FileDebugLogService.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/services/FileDebugLogService.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/services/FileDebugLogService.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/services/LocaleProvider.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/services/LocaleProvider.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/services/LocaleProvider.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/services/LocaleProvider.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/services/ScanJobRepository.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/services/ScanJobRepository.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/services/ScanJobRepository.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/services/ScanJobRepository.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/stores/DefaultScanSettingsStore.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/stores/DefaultScanSettingsStore.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/stores/DefaultScanSettingsStore.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/stores/DefaultScanSettingsStore.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/stores/LegacyCustomScannerStore.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/stores/LegacyCustomScannerStore.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/stores/LegacyCustomScannerStore.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/stores/LegacyCustomScannerStore.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/stores/LegacySessionsStore.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/stores/LegacySessionsStore.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/stores/LegacySessionsStore.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/stores/LegacySessionsStore.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/theme/Color.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/theme/Color.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/theme/Color.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/theme/Color.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/theme/Font.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/theme/Font.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/theme/Font.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/theme/Font.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/theme/Theme.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/theme/Theme.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/theme/Theme.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/theme/Theme.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/theme/Typography.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/theme/Typography.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/theme/Typography.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/theme/Typography.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/CrashFileHandler.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/CrashFileHandler.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/CrashFileHandler.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/CrashFileHandler.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/CroppableImage.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/CroppableImage.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/CroppableImage.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/CroppableImage.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/ExportSettingsPopup.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/ExportSettingsPopup.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/ExportSettingsPopup.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/ExportSettingsPopup.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/FoundScannerItem.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/FoundScannerItem.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/FoundScannerItem.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/FoundScannerItem.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/FullScreenError.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/FullScreenError.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/FullScreenError.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/FullScreenError.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/LoadingScreen.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/LoadingScreen.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/LoadingScreen.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/LoadingScreen.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/SizeBasedConditionalView.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/SizeBasedConditionalView.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/SizeBasedConditionalView.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/SizeBasedConditionalView.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/TemporaryFileHandlePrompt.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/TemporaryFileHandlePrompt.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/TemporaryFileHandlePrompt.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/TemporaryFileHandlePrompt.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/TitledCard.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/TitledCard.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/TitledCard.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/TitledCard.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/ValidatedTextField.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/ValidatedTextField.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/ValidatedTextField.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/ValidatedTextField.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/ConfirmCloseDialog.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/ConfirmCloseDialog.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/ConfirmCloseDialog.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/ConfirmCloseDialog.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/CrashFileDialog.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/CrashFileDialog.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/CrashFileDialog.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/CrashFileDialog.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/CustomScannerDialog.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/CustomScannerDialog.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/CustomScannerDialog.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/CustomScannerDialog.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/DeleteDialog.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/DeleteDialog.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/DeleteDialog.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/DeleteDialog.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/ErrorDialog.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/ErrorDialog.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/ErrorDialog.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/ErrorDialog.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/LoadingDialog.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/LoadingDialog.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/LoadingDialog.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/LoadingDialog.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/SimpleTextDialog.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/SimpleTextDialog.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/SimpleTextDialog.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/SimpleTextDialog.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/TemporaryFileHandlingDialog.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/TemporaryFileHandlingDialog.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/TemporaryFileHandlingDialog.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/TemporaryFileHandlingDialog.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/settings/CheckboxSetting.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/settings/CheckboxSetting.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/settings/CheckboxSetting.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/settings/CheckboxSetting.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/settings/MoreInformationButton.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/settings/MoreInformationButton.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/settings/MoreInformationButton.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/settings/MoreInformationButton.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/settings/UIntSetting.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/settings/UIntSetting.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/settings/UIntSetting.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/settings/UIntSetting.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/settings/VersionComposable.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/settings/VersionComposable.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/settings/VersionComposable.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/settings/VersionComposable.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/util/ESCLKtExtensions.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/util/ESCLKtExtensions.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/util/ESCLKtExtensions.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/util/ESCLKtExtensions.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/util/ImageUtil.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/util/ImageUtil.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/util/ImageUtil.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/util/ImageUtil.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/util/NavControllerExtensions.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/util/NavControllerExtensions.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/util/NavControllerExtensions.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/util/NavControllerExtensions.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/util/PdfUtil.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/util/PdfUtil.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/util/PdfUtil.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/util/PdfUtil.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/util/ScanFileNameUtil.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/util/ScanFileNameUtil.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/util/ScanFileNameUtil.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/util/ScanFileNameUtil.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/util/ScanSettingsJson.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/util/ScanSettingsJson.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/util/ScanSettingsJson.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/util/ScanSettingsJson.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/util/StateFlowExtensions.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/util/StateFlowExtensions.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/util/StateFlowExtensions.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/util/StateFlowExtensions.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/util/TempFileUtil.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/util/TempFileUtil.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/util/TempFileUtil.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/util/TempFileUtil.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/util/TrustAllTrustManager.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/util/TrustAllTrustManager.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/util/TrustAllTrustManager.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/util/TrustAllTrustManager.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/util/UIUtils.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/util/UIUtils.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/util/UIUtils.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/util/UIUtils.kt diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/util/ZipArchiveUtil.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/util/ZipArchiveUtil.kt similarity index 100% rename from app/src/main/java/io/github/chrisimx/scanbridge/util/ZipArchiveUtil.kt rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/util/ZipArchiveUtil.kt diff --git a/app/src/main/proto/app_settings.proto b/androidApp/src/main/proto/app_settings.proto similarity index 100% rename from app/src/main/proto/app_settings.proto rename to androidApp/src/main/proto/app_settings.proto diff --git a/app/src/main/proto/route_store.proto b/androidApp/src/main/proto/route_store.proto similarity index 100% rename from app/src/main/proto/route_store.proto rename to androidApp/src/main/proto/route_store.proto diff --git a/app/src/main/proto/shown_messages.proto b/androidApp/src/main/proto/shown_messages.proto similarity index 100% rename from app/src/main/proto/shown_messages.proto rename to androidApp/src/main/proto/shown_messages.proto diff --git a/app/src/main/res/drawable/baseline_image_24.xml b/androidApp/src/main/res/drawable/baseline_image_24.xml similarity index 100% rename from app/src/main/res/drawable/baseline_image_24.xml rename to androidApp/src/main/res/drawable/baseline_image_24.xml diff --git a/app/src/main/res/drawable/baseline_picture_as_pdf_24.xml b/androidApp/src/main/res/drawable/baseline_picture_as_pdf_24.xml similarity index 100% rename from app/src/main/res/drawable/baseline_picture_as_pdf_24.xml rename to androidApp/src/main/res/drawable/baseline_picture_as_pdf_24.xml diff --git a/app/src/main/res/drawable/baseline_rotate_right_24.xml b/androidApp/src/main/res/drawable/baseline_rotate_right_24.xml similarity index 100% rename from app/src/main/res/drawable/baseline_rotate_right_24.xml rename to androidApp/src/main/res/drawable/baseline_rotate_right_24.xml diff --git a/app/src/main/res/drawable/favorite_24px.xml b/androidApp/src/main/res/drawable/favorite_24px.xml similarity index 100% rename from app/src/main/res/drawable/favorite_24px.xml rename to androidApp/src/main/res/drawable/favorite_24px.xml diff --git a/app/src/main/res/drawable/github_mark.xml b/androidApp/src/main/res/drawable/github_mark.xml similarity index 100% rename from app/src/main/res/drawable/github_mark.xml rename to androidApp/src/main/res/drawable/github_mark.xml diff --git a/app/src/main/res/drawable/icon_about_dialog.png b/androidApp/src/main/res/drawable/icon_about_dialog.png similarity index 100% rename from app/src/main/res/drawable/icon_about_dialog.png rename to androidApp/src/main/res/drawable/icon_about_dialog.png diff --git a/app/src/main/res/drawable/outline_crop_24.xml b/androidApp/src/main/res/drawable/outline_crop_24.xml similarity index 100% rename from app/src/main/res/drawable/outline_crop_24.xml rename to androidApp/src/main/res/drawable/outline_crop_24.xml diff --git a/app/src/main/res/drawable/outline_edit_24.xml b/androidApp/src/main/res/drawable/outline_edit_24.xml similarity index 100% rename from app/src/main/res/drawable/outline_edit_24.xml rename to androidApp/src/main/res/drawable/outline_edit_24.xml diff --git a/app/src/main/res/drawable/outline_error_24.xml b/androidApp/src/main/res/drawable/outline_error_24.xml similarity index 100% rename from app/src/main/res/drawable/outline_error_24.xml rename to androidApp/src/main/res/drawable/outline_error_24.xml diff --git a/app/src/main/res/drawable/outline_file_save_24.xml b/androidApp/src/main/res/drawable/outline_file_save_24.xml similarity index 100% rename from app/src/main/res/drawable/outline_file_save_24.xml rename to androidApp/src/main/res/drawable/outline_file_save_24.xml diff --git a/app/src/main/res/drawable/outline_pan_zoom_24.xml b/androidApp/src/main/res/drawable/outline_pan_zoom_24.xml similarity index 100% rename from app/src/main/res/drawable/outline_pan_zoom_24.xml rename to androidApp/src/main/res/drawable/outline_pan_zoom_24.xml diff --git a/app/src/main/res/drawable/outline_scan_24.xml b/androidApp/src/main/res/drawable/outline_scan_24.xml similarity index 100% rename from app/src/main/res/drawable/outline_scan_24.xml rename to androidApp/src/main/res/drawable/outline_scan_24.xml diff --git a/app/src/main/res/drawable/round_print_36.xml b/androidApp/src/main/res/drawable/round_print_36.xml similarity index 100% rename from app/src/main/res/drawable/round_print_36.xml rename to androidApp/src/main/res/drawable/round_print_36.xml diff --git a/app/src/main/res/drawable/rounded_adf_scanner_24.xml b/androidApp/src/main/res/drawable/rounded_adf_scanner_24.xml similarity index 100% rename from app/src/main/res/drawable/rounded_adf_scanner_24.xml rename to androidApp/src/main/res/drawable/rounded_adf_scanner_24.xml diff --git a/app/src/main/res/drawable/rounded_content_copy_24.xml b/androidApp/src/main/res/drawable/rounded_content_copy_24.xml similarity index 100% rename from app/src/main/res/drawable/rounded_content_copy_24.xml rename to androidApp/src/main/res/drawable/rounded_content_copy_24.xml diff --git a/app/src/main/res/drawable/rounded_document_scanner_24.xml b/androidApp/src/main/res/drawable/rounded_document_scanner_24.xml similarity index 100% rename from app/src/main/res/drawable/rounded_document_scanner_24.xml rename to androidApp/src/main/res/drawable/rounded_document_scanner_24.xml diff --git a/app/src/main/res/drawable/rounded_scanner_24.xml b/androidApp/src/main/res/drawable/rounded_scanner_24.xml similarity index 100% rename from app/src/main/res/drawable/rounded_scanner_24.xml rename to androidApp/src/main/res/drawable/rounded_scanner_24.xml diff --git a/app/src/main/res/drawable/rounded_warning_24.xml b/androidApp/src/main/res/drawable/rounded_warning_24.xml similarity index 100% rename from app/src/main/res/drawable/rounded_warning_24.xml rename to androidApp/src/main/res/drawable/rounded_warning_24.xml diff --git a/app/src/main/res/drawable/twotone_wifi_find_24.xml b/androidApp/src/main/res/drawable/twotone_wifi_find_24.xml similarity index 100% rename from app/src/main/res/drawable/twotone_wifi_find_24.xml rename to androidApp/src/main/res/drawable/twotone_wifi_find_24.xml diff --git a/app/src/main/res/font/poppins_black.ttf b/androidApp/src/main/res/font/poppins_black.ttf similarity index 100% rename from app/src/main/res/font/poppins_black.ttf rename to androidApp/src/main/res/font/poppins_black.ttf diff --git a/app/src/main/res/font/poppins_blackitalic.ttf b/androidApp/src/main/res/font/poppins_blackitalic.ttf similarity index 100% rename from app/src/main/res/font/poppins_blackitalic.ttf rename to androidApp/src/main/res/font/poppins_blackitalic.ttf diff --git a/app/src/main/res/font/poppins_bold.ttf b/androidApp/src/main/res/font/poppins_bold.ttf similarity index 100% rename from app/src/main/res/font/poppins_bold.ttf rename to androidApp/src/main/res/font/poppins_bold.ttf diff --git a/app/src/main/res/font/poppins_bolditalic.ttf b/androidApp/src/main/res/font/poppins_bolditalic.ttf similarity index 100% rename from app/src/main/res/font/poppins_bolditalic.ttf rename to androidApp/src/main/res/font/poppins_bolditalic.ttf diff --git a/app/src/main/res/font/poppins_extrabold.ttf b/androidApp/src/main/res/font/poppins_extrabold.ttf similarity index 100% rename from app/src/main/res/font/poppins_extrabold.ttf rename to androidApp/src/main/res/font/poppins_extrabold.ttf diff --git a/app/src/main/res/font/poppins_extrabolditalic.ttf b/androidApp/src/main/res/font/poppins_extrabolditalic.ttf similarity index 100% rename from app/src/main/res/font/poppins_extrabolditalic.ttf rename to androidApp/src/main/res/font/poppins_extrabolditalic.ttf diff --git a/app/src/main/res/font/poppins_extralight.ttf b/androidApp/src/main/res/font/poppins_extralight.ttf similarity index 100% rename from app/src/main/res/font/poppins_extralight.ttf rename to androidApp/src/main/res/font/poppins_extralight.ttf diff --git a/app/src/main/res/font/poppins_extralightitalic.ttf b/androidApp/src/main/res/font/poppins_extralightitalic.ttf similarity index 100% rename from app/src/main/res/font/poppins_extralightitalic.ttf rename to androidApp/src/main/res/font/poppins_extralightitalic.ttf diff --git a/app/src/main/res/font/poppins_italic.ttf b/androidApp/src/main/res/font/poppins_italic.ttf similarity index 100% rename from app/src/main/res/font/poppins_italic.ttf rename to androidApp/src/main/res/font/poppins_italic.ttf diff --git a/app/src/main/res/font/poppins_light.ttf b/androidApp/src/main/res/font/poppins_light.ttf similarity index 100% rename from app/src/main/res/font/poppins_light.ttf rename to androidApp/src/main/res/font/poppins_light.ttf diff --git a/app/src/main/res/font/poppins_lightitalic.ttf b/androidApp/src/main/res/font/poppins_lightitalic.ttf similarity index 100% rename from app/src/main/res/font/poppins_lightitalic.ttf rename to androidApp/src/main/res/font/poppins_lightitalic.ttf diff --git a/app/src/main/res/font/poppins_medium.ttf b/androidApp/src/main/res/font/poppins_medium.ttf similarity index 100% rename from app/src/main/res/font/poppins_medium.ttf rename to androidApp/src/main/res/font/poppins_medium.ttf diff --git a/app/src/main/res/font/poppins_mediumitalic.ttf b/androidApp/src/main/res/font/poppins_mediumitalic.ttf similarity index 100% rename from app/src/main/res/font/poppins_mediumitalic.ttf rename to androidApp/src/main/res/font/poppins_mediumitalic.ttf diff --git a/app/src/main/res/font/poppins_regular.ttf b/androidApp/src/main/res/font/poppins_regular.ttf similarity index 100% rename from app/src/main/res/font/poppins_regular.ttf rename to androidApp/src/main/res/font/poppins_regular.ttf diff --git a/app/src/main/res/font/poppins_semibold.ttf b/androidApp/src/main/res/font/poppins_semibold.ttf similarity index 100% rename from app/src/main/res/font/poppins_semibold.ttf rename to androidApp/src/main/res/font/poppins_semibold.ttf diff --git a/app/src/main/res/font/poppins_semibolditalic.ttf b/androidApp/src/main/res/font/poppins_semibolditalic.ttf similarity index 100% rename from app/src/main/res/font/poppins_semibolditalic.ttf rename to androidApp/src/main/res/font/poppins_semibolditalic.ttf diff --git a/app/src/main/res/font/poppins_thin.ttf b/androidApp/src/main/res/font/poppins_thin.ttf similarity index 100% rename from app/src/main/res/font/poppins_thin.ttf rename to androidApp/src/main/res/font/poppins_thin.ttf diff --git a/app/src/main/res/font/poppins_thinitalic.ttf b/androidApp/src/main/res/font/poppins_thinitalic.ttf similarity index 100% rename from app/src/main/res/font/poppins_thinitalic.ttf rename to androidApp/src/main/res/font/poppins_thinitalic.ttf diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/androidApp/src/main/res/mipmap-anydpi-v26/ic_launcher.xml similarity index 100% rename from app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml rename to androidApp/src/main/res/mipmap-anydpi-v26/ic_launcher.xml diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/androidApp/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml similarity index 100% rename from app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml rename to androidApp/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/androidApp/src/main/res/mipmap-hdpi/ic_launcher.webp similarity index 100% rename from app/src/main/res/mipmap-hdpi/ic_launcher.webp rename to androidApp/src/main/res/mipmap-hdpi/ic_launcher.webp diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_background.webp b/androidApp/src/main/res/mipmap-hdpi/ic_launcher_background.webp similarity index 100% rename from app/src/main/res/mipmap-hdpi/ic_launcher_background.webp rename to androidApp/src/main/res/mipmap-hdpi/ic_launcher_background.webp diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp b/androidApp/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp similarity index 100% rename from app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp rename to androidApp/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/androidApp/src/main/res/mipmap-hdpi/ic_launcher_round.webp similarity index 100% rename from app/src/main/res/mipmap-hdpi/ic_launcher_round.webp rename to androidApp/src/main/res/mipmap-hdpi/ic_launcher_round.webp diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/androidApp/src/main/res/mipmap-mdpi/ic_launcher.webp similarity index 100% rename from app/src/main/res/mipmap-mdpi/ic_launcher.webp rename to androidApp/src/main/res/mipmap-mdpi/ic_launcher.webp diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_background.webp b/androidApp/src/main/res/mipmap-mdpi/ic_launcher_background.webp similarity index 100% rename from app/src/main/res/mipmap-mdpi/ic_launcher_background.webp rename to androidApp/src/main/res/mipmap-mdpi/ic_launcher_background.webp diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp b/androidApp/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp similarity index 100% rename from app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp rename to androidApp/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/androidApp/src/main/res/mipmap-mdpi/ic_launcher_round.webp similarity index 100% rename from app/src/main/res/mipmap-mdpi/ic_launcher_round.webp rename to androidApp/src/main/res/mipmap-mdpi/ic_launcher_round.webp diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/androidApp/src/main/res/mipmap-xhdpi/ic_launcher.webp similarity index 100% rename from app/src/main/res/mipmap-xhdpi/ic_launcher.webp rename to androidApp/src/main/res/mipmap-xhdpi/ic_launcher.webp diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_background.webp b/androidApp/src/main/res/mipmap-xhdpi/ic_launcher_background.webp similarity index 100% rename from app/src/main/res/mipmap-xhdpi/ic_launcher_background.webp rename to androidApp/src/main/res/mipmap-xhdpi/ic_launcher_background.webp diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp b/androidApp/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp similarity index 100% rename from app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp rename to androidApp/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/androidApp/src/main/res/mipmap-xhdpi/ic_launcher_round.webp similarity index 100% rename from app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp rename to androidApp/src/main/res/mipmap-xhdpi/ic_launcher_round.webp diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/androidApp/src/main/res/mipmap-xxhdpi/ic_launcher.webp similarity index 100% rename from app/src/main/res/mipmap-xxhdpi/ic_launcher.webp rename to androidApp/src/main/res/mipmap-xxhdpi/ic_launcher.webp diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.webp b/androidApp/src/main/res/mipmap-xxhdpi/ic_launcher_background.webp similarity index 100% rename from app/src/main/res/mipmap-xxhdpi/ic_launcher_background.webp rename to androidApp/src/main/res/mipmap-xxhdpi/ic_launcher_background.webp diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp b/androidApp/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp similarity index 100% rename from app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp rename to androidApp/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/androidApp/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp similarity index 100% rename from app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp rename to androidApp/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/androidApp/src/main/res/mipmap-xxxhdpi/ic_launcher.webp similarity index 100% rename from app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp rename to androidApp/src/main/res/mipmap-xxxhdpi/ic_launcher.webp diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.webp b/androidApp/src/main/res/mipmap-xxxhdpi/ic_launcher_background.webp similarity index 100% rename from app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.webp rename to androidApp/src/main/res/mipmap-xxxhdpi/ic_launcher_background.webp diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp b/androidApp/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp similarity index 100% rename from app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp rename to androidApp/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/androidApp/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp similarity index 100% rename from app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp rename to androidApp/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp diff --git a/app/src/main/res/raw/test_scanner_capabilities b/androidApp/src/main/res/raw/test_scanner_capabilities similarity index 100% rename from app/src/main/res/raw/test_scanner_capabilities rename to androidApp/src/main/res/raw/test_scanner_capabilities diff --git a/app/src/main/res/resources.properties b/androidApp/src/main/res/resources.properties similarity index 100% rename from app/src/main/res/resources.properties rename to androidApp/src/main/res/resources.properties diff --git a/app/src/main/res/values-de/strings.xml b/androidApp/src/main/res/values-de/strings.xml similarity index 100% rename from app/src/main/res/values-de/strings.xml rename to androidApp/src/main/res/values-de/strings.xml diff --git a/app/src/main/res/values-it/strings.xml b/androidApp/src/main/res/values-it/strings.xml similarity index 100% rename from app/src/main/res/values-it/strings.xml rename to androidApp/src/main/res/values-it/strings.xml diff --git a/app/src/main/res/values/colors.xml b/androidApp/src/main/res/values/colors.xml similarity index 100% rename from app/src/main/res/values/colors.xml rename to androidApp/src/main/res/values/colors.xml diff --git a/app/src/main/res/values/strings.xml b/androidApp/src/main/res/values/strings.xml similarity index 100% rename from app/src/main/res/values/strings.xml rename to androidApp/src/main/res/values/strings.xml diff --git a/app/src/main/res/values/themes.xml b/androidApp/src/main/res/values/themes.xml similarity index 100% rename from app/src/main/res/values/themes.xml rename to androidApp/src/main/res/values/themes.xml diff --git a/app/src/main/res/xml/backup_rules.xml b/androidApp/src/main/res/xml/backup_rules.xml similarity index 100% rename from app/src/main/res/xml/backup_rules.xml rename to androidApp/src/main/res/xml/backup_rules.xml diff --git a/app/src/main/res/xml/data_extraction_rules.xml b/androidApp/src/main/res/xml/data_extraction_rules.xml similarity index 100% rename from app/src/main/res/xml/data_extraction_rules.xml rename to androidApp/src/main/res/xml/data_extraction_rules.xml diff --git a/app/src/main/res/xml/network_security_config.xml b/androidApp/src/main/res/xml/network_security_config.xml similarity index 100% rename from app/src/main/res/xml/network_security_config.xml rename to androidApp/src/main/res/xml/network_security_config.xml diff --git a/app/src/main/res/xml/provider_paths.xml b/androidApp/src/main/res/xml/provider_paths.xml similarity index 100% rename from app/src/main/res/xml/provider_paths.xml rename to androidApp/src/main/res/xml/provider_paths.xml diff --git a/app/src/play/AndroidManifest.xml b/androidApp/src/play/AndroidManifest.xml similarity index 100% rename from app/src/play/AndroidManifest.xml rename to androidApp/src/play/AndroidManifest.xml diff --git a/app/src/play/java/io/github/chrisimx/scanbridge/AccountSetupScreen.kt b/androidApp/src/play/java/io/github/chrisimx/scanbridge/AccountSetupScreen.kt similarity index 100% rename from app/src/play/java/io/github/chrisimx/scanbridge/AccountSetupScreen.kt rename to androidApp/src/play/java/io/github/chrisimx/scanbridge/AccountSetupScreen.kt diff --git a/app/src/play/java/io/github/chrisimx/scanbridge/InternetConnectivityFlow.kt b/androidApp/src/play/java/io/github/chrisimx/scanbridge/InternetConnectivityFlow.kt similarity index 100% rename from app/src/play/java/io/github/chrisimx/scanbridge/InternetConnectivityFlow.kt rename to androidApp/src/play/java/io/github/chrisimx/scanbridge/InternetConnectivityFlow.kt diff --git a/app/src/play/java/io/github/chrisimx/scanbridge/LicenseErrorStringMapping.kt b/androidApp/src/play/java/io/github/chrisimx/scanbridge/LicenseErrorStringMapping.kt similarity index 100% rename from app/src/play/java/io/github/chrisimx/scanbridge/LicenseErrorStringMapping.kt rename to androidApp/src/play/java/io/github/chrisimx/scanbridge/LicenseErrorStringMapping.kt diff --git a/app/src/play/java/io/github/chrisimx/scanbridge/OwnershipProofService.kt b/androidApp/src/play/java/io/github/chrisimx/scanbridge/OwnershipProofService.kt similarity index 100% rename from app/src/play/java/io/github/chrisimx/scanbridge/OwnershipProofService.kt rename to androidApp/src/play/java/io/github/chrisimx/scanbridge/OwnershipProofService.kt diff --git a/app/src/play/java/io/github/chrisimx/scanbridge/OwnershipTestScreen.kt b/androidApp/src/play/java/io/github/chrisimx/scanbridge/OwnershipTestScreen.kt similarity index 100% rename from app/src/play/java/io/github/chrisimx/scanbridge/OwnershipTestScreen.kt rename to androidApp/src/play/java/io/github/chrisimx/scanbridge/OwnershipTestScreen.kt diff --git a/app/src/play/java/io/github/chrisimx/scanbridge/PlainTextObfuscator.kt b/androidApp/src/play/java/io/github/chrisimx/scanbridge/PlainTextObfuscator.kt similarity index 100% rename from app/src/play/java/io/github/chrisimx/scanbridge/PlainTextObfuscator.kt rename to androidApp/src/play/java/io/github/chrisimx/scanbridge/PlainTextObfuscator.kt diff --git a/app/src/play/java/io/github/chrisimx/scanbridge/SignupScreen.kt b/androidApp/src/play/java/io/github/chrisimx/scanbridge/SignupScreen.kt similarity index 100% rename from app/src/play/java/io/github/chrisimx/scanbridge/SignupScreen.kt rename to androidApp/src/play/java/io/github/chrisimx/scanbridge/SignupScreen.kt diff --git a/app/src/play/java/io/github/chrisimx/scanbridge/SimpleStrictLicensePolicy.kt b/androidApp/src/play/java/io/github/chrisimx/scanbridge/SimpleStrictLicensePolicy.kt similarity index 100% rename from app/src/play/java/io/github/chrisimx/scanbridge/SimpleStrictLicensePolicy.kt rename to androidApp/src/play/java/io/github/chrisimx/scanbridge/SimpleStrictLicensePolicy.kt diff --git a/app/src/play/java/io/github/chrisimx/scanbridge/SpecialIcons.kt b/androidApp/src/play/java/io/github/chrisimx/scanbridge/SpecialIcons.kt similarity index 100% rename from app/src/play/java/io/github/chrisimx/scanbridge/SpecialIcons.kt rename to androidApp/src/play/java/io/github/chrisimx/scanbridge/SpecialIcons.kt diff --git a/app/src/play/java/io/github/chrisimx/scanbridge/StartupTabDefinitions.kt b/androidApp/src/play/java/io/github/chrisimx/scanbridge/StartupTabDefinitions.kt similarity index 100% rename from app/src/play/java/io/github/chrisimx/scanbridge/StartupTabDefinitions.kt rename to androidApp/src/play/java/io/github/chrisimx/scanbridge/StartupTabDefinitions.kt diff --git a/app/src/play/java/io/github/chrisimx/scanbridge/SuccessSigningUpScreen.kt b/androidApp/src/play/java/io/github/chrisimx/scanbridge/SuccessSigningUpScreen.kt similarity index 100% rename from app/src/play/java/io/github/chrisimx/scanbridge/SuccessSigningUpScreen.kt rename to androidApp/src/play/java/io/github/chrisimx/scanbridge/SuccessSigningUpScreen.kt diff --git a/app/src/play/java/io/github/chrisimx/scanbridge/SupportScreen.kt b/androidApp/src/play/java/io/github/chrisimx/scanbridge/SupportScreen.kt similarity index 100% rename from app/src/play/java/io/github/chrisimx/scanbridge/SupportScreen.kt rename to androidApp/src/play/java/io/github/chrisimx/scanbridge/SupportScreen.kt diff --git a/app/src/play/java/io/github/chrisimx/scanbridge/zammadapi/AccountVerificationClient.kt b/androidApp/src/play/java/io/github/chrisimx/scanbridge/zammadapi/AccountVerificationClient.kt similarity index 100% rename from app/src/play/java/io/github/chrisimx/scanbridge/zammadapi/AccountVerificationClient.kt rename to androidApp/src/play/java/io/github/chrisimx/scanbridge/zammadapi/AccountVerificationClient.kt diff --git a/app/src/play/java/io/github/chrisimx/scanbridge/zammadapi/AccountVerifierApi.kt b/androidApp/src/play/java/io/github/chrisimx/scanbridge/zammadapi/AccountVerifierApi.kt similarity index 100% rename from app/src/play/java/io/github/chrisimx/scanbridge/zammadapi/AccountVerifierApi.kt rename to androidApp/src/play/java/io/github/chrisimx/scanbridge/zammadapi/AccountVerifierApi.kt diff --git a/app/src/play/java/io/github/chrisimx/scanbridge/zammadapi/models/AccountCreationRequest.kt b/androidApp/src/play/java/io/github/chrisimx/scanbridge/zammadapi/models/AccountCreationRequest.kt similarity index 100% rename from app/src/play/java/io/github/chrisimx/scanbridge/zammadapi/models/AccountCreationRequest.kt rename to androidApp/src/play/java/io/github/chrisimx/scanbridge/zammadapi/models/AccountCreationRequest.kt diff --git a/app/src/play/java/io/github/chrisimx/scanbridge/zammadapi/models/GoogleChallenge.kt b/androidApp/src/play/java/io/github/chrisimx/scanbridge/zammadapi/models/GoogleChallenge.kt similarity index 100% rename from app/src/play/java/io/github/chrisimx/scanbridge/zammadapi/models/GoogleChallenge.kt rename to androidApp/src/play/java/io/github/chrisimx/scanbridge/zammadapi/models/GoogleChallenge.kt diff --git a/app/src/play/java/io/github/chrisimx/scanbridge/zammadapi/models/VIPCreationResult.kt b/androidApp/src/play/java/io/github/chrisimx/scanbridge/zammadapi/models/VIPCreationResult.kt similarity index 100% rename from app/src/play/java/io/github/chrisimx/scanbridge/zammadapi/models/VIPCreationResult.kt rename to androidApp/src/play/java/io/github/chrisimx/scanbridge/zammadapi/models/VIPCreationResult.kt diff --git a/app/src/play/res/drawable/fireamp_icon.xml b/androidApp/src/play/res/drawable/fireamp_icon.xml similarity index 100% rename from app/src/play/res/drawable/fireamp_icon.xml rename to androidApp/src/play/res/drawable/fireamp_icon.xml diff --git a/app/src/play/res/drawable/outline_globe_24.xml b/androidApp/src/play/res/drawable/outline_globe_24.xml similarity index 100% rename from app/src/play/res/drawable/outline_globe_24.xml rename to androidApp/src/play/res/drawable/outline_globe_24.xml diff --git a/app/src/play/res/values-de/strings.xml b/androidApp/src/play/res/values-de/strings.xml similarity index 100% rename from app/src/play/res/values-de/strings.xml rename to androidApp/src/play/res/values-de/strings.xml diff --git a/app/src/play/res/values-it/strings.xml b/androidApp/src/play/res/values-it/strings.xml similarity index 100% rename from app/src/play/res/values-it/strings.xml rename to androidApp/src/play/res/values-it/strings.xml diff --git a/app/src/play/res/values/strings.xml b/androidApp/src/play/res/values/strings.xml similarity index 100% rename from app/src/play/res/values/strings.xml rename to androidApp/src/play/res/values/strings.xml diff --git a/app/src/test/java/org/github/chrisimx/scanbridge/PaperFormatTest.kt b/androidApp/src/test/java/org/github/chrisimx/scanbridge/PaperFormatTest.kt similarity index 100% rename from app/src/test/java/org/github/chrisimx/scanbridge/PaperFormatTest.kt rename to androidApp/src/test/java/org/github/chrisimx/scanbridge/PaperFormatTest.kt diff --git a/app/src/test/java/org/github/chrisimx/scanbridge/ScanSettingsStoreTest.kt b/androidApp/src/test/java/org/github/chrisimx/scanbridge/ScanSettingsStoreTest.kt similarity index 100% rename from app/src/test/java/org/github/chrisimx/scanbridge/ScanSettingsStoreTest.kt rename to androidApp/src/test/java/org/github/chrisimx/scanbridge/ScanSettingsStoreTest.kt diff --git a/build.gradle.kts b/build.gradle.kts index d497f649..c70a45c6 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,9 +1,13 @@ import com.github.benmanes.gradle.versions.updates.DependencyUpdatesTask -// Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { - alias(libs.plugins.android.application) apply false - alias(libs.plugins.kotlin.compose) apply false + alias(libs.plugins.kotlin.multiplatform).apply(false) + alias(libs.plugins.compose.compiler).apply(false) + alias(libs.plugins.compose.multiplatform).apply(false) + alias(libs.plugins.kotlin.android).apply(false) + alias(libs.plugins.android.application).apply(false) + alias(libs.plugins.android.kmp.library).apply(false) + alias(libs.plugins.kotlin.jvm).apply(false) alias(libs.plugins.versions) } diff --git a/desktopApp/appIcons/LinuxIcon.png b/desktopApp/appIcons/LinuxIcon.png new file mode 100644 index 00000000..a2a45177 Binary files /dev/null and b/desktopApp/appIcons/LinuxIcon.png differ diff --git a/desktopApp/appIcons/MacosIcon.icns b/desktopApp/appIcons/MacosIcon.icns new file mode 100644 index 00000000..083def59 Binary files /dev/null and b/desktopApp/appIcons/MacosIcon.icns differ diff --git a/desktopApp/appIcons/WindowsIcon.ico b/desktopApp/appIcons/WindowsIcon.ico new file mode 100644 index 00000000..7e9ab754 Binary files /dev/null and b/desktopApp/appIcons/WindowsIcon.ico differ diff --git a/desktopApp/build.gradle.kts b/desktopApp/build.gradle.kts new file mode 100644 index 00000000..ab291430 --- /dev/null +++ b/desktopApp/build.gradle.kts @@ -0,0 +1,33 @@ +import org.jetbrains.compose.desktop.application.dsl.TargetFormat + +plugins { + alias(libs.plugins.compose.compiler) + alias(libs.plugins.compose.multiplatform) + alias(libs.plugins.kotlin.jvm) +} +dependencies { + implementation(project(":shared")) +} + +compose.desktop { + application { + mainClass = "MainKt" + + nativeDistributions { + targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb) + packageName = "ScanBridge" + packageVersion = "1.0.0" + + linux { + iconFile.set(project.file("appIcons/LinuxIcon.png")) + } + windows { + iconFile.set(project.file("appIcons/WindowsIcon.ico")) + } + macOS { + iconFile.set(project.file("appIcons/MacosIcon.icns")) + bundleID = "io.github.chrisimx.scanbridge.desktopApp" + } + } + } +} diff --git a/desktopApp/src/main/kotlin/main.kt b/desktopApp/src/main/kotlin/main.kt new file mode 100644 index 00000000..65386b06 --- /dev/null +++ b/desktopApp/src/main/kotlin/main.kt @@ -0,0 +1,18 @@ +import androidx.compose.ui.unit.dp +import androidx.compose.ui.window.Window +import androidx.compose.ui.window.application +import androidx.compose.ui.window.rememberWindowState +import java.awt.Dimension +import io.github.chrisimx.scanbridge.App + +fun main() = application { + Window( + title = "ScanBridge", + state = rememberWindowState(width = 800.dp, height = 600.dp), + onCloseRequest = ::exitApplication, + ) { + window.minimumSize = Dimension(350, 600) + App() + } +} + diff --git a/gradle.properties b/gradle.properties index 3ce09d6d..fa120c01 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,12 +1,28 @@ +#Gradle +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx4G -Dfile.encoding=UTF-8 +org.gradle.caching=true +org.gradle.configuration-cache=true +org.gradle.daemon=true +org.gradle.parallel=true + +#Kotlin +kotlin.daemon.jvmargs=-Xmx4G +kotlin.native.binary.gc=cms +kotlin.incremental.wasm=true + +#https://youtrack.jetbrains.com/issue/KT-82395 +kotlin.incremental.js=false +kotlin.incremental.js.klib=false + # Project-wide Gradle settings. # IDE (e.g. Android Studio) users: # Gradle settings configured through the IDE *will override* # any settings specified in this file. # For more details on how to configure your build environment visit # http://www.gradle.org/docs/current/userguide/build_environment.html -# Specifies the JVM arguments used for the daemon process. -# The setting is particularly useful for tweaking memory settings. -org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 + # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. For more details, visit # https://developer.android.com/r/tools/gradle-multi-project-decoupled-projects diff --git a/gradle/gradle-daemon-jvm.properties b/gradle/gradle-daemon-jvm.properties index c4e7acbd..5c34300f 100644 --- a/gradle/gradle-daemon-jvm.properties +++ b/gradle/gradle-daemon-jvm.properties @@ -1,13 +1,13 @@ #This file is generated by updateDaemonJvm -toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/29ee363f71d060405f729a8f1b7f7aef/redirect -toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/67a0fee3c4236b6397dcbe8575ca2011/redirect -toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/536afcd1dff540251f85e5d2c80458cf/redirect -toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/67a0fee3c4236b6397dcbe8575ca2011/redirect -toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/0b98aec810298c2c1d7fdac5dac37910/redirect -toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/658299a896470fbb3103ba3a430ee227/redirect -toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/29ee363f71d060405f729a8f1b7f7aef/redirect -toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/67a0fee3c4236b6397dcbe8575ca2011/redirect -toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/248ffb1098f61659502d0c09aa348294/redirect -toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/ac151d55def6b6a9a159dc4cb4642851/redirect +toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/56a19bc915b9ba2eb62ba7554c61b919/redirect +toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/398ffe3949748bfb1d5636f023d228fd/redirect +toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/56a19bc915b9ba2eb62ba7554c61b919/redirect +toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/398ffe3949748bfb1d5636f023d228fd/redirect +toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/e99bae143b75f9a10ead10248f02055e/redirect +toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/04e088f8677de3b384108493cc9481d0/redirect +toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/56a19bc915b9ba2eb62ba7554c61b919/redirect +toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/398ffe3949748bfb1d5636f023d228fd/redirect +toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/e55dccbfe27cb97945148c61a39c89c5/redirect +toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/dbd05c4936d573642f94cd149e1356c8/redirect toolchainVendor=JETBRAINS toolchainVersion=21 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e546184f..d52b88fc 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,4 +1,8 @@ [versions] + +compose-multiplatform = "1.10.3" +androidx-activityCompose = "1.12.0" + agp = "9.1.0" coilCompose = "3.3.0" constraintlayoutCompose = "1.1.1" @@ -15,11 +19,12 @@ kotlinReflect = "2.1.20" kotlinxSerializationJson = "1.9.0" lifecycleRuntimeKtx = "2.9.4" activityCompose = "1.11.0" -composeBom = "2025.10.00" +composeBom = "2026.03.01" room = "2.8.4" timber = "5.0.1" zoomable = "0.18.0" -material3 = "1.5.0-alpha06" +material3 = "1.11.0-alpha05" +androidx-material3 = "1.5.0-alpha16" materialIcons = "1.7.8" navigationCompose = "2.9.5" versionsPlugin = "0.53.0" @@ -33,6 +38,16 @@ rules = "1.7.0" [libraries] +compose-runtime = { module = "org.jetbrains.compose.runtime:runtime", version.ref = "compose-multiplatform" } +compose-ui = { module = "org.jetbrains.compose.ui:ui", version.ref = "compose-multiplatform" } +compose-foundation = { module = "org.jetbrains.compose.foundation:foundation", version.ref = "compose-multiplatform" } +compose-resources = { module = "org.jetbrains.compose.components:components-resources", version.ref = "compose-multiplatform" } +compose-ui-tooling-preview = { module = "org.jetbrains.compose.ui:ui-tooling-preview", version.ref = "compose-multiplatform" } +compose-ui-tooling = { module = "org.jetbrains.compose.ui:ui-tooling", version.ref = "compose-multiplatform" } +compose-ui-test = { module = "org.jetbrains.compose.ui:ui-test", version.ref = "compose-multiplatform" } +compose-material3 = { module = "org.jetbrains.compose.material3:material3", version.ref = "material3" } +androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "activityCompose" } + androidx-datastore = { module = "androidx.datastore:datastore", version.ref = "datastore" } androidx-room-compiler = { module = "androidx.room:room-compiler", version.ref = "room" } @@ -71,7 +86,6 @@ junit = { group = "junit", name = "junit", version.ref = "junit" } androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" } androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" } androidx-lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "lifecycleRuntimeKtx" } -androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "activityCompose" } androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "composeBom" } androidx-ui = { group = "androidx.compose.ui", name = "ui" } androidx-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics" } @@ -79,7 +93,7 @@ androidx-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" } androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" } androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" } androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" } -androidx-material3 = { group = "androidx.compose.material3", name = "material3", version.ref = "material3" } +androidx-material3 = { module = "androidx.compose.material3:material3", version.ref= "androidx-material3" } kotlin-reflect = { module = "org.jetbrains.kotlin:kotlin-reflect", version.ref = "kotlinReflect" } kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinxSerializationJson" } screengrab = { module = "tools.fastlane:screengrab", version.ref = "screengrab" } @@ -91,7 +105,15 @@ androidx-rules = { group = "androidx.test", name = "rules", version.ref = "rules escl-mock-server = { module = "io.github.chrisimx:escl-mock-server", version.ref = "escl-mock-server"} [plugins] + +kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } +compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } +compose-multiplatform = { id = "org.jetbrains.compose", version.ref = "compose-multiplatform" } +kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } android-application = { id = "com.android.application", version.ref = "agp" } +android-kmp-library = { id = "com.android.kotlin.multiplatform.library", version.ref = "agp" } +kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } + kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } versions = { id = "com.github.ben-manes.versions", version.ref = "versionsPlugin" } diff --git a/iosApp/iosApp.xcodeproj/project.pbxproj b/iosApp/iosApp.xcodeproj/project.pbxproj new file mode 100644 index 00000000..6a909580 --- /dev/null +++ b/iosApp/iosApp.xcodeproj/project.pbxproj @@ -0,0 +1,362 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 56; + objects = { + +/* Begin PBXBuildFile section */ + A93A953B29CC810C00F8E227 /* iosApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = A93A953A29CC810C00F8E227 /* iosApp.swift */; }; + A93A953F29CC810D00F8E227 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A93A953E29CC810D00F8E227 /* Assets.xcassets */; }; + A93A954229CC810D00F8E227 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A93A954129CC810D00F8E227 /* Preview Assets.xcassets */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + A93A953729CC810C00F8E227 /* ScanBridge.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ScanBridge.app; sourceTree = BUILT_PRODUCTS_DIR; }; + A93A953A29CC810C00F8E227 /* iosApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iosApp.swift; sourceTree = ""; }; + A93A953E29CC810D00F8E227 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + A93A954129CC810D00F8E227 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + A93A953429CC810C00F8E227 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + A93A952E29CC810C00F8E227 = { + isa = PBXGroup; + children = ( + A93A953929CC810C00F8E227 /* iosApp */, + A93A953829CC810C00F8E227 /* Products */, + C4127409AE3703430489E7BC /* Frameworks */, + ); + sourceTree = ""; + }; + A93A953829CC810C00F8E227 /* Products */ = { + isa = PBXGroup; + children = ( + A93A953729CC810C00F8E227 /* ScanBridge.app */, + ); + name = Products; + sourceTree = ""; + }; + A93A953929CC810C00F8E227 /* iosApp */ = { + isa = PBXGroup; + children = ( + A93A953A29CC810C00F8E227 /* iosApp.swift */, + A93A953E29CC810D00F8E227 /* Assets.xcassets */, + A93A954029CC810D00F8E227 /* Preview Content */, + ); + path = iosApp; + sourceTree = ""; + }; + A93A954029CC810D00F8E227 /* Preview Content */ = { + isa = PBXGroup; + children = ( + A93A954129CC810D00F8E227 /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; + C4127409AE3703430489E7BC /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + A93A953629CC810C00F8E227 /* iosApp */ = { + isa = PBXNativeTarget; + buildConfigurationList = A93A954529CC810D00F8E227 /* Build configuration list for PBXNativeTarget "iosApp" */; + buildPhases = ( + A9D80A052AAB5CDE006C8738 /* ShellScript */, + A93A953329CC810C00F8E227 /* Sources */, + A93A953429CC810C00F8E227 /* Frameworks */, + A93A953529CC810C00F8E227 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = iosApp; + productName = iosApp; + productReference = A93A953729CC810C00F8E227 /* ScanBridge.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + A93A952F29CC810C00F8E227 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1420; + LastUpgradeCheck = 1420; + TargetAttributes = { + A93A953629CC810C00F8E227 = { + CreatedOnToolsVersion = 14.2; + }; + }; + }; + buildConfigurationList = A93A953229CC810C00F8E227 /* Build configuration list for PBXProject "iosApp" */; + compatibilityVersion = "Xcode 14.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = A93A952E29CC810C00F8E227; + productRefGroup = A93A953829CC810C00F8E227 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + A93A953629CC810C00F8E227 /* iosApp */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + A93A953529CC810C00F8E227 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A93A954229CC810D00F8E227 /* Preview Assets.xcassets in Resources */, + A93A953F29CC810D00F8E227 /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + A9D80A052AAB5CDE006C8738 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"YES\" = \"$OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED\" ]; then\n echo \"Skipping Gradle build task invocation due to OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED environment variable set to \\\"YES\\\"\"\n exit 0\nfi\ncd \"$SRCROOT/..\"\n./gradlew :sharedUI:embedAndSignAppleFrameworkForXcode\n"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + A93A953329CC810C00F8E227 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A93A953B29CC810C00F8E227 /* iosApp.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + A93A954329CC810D00F8E227 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + A93A954429CC810D00F8E227 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + A93A954629CC810D00F8E227 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = "\"iosApp/Preview Content\""; + DEVELOPMENT_TEAM = 3MGF2AU6D9; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = iosApp/Info.plist; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = io.github.chrisimx.scanbridge.iosApp; + PRODUCT_NAME = ScanBridge; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + A93A954729CC810D00F8E227 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = "\"iosApp/Preview Content\""; + DEVELOPMENT_TEAM = 3MGF2AU6D9; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = iosApp/Info.plist; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = io.github.chrisimx.scanbridge.iosApp; + PRODUCT_NAME = ScanBridge; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + A93A953229CC810C00F8E227 /* Build configuration list for PBXProject "iosApp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A93A954329CC810D00F8E227 /* Debug */, + A93A954429CC810D00F8E227 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + A93A954529CC810D00F8E227 /* Build configuration list for PBXNativeTarget "iosApp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A93A954629CC810D00F8E227 /* Debug */, + A93A954729CC810D00F8E227 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = A93A952F29CC810C00F8E227 /* Project object */; +} diff --git a/iosApp/iosApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/iosApp/iosApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..919434a6 --- /dev/null +++ b/iosApp/iosApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/iosApp/iosApp.xcodeproj/project.xcworkspace/xcuserdata/christian.xcuserdatad/UserInterfaceState.xcuserstate b/iosApp/iosApp.xcodeproj/project.xcworkspace/xcuserdata/christian.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 00000000..7a97afe7 Binary files /dev/null and b/iosApp/iosApp.xcodeproj/project.xcworkspace/xcuserdata/christian.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/iosApp/iosApp.xcodeproj/project.xcworkspace/xcuserdata/christian.xcuserdatad/xcschemes/xcschememanagement.plist b/iosApp/iosApp.xcodeproj/project.xcworkspace/xcuserdata/christian.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 00000000..ee3458dd --- /dev/null +++ b/iosApp/iosApp.xcodeproj/project.xcworkspace/xcuserdata/christian.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,5 @@ + + + + + diff --git a/iosApp/iosApp.xcodeproj/xcuserdata/christian.xcuserdatad/xcschemes/iosApp.xcscheme b/iosApp/iosApp.xcodeproj/xcuserdata/christian.xcuserdatad/xcschemes/iosApp.xcscheme new file mode 100644 index 00000000..9c8bccd5 --- /dev/null +++ b/iosApp/iosApp.xcodeproj/xcuserdata/christian.xcuserdatad/xcschemes/iosApp.xcscheme @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iosApp/iosApp.xcodeproj/xcuserdata/christian.xcuserdatad/xcschemes/xcschememanagement.plist b/iosApp/iosApp.xcodeproj/xcuserdata/christian.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 00000000..fa59f97d --- /dev/null +++ b/iosApp/iosApp.xcodeproj/xcuserdata/christian.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + iosApp.xcscheme + + orderHint + 0 + + + + diff --git a/iosApp/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json b/iosApp/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 00000000..eb878970 --- /dev/null +++ b/iosApp/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-20@2x.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-20@2x.png new file mode 100644 index 00000000..41a92ea6 Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-20@2x.png differ diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-20@2x~ipad.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-20@2x~ipad.png new file mode 100644 index 00000000..41a92ea6 Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-20@2x~ipad.png differ diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-20@3x.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-20@3x.png new file mode 100644 index 00000000..ff64c69d Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-20@3x.png differ diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-20~ipad.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-20~ipad.png new file mode 100644 index 00000000..5fb4c436 Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-20~ipad.png differ diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-29.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-29.png new file mode 100644 index 00000000..c7f7f027 Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-29.png differ diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-29@2x.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-29@2x.png new file mode 100644 index 00000000..9068381f Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-29@2x.png differ diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-29@2x~ipad.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-29@2x~ipad.png new file mode 100644 index 00000000..9068381f Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-29@2x~ipad.png differ diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-29@3x.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-29@3x.png new file mode 100644 index 00000000..45522520 Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-29@3x.png differ diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-29~ipad.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-29~ipad.png new file mode 100644 index 00000000..c7f7f027 Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-29~ipad.png differ diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-40@2x.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-40@2x.png new file mode 100644 index 00000000..ddd8c8f1 Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-40@2x.png differ diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-40@2x~ipad.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-40@2x~ipad.png new file mode 100644 index 00000000..ddd8c8f1 Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-40@2x~ipad.png differ diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-40@3x.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-40@3x.png new file mode 100644 index 00000000..761f8213 Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-40@3x.png differ diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-40~ipad.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-40~ipad.png new file mode 100644 index 00000000..41a92ea6 Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-40~ipad.png differ diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-60@2x~car.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-60@2x~car.png new file mode 100644 index 00000000..761f8213 Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-60@2x~car.png differ diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-60@3x~car.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-60@3x~car.png new file mode 100644 index 00000000..276a950e Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-60@3x~car.png differ diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-83.5@2x~ipad.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-83.5@2x~ipad.png new file mode 100644 index 00000000..9e23219b Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-83.5@2x~ipad.png differ diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon@2x.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon@2x.png new file mode 100644 index 00000000..761f8213 Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon@2x.png differ diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon@2x~ipad.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon@2x~ipad.png new file mode 100644 index 00000000..59ac0abc Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon@2x~ipad.png differ diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon@3x.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon@3x.png new file mode 100644 index 00000000..276a950e Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon@3x.png differ diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon~ios-marketing.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon~ios-marketing.png new file mode 100644 index 00000000..ef951ed2 Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon~ios-marketing.png differ diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon~ipad.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon~ipad.png new file mode 100644 index 00000000..1923af1a Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon~ipad.png differ diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..3be3dd8c --- /dev/null +++ b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,130 @@ +{ + "images": [ + { + "filename": "AppIcon@2x.png", + "idiom": "iphone", + "scale": "2x", + "size": "60x60" + }, + { + "filename": "AppIcon@3x.png", + "idiom": "iphone", + "scale": "3x", + "size": "60x60" + }, + { + "filename": "AppIcon~ipad.png", + "idiom": "ipad", + "scale": "1x", + "size": "76x76" + }, + { + "filename": "AppIcon@2x~ipad.png", + "idiom": "ipad", + "scale": "2x", + "size": "76x76" + }, + { + "filename": "AppIcon-83.5@2x~ipad.png", + "idiom": "ipad", + "scale": "2x", + "size": "83.5x83.5" + }, + { + "filename": "AppIcon-40@2x.png", + "idiom": "iphone", + "scale": "2x", + "size": "40x40" + }, + { + "filename": "AppIcon-40@3x.png", + "idiom": "iphone", + "scale": "3x", + "size": "40x40" + }, + { + "filename": "AppIcon-40~ipad.png", + "idiom": "ipad", + "scale": "1x", + "size": "40x40" + }, + { + "filename": "AppIcon-40@2x~ipad.png", + "idiom": "ipad", + "scale": "2x", + "size": "40x40" + }, + { + "filename": "AppIcon-20@2x.png", + "idiom": "iphone", + "scale": "2x", + "size": "20x20" + }, + { + "filename": "AppIcon-20@3x.png", + "idiom": "iphone", + "scale": "3x", + "size": "20x20" + }, + { + "filename": "AppIcon-20~ipad.png", + "idiom": "ipad", + "scale": "1x", + "size": "20x20" + }, + { + "filename": "AppIcon-20@2x~ipad.png", + "idiom": "ipad", + "scale": "2x", + "size": "20x20" + }, + { + "filename": "AppIcon-29.png", + "idiom": "iphone", + "scale": "1x", + "size": "29x29" + }, + { + "filename": "AppIcon-29@2x.png", + "idiom": "iphone", + "scale": "2x", + "size": "29x29" + }, + { + "filename": "AppIcon-29@3x.png", + "idiom": "iphone", + "scale": "3x", + "size": "29x29" + }, + { + "filename": "AppIcon-29~ipad.png", + "idiom": "ipad", + "scale": "1x", + "size": "29x29" + }, + { + "filename": "AppIcon-29@2x~ipad.png", + "idiom": "ipad", + "scale": "2x", + "size": "29x29" + }, + { + "filename": "AppIcon-60@2x~car.png", + "idiom": "car", + "scale": "2x", + "size": "60x60" + }, + { + "filename": "AppIcon-60@3x~car.png", + "idiom": "car", + "scale": "3x", + "size": "60x60" + }, + { + "filename": "AppIcon~ios-marketing.png", + "idiom": "ios-marketing", + "scale": "1x", + "size": "1024x1024" + } + ] +} diff --git a/iosApp/iosApp/Assets.xcassets/Contents.json b/iosApp/iosApp/Assets.xcassets/Contents.json new file mode 100644 index 00000000..73c00596 --- /dev/null +++ b/iosApp/iosApp/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iosApp/iosApp/Info.plist b/iosApp/iosApp/Info.plist new file mode 100644 index 00000000..11845e1d --- /dev/null +++ b/iosApp/iosApp/Info.plist @@ -0,0 +1,8 @@ + + + + + CADisableMinimumFrameDurationOnPhone + + + diff --git a/iosApp/iosApp/Preview Content/Preview Assets.xcassets/Contents.json b/iosApp/iosApp/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 00000000..73c00596 --- /dev/null +++ b/iosApp/iosApp/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iosApp/iosApp/iosApp.swift b/iosApp/iosApp/iosApp.swift new file mode 100644 index 00000000..0e4b3035 --- /dev/null +++ b/iosApp/iosApp/iosApp.swift @@ -0,0 +1,21 @@ +import SwiftUI +import SharedUI + +@main +struct ComposeApp: App { + var body: some Scene { + WindowGroup { + ContentView().ignoresSafeArea(.all) + } + } +} + +struct ContentView: UIViewControllerRepresentable { + func makeUIViewController(context: Context) -> UIViewController { + return MainKt.MainViewController() + } + + func updateUIViewController(_ uiViewController: UIViewController, context: Context) { + // Updates will be handled by Compose + } +} diff --git a/libraries/play-licensing/lvl_library/build.gradle b/libraries/play-licensing/lvl_library/build.gradle index afaf0fa8..5f9aba84 100644 --- a/libraries/play-licensing/lvl_library/build.gradle +++ b/libraries/play-licensing/lvl_library/build.gradle @@ -5,6 +5,7 @@ android { compileSdk 34 defaultConfig { minSdk 4 + targetSdk 34 } buildTypes { release { @@ -15,10 +16,4 @@ android { buildFeatures { aidl true } - lint { - targetSdk 34 - } - testOptions { - targetSdk 34 - } } diff --git a/settings.gradle.kts b/settings.gradle.kts index ed52ce90..0481b86b 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,3 +1,5 @@ +rootProject.name = "ScanBridge" + pluginManagement { repositories { google { @@ -30,7 +32,8 @@ dependencyResolutionManagement { } } -rootProject.name = "ScanBridge" -include(":app") +include(":shared") +include(":androidApp") +include(":desktopApp") include(":lvl_library") project(":lvl_library").projectDir = File(rootDir, "libraries/play-licensing/lvl_library/") diff --git a/shared/.gitignore b/shared/.gitignore new file mode 100644 index 00000000..92e0b0fb --- /dev/null +++ b/shared/.gitignore @@ -0,0 +1,2 @@ +/build +build \ No newline at end of file diff --git a/shared/build.gradle.kts b/shared/build.gradle.kts new file mode 100644 index 00000000..b7fdc16c --- /dev/null +++ b/shared/build.gradle.kts @@ -0,0 +1,69 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget +import org.gradle.kotlin.dsl.withType +import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget + +plugins { + alias(libs.plugins.kotlin.multiplatform) + alias(libs.plugins.compose.compiler) + alias(libs.plugins.compose.multiplatform) + alias(libs.plugins.android.kmp.library) +} + +kotlin { + jvm { + compilerOptions { jvmTarget = JvmTarget.JVM_17 } + } + + android { + namespace = "io.github.chrisimx.scanbridge" + compileSdk = 36 + minSdk = 23 + + /*compilerOptions.configure { + jvmTarget.set( + org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17 + ) + }*/ + } + + + iosArm64() + iosSimulatorArm64() + + sourceSets { + commonMain.dependencies { + api(libs.compose.runtime) + api(libs.compose.ui) + api(libs.compose.foundation) + api(libs.compose.resources) + api(libs.compose.ui.tooling.preview) + api(libs.compose.material3) + //implementation(libs.compose.ui.tooling) + } + + commonTest.dependencies { + implementation(kotlin("test")) + implementation(libs.compose.ui.test) + } + + androidMain.dependencies { + } + + jvmMain.dependencies { + implementation(compose.desktop.currentOs) + } + + } + + targets + .withType() + .matching { it.konanTarget.family.isAppleFamily } + .configureEach { + binaries { + framework { + baseName = "SharedUI" + isStatic = true + } + } + } +} \ No newline at end of file diff --git a/shared/src/commonMain/composeResources/drawable/ic_cyclone.xml b/shared/src/commonMain/composeResources/drawable/ic_cyclone.xml new file mode 100644 index 00000000..f1c45b5a --- /dev/null +++ b/shared/src/commonMain/composeResources/drawable/ic_cyclone.xml @@ -0,0 +1,12 @@ + + + + \ No newline at end of file diff --git a/shared/src/commonMain/composeResources/drawable/ic_dark_mode.xml b/shared/src/commonMain/composeResources/drawable/ic_dark_mode.xml new file mode 100644 index 00000000..0ce2444a --- /dev/null +++ b/shared/src/commonMain/composeResources/drawable/ic_dark_mode.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/shared/src/commonMain/composeResources/drawable/ic_light_mode.xml b/shared/src/commonMain/composeResources/drawable/ic_light_mode.xml new file mode 100644 index 00000000..b7331d3e --- /dev/null +++ b/shared/src/commonMain/composeResources/drawable/ic_light_mode.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/shared/src/commonMain/composeResources/drawable/ic_rotate_right.xml b/shared/src/commonMain/composeResources/drawable/ic_rotate_right.xml new file mode 100644 index 00000000..18106717 --- /dev/null +++ b/shared/src/commonMain/composeResources/drawable/ic_rotate_right.xml @@ -0,0 +1,10 @@ + + + \ No newline at end of file diff --git a/shared/src/commonMain/composeResources/font/IndieFlower-Regular.ttf b/shared/src/commonMain/composeResources/font/IndieFlower-Regular.ttf new file mode 100644 index 00000000..3774ef55 Binary files /dev/null and b/shared/src/commonMain/composeResources/font/IndieFlower-Regular.ttf differ diff --git a/shared/src/commonMain/composeResources/values/strings.xml b/shared/src/commonMain/composeResources/values/strings.xml new file mode 100644 index 00000000..b8d73e48 --- /dev/null +++ b/shared/src/commonMain/composeResources/values/strings.xml @@ -0,0 +1,7 @@ + + Cyclone + Open github + Run + Stop + Theme + \ No newline at end of file diff --git a/shared/src/commonMain/kotlin/io/github/chrisimx/scanbridge/App.kt b/shared/src/commonMain/kotlin/io/github/chrisimx/scanbridge/App.kt new file mode 100644 index 00000000..e726714f --- /dev/null +++ b/shared/src/commonMain/kotlin/io/github/chrisimx/scanbridge/App.kt @@ -0,0 +1,104 @@ +package io.github.chrisimx.scanbridge + +import androidx.compose.animation.core.* +import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.* +import androidx.compose.material3.* +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.rotate +import androidx.compose.ui.graphics.ColorFilter +import androidx.compose.ui.platform.LocalUriHandler +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import scanbridge.sharedui.generated.resources.* +import io.github.chrisimx.scanbridge.theme.AppTheme +import io.github.chrisimx.scanbridge.theme.LocalThemeIsDark +import kotlinx.coroutines.isActive +import org.jetbrains.compose.resources.Font +import org.jetbrains.compose.resources.stringResource +import org.jetbrains.compose.resources.vectorResource + +@Preview +@Composable +fun App( + onThemeChanged: @Composable (isDark: Boolean) -> Unit = {} +) = AppTheme(onThemeChanged) { + Column( + modifier = Modifier + .fillMaxSize() + .windowInsetsPadding(WindowInsets.safeDrawing) + .padding(16.dp), + horizontalAlignment = Alignment.CenterHorizontally + ) { + Text( + text = stringResource(Res.string.cyclone), + fontFamily = FontFamily(Font(Res.font.IndieFlower_Regular)), + style = MaterialTheme.typography.displayLarge + ) + + var isRotating by remember { mutableStateOf(false) } + + val rotate = remember { Animatable(0f) } + val target = 360f + if (isRotating) { + LaunchedEffect(Unit) { + while (isActive) { + val remaining = (target - rotate.value) / target + rotate.animateTo(target, animationSpec = tween((1_000 * remaining).toInt(), easing = LinearEasing)) + rotate.snapTo(0f) + } + } + } + + Image( + modifier = Modifier + .size(250.dp) + .padding(16.dp) + .run { rotate(rotate.value) }, + imageVector = vectorResource(Res.drawable.ic_cyclone), + colorFilter = ColorFilter.tint(MaterialTheme.colorScheme.onSurface), + contentDescription = null + ) + + ElevatedButton( + modifier = Modifier + .padding(horizontal = 8.dp, vertical = 4.dp) + .widthIn(min = 200.dp), + onClick = { isRotating = !isRotating }, + content = { + Icon(vectorResource(Res.drawable.ic_rotate_right), contentDescription = null) + Spacer(Modifier.size(ButtonDefaults.IconSpacing)) + Text( + stringResource(if (isRotating) Res.string.stop else Res.string.run) + ) + } + ) + + var isDark by LocalThemeIsDark.current + val icon = remember(isDark) { + if (isDark) Res.drawable.ic_light_mode + else Res.drawable.ic_dark_mode + } + + ElevatedButton( + modifier = Modifier.padding(horizontal = 8.dp, vertical = 4.dp).widthIn(min = 200.dp), + onClick = { isDark = !isDark }, + content = { + Icon(vectorResource(icon), contentDescription = null) + Spacer(Modifier.size(ButtonDefaults.IconSpacing)) + Text(stringResource(Res.string.theme)) + } + ) + + val uriHandler = LocalUriHandler.current + TextButton( + modifier = Modifier.padding(horizontal = 8.dp, vertical = 4.dp).widthIn(min = 200.dp), + onClick = { uriHandler.openUri("https://github.com/terrakok") }, + ) { + Text(stringResource(Res.string.open_github)) + } + } +} diff --git a/shared/src/commonMain/kotlin/io/github/chrisimx/scanbridge/theme/Color.kt b/shared/src/commonMain/kotlin/io/github/chrisimx/scanbridge/theme/Color.kt new file mode 100644 index 00000000..7c5ad72b --- /dev/null +++ b/shared/src/commonMain/kotlin/io/github/chrisimx/scanbridge/theme/Color.kt @@ -0,0 +1,80 @@ +package io.github.chrisimx.scanbridge.theme + +import androidx.compose.ui.graphics.Color + +//generated by https://materialkolor.com +//Color palette was taken here: https://coolors.co/palette/e63946-f1faee-a8dadc-457b9d-1d3557 + +internal val Seed = Color(0xFF1D3557) + +internal val PrimaryLight = Color(0xFF485F84) +internal val OnPrimaryLight = Color(0xFFFFFFFF) +internal val PrimaryContainerLight = Color(0xFFD5E3FF) +internal val OnPrimaryContainerLight = Color(0xFF30476A) +internal val SecondaryLight = Color(0xFF2B6485) +internal val OnSecondaryLight = Color(0xFFFFFFFF) +internal val SecondaryContainerLight = Color(0xFFC7E7FF) +internal val OnSecondaryContainerLight = Color(0xFF064C6B) +internal val TertiaryLight = Color(0xFF356668) +internal val OnTertiaryLight = Color(0xFFFFFFFF) +internal val TertiaryContainerLight = Color(0xFFB9ECEE) +internal val OnTertiaryContainerLight = Color(0xFF1A4E50) +internal val ErrorLight = Color(0xFFBB152C) +internal val OnErrorLight = Color(0xFFFFFFFF) +internal val ErrorContainerLight = Color(0xFFFFDAD8) +internal val OnErrorContainerLight = Color(0xFF410007) +internal val BackgroundLight = Color(0xFFF9F9F9) +internal val OnBackgroundLight = Color(0xFF1A1C1C) +internal val SurfaceLight = Color(0xFFF9F9F9) +internal val OnSurfaceLight = Color(0xFF1A1C1C) +internal val SurfaceVariantLight = Color(0xFFDCE5D9) +internal val OnSurfaceVariantLight = Color(0xFF404941) +internal val OutlineLight = Color(0xFF717970) +internal val OutlineVariantLight = Color(0xFFC0C9BE) +internal val ScrimLight = Color(0xFF000000) +internal val InverseSurfaceLight = Color(0xFF2F3131) +internal val InverseOnSurfaceLight = Color(0xFFF0F1F1) +internal val InversePrimaryLight = Color(0xFFB0C7F1) +internal val SurfaceDimLight = Color(0xFFDADADA) +internal val SurfaceBrightLight = Color(0xFFF9F9F9) +internal val SurfaceContainerLowestLight = Color(0xFFFFFFFF) +internal val SurfaceContainerLowLight = Color(0xFFF3F3F4) +internal val SurfaceContainerLight = Color(0xFFEEEEEE) +internal val SurfaceContainerHighLight = Color(0xFFE8E8E8) +internal val SurfaceContainerHighestLight = Color(0xFFE2E2E2) + +internal val PrimaryDark = Color(0xFFB0C7F1) +internal val OnPrimaryDark = Color(0xFF183153) +internal val PrimaryContainerDark = Color(0xFF30476A) +internal val OnPrimaryContainerDark = Color(0xFFD5E3FF) +internal val SecondaryDark = Color(0xFF98CDF2) +internal val OnSecondaryDark = Color(0xFF00344C) +internal val SecondaryContainerDark = Color(0xFF064C6B) +internal val OnSecondaryContainerDark = Color(0xFFC7E7FF) +internal val TertiaryDark = Color(0xFF9ECFD1) +internal val OnTertiaryDark = Color(0xFF003739) +internal val TertiaryContainerDark = Color(0xFF1A4E50) +internal val OnTertiaryContainerDark = Color(0xFFB9ECEE) +internal val ErrorDark = Color(0xFFFFB3B1) +internal val OnErrorDark = Color(0xFF680011) +internal val ErrorContainerDark = Color(0xFF92001C) +internal val OnErrorContainerDark = Color(0xFFFFDAD8) +internal val BackgroundDark = Color(0xFF121414) +internal val OnBackgroundDark = Color(0xFFE2E2E2) +internal val SurfaceDark = Color(0xFF121414) +internal val OnSurfaceDark = Color(0xFFE2E2E2) +internal val SurfaceVariantDark = Color(0xFF404941) +internal val OnSurfaceVariantDark = Color(0xFFC0C9BE) +internal val OutlineDark = Color(0xFF8A9389) +internal val OutlineVariantDark = Color(0xFF404941) +internal val ScrimDark = Color(0xFF000000) +internal val InverseSurfaceDark = Color(0xFFE2E2E2) +internal val InverseOnSurfaceDark = Color(0xFF2F3131) +internal val InversePrimaryDark = Color(0xFF485F84) +internal val SurfaceDimDark = Color(0xFF121414) +internal val SurfaceBrightDark = Color(0xFF37393A) +internal val SurfaceContainerLowestDark = Color(0xFF0C0F0F) +internal val SurfaceContainerLowDark = Color(0xFF1A1C1C) +internal val SurfaceContainerDark = Color(0xFF1E2020) +internal val SurfaceContainerHighDark = Color(0xFF282A2B) +internal val SurfaceContainerHighestDark = Color(0xFF333535) diff --git a/shared/src/commonMain/kotlin/io/github/chrisimx/scanbridge/theme/Theme.kt b/shared/src/commonMain/kotlin/io/github/chrisimx/scanbridge/theme/Theme.kt new file mode 100644 index 00000000..9de99dc8 --- /dev/null +++ b/shared/src/commonMain/kotlin/io/github/chrisimx/scanbridge/theme/Theme.kt @@ -0,0 +1,105 @@ +package io.github.chrisimx.scanbridge.theme + +import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.darkColorScheme +import androidx.compose.material3.lightColorScheme +import androidx.compose.runtime.* + +private val LightColorScheme = lightColorScheme( + primary = PrimaryLight, + onPrimary = OnPrimaryLight, + primaryContainer = PrimaryContainerLight, + onPrimaryContainer = OnPrimaryContainerLight, + secondary = SecondaryLight, + onSecondary = OnSecondaryLight, + secondaryContainer = SecondaryContainerLight, + onSecondaryContainer = OnSecondaryContainerLight, + tertiary = TertiaryLight, + onTertiary = OnTertiaryLight, + tertiaryContainer = TertiaryContainerLight, + onTertiaryContainer = OnTertiaryContainerLight, + error = ErrorLight, + onError = OnErrorLight, + errorContainer = ErrorContainerLight, + onErrorContainer = OnErrorContainerLight, + background = BackgroundLight, + onBackground = OnBackgroundLight, + surface = SurfaceLight, + onSurface = OnSurfaceLight, + surfaceVariant = SurfaceVariantLight, + onSurfaceVariant = OnSurfaceVariantLight, + outline = OutlineLight, + outlineVariant = OutlineVariantLight, + scrim = ScrimLight, + inverseSurface = InverseSurfaceLight, + inverseOnSurface = InverseOnSurfaceLight, + inversePrimary = InversePrimaryLight, + surfaceDim = SurfaceDimLight, + surfaceBright = SurfaceBrightLight, + surfaceContainerLowest = SurfaceContainerLowestLight, + surfaceContainerLow = SurfaceContainerLowLight, + surfaceContainer = SurfaceContainerLight, + surfaceContainerHigh = SurfaceContainerHighLight, + surfaceContainerHighest = SurfaceContainerHighestLight, +) + +private val DarkColorScheme = darkColorScheme( + primary = PrimaryDark, + onPrimary = OnPrimaryDark, + primaryContainer = PrimaryContainerDark, + onPrimaryContainer = OnPrimaryContainerDark, + secondary = SecondaryDark, + onSecondary = OnSecondaryDark, + secondaryContainer = SecondaryContainerDark, + onSecondaryContainer = OnSecondaryContainerDark, + tertiary = TertiaryDark, + onTertiary = OnTertiaryDark, + tertiaryContainer = TertiaryContainerDark, + onTertiaryContainer = OnTertiaryContainerDark, + error = ErrorDark, + onError = OnErrorDark, + errorContainer = ErrorContainerDark, + onErrorContainer = OnErrorContainerDark, + background = BackgroundDark, + onBackground = OnBackgroundDark, + surface = SurfaceDark, + onSurface = OnSurfaceDark, + surfaceVariant = SurfaceVariantDark, + onSurfaceVariant = OnSurfaceVariantDark, + outline = OutlineDark, + outlineVariant = OutlineVariantDark, + scrim = ScrimDark, + inverseSurface = InverseSurfaceDark, + inverseOnSurface = InverseOnSurfaceDark, + inversePrimary = InversePrimaryDark, + surfaceDim = SurfaceDimDark, + surfaceBright = SurfaceBrightDark, + surfaceContainerLowest = SurfaceContainerLowestDark, + surfaceContainerLow = SurfaceContainerLowDark, + surfaceContainer = SurfaceContainerDark, + surfaceContainerHigh = SurfaceContainerHighDark, + surfaceContainerHighest = SurfaceContainerHighestDark, +) + +internal val LocalThemeIsDark = compositionLocalOf { mutableStateOf(true) } + +@Composable +internal fun AppTheme( + onThemeChanged: @Composable (isDark: Boolean) -> Unit, + content: @Composable () -> Unit +) { + val systemIsDark = isSystemInDarkTheme() + val isDarkState = remember(systemIsDark) { mutableStateOf(systemIsDark) } + CompositionLocalProvider( + LocalThemeIsDark provides isDarkState + ) { + val isDark by isDarkState + onThemeChanged(!isDark) + MaterialTheme( + colorScheme = if (isDark) DarkColorScheme else LightColorScheme, + content = { Surface(content = content) } + ) + } +} diff --git a/shared/src/iosMain/kotlin/main.kt b/shared/src/iosMain/kotlin/main.kt new file mode 100644 index 00000000..2d86d9b1 --- /dev/null +++ b/shared/src/iosMain/kotlin/main.kt @@ -0,0 +1,22 @@ +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.ui.window.ComposeUIViewController +import io.github.chrisimx.scanbridge.App +import platform.UIKit.UIApplication +import platform.UIKit.UIStatusBarStyleDarkContent +import platform.UIKit.UIStatusBarStyleLightContent +import platform.UIKit.UIViewController +import platform.UIKit.setStatusBarStyle + +fun MainViewController(): UIViewController = ComposeUIViewController { + App(onThemeChanged = { ThemeChanged(it) }) +} + +@Composable +private fun ThemeChanged(isDark: Boolean) { + LaunchedEffect(isDark) { + UIApplication.sharedApplication.setStatusBarStyle( + if (isDark) UIStatusBarStyleDarkContent else UIStatusBarStyleLightContent + ) + } +}