Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit 6c7f73e2 authored by Rafael Tonholo's avatar Rafael Tonholo
Browse files

feat(resources): add ResourceManager enabling usage of string resources within...

feat(resources): add ResourceManager enabling usage of string resources within ViewModels without directly requiring android's context
parent a5219508
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -2,11 +2,14 @@ package app.k9mail.core.android.common

import app.k9mail.core.android.common.camera.cameraModule
import app.k9mail.core.android.common.contact.contactModule
import net.thunderbird.core.android.common.resources.resourcesAndroidModule
import net.thunderbird.core.common.coreCommonModule
import org.koin.core.module.Module
import org.koin.dsl.module

val coreCommonAndroidModule: Module = module {
    includes(resourcesAndroidModule)

    includes(coreCommonModule)

    includes(contactModule)
+21 −0
Original line number Diff line number Diff line
package net.thunderbird.core.android.common.resources

import android.content.Context
import androidx.annotation.PluralsRes
import androidx.annotation.StringRes
import net.thunderbird.core.common.resources.ResourceManager

internal class AndroidResourceManager(
    private val context: Context,
) : ResourceManager {
    override fun stringResource(@StringRes resourceId: Int): String = context.resources.getString(resourceId)

    override fun stringResource(@StringRes resourceId: Int, vararg formatArgs: Any?): String =
        context.resources.getString(resourceId, *formatArgs)

    override fun pluralsString(
        @PluralsRes resourceId: Int,
        quantity: Int,
        vararg formatArgs: Any?,
    ): String = context.resources.getQuantityString(resourceId, quantity, *formatArgs)
}
+15 −0
Original line number Diff line number Diff line
package net.thunderbird.core.android.common.resources

import net.thunderbird.core.common.resources.PluralsResourceManager
import net.thunderbird.core.common.resources.ResourceManager
import net.thunderbird.core.common.resources.StringsResourceManager
import org.koin.android.ext.koin.androidApplication
import org.koin.core.module.Module
import org.koin.dsl.module

internal val resourcesAndroidModule: Module = module {
    single { AndroidResourceManager(context = androidApplication()) }
    single<ResourceManager> { get<AndroidResourceManager>() }
    single<StringsResourceManager> { get<AndroidResourceManager>() }
    single<PluralsResourceManager> { get<AndroidResourceManager>() }
}
+11 −0
Original line number Diff line number Diff line
@@ -11,5 +11,16 @@ kotlin {
        commonTest.dependencies {
            implementation(projects.core.testing)
        }
        jvmMain.dependencies {
            implementation(libs.androidx.annotation)
        }
    }

    compilerOptions {
        freeCompilerArgs.addAll(
            listOf(
                "-Xexpect-actual-classes",
            ),
        )
    }
}
+4 −0
Original line number Diff line number Diff line
package net.thunderbird.core.common.resources

actual typealias StringRes = androidx.annotation.StringRes
actual typealias PluralsRes = androidx.annotation.PluralsRes
Loading