Fix build project using Java 11
This commit is contained in:
parent
5192194cf7
commit
bb07076ba8
2
.github/workflows/build.yml
vendored
2
.github/workflows/build.yml
vendored
@ -15,6 +15,6 @@ jobs:
|
||||
fetch-depth: 0
|
||||
- uses: actions/setup-java@v1
|
||||
with:
|
||||
java-version: 1.8
|
||||
java-version: 11
|
||||
- name: Build and Test
|
||||
run: bash ./gradlew clean test --stacktrace
|
||||
|
2
.idea/codeStyles/Project.xml
generated
2
.idea/codeStyles/Project.xml
generated
@ -31,6 +31,7 @@
|
||||
</option>
|
||||
<option name="NAME_COUNT_TO_USE_STAR_IMPORT" value="999" />
|
||||
<option name="NAME_COUNT_TO_USE_STAR_IMPORT_FOR_MEMBERS" value="999" />
|
||||
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
|
||||
</JetCodeStyleSettings>
|
||||
<Properties>
|
||||
<option name="KEEP_BLANK_LINES" value="true" />
|
||||
@ -178,6 +179,7 @@
|
||||
</arrangement>
|
||||
</codeStyleSettings>
|
||||
<codeStyleSettings language="kotlin">
|
||||
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
|
||||
<option name="BLANK_LINES_AFTER_CLASS_HEADER" value="1" />
|
||||
<indentOptions>
|
||||
<option name="USE_TAB_CHARACTER" value="true" />
|
||||
|
2
.idea/misc.xml
generated
2
.idea/misc.xml
generated
@ -45,7 +45,7 @@
|
||||
</value>
|
||||
</option>
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="JDK" project-jdk-type="JavaSDK">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="false" project-jdk-name="JDK" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||
</component>
|
||||
<component name="ProjectType">
|
||||
|
1
.idea/runConfigurations.xml
generated
1
.idea/runConfigurations.xml
generated
@ -3,6 +3,7 @@
|
||||
<component name="RunConfigurationProducerService">
|
||||
<option name="ignoredProducers">
|
||||
<set>
|
||||
<option value="com.android.tools.idea.compose.preview.runconfiguration.ComposePreviewRunConfigurationProducer" />
|
||||
<option value="org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer" />
|
||||
<option value="org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer" />
|
||||
<option value="org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer" />
|
||||
|
@ -19,7 +19,7 @@ Cryptomator for Android is currently available in the following distribution ch
|
||||
### Dependencies
|
||||
|
||||
* Git
|
||||
* JDK 8
|
||||
* JDK 11
|
||||
* Gradle
|
||||
|
||||
### Run Git and Gradle
|
||||
|
@ -1,18 +1,16 @@
|
||||
apply from: 'buildsystem/ci.gradle'
|
||||
apply from: 'buildsystem/dependencies.gradle'
|
||||
apply plugin: "com.vanniktech.android.junit.jacoco"
|
||||
|
||||
buildscript {
|
||||
ext.kotlin_version = '1.4.32'
|
||||
ext.kotlin_version = '1.5.0'
|
||||
repositories {
|
||||
jcenter()
|
||||
mavenCentral()
|
||||
google()
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:4.1.3'
|
||||
classpath 'com.android.tools.build:gradle:4.2.1'
|
||||
classpath 'org.greenrobot:greendao-gradle-plugin:3.3.0'
|
||||
classpath 'com.fernandocejas.frodo:frodo-plugin:0.8.3'
|
||||
classpath 'com.vanniktech:gradle-android-junit-jacoco-plugin:0.16.0'
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||
classpath "de.mannodermaus.gradle.plugins:android-junit5:1.7.1.1"
|
||||
|
@ -1,13 +0,0 @@
|
||||
def ciServer = 'TRAVIS'
|
||||
def executingOnCI = "true" == System.getenv(ciServer)
|
||||
|
||||
// Since for CI we always do full clean builds, we don't want to pre-dex
|
||||
// See http://tools.android.com/tech-docs/new-build-system/tips
|
||||
subprojects {
|
||||
project.plugins.whenPluginAdded { plugin ->
|
||||
if ('com.android.build.gradle.AppPlugin' == plugin.class.name ||
|
||||
'com.android.build.gradle.LibraryPlugin' == plugin.class.name) {
|
||||
project.android.dexOptions.preDexLibraries = !executingOnCI
|
||||
}
|
||||
}
|
||||
}
|
@ -5,7 +5,7 @@ allprojects {
|
||||
}
|
||||
|
||||
ext {
|
||||
androidBuildToolsVersion = "29.0.3"
|
||||
androidBuildToolsVersion = "30.0.2"
|
||||
androidMinSdkVersion = 24
|
||||
androidTargetSdkVersion = 29
|
||||
androidCompileSdkVersion = 29
|
||||
|
@ -114,7 +114,7 @@ dependencies {
|
||||
implementation dependencies.msgraph
|
||||
|
||||
implementation dependencies.stax
|
||||
compile dependencies.minIo
|
||||
api dependencies.minIo
|
||||
|
||||
playstoreImplementation dependencies.googlePlayServicesAuth
|
||||
apkstoreImplementation dependencies.googlePlayServicesAuth
|
||||
|
5
gradle/wrapper/gradle-wrapper.properties
vendored
5
gradle/wrapper/gradle-wrapper.properties
vendored
@ -1,5 +1,6 @@
|
||||
#Wed May 12 18:12:25 CEST 2021
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.9-bin.zip
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
|
@ -122,7 +122,7 @@ class BrowseFilesPresenter @Inject constructor( //
|
||||
.withVault(vault.toVault()) //
|
||||
.run(DefaultResultHandler())
|
||||
}
|
||||
setRefreshOnBackpressEnabled(enableRefreshOnBackpressSupplier.setInAction(false))
|
||||
setRefreshOnBackPressEnabled(enableRefreshOnBackpressSupplier.setInAction(false))
|
||||
}
|
||||
|
||||
fun onWindowFocusChanged(hasFocus: Boolean) {
|
||||
@ -967,7 +967,7 @@ class BrowseFilesPresenter @Inject constructor( //
|
||||
|
||||
@Callback
|
||||
fun moveNodes(result: ActivityResult, nodesToMove: ArrayList<CloudNodeModel<*>>) {
|
||||
setRefreshOnBackpressEnabled(enableRefreshOnBackpressSupplier.setInAction(true))
|
||||
setRefreshOnBackPressEnabled(enableRefreshOnBackpressSupplier.setInAction(true))
|
||||
val targetFolder = result.getSingleResult(CloudFolderModel::class.java)
|
||||
moveCloudFile(targetFolder, nodesFor(nodesToMove, CloudFileModel::class) as List<CloudFileModel>)
|
||||
moveCloudFolder(targetFolder, nodesFor(nodesToMove, CloudFolderModel::class) as List<CloudFolderModel>)
|
||||
@ -975,7 +975,7 @@ class BrowseFilesPresenter @Inject constructor( //
|
||||
}
|
||||
|
||||
fun disableSelectionMode() {
|
||||
setRefreshOnBackpressEnabled(enableRefreshOnBackpressSupplier.setInSelectionMode(false))
|
||||
setRefreshOnBackPressEnabled(enableRefreshOnBackpressSupplier.setInSelectionMode(false))
|
||||
view?.disableSelectionMode()
|
||||
}
|
||||
|
||||
@ -1054,7 +1054,7 @@ class BrowseFilesPresenter @Inject constructor( //
|
||||
}
|
||||
|
||||
fun onSelectionModeActivated() {
|
||||
setRefreshOnBackpressEnabled(enableRefreshOnBackpressSupplier.setInSelectionMode(true))
|
||||
setRefreshOnBackPressEnabled(enableRefreshOnBackpressSupplier.setInSelectionMode(true))
|
||||
view?.enableSelectionMode()
|
||||
}
|
||||
|
||||
|
@ -30,7 +30,7 @@ abstract class Presenter<V : View> protected constructor(private val exceptionMa
|
||||
|
||||
var isPaused = false
|
||||
private set
|
||||
private var refreshOnBackpressEnabled = Supplier { true }
|
||||
private var refreshOnBackPressEnabled = Supplier { true }
|
||||
|
||||
var view: V? = null
|
||||
set(value) {
|
||||
@ -241,9 +241,9 @@ abstract class Presenter<V : View> protected constructor(private val exceptionMa
|
||||
val result = arrayOfNulls<String>(permissions.size)
|
||||
var numberMissing = 0
|
||||
permissions
|
||||
.asSequence()
|
||||
.filter { ContextCompat.checkSelfPermission(activity(), it) != PackageManager.PERMISSION_GRANTED }
|
||||
.forEach { result[numberMissing++] = it }
|
||||
.asSequence()
|
||||
.filter { ContextCompat.checkSelfPermission(activity(), it) != PackageManager.PERMISSION_GRANTED }
|
||||
.forEach { result[numberMissing++] = it }
|
||||
return result.copyOfRange(0, numberMissing)
|
||||
}
|
||||
|
||||
@ -314,12 +314,12 @@ abstract class Presenter<V : View> protected constructor(private val exceptionMa
|
||||
Timber.tag("PresenterLifecycle").d("$method $this")
|
||||
}
|
||||
|
||||
fun setRefreshOnBackpressEnabled(refreshOnBackpressEnabled: BrowseFilesPresenter.RefreshSupplier) {
|
||||
this.refreshOnBackpressEnabled = refreshOnBackpressEnabled
|
||||
fun setRefreshOnBackPressEnabled(refreshOnBackPressEnabled: BrowseFilesPresenter.RefreshSupplier) {
|
||||
this.refreshOnBackPressEnabled = refreshOnBackPressEnabled
|
||||
}
|
||||
|
||||
fun isRefreshOnBackpressEnabled(): Boolean {
|
||||
return refreshOnBackpressEnabled.get()
|
||||
fun isRefreshOnBackPressEnabled(): Boolean {
|
||||
return refreshOnBackPressEnabled.get()
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
@ -61,7 +61,7 @@ abstract class BaseFragment : Fragment() {
|
||||
if (!created) {
|
||||
loadContent()
|
||||
} else {
|
||||
if (presenter?.isRefreshOnBackpressEnabled() == true) {
|
||||
if (presenter?.isRefreshOnBackPressEnabled() == true) {
|
||||
loadContentSilent()
|
||||
}
|
||||
}
|
||||
|
@ -16,6 +16,7 @@ import org.cryptomator.presentation.model.CloudFolderModel;
|
||||
import org.cryptomator.presentation.model.CloudModel;
|
||||
import org.cryptomator.presentation.model.ProgressModel;
|
||||
import org.cryptomator.presentation.model.mappers.CloudModelMapper;
|
||||
import org.cryptomator.presentation.presenter.ChooseCloudServicePresenter;
|
||||
import org.cryptomator.presentation.presenter.VaultListPresenter;
|
||||
|
||||
import java.io.Serializable;
|
||||
@ -75,7 +76,7 @@ public class AddExistingVaultWorkflow extends Workflow<AddExistingVaultWorkflow.
|
||||
presenter().getView().showProgress(ProgressModel.GENERIC);
|
||||
getRootFolderUseCase //
|
||||
.withCloud(cloud.toCloud()) //
|
||||
.run(presenter().new ProgressCompletingResultHandler<CloudFolder>() {
|
||||
.run(((ChooseCloudServicePresenter) presenter()).new ProgressCompletingResultHandler<CloudFolder>() {
|
||||
@Override
|
||||
public void onSuccess(CloudFolder cloudFolder) {
|
||||
state().cloudRoot = cloudFolder;
|
||||
@ -123,7 +124,7 @@ public class AddExistingVaultWorkflow extends Workflow<AddExistingVaultWorkflow.
|
||||
@Override
|
||||
void completed() {
|
||||
presenter().getView().showProgress(ProgressModel.GENERIC);
|
||||
getVaultListUseCase.run(presenter().new ProgressCompletingResultHandler<List<Vault>>() {
|
||||
getVaultListUseCase.run(((VaultListPresenter) presenter()).new ProgressCompletingResultHandler<List<Vault>>() {
|
||||
@Override
|
||||
public void onSuccess(List<Vault> vaults) {
|
||||
saveVaultUseCase//
|
||||
@ -132,7 +133,7 @@ public class AddExistingVaultWorkflow extends Workflow<AddExistingVaultWorkflow.
|
||||
.withPosition(vaults.size()) //
|
||||
.thatIsNew() //
|
||||
.build()) //
|
||||
.run(presenter().new ProgressCompletingResultHandler<Vault>() {
|
||||
.run(((VaultListPresenter) presenter()).new ProgressCompletingResultHandler<Vault>() {
|
||||
@Override
|
||||
public void onSuccess(Vault vault) {
|
||||
((VaultListPresenter) presenter()).onAddOrCreateVaultCompleted(vault);
|
||||
|
@ -12,6 +12,7 @@ import org.cryptomator.presentation.model.CloudFolderModel;
|
||||
import org.cryptomator.presentation.model.CloudModel;
|
||||
import org.cryptomator.presentation.model.ProgressModel;
|
||||
import org.cryptomator.presentation.model.mappers.CloudModelMapper;
|
||||
import org.cryptomator.presentation.presenter.ChooseCloudServicePresenter;
|
||||
import org.cryptomator.presentation.presenter.VaultListPresenter;
|
||||
|
||||
import java.io.Serializable;
|
||||
@ -63,7 +64,7 @@ public class CreateNewVaultWorkflow extends Workflow<CreateNewVaultWorkflow.Stat
|
||||
presenter().getView().showProgress(ProgressModel.GENERIC);
|
||||
getRootFolderUseCase //
|
||||
.withCloud(cloud.toCloud()) //
|
||||
.run(presenter().new ProgressCompletingResultHandler<CloudFolder>() {
|
||||
.run(((ChooseCloudServicePresenter) presenter()).new ProgressCompletingResultHandler<CloudFolder>() {
|
||||
@Override
|
||||
public void onSuccess(CloudFolder cloudFolder) {
|
||||
state().cloudRoot = cloudFolder;
|
||||
@ -122,7 +123,7 @@ public class CreateNewVaultWorkflow extends Workflow<CreateNewVaultWorkflow.Stat
|
||||
.withVaultName(state().name) //
|
||||
.andPassword(state().password) //
|
||||
.andFolder(state().location) //
|
||||
.run(presenter().new ProgressCompletingResultHandler<Vault>() {
|
||||
.run(((VaultListPresenter) presenter()).new ProgressCompletingResultHandler<Vault>() {
|
||||
@Override
|
||||
public void onSuccess(Vault vault) {
|
||||
((VaultListPresenter) presenter()).onAddOrCreateVaultCompleted(vault);
|
||||
|
@ -22,7 +22,7 @@ public abstract class Workflow<State extends Serializable> {
|
||||
private Class<? extends Activity> activityClass;
|
||||
private BoundCallback callback;
|
||||
|
||||
private Presenter<?> presenter;
|
||||
private Presenter presenter;
|
||||
private boolean running;
|
||||
|
||||
Workflow(State state) {
|
||||
@ -36,11 +36,10 @@ public abstract class Workflow<State extends Serializable> {
|
||||
|
||||
abstract void doStart();
|
||||
|
||||
public void setup(Presenter<?> presenter, Intent intent) {
|
||||
public void setup(Presenter presenter, Intent intent) {
|
||||
this.presenter = presenter;
|
||||
setStateFrom(intent);
|
||||
}
|
||||
|
||||
private boolean setStateFrom(Intent intent) {
|
||||
Serializable stateExtra = intent.getSerializableExtra(WORKFLOW_STATE_EXTRA);
|
||||
Serializable callbackExtra = intent.getSerializableExtra(WORKFLOW_CALLBACK_EXTRA);
|
||||
@ -55,7 +54,7 @@ public abstract class Workflow<State extends Serializable> {
|
||||
return false;
|
||||
}
|
||||
|
||||
Presenter<?> presenter() {
|
||||
Presenter presenter() {
|
||||
if (presenter == null) {
|
||||
throw new IllegalStateException("Presenter not set");
|
||||
}
|
||||
|
@ -1,20 +1,22 @@
|
||||
package org.cryptomator.util.file
|
||||
|
||||
import org.cryptomator.util.Optional
|
||||
import java.util.Locale
|
||||
import javax.inject.Inject
|
||||
|
||||
class MimeTypes @Inject constructor(private val mimeTypeMap: MimeTypeMap) {
|
||||
|
||||
fun fromExtension(fileExtension: String): Optional<MimeType> {
|
||||
val mimeType = mimeTypeMap.getMimeTypeFromExtension(fileExtension.toLowerCase(Locale.getDefault()))
|
||||
?: return Optional.empty()
|
||||
val mimeType = mimeTypeMap.getMimeTypeFromExtension(fileExtension.lowercase())
|
||||
?: return Optional.empty()
|
||||
val firstSlash = mimeType.indexOf('/')
|
||||
return if (firstSlash == -1) {
|
||||
Optional.empty()
|
||||
} else Optional.of(MimeType( //
|
||||
} else Optional.of(
|
||||
MimeType( //
|
||||
mimeType.substring(0, firstSlash), //
|
||||
mimeType.substring(firstSlash + 1)))
|
||||
mimeType.substring(firstSlash + 1)
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
fun fromFilename(filename: String): Optional<MimeType> {
|
||||
|
Loading…
x
Reference in New Issue
Block a user