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

Commit 262f9781 authored by cketti's avatar cketti
Browse files

Remove JMAP app

The JMAP backend is still part of the repository. Only currently unused.
parent fda4e824
Loading
Loading
Loading
Loading

app/k9mail-jmap/build.gradle

deleted100644 → 0
+0 −135
Original line number Diff line number Diff line
apply plugin: 'com.android.application'
apply plugin: 'org.jetbrains.kotlin.android'
apply plugin: 'kotlin-kapt'

if (rootProject.testCoverage) {
    apply plugin: 'jacoco'
}

dependencies {
    implementation project(":app:ui:legacy")
    implementation project(":app:core")
    implementation project(":app:storage")
    implementation project(":app:crypto-openpgp")
    implementation project(":backend:imap")
    implementation project(":backend:pop3")
    implementation project(":backend:webdav")
    implementation project(":backend:jmap")

    implementation "androidx.appcompat:appcompat:${versions.androidxAppCompat}"
    implementation "com.jakewharton.timber:timber:${versions.timber}"
    implementation "androidx.constraintlayout:constraintlayout:${versions.androidxConstraintLayout}"
    implementation "com.google.android.material:material:${versions.materialComponents}"
    implementation "androidx.navigation:navigation-fragment-ktx:${versions.androidxNavigation}"
    implementation "androidx.navigation:navigation-ui-ktx:${versions.androidxNavigation}"
    implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${versions.androidxLifecycle}"
    implementation "androidx.lifecycle:lifecycle-livedata-ktx:${versions.androidxLifecycle}"

    implementation "com.github.bumptech.glide:glide:${versions.glide}"
    kapt "com.github.bumptech.glide:compiler:${versions.glide}"

    // Required for DependencyInjectionTest to be able to resolve OpenPgpApiManager
    testImplementation project(':plugins:openpgp-api-lib:openpgp-api')

    testImplementation "org.robolectric:robolectric:${versions.robolectric}"
    testImplementation "junit:junit:${versions.junit}"
    testImplementation "com.google.truth:truth:${versions.truth}"
    testImplementation "org.mockito:mockito-core:${versions.mockito}"
    testImplementation "org.mockito.kotlin:mockito-kotlin:${versions.mockitoKotlin}"
    testImplementation "io.insert-koin:koin-test-junit4:${versions.koin}"
}

android {
    compileSdkVersion buildConfig.compileSdk
    buildToolsVersion buildConfig.buildTools

    defaultConfig {
        applicationId "com.fsck.k9.jmap"
        testApplicationId "com.fsck.k9.jmap.tests"

        versionCode 1
        versionName 'JMAP DEV'

        minSdkVersion buildConfig.minSdk
        targetSdkVersion buildConfig.targetSdk

        generatedDensities = ['mdpi', 'hdpi', 'xhdpi']

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    signingConfigs {
        release
    }

    buildTypes {
        release {
            if (project.hasProperty('storeFile')) {
                signingConfig signingConfigs.release
            }

            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

            buildConfigField "boolean", "DEVELOPER_MODE", "false"
        }

        debug {
            applicationIdSuffix ".debug"
            testCoverageEnabled rootProject.testCoverage

            minifyEnabled false

            buildConfigField "boolean", "DEVELOPER_MODE", "true"
        }
    }

    // Do not abort build if lint finds errors
    lintOptions {
        abortOnError false
        lintConfig file("$rootProject.projectDir/config/lint/lint.xml")
    }

    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/README'
        exclude 'LICENSE.txt'
        exclude 'META-INF/*.kotlin_module'
    }

    compileOptions {
        sourceCompatibility javaVersion
        targetCompatibility javaVersion
    }

    kotlinOptions {
        jvmTarget = kotlinJvmVersion
    }

    buildFeatures {
        dataBinding = true
    }

    testOptions {
        unitTests {
            includeAndroidResources = true
        }
    }
}

if (project.hasProperty('keyAlias')) {
    android.signingConfigs.release.keyAlias = keyAlias
}
if (project.hasProperty('keyPassword')) {
    android.signingConfigs.release.keyPassword = keyPassword
}
if (project.hasProperty('storeFile')) {
    android.signingConfigs.release.storeFile = file(storeFile)
}
if (project.hasProperty('storePassword')) {
    android.signingConfigs.release.storePassword = storePassword
}
+0 −52
Original line number Diff line number Diff line
# Add project specific ProGuard rules here.

