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

Unverified Commit de15580e authored by cketti's avatar cketti Committed by GitHub
Browse files

Merge pull request #5872 from k9mail/remove_jmap_app

Remove JMAP app
parents fda4e824 262f9781
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