From a23ec5df926c790ce41030df5288ff87c23d0d5e Mon Sep 17 00:00:00 2001 From: "S. Grimault" Date: Sat, 13 Jun 2020 18:25:55 +0200 Subject: [PATCH 1/5] fix: update is available if apk URL is defined --- .../main/java/fr/geonature/sync/sync/PackageInfoViewModel.kt | 2 +- sync/src/main/java/fr/geonature/sync/ui/home/HomeActivity.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sync/src/main/java/fr/geonature/sync/sync/PackageInfoViewModel.kt b/sync/src/main/java/fr/geonature/sync/sync/PackageInfoViewModel.kt index e19357c7..ec509ad0 100644 --- a/sync/src/main/java/fr/geonature/sync/sync/PackageInfoViewModel.kt +++ b/sync/src/main/java/fr/geonature/sync/sync/PackageInfoViewModel.kt @@ -91,7 +91,7 @@ class PackageInfoViewModel(application: Application) : AndroidViewModel(applicat _appSettingsUpdated.postValue(true) } - if (it.versionCode > BuildConfig.VERSION_CODE) { + if (!it.apkUrl.isNullOrEmpty()) { value = it } } diff --git a/sync/src/main/java/fr/geonature/sync/ui/home/HomeActivity.kt b/sync/src/main/java/fr/geonature/sync/ui/home/HomeActivity.kt index bc62ac97..89952a79 100644 --- a/sync/src/main/java/fr/geonature/sync/ui/home/HomeActivity.kt +++ b/sync/src/main/java/fr/geonature/sync/ui/home/HomeActivity.kt @@ -401,7 +401,7 @@ class HomeActivity : AppCompatActivity() { adapter.clear(false) progressBar?.visibility = View.VISIBLE - delay(250) + delay(500) dataSyncViewModel.startSync(appSettings) From a68439e0960b28001def761898542b6d19b04a59 Mon Sep 17 00:00:00 2001 From: "S. Grimault" Date: Sat, 13 Jun 2020 18:29:21 +0200 Subject: [PATCH 2/5] feat: #15 --- sync/README.md | 1 + .../geonature/sync/api/GeoNatureAPIClient.kt | 9 ++- .../fr/geonature/sync/api/GeoNatureService.kt | 1 + .../fr/geonature/sync/auth/AuthManager.kt | 11 ++- .../fr/geonature/sync/settings/AppSettings.kt | 3 + .../io/OnAppSettingsJsonReaderListenerImpl.kt | 1 + .../geonature/sync/sync/DataSyncViewModel.kt | 6 +- .../sync/sync/worker/DataSyncWorker.kt | 73 +++++++++++-------- ...OnAppSettingsJsonReaderListenerImplTest.kt | 1 + .../resources/fixtures/settings_sync.json | 1 + 10 files changed, 66 insertions(+), 41 deletions(-) diff --git a/sync/README.md b/sync/README.md index 3912c262..10b4661b 100644 --- a/sync/README.md +++ b/sync/README.md @@ -35,6 +35,7 @@ Example: | `uh_application_id` | ☐ | GeoNature application ID in UsersHub | | | `observers_list_id` | ☐ | GeoNature selected observer list ID in UsersHub | | | `taxa_list_id` | ☐ | GeoNature selected taxa list ID | | +| `code_area_type` | ☐ | GeoNature selected area type | | | `page_size` | ☐ | Default page size while fetching paginated values | 1000 | | `page_max_retry` | ☐ | Max attempt to fetch data according to given page size | 20 | diff --git a/sync/src/main/java/fr/geonature/sync/api/GeoNatureAPIClient.kt b/sync/src/main/java/fr/geonature/sync/api/GeoNatureAPIClient.kt index adea2a31..c91962f7 100644 --- a/sync/src/main/java/fr/geonature/sync/api/GeoNatureAPIClient.kt +++ b/sync/src/main/java/fr/geonature/sync/api/GeoNatureAPIClient.kt @@ -39,7 +39,7 @@ class GeoNatureAPIClient private constructor( private val taxHubService: TaxHubService init { - val authManager = AuthManager(context) + val authManager = AuthManager.getInstance(context) val loggingInterceptor = HttpLoggingInterceptor().apply { level = HttpLoggingInterceptor.Level.BASIC redactHeader("Authorization") @@ -147,8 +147,13 @@ class GeoNatureAPIClient private constructor( ) } - fun getTaxrefAreas(limit: Int? = null, offset: Int? = null): Call> { + fun getTaxrefAreas( + codeAreaType: String? = null, + limit: Int? = null, + offset: Int? = null + ): Call> { return geoNatureService.getTaxrefAreas( + codeAreaType, limit, offset ) diff --git a/sync/src/main/java/fr/geonature/sync/api/GeoNatureService.kt b/sync/src/main/java/fr/geonature/sync/api/GeoNatureService.kt index 02ccc275..2d8dc794 100644 --- a/sync/src/main/java/fr/geonature/sync/api/GeoNatureService.kt +++ b/sync/src/main/java/fr/geonature/sync/api/GeoNatureService.kt @@ -50,6 +50,7 @@ interface GeoNatureService { @GET("api/synthese/color_taxon") fun getTaxrefAreas( + @Query("code_area_type") codeAreaType: String? = null, @Query("limit") limit: Int? = null, @Query("offset") offset: Int? = null ): Call> diff --git a/sync/src/main/java/fr/geonature/sync/auth/AuthManager.kt b/sync/src/main/java/fr/geonature/sync/auth/AuthManager.kt index b09265d2..107d021e 100644 --- a/sync/src/main/java/fr/geonature/sync/auth/AuthManager.kt +++ b/sync/src/main/java/fr/geonature/sync/auth/AuthManager.kt @@ -1,6 +1,5 @@ package fr.geonature.sync.auth -import android.app.Application import android.content.Context import android.content.SharedPreferences import androidx.lifecycle.LiveData @@ -22,10 +21,10 @@ import java.util.Calendar * * @author [S. Grimault](mailto:sebastien.grimault@gmail.com) */ -class AuthManager(context: Context) { +class AuthManager private constructor(applicationContext: Context) { internal val preferenceManager: SharedPreferences = - PreferenceManager.getDefaultSharedPreferences(context) + PreferenceManager.getDefaultSharedPreferences(applicationContext) private val authLoginJsonReader = AuthLoginJsonReader() private val authLoginJsonWriter = AuthLoginJsonWriter() @@ -120,13 +119,13 @@ class AuthManager(context: Context) { /** Gets the singleton instance of [AuthManager]. * - * @param application The main context context. + * @param applicationContext The main application context. * * @return The singleton instance of [AuthManager]. */ @Suppress("UNCHECKED_CAST") - fun getInstance(application: Application): AuthManager = INSTANCE ?: synchronized(this) { - INSTANCE ?: AuthManager(application).also { INSTANCE = it } + fun getInstance(applicationContext: Context): AuthManager = INSTANCE ?: synchronized(this) { + INSTANCE ?: AuthManager(applicationContext).also { INSTANCE = it } } } } diff --git a/sync/src/main/java/fr/geonature/sync/settings/AppSettings.kt b/sync/src/main/java/fr/geonature/sync/settings/AppSettings.kt index 1019cef8..af2a5406 100644 --- a/sync/src/main/java/fr/geonature/sync/settings/AppSettings.kt +++ b/sync/src/main/java/fr/geonature/sync/settings/AppSettings.kt @@ -15,6 +15,7 @@ data class AppSettings( var applicationId: Int = 0, var usersListId: Int = 0, var taxrefListId: Int = 0, + var codeAreaType: String? = null, var pageSize: Int = DEFAULT_PAGE_SIZE, var pageMaxRetry: Int = DEFAULT_PAGE_MAX_RETRY ) : IAppSettings { @@ -25,6 +26,7 @@ data class AppSettings( source.readInt(), source.readInt(), source.readInt(), + source.readString(), source.readInt(), source.readInt() ) @@ -43,6 +45,7 @@ data class AppSettings( it.writeInt(applicationId) it.writeInt(usersListId) it.writeInt(taxrefListId) + it.writeString(codeAreaType) it.writeInt(pageSize) it.writeInt(pageMaxRetry) } diff --git a/sync/src/main/java/fr/geonature/sync/settings/io/OnAppSettingsJsonReaderListenerImpl.kt b/sync/src/main/java/fr/geonature/sync/settings/io/OnAppSettingsJsonReaderListenerImpl.kt index 878c3717..65c497fd 100644 --- a/sync/src/main/java/fr/geonature/sync/settings/io/OnAppSettingsJsonReaderListenerImpl.kt +++ b/sync/src/main/java/fr/geonature/sync/settings/io/OnAppSettingsJsonReaderListenerImpl.kt @@ -26,6 +26,7 @@ class OnAppSettingsJsonReaderListenerImpl : "uh_application_id" -> appSettings.applicationId = reader.nextInt() "observers_list_id" -> appSettings.usersListId = reader.nextInt() "taxa_list_id" -> appSettings.taxrefListId = reader.nextInt() + "code_area_type" -> appSettings.codeAreaType = reader.nextString() "page_size" -> appSettings.pageSize = reader.nextInt() "page_max_retry" -> appSettings.pageMaxRetry = reader.nextInt() else -> reader.skipValue() diff --git a/sync/src/main/java/fr/geonature/sync/sync/DataSyncViewModel.kt b/sync/src/main/java/fr/geonature/sync/sync/DataSyncViewModel.kt index a7f14291..aa54541b 100644 --- a/sync/src/main/java/fr/geonature/sync/sync/DataSyncViewModel.kt +++ b/sync/src/main/java/fr/geonature/sync/sync/DataSyncViewModel.kt @@ -95,6 +95,10 @@ class DataSyncViewModel(application: Application) : AndroidViewModel(application DataSyncWorker.INPUT_TAXREF_LIST_ID, appSettings.taxrefListId ) + .putString( + DataSyncWorker.INPUT_CODE_AREA_TYPE, + appSettings.codeAreaType + ) .putInt( DataSyncWorker.INPUT_PAGE_SIZE, appSettings.pageSize @@ -112,7 +116,7 @@ class DataSyncViewModel(application: Application) : AndroidViewModel(application val continuation = workManager.beginUniqueWork( DataSyncWorker.DATA_SYNC_WORKER, - ExistingWorkPolicy.KEEP, + ExistingWorkPolicy.REPLACE, dataSyncWorkRequest ) diff --git a/sync/src/main/java/fr/geonature/sync/sync/worker/DataSyncWorker.kt b/sync/src/main/java/fr/geonature/sync/sync/worker/DataSyncWorker.kt index 75c8e27e..fb69d173 100644 --- a/sync/src/main/java/fr/geonature/sync/sync/worker/DataSyncWorker.kt +++ b/sync/src/main/java/fr/geonature/sync/sync/worker/DataSyncWorker.kt @@ -101,6 +101,7 @@ class DataSyncWorker( INPUT_TAXREF_LIST_ID, 0 ), + inputData.getString(INPUT_CODE_AREA_TYPE), inputData.getInt( INPUT_PAGE_SIZE, AppSettings.DEFAULT_PAGE_SIZE @@ -196,12 +197,12 @@ class DataSyncWorker( val users = response.body() ?: return Result.failure() val inputObservers = users.map { - InputObserver( - it.id, - it.lastname, - it.firstname - ) - } + InputObserver( + it.id, + it.lastname, + it.firstname + ) + } .toTypedArray() Log.i( @@ -272,6 +273,7 @@ class DataSyncWorker( private suspend fun syncTaxa( geoNatureServiceClient: GeoNatureAPIClient, listId: Int, + codeAreaType: String?, pageSize: Int, pageMaxRetry: Int ): Result { @@ -284,10 +286,10 @@ class DataSyncWorker( // fetch all taxa from paginated list do { val taxrefResponse = geoNatureServiceClient.getTaxref( - listId, - pageSize, - offset - ) + listId, + pageSize, + offset + ) .awaitResponse() if (checkResponse(taxrefResponse) is Result.Failure) { @@ -351,9 +353,10 @@ class DataSyncWorker( // fetch all taxa metadata from paginated list do { val taxrefAreasResponse = geoNatureServiceClient.getTaxrefAreas( - pageSize, - offset - ) + codeAreaType, + pageSize, + offset + ) .awaitResponse() if (checkResponse(taxrefAreasResponse) is Result.Failure) { @@ -368,6 +371,11 @@ class DataSyncWorker( continue } + Log.i( + TAG, + "found ${taxrefAreas.size} taxa with areas from offset $offset" + ) + val taxonAreas = taxrefAreas.asSequence() .filter { taxrefArea -> validTaxaIds.any { it == taxrefArea.taxrefId } } .map { @@ -388,7 +396,7 @@ class DataSyncWorker( Log.i( TAG, - "taxa with areas to update: ${offset + taxonAreas.size}" + "updating ${taxonAreas.size} taxa with areas from offset $offset" ) offset += pageSize @@ -427,12 +435,12 @@ class DataSyncWorker( .filter { it.nomenclatures.isNotEmpty() } val nomenclatureTypesToUpdate = validNomenclatureTypesToUpdate.map { - NomenclatureType( - it.id, - it.mnemonic, - it.defaultLabel - ) - } + NomenclatureType( + it.id, + it.mnemonic, + it.defaultLabel + ) + } .toList() .toTypedArray() @@ -451,18 +459,18 @@ class DataSyncWorker( ) val nomenclaturesToUpdate = validNomenclatureTypesToUpdate.map { nomenclatureType -> - nomenclatureType.nomenclatures.asSequence() - .filter { it.id > 0 } - .map { - Nomenclature( - it.id, - it.code, - if (TextUtils.isEmpty(it.hierarchy)) nomenclatureType.id.toString() else it.hierarchy!!, - it.defaultLabel, - nomenclatureType.id - ) - } - } + nomenclatureType.nomenclatures.asSequence() + .filter { it.id > 0 } + .map { + Nomenclature( + it.id, + it.code, + if (TextUtils.isEmpty(it.hierarchy)) nomenclatureType.id.toString() else it.hierarchy!!, + it.defaultLabel, + nomenclatureType.id + ) + } + } .flatMap { it.asSequence() } .toList() .toTypedArray() @@ -620,6 +628,7 @@ class DataSyncWorker( const val INPUT_USERS_MENU_ID = "usersMenuId" const val INPUT_TAXREF_LIST_ID = "taxrefListId" + const val INPUT_CODE_AREA_TYPE = "codeAreaType" const val INPUT_PAGE_SIZE = "pageSize" const val INPUT_PAGE_MAX_RETRY = "pageMaxRetry" } diff --git a/sync/src/test/java/fr/geonature/sync/settings/io/OnAppSettingsJsonReaderListenerImplTest.kt b/sync/src/test/java/fr/geonature/sync/settings/io/OnAppSettingsJsonReaderListenerImplTest.kt index 33457797..3352c5bb 100644 --- a/sync/src/test/java/fr/geonature/sync/settings/io/OnAppSettingsJsonReaderListenerImplTest.kt +++ b/sync/src/test/java/fr/geonature/sync/settings/io/OnAppSettingsJsonReaderListenerImplTest.kt @@ -46,6 +46,7 @@ class OnAppSettingsJsonReaderListenerImplTest { 3, 1, 100, + "M1", 100, 5 ), diff --git a/sync/src/test/resources/fixtures/settings_sync.json b/sync/src/test/resources/fixtures/settings_sync.json index d32b83ac..8ceb9003 100644 --- a/sync/src/test/resources/fixtures/settings_sync.json +++ b/sync/src/test/resources/fixtures/settings_sync.json @@ -4,6 +4,7 @@ "uh_application_id": 3, "observers_list_id": 1, "taxa_list_id": 100, + "code_area_type": "M1", "page_size": 100, "page_max_retry": 5 } \ No newline at end of file From f2ce519238813fb5dfef340735ffb8e82f2b1175 Mon Sep 17 00:00:00 2001 From: "S. Grimault" Date: Sat, 13 Jun 2020 18:30:52 +0200 Subject: [PATCH 3/5] fix: https://github.com/PnX-SI/gn_mobile_occtax/issues/4 --- sync/build.gradle | 13 ++-- .../res/drawable/ic_launcher_background.xml | 58 ++++++++-------- .../src/debug/res/mipmap-hdpi/ic_launcher.png | Bin 3227 -> 3375 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 5205 -> 5469 bytes .../src/debug/res/mipmap-mdpi/ic_launcher.png | Bin 2271 -> 2270 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 3264 -> 3426 bytes .../debug/res/mipmap-xhdpi/ic_launcher.png | Bin 4676 -> 4766 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 7342 -> 7667 bytes .../debug/res/mipmap-xxhdpi/ic_launcher.png | Bin 6772 -> 7136 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 11497 -> 12071 bytes .../debug/res/mipmap-xxxhdpi/ic_launcher.png | Bin 9227 -> 9736 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 15834 -> 16735 bytes .../drawable-v24/ic_launcher_foreground.xml | 65 +++++++++--------- .../res/mipmap-anydpi-v26/ic_launcher.xml | 7 +- .../mipmap-anydpi-v26/ic_launcher_round.xml | 7 +- sync/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 2897 -> 3086 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 4837 -> 5155 bytes sync/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 2060 -> 2132 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 3058 -> 3206 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 4202 -> 4340 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 6741 -> 7179 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 6166 -> 6588 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 10630 -> 11297 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 8339 -> 8905 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 14793 -> 15811 bytes sync/src/main/res/values/colors.xml | 7 +- sync/src/pnc/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3023 bytes .../pnc/res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 5086 bytes sync/src/pnc/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2075 bytes .../pnc/res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 3136 bytes sync/src/pnc/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4305 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 7145 bytes .../src/pnc/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 6662 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 11337 bytes .../pnc/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 9017 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 15688 bytes sync/src/pnc/res/values/colors.xml | 9 +++ .../pncDebug/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3294 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 5395 bytes .../pncDebug/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2225 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 3323 bytes .../pncDebug/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4707 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 7602 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 7182 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 12063 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 9776 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 16605 bytes sync/src/pne/res/values/colors.xml | 7 +- sync/src/pnm/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3111 bytes .../pnm/res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 5245 bytes sync/src/pnm/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2136 bytes .../pnm/res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 3284 bytes sync/src/pnm/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4457 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 7296 bytes .../src/pnm/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 6737 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 11562 bytes .../pnm/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 9064 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 16075 bytes sync/src/pnm/res/values/colors.xml | 9 +++ .../pnmDebug/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3386 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 5556 bytes .../pnmDebug/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2268 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 3480 bytes .../pnmDebug/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4864 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 7833 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 7310 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 12362 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 9881 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 17056 bytes sync/src/pnv/res/values/colors.xml | 5 +- 70 files changed, 105 insertions(+), 82 deletions(-) create mode 100644 sync/src/pnc/res/mipmap-hdpi/ic_launcher.png create mode 100644 sync/src/pnc/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 sync/src/pnc/res/mipmap-mdpi/ic_launcher.png create mode 100644 sync/src/pnc/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 sync/src/pnc/res/mipmap-xhdpi/ic_launcher.png create mode 100644 sync/src/pnc/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 sync/src/pnc/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 sync/src/pnc/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 sync/src/pnc/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 sync/src/pnc/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 sync/src/pnc/res/values/colors.xml create mode 100644 sync/src/pncDebug/res/mipmap-hdpi/ic_launcher.png create mode 100644 sync/src/pncDebug/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 sync/src/pncDebug/res/mipmap-mdpi/ic_launcher.png create mode 100644 sync/src/pncDebug/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 sync/src/pncDebug/res/mipmap-xhdpi/ic_launcher.png create mode 100644 sync/src/pncDebug/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 sync/src/pncDebug/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 sync/src/pncDebug/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 sync/src/pncDebug/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 sync/src/pncDebug/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 sync/src/pnm/res/mipmap-hdpi/ic_launcher.png create mode 100644 sync/src/pnm/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 sync/src/pnm/res/mipmap-mdpi/ic_launcher.png create mode 100644 sync/src/pnm/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 sync/src/pnm/res/mipmap-xhdpi/ic_launcher.png create mode 100644 sync/src/pnm/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 sync/src/pnm/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 sync/src/pnm/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 sync/src/pnm/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 sync/src/pnm/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 sync/src/pnm/res/values/colors.xml create mode 100644 sync/src/pnmDebug/res/mipmap-hdpi/ic_launcher.png create mode 100644 sync/src/pnmDebug/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 sync/src/pnmDebug/res/mipmap-mdpi/ic_launcher.png create mode 100644 sync/src/pnmDebug/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 sync/src/pnmDebug/res/mipmap-xhdpi/ic_launcher.png create mode 100644 sync/src/pnmDebug/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 sync/src/pnmDebug/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 sync/src/pnmDebug/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 sync/src/pnmDebug/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 sync/src/pnmDebug/res/mipmap-xxxhdpi/ic_launcher_round.png diff --git a/sync/build.gradle b/sync/build.gradle index a9b8468f..202b31a9 100644 --- a/sync/build.gradle +++ b/sync/build.gradle @@ -43,12 +43,11 @@ android { flavorDimensions "version" productFlavors { - generic { - } - pne { - } - pnv { - } + generic {} + pnc {} + pne {} + pnm {} + pnv {} } testOptions { @@ -72,7 +71,7 @@ dependencies { implementation 'androidx.recyclerview:recyclerview:1.1.0' implementation 'androidx.work:work-runtime:2.3.4' implementation 'androidx.work:work-runtime-ktx:2.3.4' - implementation 'com.google.android.material:material:1.2.0-beta01' + implementation 'com.google.android.material:material:1.3.0-alpha01' implementation 'com.google.code.gson:gson:2.8.5' implementation 'com.squareup.okhttp3:logging-interceptor:3.12.0' implementation 'com.squareup.retrofit2:retrofit:2.6.0' diff --git a/sync/src/debug/res/drawable/ic_launcher_background.xml b/sync/src/debug/res/drawable/ic_launcher_background.xml index e241a3de..b0da98c8 100644 --- a/sync/src/debug/res/drawable/ic_launcher_background.xml +++ b/sync/src/debug/res/drawable/ic_launcher_background.xml @@ -1,31 +1,33 @@ - - - - - - - - - + android:viewportWidth="108" + android:viewportHeight="108"> + + + + + + + + + + diff --git a/sync/src/debug/res/mipmap-hdpi/ic_launcher.png b/sync/src/debug/res/mipmap-hdpi/ic_launcher.png index 45551203d6c38502701cd63a75c26c7e2b7421cb..4e14d885c1df36799ad9542d89bb82f9cbcd097d 100644 GIT binary patch delta 3372 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 JPDHLkV1kU9JYE0* diff --git a/sync/src/debug/res/mipmap-hdpi/ic_launcher_round.png b/sync/src/debug/res/mipmap-hdpi/ic_launcher_round.png index 808440125afc3ef03c23baed1353cbf141f94970..3aba90486d36346884c25d43dda826dd3c5fbdb3 100644 GIT binary patch literal 5469 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 P00000NkvXXu0mjfS8xuR diff --git a/sync/src/debug/res/mipmap-mdpi/ic_launcher.png b/sync/src/debug/res/mipmap-mdpi/ic_launcher.png index ea0d82bf215676ad6b4d909c9b6ca75aa92807a2..4215bb51a9e0bc9dcf783161c993738b0c89d19d 100644 GIT binary patch delta 2258 zcmV;@2rc*D5#AAyB!8tzL_t(|+U;3;P*m3$kJHSgZDKpoKhjB5)MUmueaxr`?EA&? zFfmc7HBsAGCsu7HPOONCfZz+{xhxB~EFhwzf^S|6VpNFM)L1oE0h@`Tq4B{ z!cc=cKQwPB&__=$X?}nF-Y3Sq*Grq{zP{|M@HbxYSb)Z)ov+y%3iZ~IA;T0s1zj`7 z3>jCak1{c8!#v?XOp&F^p~0DmJDQ?UZYao)p2S&aj(H+<(Q(F@JGWSBdcgDx)HAM3N_vS{UD`Na3mM0N1pR8PCjx#hNmFd~wt!y4O4zn<#+{n&=rhIR?wO-Z%u?7&b?8m|2)42;bj|b| zR6uONE90J?0Np3BRTT09dNY>c&hZ22+4yI4ub77ZmVah8D;k%+?MP@)nt$W7^PMF7pOyNnpBs}{K+=!Zm_IF1AumULM&M#YlvU7WI)p89S$GOGb8?ER&WJ1?c zIXWW7qJLwSACJ!8k4N``e6&{Y!auaH;szs6=i4LvxXuVaw7xsWvfLK}$m+TVJ#O__ z1||M5Zd-1me18%?+9<`+4Pu-;z61UD?%~*}3PddZ9p){cj3w(tSh_xl`z!l@QGAdk zAjHqRK^$H(9d*q|aIgQK6S=mIHthfW0CH+_v43vQ2L4EWI`4QL-FLXT4*M?b7tU3k zGb12Dgn)HoNK)lc7ld#$!^$lh%bV}L>Af_nEe=QBfB$K&~ePB8s z_<#H$wClp0NV`MGhHzA{;CAI&)g)kmyeLVEpd<+=(vD>wPFUvy;%PcUDo5y7409L>dwy-@;rvb-cy&dIV=ybF0nKt5Yx?E)w@I%XSklZ)S8;xp5g8{c5# zzGQ@LoQ6MSzK1zkbJ5WB87{UmmrD-2pDGi@P66v^c_J^+ zp#1J=ee(6L-Y)dmdXQgNfZ%nZIDh@sX`c8(nuvC5JHBD=bN$wJgfi=s%fyt%qWnw+)Ja-2 z{cxfFV5h6CQtJHak#Xz<>2g^$$(bU$2YE~K~9$1fQ>C<62l8Z0Dy@1fn zX##m^ssiQbD+B??lO}<@B7av6d0sH5%Ga{K#ybL{Yt|s|@A=3(X+)M;4_#%J1N1oh zuVZNWt_5pK;}Ev_Er=6YJ(H|ON_9F;U-<&jdt;n@K3E^dD%h)nfaM1x1@ek58mNp~ zj@3h~@1>Ra@W1Qa=J4*mZs@A@SiO4<&RjXeT&Dr&TF&G2*I(dl%YQjU?O6?Jvcf4~ z$y2#!h}l zegvAYUlyKGc5W|JTeJdsRe{#~)u<~0R8i*C<_hGe#)}@C=R*wBP|X6?{)~?94$R&8 zM5R3Mjgf7gFpV>Y@QHYyXdIC~~tKiKn} zFfcaF*wjSPe#Y%*p3J~chQB&|g8y3aA+{IoWM!&*A>^V*t7?T;I(?2e#{N?d4|CYFU`kjxIjvGFDxNO94 zMrcP)97`E&$B2m|w1eT70~qmya2kt^{nF@{F~k g{Ydbv{b<|&0A2(Tg8PXf{r~^~07*qoM6N<$f|4?9+yDRo delta 2259 zcmV;^2rT#B5#JGzB!8w!L_t(|+U;2jP*m3$zRQ|K>R8hzqqSyYG)`ixAj?A_2n#|C zqNybnYf>9+TCwOV1dyllSP<8+J_;fQL<|v98+n707_}Ix0R^Q(gCVRqfkcWZ1d~)@ z=j-|J-CcHhZe)p>j%VhZbMM}>_kQ1h|NlS#IhW%ewukLu`+q-dK7SW;4vDKc2gMG~ zVV7bo@O9d-w?eus<$iJ2ZCO&K>$0^CK0c2cFTh^0h6#WvAanLZqw7m!My<1Z24f~N zhQ5fiiB91OEPU%OXP>BM{e45`Dzt10K=Z3> z@u`;Pi^j!E(c-sdXzPF90wy>qG0k&7JT~PbeE(@=6kfu|<>%2^dK_(OnP>?L zMU(e$(dfQ(XtEy5P``d7u1J@BzXHr0m6-EN8k9%QL)Cf{YPEV;eAD&?I*uMg(`)Nc z@3s_ITz@@zG%WT)Yvy5mR$PV>2PrN|UlOjlEmhOFYL_MBBS8Fu60*ei(calJBJqLf z>FmOh-8oq76bPwfAo9}-(0i{JC(0^eWBD2!CF>w{@P~_ipxV_j2+sDhu9-7kOdG`J z(mlv7t3z*ZpN?2xpBk#qJCK?85hC{$Vtv#*e1A{p^gCVGj-~(QoTx+G!3y1Pxn&n% zX6X;kA^@CK7&tqHz`-t|i+je?bZL|)SUHpaJKQL6F>p0@AE|dar=M~iR;5$B11y@ z2?KXB5MUJ~khcn90z%cCB!V4>n??YoO3F6+ZbKF|urkBcMM03huEa|JG`^>Ek%oL! zatZEy^WPzZJNI}E6R=evZxzafgfju#Sbrbd#Z6l>_8_J_uT7O?LGo#Rw|T_E53g)V z#f2-^(A3h7+udK|YetsNSG}2z*p$*?$qNE%VI~O`$V@H$Gp_rkBp??%1 zd&{tVOBO_uFoC=zk`dpg=4_$_7c#{gpcz&xfKsD=wjnpE`j?6i?nc#@*c6wGre7EEuZlHFF)wb|xU2&bzpoCJ>NTP^%LV zvA4j$_ocsA^47oIeFyRbrTCe1Fn|70brq#&>agf{yWzZM5C0~l>ynHkZ^K+i5~b#B zV_Cn=Gy=SXk0Ls`n1}6eb{Gio2}r}|Uv{FQsSPbGPM&-r5XU~K!Sam8H^36Qfs$}|G_NoB#-A=4wh0e=!uS<{4` zJKtiX{9U-bz6ZxE>Y+Gz5--cr@t@AGApJv%f#oBT%XM!xEw8$tJXzj4R?XSPv-21e z3DAnL3K=ATkAXTBwkH)~Wk5PE)?Y_H|iZ3x>}f^(OzVXAAij=b0=9GQjH zIsxIyC;Q2h=ZBXYdYSSw_$2Cp$&6wA`r^;O_T!KY6meZ9EgO(=;G@DZj_2lwnoiL7Y0@h`f`RP;sFNXR1HN*_vjo@Xx{{HlaH5B7YXJtHb`Ln~_zm zw=nHRWj}ecylsM}7TPhs0*E}#u;$kO5Y3nIsgknIN*1u>^W-+70oi885(R4h-Kx8X z^2j+%u#fL2PnPGa(YH)f%nc`iESQj9&Xecn$-vFuJZheQ+$9c&iZ1HzLABMKU+*_0 zPnKV}%XH=RZ~~~R%zr94hZ(Ms%=#mf7ila{k^5Z4o9$ULoz<+Y{HbQKz)i(4$nqf!#Kq5T* zF6Y4NBRhE~_k`mN-A9-a+C*;dpTYzSDK(Z*4i9@~MSog!)7A&=9?&uGHZg+LZR4mA zW5!5ePzd8kyQdDCal~c5e?H@8Zp<4HbB{gwJSzo?SPg!Qvy1CyB)a&1IM~X&nLBl} zg%0aOg=0wsLu5A-)XfAj#0cX?x{tv=DF~kAmYA5o4_!M;l~dclQdlJ htBHOfc-Vfh?SI%blvsp39qIr8002ovPDHLkV1h>yUZDU0 diff --git a/sync/src/debug/res/mipmap-mdpi/ic_launcher_round.png b/sync/src/debug/res/mipmap-mdpi/ic_launcher_round.png index fb6193322c2db279dd669da82741662fbfcf7eb2..77a86525dc7e38344072e153e4dfe2b80362c36a 100644 GIT binary patch delta 3424 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 diff --git a/sync/src/debug/res/mipmap-xhdpi/ic_launcher.png b/sync/src/debug/res/mipmap-xhdpi/ic_launcher.png index 09c4999526b66c04bc6018376b275758c2a940b5..0181be63ea4df85c346405f5aea12bd63ba47c3d 100644 GIT binary patch literal 4766 zcmV;P5@GF$P)(CUjRW82qDxP%=bL+bCa8UlbiQF-#O~fX-ad1p`0dczXGl$IEh7lkFfZW^W>V1zP!@H#? z*r&MkC&U*a@dS0^G-owgHau&{yoWq1+ul+A?(Ca35L4@#Nw0u#T zq@GybznNhDOzHsy|CWujsjnP61TMM`4l{88VD)lLcfLTaKh33qDdaOu0H~%t!UnFp zy?N2vn)RZ|_#fyz@FntRAL1V-0%({lfPBhGP|Oq%@IgLx6v)O8)2{#cuZ`=qkbgWJ z#06u$rZAXD-Gg0;PMf8v7V<{&`bfi2Kb zaTnA#E`qwa5NfuDg3RYFsM)v-8Y=ID`sQV_{vxPCzks@*wn1Hf4k3IPCB6RK5vbiA zPel7emjt-&@uouf&MU)MCJMy=HF)IU*UUwL`lGuk$@1xJsM)jzH1+kMT=`F^NnHgE zk1IgA+!qvcL?HX1IJSwN_6kl*a=KCk=c4~7{L0$6ywAY{r#`=GY z04)S)kXKQE-ca=r>dzmgR!w_AtqSTd9EbX|xuA-gPq$ZmJC^ngjiv$QUvj&a1z7|j zR!<03h0mr?E*szMQWUd=&Fc}0`4a6uq$jA>&Hz=&=j8oRivVUl4(Q1OIBjx;vD