From 5b805ca9a9a000a0c12d150c2ac037b53b5b348c Mon Sep 17 00:00:00 2001 From: Thomas Date: Sun, 17 Dec 2023 17:41:17 +0100 Subject: Fix a crash --- .../app/fedilab/android/activities/PeertubeBaseMainActivity.java | 6 +++++- app/src/main/java/app/fedilab/android/BaseMainActivity.java | 9 ++++++--- .../app/fedilab/android/mastodon/activities/ComposeActivity.java | 7 +++++-- .../app/fedilab/android/mastodon/activities/MediaActivity.java | 6 +++++- .../app/fedilab/android/mastodon/activities/ProfileActivity.java | 6 +++++- .../android/mastodon/activities/admin/AdminActionActivity.java | 6 +++++- .../mastodon/ui/fragment/timeline/FragmentMastodonContext.java | 6 +++++- .../ui/fragment/timeline/FragmentMastodonDirectMessage.java | 6 +++++- .../ui/fragment/timeline/FragmentMastodonNotification.java | 9 +++++++-- .../fedilab/android/peertube/activities/PeertubeActivity.java | 6 +++++- .../android/peertube/activities/PeertubeMainActivity.java | 6 +++++- .../fedilab/android/peertube/services/RetrieveInfoService.java | 6 +++++- src/fdroid/fastlane/metadata/android/en/changelogs/501.txt | 2 +- 13 files changed, 64 insertions(+), 17 deletions(-) diff --git a/app/src/fdroid/java/app/fedilab/android/activities/PeertubeBaseMainActivity.java b/app/src/fdroid/java/app/fedilab/android/activities/PeertubeBaseMainActivity.java index 379bc2763..595820f8b 100644 --- a/app/src/fdroid/java/app/fedilab/android/activities/PeertubeBaseMainActivity.java +++ b/app/src/fdroid/java/app/fedilab/android/activities/PeertubeBaseMainActivity.java @@ -193,7 +193,11 @@ public abstract class PeertubeBaseMainActivity extends BaseActivity implements C super.onDestroy(); ChromeCasts.unregisterListener(this); if (manage_chromecast != null) { - unregisterReceiver(manage_chromecast); + try { + unregisterReceiver(manage_chromecast); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } new Thread(() -> { if (chromeCasts != null && chromeCasts.size() > 0) { for (ChromeCast cast : chromeCasts) { diff --git a/app/src/main/java/app/fedilab/android/BaseMainActivity.java b/app/src/main/java/app/fedilab/android/BaseMainActivity.java index 4cadc14f2..0e64e353b 100644 --- a/app/src/main/java/app/fedilab/android/BaseMainActivity.java +++ b/app/src/main/java/app/fedilab/android/BaseMainActivity.java @@ -1859,9 +1859,12 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt @Override protected void onDestroy() { - unregisterReceiver(broadcast_data); - unregisterReceiver(broadcast_error_message); - + try { + unregisterReceiver(broadcast_data); + unregisterReceiver(broadcast_error_message); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } if (networkStateReceiver != null) { try { unregisterReceiver(networkStateReceiver); diff --git a/app/src/main/java/app/fedilab/android/mastodon/activities/ComposeActivity.java b/app/src/main/java/app/fedilab/android/mastodon/activities/ComposeActivity.java index cf9c72f5c..6d9c24d59 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/activities/ComposeActivity.java +++ b/app/src/main/java/app/fedilab/android/mastodon/activities/ComposeActivity.java @@ -195,8 +195,11 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana if (timer != null) { timer.cancel(); } - unregisterReceiver(imageReceiver); - + try { + unregisterReceiver(imageReceiver); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } } diff --git a/app/src/main/java/app/fedilab/android/mastodon/activities/MediaActivity.java b/app/src/main/java/app/fedilab/android/mastodon/activities/MediaActivity.java index ca082b023..f150faa7e 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/activities/MediaActivity.java +++ b/app/src/main/java/app/fedilab/android/mastodon/activities/MediaActivity.java @@ -367,7 +367,11 @@ public class MediaActivity extends BaseTransparentActivity implements OnDownload @Override public void onDestroy() { - unregisterReceiver(onDownloadComplete); + try { + unregisterReceiver(onDownloadComplete); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } super.onDestroy(); } diff --git a/app/src/main/java/app/fedilab/android/mastodon/activities/ProfileActivity.java b/app/src/main/java/app/fedilab/android/mastodon/activities/ProfileActivity.java index ddc779bb8..79f64b71b 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/activities/ProfileActivity.java +++ b/app/src/main/java/app/fedilab/android/mastodon/activities/ProfileActivity.java @@ -1260,7 +1260,11 @@ public class ProfileActivity extends BaseActivity { scheduledExecutorService.shutdownNow(); scheduledExecutorService = null; } - unregisterReceiver(broadcast_data); + try { + unregisterReceiver(broadcast_data); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } super.onDestroy(); } diff --git a/app/src/main/java/app/fedilab/android/mastodon/activities/admin/AdminActionActivity.java b/app/src/main/java/app/fedilab/android/mastodon/activities/admin/AdminActionActivity.java index 005af5d35..8865ffa9f 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/activities/admin/AdminActionActivity.java +++ b/app/src/main/java/app/fedilab/android/mastodon/activities/admin/AdminActionActivity.java @@ -340,7 +340,11 @@ public class AdminActionActivity extends BaseBarActivity { protected void onDestroy() { super.onDestroy(); if (mReceiver != null) { - unregisterReceiver(mReceiver); + try { + unregisterReceiver(mReceiver); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } } } diff --git a/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/timeline/FragmentMastodonContext.java b/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/timeline/FragmentMastodonContext.java index d476ad8d8..01cd0e2c3 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/timeline/FragmentMastodonContext.java +++ b/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/timeline/FragmentMastodonContext.java @@ -295,7 +295,11 @@ public class FragmentMastodonContext extends Fragment { @Override public void onDestroyView() { - requireActivity().unregisterReceiver(receive_action); + try { + requireActivity().unregisterReceiver(receive_action); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } super.onDestroyView(); } diff --git a/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/timeline/FragmentMastodonDirectMessage.java b/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/timeline/FragmentMastodonDirectMessage.java index 91690c063..3c0a6164b 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/timeline/FragmentMastodonDirectMessage.java +++ b/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/timeline/FragmentMastodonDirectMessage.java @@ -272,7 +272,11 @@ public class FragmentMastodonDirectMessage extends Fragment { @Override public void onDestroyView() { - requireActivity().unregisterReceiver(broadcast_data); + try { + requireActivity().unregisterReceiver(broadcast_data); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } super.onDestroyView(); } diff --git a/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/timeline/FragmentMastodonNotification.java b/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/timeline/FragmentMastodonNotification.java index a728dbb1a..56b74026b 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/timeline/FragmentMastodonNotification.java +++ b/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/timeline/FragmentMastodonNotification.java @@ -675,8 +675,13 @@ public class FragmentMastodonNotification extends Fragment implements Notificati @Override public void onDestroyView() { - requireActivity().unregisterReceiver(receive_action); - requireActivity().unregisterReceiver(receive_refresh); + + try { + requireActivity().unregisterReceiver(receive_action); + requireActivity().unregisterReceiver(receive_refresh); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } if (isAdded()) { storeMarker(); } diff --git a/app/src/main/java/app/fedilab/android/peertube/activities/PeertubeActivity.java b/app/src/main/java/app/fedilab/android/peertube/activities/PeertubeActivity.java index ea6b87fcc..cab6b84fe 100644 --- a/app/src/main/java/app/fedilab/android/peertube/activities/PeertubeActivity.java +++ b/app/src/main/java/app/fedilab/android/peertube/activities/PeertubeActivity.java @@ -1596,7 +1596,11 @@ public class PeertubeActivity extends BasePeertubeActivity implements CommentLis private void unregisterReceiver() { if (mPowerKeyReceiver != null) { - unregisterReceiver(mPowerKeyReceiver); + try { + unregisterReceiver(mPowerKeyReceiver); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } mPowerKeyReceiver = null; } } diff --git a/app/src/main/java/app/fedilab/android/peertube/activities/PeertubeMainActivity.java b/app/src/main/java/app/fedilab/android/peertube/activities/PeertubeMainActivity.java index daf4b4a65..3e56a2b66 100644 --- a/app/src/main/java/app/fedilab/android/peertube/activities/PeertubeMainActivity.java +++ b/app/src/main/java/app/fedilab/android/peertube/activities/PeertubeMainActivity.java @@ -153,7 +153,11 @@ public class PeertubeMainActivity extends PeertubeBaseMainActivity { if (!keepRemote) { typeOfConnection = TypeOfConnection.NORMAL; } - unregisterReceiver(broadcast_data); + try { + unregisterReceiver(broadcast_data); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } } @SuppressLint("ApplySharedPref") diff --git a/app/src/main/java/app/fedilab/android/peertube/services/RetrieveInfoService.java b/app/src/main/java/app/fedilab/android/peertube/services/RetrieveInfoService.java index 2411e4d23..a4b4842c7 100644 --- a/app/src/main/java/app/fedilab/android/peertube/services/RetrieveInfoService.java +++ b/app/src/main/java/app/fedilab/android/peertube/services/RetrieveInfoService.java @@ -125,7 +125,11 @@ public class RetrieveInfoService extends Service implements NetworkStateReceiver super.onDestroy(); if (networkStateReceiver != null) { networkStateReceiver.removeListener(this); - unregisterReceiver(networkStateReceiver); + try { + unregisterReceiver(networkStateReceiver); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } } } diff --git a/src/fdroid/fastlane/metadata/android/en/changelogs/501.txt b/src/fdroid/fastlane/metadata/android/en/changelogs/501.txt index 236f48416..29fe31fe0 100644 --- a/src/fdroid/fastlane/metadata/android/en/changelogs/501.txt +++ b/src/fdroid/fastlane/metadata/android/en/changelogs/501.txt @@ -1,7 +1,7 @@ Added: - Android 14 support - Automatically split long messages in threads (default: ASK) -- Links and media are clickable when composing +- Links and media are clicka ble when composing Fixed: - Avoid error 429 with NTFY -- cgit v1.2.3 From 4ebe2a2719640ecc20e24ba29359f02d2a8d2201 Mon Sep 17 00:00:00 2001 From: Thomas Date: Sun, 17 Dec 2023 17:43:14 +0100 Subject: Release 3.25.1 --- app/build.gradle | 4 ++-- app/src/main/assets/release_notes/notes.json | 5 +++++ src/fdroid/fastlane/metadata/android/en/changelogs/502.txt | 8 ++++++++ 3 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 src/fdroid/fastlane/metadata/android/en/changelogs/502.txt diff --git a/app/build.gradle b/app/build.gradle index 04fc74143..056bf91a7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -13,8 +13,8 @@ android { defaultConfig { minSdk 21 targetSdk 34 - versionCode 501 - versionName "3.25.0" + versionCode 502 + versionName "3.25.1" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } flavorDimensions "default" diff --git a/app/src/main/assets/release_notes/notes.json b/app/src/main/assets/release_notes/notes.json index 0dfe79f39..d3b8f272b 100644 --- a/app/src/main/assets/release_notes/notes.json +++ b/app/src/main/assets/release_notes/notes.json @@ -1,4 +1,9 @@ [ + { + "version": "3.25.1", + "code": "502", + "note": "Fix a crash from release 3.25.0" + }, { "version": "3.25.0", "code": "501", diff --git a/src/fdroid/fastlane/metadata/android/en/changelogs/502.txt b/src/fdroid/fastlane/metadata/android/en/changelogs/502.txt new file mode 100644 index 000000000..29fe31fe0 --- /dev/null +++ b/src/fdroid/fastlane/metadata/android/en/changelogs/502.txt @@ -0,0 +1,8 @@ +Added: +- Android 14 support +- Automatically split long messages in threads (default: ASK) +- Links and media are clicka ble when composing + +Fixed: +- Avoid error 429 with NTFY +- Several crashes are fixed \ No newline at end of file -- cgit v1.2.3 From 58de6a86f567fdef114656ea0a6b2a72c9e565e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jos=C3=A9=20m?= Date: Mon, 18 Dec 2023 06:08:48 +0000 Subject: Translated using Weblate (Galician) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (1174 of 1174 strings) Co-authored-by: josé m Translate-URL: https://hosted.weblate.org/projects/fedilab/strings/gl/ Translation: Fedilab/Strings --- app/src/main/res/values-gl/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index cff7941cd..f812b7a53 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -747,7 +747,7 @@ Modo Borrar Tes a certeza de querer baleirar a caché\? Se tes borradores que inclúen multimedia, estes perderanse. A miña conta - Montrará icona con contador para as novas mensaxes nas cronoloxías da lapela + Mostrará un contador nas cronoloxías das pestanas para as novas mensaxes Cargar axustes exportados Xestor de notificacións Importar axustes -- cgit v1.2.3 From 85f8adbd761557a00b26cb289b295a53a614f850 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jos=C3=A9=20m?= Date: Mon, 18 Dec 2023 07:10:00 +0100 Subject: Translated using Weblate (Galician) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 13.0% (6 of 46 strings) Co-authored-by: josé m Translate-URL: https://hosted.weblate.org/projects/fedilab/description/gl/ Translation: Fedilab/description --- src/fdroid/fastlane/metadata/android/gl/changelogs/500.txt | 14 ++++++++++++++ src/fdroid/fastlane/metadata/android/gl/changelogs/501.txt | 8 ++++++++ src/fdroid/fastlane/metadata/android/gl/changelogs/502.txt | 8 ++++++++ 3 files changed, 30 insertions(+) create mode 100644 src/fdroid/fastlane/metadata/android/gl/changelogs/500.txt create mode 100644 src/fdroid/fastlane/metadata/android/gl/changelogs/501.txt create mode 100644 src/fdroid/fastlane/metadata/android/gl/changelogs/502.txt diff --git a/src/fdroid/fastlane/metadata/android/gl/changelogs/500.txt b/src/fdroid/fastlane/metadata/android/gl/changelogs/500.txt new file mode 100644 index 000000000..932548d58 --- /dev/null +++ b/src/fdroid/fastlane/metadata/android/gl/changelogs/500.txt @@ -0,0 +1,14 @@ +Engadido: +- Tres novas iconas para a app (Orgullo, Rosa e Pirata) +- Gardar a posición en conversas remotas + +Arranxos: +- Markdown: deixar de xestionar as etiquetas e soporte para texto riscado +- O cursor é máis visible cando se redacta +- Solución ao problema co número máximo de caracteres da instancia +- Pestanas nos perfís +- Nalgúns idiomas non se podía premer nos cancelos +- Problemas coas contas que tiñan moitos seguimentos +- Os fallos cando había varios gif na mesma mensaxe +- Máximo de caracteres nas enquisas +- Outros fallos diff --git a/src/fdroid/fastlane/metadata/android/gl/changelogs/501.txt b/src/fdroid/fastlane/metadata/android/gl/changelogs/501.txt new file mode 100644 index 000000000..297b0ab48 --- /dev/null +++ b/src/fdroid/fastlane/metadata/android/gl/changelogs/501.txt @@ -0,0 +1,8 @@ +Engadido: +- Soporte para Android 14 +- División automática de mensaxes longas en fíos (por defecto: ASK) +- As ligazóns son accesibles durante a escritura da mensaxe + +Arranxos: +- do erro 429 con NTFY +- varios problemas diff --git a/src/fdroid/fastlane/metadata/android/gl/changelogs/502.txt b/src/fdroid/fastlane/metadata/android/gl/changelogs/502.txt new file mode 100644 index 000000000..297b0ab48 --- /dev/null +++ b/src/fdroid/fastlane/metadata/android/gl/changelogs/502.txt @@ -0,0 +1,8 @@ +Engadido: +- Soporte para Android 14 +- División automática de mensaxes longas en fíos (por defecto: ASK) +- As ligazóns son accesibles durante a escritura da mensaxe + +Arranxos: +- do erro 429 con NTFY +- varios problemas -- cgit v1.2.3 From 082ecce9be40021aca8f69b52e1a77d7fa22ee6e Mon Sep 17 00:00:00 2001 From: Thomas Date: Mon, 18 Dec 2023 12:14:18 +0100 Subject: Counters close to button + add full date for messages (default: disabled) --- .../fedilab/android/mastodon/helper/Helper.java | 14 ++++ .../android/mastodon/ui/drawer/StatusAdapter.java | 73 ++++++++++-------- .../res/layouts/mastodon/layout/drawer_status.xml | 90 ++++++++++++++++------ app/src/main/res/values/strings.xml | 2 + app/src/main/res/xml/pref_timelines.xml | 6 ++ 5 files changed, 128 insertions(+), 57 deletions(-) diff --git a/app/src/main/java/app/fedilab/android/mastodon/helper/Helper.java b/app/src/main/java/app/fedilab/android/mastodon/helper/Helper.java index 940f587d9..b2069db7c 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/helper/Helper.java +++ b/app/src/main/java/app/fedilab/android/mastodon/helper/Helper.java @@ -579,6 +579,20 @@ public class Helper { return df.format(date); } + /** + * Convert a date in String + * + * @param date Date + * @return String + */ + public static String mediumDateToString(Date date) { + if (date == null) { + date = new Date(); + } + DateFormat df = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, Locale.getDefault()); + return df.format(date); + } + /** * Convert a date in String -> format yyyy-MM-dd HH:mm:ss * diff --git a/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java b/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java index a554defab..b907fd48a 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java +++ b/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java @@ -451,6 +451,7 @@ public class StatusAdapter extends RecyclerView.Adapter boolean displayReactions = sharedpreferences.getBoolean(context.getString(R.string.SET_DISPLAY_REACTIONS) + MainActivity.currentUserID + MainActivity.currentInstance, true); boolean compactButtons = sharedpreferences.getBoolean(context.getString(R.string.SET_DISPLAY_COMPACT_ACTION_BUTTON), false); boolean originalDateForBoost = sharedpreferences.getBoolean(context.getString(R.string.SET_BOOST_ORIGINAL_DATE), true); + boolean relativeDate = sharedpreferences.getBoolean(context.getString(R.string.SET_DISPLAY_RELATIVE_DATE), true); boolean hideSingleMediaWithCard = sharedpreferences.getBoolean(context.getString(R.string.SET_HIDE_SINGLE_MEDIA_WITH_CARD), false); boolean autofetch = sharedpreferences.getBoolean(context.getString(R.string.SET_AUTO_FETCH_MISSING_MESSAGES), false); boolean warnNoMedia = sharedpreferences.getBoolean(context.getString(R.string.SET_MANDATORY_ALT_TEXT_FOR_BOOSTS), true); @@ -1309,46 +1310,58 @@ public class StatusAdapter extends RecyclerView.Adapter holder.binding.editTime.setVisibility(View.GONE); holder.binding.visibilitySmall.setImageResource(ressource); if (displayCounters && canBeFederated) { - holder.binding.replyCount.setText(String.valueOf(statusToDeal.replies_count)); - holder.binding.statusInfo.setVisibility(View.VISIBLE); - holder.binding.dateShort.setVisibility(View.GONE); - holder.binding.visibilitySmall.setVisibility(View.GONE); - holder.binding.reblogsCount.setText(String.valueOf(statusToDeal.reblogs_count)); - holder.binding.favoritesCount.setText(String.valueOf(statusToDeal.favourites_count)); - if (originalDateForBoost || status.reblog == null) { - holder.binding.time.setText(Helper.dateDiff(context, statusToDeal.created_at)); + if (statusToDeal.replies_count > 0 && !(context instanceof ContextActivity)) { + holder.binding.replyCount.setVisibility(View.VISIBLE); + holder.binding.replyCount.setText(String.valueOf(statusToDeal.replies_count)); + } else { + holder.binding.replyCount.setVisibility(View.GONE); + } + if(statusToDeal.reblogs_count > 0 && !(context instanceof ContextActivity)) { + holder.binding.boostCount.setText(String.valueOf(statusToDeal.reblogs_count)); + holder.binding.boostCount.setVisibility(View.VISIBLE); } else { - holder.binding.time.setText(Helper.dateDiff(context, status.created_at)); + holder.binding.boostCount.setVisibility(View.GONE); } - if (statusToDeal.edited_at != null) { - Drawable img = ContextCompat.getDrawable(context, R.drawable.ic_baseline_mode_edit_message_24); - img.setBounds(0, 0, (int) (Helper.convertDpToPixel(16, context) * scale + 0.5f), (int) (Helper.convertDpToPixel(16, context) * scale + 0.5f)); - holder.binding.time.setCompoundDrawables(null, null, img, null); + if(statusToDeal.favourites_count > 0 && !(context instanceof ContextActivity)) { + holder.binding.favoriteCount.setText(String.valueOf(statusToDeal.favourites_count)); + holder.binding.favoriteCount.setVisibility(View.VISIBLE); } else { - holder.binding.time.setCompoundDrawables(null, null, null, null); + holder.binding.favoriteCount.setVisibility(View.GONE); } - Helper.absoluteDateTimeReveal(context, holder.binding.time, statusToDeal.created_at, statusToDeal.edited_at); - holder.binding.visibility.setImageResource(ressource); - holder.binding.time.setVisibility(View.VISIBLE); } else { - holder.binding.statusInfo.setVisibility(View.GONE); - holder.binding.dateShort.setVisibility(View.VISIBLE); - holder.binding.visibilitySmall.setVisibility(View.VISIBLE); - if (statusToDeal.edited_at != null) { - Drawable img = ContextCompat.getDrawable(context, R.drawable.ic_baseline_mode_edit_message_24); - img.setBounds(0, 0, (int) (Helper.convertDpToPixel(16, context) * scale + 0.5f), (int) (Helper.convertDpToPixel(16, context) * scale + 0.5f)); - holder.binding.dateShort.setCompoundDrawables(null, null, img, null); + holder.binding.boostCount.setVisibility(View.GONE); + holder.binding.favoriteCount.setVisibility(View.GONE); + if (statusToDeal.replies_count > 0 && !(context instanceof ContextActivity)) { + holder.binding.replyCount.setVisibility(View.VISIBLE); } else { - holder.binding.dateShort.setCompoundDrawables(null, null, null, null); + holder.binding.replyCount.setVisibility(View.GONE); } + } + holder.binding.statusInfo.setVisibility(View.GONE); + holder.binding.dateShort.setVisibility(View.VISIBLE); + holder.binding.visibilitySmall.setVisibility(View.VISIBLE); + if (statusToDeal.edited_at != null) { + Drawable img = ContextCompat.getDrawable(context, R.drawable.ic_baseline_mode_edit_message_24); + img.setBounds(0, 0, (int) (Helper.convertDpToPixel(16, context) * scale + 0.5f), (int) (Helper.convertDpToPixel(16, context) * scale + 0.5f)); + holder.binding.dateShort.setCompoundDrawables(null, null, img, null); + } else { + holder.binding.dateShort.setCompoundDrawables(null, null, null, null); + } + if(relativeDate) { if (originalDateForBoost || status.reblog == null) { holder.binding.dateShort.setText(Helper.dateDiff(context, statusToDeal.created_at)); } else { holder.binding.dateShort.setText(Helper.dateDiff(context, status.created_at)); } - holder.binding.time.setVisibility(View.GONE); - Helper.absoluteDateTimeReveal(context, holder.binding.dateShort, statusToDeal.created_at, statusToDeal.edited_at); + } else { + if (originalDateForBoost || status.reblog == null) { + holder.binding.dateShort.setText(Helper.mediumDateToString(statusToDeal.created_at)); + } else { + holder.binding.dateShort.setText(Helper.mediumDateToString(status.created_at)); + } } + holder.binding.time.setVisibility(View.GONE); + Helper.absoluteDateTimeReveal(context, holder.binding.dateShort, statusToDeal.created_at, statusToDeal.edited_at); } //---- SPOILER TEXT ----- @@ -2408,11 +2421,7 @@ public class StatusAdapter extends RecyclerView.Adapter }); popup.show(); }); - if (statusToDeal.replies_count > 0 && !(context instanceof ContextActivity)) { - holder.binding.replyCount.setVisibility(View.VISIBLE); - } else { - holder.binding.replyCount.setVisibility(View.GONE); - } + holder.binding.actionButtonReply.setOnLongClickListener(v -> { CrossActionHelper.doCrossAction(context, CrossActionHelper.TypeOfCrossAction.REPLY_ACTION, null, statusToDeal); return true; diff --git a/app/src/main/res/layouts/mastodon/layout/drawer_status.xml b/app/src/main/res/layouts/mastodon/layout/drawer_status.xml index 1f27d35fc..c86ea8a90 100644 --- a/app/src/main/res/layouts/mastodon/layout/drawer_status.xml +++ b/app/src/main/res/layouts/mastodon/layout/drawer_status.xml @@ -657,6 +657,7 @@ - + app:layout_constraintVertical_bias="0.0"> + + + + + + - + app:layout_constraintVertical_bias="0.0"> + + + SET_NOTIF_VALIDATION_FAV SET_DISPLAY_COUNTER_FAV_BOOST + SET_DISPLAY_RELATIVE_DATE SET_REMOVE_LEFT_MARGIN SET_PROFILE_REMOTELY @@ -1729,6 +1730,7 @@ Timelines in a list When enabled, all pinned timelines will be displayed in a drop-down menu Display counters for messages + Display relative date for messages Use cache Timelines will be cached so the application will be faster. Load thumbnails for media diff --git a/app/src/main/res/xml/pref_timelines.xml b/app/src/main/res/xml/pref_timelines.xml index 3335f68d0..4143933b4 100644 --- a/app/src/main/res/xml/pref_timelines.xml +++ b/app/src/main/res/xml/pref_timelines.xml @@ -198,6 +198,12 @@ app:key="@string/SET_DISPLAY_COUNTER_FAV_BOOST" app:singleLineTitle="false" app:title="@string/set_display_counter" /> + Date: Tue, 19 Dec 2023 07:52:16 +0100 Subject: Fix a crash when composing --- .../java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java b/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java index 34ef0c3f3..d86c7c3dd 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java +++ b/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java @@ -1381,7 +1381,7 @@ public class ComposeAdapter extends RecyclerView.Adapter(holder.binding.statusContent), () -> notifyItemChanged(position)), + new WeakReference<>(holder.binding.statusContent), () -> mRecyclerView.post(() -> notifyItemChanged(position))), TextView.BufferType.SPANNABLE); holder.binding.statusContent.setMovementMethod(LongClickLinkMovementMethod.getInstance()); MastodonHelper.loadPPMastodon(holder.binding.avatar, status.account); -- cgit v1.2.3 From 47441c3e05f3343e7994b0f1a1f1936e16bd1140 Mon Sep 17 00:00:00 2001 From: Thomas Date: Tue, 19 Dec 2023 10:31:06 +0100 Subject: More visible counters --- app/src/main/res/layouts/mastodon/layout/drawer_status.xml | 3 --- 1 file changed, 3 deletions(-) diff --git a/app/src/main/res/layouts/mastodon/layout/drawer_status.xml b/app/src/main/res/layouts/mastodon/layout/drawer_status.xml index c86ea8a90..d331c73d4 100644 --- a/app/src/main/res/layouts/mastodon/layout/drawer_status.xml +++ b/app/src/main/res/layouts/mastodon/layout/drawer_status.xml @@ -663,7 +663,6 @@ android:layout_gravity="bottom" android:text="+" android:textColor="?colorControlNormal" - android:textSize="12sp" android:visibility="gone" tools:ignore="HardcodedText" tools:visibility="visible" /> @@ -700,7 +699,6 @@ android:layout_height="wrap_content" android:layout_gravity="bottom" android:textColor="?colorControlNormal" - android:textSize="12sp" android:visibility="gone" tools:ignore="HardcodedText" tools:visibility="visible" /> @@ -754,7 +752,6 @@ android:layout_height="wrap_content" android:layout_gravity="bottom" android:textColor="?colorControlNormal" - android:textSize="12sp" android:visibility="gone" tools:ignore="HardcodedText" tools:visibility="visible" /> -- cgit v1.2.3 From dade64750d7d8c067dd4803131436dd806508b8b Mon Sep 17 00:00:00 2001 From: Thomas Date: Tue, 19 Dec 2023 10:42:36 +0100 Subject: Allow to underline clickable elements --- .../android/mastodon/helper/SpannableHelper.java | 18 ++++++++++++++---- app/src/main/res/values/strings.xml | 2 ++ app/src/main/res/xml/pref_timelines.xml | 7 +++++++ 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/app/fedilab/android/mastodon/helper/SpannableHelper.java b/app/src/main/java/app/fedilab/android/mastodon/helper/SpannableHelper.java index 6f65eaa69..c9918a702 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/helper/SpannableHelper.java +++ b/app/src/main/java/app/fedilab/android/mastodon/helper/SpannableHelper.java @@ -104,6 +104,7 @@ public class SpannableHelper { public static final String CLICKABLE_SPAN = "CLICKABLE_SPAN"; private static int linkColor; + private static boolean underlineLinks; public static Spannable convert(Context context, String text, Status status, Account account, Announcement announcement, @@ -115,6 +116,7 @@ public class SpannableHelper { int currentNightMode = context.getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK; boolean customLight = sharedpreferences.getBoolean(context.getString(R.string.SET_CUSTOMIZE_LIGHT_COLORS), false); boolean customDark = sharedpreferences.getBoolean(context.getString(R.string.SET_CUSTOMIZE_DARK_COLORS), false); + underlineLinks = sharedpreferences.getBoolean(context.getString(R.string.SET_UNDERLINE_CLICKABLE), false); int link_color; if (currentNightMode == Configuration.UI_MODE_NIGHT_NO && customLight) { link_color = sharedpreferences.getInt(context.getString(R.string.SET_LIGHT_LINK), -1); @@ -309,7 +311,9 @@ public class SpannableHelper { @Override public void updateDrawState(@NonNull TextPaint ds) { super.updateDrawState(ds); - ds.setUnderlineText(status != null && status.underlined); + if(!underlineLinks) { + ds.setUnderlineText(status != null && status.underlined); + } if (linkColor != -1) { ds.setColor(linkColor); } @@ -599,7 +603,9 @@ public class SpannableHelper { @Override public void updateDrawState(@NonNull TextPaint ds) { super.updateDrawState(ds); - ds.setUnderlineText(status != null && status.underlined); + if(!underlineLinks) { + ds.setUnderlineText(status != null && status.underlined); + } if (linkColor != -1) { ds.setColor(linkColor); } @@ -744,7 +750,9 @@ public class SpannableHelper { @Override public void updateDrawState(@NonNull TextPaint ds) { super.updateDrawState(ds); - ds.setUnderlineText(status != null && status.underlined); + if(!underlineLinks) { + ds.setUnderlineText(status != null && status.underlined); + } if (linkColor != -1) { ds.setColor(linkColor); } @@ -891,7 +899,9 @@ public class SpannableHelper { @Override public void updateDrawState(@NonNull TextPaint ds) { super.updateDrawState(ds); - ds.setUnderlineText(false); + if(!underlineLinks) { + ds.setUnderlineText(false); + } if (linkColor != -1) { ds.setColor(linkColor); } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index abf0f150f..97644ed22 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1189,6 +1189,7 @@ SET_BOOST_ORIGINAL_DATE SET_MARKDOWN_SUPPORT SET_TRUNCATE_LINKS + SET_UNDERLINE_CLICKABLE SET_TRUNCATE_LINKS_MAX SET_HIDE_SINGLE_MEDIA_WITH_CARD @@ -1991,6 +1992,7 @@ There are missing media descriptions Truncate links + Underlines clickable elements Max chars in links diff --git a/app/src/main/res/xml/pref_timelines.xml b/app/src/main/res/xml/pref_timelines.xml index 4143933b4..c59d8b788 100644 --- a/app/src/main/res/xml/pref_timelines.xml +++ b/app/src/main/res/xml/pref_timelines.xml @@ -64,6 +64,13 @@ app:singleLineTitle="false" app:title="@string/truncate_links" /> + + Date: Tue, 19 Dec 2023 10:56:27 +0100 Subject: typo --- app/src/main/res/values/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 97644ed22..39e79ab70 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1992,7 +1992,7 @@ There are missing media descriptions Truncate links - Underlines clickable elements + Underline clickable elements Max chars in links -- cgit v1.2.3 From 0fe27e5a76e8b7f750226448998de47b3fc63667 Mon Sep 17 00:00:00 2001 From: Thomas Date: Tue, 19 Dec 2023 15:31:38 +0100 Subject: Fix an issue with back button for Followed Tags and List activities --- .../app/fedilab/android/mastodon/activities/FollowedTagActivity.java | 2 ++ .../app/fedilab/android/mastodon/activities/MastodonListActivity.java | 2 ++ .../fedilab/android/mastodon/activities/admin/AdminActionActivity.java | 2 ++ 3 files changed, 6 insertions(+) diff --git a/app/src/main/java/app/fedilab/android/mastodon/activities/FollowedTagActivity.java b/app/src/main/java/app/fedilab/android/mastodon/activities/FollowedTagActivity.java index 79ef02284..5526cece3 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/activities/FollowedTagActivity.java +++ b/app/src/main/java/app/fedilab/android/mastodon/activities/FollowedTagActivity.java @@ -95,6 +95,8 @@ public class FollowedTagActivity extends BaseBarActivity implements FollowedTagA }); setTitle(R.string.followed_tags); invalidateOptionsMenu(); + } else { + finish(); } } }); diff --git a/app/src/main/java/app/fedilab/android/mastodon/activities/MastodonListActivity.java b/app/src/main/java/app/fedilab/android/mastodon/activities/MastodonListActivity.java index 5d9f3ac94..0be0a8ca5 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/activities/MastodonListActivity.java +++ b/app/src/main/java/app/fedilab/android/mastodon/activities/MastodonListActivity.java @@ -143,6 +143,8 @@ public class MastodonListActivity extends BaseBarActivity implements MastodonLis }); setTitle(R.string.action_lists); invalidateOptionsMenu(); + } else { + finish(); } } }); diff --git a/app/src/main/java/app/fedilab/android/mastodon/activities/admin/AdminActionActivity.java b/app/src/main/java/app/fedilab/android/mastodon/activities/admin/AdminActionActivity.java index 8865ffa9f..b84354b90 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/activities/admin/AdminActionActivity.java +++ b/app/src/main/java/app/fedilab/android/mastodon/activities/admin/AdminActionActivity.java @@ -116,6 +116,8 @@ public class AdminActionActivity extends BaseBarActivity { setTitle(R.string.administration); invalidateOptionsMenu(); }); + } else { + finish(); } } }); -- cgit v1.2.3 From 4ce92e67b1e909156fb2b3248c68b1c97bdb6642 Mon Sep 17 00:00:00 2001 From: Thomas Date: Tue, 19 Dec 2023 15:35:57 +0100 Subject: Fix #1009 -Hide emoji picker when instance has no custom emojis --- .../java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java b/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java index d86c7c3dd..8b19f2bed 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java +++ b/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java @@ -1650,7 +1650,11 @@ public class ComposeAdapter extends RecyclerView.Adapter 0) { + holder.binding.buttonEmoji.setVisibility(View.VISIBLE); + } else { + holder.binding.buttonEmoji.setVisibility(View.GONE); + } holder.binding.buttonEmoji.setOnClickListener(v -> { try { displayEmojiPicker(holder, account.instance); -- cgit v1.2.3 From b6cbd8ea74d703d09f7ea95d4a13fc6f6b7ede55 Mon Sep 17 00:00:00 2001 From: Thomas Date: Tue, 19 Dec 2023 15:56:26 +0100 Subject: Fix #1008 -Allow to copy app version from the about page --- .../fedilab/android/activities/AboutActivity.java | 23 ++++++++++++++++-- .../res/layouts/mastodon/layout/activity_about.xml | 28 ++++++++++++++++++---- app/src/main/res/values/strings.xml | 2 ++ 3 files changed, 46 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/app/fedilab/android/activities/AboutActivity.java b/app/src/main/java/app/fedilab/android/activities/AboutActivity.java index 2ea60818d..209351fc8 100644 --- a/app/src/main/java/app/fedilab/android/activities/AboutActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/AboutActivity.java @@ -15,12 +15,16 @@ package app.fedilab.android.activities; * see . */ +import android.content.ClipData; +import android.content.ClipboardManager; +import android.content.Context; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.os.Bundle; import android.view.MenuItem; import android.view.View; +import android.widget.Toast; import androidx.core.app.ActivityOptionsCompat; import androidx.lifecycle.ViewModelProvider; @@ -40,6 +44,7 @@ import app.fedilab.android.mastodon.helper.CrossActionHelper; import app.fedilab.android.mastodon.helper.Helper; import app.fedilab.android.mastodon.helper.MastodonHelper; import app.fedilab.android.mastodon.viewmodel.mastodon.AccountsVM; +import es.dmoral.toasty.Toasty; public class AboutActivity extends BaseBarActivity { @@ -58,10 +63,10 @@ public class AboutActivity extends BaseBarActivity { if (getSupportActionBar() != null) { getSupportActionBar().setDisplayHomeAsUpEnabled(true); } - + String version = ""; try { PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0); - String version = pInfo.versionName; + version = pInfo.versionName; binding.aboutVersion.setText(getResources().getString(R.string.about_vesrion, version)); } catch (PackageManager.NameNotFoundException ignored) { } @@ -77,6 +82,20 @@ public class AboutActivity extends BaseBarActivity { } binding.aboutSupportPaypal.setOnClickListener(v -> Helper.openBrowser(AboutActivity.this, "https://www.paypal.me/Mastalab")); + + String finalVersion = version; + binding.aboutVersionCopy.setOnClickListener(v->{ + + ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); + String content = "Fedilab v" + finalVersion + " for " + (BuildConfig.DONATIONS?"FDroid":"Google"); + + ClipData clip = ClipData.newPlainText(Helper.CLIP_BOARD, content); + if (clipboard != null) { + clipboard.setPrimaryClip(clip); + Toasty.info(AboutActivity.this, getString(R.string.clipboard_version), Toast.LENGTH_LONG).show(); + } + + }); if (BuildConfig.DONATIONS) { binding.aboutSupportPaypal.setVisibility(View.VISIBLE); } else { diff --git a/app/src/main/res/layouts/mastodon/layout/activity_about.xml b/app/src/main/res/layouts/mastodon/layout/activity_about.xml index bc940ac2e..4d7114ad6 100644 --- a/app/src/main/res/layouts/mastodon/layout/activity_about.xml +++ b/app/src/main/res/layouts/mastodon/layout/activity_about.xml @@ -35,14 +35,32 @@ android:text="@string/app_name" android:textSize="20sp" /> - + android:gravity="center" + android:orientation="horizontal"> + + + + Add an account The content of the message has been copied to the clipboard The URL of the message has been copied to the clipboard + Information have been copied to the clipboard Camera Delete all Schedule @@ -407,6 +408,7 @@ Logout account All Copy link + Copy information http calls blocked by the application List of blocked calls Submit -- cgit v1.2.3 From ace3dc089e69d938f798494ca4a7d2d630c79c35 Mon Sep 17 00:00:00 2001 From: Thomas Date: Tue, 19 Dec 2023 16:03:02 +0100 Subject: Fix #1007 - Improve account picker when opening a message with another account --- .../main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java b/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java index b907fd48a..795dc740d 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java +++ b/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java @@ -2348,6 +2348,7 @@ public class StatusAdapter extends RecyclerView.Adapter if (accounts.size() > 1) { List accountList = new ArrayList<>(); for (BaseAccount account : accounts) { + account.mastodon_account.acct += "@" + account.instance; accountList.add(account.mastodon_account); } Handler mainHandler = new Handler(Looper.getMainLooper()); -- cgit v1.2.3 From 520a36946a9c388c6a14a5b9c5e65a4fa94efd40 Mon Sep 17 00:00:00 2001 From: Thomas Date: Tue, 19 Dec 2023 17:12:02 +0100 Subject: Fix #1005 - Avoid duplicate tags when following --- .../fedilab/android/mastodon/activities/FollowedTagActivity.java | 8 +++++++- .../app/fedilab/android/mastodon/client/entities/api/Tag.java | 6 ++++++ app/src/main/res/values/strings.xml | 1 + 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/app/fedilab/android/mastodon/activities/FollowedTagActivity.java b/app/src/main/java/app/fedilab/android/mastodon/activities/FollowedTagActivity.java index 5526cece3..e7492f05e 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/activities/FollowedTagActivity.java +++ b/app/src/main/java/app/fedilab/android/mastodon/activities/FollowedTagActivity.java @@ -32,6 +32,7 @@ import androidx.recyclerview.widget.LinearLayoutManager; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import java.util.ArrayList; +import java.util.Objects; import app.fedilab.android.BaseMainActivity; import app.fedilab.android.R; @@ -145,6 +146,11 @@ public class FollowedTagActivity extends BaseBarActivity implements FollowedTagA dialogBuilder.setView(popupAddFollowedTagtBinding.getRoot()); popupAddFollowedTagtBinding.addTag.setFilters(new InputFilter[]{new InputFilter.LengthFilter(255)}); dialogBuilder.setPositiveButton(R.string.validate, (dialog, id) -> { + String name = Objects.requireNonNull(popupAddFollowedTagtBinding.addTag.getText()).toString().trim(); + if(tagList.contains(new Tag(name))) { + Toasty.error(FollowedTagActivity.this, getString(R.string.tag_already_followed), Toasty.LENGTH_LONG).show(); + return; + } if (popupAddFollowedTagtBinding.addTag.getText() != null && popupAddFollowedTagtBinding.addTag.getText().toString().trim().length() > 0) { tagVM.follow(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, popupAddFollowedTagtBinding.addTag.getText().toString().trim()) .observe(FollowedTagActivity.this, newTag -> { @@ -162,7 +168,7 @@ public class FollowedTagActivity extends BaseBarActivity implements FollowedTagA tagList.add(0, newTag); followedTagAdapter.notifyItemInserted(0); } else { - Toasty.error(FollowedTagActivity.this, getString(R.string.toast_feature_not_supported), Toasty.LENGTH_LONG).show(); + Toasty.error(FollowedTagActivity.this, getString(R.string.not_valid_tag_name), Toasty.LENGTH_LONG).show(); } }); dialog.dismiss(); diff --git a/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Tag.java b/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Tag.java index a1b9b1b3d..5b2a5bbec 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Tag.java +++ b/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Tag.java @@ -32,6 +32,12 @@ public class Tag implements Serializable { @SerializedName("following") public boolean following = false; + public Tag() {} + + public Tag(String name) { + this.name = name; + } + public int getWeight() { int weight = 0; if (history != null && history.size() > 0) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fddef11c4..fc6d95008 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -28,6 +28,7 @@ The content of the message has been copied to the clipboard The URL of the message has been copied to the clipboard Information have been copied to the clipboard + You already follow that tag! Camera Delete all Schedule -- cgit v1.2.3 From 5aae22483fc3e34ba7cf4807d4cf8514f4bee031 Mon Sep 17 00:00:00 2001 From: Thomas Date: Tue, 19 Dec 2023 17:23:15 +0100 Subject: Fix #1004 - Order followed tags (ASC) --- .../fedilab/android/mastodon/activities/FollowedTagActivity.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/app/src/main/java/app/fedilab/android/mastodon/activities/FollowedTagActivity.java b/app/src/main/java/app/fedilab/android/mastodon/activities/FollowedTagActivity.java index e7492f05e..9b75fe471 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/activities/FollowedTagActivity.java +++ b/app/src/main/java/app/fedilab/android/mastodon/activities/FollowedTagActivity.java @@ -32,12 +32,15 @@ import androidx.recyclerview.widget.LinearLayoutManager; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import java.util.Ar