-dontobfuscate

# Preserve the line number information for debugging stack traces.
-keepattributes SourceFile,LineNumberTable

# Library specific rules
-dontnote android.net.http.*
-dontnote org.apache.commons.codec.**
-dontnote org.apache.http.**
-dontnote com.squareup.moshi.**
-dontnote com.github.amlcurran.showcaseview.**
-dontnote de.cketti.safecontentresolver.**
-dontnote com.tokenautocomplete.**
-keep class rs.ltt.jmap.common.** {*;}

-dontwarn okio.**
-dontwarn com.squareup.moshi.**

# Glide
-keep public class * extends com.bumptech.glide.module.AppGlideModule
-keep public class * extends com.bumptech.glide.module.LibraryGlideModule
-keep public enum com.bumptech.glide.load.ImageHeaderParser$** {
  **[] $VALUES;
  public *;
}

# Project specific rules
-dontnote com.fsck.k9.ui.messageview.**
-dontnote com.fsck.k9.view.**

-keep public class org.openintents.openpgp.**

-keepclassmembers class * extends androidx.appcompat.widget.SearchView {
    public <init>(android.content.Context);
}

# okhttp rules
# see: https://github.com/square/okhttp/blob/master/okhttp/src/main/resources/META-INF/proguard/okhttp3.pro

# JSR 305 annotations are for embedding nullability information.
-dontwarn javax.annotation.**

# A resource is loaded with a relative path so the package of this class must be preserved.
-keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase

# Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java.
-dontwarn org.codehaus.mojo.animal_sniffer.*

