From 0834a6f1759057dd9d7de5712cf3dd1937e9892e Mon Sep 17 00:00:00 2001 From: Janne Mareike Koschinski <mail@justjanne.de> Date: Mon, 13 Nov 2023 02:51:04 +0100 Subject: [PATCH] wip: progress --- .../chaosdorf/meteroid/MeteroidApplication.kt | 21 ++++++- .../de/chaosdorf/meteroid/sync/SyncManager.kt | 55 +++++++++++++++---- 2 files changed, 64 insertions(+), 12 deletions(-) diff --git a/app/src/main/kotlin/de/chaosdorf/meteroid/MeteroidApplication.kt b/app/src/main/kotlin/de/chaosdorf/meteroid/MeteroidApplication.kt index 1d67c5c..6ae713b 100644 --- a/app/src/main/kotlin/de/chaosdorf/meteroid/MeteroidApplication.kt +++ b/app/src/main/kotlin/de/chaosdorf/meteroid/MeteroidApplication.kt @@ -25,7 +25,26 @@ package de.chaosdorf.meteroid import android.app.Application +import coil.ImageLoader +import coil.ImageLoaderFactory +import coil.disk.DiskCache +import coil.memory.MemoryCache import dagger.hilt.android.HiltAndroidApp @HiltAndroidApp -class MeteroidApplication : Application() +class MeteroidApplication : Application(), ImageLoaderFactory { + override fun newImageLoader() = ImageLoader.Builder(applicationContext) + .memoryCache { + MemoryCache.Builder(applicationContext) + .maxSizePercent(0.25) + .build() + } + .diskCache { + DiskCache.Builder() + .directory(applicationContext.cacheDir.resolve("image_cache")) + .maxSizePercent(0.02) + .build() + } + .respectCacheHeaders(false) + .build() +} diff --git a/app/src/main/kotlin/de/chaosdorf/meteroid/sync/SyncManager.kt b/app/src/main/kotlin/de/chaosdorf/meteroid/sync/SyncManager.kt index cda175b..2387d29 100644 --- a/app/src/main/kotlin/de/chaosdorf/meteroid/sync/SyncManager.kt +++ b/app/src/main/kotlin/de/chaosdorf/meteroid/sync/SyncManager.kt @@ -24,6 +24,7 @@ package de.chaosdorf.meteroid.sync +import android.util.Log import de.chaosdorf.mete.model.MeteApiFactory import de.chaosdorf.meteroid.model.AccountInfo import de.chaosdorf.meteroid.model.Drink @@ -39,34 +40,66 @@ class SyncManager @Inject constructor( private val transactionSyncHandler: TransactionSyncHandler ) { suspend fun sync(server: Server, user: User?) { - userSyncHandler.sync(server) - drinkSyncHandler.sync(server) - if (user != null) { - transactionSyncHandler.sync(Pair(server, user.userId)) + try { + userSyncHandler.sync(server) + drinkSyncHandler.sync(server) + if (user != null) { + transactionSyncHandler.sync(Pair(server, user.userId)) + } + } catch (e: Exception) { + Log.e( + "Sync", + "Could not finish transaction for ${user.name} (${user.userId}) on ${account.server.url}", + e + ) } } suspend fun purchase(account: AccountInfo, drink: Drink) { account.user?.let { user -> val api = factory.newInstance(account.server.url) - api.purchase(user.userId, drink.drinkId) - sync(account.server, user) + try { + api.purchase(user.userId, drink.drinkId) + sync(account.server, user) + } catch (e: Exception) { + Log.e( + "Sync", + "Could not finish transaction for ${user.name} (${user.userId}) on ${account.server.url}", + e + ) + } } } suspend fun deposit(account: AccountInfo, amount: BigDecimal) { account.user?.let { user -> - val api = factory.newInstance(account.server.url) - api.deposit(user.userId, amount) - sync(account.server, user) + try { + val api = factory.newInstance(account.server.url) + api.deposit(user.userId, amount) + sync(account.server, user) + } catch (e: Exception) { + Log.e( + "Sync", + "Could not finish transaction for ${user.name} (${user.userId}) on ${account.server.url}", + e + ) + } } } suspend fun withdraw(account: AccountInfo, amount: BigDecimal) { account.user?.let { user -> val api = factory.newInstance(account.server.url) - api.withdraw(user.userId, amount) - sync(account.server, user) + try { + api.withdraw(user.userId, amount) + sync(account.server, user) + } catch (e: Exception) { + Log.e( + "Sync", + "Could not finish transaction for ${user.name} (${user.userId}) on ${account.server.url}", + e + ) + } } } } -- GitLab