diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/backport/AndroidThreeTenBackport.kt b/app/src/main/java/de/kuschku/quasseldroid/util/backport/AndroidThreeTenBackport.kt index e9a23b6c1683311b2fe2eb1af728a337252ff522..ac57cf4cc0951b8c1e8792933c91953d2db7cb90 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/backport/AndroidThreeTenBackport.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/backport/AndroidThreeTenBackport.kt @@ -21,36 +21,32 @@ package de.kuschku.quasseldroid.util.backport import android.content.Context import org.threeten.bp.zone.TzdbZoneRulesProvider +import org.threeten.bp.zone.ZoneRulesInitializer import org.threeten.bp.zone.ZoneRulesProvider import java.io.IOException -import java.io.InputStream import java.util.concurrent.atomic.AtomicBoolean object AndroidThreeTenBackport { private val initialized = AtomicBoolean() - fun init(context: Context) { - if (initialized.getAndSet(true)) { - return + fun init(context: Context, assetPath: String = "TZDB.dat") { + if (!initialized.getAndSet(true)) { + ZoneRulesInitializer.setInitializer(AndroidThreeTenBackportInitializer(context, assetPath)) } + } - val provider: TzdbZoneRulesProvider - var inputStream: InputStream? = null - try { - inputStream = context.assets.open("TZDB.dat") - provider = TzdbZoneRulesProvider(inputStream) - } catch (e: IOException) { - throw IllegalStateException("TZDB.dat missing from assets.", e) - } finally { - if (inputStream != null) { - try { - inputStream.close() - } catch (ignored: IOException) { - } - + class AndroidThreeTenBackportInitializer( + private val context: Context, + private val assetPath: String + ) : ZoneRulesInitializer() { + override fun initializeProviders() { + try { + ZoneRulesProvider.registerProvider(context.assets.open(assetPath).use { + TzdbZoneRulesProvider(it) + }) + } catch (exception: IOException) { + throw IllegalStateException("$assetPath missing from assets", exception) } } - - ZoneRulesProvider.registerProvider(provider) } } diff --git a/lib/src/main/java/de/kuschku/libquassel/util/compatibility/backport/BackportedSyncFlushDeflaterOutputStream.kt b/lib/src/main/java/de/kuschku/libquassel/util/compatibility/backport/BackportedSyncFlushDeflaterOutputStream.kt index f6081b75549f6e8731e50efbb40192c65ed35c76..8dd110d0c729bd7ad373449c71e1aac65db5d671 100644 --- a/lib/src/main/java/de/kuschku/libquassel/util/compatibility/backport/BackportedSyncFlushDeflaterOutputStream.kt +++ b/lib/src/main/java/de/kuschku/libquassel/util/compatibility/backport/BackportedSyncFlushDeflaterOutputStream.kt @@ -41,9 +41,10 @@ class BackportedSyncFlushDeflaterOutputStream( private fun createSyncFlushDeflater(): Deflater? { val def = Deflater() try { - val f = def.javaClass.getDeclaredField("flushParm") - f.isAccessible = true - f.setInt(def, 2) // Z_SYNC_FLUSH + def.javaClass.getDeclaredField("flushParm").apply { + isAccessible = true + setInt(def, 2) // Z_SYNC_FLUSH + } } catch (e: Exception) { return null }