From 055b08ef77b474acf9c5dd10cddad5bd527a47fb Mon Sep 17 00:00:00 2001 From: qwerty287 Date: Thu, 12 May 2022 17:33:03 +0200 Subject: [PATCH] Fix bugs (#1127) Fix the bugs reported by @mmarif on Discord. The image bug is not completely fixed, but if the image couldn't be decoded, it will view the "not processable" warning (it shouldn't crash anymore). **Note:** I didn't test it yet due to lack of time. I would be happy if you could do this. Co-authored-by: qwerty287 Co-authored-by: M M Arif Reviewed-on: https://codeberg.org/gitnex/GitNex/pulls/1127 Reviewed-by: 6543 <6543@noreply.codeberg.org> Reviewed-by: M M Arif Co-authored-by: qwerty287 Co-committed-by: qwerty287 --- app/build.gradle | 2 +- .../gitnex/activities/FileViewActivity.java | 21 +++++++++++-------- .../mian/gitnex/fragments/FilesFragment.java | 6 +++--- .../gitnex/fragments/RepoInfoFragment.java | 11 +++------- .../java/org/mian/gitnex/helpers/Images.java | 3 ++- .../java/org/mian/gitnex/helpers/Path.java | 12 ++++++++++- app/src/main/res/layout/list_users.xml | 1 + app/src/main/res/layout/list_users_grid.xml | 1 + 8 files changed, 34 insertions(+), 23 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 6ef7a266..4b87b547 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -111,7 +111,7 @@ dependencies { implementation 'com.github.chrisvest:stormpot:2.4.2' implementation 'androidx.browser:browser:1.4.0' implementation 'com.google.android.flexbox:flexbox:3.0.0' - implementation('org.codeberg.gitnex:tea4j-autodeploy:4cd6803f8f') { + implementation('org.codeberg.gitnex:tea4j-autodeploy:3111bc1b18') { exclude module: 'org.apache.oltu.oauth2.common' } } diff --git a/app/src/main/java/org/mian/gitnex/activities/FileViewActivity.java b/app/src/main/java/org/mian/gitnex/activities/FileViewActivity.java index 47d27ac6..33a69ae9 100644 --- a/app/src/main/java/org/mian/gitnex/activities/FileViewActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/FileViewActivity.java @@ -4,6 +4,7 @@ import android.app.Activity; import android.app.NotificationManager; import android.content.Context; import android.content.Intent; +import android.graphics.Bitmap; import android.graphics.Typeface; import android.os.Bundle; import android.text.method.ScrollingMovementMethod; @@ -39,7 +40,7 @@ import retrofit2.Call; import retrofit2.Response; /** - * Author M M Arif + * @author M M Arif */ public class FileViewActivity extends BaseActivity implements BottomSheetListener { @@ -116,17 +117,19 @@ public class FileViewActivity extends BaseActivity implements BottomSheetListene // See https://developer.android.com/guide/topics/media/media-formats#core if(Arrays.asList("bmp", "gif", "jpg", "jpeg", "png", "webp", "heic", "heif").contains(fileExtension.toLowerCase())) { - processable = true; - byte[] pictureBytes = responseBody.bytes(); - runOnUiThread(() -> { - binding.contents.setVisibility(View.GONE); - binding.markdownFrame.setVisibility(View.GONE); + Bitmap image = Images.scaleImage(pictureBytes, 1920); + processable = image != null; + if(processable) { + runOnUiThread(() -> { + binding.contents.setVisibility(View.GONE); + binding.markdownFrame.setVisibility(View.GONE); - binding.photoView.setVisibility(View.VISIBLE); - binding.photoView.setImageBitmap(Images.scaleImage(pictureBytes, 1920)); - }); + binding.photoView.setVisibility(View.VISIBLE); + binding.photoView.setImageBitmap(image); + }); + } } break; diff --git a/app/src/main/java/org/mian/gitnex/fragments/FilesFragment.java b/app/src/main/java/org/mian/gitnex/fragments/FilesFragment.java index c93d9212..b9faaf90 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/FilesFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/FilesFragment.java @@ -38,7 +38,7 @@ import moe.feng.common.view.breadcrumbs.DefaultBreadcrumbsCallback; import moe.feng.common.view.breadcrumbs.model.BreadcrumbItem; /** - * Author M M Arif + * @author M M Arif */ public class FilesFragment extends Fragment implements FilesAdapter.FilesAdapterListener { @@ -151,7 +151,7 @@ public class FilesFragment extends Fragment implements FilesAdapter.FilesAdapter switch(file.getType()) { case "dir": - path.add(file.getName()); + path.addWithoutEncoding(file.getName()); binding.breadcrumbsView.addItem(new BreadcrumbItem(Collections.singletonList(file.getName()))); refresh(); break; @@ -173,6 +173,7 @@ public class FilesFragment extends Fragment implements FilesAdapter.FilesAdapter String host = url.getHost(); UserAccountsApi userAccountsApi = BaseApi.getInstance(requireContext(), UserAccountsApi.class); + assert userAccountsApi != null; List userAccounts = userAccountsApi.loggedInUserAccounts(); UserAccount account = null; @@ -252,7 +253,6 @@ public class FilesFragment extends Fragment implements FilesAdapter.FilesAdapter binding.progressBar.setVisibility(View.VISIBLE); FilesViewModel filesModel = new ViewModelProvider(this).get(FilesViewModel.class); - filesModel.getFilesList2(owner, repo, filesDir, ref, getContext(), binding.progressBar, binding.noDataFiles).observe(getViewLifecycleOwner(), filesListMain2 -> { filesAdapter.getOriginalFiles().clear(); diff --git a/app/src/main/java/org/mian/gitnex/fragments/RepoInfoFragment.java b/app/src/main/java/org/mian/gitnex/fragments/RepoInfoFragment.java index 5b689f31..687f428b 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/RepoInfoFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/RepoInfoFragment.java @@ -3,7 +3,6 @@ package org.mian.gitnex.fragments; import android.content.Context; import android.content.Intent; import android.os.Bundle; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -36,7 +35,7 @@ import retrofit2.Call; import retrofit2.Callback; /** - * Author M M Arif + * @author M M Arif */ public class RepoInfoFragment extends Fragment { @@ -164,7 +163,7 @@ public class RepoInfoFragment extends Fragment { binding.repoMetaForks.setText(String.valueOf(repoInfo.getForksCount())); binding.repoMetaWatchers.setText(String.valueOf(repoInfo.getWatchersCount())); - binding.repoMetaSize.setText(FileUtils.byteCountToDisplaySize(repoInfo.getSize().intValue() * 1024)); + binding.repoMetaSize.setText(FileUtils.byteCountToDisplaySize(repoInfo.getSize() * 1024)); binding.repoMetaCreatedAt.setText(TimeHelper.formatTime(repoInfo.getCreatedAt(), locale, timeFormat, ctx)); if(timeFormat.equals("pretty")) { @@ -300,12 +299,8 @@ public class RepoInfoFragment extends Fragment { @Override public void onFailure(@NonNull Call call, @NonNull Throwable t) { - - Log.e("onFailure", t.toString()); + Toasty.error(ctx, ctx.getString(R.string.genericServerResponseError)); } - }); - } - } diff --git a/app/src/main/java/org/mian/gitnex/helpers/Images.java b/app/src/main/java/org/mian/gitnex/helpers/Images.java index d3aa82dd..e756abec 100644 --- a/app/src/main/java/org/mian/gitnex/helpers/Images.java +++ b/app/src/main/java/org/mian/gitnex/helpers/Images.java @@ -4,7 +4,7 @@ import android.graphics.Bitmap; import android.graphics.BitmapFactory; /** - * Author M M Arif + * @author M M Arif */ public class Images { @@ -12,6 +12,7 @@ public class Images { public static Bitmap scaleImage(byte[] imageData, int sizeLimit) { Bitmap original = BitmapFactory.decodeByteArray(imageData, 0, imageData.length); + if(original == null) return null; // something went wrong if(original.getHeight() > sizeLimit && original.getWidth() <= original.getHeight()) { diff --git a/app/src/main/java/org/mian/gitnex/helpers/Path.java b/app/src/main/java/org/mian/gitnex/helpers/Path.java index d148e9f9..f38ad5e6 100644 --- a/app/src/main/java/org/mian/gitnex/helpers/Path.java +++ b/app/src/main/java/org/mian/gitnex/helpers/Path.java @@ -59,7 +59,17 @@ public class Path { } - public int size() { + public Path addWithoutEncoding(String segment) { + + if(segment != null && !segment.trim().isEmpty()) { + segments.add(segment); + } + + pathChanged(); + return this; + } + + public int size() { return segments.size(); } diff --git a/app/src/main/res/layout/list_users.xml b/app/src/main/res/layout/list_users.xml index e00b9c1a..4535a307 100644 --- a/app/src/main/res/layout/list_users.xml +++ b/app/src/main/res/layout/list_users.xml @@ -3,6 +3,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" + android:background="?android:attr/selectableItemBackground" android:padding="16dp">