From 6c75cb1252d935628f5d4f7fe8d93fa942e4d68e Mon Sep 17 00:00:00 2001 From: will Date: Fri, 4 Jan 2019 11:11:18 +0800 Subject: [PATCH 1/6] upgrade gradle, build tools to work on Android studio 3.2.1 --- .travis.yml | 2 +- app/build.gradle | 74 ++++++++++++------------ build.gradle | 3 +- gradle/wrapper/gradle-wrapper.properties | 4 +- 4 files changed, 42 insertions(+), 41 deletions(-) diff --git a/.travis.yml b/.travis.yml index 304367b..d7e3b7b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,7 +5,7 @@ android: components: - tools - platform-tools - - build-tools-26.0.2 + - build-tools-28.0.3 - android-26 - extra-google-m2repository - extra-android-m2repository diff --git a/app/build.gradle b/app/build.gradle index 707bb90..d2bf32f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -32,7 +32,7 @@ android { } } compileSdkVersion 26 - buildToolsVersion '26.0.2' + buildToolsVersion '28.0.3' defaultConfig { applicationId "com.leanote.android" minSdkVersion 19 @@ -63,48 +63,48 @@ android { dependencies { - compile fileTree(dir: 'libs', include: ['*.jar']) - androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { + api fileTree(dir: 'libs', include: ['*.jar']) + androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) - testCompile 'junit:junit:4.12' - compile 'com.android.support:appcompat-v7:26.1.0' - compile 'com.android.support:support-v4:26.1.0' - compile 'com.android.support:design:26.1.0' - compile 'com.android.support:recyclerview-v7:26.1.0' - compile 'com.android.support:cardview-v7:26.1.0' - - compile 'com.jakewharton:butterknife:8.4.0' + testImplementation 'junit:junit:4.12' + implementation 'com.android.support:appcompat-v7:26.1.0' + implementation 'com.android.support:support-v4:26.1.0' + implementation 'com.android.support:design:26.1.0' + implementation 'com.android.support:recyclerview-v7:26.1.0' + implementation 'com.android.support:cardview-v7:26.1.0' + + implementation 'com.jakewharton:butterknife:8.4.0' annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0' - compile group: 'com.squareup.okhttp3', name: 'logging-interceptor', version: '3.4.1' - compile group: 'com.squareup.retrofit2', name: 'adapter-rxjava', version: '2.1.0' + implementation group: 'com.squareup.okhttp3', name: 'logging-interceptor', version: '3.4.1' + implementation group: 'com.squareup.retrofit2', name: 'adapter-rxjava', version: '2.1.0' annotationProcessor "com.github.Raizlabs.DBFlow:dbflow-processor:${dbflow_version}" - compile "com.github.Raizlabs.DBFlow:dbflow-core:${dbflow_version}" - compile "com.github.Raizlabs.DBFlow:dbflow:${dbflow_version}" - - compile 'org.greenrobot:eventbus:3.0.0' - - compile 'io.reactivex:rxandroid:1.2.1' - compile 'io.reactivex:rxjava:1.1.9' - compile group: 'com.google.code.gson', name: 'gson', version: '2.7' - compile 'org.mongodb:mongo-java-driver:2.12.4' - - compile 'com.github.bumptech.glide:glide:3.7.0' - compile 'jp.wasabeef:glide-transformations:2.0.1' - compile 'com.android.support:support-v13:26.1.0' - compile 'com.github.xingstarx:ImageSelector:master-SNAPSHOT' - compile 'com.facebook.stetho:stetho:1.4.2' - compile 'com.facebook.stetho:stetho-okhttp3:1.4.2' - compile 'com.github.houxg:FlexLayout:1.2' - - compile 'net.danlew:android.joda:2.9.5' - compile 'com.tencent.bugly:crashreport_upgrade:latest.release' - compile 'com.elvishew:xlog:1.3.0' - compile 'com.github.piasy:BigImageViewer:1.2.5' - compile 'com.github.piasy:GlideImageLoader:1.2.5' - compile 'com.weiwangcn.betterspinner:library-material:1.1.0' + implementation "com.github.Raizlabs.DBFlow:dbflow-core:${dbflow_version}" + implementation "com.github.Raizlabs.DBFlow:dbflow:${dbflow_version}" + + implementation 'org.greenrobot:eventbus:3.0.0' + + implementation 'io.reactivex:rxandroid:1.2.1' + implementation 'io.reactivex:rxjava:1.1.9' + implementation group: 'com.google.code.gson', name: 'gson', version: '2.7' + implementation 'org.mongodb:mongo-java-driver:2.12.4' + + implementation 'com.github.bumptech.glide:glide:3.7.0' + implementation 'jp.wasabeef:glide-transformations:2.0.1' + implementation 'com.android.support:support-v13:26.1.0' + implementation 'com.github.xingstarx:ImageSelector:master-SNAPSHOT' + implementation 'com.facebook.stetho:stetho:1.4.2' + implementation 'com.facebook.stetho:stetho-okhttp3:1.4.2' + implementation 'com.github.houxg:FlexLayout:1.2' + + implementation 'net.danlew:android.joda:2.9.5' + implementation 'com.tencent.bugly:crashreport_upgrade:latest.release' + implementation 'com.elvishew:xlog:1.3.0' + implementation 'com.github.piasy:BigImageViewer:1.2.5' + implementation 'com.github.piasy:GlideImageLoader:1.2.5' + implementation 'com.weiwangcn.betterspinner:library-material:1.1.0' implementation 'com.android.support.constraint:constraint-layout:1.0.2' } diff --git a/build.gradle b/build.gradle index 7e01a0a..3e8e35b 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:3.0.1' + classpath 'com.android.tools.build:gradle:3.2.1' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files @@ -23,3 +23,4 @@ allprojects { task clean(type: Delete) { delete rootProject.buildDir } + diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 7a73f98..374eef3 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Wed Oct 25 13:31:06 CST 2017 +#Wed Jan 02 18:30:46 CST 2019 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip From abd110c62092c3ed9e3eba37ba1f2981e914c563 Mon Sep 17 00:00:00 2001 From: will Date: Sun, 6 Jan 2019 13:25:57 +0800 Subject: [PATCH 2/6] =?UTF-8?q?Fix=20can=E2=80=99t=20insert=20jpeg=20file?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/org/houxg/leamonax/utils/FileUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/houxg/leamonax/utils/FileUtils.java b/app/src/main/java/org/houxg/leamonax/utils/FileUtils.java index b29f996..15384d3 100644 --- a/app/src/main/java/org/houxg/leamonax/utils/FileUtils.java +++ b/app/src/main/java/org/houxg/leamonax/utils/FileUtils.java @@ -5,6 +5,6 @@ public class FileUtils { public static boolean isImageFile(File file) { - return file != null && file.isFile() && file.getName().matches("([^\\s]+(\\.(?i)(jpg|png|gif|bmp))$)"); + return file != null && file.isFile() && file.getName().matches("([^\\s]+(\\.(?i)(jpeg|jpg|png|gif|bmp))$)"); } } From 296d1f5257bb5b0ec69da834d3b4fe96014eb590 Mon Sep 17 00:00:00 2001 From: will Date: Sun, 6 Jan 2019 13:31:46 +0800 Subject: [PATCH 3/6] support kotlin --- app/build.gradle | 4 ++ .../java/org/houxg/leamonax/FileUtilsTest.kt | 37 +++++++++++++++++++ build.gradle | 2 + 3 files changed, 43 insertions(+) create mode 100644 app/src/test/java/org/houxg/leamonax/FileUtilsTest.kt diff --git a/app/build.gradle b/app/build.gradle index d2bf32f..67896da 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -13,6 +13,7 @@ repositories { maven { url "http://dl.bintray.com/piasy/maven" } } apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' def dbflow_version = "4.0.0-beta2" def ciName = isEmpty(System.getenv("TRAVIS_TAG")) ? "Staging" : System.getenv("TRAVIS_TAG") @@ -107,4 +108,7 @@ dependencies { implementation 'com.weiwangcn.betterspinner:library-material:1.1.0' implementation 'com.android.support.constraint:constraint-layout:1.0.2' + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" + + testImplementation "org.mockito:mockito-core:2.+" } diff --git a/app/src/test/java/org/houxg/leamonax/FileUtilsTest.kt b/app/src/test/java/org/houxg/leamonax/FileUtilsTest.kt new file mode 100644 index 0000000..d81b5e0 --- /dev/null +++ b/app/src/test/java/org/houxg/leamonax/FileUtilsTest.kt @@ -0,0 +1,37 @@ +package org.houxg.leamonax + +import junit.framework.Assert +import org.houxg.leamonax.utils.FileUtils +import org.junit.Before +import org.junit.Test +import org.mockito.Mockito.`when` +import org.mockito.Mockito.mock +import java.io.File + +class FileUtilsTest { + + @Before + fun setUp() { + + } + + @Test + fun testIsImageFile() { + Assert.assertEquals(true, FileUtils.isImageFile(getMockFile("a.jpeg", true))) + Assert.assertEquals(true, FileUtils.isImageFile(getMockFile("a.jpg", true))) + Assert.assertEquals(true, FileUtils.isImageFile(getMockFile("a.png", true))) + Assert.assertEquals(true, FileUtils.isImageFile(getMockFile("a.gif", true))) + + Assert.assertEquals(true, FileUtils.isImageFile(getMockFile("a.JPEG", true))) + Assert.assertEquals(true, FileUtils.isImageFile(getMockFile("a.JPG", true))) + Assert.assertEquals(true, FileUtils.isImageFile(getMockFile("a.PNG", true))) + Assert.assertEquals(true, FileUtils.isImageFile(getMockFile("a.GIF", true))) + } + + private fun getMockFile(name: String, isFile: Boolean): File { + val mock = mock(File::class.java) + `when`(mock.isFile).thenReturn(isFile) + `when`(mock.name).thenReturn(name) + return mock + } +} diff --git a/build.gradle b/build.gradle index 3e8e35b..6f13e6c 100644 --- a/build.gradle +++ b/build.gradle @@ -1,12 +1,14 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { + ext.kotlin_version = '1.3.11' repositories { jcenter() google() } dependencies { classpath 'com.android.tools.build:gradle:3.2.1' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files From 1a8332bbe9afbe2008ba5939948429a6e2a20e3e Mon Sep 17 00:00:00 2001 From: will Date: Sun, 6 Jan 2019 13:33:39 +0800 Subject: [PATCH 4/6] #89 avoid activity get recreated temporary --- app/src/main/AndroidManifest.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 8880d05..415d409 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -32,6 +32,7 @@ From 1c5fef088ec23b878f019ab50443d6462c32653a Mon Sep 17 00:00:00 2001 From: xingxing Date: Wed, 16 Jan 2019 19:42:28 +0800 Subject: [PATCH 5/6] Fix when update note createdTime or publicTime field content error --- .../java/org/houxg/leamonax/service/NoteService.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/app/src/main/java/org/houxg/leamonax/service/NoteService.java b/app/src/main/java/org/houxg/leamonax/service/NoteService.java index ce1de85..9ec65c6 100644 --- a/app/src/main/java/org/houxg/leamonax/service/NoteService.java +++ b/app/src/main/java/org/houxg/leamonax/service/NoteService.java @@ -270,6 +270,16 @@ public static void saveNote(final long noteLocalId) { note.setContent(modifiedNote.getContent()); handleFile(modifiedNote.getId(), note.getNoteFiles()); updateTagsToLocal(modifiedNote.getId(), note.getTagData()); + if (!modifiedNote.isLocalNote()) {//noteId已经存在,代表是更新操作,服务端updateNote接口存在bug,所以特殊处理下createdTime, publicTime + if (modifiedNote.getCreatedTimeVal() == -62135596800000L || modifiedNote.getPublicTimeVal() == -62135596800000L) { + Note remoteNote = RetrofitUtils.excuteWithException(ApiProvider.getInstance().getNoteApi().getNoteAndContent(modifiedNote.getNoteId())); + note.setCreatedTimeVal(remoteNote.getCreatedTimeVal()); + note.setPublicTimeVal(remoteNote.getPublicTimeVal()); + } else { + note.setCreatedTimeVal(modifiedNote.getCreatedTimeVal()); + note.setPublicTimeVal(modifiedNote.getPublicTimeVal()); + } + } note.save(); updateNoteUsnIfNeed(note.getUsn()); } else { From a6efd6170a8f002272e4974dc461a69fa810c49f Mon Sep 17 00:00:00 2001 From: xingxing Date: Sat, 20 Apr 2019 10:23:25 +0800 Subject: [PATCH 6/6] Fix TitleHighlight --- app/src/main/java/org/houxg/leamonax/utils/StringUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/houxg/leamonax/utils/StringUtils.java b/app/src/main/java/org/houxg/leamonax/utils/StringUtils.java index ea014c0..136839d 100644 --- a/app/src/main/java/org/houxg/leamonax/utils/StringUtils.java +++ b/app/src/main/java/org/houxg/leamonax/utils/StringUtils.java @@ -58,7 +58,7 @@ public interface Replacer { //转义正则表达式中的几个特殊符号 public static String escapeRegex(String str) { int length = str.length(); - StringBuilder sbf = new StringBuilder(); + StringBuilder sbf = new StringBuilder(str); for (int i = 0; i < length; i++) { char c = str.charAt(i); if (c == '*') {