# OkHttp platform used only on JVM and when Conscrypt dependency is available.
-dontwarn okhttp3.internal.platform.ConscryptPlatform
+0 −300
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:installLocation="auto"
    package="com.fsck.k9.jmap">

    <uses-feature
        android:name="android.hardware.touchscreen"
        android:required="false"/>

    <supports-screens
        android:anyDensity="true"
        android:largeScreens="true"
        android:normalScreens="true"
        android:smallScreens="true"/>

    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
    <uses-permission android:name="android.permission.READ_CONTACTS"/>
    <uses-permission android:name="android.permission.READ_SYNC_SETTINGS"/>

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.VIBRATE"/>
    <uses-permission android:name="android.permission.WAKE_LOCK"/>

    <application
        android:name="com.fsck.k9.App"
        android:allowTaskReparenting="false"
        android:usesCleartextTraffic="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Theme.K9.Startup"
        android:resizeableActivity="true"
        android:allowBackup="false"
        tools:replace="android:theme">

        <meta-data
            android:name="android.app.default_searchable"
            android:value="com.fsck.k9.activity.Search"/>

        <!-- TODO: Remove once minSdkVersion has been changed to 24+ -->
        <meta-data
            android:name="com.lge.support.SPLIT_WINDOW"
            android:value="true"/>
        <uses-library
            android:name="com.sec.android.app.multiwindow"
            android:required="false"/>
        <meta-data
            android:name="com.sec.android.support.multiwindow"
            android:value="true"/>
        <meta-data
            android:name="com.samsung.android.sdk.multiwindow.penwindow.enable"
            android:value="true"/>

        <activity
            android:name="com.fsck.k9.ui.onboarding.OnboardingActivity"
            android:label="@string/welcome_message_title" />

        <activity
            android:name="com.fsck.k9.ui.settings.account.OpenPgpAppSelectDialog"
            android:configChanges="locale"
            android:theme="@style/Theme.K9.Dialog.Translucent.DayNight"
            />

        <activity
            android:name="com.fsck.k9.activity.setup.AccountSetupBasics"
            android:configChanges="locale"
            android:label="@string/account_setup_basics_title"/>

        <activity
            android:name="com.fsck.k9.activity.setup.AccountSetupAccountType"
            android:configChanges="locale"
            android:label="@string/account_setup_account_type_title"/>

        <activity
            android:name="com.fsck.k9.activity.setup.AccountSetupIncoming"
            android:configChanges="locale"
            android:label="@string/account_setup_incoming_title"/>

        <activity
            android:name="com.fsck.k9.activity.setup.AccountSetupComposition"
            android:configChanges="locale"
            android:label="@string/account_settings_composition_title"/>

        <activity
            android:name="com.fsck.k9.activity.setup.AccountSetupOutgoing"
            android:configChanges="locale"
            android:label="@string/account_setup_outgoing_title"/>

        <activity
            android:name="com.fsck.k9.activity.setup.AccountSetupOptions"
            android:configChanges="locale"
            android:label="@string/account_setup_options_title"/>

        <activity
            android:name="com.fsck.k9.activity.setup.AccountSetupNames"
            android:configChanges="locale"
            android:label="@string/account_setup_names_title"/>

        <activity
            android:name="com.fsck.k9.activity.ChooseAccount"
            android:configChanges="locale"
            android:label="@string/choose_account_title"
            android:noHistory="true" />

        <activity
            android:name="com.fsck.k9.ui.choosefolder.ChooseFolderActivity"
            android:configChanges="locale"
            android:label="@string/choose_folder_title"
            android:noHistory="true" />

        <activity
            android:name="com.fsck.k9.activity.ChooseIdentity"
            android:configChanges="locale"
            android:label="@string/choose_identity_title" />

        <activity
            android:name="com.fsck.k9.activity.ManageIdentities"
            android:configChanges="locale"
            android:label="@string/manage_identities_title"/>

        <activity
            android:name="com.fsck.k9.activity.EditIdentity"
            android:configChanges="locale"
            android:label="@string/edit_identity_title"/>

        <activity
            android:name="com.fsck.k9.ui.notification.DeleteConfirmationActivity"
            android:excludeFromRecents="true"
            android:launchMode="singleTop"
            android:taskAffinity=""
            android:theme="@style/Theme.K9.Dialog.Translucent.DayNight"/>

        <!-- XXX Note: this activity is hacked to ignore config changes,
             since it doesn't currently handle them correctly in code. -->
        <activity
            android:name="com.fsck.k9.activity.setup.AccountSetupCheckSettings"
            android:configChanges="keyboardHidden|orientation|locale"
            android:label="@string/account_setup_check_settings_title"/>

        <activity
            android:name="com.fsck.k9.ui.endtoend.AutocryptKeyTransferActivity"
            android:configChanges="locale"
            android:label="@string/ac_transfer_title"
            />

        <activity android:name="com.fsck.k9.activity.MessageList">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>

                <category android:name="android.intent.category.DEFAULT"/>
                <category android:name="android.intent.category.LAUNCHER"/>

                <!-- TODO: Remove once minSdkVersion has been changed to 24+ -->
                <category android:name="android.intent.category.MULTIWINDOW_LAUNCHER"/>
                <category android:name="android.intent.category.PENWINDOW_LAUNCHER"/>
            </intent-filter>
        </activity>

        <activity
            android:name="com.fsck.k9.activity.MessageCompose"
            android:configChanges="locale"
            android:enabled="false"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.SENDTO"/>
                <data android:scheme="mailto"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.SEND"/>
                <data android:mimeType="*/*"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.SEND_MULTIPLE"/>
                <data android:mimeType="*/*"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.VIEW"/>
                <data android:scheme="mailto"/>

                <category android:name="android.intent.category.DEFAULT"/>
                <category android:name="android.intent.category.BROWSABLE"/>
            </intent-filter>
            <intent-filter>
                <action android:name="org.autocrypt.PEER_ACTION"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>

            <meta-data
                android:name="android.service.chooser.chooser_target_service"
                android:value="com.fsck.k9.directshare.K9ChooserTargetService" />
        </activity>

        <!-- Search Activity - searchable -->
        <activity
            android:name="com.fsck.k9.activity.Search"
            android:configChanges="locale"
            android:label="@string/search_action"
            android:uiOptions="splitActionBarWhenNarrow">
            <intent-filter>
                <action android:name="android.intent.action.SEARCH"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
            <meta-data
                android:name="android.app.searchable"
                android:resource="@xml/searchable"/>
        </activity>

        <activity
            android:name="com.fsck.k9.activity.UpgradeDatabases"
            android:label="@string/upgrade_databases_title"/>

        <activity
            android:name="com.fsck.k9.ui.managefolders.ManageFoldersActivity"
            android:label="@string/folders_action" />

        <activity
            android:name="com.fsck.k9.ui.settings.SettingsActivity"
            android:label="@string/prefs_title" />

        <activity
            android:name="com.fsck.k9.ui.settings.general.GeneralSettingsActivity"
            android:label="@string/general_settings_title" />

        <activity
            android:name="com.fsck.k9.ui.settings.account.AccountSettingsActivity"
            android:label="@string/account_settings_title_fmt" />

        <activity
            android:name="com.fsck.k9.ui.addaccount.AddAccountActivity"
            android:label="@string/add_account_action" />

        <service
            android:name="com.fsck.k9.notification.NotificationActionService"
            android:enabled="true"/>

        <service
            android:name="com.fsck.k9.service.DatabaseUpgradeService"
            android:exported="false"/>

        <service
            android:name="com.fsck.k9.account.AccountRemoverService"
            android:permission="android.permission.BIND_JOB_SERVICE"/>

        <provider
            android:name="com.fsck.k9.provider.AttachmentProvider"
            android:authorities="${applicationId}.attachmentprovider"
            android:exported="false"
            android:grantUriPermissions="true">

            <meta-data
                android:name="de.cketti.safecontentresolver.ALLOW_INTERNAL_ACCESS"
                android:value="true" />

        </provider>

        <provider
            android:name="com.fsck.k9.provider.RawMessageProvider"
            android:authorities="${applicationId}.rawmessageprovider"
            android:exported="false">

            <meta-data
                android:name="de.cketti.safecontentresolver.ALLOW_INTERNAL_ACCESS"
                android:value="true" />

        </provider>

        <provider
            android:name="com.fsck.k9.provider.EmailProvider"
            android:authorities="${applicationId}.provider.email"
            android:exported="false"/>

        <provider
            android:name="com.fsck.k9.provider.DecryptedFileProvider"
            android:authorities="${applicationId}.decryptedfileprovider"
            android:exported="false"
            android:grantUriPermissions="true">

            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/decrypted_file_provider_paths" />
        </provider>

        <provider
            android:name="com.fsck.k9.provider.AttachmentTempFileProvider"
            android:authorities="${applicationId}.tempfileprovider"
            android:exported="false"
            android:grantUriPermissions="true">

            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/temp_file_provider_paths" />
        </provider>

    </application>
