From c03c02f0af7d8728cb5e74b0cffbbc444e19be8e Mon Sep 17 00:00:00 2001 From: Rafael Caetano Date: Fri, 3 Nov 2023 15:45:18 +0000 Subject: [PATCH] Make nightly builds a separate app This allows users to have nightly builds alongside the production builds --- .github/workflows/main.yaml | 8 +- .github/workflows/release-playstore.yaml | 14 +-- .github/workflows/release.yaml | 24 ++-- README.md | 12 +- app/build.gradle.kts | 12 ++ .../java/me/magnum/melonds/di/GitHubModule.kt | 9 -- .../me/magnum/melonds/github/GitHubApi.kt | 3 + .../magnum/melonds/github/GitHubConstants.kt | 5 + .../magnum/melonds/github/dtos/ReleaseDto.kt | 1 + .../services/GitHubUpdateInstallManager.kt | 2 +- .../gitHub/res/xml/pref_general_updates.xml | 12 ++ .../magnum/melonds/di/GitHubNightlyModule.kt | 24 ++++ .../GitHubNightlyUpdatesRepository.kt | 115 ++++++++++++++++++ .../me/magnum/melonds/di/GitHubProdModule.kt | 24 ++++ .../GitHubProdUpdatesRepository.kt} | 20 ++- .../magnum/melonds/domain/model/AppUpdate.kt | 11 -- .../domain/model/appupdate/AppUpdate.kt | 21 ++++ .../domain/repositories/UpdatesRepository.kt | 4 +- .../domain/services/UpdateInstallManager.kt | 2 +- .../melonds/ui/romlist/RomListActivity.kt | 21 +++- .../melonds/ui/romlist/UpdatesViewModel.kt | 5 +- .../fragments/GeneralPreferencesFragment.kt | 1 + app/src/main/res/values/strings.xml | 5 + app/src/main/res/xml/pref_general_updates.xml | 4 + .../nightly/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 5948 bytes .../mipmap-hdpi/ic_launcher_foreground.png | Bin 0 -> 5494 bytes .../nightly/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 3409 bytes .../mipmap-mdpi/ic_launcher_foreground.png | Bin 0 -> 3033 bytes .../nightly/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 8611 bytes .../mipmap-xhdpi/ic_launcher_foreground.png | Bin 0 -> 8334 bytes .../nightly/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 14278 bytes .../mipmap-xxhdpi/ic_launcher_foreground.png | Bin 0 -> 15243 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 21115 bytes .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin 0 -> 23224 bytes app/src/nightly/res/values/strings.xml | 4 + .../playstore/PlayStoreUpdatesRepository.kt | 6 +- .../services/PlayStoreUpdateInstallManager.kt | 2 +- 37 files changed, 313 insertions(+), 58 deletions(-) create mode 100644 app/src/gitHub/java/me/magnum/melonds/github/GitHubConstants.kt create mode 100644 app/src/gitHub/res/xml/pref_general_updates.xml create mode 100644 app/src/gitHubNightly/java/me/magnum/melonds/di/GitHubNightlyModule.kt create mode 100644 app/src/gitHubNightly/java/me/magnum/melonds/github/repositories/GitHubNightlyUpdatesRepository.kt create mode 100644 app/src/gitHubProd/java/me/magnum/melonds/di/GitHubProdModule.kt rename app/src/{gitHub/java/me/magnum/melonds/github/repositories/GitHubUpdatesRepository.kt => gitHubProd/java/me/magnum/melonds/github/repositories/GitHubProdUpdatesRepository.kt} (86%) delete mode 100644 app/src/main/java/me/magnum/melonds/domain/model/AppUpdate.kt create mode 100644 app/src/main/java/me/magnum/melonds/domain/model/appupdate/AppUpdate.kt create mode 100644 app/src/main/res/xml/pref_general_updates.xml create mode 100644 app/src/nightly/res/mipmap-hdpi/ic_launcher.png create mode 100644 app/src/nightly/res/mipmap-hdpi/ic_launcher_foreground.png create mode 100644 app/src/nightly/res/mipmap-mdpi/ic_launcher.png create mode 100644 app/src/nightly/res/mipmap-mdpi/ic_launcher_foreground.png create mode 100644 app/src/nightly/res/mipmap-xhdpi/ic_launcher.png create mode 100644 app/src/nightly/res/mipmap-xhdpi/ic_launcher_foreground.png create mode 100644 app/src/nightly/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 app/src/nightly/res/mipmap-xxhdpi/ic_launcher_foreground.png create mode 100644 app/src/nightly/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 app/src/nightly/res/mipmap-xxxhdpi/ic_launcher_foreground.png create mode 100644 app/src/nightly/res/values/strings.xml diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 17be98b2..4131f4eb 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -51,7 +51,7 @@ jobs: echo "MELONDS_KEY_ALIAS=melonds" >> local.properties echo "MELONDS_KEY_PASSWORD=$MELONDS_KEYSTORE_PASSWORD" >> local.properties chmod +x ./gradlew - ./gradlew :app:assembleGitHubRelease + ./gradlew :app:assembleGitHubNightlyRelease git tag -m "Nightly Release" -f -a nightly-release git push -f origin refs/tags/nightly-release @@ -64,12 +64,12 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} tag: nightly-release name: 'Nightly Build' - body: 'The currently Nightly Build. Whenever new changes are pushed, you can find the latest build here.' - artifacts: app/build/outputs/apk/gitHub/release/app-gitHub-release.apk + body: 'The currently Nightly Build. Whenever new changes are pushed, you can find the latest build here. You can keep this installation alongside your main one.' + artifacts: app/build/outputs/apk/gitHubNightly/release/app-gitHub-nightly-release.apk artifactContentType: application/vnd.android.package-archive - name: Upload Artifact uses: actions/upload-artifact@v3 with: name: melonDS-android - path: app/build/outputs/apk/gitHub/release/app-gitHub-release.apk + path: app/build/outputs/apk/gitHubNightly/release/app-gitHub-nightly-release.apk diff --git a/.github/workflows/release-playstore.yaml b/.github/workflows/release-playstore.yaml index b1107682..9c2e2056 100644 --- a/.github/workflows/release-playstore.yaml +++ b/.github/workflows/release-playstore.yaml @@ -35,7 +35,7 @@ jobs: echo "MELONDS_KEY_ALIAS=melonds-playstore" >> local.properties echo "MELONDS_KEY_PASSWORD=$MELONDS_KEY_PASSWORD" >> local.properties chmod +x ./gradlew - ./gradlew :app:assemblePlayStoreRelease + ./gradlew :app:assemblePlayStoreProdRelease - name: Get Version id: release_params @@ -47,19 +47,19 @@ jobs: serviceAccountJsonPlainText: ${{ secrets.MELONDS_PLAYSTORE_ACCOUNT_JSON }} packageName: me.magnum.melonds releaseName: ${{ steps.release_params.outputs.VERSION }} - releaseFiles: app/build/outputs/apk/playStore/release/app-playStore-release.apk + releaseFiles: app/build/outputs/apk/playStoreProd/release/app-playStore-prod-release.apk track: beta inAppUpdatePriority: 2 status: draft whatsNewDirectory: ./.github/changelog/playStore - mappingFile: app/build/outputs/mapping/playStoreRelease/mapping.txt - debugSymbols: app/build/outputs/native-debug-symbols/playStoreRelease/native-debug-symbols.zip + mappingFile: app/build/outputs/mapping/playStoreProdRelease/mapping.txt + debugSymbols: app/build/outputs/native-debug-symbols/playStoreProdRelease/native-debug-symbols.zip - name: Upload APK, Mapping and Debug Symbols uses: actions/upload-artifact@v3 with: name: playstore-release path: | - app/build/outputs/apk/playStore/release/app-playStore-release.apk - app/build/outputs/mapping/playStoreRelease/mapping.txt - app/build/outputs/native-debug-symbols/playStoreRelease/native-debug-symbols.zip \ No newline at end of file + app/build/outputs/apk/playStoreProd/release/app-playStore-prod-release.apk + app/build/outputs/mapping/playStoreProdRelease/mapping.txt + app/build/outputs/native-debug-symbols/playStoreProdRelease/native-debug-symbols.zip \ No newline at end of file diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 51eb3747..d82b33a4 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -36,7 +36,7 @@ jobs: echo "MELONDS_KEY_ALIAS=melonds" >> local.properties echo "MELONDS_KEY_PASSWORD=$MELONDS_KEYSTORE_PASSWORD" >> local.properties chmod +x ./gradlew - ./gradlew :app:assembleGitHubRelease + ./gradlew :app:assembleGitHubProdRelease - name: Get Tag and Version id: release_params @@ -52,7 +52,7 @@ jobs: tag: ${{ steps.release_params.outputs.TAG }} name: ${{ steps.release_params.outputs.VERSION }} bodyFile: ./.github/changelog/gitHub.md - artifacts: app/build/outputs/apk/gitHub/release/app-gitHub-release.apk + artifacts: app/build/outputs/apk/gitHubProd/release/app-gitHub-prod-release.apk artifactContentType: application/vnd.android.package-archive - name: Upload APK, Mapping and Debug Symbols @@ -60,9 +60,9 @@ jobs: with: name: github-release path: | - app/build/outputs/apk/gitHub/release/app-gitHub-release.apk - app/build/outputs/mapping/gitHubRelease/mapping.txt - app/build/outputs/native-debug-symbols/gitHubRelease/native-debug-symbols.zip + app/build/outputs/apk/gitHubProd/release/app-gitHub-prod-release.apk + app/build/outputs/mapping/gitHubProdRelease/mapping.txt + app/build/outputs/native-debug-symbols/gitHubProdRelease/native-debug-symbols.zip playstore-release: runs-on: ubuntu-latest @@ -93,7 +93,7 @@ jobs: echo "MELONDS_KEY_ALIAS=melonds-playstore" >> local.properties echo "MELONDS_KEY_PASSWORD=$MELONDS_KEY_PASSWORD" >> local.properties chmod +x ./gradlew - ./gradlew :app:assemblePlayStoreRelease + ./gradlew :app:assemblePlayStoreProdRelease - name: Get Version id: release_params @@ -105,19 +105,19 @@ jobs: serviceAccountJsonPlainText: ${{ secrets.MELONDS_PLAYSTORE_ACCOUNT_JSON }} packageName: me.magnum.melonds releaseName: ${{ steps.release_params.outputs.VERSION }} - releaseFiles: app/build/outputs/apk/playStore/release/app-playStore-release.apk + releaseFiles: app/build/outputs/apk/playStoreProd/release/app-playStore-prod-release.apk track: beta inAppUpdatePriority: 2 status: draft whatsNewDirectory: ./.github/changelog/playStore - mappingFile: app/build/outputs/mapping/playStoreRelease/mapping.txt - debugSymbols: app/build/outputs/native-debug-symbols/playStoreRelease/native-debug-symbols.zip + mappingFile: app/build/outputs/mapping/playStoreProdRelease/mapping.txt + debugSymbols: app/build/outputs/native-debug-symbols/playStoreProdRelease/native-debug-symbols.zip - name: Upload APK, Mapping and Debug Symbols uses: actions/upload-artifact@v3 with: name: playstore-release path: | - app/build/outputs/apk/playStore/release/app-playStore-release.apk - app/build/outputs/mapping/playStoreRelease/mapping.txt - app/build/outputs/native-debug-symbols/playStoreRelease/native-debug-symbols.zip \ No newline at end of file + app/build/outputs/apk/playStoreProd/release/app-playStore-prod-release.apk + app/build/outputs/mapping/playStoreProdRelease/mapping.txt + app/build/outputs/native-debug-symbols/playStoreProdRelease/native-debug-symbols.zip \ No newline at end of file diff --git a/README.md b/README.md index bf1683c0..5c41834a 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,12 @@ third-party frontend with the following configuration: * `uri` (preferred) - a string with the [SAF](https://developer.android.com/guide/topics/providers/create-document-provider) URI of the NDS ROM (ZIP files are supported) * `PATH` - a string with the absolute path to the NDS ROM (ZIP files are supported) +# Nightly Builds + +To have access to the latest changes, you can install nightly builds that you can find [here](https://github.com/rafaelvcaetano/melonDS-android/releases/tag/nightly-release). + +Be aware that these builds can contain more bugs than usual and you may need to clear your app data to get it to work properly. + # Building To build the project you will need Android SDK, NDK and CMake. @@ -36,9 +42,9 @@ To build the project you will need Android SDK, NDK and CMake. `git clone --recurse-submodules https://github.com/rafaelvcaetano/melonDS-android.git` 2. Install the Android SDK, NDK and CMake 3. Build with: - 1. Unix: `./gradlew :app:assembleGitHubDebug` - 2. Windows: `gradlew.bat :app:assembleGitHubDebug` -4. The generated APK can be found at `app/gitHub/debug` + 1. Unix: `./gradlew :app:assembleGitHubProdDebug` + 2. Windows: `gradlew.bat :app:assembleGitHubProdDebug` +4. The generated APK can be found at `app/gitHubProd/debug` If you want to create a release build, you will need to modify your `local.properties` file to include the following fields: * `MELONDS_KEYSTORE=` diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 6637177d..65efbf6d 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -63,6 +63,7 @@ android { } flavorDimensions.add("version") + flavorDimensions.add("build") productFlavors { create("playStore") { dimension = "version" @@ -70,8 +71,19 @@ android { } create("gitHub") { dimension = "version" + isDefault = true versionNameSuffix = " GH" } + + create("prod") { + dimension = "build" + isDefault = true + } + create("nightly") { + dimension = "build" + applicationIdSuffix = ".nightly" + versionNameSuffix = " (NIGHTLY)" + } } externalNativeBuild { cmake { diff --git a/app/src/gitHub/java/me/magnum/melonds/di/GitHubModule.kt b/app/src/gitHub/java/me/magnum/melonds/di/GitHubModule.kt index 69d9d23f..3857df64 100644 --- a/app/src/gitHub/java/me/magnum/melonds/di/GitHubModule.kt +++ b/app/src/gitHub/java/me/magnum/melonds/di/GitHubModule.kt @@ -7,10 +7,8 @@ import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.components.SingletonComponent -import me.magnum.melonds.domain.repositories.UpdatesRepository import me.magnum.melonds.domain.services.UpdateInstallManager import me.magnum.melonds.github.GitHubApi -import me.magnum.melonds.github.repositories.GitHubUpdatesRepository import me.magnum.melonds.github.services.GitHubUpdateInstallManager import retrofit2.Retrofit import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory @@ -32,13 +30,6 @@ object GitHubModule { return retrofit.create(GitHubApi::class.java) } - @Provides - @Singleton - fun provideUpdatesRepository(@ApplicationContext context: Context, gitHubApi: GitHubApi): UpdatesRepository { - val gitHubPreferences = context.getSharedPreferences("preferences-github", Context.MODE_PRIVATE) - return GitHubUpdatesRepository(context, gitHubApi, gitHubPreferences) - } - @Provides @Singleton fun provideUpdateInstallManager(@ApplicationContext context: Context): UpdateInstallManager { diff --git a/app/src/gitHub/java/me/magnum/melonds/github/GitHubApi.kt b/app/src/gitHub/java/me/magnum/melonds/github/GitHubApi.kt index d1ee78ed..a42cba70 100644 --- a/app/src/gitHub/java/me/magnum/melonds/github/GitHubApi.kt +++ b/app/src/gitHub/java/me/magnum/melonds/github/GitHubApi.kt @@ -7,4 +7,7 @@ import retrofit2.http.GET interface GitHubApi { @GET("/repos/rafaelvcaetano/melonDS-android/releases/latest") fun getLatestRelease(): Single + + @GET("/repos/rafaelvcaetano/melonDS-android/releases/tags/nightly-release") + fun getLatestNightlyRelease(): Single } \ No newline at end of file diff --git a/app/src/gitHub/java/me/magnum/melonds/github/GitHubConstants.kt b/app/src/gitHub/java/me/magnum/melonds/github/GitHubConstants.kt new file mode 100644 index 00000000..12e9a507 --- /dev/null +++ b/app/src/gitHub/java/me/magnum/melonds/github/GitHubConstants.kt @@ -0,0 +1,5 @@ +package me.magnum.melonds.github + +const val APK_CONTENT_TYPE = "application/vnd.android.package-archive" + +const val PREF_KEY_GITHUB_CHECK_FOR_UPDATES = "github_check_for_updates" \ No newline at end of file diff --git a/app/src/gitHub/java/me/magnum/melonds/github/dtos/ReleaseDto.kt b/app/src/gitHub/java/me/magnum/melonds/github/dtos/ReleaseDto.kt index 16156941..fa54dffb 100644 --- a/app/src/gitHub/java/me/magnum/melonds/github/dtos/ReleaseDto.kt +++ b/app/src/gitHub/java/me/magnum/melonds/github/dtos/ReleaseDto.kt @@ -6,5 +6,6 @@ data class ReleaseDto( @SerializedName("tag_name") val tagName: String, @SerializedName("name") val name: String, @SerializedName("body") val body: String, + @SerializedName("created_at") val createdAt: String, @SerializedName("assets") val assets: List ) \ No newline at end of file diff --git a/app/src/gitHub/java/me/magnum/melonds/github/services/GitHubUpdateInstallManager.kt b/app/src/gitHub/java/me/magnum/melonds/github/services/GitHubUpdateInstallManager.kt index e09da94c..c7da0164 100644 --- a/app/src/gitHub/java/me/magnum/melonds/github/services/GitHubUpdateInstallManager.kt +++ b/app/src/gitHub/java/me/magnum/melonds/github/services/GitHubUpdateInstallManager.kt @@ -10,7 +10,7 @@ import android.net.Uri import androidx.core.content.getSystemService import io.reactivex.Observable import me.magnum.melonds.common.providers.UpdateContentProvider -import me.magnum.melonds.domain.model.AppUpdate +import me.magnum.melonds.domain.model.appupdate.AppUpdate import me.magnum.melonds.domain.model.DownloadProgress import me.magnum.melonds.domain.services.UpdateInstallManager import java.io.File diff --git a/app/src/gitHub/res/xml/pref_general_updates.xml b/app/src/gitHub/res/xml/pref_general_updates.xml new file mode 100644 index 00000000..00cc464a --- /dev/null +++ b/app/src/gitHub/res/xml/pref_general_updates.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/app/src/gitHubNightly/java/me/magnum/melonds/di/GitHubNightlyModule.kt b/app/src/gitHubNightly/java/me/magnum/melonds/di/GitHubNightlyModule.kt new file mode 100644 index 00000000..2201dc8f --- /dev/null +++ b/app/src/gitHubNightly/java/me/magnum/melonds/di/GitHubNightlyModule.kt @@ -0,0 +1,24 @@ +package me.magnum.melonds.di + +import android.content.Context +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.android.qualifiers.ApplicationContext +import dagger.hilt.components.SingletonComponent +import me.magnum.melonds.domain.repositories.UpdatesRepository +import me.magnum.melonds.github.GitHubApi +import me.magnum.melonds.github.repositories.GitHubNightlyUpdatesRepository +import javax.inject.Singleton + +@Module +@InstallIn(SingletonComponent::class) +object GitHubNightlyModule { + + @Provides + @Singleton + fun provideUpdatesRepository(@ApplicationContext context: Context, gitHubApi: GitHubApi): UpdatesRepository { + val gitHubPreferences = context.getSharedPreferences("preferences-github", Context.MODE_PRIVATE) + return GitHubNightlyUpdatesRepository(gitHubApi, gitHubPreferences) + } +} \ No newline at end of file diff --git a/app/src/gitHubNightly/java/me/magnum/melonds/github/repositories/GitHubNightlyUpdatesRepository.kt b/app/src/gitHubNightly/java/me/magnum/melonds/github/repositories/GitHubNightlyUpdatesRepository.kt new file mode 100644 index 00000000..ebaa43ac --- /dev/null +++ b/app/src/gitHubNightly/java/me/magnum/melonds/github/repositories/GitHubNightlyUpdatesRepository.kt @@ -0,0 +1,115 @@ +package me.magnum.melonds.github.repositories + +import android.content.SharedPreferences +import androidx.core.content.edit +import androidx.core.net.toUri +import io.reactivex.Maybe +import io.reactivex.Single +import me.magnum.melonds.domain.model.Version +import me.magnum.melonds.domain.model.appupdate.AppUpdate +import me.magnum.melonds.domain.repositories.UpdatesRepository +import me.magnum.melonds.github.APK_CONTENT_TYPE +import me.magnum.melonds.github.GitHubApi +import me.magnum.melonds.github.PREF_KEY_GITHUB_CHECK_FOR_UPDATES +import me.magnum.melonds.github.dtos.ReleaseDto +import java.time.Duration +import java.time.Instant + +class GitHubNightlyUpdatesRepository(private val api: GitHubApi, private val preferences: SharedPreferences) : UpdatesRepository { + companion object { + private const val KEY_NEXT_CHECK_DATE = "github_updates_nightly_next_check_date" + private const val KEY_LAST_RELEASE_DATE = "github_updates_nightly_last_release_date" + } + + override fun checkNewUpdate(): Maybe { + return shouldCheckUpdates() + .flatMapMaybe { checkUpdates -> + if (checkUpdates) { + api.getLatestNightlyRelease().flatMapMaybe { release -> + if (shouldUpdate(release)) { + val apkBinary = release.assets.firstOrNull { it.contentType == APK_CONTENT_TYPE } + if (apkBinary != null) { + val update = AppUpdate( + AppUpdate.Type.NIGHTLY, + apkBinary.id, + apkBinary.url.toUri(), + Version.fromString(release.tagName), + release.body, + apkBinary.size, + Instant.parse(release.createdAt), + ) + Maybe.just(update) + } else { + Maybe.empty() + } + } else { + Maybe.empty() + } + } + } else { + Maybe.empty() + } + } + } + + override fun skipUpdate(update: AppUpdate) { + scheduleNextUpdate() + } + + override fun notifyUpdateDownloaded(update: AppUpdate) { + // This doesn't mean that the user has actually installed the update, but we have no way to determine that. As such, just assume that the update will be installed and + // store the date of the update + preferences.edit { + putLong(KEY_LAST_RELEASE_DATE, update.updateDate.toEpochMilli()) + } + } + + private fun shouldCheckUpdates(): Single { + return Single.create { emitter -> + val updateCheckEnabled = preferences.getBoolean(PREF_KEY_GITHUB_CHECK_FOR_UPDATES, true) + if (!updateCheckEnabled) { + emitter.onSuccess(false) + return@create + } + + val nextUpdateCheckTime = preferences.getLong(KEY_NEXT_CHECK_DATE, -1) + if (nextUpdateCheckTime == (-1).toLong()) { + emitter.onSuccess(true) + return@create + } + + val now = Instant.now() + val shouldCheckUpdates = now.toEpochMilli() > nextUpdateCheckTime + + emitter.onSuccess(shouldCheckUpdates) + } + } + + private fun scheduleNextUpdate() { + val now = Instant.now() + val nextUpdateDate = now + Duration.ofDays(1) + + preferences.edit { + putLong(KEY_NEXT_CHECK_DATE, nextUpdateDate.toEpochMilli()) + } + } + + private fun shouldUpdate(releaseDto: ReleaseDto): Boolean { + val lastReleaseDate = preferences.getLong(KEY_LAST_RELEASE_DATE, -1) + if (lastReleaseDate == -1L) { + // If there is no last release date, then it's the first time the user is running the app and checking for updates. Ignore this release since we can't check if + // it's actually different from the one the user has installed, and save the release date in the preferences so that we can have a future reference + + val releaseDate = Instant.parse(releaseDto.createdAt) + preferences.edit { + putLong(KEY_LAST_RELEASE_DATE, releaseDate.toEpochMilli()) + } + scheduleNextUpdate() + return false + } + + val thisReleaseDate = Instant.parse(releaseDto.createdAt) + + return thisReleaseDate.toEpochMilli() > lastReleaseDate + } +} \ No newline at end of file diff --git a/app/src/gitHubProd/java/me/magnum/melonds/di/GitHubProdModule.kt b/app/src/gitHubProd/java/me/magnum/melonds/di/GitHubProdModule.kt new file mode 100644 index 00000000..ddd2281b --- /dev/null +++ b/app/src/gitHubProd/java/me/magnum/melonds/di/GitHubProdModule.kt @@ -0,0 +1,24 @@ +package me.magnum.melonds.di + +import android.content.Context +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.android.qualifiers.ApplicationContext +import dagger.hilt.components.SingletonComponent +import me.magnum.melonds.domain.repositories.UpdatesRepository +import me.magnum.melonds.github.GitHubApi +import me.magnum.melonds.github.repositories.GitHubProdUpdatesRepository +import javax.inject.Singleton + +@Module +@InstallIn(SingletonComponent::class) +object GitHubProdModule { + + @Provides + @Singleton + fun provideUpdatesRepository(@ApplicationContext context: Context, gitHubApi: GitHubApi): UpdatesRepository { + val gitHubPreferences = context.getSharedPreferences("preferences-github", Context.MODE_PRIVATE) + return GitHubProdUpdatesRepository(context, gitHubApi, gitHubPreferences) + } +} \ No newline at end of file diff --git a/app/src/gitHub/java/me/magnum/melonds/github/repositories/GitHubUpdatesRepository.kt b/app/src/gitHubProd/java/me/magnum/melonds/github/repositories/GitHubProdUpdatesRepository.kt similarity index 86% rename from app/src/gitHub/java/me/magnum/melonds/github/repositories/GitHubUpdatesRepository.kt rename to app/src/gitHubProd/java/me/magnum/melonds/github/repositories/GitHubProdUpdatesRepository.kt index ff3446d1..8230464a 100644 --- a/app/src/gitHub/java/me/magnum/melonds/github/repositories/GitHubUpdatesRepository.kt +++ b/app/src/gitHubProd/java/me/magnum/melonds/github/repositories/GitHubProdUpdatesRepository.kt @@ -6,17 +6,19 @@ import androidx.core.content.edit import androidx.core.net.toUri import io.reactivex.Maybe import io.reactivex.Single -import me.magnum.melonds.domain.model.AppUpdate +import me.magnum.melonds.domain.model.appupdate.AppUpdate import me.magnum.melonds.domain.model.Version import me.magnum.melonds.domain.repositories.UpdatesRepository import me.magnum.melonds.github.GitHubApi +import me.magnum.melonds.github.PREF_KEY_GITHUB_CHECK_FOR_UPDATES import me.magnum.melonds.github.dtos.ReleaseDto import me.magnum.melonds.utils.PackageManagerCompat import me.magnum.melonds.utils.enumValueOfIgnoreCase +import java.time.Instant import java.util.* import java.util.concurrent.TimeUnit -class GitHubUpdatesRepository(private val context: Context, private val api: GitHubApi, private val preferences: SharedPreferences) : UpdatesRepository { +class GitHubProdUpdatesRepository(private val context: Context, private val api: GitHubApi, private val preferences: SharedPreferences) : UpdatesRepository { companion object { private const val APK_CONTENT_TYPE = "application/vnd.android.package-archive" private const val KEY_SKIP_VERSION = "github_updates_skip_version" @@ -35,11 +37,13 @@ class GitHubUpdatesRepository(private val context: Context, private val api: Git val apkBinary = release.assets.firstOrNull { it.contentType == APK_CONTENT_TYPE } if (apkBinary != null) { val update = AppUpdate( + AppUpdate.Type.PRODUCTION, apkBinary.id, apkBinary.url.toUri(), Version.fromString(release.tagName), release.body, - apkBinary.size + apkBinary.size, + Instant.parse(release.createdAt), ) Maybe.just(update) } else { @@ -61,8 +65,18 @@ class GitHubUpdatesRepository(private val context: Context, private val api: Git } } + override fun notifyUpdateDownloaded(update: AppUpdate) { + // Do nothing + } + private fun shouldCheckUpdates(): Single { return Single.create { emitter -> + val updateCheckEnabled = preferences.getBoolean(PREF_KEY_GITHUB_CHECK_FOR_UPDATES, true) + if (!updateCheckEnabled) { + emitter.onSuccess(false) + return@create + } + val lastCheckUpdateTimestamp = preferences.getLong(KEY_LAST_UPDATE_CHECK, -1) if (lastCheckUpdateTimestamp == (-1).toLong()) { emitter.onSuccess(true) diff --git a/app/src/main/java/me/magnum/melonds/domain/model/AppUpdate.kt b/app/src/main/java/me/magnum/melonds/domain/model/AppUpdate.kt deleted file mode 100644 index 63fa4bd3..00000000 --- a/app/src/main/java/me/magnum/melonds/domain/model/AppUpdate.kt +++ /dev/null @@ -1,11 +0,0 @@ -package me.magnum.melonds.domain.model - -import android.net.Uri - -data class AppUpdate( - val id: Long, - val downloadUri: Uri, - val newVersion: Version, - val description: String, - val binarySize: Long -) \ No newline at end of file diff --git a/app/src/main/java/me/magnum/melonds/domain/model/appupdate/AppUpdate.kt b/app/src/main/java/me/magnum/melonds/domain/model/appupdate/AppUpdate.kt new file mode 100644 index 00000000..8715fdd2 --- /dev/null +++ b/app/src/main/java/me/magnum/melonds/domain/model/appupdate/AppUpdate.kt @@ -0,0 +1,21 @@ +package me.magnum.melonds.domain.model.appupdate + +import android.net.Uri +import me.magnum.melonds.domain.model.Version +import java.time.Instant + +data class AppUpdate( + val type: Type, + val id: Long, + val downloadUri: Uri, + val newVersion: Version, + val description: String, + val binarySize: Long, + val updateDate: Instant, +) { + + enum class Type { + PRODUCTION, + NIGHTLY, + } +} \ No newline at end of file diff --git a/app/src/main/java/me/magnum/melonds/domain/repositories/UpdatesRepository.kt b/app/src/main/java/me/magnum/melonds/domain/repositories/UpdatesRepository.kt index 160d6814..2757b24c 100644 --- a/app/src/main/java/me/magnum/melonds/domain/repositories/UpdatesRepository.kt +++ b/app/src/main/java/me/magnum/melonds/domain/repositories/UpdatesRepository.kt @@ -1,10 +1,10 @@ package me.magnum.melonds.domain.repositories import io.reactivex.Maybe -import io.reactivex.Observable -import me.magnum.melonds.domain.model.AppUpdate +import me.magnum.melonds.domain.model.appupdate.AppUpdate interface UpdatesRepository { fun checkNewUpdate(): Maybe fun skipUpdate(update: AppUpdate) + fun notifyUpdateDownloaded(update: AppUpdate) } \ No newline at end of file diff --git a/app/src/main/java/me/magnum/melonds/domain/services/UpdateInstallManager.kt b/app/src/main/java/me/magnum/melonds/domain/services/UpdateInstallManager.kt index a0c3c5a8..ef280d27 100644 --- a/app/src/main/java/me/magnum/melonds/domain/services/UpdateInstallManager.kt +++ b/app/src/main/java/me/magnum/melonds/domain/services/UpdateInstallManager.kt @@ -1,7 +1,7 @@ package me.magnum.melonds.domain.services import io.reactivex.Observable -import me.magnum.melonds.domain.model.AppUpdate +import me.magnum.melonds.domain.model.appupdate.AppUpdate import me.magnum.melonds.domain.model.DownloadProgress interface UpdateInstallManager { diff --git a/app/src/main/java/me/magnum/melonds/ui/romlist/RomListActivity.kt b/app/src/main/java/me/magnum/melonds/ui/romlist/RomListActivity.kt index 426e7c23..c9e7f85b 100644 --- a/app/src/main/java/me/magnum/melonds/ui/romlist/RomListActivity.kt +++ b/app/src/main/java/me/magnum/melonds/ui/romlist/RomListActivity.kt @@ -27,6 +27,7 @@ import me.magnum.melonds.common.Permission import me.magnum.melonds.common.contracts.DirectoryPickerContract import me.magnum.melonds.databinding.ActivityRomListBinding import me.magnum.melonds.domain.model.* +import me.magnum.melonds.domain.model.appupdate.AppUpdate import me.magnum.melonds.ui.dsiwaremanager.DSiWareManagerActivity import me.magnum.melonds.ui.emulator.EmulatorActivity import me.magnum.melonds.ui.settings.SettingsActivity @@ -98,7 +99,10 @@ class RomListActivity : AppCompatActivity() { } updatesViewModel.getAppUpdate().observe(this) { - showUpdateAvailableDialog(it) + when (it.type) { + AppUpdate.Type.PRODUCTION -> showProdUpdateAvailableDialog(it) + AppUpdate.Type.NIGHTLY -> showNightlyUpdateAvailableDialog(it) + } } updatesViewModel.getDownloadProgress().observe(this) { onDownloadProgressUpdated(it) @@ -199,7 +203,7 @@ class RomListActivity : AppCompatActivity() { romListFragment.setRomSelectedListener { rom -> loadRom(rom) } } - private fun showUpdateAvailableDialog(update: AppUpdate) { + private fun showProdUpdateAvailableDialog(update: AppUpdate) { val message = markwon.toMarkdown(update.description) AlertDialog.Builder(this) @@ -215,6 +219,19 @@ class RomListActivity : AppCompatActivity() { .show() } + private fun showNightlyUpdateAvailableDialog(update: AppUpdate) { + AlertDialog.Builder(this) + .setTitle(getString(R.string.nightly_update_available)) + .setMessage(getString(R.string.nightly_update_available_message)) + .setPositiveButton(R.string.update) { _, _ -> + startUpdateDownload(update) + } + .setNegativeButton(R.string.remind_later_update) { _, _ -> + updatesViewModel.skipUpdate(update) + } + .show() + } + private fun startUpdateDownload(update: AppUpdate) { downloadProgressDialog?.dismiss() downloadProgressDialog = AlertDialog.Builder(this) diff --git a/app/src/main/java/me/magnum/melonds/ui/romlist/UpdatesViewModel.kt b/app/src/main/java/me/magnum/melonds/ui/romlist/UpdatesViewModel.kt index 6f96d92a..a24d72c7 100644 --- a/app/src/main/java/me/magnum/melonds/ui/romlist/UpdatesViewModel.kt +++ b/app/src/main/java/me/magnum/melonds/ui/romlist/UpdatesViewModel.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.ViewModel import dagger.hilt.android.lifecycle.HiltViewModel import io.reactivex.disposables.CompositeDisposable import me.magnum.melonds.common.Schedulers -import me.magnum.melonds.domain.model.AppUpdate +import me.magnum.melonds.domain.model.appupdate.AppUpdate import me.magnum.melonds.domain.model.DownloadProgress import me.magnum.melonds.domain.repositories.UpdatesRepository import me.magnum.melonds.domain.services.UpdateInstallManager @@ -47,6 +47,9 @@ class UpdatesViewModel @Inject constructor( .subscribeOn(schedulers.backgroundThreadScheduler) .subscribe { updateDownloadProgressLiveData.postValue(it) + if (it is DownloadProgress.DownloadComplete) { + updatesRepository.notifyUpdateDownloaded(update) + } } .addTo(disposables) } diff --git a/app/src/main/java/me/magnum/melonds/ui/settings/fragments/GeneralPreferencesFragment.kt b/app/src/main/java/me/magnum/melonds/ui/settings/fragments/GeneralPreferencesFragment.kt index 38714411..e1267d55 100644 --- a/app/src/main/java/me/magnum/melonds/ui/settings/fragments/GeneralPreferencesFragment.kt +++ b/app/src/main/java/me/magnum/melonds/ui/settings/fragments/GeneralPreferencesFragment.kt @@ -24,6 +24,7 @@ class GeneralPreferencesFragment : PreferenceFragmentCompat(), PreferenceFragmen override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { setPreferencesFromResource(R.xml.pref_general, rootKey) + addPreferencesFromResource(R.xml.pref_general_updates) rewindPreference = findPreference("enable_rewind")!! val sustainedPerformancePreference = findPreference("enable_sustained_performance")!! diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 784c9360..0ba1dd97 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -49,7 +49,10 @@ Refresh ROM list Search ROMs… Update available: %1$s + Nightly update available + Do you want to download it now? Skip + Later Downloading update… Starting download… %1$.1fMB/%2$.1fMB @@ -148,6 +151,8 @@ Memory usage above recommended limit Sustained performance mode When enabled, peak performance will be lower but thermal throttling will be less pronounced. + Check for updates + When enabled, the app will periodically check for available updates Icon filtering Max. ROM cache size Clear extracted ROM cache diff --git a/app/src/main/res/xml/pref_general_updates.xml b/app/src/main/res/xml/pref_general_updates.xml new file mode 100644 index 00000000..26928b95 --- /dev/null +++ b/app/src/main/res/xml/pref_general_updates.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/nightly/res/mipmap-hdpi/ic_launcher.png b/app/src/nightly/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..0373e186ad6242e78ce3c7d1d906dd42056e7e6c GIT binary patch literal 5948 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 X0)rh?eyrd4sRSA-50p#M*1`V)9=K7n literal 0 HcmV?d00001 diff --git a/app/src/nightly/res/mipmap-mdpi/ic_launcher.png b/app/src/nightly/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..8705b47a5eb0bf8b136dd45a194edbc2e32e26e3 GIT binary patch literal 3409 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 literal 0 HcmV?d00001 diff --git a/app/src/nightly/res/mipmap-mdpi/ic_launcher_foreground.png b/app/src/nightly/res/mipmap-mdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..7bb6241ec78b2ecbdcc1212753201ac568a37b4f GIT binary patch literal 3033 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 H?(_cu;dEh~ literal 0 HcmV?d00001 diff --git a/app/src/nightly/res/mipmap-xxhdpi/ic_launcher.png b/app/src/nightly/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..e0616af72c0c503845693ab6450098d50ab761b7 GIT binary patch literal 14278 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%0AB23QkQnoKx!k`1lHW<~Tr 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 literal 0 HcmV?d00001 diff --git a/app/src/nightly/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/app/src/nightly/res/mipmap-xxxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..5212003f821678033bc184472bd1a45a51f32129 GIT binary patch literal 23224 zcmeFYGIUEbq~0nxbPtU*NDQ3=s0=wY2tx?M zFmy;aJe&LXzJJ5><>5Gn5Bu1AU+db}%5$9y@lsob^d8+k5C}x7rmCn10^O*%{@wit zxYDgHzzqVK1gj}NH}HjSw)l85OeCUsbQ**`Z2L2$nfyEPDUBX;X!%)_*KeP(41w&3Ydv86Ox#Pb2G zPja6uXarrRs@l5-$sWjF@4oy|L*BV7u(-72&usk{0!W6u_^1aceZQ)2t&0=qr)&P# zt1bYmezmbtqhXF$Ap5t+R8gJGU?MRox8^Pg^n~k{4b^3JOxKHtbCaLqGLFle$*DZ9vb;Q@Jzvkq;Xc163xxxETS(OSAz z<~x~!B0eC{GoFI&)7D^PD&j~=nu~2l#Ru|~!$mKul*|yaW81nf0!gR+RT<`9sk|Wn zH4Z(bSsMgo|N42f{&4q7mx`?4z2R6ol!fw@gqspUG-27meBxu@ab8UE%FElJ_pcTE z$JQ^Q(xkH;ZZE@R;)qMG?q6lgA-P2kT5z)^vd6UFIs$DeuQE=r&C$+cMow~{{8j9T z85xbg&w@Hj>2v{&qhPPlxh#I)v!%y^llaz_y~xdqC#b;B8>XQKLS}JLK`b*s_KK zl@9B~UxShyj&AFDId+Y;I|WcuB_#%zdjF;UfY+({!$gDUBPzIhZeODD|;pK^o;@SgL)-7`LzaHf8|v6Bt8 zj+G1hYcQEC;^X@pps#lX-YW038FDs}h7o?E!mu&OROd%2NnB;by1Kt*>YjxQ-th!? zt=wFb)(*J(M6o8$#dd`aUTRwg%;8bAAf|KBHZdhNaZ*SK>+i!_`Av1@^K?PtmFh+5 zwS;$H#pYZUks+C0LH@WbS|{D>kHE6<%VMk4u`#duBl!3KHkl9YFNX|ORUg#sM28oj z#Q&<<8}+JL-y_{^J74ZRq8=U*_7d5g{IUOMitbzHYo!C_(zq)Mn$=MSt*ht|Yvjio_gp0_!Tb*2$z+19 z28ZB|(VuvIr>Y(9GT&@D!+ps#`@_r1F;~5mfXAJ5DUEVV`FTY_9K#Yg z8prE*!5b`cxhbT!-dT8aLZ(e<#O;i#%BkvmmcsL@PRl1F3R{0CiImQ{`tvI}pp`q< zozH`g19#5i8N=Pw!{pfNko62jS$u%Q5D|RmeWEktNpAuuGjgiPqTI`^PPpJpfxLJ^ z=BZ0sbpykvgGHsNGQrBTG`k{m{I(8<2);H8-SD|n-uv-ygOWD+9XUpgupsu=kEe(b zH$cz+`4i43&Vu8|xGd(Qe0mO#)iPk}A?XAIExtmkWt&baBsZ_Vp1Er_r$p;ix(w!M z=cub!>tX80Zfb_K7Z)5!$`hUU5n5HKaClO3H)aS%4g%SKf>eplk02TOzq=6#W2F{m z+d}FgAAkO~?%}U&*!bypuJO=ZWZ04+%QZ(uQqJS<&e6HorQBsuP&&6r(4`{Fo2!9< zZ>f4r(|-h+X%Rci_pT+S`xDNyZK(%As}b^DwZ()WT2NCV-UNS?3vHrKTShSJ=DAZ~ zDVhO8l}L^KrUo7@q_>|ajI7xkWZ@SXiP90nkX}j!KMt0ck9s^f*gk06%lo1G_`>K}MsqP2gPFHb{(ji-q3XVj+fkWd+p#Kc_h@SdF`be2wRrnjW- z#6|0#wlNaQErPMOdXp~cM$Mjo(DkZj^*2?`Wj|HT-$g09He34N)da34XM%?3#m`$~ z&f^c)OnqKlBCi6b!;p&;CuhfJ6Ns)I{0Uqn#Xcn^Ht`V){^-Ycml{kbpxQXI-M3wp z2*GY&t-~RBIm0Xn0{wm7KlZ*igc|O)cMIz{Q!d{vcJj%1V%elvfSW(oxuwm-=4GTS zU*TjZ{i?Xu;E?D%e$3)rvdLkir2J!Bo2ks!0C1IeN9H`>9DRN+#51bYi5lEy)fKBd zTcA!+bD$WV-nbP{OD7EieFq2h#b$+&a>5_^qm7_5#{%|8AKlae{#$K z1RMUoj2yH5al=7;fS*JD2cRs5^}+ERRX(J#Wr-+PY$pR-rw~)+$$$~U_$Vx&O)xzJ zNDs>Y^zjr`WhWqKIRV zLbmlfSNxFq zR^7%Ep)BjCcy0$urj5yo4|;bF%6 z8rCo3z1$*5A*{2h$|9(5wPyP`@?#7w2xJuF2tCLSB%{&PhXx5j`016QbcAGhN4ZZ& z(tY|lQ)LaEvae}0ZBFqT9QY)5$Y|9lmT*>?M0s-YZ5<{^0lpfHk%>6UcQ?sS> zPf*UwwFmsOp6JU1c7u8!#?J*AH3+seU8#%PpO4C@wq1*7DETHjFlTjQK1R}%Wdsay z^jsFxb*y^^1HBhh>$O%m@P4X1`OfM_|CF?H4|)L`uG8_STs~<6Bb!!aw`-sF%$-?E zOHwO7%Qay;eh$*Mtw<5iu4D#7dwowxK43dDU=Qge13i1gYL-HSB+Ve?Z|}r8??zVT zMoXU^Q{H!pGdh~0_!j6uLeP?M1gr2XU1F+54pTTzg7Pt#v*j#>_~h~I6*j>rE*Bh+S6-~-wlusu;~IA6g-9jE*#Ftn1GmF6S+o3k;Slh%`q z=0sXsSU|4!iSZpi!JTblzvC#8)w+kQs~lNYcnYEH|n?X}HOdW^|~lPB)aA z1;VN3>Y0YC2ZyunCeS8A**}-oc1KUw`EwNy&?8|evO*_A?fP(!TEbPqy2Hf*XeSqsQJ7%cF(41?6hnBQZ7ZIc=J}DVPclV6~l< zU3H^t9hr1CT9MkDa)_Ns^$1_RT*??LPwd9tP1^Zm)~}1$DQ0wGE3k#x$I>=|Z-Dp` z6Pigg7Dc&rCx;p>+Ed}O6@j)TJ?ODN?m0j~tJyc3A%T}n0PcL2V+#%aMPj19J3=p( zPDqs4izB6%_P(72_ewwK@Jc;V;eK;0m}=1$qW;g!DokD2Ha)x#g? zB;;F3c`H6n6Cpvl+Y&Auhb>o~QC1Xqx9|ApjI2OP;*n?FkHzJsD?*2-voXEv4`WmE zrYeSmey$tHoZVWhyVO{#y`VUlRf`&S>|$SQI`m*}oLK!foI>+RgV#o@FAl*TXCy^0 z?JIMw-s#G{Jfzm`$E5T<*brU_KdP9z4Z_zQP^kZt^{oT8aiK7tlJqnsg7 zY>z^pUfMJXEZI=W%0~gl-=w$&T4XzwLw&MVu!O|Yz&jF1<2Uy7upxjkW;+>Cp0FO^ z0){y_>$BB1M4PG(H9Ofm33`AdpqCyCgyo{u`Y2OQT^~ob8-am0QQoqlyz=*=Ya+#q zJK+daR!bd(pN_8s)LVRT`HP}eT$Nt8`Q}ReJ%A{Lzd3;$#DJ&oWAPhvjreiEM*E0{Q7=_FUhPPKVOUm-f$G?C_lq_rumo zvfU~XC$<%_eKWDeJ|3-IA(k`>{D11OrC3|Z8cD#sTM>w6^>PA~V(L#{$$x3&b9FUn zI=p{&n+>&?g5;$??MIKi6pNsdtq(+sBG?@^RFe^iBL5&?;P{zTWHQGD0Z0EKSKKL& zbI+X%BD$w;-5*ZyGD{VPh*qTl4^#p+>9X+_klsvX+`W9SHOCA2HO%q|$<(yd3%Eoa`_;Rg;IafD;UMyH8LA zJyWkhAHx>jeNa<_2FOF&cGZig1&Dz6zp#PnSH~kH)%tijIUF})0K?~a?U&G%CB<#jF@Ri<|6UaZDaes4+s z*0m_W@x&SB^baUY4(o6vnZmLyfl&HA_M57tEtHdypP}Hpj4iY_1l`G=WcY6&w5-yi z-PxcDQllibN>oVJftkQ7Y8tYtoqrAEx-xIphowV()L$l$IJHe_ot-v(ON0z6{X z3^>KTbVPn*`dvT)*i0q`w3n7I60IybZ`6cb=r$Vh4>pCp>?wLa>-1>eN8m%4HK&$L>9lhOx5jB3X^4 zjef(_wwC-4sOAPm5~&v)K7e)rd(kT&!5{6q^V6R;OAwihp%oL?<#Wmpbo7yKk)E3g zW@CY?JYyv%EC*AUj0dxBJ@bOAq>UU&9i3#NU=M!IsUw7aJq)3*oxWfWlL>+|lvvV( zhQj96%)w+C?hQ|lA@pmc^fpUW%Wr2DQw+5?_NI1Zy}~!L7p8+W7{jDqhW=ZUqdS%< zg=pJuJ(XQ+B=Bfit>H%*Ott%7a}XsxF!eN%2{n^s9>oG{3iCa5^0`V+$J~U>YJBy8&;2 zpnbr9A>TtMc3ui^oLZ(*fi_kRhF6!P2du@6JHr2^|5miVQ0=S_BTGq6>mL|)hox)s z-a%Ms-GBc&A_;zn7gB$QrYMDC}}mt|Q0w|Y#_z$)IL>S;r^yqDQn9eZ8p2yUJO z9M5+Mxz=L7=4*F1^zAMD&a88hxRV5u^v%Ez^zWa8x?Ll%wDcL}ACbSD#lapeI-1TK zs>}arrk!X7I!@H-I2P%IlMtAF4n3^Oo~nrDIYV15z0$LbkDGYfa9OvZUMlHNvG)sS zkpu=?!MGB@jU(Uj&WWoBr$^zZ(Em^tulYBKSmUE?d*tWxVd3*1We(A<{D4q0vAnX7Vp{Xw^=typC3hnLAa&L=Ug$E|FdH-6m z6e4MM@Lamn`A}BcEmjD>fxAW_}3BI z^TKhX8;z0DmdUraFjemRYm)ph^*U9l#h8xDl^2njBCMtLS&>qm^jU)O|d)Z-9AN0n>~Urm{q`FMGqte?8z z?lw6YnZAuzFJK*wWMt$_&%t^;d&|%%C+KJy+N{Z&5y{AI3lwx!5ovu`%48yVqXX_s z^-`kr8M;az2v2v!4Q!pVjGCudC0PZc6wfdenHkBQoly=oxLYx@4Wh}M+3lEp2n6s) zl6&e@uAy5&M^{9^eZH_3CVe;HS0tIQ)P%2itCiOJnc!d2c74!bhT zcmn_=dS-@)u5N^Ul0J{gp@fOsd-djBeb{0rUu`RBaRTW_7n~|y4rP%0=XBqj)7$t` z@M0r2(Aah1-95{!==_){C3 zGuzC5Rr@SlIB_qcI31_^c*;dOF`5!83W^$g7&Ez&-j*AI36CV*2{Vi3F^L2OVrS)Qs zBx;W8>!g0)6CX z+hW*g;RkDr>_%5dLi@amhr=K z4I!nMtQ}l$Ovfz~IPV2Xf9_>DD?V$AE;8J!ugmIpr2N&wT@5J^G zOwvmO=wp%ycwOEsjU38$4aph{A2hWYF0+8X-|`Vzyck@2XJ0M#Lobm==XCO{OUerB z{hyC|LzsrOhged2ef{?bws^1a)`z>L>r*9q=YF1@h7cJc#DRWI5Y7HBHRD9gRiv5)Uva=6&n>*`>8tL*5UI7wid0 zN+T9HqR(-Bc6bT1tf%=?6cUbR>dF5I7xw)YAjPsBMQk8rFYaZ$A2vfi?jPF55e4m^ z)4xm@H8~XBcsDZ8j<$EzT|M9P-266J)K%bG1jE)FRGz$vr3zLeVEJF_F3LJ|9X-It z4fzJ_sPXq;5mTwjy6TI!-WSTrN+`nu@v42PpBrOv?6HXcg_EKIUC?{5=Op>JHH}Uw z&4Pwqp=yW{R0aVT+RIxKB7p>)#ZJVi)St*D8`?mh1Bp-)>A?!Fg`6sC>V@?IM8E#k z_K8dG@<7MG#kTt+^VxQ*FCXeO@1S&hX2@5Y4$O5SG^kOtZeG_l`l!J~#2>fLHeN{} zGO0#j5n!e^^N2mP5kgCdt>6_$fNF&0?LiH%Z#O}dfH;pIfS3G3)fQhsJ1SFvD)O@5 zbE;Z_67C$%gX#}M2iQWN15vYA4&}={8+;i^DsXoSI?w4|iXff$!%QWQyKlr*>ZZL)*MJn=D${3id>3 zsj0z$9@y{PfmfjSpHojqT47bDp2^R)7TGztbY5rH$iQ7kgi&hEj}zLm>2?CYoXpSj=cPq4p!Rv*Dbxu;-d5x>B2xz105mzZ$1St(p&_~)yZ&^xu0xz|cBAQGAh zpLQ2WQ>#3?3!T2G^~A?>0w=>yKigKNuDRAPxa${3I5?n|Tz!0@iJX9&L0ut*UJERO z4o5a?5K(e1jMOL@k_)!>^I@?u}UBqq0+I|0%~=Vs1m zu0!AOb`>Y!;94-5C;-1{SlV$;#95lVzsEYs1pf07r7m%631nDz=tCz~v&~F}q zhOFg_h(lTGh;zEJm7YbO4C?Smu9*0PsK%C#PcC7JG(HSrYL~~zF!Zds61_2WVL@Ok zMJqvkzI5~E0>{4)`nrwRaF2d$Dm-5wN)}BjRK-_`M%db)SEnsX5O#X;uhlpHN)lMvC-rlC6dvM^RuKdj0%Cj&Mjo@K7`X4bq6>qx8>)Ec|Xc^Yq6K}uit99n6u zkOBuBB>8Ty9#COfy@8#?4-6&Hh;;*!Bz3v&b*(S@F1hvNrIlfRwhKTnOTP_a?KYsb z-@UF-Bx>M1&YGO6W}AR zC(pXqGXR(y!1vmG_^7lbotxh_AfAvfwYUtlCYg&RkkUWmrI(Ts%dimhwo-#-6r|_; zZ54H&aiPE?yDAfs+s!h{HV-tk`@g0+9C&~e3&_$i`;yBqV5ox(-E##mms>+k^CK2H zmN^C=9!(@DH^))$yBk3>70Oy5U~~j_3G41_3>p-)RwnsehG+h1V3;( zjo5AWswc^2|J;Y(cTsrL9zp~s7%k;1*9livJ?bi+?^c%ts-8Vxu|chf(Xk&t{Fx&M zFv$lM5}aNQ4`{n?CQv+2%W<$N%8{D2A^7gPb2FxD(ZfYbSIHJwy~akehiiT?zL}PP zxO@6iI^E}E^0|gKZ>~!<*);zHmz;}F6St(3k-2*p2j0vzc>?reyw>fWHc)#9+&lWo zB%`CrP`lM0Yj*}LYoXktEDSwt?6~&Mgd86=bM|_sK&{VSw$GgUaP$2;`(mlC8+M6* zi6?%|kK~epnajVI<||lMS9$$*eAy7X(NL90*6#)JZ$AH4t+7&|1exZ)?~;rCHt0kn z+NL{sEJ#R9#N`j^<=~#u*IgqLv77F&Id;hKH^Yt10~37}Pgx+=IJZ@Voa*q`Gm2X~ zmmS4^Zs`tnE%9J{|5`<>Vc#W`_<(UJgH#!=Bi0hZ5YIUM7yH_9HOd4XQRA;bI~`-e(mLWd#N$) zVEmn~f~RTe`VjWlzmNw1EvKZEx8RC-8~lp#9C6#m%Df&p_gZVH=FfR8A4NikHAUg| z%7G2a{C;~2M-8^(C$mL;`3iC!rY$iiQH;nU{Wj@Mm>sc25~=W5MJ(aEa}5En9i0Xj8~J7osKGOJ8ks{d#dziJ+d4l;om-UR}=Fv-GtmkRCGQr2=>+7 zo%TFx*L|Qh$1Joyio7T8i~gZ?5*frUU!ig9U`fx!Ge9!&#A)i!(>ME^(|36DAKb)l zkNn~fH6=HLa&7N9WTznMCKGVKyt?d(QK2pN=}^}V^3gZzj8zq++x!VW?9txrojpJI zPgY*Mg+Y;rFPCLNW&ci1VK4u6eYGX<7k{s>?l51(B_epE6*EcW!?>2Oz+d^UIN#=% zM;*!g=|4&E)|bUJD1#isJ)Zq{Z!HFb^RK zZx1O$76z2W&pCfu%BnZ3(IaimP_@WXJVYNVElp>U**?+#j($OL*O0mm^%xi#K7tHmjXdn<|BJ*lKjMchvE+M5IH0qswj}7y=0=7xS zLUPtqLMk}&7b z1j8^uO9+I&I88-D>QT{G71y&t*GQm%I{ogn*1E+CR~UdwFU{6*kd%?{P>$+AUDA7 zZeMo5@$`v!Z;vfiaxGjT)5kX`V`io&Ba}x6lCyhiS=Y10J_5HOkoXgpAS+XMIJw%E z`wzoy#Bvjv`bv~L)_mfy*t^V?LxB(1S`XXvD6pQAv0W$k1ZNvrW4q)BZ#6>tM*1wM zXuCG&nJW7kw5=5bgPI=TCT^`uU6>!xfu4oubL+Whv_FgHsqiHz@O%7q4aa+5Fe|^U zIvdIkXjuK7ShID&F0%Z`ea^>F402xsg5%eI{*O4Z0T4#YGlKu!<#DYs7pZ=@L`+}S z?6ktYr)wLYdV{(vsAf;GhC%hW&y4>?8=I5N1 zA5AdI=_DJ#2r*ZhqvrU!T4Y#t`)*A}+8Gn!Phfnktda304 z0F3+DVAhL8uTAZVK51oHI{9IF$eAPE!!$&Go!B~M%hF~%KC`RMsgP#x!}90RVg{LL z?|`N#m-0Y*R{n)2f;L*)2~P+$`p96y?u!B}48j_ZK}xC%JLce?MG#O}aqQ zby4++z>zg(dCU<6;-ePC9ZBAIcfC0(E-)vy;~?Z}y81+5t6{45roZjy8S?4{t6N@~ zu_h!f_uXPwCD@OvAH*v;S*oNqfu~j5Lmui?B~DDshf?OQkXNsyo)ltik8C$_T%i+n z%1vyq#V#5cj$|(3On(Euc(Y6mDlLX}mRTy)X=5mF*BQ3_0~&(uq}<=u#oU1U)qGQ+w^0!Z@1}`MsDnd5i=vT>n}$x zjq@lsi~j!j?0JyRx|>IKDPG-Du8@~oiJ$sAZ}g$3SyVc`JA06M;Jb^UaK*FRA@}ds zFj16$fK$?56&xQ=XsO+)8)m71?&+D|if85*2*~D2K9o9e(!QkkewVGvJD{tQsUYT5 z6I+!n>K&j%U^SeQk2Y9HEjKV|{#>5vZ*X@5JaH5MN3#^aXy}}kGPfdWo5dxNNz`+@ z)A6l%1z9-jeJ~cTXbsojej)Oa{k4C{ zt}*OUKjx;(MvQg)d$J`jRtR7Xe8=ZKojU(YH1vs&0^IUIcy@% zIqO7W8l)`FHqJ5q;h9GXADl1kBo7`X*@Bbj?%y~2^7R$-KL_`{V*II+hcUzcswxfv zu9YRC6<$r>w~VfeoZ|{9Eupa#@hL{i?9@YYf?O!jA-uMx4|{({Qp`NhC0tuK=m>f^ z*rh>PSBOsiVIbj0pZNJm55OJRf0I)~!q(=#@~C9wl_(dEryQ?)MfbQ3;^+G5aJ`1M z;qYI~&psq-{!jmXZCju zC*rvid7W_Or0z2%W?y9F4L;a&xC`mS%)}kDMMdXwx|PZ` zzo&kjqG33}SgUpT>?e0+shBt0Q%>*R+$iy@uw5clo;KdQM{lB5V@}m|DbWM)owy(Q z7*|n5zvK!OHr}VvyI$%YUExd;PgiaVYcIsy-1DL6GQ6-&JV*W)U*h(I-k#=td1!>Le$b)V?56lo_GFV<|7}&Q zf+UIVEW%ix#BFk?QN->5U)RHAWaX^YH-&Qxle%z_Ab6F0jba&H!!<@od2h4w*O2S} zXvZp!*M3wlkYk-jH<$UU$ZL`^D6EQ^to*jck=DGgf8BJQ!g}LLwotxaw^6Djp}o|v-FOxCE2cpY4sU) z;FEL4mrnbAX*pw^H}Xc7vwd+iHHC7`BKgunoROt!nuC~BIWWvGtvoaE%M1O?oQ0ie zy`4{8#lE}x22%JtT;+}cb8>JUAJ0f`vU8Ikmi7DW_j}D!WQlnxObY&& ze#VYWJAX8bO|Fgo$T{H5D^Qylq?nohPJuqy*_=p!i)eh`WnTukkR z6c>Bq&LYlU@wJIRIKGKjjuTSBTjs(um%X(vUjX#gI?fit%j%Dor1l($t=oMqRGo5T zjN09}>Gtn>p__zv{;{Su>5F|aZMf;)@sisB{x_P{ z*}Y9%H@Yh@6302*3N%TB z;ZAAY03k)QuiIuKNYxD4!Yt0|VcNVe+T_xIHhiFvmF0-;&I(Y!O4sq*da($AFViv~ z@XlocwEn_a+yQE;?C2%x2V=qk>gUQSlBFV#(0)1;gj{&@TPv<37?dCFv?SVyFN|1v*e!*76nmP0LeDtDOE5@o2*yo2P}OeR30R{I4bwe}5f-gG@-T+X7x* z4U47if5h2s%!oXAS=ToAO%GR2-ucu04nSExasxP}yY)J)`AxMcmX*hRUYLPbV{#d! zjLKGJm8`XPZ>-zdvTdt)MfmXdUYja^T59E!+Ya>Xxa&%vG9B%&6tSFGbNtTfumeb; zfNZ~Tcm7XpJ=joC;!McJ>QQ~b3hbhUgF&j}cjsC<(breHjKsf-$%4|pr}utQ7iaO& za-$x%Rc-aINibF(tF9PKud4W5vw<@;@qO~59yMj(Oq<6J>qX3_a#lSo7eHf+8k~W5*pxuyG;!YL$9~+8mDS1ao9bQGubBe-*DGV>J7{rcS)m9wR31x}gjEY%@>T6- zABxzVJ%&{YIO`;5e$Fs=^kyrUtpAdfmCQ+lZuhs*N1lGHBT+D6>0$?5gS#*9&)|LB zK9!lARn}$7p8fvT)G~_n@z?H5V?TVSjAS_+FBI*ux$?BkYqseq93Sh|7Pr@7bf%sf z$PRfNWGGyn7k&*~wfqlZeJ!c^kB@P(7oX;~>c+`SA`@TF)J9I;)X%Goh=A}!AH(ho zLG+Mw0!5*mXta6(Q@z=f5enmJ&LoK^s0~FFBhqR)+w?3h^tcJz`a(Z?xTdgn$1#Dd z(d}cGc(e!K*_3KD&!pjE$FRZ4TmLm{<1=;1vwNXQIeQOkBpsHL&ckWXU8gucu?S3? zBm;{Qox5}Gbk1kk;r%sW<3AUP4^CSJ}gCCmrFvnux9Oi_F_>FC%eXYSNE$N%*O>j9+o3va2O=D*=}h}b72)!uA$XFnrC zqQZ!#hu;^=+ASBZ_w)A2KzsGn7xhSd9Lr>WJ((b1+9nzOyNP}3`t#BB9ag?r)=0*3 zVTg#+ZKercX&of_{NTlVnX{J{GZ`$w3-)xi9tZ}M`|tIHaWCBQxO=r{k*LecS?m6W z~{k=*8%b7!AB3W6NGFL_@Qx(e9m+M)^D5!=J@IPM=0>8v0DQql;11$te83U9T z{*aB~KX~t_HHu>k$kv@-H{|{F$tU=;_LM6I%4*h)Kh9LzI~pHlePgKCwX-$;L@$bW z8;tMc3H}eCp^i04-lcQ@t|z6L9=HQBRH!eD!H?OcEbn0PxDBbrX8t#1n}nUKmF39& zaC<5P=B3Y-_9r2_e)y24ZLGrKD=Y|*`(Pki91FvPslF^2vcN-G<_FxQeCR!F{+kn0q-rOapneMdr zT8uAXUCYBcABF8_v0nRUod>J3jk9!*_&MDthZ4~*#qP`G zq#&75i<~Zhl?i7ZkXNKI)7|4mH|{hs=)_hXZ*;i3(b0nWEECkDIh`mGy(Oyn<|xdY zk%OO+qq`N#D3E(R_e=8rvoxD$W@?qm3|WnF$tLOs6YU{?{gOERx|VyxZ=3T5)o1HMWyVOb=y9{_)rc7M3PEEUoaNfIr?;)`r~Yg>E?APQ z!FM2TyEUovNl7QkUXbOHY_1Ai-@4;Fm>=FS<@X2m5fh=8)5NqiHufWY zLiX{R>K>V9g!)D}N40P)d)>*!D;xh7=E~1an5|ff@ZfA>k&zmmh&08air9=VZ^Sg& zP;R>L9f`%AZoFO{Hr%ZjpV(D4>1H>%-9Z%^b~cSQpUp!@TtLVD1G#qHb*0Xs=O;{F zU{7{?nCJ~G<YaEU*YE zAdNVLEC0|*A9El!l^+iiyzcJyzQxgt0od46dcRnjXj`TUuffPMVW3w%RzSLg&Fu1m zTw1%|7UQ|~heGaGlay%_t_)Lp*1j0n9xrdlY!B z%qojs4QY$nnRWKgl1aBBEYI!&?YDquC<)rlT|MY2#CfO*q1wgY{e^UrOZ$ zhG2tbD=GRn!nw`ysaa;P?}f+;3AG zv)xO*N}8A5JhJnJPTly`Ew4!TfRx=49i+IjV`Y@)d5z%XIaYi;+gl$c2Nvujo z$JT9vjwDZR`!RT|{P0UmB7Ye(QH>YB+x!^DE45s&ia!cy89${jU_MVEg){ta3CiVy zFxhSqL|>P0I_!>!ad&MT2u%^d={57bs5s7Jq>2|mz$f`m6cUE06)(mVNY_lz`(uE) z4M&)U_85Covb9!UO!7FclKEo_PSW@iFZ3ilLgU|bGc&pKic9lY`$&lbwQ!Bk>25ne zD#&OC&L3@emuj^fv*?k`U2|>+DzH2SPIkzNK4hoe?-0KwYlfk;CiIKJzmUi^hTEXL z@7F2%!}#^Le*i)+Fi+IM$61A0F#md!wDp0zSSJg8pt5?HFfZT0O7P(1>+^7%YX-wn zC(4<|T+v}(2RfCC%<9u{#0~Y%kB<`ck%p^#*8`L}XX1jxQ4;EXRZL4} zusbypA26v431Hz?oxZzV!t9+K!Q@q*EAMV7A4j{tnS3cf4Uqe-Cg1&5uAUx>LAq7R zMAsLgYnr*c%Hj5;YP(;amY_=uos5qBw0vqO)|F=H?z|Tnz3zc8hmSW8e<<{ z&z3Py!J%n{O||zQZF0U7w_H2xeK1^M3+*9v;1#{;PrK1eTUk%BApo7pd9*h;Z$K0n z+*%QD*$WO+^WjLr^hFM6Q{X+oR0ubYx|N1eIYD-CxW0Cuk!5J~(~RI*Z$Myj|D{AU zpl|KPz`veMct@|}><6`7#Yc0y0F(9!>f`@<}zu~IMY~sYWs`4X7=Y>DD+~-D;~ZPOW5@j;M`O1T7w1ZY>zR*w5qG?{r}%%~4YoiU?)G7U?yDJehWjxZ ztscEl_Y`E6Vy>uuIrr_|iq`~%M+!m`3C^VmpTNb26EFkemsZUWSka*~%N>PjzTN1E z5Yksr7do*eMoq)XihZ`lJI|uNQ@v_wqO z{JI^z;zf=Z!eg~tTx*qUd~3hX`2Z?x#^!!Z60Ojldz|6FTZ4A(A!&h7GJvo9J7kCO zxsT+%DXSUb8b>yO5n~ZMkasCzOxOLUn2!;?UfcR={Vija5?NA|rtG=#IHT2Ur{n@r6nF-dKfnljM)pF%_+6qJ+b=vj|0^9j*cW3gIG)*?=rUMw*9kUc$=i%uU9 z_e_{@>Lz)g9>Qt=ip^8z0Rqm)DP;xQ9T+g?l-)8zHrNZ11sX7`*;TrqD3j+wtyV|5U0nqyHC20*%6DG!COvSy~NfGY|1BMS!>B+;LzzosmBkttO5R_)=Mkd0W zIG^@&TY0`Cb$UTqWbnY0vTbk*(oG(+O|<71hYYP^j&=k{KgmR(8kS>m1ODnfwn|@u z;&f_qxI2u4URo2;vc(4mPwK8j#fsg?r#tyY{&Lxv=$d7?A3_#7p>2sHB+6XtoHY}9 zVyTnwlMHJGD=4Uj*thD;WkdCe;3UqCw-Ga@shI>8{)L+dMiXxGJZ>H1_-ep<6}4kP z9h6f3X77WkWp#@SUHj1ww6?VZa(6cs-UwtnmVh0Ig#aT!)|NzbVbnGT&n%RM1pr@Z3U$viM2C>lSSz47of=|k zgdm_P0b?_;$5T!l&#dIy^aeg-$(^|4OxL14R+3@`3s5A(XU3=7hL%O6$6ZC}`P&C} z=$J}v#b)$O0x4J=uv4BxCj~B)$j08!R2pEqf|u_%BI*pY@f%U6$s2!$xsPb<#uy1u zy%707?R@83(^=PbWGthI3PBJ9C?Fs;N-qjGRUj0lNeyFwfCiMHlz@N^5)8eE01~<& zNC-h`F<62S5{ihlp*U0pR0vgyJcpV4davvK2cAz)KL2vcK4+h^&)#b-=@6?LUKZl_ zeKUNbrZF%6DzEz`J@<0L9~95o3HKz1oB7gxkni>2L7gD5JJ|34#Q-U3{U0O*V&2q2 z=-OhYkq1)&2HBAy-N6j@bv~u(ma&blYOzdEh09T%3+6CltKGMsjXli%9Q50fe*|!sRvx~7ny3Vb=F%p5i*+Cy^k8hKmIsgeU)^F7Vpn0BUY3diM z9bE=}XCXi~P>MPjSmcgs90F{#teU)XGsSB%GHm=BM?sfsk&hGcHd0>> zwA09=Mg8fhv2qsvR2|+7ZWcper0W5sG8gUEF&Z=B{jvFduk#3ER?6TYL6yOD>-H#% zW5sFXR;kj4xd3W+ZLENw${kJ-!43VG-P@}=*#qD7;8`GAIjBtOIh?__50c+=ZbkwM zC^t7!vpLKpYlI@T{u{|j8lxKs4Jk6iH}>x?EEODe}7f(xjvQ=!luaWK8&$f z3zp673VjH2u*6o5LL*&3!>>UO7RI5EWb%Ee*#}uPcNt)&nJeDVzW6Ift0rLdNqeH0 z2kSdiIljx*+3QS9nI1ygE?>xbVENwa!n?kpAz1AJeO)e?`V>Bq?zV%PHU*|2g{wgSz5|-~?$? zi=&xoKByrrh!)PXO}dd>Ir}nRMQXBFvVMft5cbWi=hLaHgQ{>%?nLe12XpCps+2*f zMrdc{MC6@+8w_Y66_THMo`68^zZ1^P_%Deem{0+1x<-)B%;wL#DN-1z#CM~co<`(* z5wXXhSk?mzOh+ScPqj|+a(N&nG55StT*zlH3@Ygm1UAh)3Rp|&_hivp+djxOJm2gV zPL2y0fMfl1w=BNo0>9rOW(xVzS?8g&Y639u6e-)qn!}1fi5zLBr}-eq)^J0r@OEBE zPZ3rpxP!)=Sb);b=z0^g!%$bOze5psH%4ct&%rgHc5KPPno@<6VnG}vimY7BAT%n< z-bxf>u?e?i(BGjj@*7LPTWJxfn@31E99^Uoupj{3y^4T@n_J#pPl-NYB0uy?bk+eIv&Se_FSL7zT&s0OwNoJI@s$5eIUwHOaw%TRg}! z$bw2qAL2>PE~Q2fxTRTeB%qTKRw_`82>`>-Oq(K+YdGiW7cnynAK7>VHX;EEtdU|j z;^?tLncxZ1k|t=Y1qWyY3VhyaT_=>todvUKCJ!*mV9gCUY;7eQ*Qf{+pTQO-iGd;N zZ0EiJAw`hq6>%l4G-FiKG*e_V$BDO-8GIrLxxwh>#Ix}oJM@t(K3u1QFHQm&WlF~u z^>>c}hzC2E6XqNfnX)WsaiW+=h7*M3lx*c;_oh#EMRmwO^mQ~n&vp6<8{dEXoze$9 z-*IlBgNESbKCmz9e!oX3b+lF+U>1S<)X{osGC42lNt%x=I*fcuGk7D#iSljS?&iDZ zd#yD)hDeb3E{y#W$KO`Owe{#0V11v>Tns&bX78HOIf?^RUBN&r#qz)+6BGlci_DQw zO$TTXoE@@M+{)vxbJKz+b6Zj;ngW>yO7o{XoCo-u0{hIH0#`^S+zE30^d8622bmRt zG+yD~GVwH@lxudah-rAQ%XyxSG7%}BHH z;;QiL7$h*F8c<_#QTyrwMaWP$62*eJC^EIPOEMfKg4GE6*%O^pfEOzu^9{*H=c?AV z=$;#BJc@PK-t@D@Vi&uy0Cg|gfd>)yr4F{kjI_#~J;#v$9PezURi}S~AUAEiMG#wJ z6WB?ei7cjygY}f6g~iQ2b1Sq|l8NUOmS47Y!1}95Zax+u_=(Xt&vjgBrCqWpLX|KvjjR%8NR;_Q%J$ z1vAc-#jUAzm=t_z8SuTp$N~4fYh?BS*bNVkuLOcp`Z1ya2pZGOIPFY9!eu({Bp{D_ zLQRzqw6w(5SKZ4Z#&g)1p&p0&!VT~J&$)mu9+Tk|;p@>OP#ltRC`>3)SCdY=Bm# z*4aN?JLV&dkgx@Bqg0#&U<5ww;FSft>wzhVMii+gZ9ZCvh5PoXc@JR$-R6`m@(BT5 z#d9y=mO1|VjosAJ9ajYuSv zbNgMvbPS#k0;zf3^5JQ5-e7oup3)_aQDrJGtlZgc+nERa1(2CDW9k6lL`hpER|sG! z7lh|-_QZW7{iRTL=+0F}gtuxZKc(f5C}YN%NRRDbYPjbqKXS+QcSQmBXp0`29`czh zu&dWj2f7yf+)?4tSx()tI>Q}=+F|>-yY27 z-SY)ZudTJ9aL8@H&nhsFl@J<}F=Ck<$uPILu|-DxwJ-paHtBkAtig2VrG9|!-Q@6NckJeJ4zdn-stW;ZJK+jMIZG0?_}|b z6*k98#n+d*g{tU#;%CR>GIpGH>VbS$%A*39ZbQ|3VceK-t4O>9D*3S7BFK)$N@|+7 z2T?T>{rn`JYkfM)jvJ{suUZQ>`WEi_xBTRg(=~pwtNG2b)$t3Zl|G_rTlE`2+G*_W zT04-Pq1J6+w?iYv|5Zy!GU;@JDpxJc8EpRYF z%pMk~UhKNMf$A3CF;Bj1X)`B4(+FAI6d=wuc*)W(rXIllc7S3+l7x~3h?}8_eh*Vl zP+YNxQ)o0CysMxQ9$-n_oz`C-Uj}k8PA=P8k#tVOJuK^mGNRu*>*yympF2`2_qz~j zzyWYX%y6R@Y>5L-yWELx7`XNxKt8Ky7n}ozU<@J%qXS8|>bH~fH(W4(rgVyV)G~pB z$E8N2AGTBK=am(1hu*E=r1aBkuWC32gzF+6Hy>~|b3=P+FJW!akN+LQOWExmFosL| z$Mw(X!}axBtkvdw5qL7T|D=C^=mOhHEwmF}q062(@WHJHr4TD=e2q7L!+`kvglHar zN#Ec_$MjPkQ$GPgM|$lnVnII4_tRO4See+gqW)WVsuD?(lL-r*-hnnkK30knT?I~N z3N|-w?V@+{Te`;UXEIH=|6Kw*xA!hYYKuadS3{=w&V8v-S^-%O{!4rF=*OubJ04tP z2c0<^56*K)FT}&Gk@`BBxlz<5yq;@1F8~$ZK_>eOc#4c@Z<$I|2CYoB`kG%0mOG8{ z#J3xx&mrP}P2YAd0_bKTKUw+9=Y)RnNt| zCEKx(UHR(%ZW-NFSgReeCF;gf5DokK4~bC!E>ND?2eK1-$xq_o)HM}oWqx0x2AyV> zo~;f`$9U$nPik(X+Y|z^EFmcs8q3JbbmS^^zB`8#`lLfJr@iQCMa7$_ZV%$y2}^_p zCi=ekP{C58Oto)1UPd`-arp%o>0^te8#vR)_1?wMO{cG@QVuuK%g$vH1&L`m1F+gD z1`Q+9$_%&+kU8e_Lf_6{cS#$SpaR04G2%&@y*S@BjR9cM?P)XtoP9vok?==E$hpui5%V3nrwXO z;e_xE8M&f)bY9TE?^M+p-qNa&R==wnQ<>!-dnDmmmpk^Z1*1iip%=`AVP|8{(fF38dX%6Rq7cTvcrafHKdQ zs0uQOgdT{_uCWTEP6#hOdB)5$27}`qJdSX_hW48D^nO2Yr=qI*s0@)fK=FGMrEd!r zifZB1nYLLV&~Eq!nVXb5)j<_o&3Vj|Qk34AoQi>+SDPd-UtfuT;3<1(Y=oo0b(Hl` zwj7wSFWOs(#40;3S6ANGmr^@Hq1E{H_Vza<*cM7ClbwkhcUf}}5gogZJBpx@x(gd9 zW#u&l@OWD{g0nFi?dh0Gy?QT|RmI65$*A3~yHFye>Ezf{lK{?^c$(4+dtZLyR#kiy zBMm=pBLB;D=jdKDS35B5-Dl4jY76J6#zWZ-UK*qd!;hsxnu@h5s!HmA#mOpP=N_?| zCfn@{0khTx+`_=O;-3Y4m6|Zz^*1E6@{=x&j>*ujGUHAPTII(5%|A* zT5~pgBDR++_LLZb-lkQFS3$#G^zRbeQHDHi zf^u3N92qr-OBIj8ZR~Dac#wQ$5gCg`ArL+Mz8%LpBbeuHbg0Rhe{;DgFII zRW-a(GcIRy;`@kw5o51~v(mS79e)*rijMFe zXXca3yDJL>@$b=RLag;{BECLgsK!N=GxoGeQ-rkao`IUfmEC|ZIXPymSAf^{b@;jK zRH7QW@-UIX+0Bf~it^C;SD7!?65Q?o_xoSBfUm*!Zi2qUmHktBW_z8Rn^+rH8~*X< F{{Y-foMHd~ literal 0 HcmV?d00001 diff --git a/app/src/nightly/res/values/strings.xml b/app/src/nightly/res/values/strings.xml new file mode 100644 index 00000000..871b5a67 --- /dev/null +++ b/app/src/nightly/res/values/strings.xml @@ -0,0 +1,4 @@ + + + melonDS Nightly + \ No newline at end of file diff --git a/app/src/playStore/java/me/magnum/melonds/playstore/PlayStoreUpdatesRepository.kt b/app/src/playStore/java/me/magnum/melonds/playstore/PlayStoreUpdatesRepository.kt index cf37aade..20436c09 100644 --- a/app/src/playStore/java/me/magnum/melonds/playstore/PlayStoreUpdatesRepository.kt +++ b/app/src/playStore/java/me/magnum/melonds/playstore/PlayStoreUpdatesRepository.kt @@ -1,7 +1,7 @@ package me.magnum.melonds.playstore import io.reactivex.Maybe -import me.magnum.melonds.domain.model.AppUpdate +import me.magnum.melonds.domain.model.appupdate.AppUpdate import me.magnum.melonds.domain.repositories.UpdatesRepository class PlayStoreUpdatesRepository : UpdatesRepository { @@ -12,4 +12,8 @@ class PlayStoreUpdatesRepository : UpdatesRepository { override fun skipUpdate(update: AppUpdate) { // Do nothing. Update checking not supported in the Play Store version } + + override fun notifyUpdateDownloaded(update: AppUpdate) { + // Do nothing + } } \ No newline at end of file diff --git a/app/src/playStore/java/me/magnum/melonds/services/PlayStoreUpdateInstallManager.kt b/app/src/playStore/java/me/magnum/melonds/services/PlayStoreUpdateInstallManager.kt index 5f73daac..f9c27fee 100644 --- a/app/src/playStore/java/me/magnum/melonds/services/PlayStoreUpdateInstallManager.kt +++ b/app/src/playStore/java/me/magnum/melonds/services/PlayStoreUpdateInstallManager.kt @@ -1,8 +1,8 @@ package me.magnum.melonds.services import io.reactivex.Observable -import me.magnum.melonds.domain.model.AppUpdate import me.magnum.melonds.domain.model.DownloadProgress +import me.magnum.melonds.domain.model.appupdate.AppUpdate import me.magnum.melonds.domain.services.UpdateInstallManager class PlayStoreUpdateInstallManager : UpdateInstallManager {