aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java
diff options
context:
space:
mode:
authorAlex Ning <chineseperson5@gmail.com>2019-10-28 09:31:47 +0000
committerAlex Ning <chineseperson5@gmail.com>2019-10-28 09:31:47 +0000
commit4085c0c40c20e13415994e13a30dc3152ef5b33a (patch)
tree75535e6b84e71c441e6bc26fa1a1b2c1e55e806c /app/src/main/java
parent75452b764d0a0edb4c227cb97c0c7f06c8e6300b (diff)
downloadinfinity-for-reddit-4085c0c40c20e13415994e13a30dc3152ef5b33a.tar
infinity-for-reddit-4085c0c40c20e13415994e13a30dc3152ef5b33a.tar.gz
infinity-for-reddit-4085c0c40c20e13415994e13a30dc3152ef5b33a.tar.bz2
infinity-for-reddit-4085c0c40c20e13415994e13a30dc3152ef5b33a.tar.lz
infinity-for-reddit-4085c0c40c20e13415994e13a30dc3152ef5b33a.tar.xz
infinity-for-reddit-4085c0c40c20e13415994e13a30dc3152ef5b33a.tar.zst
infinity-for-reddit-4085c0c40c20e13415994e13a30dc3152ef5b33a.zip
Display a content preview in PostFragment for text posts.
Diffstat (limited to 'app/src/main/java')
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/Activity/PostImageActivity.java2
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/Activity/PostLinkActivity.java2
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/Activity/PostTextActivity.java2
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/Activity/PostVideoActivity.java2
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/PostRecyclerViewAdapter.java4
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/AppComponent.java1
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/JSONUtils.java1
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/NotificationUtils.java6
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/ParsePost.java20
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/Post.java11
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/Service/SubmitPostService.java (renamed from app/src/main/java/ml/docilealligator/infinityforreddit/SubmitPostService.java)7
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/SubmitPost.java30
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/Utils.java18
13 files changed, 79 insertions, 27 deletions
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/PostImageActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/PostImageActivity.java
index a9b138bb..b1ae72f3 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/PostImageActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/PostImageActivity.java
@@ -51,7 +51,7 @@ import ml.docilealligator.infinityforreddit.Fragment.FlairBottomSheetFragment;
import ml.docilealligator.infinityforreddit.Infinity;
import ml.docilealligator.infinityforreddit.R;
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
-import ml.docilealligator.infinityforreddit.SubmitPostService;
+import ml.docilealligator.infinityforreddit.Service.SubmitPostService;
import pl.droidsonroids.gif.GifImageView;
import retrofit2.Retrofit;
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/PostLinkActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/PostLinkActivity.java
index 2c8f33b5..6abce5fb 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/PostLinkActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/PostLinkActivity.java
@@ -41,7 +41,7 @@ import ml.docilealligator.infinityforreddit.Infinity;
import ml.docilealligator.infinityforreddit.R;
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
import ml.docilealligator.infinityforreddit.RedditUtils;
-import ml.docilealligator.infinityforreddit.SubmitPostService;
+import ml.docilealligator.infinityforreddit.Service.SubmitPostService;
import pl.droidsonroids.gif.GifImageView;
import retrofit2.Retrofit;
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/PostTextActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/PostTextActivity.java
index 7c034945..216d2c3b 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/PostTextActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/PostTextActivity.java
@@ -41,7 +41,7 @@ import ml.docilealligator.infinityforreddit.Infinity;
import ml.docilealligator.infinityforreddit.R;
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
import ml.docilealligator.infinityforreddit.RedditUtils;
-import ml.docilealligator.infinityforreddit.SubmitPostService;
+import ml.docilealligator.infinityforreddit.Service.SubmitPostService;
import pl.droidsonroids.gif.GifImageView;
import retrofit2.Retrofit;
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/PostVideoActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/PostVideoActivity.java
index 68345423..f0a0aa99 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/PostVideoActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/PostVideoActivity.java
@@ -53,7 +53,7 @@ import ml.docilealligator.infinityforreddit.Fragment.FlairBottomSheetFragment;
import ml.docilealligator.infinityforreddit.Infinity;
import ml.docilealligator.infinityforreddit.R;
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
-import ml.docilealligator.infinityforreddit.SubmitPostService;
+import ml.docilealligator.infinityforreddit.Service.SubmitPostService;
import pl.droidsonroids.gif.GifImageView;
import retrofit2.Retrofit;
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/PostRecyclerViewAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/PostRecyclerViewAdapter.java
index 62d5277e..f59cfff5 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/PostRecyclerViewAdapter.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/PostRecyclerViewAdapter.java
@@ -468,9 +468,9 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
break;
case Post.TEXT_TYPE:
((DataViewHolder) holder).typeTextView.setText(R.string.text);
- if (post.getSelfText() != null && !post.getSelfText().equals("")) {
+ if (post.getSelfTextPlainTrimmed() != null && !post.getSelfTextPlainTrimmed().equals("")) {
((DataViewHolder) holder).contentTextView.setVisibility(View.VISIBLE);
- ((DataViewHolder) holder).contentTextView.setText(post.getSelfText());
+ ((DataViewHolder) holder).contentTextView.setText(post.getSelfTextPlainTrimmed());
}
break;
}
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/AppComponent.java b/app/src/main/java/ml/docilealligator/infinityforreddit/AppComponent.java
index 4c10e9c2..4ca67f58 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/AppComponent.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/AppComponent.java
@@ -36,6 +36,7 @@ import ml.docilealligator.infinityforreddit.Fragment.PostFragment;
import ml.docilealligator.infinityforreddit.Fragment.SubredditListingFragment;
import ml.docilealligator.infinityforreddit.Fragment.SubscribedSubredditsListingFragment;
import ml.docilealligator.infinityforreddit.Fragment.UserListingFragment;
+import ml.docilealligator.infinityforreddit.Service.SubmitPostService;
import ml.docilealligator.infinityforreddit.Settings.MainPreferenceFragment;
import ml.docilealligator.infinityforreddit.Settings.NotificationPreferenceFragment;
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/JSONUtils.java b/app/src/main/java/ml/docilealligator/infinityforreddit/JSONUtils.java
index 62322490..2c0ab119 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/JSONUtils.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/JSONUtils.java
@@ -14,6 +14,7 @@ public class JSONUtils {
public static final String NAME_KEY = "name";
public static final String SUBREDDIT_NAME_PREFIX_KEY = "subreddit_name_prefixed";
public static final String SELFTEXT_KEY = "selftext";
+ public static final String SELFTEXT_HTML_KEY = "selftext_html";
public static final String AUTHOR_KEY = "author";
public static final String LINK_AUTHOR_KEY = "link_author";
public static final String LINK_FLAIR_TEXT_KEY = "link_flair_text";
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/NotificationUtils.java b/app/src/main/java/ml/docilealligator/infinityforreddit/NotificationUtils.java
index 4b985563..6a3b9acb 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/NotificationUtils.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/NotificationUtils.java
@@ -7,11 +7,11 @@ import android.content.Context;
import androidx.core.app.NotificationCompat;
import androidx.core.app.NotificationManagerCompat;
-class NotificationUtils {
- static final String CHANNEL_SUBMIT_POST = "Submit Post";
+public class NotificationUtils {
+ public static final String CHANNEL_SUBMIT_POST = "Submit Post";
static final String CHANNEL_ID_NEW_MESSAGES = "new_messages";
static final String CHANNEL_NEW_MESSAGES = "New Messages";
- static final int SUBMIT_POST_SERVICE_NOTIFICATION_ID = 10000;
+ public static final int SUBMIT_POST_SERVICE_NOTIFICATION_ID = 10000;
private static final int SUMMARY_BASE_ID_UNREAD_MESSAGE = 0;
private static final int NOTIFICATION_BASE_ID_UNREAD_MESSAGE = 1;
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/ParsePost.java b/app/src/main/java/ml/docilealligator/infinityforreddit/ParsePost.java
index 9ab9b097..ef79dc90 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/ParsePost.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/ParsePost.java
@@ -116,6 +116,16 @@ public class ParsePost {
post.setSelfText("");
} else {
post.setSelfText(Utils.addSubredditAndUserLink(data.getString(JSONUtils.SELFTEXT_KEY).trim()));
+ if (data.isNull(JSONUtils.SELFTEXT_HTML_KEY)) {
+ post.setSelfTextPlainTrimmed("");
+ } else {
+ String selfTextPlain = Utils.trimTrailingWhitespace(
+ Html.fromHtml(data.getString(JSONUtils.SELFTEXT_HTML_KEY))).toString();
+ if (selfTextPlain.length() > 150) {
+ selfTextPlain = selfTextPlain.substring(150);
+ }
+ post.setSelfTextPlainTrimmed(selfTextPlain);
+ }
}
} else {
//No preview link post
@@ -202,6 +212,16 @@ public class ParsePost {
post.setSelfText("");
} else {
post.setSelfText(Utils.addSubredditAndUserLink(data.getString(JSONUtils.SELFTEXT_KEY).trim()));
+ if (data.isNull(JSONUtils.SELFTEXT_HTML_KEY)) {
+ post.setSelfTextPlainTrimmed("");
+ } else {
+ String selfTextPlain = Utils.trimTrailingWhitespace(
+ Html.fromHtml(data.getString(JSONUtils.SELFTEXT_HTML_KEY))).toString();
+ if (selfTextPlain.length() > 150) {
+ selfTextPlain = selfTextPlain.substring(150);
+ }
+ post.setSelfTextPlainTrimmed(selfTextPlain);
+ }
}
} else {
//Link post
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Post.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Post.java
index 2aee9455..1f2c3681 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/Post.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Post.java
@@ -37,6 +37,7 @@ public class Post implements Parcelable {
private String postTime;
private String title;
private String selfText;
+ private String selfTextPlainTrimmed;
private String previewUrl;
private String url;
private String videoUrl;
@@ -162,6 +163,7 @@ public class Post implements Parcelable {
postTime = in.readString();
title = in.readString();
selfText = in.readString();
+ selfTextPlainTrimmed = in.readString();
previewUrl = in.readString();
url = in.readString();
videoUrl = in.readString();
@@ -245,6 +247,14 @@ public class Post implements Parcelable {
this.selfText = selfText;
}
+ public String getSelfTextPlainTrimmed() {
+ return selfTextPlainTrimmed;
+ }
+
+ public void setSelfTextPlainTrimmed(String selfTextPlainTrimmed) {
+ this.selfTextPlainTrimmed = selfTextPlainTrimmed;
+ }
+
public String getPreviewUrl() {
return previewUrl;
}
@@ -395,6 +405,7 @@ public class Post implements Parcelable {
parcel.writeString(postTime);
parcel.writeString(title);
parcel.writeString(selfText);
+ parcel.writeString(selfTextPlainTrimmed);
parcel.writeString(previewUrl);
parcel.writeString(url);
parcel.writeString(videoUrl);
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/SubmitPostService.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Service/SubmitPostService.java
index e065459c..2b6ad9ce 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/SubmitPostService.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Service/SubmitPostService.java
@@ -1,4 +1,4 @@
-package ml.docilealligator.infinityforreddit;
+package ml.docilealligator.infinityforreddit.Service;
import android.app.Notification;
import android.app.NotificationChannel;
@@ -33,6 +33,11 @@ import javax.inject.Named;
import ml.docilealligator.infinityforreddit.Event.SubmitImagePostEvent;
import ml.docilealligator.infinityforreddit.Event.SubmitTextOrLinkPostEvent;
import ml.docilealligator.infinityforreddit.Event.SubmitVideoPostEvent;
+import ml.docilealligator.infinityforreddit.Infinity;
+import ml.docilealligator.infinityforreddit.NotificationUtils;
+import ml.docilealligator.infinityforreddit.Post;
+import ml.docilealligator.infinityforreddit.R;
+import ml.docilealligator.infinityforreddit.SubmitPost;
import retrofit2.Retrofit;
public class SubmitPostService extends Service {
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/SubmitPost.java b/app/src/main/java/ml/docilealligator/infinityforreddit/SubmitPost.java
index d3ce5719..f5192823 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/SubmitPost.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/SubmitPost.java
@@ -28,19 +28,19 @@ import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
-class SubmitPost {
- static void submitTextOrLinkPost(Retrofit oauthRetrofit, String accessToken,
- Locale locale, String subredditName, String title, String content,
- String flair, boolean isSpoiler, boolean isNSFW, String kind,
- SubmitPostListener submitPostListener) {
+public class SubmitPost {
+ public static void submitTextOrLinkPost(Retrofit oauthRetrofit, String accessToken,
+ Locale locale, String subredditName, String title, String content,
+ String flair, boolean isSpoiler, boolean isNSFW, String kind,
+ SubmitPostListener submitPostListener) {
submitPost(oauthRetrofit, accessToken, locale, subredditName, title, content,
flair, isSpoiler, isNSFW, kind, null, submitPostListener);
}
- static void submitImagePost(Retrofit oauthRetrofit, Retrofit uploadMediaRetrofit,
- String accessToken, Locale locale,
- String subredditName, String title, Bitmap image, String flair,
- boolean isSpoiler, boolean isNSFW, SubmitPostListener submitPostListener) {
+ public static void submitImagePost(Retrofit oauthRetrofit, Retrofit uploadMediaRetrofit,
+ String accessToken, Locale locale,
+ String subredditName, String title, Bitmap image, String flair,
+ boolean isSpoiler, boolean isNSFW, SubmitPostListener submitPostListener) {
uploadImage(oauthRetrofit, uploadMediaRetrofit, accessToken, image,
new UploadImageListener() {
@Override
@@ -57,11 +57,11 @@ class SubmitPost {
});
}
- static void submitVideoPost(Retrofit oauthRetrofit, Retrofit uploadMediaRetrofit,
- Retrofit uploadVideoRetrofit, String accessToken,
- Locale locale, String subredditName, String title, byte[] buffer, String mimeType,
- Bitmap posterBitmap, String flair, boolean isSpoiler, boolean isNSFW,
- SubmitPostListener submitPostListener) {
+ public static void submitVideoPost(Retrofit oauthRetrofit, Retrofit uploadMediaRetrofit,
+ Retrofit uploadVideoRetrofit, String accessToken,
+ Locale locale, String subredditName, String title, byte[] buffer, String mimeType,
+ Bitmap posterBitmap, String flair, boolean isSpoiler, boolean isNSFW,
+ SubmitPostListener submitPostListener) {
RedditAPI api = oauthRetrofit.create(RedditAPI.class);
String fileType = mimeType.substring(mimeType.indexOf("/") + 1);
@@ -341,7 +341,7 @@ class SubmitPost {
}
}
- interface SubmitPostListener {
+ public interface SubmitPostListener {
void submitSuccessful(Post post);
void submitFailed(@Nullable String errorMessage);
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Utils.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Utils.java
index 3e3d4e54..cebff4ea 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/Utils.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Utils.java
@@ -2,7 +2,21 @@ package ml.docilealligator.infinityforreddit;
public class Utils {
public static String addSubredditAndUserLink(String markdown) {
- return markdown.replaceAll("\n", " ")
- .replaceAll("((?<=[\\s])|^)/{0,1}[ru]/\\w+/{0,1}", "[$0]($0)");
+ return markdown.replaceAll("((?<=[\\s])|^)/{0,1}[rRuU]/\\w+/{0,1}", "[$0]($0)");
+ }
+
+ public static CharSequence trimTrailingWhitespace(CharSequence source) {
+
+ if(source == null)
+ return "";
+
+ int i = source.length();
+
+ // loop back to the first non-whitespace character
+ do {
+ i--;
+ } while (i >= 0 && Character.isWhitespace(source.charAt(i)));
+
+ return source.subSequence(0, i+1);
}
}