</manifest>
+0 −35
Original line number Diff line number Diff line
package com.fsck.k9

import android.app.Application
import com.fsck.k9.activity.MessageCompose
import com.fsck.k9.controller.MessagingController
import com.fsck.k9.ui.base.ThemeManager
import org.koin.android.ext.android.inject

class App : Application() {
    private val messagingController: MessagingController by inject()
    private val messagingListenerProvider: MessagingListenerProvider by inject()
    private val themeManager: ThemeManager by inject()

    override fun onCreate() {
        Core.earlyInit()

        super.onCreate()

        DI.start(this, coreModules + uiModules + appModules)

        K9.init(this)
        Core.init(this)
        themeManager.init()

        messagingListenerProvider.listeners.forEach { listener ->
            messagingController.addListener(listener)
        }
    }

    companion object {
        val appConfig = AppConfig(
            componentsToDisable = listOf(MessageCompose::class.java)
        )
    }
}
+0 −31
Original line number Diff line number Diff line
package com.fsck.k9

import com.fsck.k9.backends.backendsModule
import com.fsck.k9.controller.ControllerExtension
import com.fsck.k9.crypto.EncryptionExtractor
import com.fsck.k9.crypto.openpgp.OpenPgpEncryptionExtractor
import com.fsck.k9.notification.notificationModule
import com.fsck.k9.preferences.K9StoragePersister
import com.fsck.k9.preferences.StoragePersister
import com.fsck.k9.resources.resourcesModule
import com.fsck.k9.storage.storageModule
import com.fsck.k9.ui.addaccount.uiAddAccountModule
import org.koin.core.qualifier.named
import org.koin.dsl.module

private val mainAppModule = module {
    single { App.appConfig }
    single { MessagingListenerProvider(emptyList()) }
    single(named("controllerExtensions")) { emptyList<ControllerExtension>() }
    single<EncryptionExtractor> { OpenPgpEncryptionExtractor.newInstance() }
    single<StoragePersister> { K9StoragePersister(get()) }
}

val appModules = listOf(
    mainAppModule,
    notificationModule,
    resourcesModule,
    backendsModule,
    storageModule,
    uiAddAccountModule
)
Loading