From b5e4e5e50f6912f52e115d0cc23d6eb722f2ea51 Mon Sep 17 00:00:00 2001 From: stom79 Date: Sat, 23 Feb 2019 08:51:57 +0100 Subject: [PATCH 1/6] Add custom emoji image. --- .../activities/CustomSharingActivity.java | 75 ++++++++++++------- 1 file changed, 47 insertions(+), 28 deletions(-) diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/CustomSharingActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/CustomSharingActivity.java index f562eb1a5..e66fb1f66 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/CustomSharingActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/CustomSharingActivity.java @@ -34,6 +34,7 @@ import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; +import java.util.List; import java.util.Set; import es.dmoral.toasty.Toasty; @@ -41,6 +42,7 @@ import fr.gouv.etalab.mastodon.R; import fr.gouv.etalab.mastodon.asynctasks.CustomSharingAsyncTask; import fr.gouv.etalab.mastodon.client.CustomSharingResponse; import fr.gouv.etalab.mastodon.client.Entities.Account; +import fr.gouv.etalab.mastodon.client.Entities.Emojis; import fr.gouv.etalab.mastodon.client.Entities.Status; import fr.gouv.etalab.mastodon.helper.Helper; import fr.gouv.etalab.mastodon.interfaces.OnCustomSharingInterface; @@ -128,18 +130,20 @@ public class CustomSharingActivity extends BaseActivity implements OnCustomShari finish(); return; } - bundle_content = status.getContentSpan().toString(); + if (status.getReblog() != null) { bundle_url = status.getReblog().getUrl(); bundle_id = status.getReblog().getUri(); bundle_source = status.getReblog().getAccount().getAcct(); bundle_tags = status.getReblog().getTagsString(); + bundle_content = formatedContent(status.getReblog().getContent(), status.getReblog().getEmojis()); } else { bundle_url = status.getUrl(); bundle_id = status.getUri(); bundle_source = status.getAccount().getAcct(); bundle_tags = status.getTagsString(); + bundle_content = formatedContent(status.getContent(), status.getEmojis()); } if (!bundle_source.contains("@")) { @@ -218,40 +222,55 @@ public class CustomSharingActivity extends BaseActivity implements OnCustomShari .authority(server) .appendPath(path); Set args = uri.getQueryParameterNames(); - Boolean paramFound = false; + boolean paramFound; for (String param_name : args) { paramFound = false; String param_value = uri.getQueryParameter(param_name); - switch(param_value) { - case "${url}": - paramFound = true; - builder.appendQueryParameter(param_name, bundle_url); - break; - case "${title}": - paramFound = true; - builder.appendQueryParameter(param_name, title); - break; - case "${source}": - paramFound = true; - builder.appendQueryParameter(param_name, bundle_source); - break; - case "${id}": - paramFound = true; - builder.appendQueryParameter(param_name, bundle_id); - break; - case "${description}": - paramFound = true; - builder.appendQueryParameter(param_name, description); - break; - case "${keywords}": - paramFound = true; - builder.appendQueryParameter(param_name, keywords); - break; - } + if(param_value != null) + switch(param_value) { + case "${url}": + paramFound = true; + builder.appendQueryParameter(param_name, bundle_url); + break; + case "${title}": + paramFound = true; + builder.appendQueryParameter(param_name, title); + break; + case "${source}": + paramFound = true; + builder.appendQueryParameter(param_name, bundle_source); + break; + case "${id}": + paramFound = true; + builder.appendQueryParameter(param_name, bundle_id); + break; + case "${description}": + paramFound = true; + builder.appendQueryParameter(param_name, description); + break; + case "${keywords}": + paramFound = true; + builder.appendQueryParameter(param_name, keywords); + break; + } if (!paramFound) { builder.appendQueryParameter(param_name, param_value); } } return builder.build().toString(); } + + + private String formatedContent(String content, List emojis){ + //Avoid null content + if( content == null) + return ""; + if( emojis == null || emojis.size() == 0) + return content; + final int[] i = {0}; + for (Emojis emoji : emojis) { + content = content.replaceAll(":"+emoji.getShortcode()+":",""); + } + return content; + } } From 860d52d384af027b542c89f9d5800a70dc882f97 Mon Sep 17 00:00:00 2001 From: stom79 Date: Sat, 23 Feb 2019 08:55:39 +0100 Subject: [PATCH 2/6] add desciption --- .../gouv/etalab/mastodon/activities/CustomSharingActivity.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/CustomSharingActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/CustomSharingActivity.java index e66fb1f66..4a7301b11 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/CustomSharingActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/CustomSharingActivity.java @@ -267,9 +267,8 @@ public class CustomSharingActivity extends BaseActivity implements OnCustomShari return ""; if( emojis == null || emojis.size() == 0) return content; - final int[] i = {0}; for (Emojis emoji : emojis) { - content = content.replaceAll(":"+emoji.getShortcode()+":",""); + content = content.replaceAll(":"+emoji.getShortcode()+":",""+emoji.getShortcode()+""); } return content; } From bf702b742ee7ddb9e899915558c8330d6ca63e86 Mon Sep 17 00:00:00 2001 From: stom79 Date: Sat, 23 Feb 2019 09:14:09 +0100 Subject: [PATCH 3/6] Only put the status for reblog. That avoids too much management --- .../activities/CustomSharingActivity.java | 19 ++++++------------- .../mastodon/drawers/StatusListAdapter.java | 7 ++++++- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/CustomSharingActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/CustomSharingActivity.java index 4a7301b11..e07fb876f 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/CustomSharingActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/CustomSharingActivity.java @@ -132,19 +132,11 @@ public class CustomSharingActivity extends BaseActivity implements OnCustomShari } - if (status.getReblog() != null) { - bundle_url = status.getReblog().getUrl(); - bundle_id = status.getReblog().getUri(); - bundle_source = status.getReblog().getAccount().getAcct(); - bundle_tags = status.getReblog().getTagsString(); - bundle_content = formatedContent(status.getReblog().getContent(), status.getReblog().getEmojis()); - } else { - bundle_url = status.getUrl(); - bundle_id = status.getUri(); - bundle_source = status.getAccount().getAcct(); - bundle_tags = status.getTagsString(); - bundle_content = formatedContent(status.getContent(), status.getEmojis()); - } + bundle_url = status.getUrl(); + bundle_id = status.getUri(); + bundle_source = status.getAccount().getAcct(); + bundle_tags = status.getTagsString(); + bundle_content = formatedContent(status.getContent(), status.getEmojis()); if (!bundle_source.contains("@")) { bundle_source = bundle_source + "@" + account.getInstance(); @@ -252,6 +244,7 @@ public class CustomSharingActivity extends BaseActivity implements OnCustomShari paramFound = true; builder.appendQueryParameter(param_name, keywords); break; + } if (!paramFound) { builder.appendQueryParameter(param_name, param_value); diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/StatusListAdapter.java b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/StatusListAdapter.java index 1091aff1d..c23393574 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/StatusListAdapter.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/StatusListAdapter.java @@ -2259,7 +2259,12 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct case R.id.action_custom_sharing: Intent intentCustomSharing = new Intent(context, CustomSharingActivity.class); Bundle bCustomSharing = new Bundle(); - bCustomSharing.putParcelable("status", status); + if (status.getReblog() != null) { + bCustomSharing.putParcelable("status", status.getReblog()); + } else { + bCustomSharing.putParcelable("status", status); + + } intentCustomSharing.putExtras(bCustomSharing); context.startActivity(intentCustomSharing); return true; From 57777563bb2a9a17240b1be0ac57f481af54a676 Mon Sep 17 00:00:00 2001 From: stom79 Date: Sat, 23 Feb 2019 09:21:29 +0100 Subject: [PATCH 4/6] Add thumbnail from card when available --- .../etalab/mastodon/activities/CustomSharingActivity.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/CustomSharingActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/CustomSharingActivity.java index e07fb876f..e4d192be7 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/CustomSharingActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/CustomSharingActivity.java @@ -63,7 +63,7 @@ public class CustomSharingActivity extends BaseActivity implements OnCustomShari private Button set_custom_sharing_save; private ImageView pp_actionBar; private String title, description, keywords, custom_sharing_url, encodedCustomSharingURL; - private String bundle_url, bundle_source, bundle_id, bundle_tags, bundle_content; + private String bundle_url, bundle_source, bundle_id, bundle_tags, bundle_content, bundle_thumbnailurl; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -137,7 +137,8 @@ public class CustomSharingActivity extends BaseActivity implements OnCustomShari bundle_source = status.getAccount().getAcct(); bundle_tags = status.getTagsString(); bundle_content = formatedContent(status.getContent(), status.getEmojis()); - + if( status.getCard() != null && status.getCard().getImage() != null) + bundle_thumbnailurl = status.getCard().getImage(); if (!bundle_source.contains("@")) { bundle_source = bundle_source + "@" + account.getInstance(); } @@ -246,6 +247,8 @@ public class CustomSharingActivity extends BaseActivity implements OnCustomShari break; } + if (bundle_thumbnailurl != null) + builder.appendQueryParameter("thumbnailurl", bundle_thumbnailurl); if (!paramFound) { builder.appendQueryParameter(param_name, param_value); } From cb1f86ae115b12a59158735f54d7dcbf6e3faa6c Mon Sep 17 00:00:00 2001 From: stom79 Date: Sat, 23 Feb 2019 09:42:10 +0100 Subject: [PATCH 5/6] make image smaller --- .../gouv/etalab/mastodon/activities/CustomSharingActivity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/CustomSharingActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/CustomSharingActivity.java index e4d192be7..db14cd897 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/CustomSharingActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/CustomSharingActivity.java @@ -264,7 +264,7 @@ public class CustomSharingActivity extends BaseActivity implements OnCustomShari if( emojis == null || emojis.size() == 0) return content; for (Emojis emoji : emojis) { - content = content.replaceAll(":"+emoji.getShortcode()+":",""+emoji.getShortcode()+""); + content = content.replaceAll(":"+emoji.getShortcode()+":",""+emoji.getShortcode()+""); } return content; } From f66e389275de19f94d6147dd486398ab460a1c01 Mon Sep 17 00:00:00 2001 From: stom79 Date: Sat, 23 Feb 2019 09:54:05 +0100 Subject: [PATCH 6/6] Automatically add author and image --- .../activities/CustomSharingActivity.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/CustomSharingActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/CustomSharingActivity.java index db14cd897..822ae94ab 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/CustomSharingActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/CustomSharingActivity.java @@ -20,9 +20,11 @@ import android.content.SharedPreferences; import android.database.sqlite.SQLiteDatabase; import android.net.Uri; import android.os.AsyncTask; +import android.os.Build; import android.os.Bundle; import android.support.v7.app.ActionBar; import android.support.v7.widget.Toolbar; +import android.text.Html; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.MenuItem; @@ -63,7 +65,7 @@ public class CustomSharingActivity extends BaseActivity implements OnCustomShari private Button set_custom_sharing_save; private ImageView pp_actionBar; private String title, description, keywords, custom_sharing_url, encodedCustomSharingURL; - private String bundle_url, bundle_source, bundle_id, bundle_tags, bundle_content, bundle_thumbnailurl; + private String bundle_url, bundle_source, bundle_id, bundle_tags, bundle_content, bundle_thumbnailurl, bundle_creator; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -131,7 +133,7 @@ public class CustomSharingActivity extends BaseActivity implements OnCustomShari return; } - + bundle_creator = status.getAccount().getAcct(); bundle_url = status.getUrl(); bundle_id = status.getUri(); bundle_source = status.getAccount().getAcct(); @@ -139,6 +141,8 @@ public class CustomSharingActivity extends BaseActivity implements OnCustomShari bundle_content = formatedContent(status.getContent(), status.getEmojis()); if( status.getCard() != null && status.getCard().getImage() != null) bundle_thumbnailurl = status.getCard().getImage(); + else + bundle_thumbnailurl = status.getAccount().getAvatar(); if (!bundle_source.contains("@")) { bundle_source = bundle_source + "@" + account.getInstance(); } @@ -148,6 +152,12 @@ public class CustomSharingActivity extends BaseActivity implements OnCustomShari set_custom_sharing_title.setEllipsize(TextUtils.TruncateAt.END); //set text on title, description, and keywords String[] lines = bundle_content.split("\n"); + //Remove tags in title + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) + lines[0] = Html.fromHtml( lines[0], Html.FROM_HTML_MODE_LEGACY).toString(); + else + //noinspection deprecation + lines[0] = Html.fromHtml(lines[0]).toString(); String newTitle = ""; if (lines[0].length() > 60) { newTitle = lines[0].substring(0, 60) + '…'; @@ -249,6 +259,7 @@ public class CustomSharingActivity extends BaseActivity implements OnCustomShari } if (bundle_thumbnailurl != null) builder.appendQueryParameter("thumbnailurl", bundle_thumbnailurl); + builder.appendQueryParameter("creator", bundle_creator); if (!paramFound) { builder.appendQueryParameter(param_name, param_value); }