From cbfaba5d867c6cc4495eb26fbabb797db300680b Mon Sep 17 00:00:00 2001 From: Kosh Date: Mon, 1 May 2017 14:27:27 +0800 Subject: [PATCH] some bugs fixes from firebase and readying for 2.0.0 --- app/build.gradle | 4 +- app/src/main/AndroidManifest.xml | 6 +++ .../java/com/fastaccess/helper/Bundler.java | 2 +- .../com/fastaccess/helper/FileHelper.java | 25 ++++----- .../provider/rest/RestProvider.java | 2 - .../converters/GithubResponseConverter.java | 51 +++++++++++++++++-- .../NotificationSchedulerJobTask.java | 6 ++- .../ui/modules/editor/EditorActivity.java | 2 +- .../popup/EditorLinkImageDialogFragment.java | 3 ++ .../dialog/ProgressDialogFragment.java | 3 +- app/src/main/res/values/strings.xml | 1 + 11 files changed, 80 insertions(+), 25 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 57f0b009..d1caac40 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -32,8 +32,8 @@ android { applicationId "com.fastaccess.github" minSdkVersion 21 targetSdkVersion 25 - versionCode 195 - versionName "1.9.5" + versionCode 200 + versionName "2.0.0" signingConfig signingConfigs.signing buildConfigString "GITHUB_CLIENT_ID", (buildProperties.secrets['github_client_id'] | buildProperties.notThere['github_client_id']).string buildConfigString "GITHUB_SECRET", (buildProperties.secrets['github_secret'] | buildProperties.notThere['github_secret']).string diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index fd29657b..8b59d628 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -229,11 +229,17 @@ + + + + + diff --git a/app/src/main/java/com/fastaccess/helper/Bundler.java b/app/src/main/java/com/fastaccess/helper/Bundler.java index d082c304..8f682783 100644 --- a/app/src/main/java/com/fastaccess/helper/Bundler.java +++ b/app/src/main/java/com/fastaccess/helper/Bundler.java @@ -194,7 +194,7 @@ public class Bundler { bundle.writeToParcel(parcel, 0); int size = parcel.dataSize(); Logger.e(size); - if (size > 800000) { + if (size > 500000) { bundle.clear(); } return get(); diff --git a/app/src/main/java/com/fastaccess/helper/FileHelper.java b/app/src/main/java/com/fastaccess/helper/FileHelper.java index 7451b431..c1b47d66 100644 --- a/app/src/main/java/com/fastaccess/helper/FileHelper.java +++ b/app/src/main/java/com/fastaccess/helper/FileHelper.java @@ -17,20 +17,21 @@ public class FileHelper { @Nullable public static String getPath(@NonNull Context context, @NonNull Uri uri) { String filePath = null; - String wholeID = DocumentsContract.getDocumentId(uri); - String id = wholeID.split(":")[1]; - String[] column = {MediaStore.Images.Media.DATA}; - String sel = MediaStore.Images.Media._ID + "=?"; - try (Cursor cursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, - column, sel, new String[]{id}, null)) { - if (cursor != null) { - int columnIndex = cursor.getColumnIndex(column[0]); - if (cursor.moveToFirst()) { - filePath = cursor.getString(columnIndex); + try { + String wholeID = DocumentsContract.getDocumentId(uri); + String id = wholeID.split(":")[1]; + String[] column = {MediaStore.Images.Media.DATA}; + String sel = MediaStore.Images.Media._ID + "=?"; + try (Cursor cursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, + column, sel, new String[]{id}, null)) { + if (cursor != null) { + int columnIndex = cursor.getColumnIndex(column[0]); + if (cursor.moveToFirst()) { + filePath = cursor.getString(columnIndex); + } } } - } - Logger.e(filePath); + } catch (Exception ignored) {} return filePath; } diff --git a/app/src/main/java/com/fastaccess/provider/rest/RestProvider.java b/app/src/main/java/com/fastaccess/provider/rest/RestProvider.java index 217df5f5..ceeda81a 100644 --- a/app/src/main/java/com/fastaccess/provider/rest/RestProvider.java +++ b/app/src/main/java/com/fastaccess/provider/rest/RestProvider.java @@ -23,7 +23,6 @@ import com.fastaccess.data.service.SearchService; import com.fastaccess.data.service.SlackService; import com.fastaccess.data.service.UserRestService; import com.fastaccess.helper.InputHelper; -import com.fastaccess.helper.Logger; import com.fastaccess.helper.PrefGetter; import com.fastaccess.provider.rest.converters.GithubResponseConverter; import com.fastaccess.provider.rest.interceptors.AuthenticationInterceptor; @@ -88,7 +87,6 @@ public class RestProvider { Request request = requestBuilder.build(); return chain.proceed(request); } - Logger.e(original.url()); return chain.proceed(original); }); return client.build(); diff --git a/app/src/main/java/com/fastaccess/provider/rest/converters/GithubResponseConverter.java b/app/src/main/java/com/fastaccess/provider/rest/converters/GithubResponseConverter.java index c05fc7eb..4791f7d6 100644 --- a/app/src/main/java/com/fastaccess/provider/rest/converters/GithubResponseConverter.java +++ b/app/src/main/java/com/fastaccess/provider/rest/converters/GithubResponseConverter.java @@ -1,18 +1,26 @@ package com.fastaccess.provider.rest.converters; +import android.support.annotation.Nullable; + import com.google.gson.Gson; import java.io.IOException; +import java.io.Reader; +import java.io.StringWriter; +import java.io.Writer; import java.lang.annotation.Annotation; import java.lang.reflect.Type; import lombok.AllArgsConstructor; +import lombok.NonNull; import okhttp3.RequestBody; import okhttp3.ResponseBody; import retrofit2.Converter; import retrofit2.Retrofit; import retrofit2.converter.gson.GsonConverterFactory; +import static com.nostra13.universalimageloader.utils.IoUtils.DEFAULT_BUFFER_SIZE; + /** * call that supports String & Gson and always uses json as its request body */ @@ -27,15 +35,50 @@ public class GithubResponseConverter extends Converter.Factory { return GsonConverterFactory.create(gson).responseBodyConverter(type, annotations, retrofit); } - @Override - public Converter requestBodyConverter(Type type, Annotation[] parameterAnnotations, Annotation[] methodAnnotations, Retrofit - retrofit) { + @Override public Converter requestBodyConverter(Type type, Annotation[] parameterAnnotations, + Annotation[] methodAnnotations, Retrofit retrofit) { return GsonConverterFactory.create(gson).requestBodyConverter(type, parameterAnnotations, methodAnnotations, retrofit); } private static class StringResponseConverter implements Converter { @Override public String convert(ResponseBody value) throws IOException { - return value.string(); + try { + return value.string(); + } catch (OutOfMemoryError ignored) { + return getString(value.charStream()); + } } + + @NonNull private String getString(@Nullable Reader reader) { + if (reader == null) return ""; + StringWriter sw = new StringWriter(); + try { + copy(reader, sw); + return sw.toString(); + } catch (Exception ignored) { + return ""; + } + } + + private int copy(Reader input, Writer output) throws IOException { + long count = copyLarge(input, output); + if (count > Integer.MAX_VALUE) { + return -1; + } + return (int) count; + } + + + private long copyLarge(Reader input, Writer output) throws IOException { + char[] buffer = new char[DEFAULT_BUFFER_SIZE]; + long count = 0; + int n = 0; + while (-1 != (n = input.read(buffer))) { + output.write(buffer, 0, n); + count += n; + } + return count; + } + } } diff --git a/app/src/main/java/com/fastaccess/provider/tasks/notification/NotificationSchedulerJobTask.java b/app/src/main/java/com/fastaccess/provider/tasks/notification/NotificationSchedulerJobTask.java index 12cead38..c68c6ae1 100644 --- a/app/src/main/java/com/fastaccess/provider/tasks/notification/NotificationSchedulerJobTask.java +++ b/app/src/main/java/com/fastaccess/provider/tasks/notification/NotificationSchedulerJobTask.java @@ -51,7 +51,11 @@ public class NotificationSchedulerJobTask extends JobService { finishJob(job); return true; } - if (Login.getUser() != null) { + Login login = null; + try { + login = Login.getUser(); + } catch (Exception ignored) {} + if (login != null) { RestProvider.getNotificationService() .getNotifications(ParseDateFormat.getLastWeekDate()) .subscribeOn(Schedulers.io()) diff --git a/app/src/main/java/com/fastaccess/ui/modules/editor/EditorActivity.java b/app/src/main/java/com/fastaccess/ui/modules/editor/EditorActivity.java index f95aebaf..ddd5efbc 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/editor/EditorActivity.java +++ b/app/src/main/java/com/fastaccess/ui/modules/editor/EditorActivity.java @@ -124,8 +124,8 @@ public class EditorActivity extends BaseActivity AnimHelper.revealDialog(progressDialog, - getResources().getInteger(android.R.integer.config_shortAnimTime))); + progressDialog.setOnShowListener(dialogInterface -> AnimHelper.revealDialog(progressDialog, 200)); } return progressDialog; } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3e5782bd..333f5975 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -395,4 +395,5 @@ Would you like to join FastHub Slack group?\nInvitation link will be sent to %s. Successfully invited Reply + Failed to load image. \ No newline at end of file