Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  BuildFlavor.kt   Sprache: unbekannt

 
Spracherkennung für: .kt vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]

package ch.threema.app

import ch.threema.app.multidevice.DesktopClientFlavor

sealed class BuildFlavor(
    val gradleName: String,
    val licenseType: LicenseType,
    val buildEnvironment: BuildEnvironment,
    private val displayName: String,
    val desktopClientFlavor: DesktopClientFlavor,
) {
    companion object {
        @JvmStatic
        val current: BuildFlavor by lazy {
            when (BuildConfig.FLAVOR) {
                None.gradleName -> None
                StoreGoogle.gradleName -> StoreGoogle
                StoreThreema.gradleName -> StoreThreema
                StoreGoogleWork.gradleName -> StoreGoogleWork
                Green.gradleName -> Green
                SandboxWork.gradleName -> SandboxWork
                OnPrem.gradleName -> OnPrem
                Blue.gradleName -> Blue
                Hms.gradleName -> Hms
                HmsWork.gradleName -> HmsWork
                Libre.gradleName -> Libre
                else -> throw IllegalStateException("Unhandled build flavor " + BuildConfig.FLAVOR)
            }
        }
    }

    enum class LicenseType {
        NONE,
        GOOGLE,
        SERIAL,
        GOOGLE_WORK,
        HMS,
        HMS_WORK,
        ONPREM,
        ;

        fun isOnPrem() =
            this == ONPREM

        fun isWork() =
            when (this) {
                GOOGLE_WORK,
                HMS_WORK,
                ONPREM,
                -> true
                else -> false
            }
    }

    enum class BuildEnvironment {
        LIVE,
        SANDBOX,
        ONPREM,
    }

    data object None : BuildFlavor(
        gradleName = "none",
        licenseType = LicenseType.NONE,
        buildEnvironment = BuildEnvironment.LIVE,
        displayName = "DEV",
        desktopClientFlavor = DesktopClientFlavor.Consumer,
    )

    data object StoreGoogle : BuildFlavor(
        gradleName = "store_google",
        licenseType = LicenseType.GOOGLE,
        buildEnvironment = BuildEnvironment.LIVE,
        displayName = "Google Play",
        desktopClientFlavor = DesktopClientFlavor.Consumer,
    )

    data object StoreThreema : BuildFlavor(
        gradleName = "store_threema",
        licenseType = LicenseType.SERIAL,
        buildEnvironment = BuildEnvironment.LIVE,
        displayName = "Threema Shop",
        desktopClientFlavor = DesktopClientFlavor.Consumer,
    )

    data object StoreGoogleWork : BuildFlavor(
        gradleName = "store_google_work",
        licenseType = LicenseType.GOOGLE_WORK,
        buildEnvironment = BuildEnvironment.LIVE,
        displayName = "Work",
        desktopClientFlavor = DesktopClientFlavor.Work,
    )

    data object Green : BuildFlavor(
        gradleName = "green",
        licenseType = LicenseType.NONE,
        buildEnvironment = BuildEnvironment.SANDBOX,
        displayName = "Green",
        desktopClientFlavor = DesktopClientFlavor.Green,
    )

    data object SandboxWork : BuildFlavor(
        gradleName = "sandbox_work",
        licenseType = LicenseType.GOOGLE_WORK,
        buildEnvironment = BuildEnvironment.SANDBOX,
        displayName = "Sandbox Work",
        desktopClientFlavor = DesktopClientFlavor.Blue,
    )

    data object OnPrem : BuildFlavor(
        gradleName = "onprem",
        licenseType = LicenseType.ONPREM,
        buildEnvironment = BuildEnvironment.ONPREM,
        displayName = "OnPrem",
        desktopClientFlavor = DesktopClientFlavor.OnPrem,
    )

    data object Blue : BuildFlavor(
        gradleName = "blue",
        licenseType = LicenseType.GOOGLE_WORK,
        buildEnvironment = BuildEnvironment.SANDBOX,
        displayName = "Blue",
        desktopClientFlavor = DesktopClientFlavor.Blue,
    )

    data object Hms : BuildFlavor(
        gradleName = "hms",
        licenseType = LicenseType.HMS,
        buildEnvironment = BuildEnvironment.LIVE,
        displayName = "HMS",
        desktopClientFlavor = DesktopClientFlavor.Consumer,
    )

    data object HmsWork : BuildFlavor(
        gradleName = "hms_work",
        licenseType = LicenseType.HMS_WORK,
        buildEnvironment = BuildEnvironment.LIVE,
        displayName = "HMS Work",
        desktopClientFlavor = DesktopClientFlavor.Work,
    )

    data object Libre : BuildFlavor(
        gradleName = "libre",
        licenseType = LicenseType.SERIAL,
        buildEnvironment = BuildEnvironment.LIVE,
        displayName = "Libre",
        desktopClientFlavor = DesktopClientFlavor.Consumer,
    )

    val fullDisplayName: String by lazy {
        displayName + if (BuildConfig.DEBUG) " (DEBUG)" else ""
    }

    /**
     * Return whether the self-updater is supported or not.
     */
    val maySelfUpdate: Boolean
        get() = this is StoreThreema

    /**
     * Return whether this build flavor always uses Threema Push.
     */
    val forceThreemaPush: Boolean
        get() = this is Libre

    /**
     * Return whether this build flavor is "libre", meaning that it contains
     * no proprietary services.
     */
    val isLibre
        get() = this is Libre

    /**
     * Return whether this build flavor uses the sandbox build environment.
     */
    val isSandbox: Boolean
        get() = buildEnvironment == BuildEnvironment.SANDBOX

    val isWork: Boolean
        get() = licenseType.isWork()

    val isOnPrem: Boolean
        get() = licenseType.isOnPrem()
}

[Dauer der Verarbeitung: 0.11 Sekunden, vorverarbeitet 2026-04-27]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge