diff options
author | Stefan Niedermann <info@niedermann.it> | 2020-06-24 14:03:18 +0300 |
---|---|---|
committer | Stefan Niedermann <info@niedermann.it> | 2020-06-24 14:03:18 +0300 |
commit | f828c7187bc14df52d9a9c9108151232208d735b (patch) | |
tree | cd3b2d37f3bbd078631633c5d0f69d81e43fb933 | |
parent | 719ac9ebee257f9254e35c2501b1eff28f6a2992 (diff) |
version bump to 1.5.61.5.6
- đ Fix sharing text based files like contacts
7 files changed, 103 insertions, 29 deletions
diff --git a/app/build.gradle b/app/build.gradle index c3176a29b..e7ebe318b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -6,8 +6,8 @@ android { applicationId "it.niedermann.nextcloud.deck" minSdkVersion 17 targetSdkVersion 29 - versionCode 1005005 - versionName "1.5.5" + versionCode 1005006 + versionName "1.5.6" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true javaCompileOptions { diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentAdapter.java index d17d5cbc6..3ecee8583 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentAdapter.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentAdapter.java @@ -152,6 +152,8 @@ public class CardAttachmentAdapter extends RecyclerView.Adapter<AttachmentViewHo holder.getPreview().setImageResource(R.drawable.ic_local_movies_grey600_24dp); } else if (MimeTypeUtil.isPdf(attachment.getMimetype())) { holder.getPreview().setImageResource(R.drawable.ic_baseline_picture_as_pdf_24); + } else if (MimeTypeUtil.isContact(attachment.getMimetype())) { + holder.getPreview().setImageResource(R.drawable.ic_baseline_contact_mail_24); } else { holder.getPreview().setImageResource(R.drawable.ic_attach_file_grey600_24dp); } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/sharetarget/ShareTargetActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/sharetarget/ShareTargetActivity.java index 535ec41a7..a64629bd7 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/sharetarget/ShareTargetActivity.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/sharetarget/ShareTargetActivity.java @@ -58,7 +58,7 @@ public class ShareTargetActivity extends MainActivity implements SelectCardListe final String receivedType = receivedIntent.getType(); DeckLog.info(receivedAction); DeckLog.info(receivedType); - isFile = !MimeTypeUtil.isText(receivedType); + isFile = !MimeTypeUtil.isTextPlain(receivedType); if (isFile) { if (Intent.ACTION_SEND.equals(receivedIntent.getAction())) { mStreamsToUpload = Collections.singletonList(receivedIntent.getParcelableExtra(Intent.EXTRA_STREAM)); diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/util/MimeTypeUtil.java b/app/src/main/java/it/niedermann/nextcloud/deck/util/MimeTypeUtil.java index bdbb08a63..0390bf96d 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/util/MimeTypeUtil.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/util/MimeTypeUtil.java @@ -1,45 +1,41 @@ package it.niedermann.nextcloud.deck.util; +import androidx.annotation.Nullable; + import java.util.Locale; public class MimeTypeUtil { public static final String TEXT_PLAIN = "text/plain"; + public static final String TEXT_VCARD = "text/vcard"; public static final String APPLICATION_PDF = "application/pdf"; - /** - * @return 'True' if the mime type defines image - */ - public static boolean isImage(String mimeType) { + public static boolean isImage(@Nullable String mimeType) { return mimeType != null && mimeType.toLowerCase(Locale.ROOT).startsWith("image/") && !mimeType.toLowerCase(Locale.ROOT).contains("djvu"); } - /** - * @return 'True' the mime type defines video - */ - public static boolean isVideo(String mimeType) { + public static boolean isVideo(@Nullable String mimeType) { return mimeType != null && mimeType.toLowerCase(Locale.ROOT).startsWith("video/"); } - /** - * @return 'True' the mime type defines audio - */ - public static boolean isAudio(String mimeType) { + public static boolean isAudio(@Nullable String mimeType) { return mimeType != null && mimeType.toLowerCase(Locale.ROOT).startsWith("audio/"); } - /** - * @return 'True' if mime type defines text - */ - public static boolean isText(String mimeType) { + public static boolean isText(@Nullable String mimeType) { return mimeType != null && mimeType.toLowerCase(Locale.ROOT).startsWith("text/"); } - /** - * @return 'True' if mime type defines pdf - */ - public static boolean isPdf(String mimeType) { - return APPLICATION_PDF.equals(mimeType.toLowerCase(Locale.ROOT)); + public static boolean isTextPlain(@Nullable String mimeType) { + return mimeType != null && mimeType.toLowerCase(Locale.ROOT).startsWith(TEXT_PLAIN); + } + + public static boolean isContact(@Nullable String mimeType) { + return mimeType != null && mimeType.toLowerCase(Locale.ROOT).startsWith(TEXT_VCARD); + } + + public static boolean isPdf(@Nullable String mimeType) { + return mimeType != null && mimeType.toLowerCase(Locale.ROOT).startsWith(APPLICATION_PDF); } } diff --git a/app/src/main/res/drawable/ic_baseline_contact_mail_24.xml b/app/src/main/res/drawable/ic_baseline_contact_mail_24.xml new file mode 100644 index 000000000..79f9e21a8 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_contact_mail_24.xml @@ -0,0 +1,5 @@ +<vector android:autoMirrored="true" android:height="24dp" + android:tint="#757575" android:viewportHeight="24" + android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="@android:color/white" android:pathData="M21,8L21,7l-3,2 -3,-2v1l3,2 3,-2zM22,3L2,3C0.9,3 0,3.9 0,5v14c0,1.1 0.9,2 2,2h20c1.1,0 1.99,-0.9 1.99,-2L24,5c0,-1.1 -0.9,-2 -2,-2zM8,6c1.66,0 3,1.34 3,3s-1.34,3 -3,3 -3,-1.34 -3,-3 1.34,-3 3,-3zM14,18L2,18v-1c0,-2 4,-3.1 6,-3.1s6,1.1 6,3.1v1zM22,12h-8L14,6h8v6z"/> +</vector> diff --git a/app/src/test/java/it/niedermann/nextcloud/deck/MimeTypeUtilTest.java b/app/src/test/java/it/niedermann/nextcloud/deck/MimeTypeUtilTest.java index 757a6ec35..5b5528bdd 100644 --- a/app/src/test/java/it/niedermann/nextcloud/deck/MimeTypeUtilTest.java +++ b/app/src/test/java/it/niedermann/nextcloud/deck/MimeTypeUtilTest.java @@ -18,7 +18,7 @@ public class MimeTypeUtilTest { "image/jpeg", "image/png", "image/tiff", "image/svg", }; final String[] invalidMimeTypes = new String[]{ - "audio/jpg", "img/jpg", "application/octet-stream", "image/djvu" + "audio/jpg", "img/jpg", "application/octet-stream", "image/djvu", "", null }; for (String validMimeType : validMimeTypes) { @@ -36,7 +36,7 @@ public class MimeTypeUtilTest { "video/mkv", "video/mp4", "video/mp2", "ViDeO/avi", "VIDEO/mp4", "Video/mp2" }; final String[] invalidMimeTypes = new String[]{ - "audio/jpg", "img/jpg", "application/octet-stream" + "audio/jpg", "img/jpg", "application/octet-stream", "", null }; for (String validMimeType : validMimeTypes) { @@ -54,7 +54,7 @@ public class MimeTypeUtilTest { "audio/mp3", "audio/ogg", "audio/vorbis", "audio/flac", "Audio/mp3", "AUDIO/MP3" }; final String[] invalidMimeTypes = new String[]{ - "text/plain", "img/jpg", "application/octet-stream" + "text/plain", "img/jpg", "application/octet-stream", "", null }; for (String validMimeType : validMimeTypes) { @@ -72,7 +72,7 @@ public class MimeTypeUtilTest { "text/plain", "text/rtf", "text/PLAIN", "Text/Plain", "TEXT/rtf", "TEXT/RTF" }; final String[] invalidMimeTypes = new String[]{ - "audio/jpg", "img/jpg", "application/octet-stream" + "audio/jpg", "img/jpg", "application/octet-stream", "", null }; for (String validMimeType : validMimeTypes) { @@ -85,12 +85,48 @@ public class MimeTypeUtilTest { } @Test + public void isTextPlain() { + final String[] validMimeTypes = new String[]{ + "text/plain", "TEXT/PLAIN", "Text/Plain" + }; + final String[] invalidMimeTypes = new String[]{ + "text/rtf", "text/jpg", "", null + }; + + for (String validMimeType : validMimeTypes) { + assertTrue("Expecting " + validMimeType + " to be a valid text mimetype", MimeTypeUtil.isTextPlain(validMimeType)); + } + + for (String invalidMimeType : invalidMimeTypes) { + assertFalse("Expecting " + invalidMimeType + " to be an invalid text mimetype", MimeTypeUtil.isTextPlain(invalidMimeType)); + } + } + + @Test + public void isContact() { + final String[] validMimeTypes = new String[]{ + "text/vcard", "TEXT/VCARD", "Text/vCard", "text/VCard" + }; + final String[] invalidMimeTypes = new String[]{ + "text/plain", "text/rtf", "text/jpg", "", null + }; + + for (String validMimeType : validMimeTypes) { + assertTrue("Expecting " + validMimeType + " to be a valid text mimetype", MimeTypeUtil.isContact(validMimeType)); + } + + for (String invalidMimeType : invalidMimeTypes) { + assertFalse("Expecting " + invalidMimeType + " to be an invalid text mimetype", MimeTypeUtil.isContact(invalidMimeType)); + } + } + + @Test public void isPdf() { final String[] validMimeTypes = new String[]{ "application/pdf", "APPLICATION/PDF", "Application/Pdf" }; final String[] invalidMimeTypes = new String[]{ - "audio/jpg", "img/jpg", "application/octet-stream", "app/pdf" + "audio/jpg", "img/jpg", "application/octet-stream", "app/pdf", "", null }; for (String validMimeType : validMimeTypes) { diff --git a/fastlane/metadata/android/en-US/changelogs/1005006.txt b/fastlane/metadata/android/en-US/changelogs/1005006.txt new file mode 100644 index 000000000..16c4eef62 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/1005006.txt @@ -0,0 +1,35 @@ +1.5.6 + +- đ Fix sharing text based files like contacts + +1.5.5 + +- đĨ Enhanced sharing from third party apps into Deck + +1.5.4 + +- â Allow to share text as comment +- đ Fixed adding new lists + +1.5.3 + +- đ Delete attachments on failed uploads (#547) + +1.5.2 + +- đ Fix bug which prevented account imports +- đ Language updates + +1.5.1 + +- đ Activities do not load deterministically (#518) +- đ Card order not synced properly (#524) +- đ Improve attachment handling (#516) + +1.5.0 + +- âŠī¸ Reply to comments (#454) +- đĻ Archive all cards of a stack (#495) +- đ List not synchronized list is emptied (#501) +- đĨ Fix wrong avatars in multi account setup (#531) +- đ Fix NullPointerException when closing card immediately after opening before data has been loaded
\ No newline at end of file |