aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDocile-Alligator <25734209+Docile-Alligator@users.noreply.github.com>2024-03-12 02:56:44 +0000
committerDocile-Alligator <25734209+Docile-Alligator@users.noreply.github.com>2024-03-12 02:56:44 +0000
commitb2af137bf2192bf1764f9f982b1d62e6420c5ea5 (patch)
treed66e89c3b37f02fa0eae484985508dd2a983b112
parent1a2d0c397c453ae16cf6ae68aa88755e79e609bc (diff)
downloadinfinity-for-reddit-b2af137bf2192bf1764f9f982b1d62e6420c5ea5.tar
infinity-for-reddit-b2af137bf2192bf1764f9f982b1d62e6420c5ea5.tar.gz
infinity-for-reddit-b2af137bf2192bf1764f9f982b1d62e6420c5ea5.tar.bz2
infinity-for-reddit-b2af137bf2192bf1764f9f982b1d62e6420c5ea5.tar.lz
infinity-for-reddit-b2af137bf2192bf1764f9f982b1d62e6420c5ea5.tar.xz
infinity-for-reddit-b2af137bf2192bf1764f9f982b1d62e6420c5ea5.tar.zst
infinity-for-reddit-b2af137bf2192bf1764f9f982b1d62e6420c5ea5.zip
Edit comments with embedded images.
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/activities/CommentActivity.java4
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/activities/EditCommentActivity.java50
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostTextActivity.java4
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java4
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewUserDetailActivity.java4
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/bottomsheetfragments/CommentMoreBottomSheetFragment.java7
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/markdown/CustomMarkwonAdapter.java7
7 files changed, 59 insertions, 21 deletions
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CommentActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CommentActivity.java
index a0ef1052..78460e00 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CommentActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CommentActivity.java
@@ -574,8 +574,8 @@ public class CommentActivity extends BaseActivity implements UploadImageEnabledA
int start = Math.max(binding.commentCommentEditText.getSelectionStart(), 0);
int end = Math.max(binding.commentCommentEditText.getSelectionEnd(), 0);
binding.commentCommentEditText.getText().replace(Math.min(start, end), Math.max(start, end),
- "[" + uploadedImage.imageName + "](" + uploadedImage.imageUrlOrKey + ")",
- 0, "[]()".length() + uploadedImage.imageName.length() + uploadedImage.imageUrlOrKey.length());
+ "![](" + uploadedImage.imageUrlOrKey + ")",
+ 0, "![]()".length() + uploadedImage.imageUrlOrKey.length());
}
@Override
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/EditCommentActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/EditCommentActivity.java
index 04976d31..a8caa0f0 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/EditCommentActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/EditCommentActivity.java
@@ -28,6 +28,7 @@ import com.google.android.material.snackbar.Snackbar;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
+import org.json.JSONException;
import java.io.File;
import java.io.IOException;
@@ -42,6 +43,7 @@ import javax.inject.Named;
import butterknife.BindView;
import butterknife.ButterKnife;
import ml.docilealligator.infinityforreddit.Infinity;
+import ml.docilealligator.infinityforreddit.MediaMetadata;
import ml.docilealligator.infinityforreddit.R;
import ml.docilealligator.infinityforreddit.UploadImageEnabledActivity;
import ml.docilealligator.infinityforreddit.UploadedImage;
@@ -51,6 +53,7 @@ import ml.docilealligator.infinityforreddit.bottomsheetfragments.UploadedImagesB
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
import ml.docilealligator.infinityforreddit.customviews.LinearLayoutManagerBugFixed;
import ml.docilealligator.infinityforreddit.events.SwitchAccountEvent;
+import ml.docilealligator.infinityforreddit.markdown.RichTextJSONConverter;
import ml.docilealligator.infinityforreddit.utils.APIUtils;
import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils;
import ml.docilealligator.infinityforreddit.utils.Utils;
@@ -63,9 +66,10 @@ public class EditCommentActivity extends BaseActivity implements UploadImageEnab
public static final String EXTRA_CONTENT = "EC";
public static final String EXTRA_FULLNAME = "EF";
+ public static final String EXTRA_MEDIA_METADATA_LIST = "EMML";
public static final String EXTRA_POSITION = "EP";
- public static final String EXTRA_EDITED_COMMENT_CONTENT = "EECC";
- public static final String EXTRA_EDITED_COMMENT_POSITION = "EECP";
+ public static final String RETURN_EXTRA_EDITED_COMMENT_CONTENT = "REECC";
+ public static final String RETURN_EXTRA_EDITED_COMMENT_POSITION = "REECP";
private static final int PICK_IMAGE_REQUEST_CODE = 100;
private static final int CAPTURE_IMAGE_REQUEST_CODE = 200;
@@ -132,6 +136,25 @@ public class EditCommentActivity extends BaseActivity implements UploadImageEnab
mFullName = getIntent().getStringExtra(EXTRA_FULLNAME);
mAccessToken = mCurrentAccountSharedPreferences.getString(SharedPreferencesUtils.ACCESS_TOKEN, null);
mCommentContent = getIntent().getStringExtra(EXTRA_CONTENT);
+ ArrayList<MediaMetadata> mediaMetadataList = getIntent().getParcelableArrayListExtra(EXTRA_MEDIA_METADATA_LIST);
+
+ if (mediaMetadataList != null) {
+ StringBuilder sb = new StringBuilder(mCommentContent);
+ for (MediaMetadata m : mediaMetadataList) {
+ int index = sb.indexOf(m.original.url);
+ if (index >= 0) {
+ if (index > 0 && sb.charAt(index - 1) == '(') {
+ sb.replace(index, index + m.original.url.length(), m.id);
+ } else {
+ sb.insert(index + m.original.url.length(), ')')
+ .insert(index, "![](")
+ .replace(index + 4, index + 4 + m.original.url.length(), m.id);
+ }
+ uploadedImages.add(new UploadedImage(m.id, m.id));
+ }
+ }
+ mCommentContent = sb.toString();
+ }
contentEditText.setText(mCommentContent);
if (savedInstanceState != null) {
@@ -139,7 +162,7 @@ public class EditCommentActivity extends BaseActivity implements UploadImageEnab
}
MarkdownBottomBarRecyclerViewAdapter adapter = new MarkdownBottomBarRecyclerViewAdapter(
- mCustomThemeWrapper, new MarkdownBottomBarRecyclerViewAdapter.ItemClickListener() {
+ mCustomThemeWrapper, true, new MarkdownBottomBarRecyclerViewAdapter.ItemClickListener() {
@Override
public void onClick(int item) {
MarkdownBottomBarRecyclerViewAdapter.bindEditTextWithItemClickListener(
@@ -232,7 +255,18 @@ public class EditCommentActivity extends BaseActivity implements UploadImageEnab
Map<String, String> params = new HashMap<>();
params.put(APIUtils.THING_ID_KEY, mFullName);
- params.put(APIUtils.TEXT_KEY, content);
+ if (!uploadedImages.isEmpty()) {
+ try {
+ params.put(APIUtils.RICHTEXT_JSON_KEY, new RichTextJSONConverter().constructRichTextJSON(this, content, uploadedImages));
+ params.put(APIUtils.TEXT_KEY, "");
+ } catch (JSONException e) {
+ isSubmitting = false;
+ Snackbar.make(coordinatorLayout, R.string.convert_to_richtext_json_failed, Snackbar.LENGTH_SHORT).show();
+ return;
+ }
+ } else {
+ params.put(APIUtils.TEXT_KEY, content);
+ }
mOauthRetrofit.create(RedditAPI.class)
.editPostOrComment(APIUtils.getOAuthHeader(mAccessToken), params)
@@ -244,8 +278,8 @@ public class EditCommentActivity extends BaseActivity implements UploadImageEnab
Toast.makeText(EditCommentActivity.this, R.string.edit_success, Toast.LENGTH_SHORT).show();
Intent returnIntent = new Intent();
- returnIntent.putExtra(EXTRA_EDITED_COMMENT_CONTENT, Utils.modifyMarkdown(content));
- returnIntent.putExtra(EXTRA_EDITED_COMMENT_POSITION, getIntent().getExtras().getInt(EXTRA_POSITION));
+ returnIntent.putExtra(RETURN_EXTRA_EDITED_COMMENT_CONTENT, Utils.modifyMarkdown(content));
+ returnIntent.putExtra(RETURN_EXTRA_EDITED_COMMENT_POSITION, getIntent().getExtras().getInt(EXTRA_POSITION));
setResult(RESULT_OK, returnIntent);
finish();
@@ -353,7 +387,7 @@ public class EditCommentActivity extends BaseActivity implements UploadImageEnab
int start = Math.max(contentEditText.getSelectionStart(), 0);
int end = Math.max(contentEditText.getSelectionEnd(), 0);
contentEditText.getText().replace(Math.min(start, end), Math.max(start, end),
- "[" + uploadedImage.imageName + "](" + uploadedImage.imageUrlOrKey + ")",
- 0, "[]()".length() + uploadedImage.imageName.length() + uploadedImage.imageUrlOrKey.length());
+ "![](" + uploadedImage.imageUrlOrKey + ")",
+ 0, "![]()".length() + uploadedImage.imageUrlOrKey.length());
}
}
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostTextActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostTextActivity.java
index da03b3fb..8df14433 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostTextActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostTextActivity.java
@@ -727,8 +727,8 @@ public class PostTextActivity extends BaseActivity implements FlairBottomSheetFr
int start = Math.max(contentEditText.getSelectionStart(), 0);
int end = Math.max(contentEditText.getSelectionEnd(), 0);
contentEditText.getText().replace(Math.min(start, end), Math.max(start, end),
- "![" + uploadedImage.getCaption() + "](" + uploadedImage.imageUrlOrKey + ")",
- 0, "![]()".length() + uploadedImage.getCaption().length() + uploadedImage.imageUrlOrKey.length());
+ "![](" + uploadedImage.imageUrlOrKey + ")",
+ 0, "![]()".length() + uploadedImage.imageUrlOrKey.length());
}
@Override
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java
index 4547e342..a34ea1b0 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java
@@ -757,8 +757,8 @@ public class ViewPostDetailActivity extends BaseActivity implements SortTypeSele
if (requestCode == EDIT_COMMENT_REQUEST_CODE) {
if (data != null && resultCode == Activity.RESULT_OK) {
editComment(null,
- data.getStringExtra(EditCommentActivity.EXTRA_EDITED_COMMENT_CONTENT),
- data.getExtras().getInt(EditCommentActivity.EXTRA_EDITED_COMMENT_POSITION));
+ data.getStringExtra(EditCommentActivity.RETURN_EXTRA_EDITED_COMMENT_CONTENT),
+ data.getExtras().getInt(EditCommentActivity.RETURN_EXTRA_EDITED_COMMENT_POSITION));
}
} else if (requestCode == CommentActivity.WRITE_COMMENT_REQUEST_CODE) {
if (data != null && resultCode == Activity.RESULT_OK) {
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewUserDetailActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewUserDetailActivity.java
index 6fd6a882..9ab1e2d6 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewUserDetailActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewUserDetailActivity.java
@@ -1215,8 +1215,8 @@ public class ViewUserDetailActivity extends BaseActivity implements SortTypeSele
if (data != null) {
if (sectionsPagerAdapter != null) {
sectionsPagerAdapter.editComment(
- data.getStringExtra(EditCommentActivity.EXTRA_EDITED_COMMENT_CONTENT),
- data.getExtras().getInt(EditCommentActivity.EXTRA_EDITED_COMMENT_POSITION));
+ data.getStringExtra(EditCommentActivity.RETURN_EXTRA_EDITED_COMMENT_CONTENT),
+ data.getExtras().getInt(EditCommentActivity.RETURN_EXTRA_EDITED_COMMENT_POSITION));
}
}
} else if (requestCode == ADD_TO_MULTIREDDIT_REQUEST_CODE) {
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/bottomsheetfragments/CommentMoreBottomSheetFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/bottomsheetfragments/CommentMoreBottomSheetFragment.java
index 3026029a..6daf7b86 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/bottomsheetfragments/CommentMoreBottomSheetFragment.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/bottomsheetfragments/CommentMoreBottomSheetFragment.java
@@ -16,6 +16,9 @@ import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
+import java.util.ArrayList;
+
+import ml.docilealligator.infinityforreddit.MediaMetadata;
import ml.docilealligator.infinityforreddit.R;
import ml.docilealligator.infinityforreddit.account.Account;
import ml.docilealligator.infinityforreddit.activities.BaseActivity;
@@ -81,6 +84,10 @@ public class CommentMoreBottomSheetFragment extends LandscapeExpandedRoundedBott
Intent intent = new Intent(activity, EditCommentActivity.class);
intent.putExtra(EditCommentActivity.EXTRA_FULLNAME, comment.getFullName());
intent.putExtra(EditCommentActivity.EXTRA_CONTENT, comment.getCommentMarkdown());
+ if (comment.getMediaMetadataMap() != null) {
+ ArrayList<MediaMetadata> mediaMetadataList = new ArrayList<>(comment.getMediaMetadataMap().values());
+ intent.putParcelableArrayListExtra(EditCommentActivity.EXTRA_MEDIA_METADATA_LIST, mediaMetadataList);
+ }
intent.putExtra(EditCommentActivity.EXTRA_POSITION, bundle.getInt(EXTRA_POSITION));
if (activity instanceof ViewPostDetailActivity) {
activity.startActivityForResult(intent, ViewPostDetailActivity.EDIT_COMMENT_REQUEST_CODE);
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/markdown/CustomMarkwonAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/markdown/CustomMarkwonAdapter.java
index 530b5dc4..d3cd46a3 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/markdown/CustomMarkwonAdapter.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/markdown/CustomMarkwonAdapter.java
@@ -1,6 +1,5 @@
package ml.docilealligator.infinityforreddit.markdown;
-import android.util.Log;
import android.util.SparseArray;
import android.view.LayoutInflater;
import android.view.View;
@@ -16,8 +15,6 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.commonmark.node.Node;
-import org.json.JSONException;
-import org.json.JSONObject;
import java.util.Collections;
import java.util.List;
@@ -92,12 +89,12 @@ public class CustomMarkwonAdapter extends MarkwonAdapter {
public void setParsedMarkdown(@NonNull Markwon markwon, @NonNull List<Node> nodes) {
// clear all entries before applying
- try {
+ /*try {
JSONObject object = new RichTextJSONConverter().constructRichTextJSON(nodes);
Log.i("asdf", "s" + object);
} catch (JSONException e) {
throw new RuntimeException(e);
- }
+ }*/
defaultEntry.clear();