From 9b4556d2932a63fc473daf3d47db01e7bf1e1a83 Mon Sep 17 00:00:00 2001 From: FineFindus Date: Tue, 16 May 2023 16:18:02 +0200 Subject: [PATCH 01/76] refactor: move boostable check to status --- .../main/java/org/joinmastodon/android/model/Status.java | 6 ++++++ .../android/ui/displayitems/FooterStatusDisplayItem.java | 3 +-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/model/Status.java b/mastodon/src/main/java/org/joinmastodon/android/model/Status.java index 371a9fafd..bb0c27dfb 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/model/Status.java +++ b/mastodon/src/main/java/org/joinmastodon/android/model/Status.java @@ -3,6 +3,7 @@ package org.joinmastodon.android.model; import org.joinmastodon.android.GlobalUserPreferences; import org.joinmastodon.android.api.ObjectValidationException; import org.joinmastodon.android.api.RequiredField; +import org.joinmastodon.android.api.session.AccountSessionManager; import org.joinmastodon.android.events.StatusCountersUpdatedEvent; import org.joinmastodon.android.ui.text.HtmlParser; import org.parceler.Parcel; @@ -147,6 +148,11 @@ public class Status extends BaseModel implements DisplayItemsParent{ return strippedText; } + public boolean isBoostable(String accountID){ + return (visibility==StatusPrivacy.PUBLIC || visibility==StatusPrivacy.UNLISTED || visibility==StatusPrivacy.LOCAL + || (visibility==StatusPrivacy.PRIVATE && account.id.equals(AccountSessionManager.getInstance().getAccount(accountID).self.id))); + } + public static Status ofFake(String id, String text, Instant createdAt) { Status s = new Status(); s.id = id; diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/FooterStatusDisplayItem.java b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/FooterStatusDisplayItem.java index 48634cfed..d3dd14709 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/FooterStatusDisplayItem.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/FooterStatusDisplayItem.java @@ -137,8 +137,7 @@ public class FooterStatusDisplayItem extends StatusDisplayItem{ boost.setSelected(item.status.reblogged); favorite.setSelected(item.status.favourited); bookmark.setSelected(item.status.bookmarked); - boost.setEnabled(item.status.visibility==StatusPrivacy.PUBLIC || item.status.visibility==StatusPrivacy.UNLISTED || item.status.visibility==StatusPrivacy.LOCAL - || (item.status.visibility==StatusPrivacy.PRIVATE && item.status.account.id.equals(AccountSessionManager.getInstance().getAccount(item.accountID).self.id))); + boost.setEnabled(item.status.isBoostable(item.accountID)); } private void bindButton(TextView btn, long count){ From 45ecec09f5c8ecc9712c3912c62a06752d576197 Mon Sep 17 00:00:00 2001 From: FineFindus Date: Tue, 16 May 2023 16:18:56 +0200 Subject: [PATCH 02/76] feat: hide boost count on non-boostable statuses --- .../joinmastodon/android/fragments/ThreadFragment.java | 2 +- .../displayitems/ExtendedFooterStatusDisplayItem.java | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/ThreadFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/ThreadFragment.java index da9918ece..baacdcc13 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ThreadFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ThreadFragment.java @@ -50,7 +50,7 @@ public class ThreadFragment extends StatusListFragment{ else if(item instanceof FooterStatusDisplayItem footer) footer.hideCounts=true; } - items.add(new ExtendedFooterStatusDisplayItem(s.id, this, s.getContentStatus())); + items.add(new ExtendedFooterStatusDisplayItem(s.id, this, accountID, s.getContentStatus())); } return items; } diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/ExtendedFooterStatusDisplayItem.java b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/ExtendedFooterStatusDisplayItem.java index 209a1456d..81f2d409f 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/ExtendedFooterStatusDisplayItem.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/ExtendedFooterStatusDisplayItem.java @@ -14,6 +14,7 @@ import android.widget.ImageView; import android.widget.TextView; import org.joinmastodon.android.R; +import org.joinmastodon.android.api.session.AccountSessionManager; import org.joinmastodon.android.fragments.BaseStatusListFragment; import org.joinmastodon.android.fragments.StatusEditHistoryFragment; import org.joinmastodon.android.fragments.account_list.StatusFavoritesListFragment; @@ -33,12 +34,14 @@ import me.grishka.appkit.Nav; public class ExtendedFooterStatusDisplayItem extends StatusDisplayItem{ public final Status status; + public final String accountID; private static final DateTimeFormatter TIME_FORMATTER=DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG, FormatStyle.SHORT); - public ExtendedFooterStatusDisplayItem(String parentID, BaseStatusListFragment parentFragment, Status status){ + public ExtendedFooterStatusDisplayItem(String parentID, BaseStatusListFragment parentFragment, String accountID, Status status){ super(parentID, parentFragment); this.status=status; + this.accountID=accountID; } @Override @@ -72,7 +75,10 @@ public class ExtendedFooterStatusDisplayItem extends StatusDisplayItem{ public void onBind(ExtendedFooterStatusDisplayItem item){ Status s=item.status; favorites.setText(context.getResources().getQuantityString(R.plurals.x_favorites, (int)(s.favouritesCount%1000), s.favouritesCount)); - reblogs.setText(context.getResources().getQuantityString(R.plurals.x_reblogs, (int)(s.reblogsCount%1000), s.reblogsCount)); + reblogs.setText(context.getResources().getQuantityString(R.plurals.x_reblogs, (int) (s.reblogsCount % 1000), s.reblogsCount)); + if (!s.isBoostable(item.accountID)) + reblogs.setVisibility(View.GONE); + if(s.editedAt!=null){ editHistory.setVisibility(View.VISIBLE); editHistory.setText(UiUtils.formatRelativeTimestampAsMinutesAgo(itemView.getContext(), s.editedAt)); From b50a327b17d8dcef5d7e8a04ee5358564ba1ae62 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 8 Jun 2023 17:47:06 +0200 Subject: [PATCH 03/76] New translations strings.xml (Swedish) --- mastodon/src/main/res/values-sv-rSE/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/mastodon/src/main/res/values-sv-rSE/strings.xml b/mastodon/src/main/res/values-sv-rSE/strings.xml index 0cef3870d..06a0b42ba 100644 --- a/mastodon/src/main/res/values-sv-rSE/strings.xml +++ b/mastodon/src/main/res/values-sv-rSE/strings.xml @@ -428,5 +428,6 @@ eller Läs mer Välkommen till Mastodon + Mastodon är ett decentraliserat socialt nätverk, vilket innebär att inget enskilt företag kontrollerar det. Det består av många oberoende servrar, alla sammankopplade. Vad är servrar? From c8901955671c05420dba1fa42abb1d921ed55d65 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 8 Jun 2023 22:57:52 +0200 Subject: [PATCH 04/76] New translations strings.xml (Swedish) --- mastodon/src/main/res/values-sv-rSE/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mastodon/src/main/res/values-sv-rSE/strings.xml b/mastodon/src/main/res/values-sv-rSE/strings.xml index 06a0b42ba..fec9dd86e 100644 --- a/mastodon/src/main/res/values-sv-rSE/strings.xml +++ b/mastodon/src/main/res/values-sv-rSE/strings.xml @@ -269,6 +269,7 @@ Dölj innehåll Nytt inlägg Svara + Boosta Favoritmarkera Dela Media utan beskrivning @@ -430,4 +431,5 @@ Välkommen till Mastodon Mastodon är ett decentraliserat socialt nätverk, vilket innebär att inget enskilt företag kontrollerar det. Det består av många oberoende servrar, alla sammankopplade. Vad är servrar? + From bcb4fac553088942d65e7500302f957c1db7e122 Mon Sep 17 00:00:00 2001 From: Choukajohn Date: Tue, 6 Jun 2023 18:00:34 +0000 Subject: [PATCH 05/76] Translated using Weblate (French) Currently translated at 100.0% (297 of 297 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fr/ --- mastodon/src/main/res/values-fr-rFR/strings_sk.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mastodon/src/main/res/values-fr-rFR/strings_sk.xml b/mastodon/src/main/res/values-fr-rFR/strings_sk.xml index 5f8a8baad..86b617339 100644 --- a/mastodon/src/main/res/values-fr-rFR/strings_sk.xml +++ b/mastodon/src/main/res/values-fr-rFR/strings_sk.xml @@ -294,4 +294,8 @@ Bulle Informations sur l\'instance temporairement indisponibles Impossible de l\'ouvrir dans l\'application + Charger des informations à partir d\'instances distantes + informations distantes indisponibles + Échec du chargement du profil sur votre instance personnelle. + Essayez de récupérer des listes plus précises pour les abonnés, les likes et les boosts en chargeant les informations à partir de l\'instance d\'origine. \ No newline at end of file From a43a396043c9db8287e43b86d3b5b83d346bad85 Mon Sep 17 00:00:00 2001 From: ihor_ck Date: Tue, 6 Jun 2023 20:46:51 +0000 Subject: [PATCH 06/76] Translated using Weblate (Ukrainian) Currently translated at 100.0% (297 of 297 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/uk/ --- mastodon/src/main/res/values-uk-rUA/strings_sk.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mastodon/src/main/res/values-uk-rUA/strings_sk.xml b/mastodon/src/main/res/values-uk-rUA/strings_sk.xml index 95cd0823c..7b0f65318 100644 --- a/mastodon/src/main/res/values-uk-rUA/strings_sk.xml +++ b/mastodon/src/main/res/values-uk-rUA/strings_sk.xml @@ -293,4 +293,8 @@ Сервер тимчасово недоступний Поділитися або відкрити за допомогою облікового запису Не вдалося відкрити в застосунку + віддалена інформація недоступна + Завантажити інформацію з віддалених серверів + Спробуйте отримати точніші списки підписників, вподобань і поширень, завантаживши інформацію з джерела. + Не вдалося завантажити профіль на ваш домашній сервер. \ No newline at end of file From 3b742c43915d4e9be55c02a8c01865ccb4b4396b Mon Sep 17 00:00:00 2001 From: Choukajohn Date: Wed, 7 Jun 2023 23:02:47 +0000 Subject: [PATCH 07/76] Translated using Weblate (French) Currently translated at 100.0% (297 of 297 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fr/ --- mastodon/src/main/res/values-fr-rFR/strings_sk.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mastodon/src/main/res/values-fr-rFR/strings_sk.xml b/mastodon/src/main/res/values-fr-rFR/strings_sk.xml index 86b617339..e470d0b66 100644 --- a/mastodon/src/main/res/values-fr-rFR/strings_sk.xml +++ b/mastodon/src/main/res/values-fr-rFR/strings_sk.xml @@ -296,6 +296,6 @@ Impossible de l\'ouvrir dans l\'application Charger des informations à partir d\'instances distantes informations distantes indisponibles - Échec du chargement du profil sur votre instance personnelle. + Échec du chargement du profil via %s Essayez de récupérer des listes plus précises pour les abonnés, les likes et les boosts en chargeant les informations à partir de l\'instance d\'origine. \ No newline at end of file From d43a697df7fa5a3ce7d8258db5757266cd877dfa Mon Sep 17 00:00:00 2001 From: Linerly Date: Thu, 8 Jun 2023 04:32:15 +0000 Subject: [PATCH 08/76] Translated using Weblate (Indonesian) Currently translated at 100.0% (297 of 297 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/id/ --- mastodon/src/main/res/values-in-rID/strings_sk.xml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/mastodon/src/main/res/values-in-rID/strings_sk.xml b/mastodon/src/main/res/values-in-rID/strings_sk.xml index e7caf9de2..c3f5c9593 100644 --- a/mastodon/src/main/res/values-in-rID/strings_sk.xml +++ b/mastodon/src/main/res/values-in-rID/strings_sk.xml @@ -289,8 +289,13 @@ Memperbolehkan menetapkan jenis konten seperti Markdown ketika membuat kiriman. Perlu diingat bahwa tidak semua server mendukung ini. Buka dalam aplikasi Bagikan dengan akun - Ini adalah kiriman yamg paling terkini oleh orang-orang dalam gelembung server Akkoma Anda. + Ini adalah kiriman yang paling terkini dari jaringan dikurasikan oleh admin server Anda. Gelembung Info server sementara tidak tersedia Bagikan atau buka dengan akun + info jarak jauh tidak tersedia + Muat info dari server jarak jauh + Coba mendapatkan pendaftaran akurat untuk pengikut cr + Gagal memuat profil melalui %s + Tidak dapat buka dalam aplikasi \ No newline at end of file From 0825faee5cb77d18d746217c6cef8534cd71d865 Mon Sep 17 00:00:00 2001 From: gicorada Date: Sat, 10 Jun 2023 12:56:34 +0000 Subject: [PATCH 09/76] Translated using Weblate (Italian) Currently translated at 100.0% (297 of 297 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/it/ --- .../src/main/res/values-it-rIT/strings_sk.xml | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/mastodon/src/main/res/values-it-rIT/strings_sk.xml b/mastodon/src/main/res/values-it-rIT/strings_sk.xml index 9ed722573..4891177d0 100644 --- a/mastodon/src/main/res/values-it-rIT/strings_sk.xml +++ b/mastodon/src/main/res/values-it-rIT/strings_sk.xml @@ -274,4 +274,26 @@ Linea boost/risposta compatta ha reagito con %s Linea \"In risposta a\" sopra l\'avatar + Questi sono i post più recenti della rete, curati dagli amministratori della tua istanza. + Permette di impostare un tipo di contenuto, come Markdown, quando si crea un post. Tieni presente che non tutte le istanze lo supportano. + Impossibile aprire nell\'app + Condividi con l\'account + Condividi o apri con l\'account + Informazioni remote non disponibili + Impossibile caricare il profilo tramite %s + Carica informazioni da istanze remote + Cerca di ottenere elenchi più accurati di follower, like e boost caricando le informazioni dall\'istanza di origine. + Tipo di contenuto + Bolla + Non specificato + Testo semplice + HTML + Markdown + BBCode + MFM + Abilita la formattazione dei post + Tipo di contenuto predefinito + Ti permette di preselezionare un tipo di contenuto quando si creano nuovi post, sovrascrivendo il valore impostato in \"Preferenze di pubblicazione\". + Informazioni sull\'istanza temporaneamente non disponibili + Apri nell\'app \ No newline at end of file From 8547ce05ed58ef152f52d72673ffa87bdfb7b00c Mon Sep 17 00:00:00 2001 From: sk Date: Sat, 10 Jun 2023 18:52:01 +0200 Subject: [PATCH 10/76] change auto-reveal cw wording closes sk22#562 --- .../joinmastodon/android/fragments/SettingsFragment.java | 8 ++++---- .../src/main/res/menu/settings_auto_reveal_spoiler.xml | 6 +++--- mastodon/src/main/res/values/strings_sk.xml | 9 ++++----- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java index 1fbe3c427..07940bafa 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java @@ -557,12 +557,12 @@ public class SettingsFragment extends MastodonToolbarFragment implements Provide private void onAutoRevealSpoilerChanged(Button b) { if (GlobalUserPreferences.alwaysExpandContentWarnings) { - b.setText(R.string.sk_settings_auto_reveal_always); + b.setText(R.string.sk_settings_auto_reveal_anyone); } else { b.setText(switch(GlobalUserPreferences.autoRevealEqualSpoilers){ - case THREADS -> R.string.sk_settings_auto_reveal_threads; - case DISCUSSIONS -> R.string.sk_settings_auto_reveal_discussions; - default -> R.string.sk_settings_auto_reveal_never; + case THREADS -> R.string.sk_settings_auto_reveal_author; + case DISCUSSIONS -> R.string.sk_settings_auto_reveal_anyone; + default -> R.string.sk_settings_auto_reveal_nobody; }); if (alwaysRevealSpoilersItem.checked != GlobalUserPreferences.alwaysExpandContentWarnings) { alwaysRevealSpoilersItem.checked = GlobalUserPreferences.alwaysExpandContentWarnings; diff --git a/mastodon/src/main/res/menu/settings_auto_reveal_spoiler.xml b/mastodon/src/main/res/menu/settings_auto_reveal_spoiler.xml index f6a5e31ed..e6c99f90e 100644 --- a/mastodon/src/main/res/menu/settings_auto_reveal_spoiler.xml +++ b/mastodon/src/main/res/menu/settings_auto_reveal_spoiler.xml @@ -2,11 +2,11 @@ + android:title="@string/sk_settings_auto_reveal_nobody" /> + android:title="@string/sk_settings_auto_reveal_author" /> + android:title="@string/sk_settings_auto_reveal_anyone" /> \ No newline at end of file diff --git a/mastodon/src/main/res/values/strings_sk.xml b/mastodon/src/main/res/values/strings_sk.xml index 05d79c5d2..3aaacdb09 100644 --- a/mastodon/src/main/res/values/strings_sk.xml +++ b/mastodon/src/main/res/values/strings_sk.xml @@ -297,9 +297,8 @@ Failed loading the profile via %s Load info from remote instances Try fetching more accurate listings for followers, likes and boosts by loading the information from the instance of origin. - Reveal equal CWs in threads - Never - Same author - Discussions - Always + Reveal equal CWs in replies from + nobody + author + anyone \ No newline at end of file From 90e60aef84cdaee4cebf203ff11d46335219a23d Mon Sep 17 00:00:00 2001 From: sk Date: Sat, 10 Jun 2023 18:52:01 +0200 Subject: [PATCH 11/76] change auto-reveal cw wording closes sk22#562 --- .../joinmastodon/android/fragments/SettingsFragment.java | 8 ++++---- .../src/main/res/menu/settings_auto_reveal_spoiler.xml | 6 +++--- mastodon/src/main/res/values/strings_sk.xml | 9 ++++----- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java index 1fbe3c427..07940bafa 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java @@ -557,12 +557,12 @@ public class SettingsFragment extends MastodonToolbarFragment implements Provide private void onAutoRevealSpoilerChanged(Button b) { if (GlobalUserPreferences.alwaysExpandContentWarnings) { - b.setText(R.string.sk_settings_auto_reveal_always); + b.setText(R.string.sk_settings_auto_reveal_anyone); } else { b.setText(switch(GlobalUserPreferences.autoRevealEqualSpoilers){ - case THREADS -> R.string.sk_settings_auto_reveal_threads; - case DISCUSSIONS -> R.string.sk_settings_auto_reveal_discussions; - default -> R.string.sk_settings_auto_reveal_never; + case THREADS -> R.string.sk_settings_auto_reveal_author; + case DISCUSSIONS -> R.string.sk_settings_auto_reveal_anyone; + default -> R.string.sk_settings_auto_reveal_nobody; }); if (alwaysRevealSpoilersItem.checked != GlobalUserPreferences.alwaysExpandContentWarnings) { alwaysRevealSpoilersItem.checked = GlobalUserPreferences.alwaysExpandContentWarnings; diff --git a/mastodon/src/main/res/menu/settings_auto_reveal_spoiler.xml b/mastodon/src/main/res/menu/settings_auto_reveal_spoiler.xml index f6a5e31ed..e6c99f90e 100644 --- a/mastodon/src/main/res/menu/settings_auto_reveal_spoiler.xml +++ b/mastodon/src/main/res/menu/settings_auto_reveal_spoiler.xml @@ -2,11 +2,11 @@ + android:title="@string/sk_settings_auto_reveal_nobody" /> + android:title="@string/sk_settings_auto_reveal_author" /> + android:title="@string/sk_settings_auto_reveal_anyone" /> \ No newline at end of file diff --git a/mastodon/src/main/res/values/strings_sk.xml b/mastodon/src/main/res/values/strings_sk.xml index 05d79c5d2..1142e17c0 100644 --- a/mastodon/src/main/res/values/strings_sk.xml +++ b/mastodon/src/main/res/values/strings_sk.xml @@ -297,9 +297,8 @@ Failed loading the profile via %s Load info from remote instances Try fetching more accurate listings for followers, likes and boosts by loading the information from the instance of origin. - Reveal equal CWs in threads - Never - Same author - Discussions - Always + Reveal same CWs in their replies + Nobody + Author + Anyone \ No newline at end of file From 35c8a3d1215b8e9b2db6b81e716e73e29ed7774d Mon Sep 17 00:00:00 2001 From: sk Date: Sat, 10 Jun 2023 18:59:05 +0200 Subject: [PATCH 12/76] change strings --- mastodon/src/main/res/values/strings_sk.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mastodon/src/main/res/values/strings_sk.xml b/mastodon/src/main/res/values/strings_sk.xml index 1142e17c0..7aada80cc 100644 --- a/mastodon/src/main/res/values/strings_sk.xml +++ b/mastodon/src/main/res/values/strings_sk.xml @@ -297,8 +297,8 @@ Failed loading the profile via %s Load info from remote instances Try fetching more accurate listings for followers, likes and boosts by loading the information from the instance of origin. - Reveal same CWs in their replies - Nobody - Author - Anyone + Reveal same CWs in replies from + nobody + author + everyone \ No newline at end of file From 7fb0944e66483539ee23480ae87609b915dfc00f Mon Sep 17 00:00:00 2001 From: sk22 Date: Sat, 10 Jun 2023 16:57:49 +0000 Subject: [PATCH 13/76] Translated using Weblate (German) Currently translated at 100.0% (301 of 301 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/de/ --- mastodon/src/main/res/values-de-rDE/strings_sk.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mastodon/src/main/res/values-de-rDE/strings_sk.xml b/mastodon/src/main/res/values-de-rDE/strings_sk.xml index 9d2cdcad6..2bb8ab761 100644 --- a/mastodon/src/main/res/values-de-rDE/strings_sk.xml +++ b/mastodon/src/main/res/values-de-rDE/strings_sk.xml @@ -296,4 +296,8 @@ keine Remote-Infos abrufbar Konnte das Profil via %s nicht laden Für vollständigere Auflistung von Follower*innen, Likes und Boosts können die Informationen von der Ursprungs-Instanz geladen werden. + Gleiche CWs in deren Antworten zeigen + Niemand + Autor*in + Alle \ No newline at end of file From 87c37df370ec24aeea0d2dbaeb29468aa4fb5808 Mon Sep 17 00:00:00 2001 From: sk Date: Sat, 10 Jun 2023 20:57:01 +0200 Subject: [PATCH 14/76] insert replied directly below status closes sk22#558 --- .../android/fragments/ThreadFragment.java | 56 ++++++++++++++++++- .../ui/displayitems/StatusDisplayItem.java | 27 +++++---- 2 files changed, 69 insertions(+), 14 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/ThreadFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/ThreadFragment.java index 6ff24b7b7..24f2286d8 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ThreadFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ThreadFragment.java @@ -337,10 +337,60 @@ public class ThreadFragment extends StatusListFragment implements ProvidesAssist } protected void onStatusCreated(StatusCreatedEvent ev){ - if(ev.status.inReplyToId!=null && getStatusByID(ev.status.inReplyToId)!=null){ - data.add(ev.status); - onAppendItems(Collections.singletonList(ev.status)); + if (ev.status.inReplyToId == null) return; + Status repliedToStatus = getStatusByID(ev.status.inReplyToId); + if (repliedToStatus == null) return; + NeighborAncestryInfo ancestry = ancestryMap.get(repliedToStatus.id); + + int nextDisplayItemsIndex = -1, indexOfPreviousDisplayItem = -1; + + for (int i = 0; i < displayItems.size(); i++) { + StatusDisplayItem item = displayItems.get(i); + if (repliedToStatus.id.equals(item.parentID)) { + // saving the replied-to status' display items index to eventually reach the last one + indexOfPreviousDisplayItem = i; + item.hasDescendantNeighbor = true; + } else if (indexOfPreviousDisplayItem >= 0 && nextDisplayItemsIndex == -1) { + // previous display item was the replied-to status' display items + nextDisplayItemsIndex = i; + // nothing left to do if there's no other reply to that status + if (ancestry.descendantNeighbor == null) break; + } + if (ancestry.descendantNeighbor != null && item.parentID.equals(ancestry.descendantNeighbor.id)) { + // existing reply shall no longer have the replied-to status as its neighbor + item.hasAncestoringNeighbor = false; + } } + + // fall back to inserting the item at the end + nextDisplayItemsIndex = nextDisplayItemsIndex >= 0 ? nextDisplayItemsIndex : displayItems.size(); + int nextDataIndex = data.indexOf(repliedToStatus) + 1; + + // if replied-to status already has another reply... + if (ancestry.descendantNeighbor != null) { + // update the reply's ancestry to remove its ancestoring neighbor (as we did above) + ancestryMap.get(ancestry.descendantNeighbor.id).ancestoringNeighbor = null; + // make sure the existing reply has a reply line + if (nextDataIndex < data.size() && + !(displayItems.get(nextDisplayItemsIndex) instanceof ReblogOrReplyLineStatusDisplayItem)) { + Status nextStatus = data.get(nextDataIndex); + if (!nextStatus.account.id.equals(repliedToStatus.account.id)) { + // create reply line manually since we're not building that status' items + displayItems.add(nextDisplayItemsIndex, StatusDisplayItem.buildReplyLine( + this, nextStatus, accountID, nextStatus, repliedToStatus.account, false + )); + } + } + } + + // update replied-to status' ancestry + ancestry.descendantNeighbor = ev.status; + + // add ancestry for newly created status before building its display items + ancestryMap.put(ev.status.id, new NeighborAncestryInfo(ev.status, null, repliedToStatus)); + displayItems.addAll(nextDisplayItemsIndex, buildDisplayItems(ev.status)); + data.add(nextDataIndex, ev.status); + adapter.notifyDataSetChanged(); } @Override diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java index b1bd67d3a..f0f0fc6a0 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java @@ -105,6 +105,21 @@ public abstract class StatusDisplayItem{ return buildItems(fragment, status, accountID, parentObject, knownAccounts, inset, addFooter, notification, false, filterContext); } + public static ReblogOrReplyLineStatusDisplayItem buildReplyLine(BaseStatusListFragment fragment, Status status, String accountID, DisplayItemsParent parent, Account account, boolean threadReply) { + String parentID = parent.getID(); + String text = threadReply ? fragment.getString(R.string.sk_show_thread) + : account == null ? fragment.getString(R.string.sk_in_reply) + : GlobalUserPreferences.compactReblogReplyLine && status.reblog != null ? account.displayName + : fragment.getString(R.string.in_reply_to, account.displayName); + String fullText = threadReply ? fragment.getString(R.string.sk_show_thread) + : account == null ? fragment.getString(R.string.sk_in_reply) + : fragment.getString(R.string.in_reply_to, account.displayName); + return new ReblogOrReplyLineStatusDisplayItem( + parentID, fragment, text, account == null ? List.of() : account.emojis, + R.drawable.ic_fluent_arrow_reply_20sp_filled, null, null, fullText + ); + } + public static ArrayList buildItems(BaseStatusListFragment fragment, Status status, String accountID, DisplayItemsParent parentObject, Map knownAccounts, boolean inset, boolean addFooter, Notification notification, boolean disableTranslate, Filter.FilterContext filterContext){ String parentID=parentObject.getID(); ArrayList items=new ArrayList<>(); @@ -120,17 +135,7 @@ public abstract class StatusDisplayItem{ if(statusForContent.inReplyToAccountId!=null && !(threadReply && fragment instanceof ThreadFragment)){ Account account = knownAccounts.get(statusForContent.inReplyToAccountId); - String text = threadReply ? fragment.getString(R.string.sk_show_thread) - : account == null ? fragment.getString(R.string.sk_in_reply) - : GlobalUserPreferences.compactReblogReplyLine && status.reblog != null ? account.displayName - : fragment.getString(R.string.in_reply_to, account.displayName); - String fullText = threadReply ? fragment.getString(R.string.sk_show_thread) - : account == null ? fragment.getString(R.string.sk_in_reply) - : fragment.getString(R.string.in_reply_to, account.displayName); - replyLine = new ReblogOrReplyLineStatusDisplayItem( - parentID, fragment, text, account == null ? List.of() : account.emojis, - R.drawable.ic_fluent_arrow_reply_20sp_filled, null, null, fullText - ); + replyLine = buildReplyLine(fragment, status, accountID, parentObject, account, threadReply); } if(status.reblog!=null){ From 573ff754980efc370102ceaf709a280dd2d97ecd Mon Sep 17 00:00:00 2001 From: sk Date: Sat, 10 Jun 2023 21:32:41 +0200 Subject: [PATCH 15/76] update ancestor when deleting post --- .../android/fragments/StatusListFragment.java | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/StatusListFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/StatusListFragment.java index 838ace548..ea34851c7 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/StatusListFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/StatusListFragment.java @@ -164,13 +164,29 @@ public abstract class StatusListFragment extends BaseStatusListFragment protected void removeStatus(Status status){ data.remove(status); preloadedData.remove(status); - int index=-1; + int index=-1, ancestorFirstIndex = -1, ancestorLastIndex = -1; for(int i=0;i= 0 && ancestorLastIndex == index - 1) { + for (int i = ancestorFirstIndex; i <= ancestorLastIndex; i++) { + StatusDisplayItem item = displayItems.get(i); + // update ancestor to have no descendant anymore + if (item.parentID.equals(status.inReplyToId)) item.hasDescendantNeighbor = false; + } + adapter.notifyItemRangeChanged(ancestorFirstIndex, ancestorLastIndex - ancestorFirstIndex + 1); + } + if(index==-1) return; int lastIndex; From 5dfa9237ad0ed88b5603100bc761b4b267209b7b Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 10 Jun 2023 21:44:47 +0200 Subject: [PATCH 16/76] New translations short_description.txt (Persian) --- fastlane/metadata/android/fa-IR/short_description.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fastlane/metadata/android/fa-IR/short_description.txt b/fastlane/metadata/android/fa-IR/short_description.txt index 8f5a9b847..52c057a71 100644 --- a/fastlane/metadata/android/fa-IR/short_description.txt +++ b/fastlane/metadata/android/fa-IR/short_description.txt @@ -1 +1 @@ -Decentralized social network \ No newline at end of file +شبکه اجتماعی نامتمرکز \ No newline at end of file From 70fdfb612e9e3aad6b14c504027d03969fb73b28 Mon Sep 17 00:00:00 2001 From: sk Date: Sat, 10 Jun 2023 21:54:18 +0200 Subject: [PATCH 17/76] fix issue on re-bind --- .../ui/displayitems/ExtendedFooterStatusDisplayItem.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/ExtendedFooterStatusDisplayItem.java b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/ExtendedFooterStatusDisplayItem.java index 43d3a78cc..959a34625 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/ExtendedFooterStatusDisplayItem.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/ExtendedFooterStatusDisplayItem.java @@ -14,7 +14,6 @@ import android.widget.ImageView; import android.widget.TextView; import org.joinmastodon.android.R; -import org.joinmastodon.android.api.session.AccountSessionManager; import org.joinmastodon.android.fragments.BaseStatusListFragment; import org.joinmastodon.android.fragments.StatusEditHistoryFragment; import org.joinmastodon.android.fragments.account_list.StatusFavoritesListFragment; @@ -76,8 +75,7 @@ public class ExtendedFooterStatusDisplayItem extends StatusDisplayItem{ Status s=item.status; favorites.setText(context.getResources().getQuantityString(R.plurals.x_favorites, (int)(s.favouritesCount%1000), s.favouritesCount)); reblogs.setText(context.getResources().getQuantityString(R.plurals.x_reblogs, (int) (s.reblogsCount % 1000), s.reblogsCount)); - if (!s.isBoostable(item.accountID)) - reblogs.setVisibility(View.GONE); + reblogs.setVisibility(s.isReblogPermitted(item.accountID) ? View.VISIBLE : View.GONE); if(s.editedAt!=null){ editHistory.setVisibility(View.VISIBLE); From 19b68855ac709aa378369a880974ac0a09d3d8a3 Mon Sep 17 00:00:00 2001 From: sk Date: Sat, 10 Jun 2023 21:54:40 +0200 Subject: [PATCH 18/76] move permission definition to status privacy --- .../main/java/org/joinmastodon/android/model/Status.java | 9 ++++----- .../org/joinmastodon/android/model/StatusPrivacy.java | 9 ++++++++- .../android/ui/displayitems/FooterStatusDisplayItem.java | 2 +- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/model/Status.java b/mastodon/src/main/java/org/joinmastodon/android/model/Status.java index 25da2d85b..e1d34efe6 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/model/Status.java +++ b/mastodon/src/main/java/org/joinmastodon/android/model/Status.java @@ -21,8 +21,6 @@ import java.lang.reflect.Type; import java.time.Instant; import java.util.List; -import androidx.annotation.NonNull; - @Parcel public class Status extends BaseModel implements DisplayItemsParent, Searchable{ @RequiredField @@ -174,9 +172,10 @@ public class Status extends BaseModel implements DisplayItemsParent, Searchable{ return strippedText; } - public boolean isBoostable(String accountID){ - return (visibility==StatusPrivacy.PUBLIC || visibility==StatusPrivacy.UNLISTED || visibility==StatusPrivacy.LOCAL - || (visibility==StatusPrivacy.PRIVATE && account.id.equals(AccountSessionManager.getInstance().getAccount(accountID).self.id))); + public boolean isReblogPermitted(String accountID){ + return visibility.isReblogPermitted(account.id.equals( + AccountSessionManager.getInstance().getAccount(accountID).self.id + )); } public static Status ofFake(String id, String text, Instant createdAt) { diff --git a/mastodon/src/main/java/org/joinmastodon/android/model/StatusPrivacy.java b/mastodon/src/main/java/org/joinmastodon/android/model/StatusPrivacy.java index dcb0c4e1b..bf8daf4cf 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/model/StatusPrivacy.java +++ b/mastodon/src/main/java/org/joinmastodon/android/model/StatusPrivacy.java @@ -14,7 +14,7 @@ public enum StatusPrivacy{ @SerializedName("local") LOCAL(4); // akkoma - private int privacy; + private final int privacy; StatusPrivacy(int privacy) { this.privacy = privacy; @@ -24,6 +24,13 @@ public enum StatusPrivacy{ return privacy > other.getPrivacy(); } + public boolean isReblogPermitted(boolean isOwnStatus){ + return (this == StatusPrivacy.PUBLIC || + this == StatusPrivacy.UNLISTED || + this == StatusPrivacy.LOCAL || + (this == StatusPrivacy.PRIVATE && isOwnStatus)); + } + public int getPrivacy() { return privacy; } diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/FooterStatusDisplayItem.java b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/FooterStatusDisplayItem.java index c749f4ab3..a2823697e 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/FooterStatusDisplayItem.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/FooterStatusDisplayItem.java @@ -133,7 +133,7 @@ public class FooterStatusDisplayItem extends StatusDisplayItem{ boost.setSelected(item.status.reblogged); favorite.setSelected(item.status.favourited); bookmark.setSelected(item.status.bookmarked); - boost.setEnabled(item.status.isBoostable(item.accountID)); + boost.setEnabled(item.status.isReblogPermitted(item.accountID)); int nextPos = getAbsoluteAdapterPosition() + 1; boolean nextIsWarning = item.parentFragment.getDisplayItems().size() > nextPos && From 5fc569a45a87602b9697f03100677d93855d80fb Mon Sep 17 00:00:00 2001 From: sk22 Date: Sat, 10 Jun 2023 17:01:04 +0000 Subject: [PATCH 19/76] Translated using Weblate (German) Currently translated at 100.0% (301 of 301 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/de/ --- mastodon/src/main/res/values-de-rDE/strings_sk.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mastodon/src/main/res/values-de-rDE/strings_sk.xml b/mastodon/src/main/res/values-de-rDE/strings_sk.xml index 2bb8ab761..1dc62236c 100644 --- a/mastodon/src/main/res/values-de-rDE/strings_sk.xml +++ b/mastodon/src/main/res/values-de-rDE/strings_sk.xml @@ -296,8 +296,8 @@ keine Remote-Infos abrufbar Konnte das Profil via %s nicht laden Für vollständigere Auflistung von Follower*innen, Likes und Boosts können die Informationen von der Ursprungs-Instanz geladen werden. - Gleiche CWs in deren Antworten zeigen - Niemand + Zeigen von gleichen CWs in Antworten von + niemandem Autor*in - Alle + allen \ No newline at end of file From ec0268050725d87b732469ac1c1256fd7a6840e8 Mon Sep 17 00:00:00 2001 From: gallegonovato Date: Sat, 10 Jun 2023 19:54:25 +0000 Subject: [PATCH 20/76] Translated using Weblate (Spanish) Currently translated at 99.6% (300 of 301 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/ --- mastodon/src/main/res/values-es-rES/strings_sk.xml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/mastodon/src/main/res/values-es-rES/strings_sk.xml b/mastodon/src/main/res/values-es-rES/strings_sk.xml index c0a685e9a..5bccb3515 100644 --- a/mastodon/src/main/res/values-es-rES/strings_sk.xml +++ b/mastodon/src/main/res/values-es-rES/strings_sk.xml @@ -286,10 +286,19 @@ Contenido por defecto Permite establecer un tipo de contenido como Markdown al crear una entrada. Ten en cuenta que no todas las instancias lo admiten. Permite preseleccionar un tipo de contenido al crear nuevas entradas, anulando el valor establecido en \"Preferencias de publicación\". - Estas son las publicaciones más recientes de la gente en tu servidor de Akkoma. + Estas son las publicaciones más recientes de la red seleccionadas por los administradores de tu instancia. Burbuja Información de la instancia temporalmente no disponible Compartir o abrir con una cuenta Abrir en la app Compartir con una cuenta + Mostrar CW iguales en las respuestas de + nadie + autor + todos + No se pudo abrir en la aplicación + no hay información remota disponible + No se pudo cargar el perfil a través de %s + Cargar la información desde las instancias remotas + Intenta obtener listas más precisas de seguidores, Me gusta y promociones cargando la información desde la instancia de origen. \ No newline at end of file From e43d6c35d85dfc6c97a98f25bf33efff83b802cd Mon Sep 17 00:00:00 2001 From: sk Date: Sat, 10 Jun 2023 22:10:13 +0200 Subject: [PATCH 21/76] update languages --- .../java/org/joinmastodon/android/utils/MastodonLanguage.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/utils/MastodonLanguage.java b/mastodon/src/main/java/org/joinmastodon/android/utils/MastodonLanguage.java index 2eb7d0a27..b96d92e7f 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/utils/MastodonLanguage.java +++ b/mastodon/src/main/java/org/joinmastodon/android/utils/MastodonLanguage.java @@ -22,7 +22,7 @@ public class MastodonLanguage { // On an up-to-date Mastodon instance: // copy(JSON.stringify(JSON.stringify(JSON.parse(document.getElementById('initial-state').textContent).languages))) public static String languagesJson = - "[[\"aa\",\"Afar\",\"Afaraf\"],[\"ab\",\"Abkhaz\",\"аҧсуа бызшәа\"],[\"ae\",\"Avestan\",\"avesta\"],[\"af\",\"Afrikaans\",\"Afrikaans\"],[\"ak\",\"Akan\",\"Akan\"],[\"am\",\"Amharic\",\"አማርኛ\"],[\"an\",\"Aragonese\",\"aragonés\"],[\"ar\",\"Arabic\",\"اللغة العربية\"],[\"as\",\"Assamese\",\"অসমীয়া\"],[\"av\",\"Avaric\",\"авар мацӀ\"],[\"ay\",\"Aymara\",\"aymar aru\"],[\"az\",\"Azerbaijani\",\"azərbaycan dili\"],[\"ba\",\"Bashkir\",\"башҡорт теле\"],[\"be\",\"Belarusian\",\"беларуская мова\"],[\"bg\",\"Bulgarian\",\"български език\"],[\"bh\",\"Bihari\",\"भोजपुरी\"],[\"bi\",\"Bislama\",\"Bislama\"],[\"bm\",\"Bambara\",\"bamanankan\"],[\"bn\",\"Bengali\",\"বাংলা\"],[\"bo\",\"Tibetan\",\"བོད་ཡིག\"],[\"br\",\"Breton\",\"brezhoneg\"],[\"bs\",\"Bosnian\",\"bosanski jezik\"],[\"ca\",\"Catalan\",\"Català\"],[\"ce\",\"Chechen\",\"нохчийн мотт\"],[\"ch\",\"Chamorro\",\"Chamoru\"],[\"co\",\"Corsican\",\"corsu\"],[\"cr\",\"Cree\",\"ᓀᐦᐃᔭᐍᐏᐣ\"],[\"cs\",\"Czech\",\"čeština\"],[\"cu\",\"Old Church Slavonic\",\"ѩзыкъ словѣньскъ\"],[\"cv\",\"Chuvash\",\"чӑваш чӗлхи\"],[\"cy\",\"Welsh\",\"Cymraeg\"],[\"da\",\"Danish\",\"dansk\"],[\"de\",\"German\",\"Deutsch\"],[\"dv\",\"Divehi\",\"Dhivehi\"],[\"dz\",\"Dzongkha\",\"རྫོང་ཁ\"],[\"ee\",\"Ewe\",\"Eʋegbe\"],[\"el\",\"Greek\",\"Ελληνικά\"],[\"en\",\"English\",\"English\"],[\"eo\",\"Esperanto\",\"Esperanto\"],[\"es\",\"Spanish\",\"Español\"],[\"et\",\"Estonian\",\"eesti\"],[\"eu\",\"Basque\",\"euskara\"],[\"fa\",\"Persian\",\"فارسی\"],[\"ff\",\"Fula\",\"Fulfulde\"],[\"fi\",\"Finnish\",\"suomi\"],[\"fj\",\"Fijian\",\"Vakaviti\"],[\"fo\",\"Faroese\",\"føroyskt\"],[\"fr\",\"French\",\"Français\"],[\"fy\",\"Western Frisian\",\"Frysk\"],[\"ga\",\"Irish\",\"Gaeilge\"],[\"gd\",\"Scottish Gaelic\",\"Gàidhlig\"],[\"gl\",\"Galician\",\"galego\"],[\"gu\",\"Gujarati\",\"ગુજરાતી\"],[\"gv\",\"Manx\",\"Gaelg\"],[\"ha\",\"Hausa\",\"هَوُسَ\"],[\"he\",\"Hebrew\",\"עברית\"],[\"hi\",\"Hindi\",\"हिन्दी\"],[\"ho\",\"Hiri Motu\",\"Hiri Motu\"],[\"hr\",\"Croatian\",\"Hrvatski\"],[\"ht\",\"Haitian\",\"Kreyòl ayisyen\"],[\"hu\",\"Hungarian\",\"magyar\"],[\"hy\",\"Armenian\",\"Հայերեն\"],[\"hz\",\"Herero\",\"Otjiherero\"],[\"ia\",\"Interlingua\",\"Interlingua\"],[\"id\",\"Indonesian\",\"Bahasa Indonesia\"],[\"ie\",\"Interlingue\",\"Interlingue\"],[\"ig\",\"Igbo\",\"Asụsụ Igbo\"],[\"ii\",\"Nuosu\",\"ꆈꌠ꒿ Nuosuhxop\"],[\"ik\",\"Inupiaq\",\"Iñupiaq\"],[\"io\",\"Ido\",\"Ido\"],[\"is\",\"Icelandic\",\"Íslenska\"],[\"it\",\"Italian\",\"Italiano\"],[\"iu\",\"Inuktitut\",\"ᐃᓄᒃᑎᑐᑦ\"],[\"ja\",\"Japanese\",\"日本語\"],[\"jv\",\"Javanese\",\"basa Jawa\"],[\"ka\",\"Georgian\",\"ქართული\"],[\"kg\",\"Kongo\",\"Kikongo\"],[\"ki\",\"Kikuyu\",\"Gĩkũyũ\"],[\"kj\",\"Kwanyama\",\"Kuanyama\"],[\"kk\",\"Kazakh\",\"қазақ тілі\"],[\"kl\",\"Kalaallisut\",\"kalaallisut\"],[\"km\",\"Khmer\",\"ខេមរភាសា\"],[\"kn\",\"Kannada\",\"ಕನ್ನಡ\"],[\"ko\",\"Korean\",\"한국어\"],[\"kr\",\"Kanuri\",\"Kanuri\"],[\"ks\",\"Kashmiri\",\"कश्मीरी\"],[\"ku\",\"Kurmanji (Kurdish)\",\"Kurmancî\"],[\"kv\",\"Komi\",\"коми кыв\"],[\"kw\",\"Cornish\",\"Kernewek\"],[\"ky\",\"Kyrgyz\",\"Кыргызча\"],[\"la\",\"Latin\",\"latine\"],[\"lb\",\"Luxembourgish\",\"Lëtzebuergesch\"],[\"lg\",\"Ganda\",\"Luganda\"],[\"li\",\"Limburgish\",\"Limburgs\"],[\"ln\",\"Lingala\",\"Lingála\"],[\"lo\",\"Lao\",\"ລາວ\"],[\"lt\",\"Lithuanian\",\"lietuvių kalba\"],[\"lu\",\"Luba-Katanga\",\"Tshiluba\"],[\"lv\",\"Latvian\",\"latviešu valoda\"],[\"mg\",\"Malagasy\",\"fiteny malagasy\"],[\"mh\",\"Marshallese\",\"Kajin M̧ajeļ\"],[\"mi\",\"Māori\",\"te reo Māori\"],[\"mk\",\"Macedonian\",\"македонски јазик\"],[\"ml\",\"Malayalam\",\"മലയാളം\"],[\"mn\",\"Mongolian\",\"Монгол хэл\"],[\"mr\",\"Marathi\",\"मराठी\"],[\"ms\",\"Malay\",\"Bahasa Melayu\"],[\"mt\",\"Maltese\",\"Malti\"],[\"my\",\"Burmese\",\"ဗမာစာ\"],[\"na\",\"Nauru\",\"Ekakairũ Naoero\"],[\"nb\",\"Norwegian Bokmål\",\"Norsk bokmål\"],[\"nd\",\"Northern Ndebele\",\"isiNdebele\"],[\"ne\",\"Nepali\",\"नेपाली\"],[\"ng\",\"Ndonga\",\"Owambo\"],[\"nl\",\"Dutch\",\"Nederlands\"],[\"nn\",\"Norwegian Nynorsk\",\"Norsk Nynorsk\"],[\"no\",\"Norwegian\",\"Norsk\"],[\"nr\",\"Southern Ndebele\",\"isiNdebele\"],[\"nv\",\"Navajo\",\"Diné bizaad\"],[\"ny\",\"Chichewa\",\"chiCheŵa\"],[\"oc\",\"Occitan\",\"occitan\"],[\"oj\",\"Ojibwe\",\"ᐊᓂᔑᓈᐯᒧᐎᓐ\"],[\"om\",\"Oromo\",\"Afaan Oromoo\"],[\"or\",\"Oriya\",\"ଓଡ଼ିଆ\"],[\"os\",\"Ossetian\",\"ирон æвзаг\"],[\"pa\",\"Panjabi\",\"ਪੰਜਾਬੀ\"],[\"pi\",\"Pāli\",\"पाऴि\"],[\"pl\",\"Polish\",\"Polski\"],[\"ps\",\"Pashto\",\"پښتو\"],[\"pt\",\"Portuguese\",\"Português\"],[\"qu\",\"Quechua\",\"Runa Simi\"],[\"rm\",\"Romansh\",\"rumantsch grischun\"],[\"rn\",\"Kirundi\",\"Ikirundi\"],[\"ro\",\"Romanian\",\"Română\"],[\"ru\",\"Russian\",\"Русский\"],[\"rw\",\"Kinyarwanda\",\"Ikinyarwanda\"],[\"sa\",\"Sanskrit\",\"संस्कृतम्\"],[\"sc\",\"Sardinian\",\"sardu\"],[\"sd\",\"Sindhi\",\"सिन्धी\"],[\"se\",\"Northern Sami\",\"Davvisámegiella\"],[\"sg\",\"Sango\",\"yângâ tî sängö\"],[\"si\",\"Sinhala\",\"සිංහල\"],[\"sk\",\"Slovak\",\"slovenčina\"],[\"sl\",\"Slovenian\",\"slovenščina\"],[\"sn\",\"Shona\",\"chiShona\"],[\"so\",\"Somali\",\"Soomaaliga\"],[\"sq\",\"Albanian\",\"Shqip\"],[\"sr\",\"Serbian\",\"српски језик\"],[\"ss\",\"Swati\",\"SiSwati\"],[\"st\",\"Southern Sotho\",\"Sesotho\"],[\"su\",\"Sundanese\",\"Basa Sunda\"],[\"sv\",\"Swedish\",\"Svenska\"],[\"sw\",\"Swahili\",\"Kiswahili\"],[\"ta\",\"Tamil\",\"தமிழ்\"],[\"te\",\"Telugu\",\"తెలుగు\"],[\"tg\",\"Tajik\",\"тоҷикӣ\"],[\"th\",\"Thai\",\"ไทย\"],[\"ti\",\"Tigrinya\",\"ትግርኛ\"],[\"tk\",\"Turkmen\",\"Türkmen\"],[\"tl\",\"Tagalog\",\"Wikang Tagalog\"],[\"tn\",\"Tswana\",\"Setswana\"],[\"to\",\"Tonga\",\"faka Tonga\"],[\"tr\",\"Turkish\",\"Türkçe\"],[\"ts\",\"Tsonga\",\"Xitsonga\"],[\"tt\",\"Tatar\",\"татар теле\"],[\"tw\",\"Twi\",\"Twi\"],[\"ty\",\"Tahitian\",\"Reo Tahiti\"],[\"ug\",\"Uyghur\",\"ئۇيغۇرچە‎\"],[\"uk\",\"Ukrainian\",\"Українська\"],[\"ur\",\"Urdu\",\"اردو\"],[\"uz\",\"Uzbek\",\"Ўзбек\"],[\"ve\",\"Venda\",\"Tshivenḓa\"],[\"vi\",\"Vietnamese\",\"Tiếng Việt\"],[\"vo\",\"Volapük\",\"Volapük\"],[\"wa\",\"Walloon\",\"walon\"],[\"wo\",\"Wolof\",\"Wollof\"],[\"xh\",\"Xhosa\",\"isiXhosa\"],[\"yi\",\"Yiddish\",\"ייִדיש\"],[\"yo\",\"Yoruba\",\"Yorùbá\"],[\"za\",\"Zhuang\",\"Saɯ cueŋƅ\"],[\"zh\",\"Chinese\",\"中文\"],[\"zu\",\"Zulu\",\"isiZulu\"],[\"ast\",\"Asturian\",\"Asturianu\"],[\"ckb\",\"Sorani (Kurdish)\",\"سۆرانی\"],[\"cnr\",\"Montenegrin\",\"crnogorski\"],[\"jbo\",\"Lojban\",\"la .lojban.\"],[\"kab\",\"Kabyle\",\"Taqbaylit\"],[\"kmr\",\"Kurmanji (Kurdish)\",\"Kurmancî\"],[\"ldn\",\"Láadan\",\"Láadan\"],[\"lfn\",\"Lingua Franca Nova\",\"lingua franca nova\"],[\"sco\",\"Scots\",\"Scots\"],[\"sma\",\"Southern Sami\",\"Åarjelsaemien Gïele\"],[\"smj\",\"Lule Sami\",\"Julevsámegiella\"],[\"szl\",\"Silesian\",\"ślůnsko godka\"],[\"tai\",\"Tai\",\"ภาษาไท or ภาษาไต\"],[\"tok\",\"Toki Pona\",\"toki pona\"],[\"zba\",\"Balaibalan\",\"باليبلن\"],[\"zgh\",\"Standard Moroccan Tamazight\",\"ⵜⴰⵎⴰⵣⵉⵖⵜ\"]]"; + "[[\"aa\",\"Afar\",\"Afaraf\"],[\"ab\",\"Abkhaz\",\"аҧсуа бызшәа\"],[\"ae\",\"Avestan\",\"avesta\"],[\"af\",\"Afrikaans\",\"Afrikaans\"],[\"ak\",\"Akan\",\"Akan\"],[\"am\",\"Amharic\",\"አማርኛ\"],[\"an\",\"Aragonese\",\"aragonés\"],[\"ar\",\"Arabic\",\"اللغة العربية\"],[\"as\",\"Assamese\",\"অসমীয়া\"],[\"av\",\"Avaric\",\"авар мацӀ\"],[\"ay\",\"Aymara\",\"aymar aru\"],[\"az\",\"Azerbaijani\",\"azərbaycan dili\"],[\"ba\",\"Bashkir\",\"башҡорт теле\"],[\"be\",\"Belarusian\",\"беларуская мова\"],[\"bg\",\"Bulgarian\",\"български език\"],[\"bh\",\"Bihari\",\"भोजपुरी\"],[\"bi\",\"Bislama\",\"Bislama\"],[\"bm\",\"Bambara\",\"bamanankan\"],[\"bn\",\"Bengali\",\"বাংলা\"],[\"bo\",\"Tibetan\",\"བོད་ཡིག\"],[\"br\",\"Breton\",\"brezhoneg\"],[\"bs\",\"Bosnian\",\"bosanski jezik\"],[\"ca\",\"Catalan\",\"Català\"],[\"ce\",\"Chechen\",\"нохчийн мотт\"],[\"ch\",\"Chamorro\",\"Chamoru\"],[\"co\",\"Corsican\",\"corsu\"],[\"cr\",\"Cree\",\"ᓀᐦᐃᔭᐍᐏᐣ\"],[\"cs\",\"Czech\",\"čeština\"],[\"cu\",\"Old Church Slavonic\",\"ѩзыкъ словѣньскъ\"],[\"cv\",\"Chuvash\",\"чӑваш чӗлхи\"],[\"cy\",\"Welsh\",\"Cymraeg\"],[\"da\",\"Danish\",\"dansk\"],[\"de\",\"German\",\"Deutsch\"],[\"dv\",\"Divehi\",\"Dhivehi\"],[\"dz\",\"Dzongkha\",\"རྫོང་ཁ\"],[\"ee\",\"Ewe\",\"Eʋegbe\"],[\"el\",\"Greek\",\"Ελληνικά\"],[\"en\",\"English\",\"English\"],[\"eo\",\"Esperanto\",\"Esperanto\"],[\"es\",\"Spanish\",\"Español\"],[\"et\",\"Estonian\",\"eesti\"],[\"eu\",\"Basque\",\"euskara\"],[\"fa\",\"Persian\",\"فارسی\"],[\"ff\",\"Fula\",\"Fulfulde\"],[\"fi\",\"Finnish\",\"suomi\"],[\"fj\",\"Fijian\",\"Vakaviti\"],[\"fo\",\"Faroese\",\"føroyskt\"],[\"fr\",\"French\",\"Français\"],[\"fy\",\"Western Frisian\",\"Frysk\"],[\"ga\",\"Irish\",\"Gaeilge\"],[\"gd\",\"Scottish Gaelic\",\"Gàidhlig\"],[\"gl\",\"Galician\",\"galego\"],[\"gu\",\"Gujarati\",\"ગુજરાતી\"],[\"gv\",\"Manx\",\"Gaelg\"],[\"ha\",\"Hausa\",\"هَوُسَ\"],[\"he\",\"Hebrew\",\"עברית\"],[\"hi\",\"Hindi\",\"हिन्दी\"],[\"ho\",\"Hiri Motu\",\"Hiri Motu\"],[\"hr\",\"Croatian\",\"Hrvatski\"],[\"ht\",\"Haitian\",\"Kreyòl ayisyen\"],[\"hu\",\"Hungarian\",\"magyar\"],[\"hy\",\"Armenian\",\"Հայերեն\"],[\"hz\",\"Herero\",\"Otjiherero\"],[\"ia\",\"Interlingua\",\"Interlingua\"],[\"id\",\"Indonesian\",\"Bahasa Indonesia\"],[\"ie\",\"Interlingue\",\"Interlingue\"],[\"ig\",\"Igbo\",\"Asụsụ Igbo\"],[\"ii\",\"Nuosu\",\"ꆈꌠ꒿ Nuosuhxop\"],[\"ik\",\"Inupiaq\",\"Iñupiaq\"],[\"io\",\"Ido\",\"Ido\"],[\"is\",\"Icelandic\",\"Íslenska\"],[\"it\",\"Italian\",\"Italiano\"],[\"iu\",\"Inuktitut\",\"ᐃᓄᒃᑎᑐᑦ\"],[\"ja\",\"Japanese\",\"日本語\"],[\"jv\",\"Javanese\",\"basa Jawa\"],[\"ka\",\"Georgian\",\"ქართული\"],[\"kg\",\"Kongo\",\"Kikongo\"],[\"ki\",\"Kikuyu\",\"Gĩkũyũ\"],[\"kj\",\"Kwanyama\",\"Kuanyama\"],[\"kk\",\"Kazakh\",\"қазақ тілі\"],[\"kl\",\"Kalaallisut\",\"kalaallisut\"],[\"km\",\"Khmer\",\"ខេមរភាសា\"],[\"kn\",\"Kannada\",\"ಕನ್ನಡ\"],[\"ko\",\"Korean\",\"한국어\"],[\"kr\",\"Kanuri\",\"Kanuri\"],[\"ks\",\"Kashmiri\",\"कश्मीरी\"],[\"ku\",\"Kurmanji (Kurdish)\",\"Kurmancî\"],[\"kv\",\"Komi\",\"коми кыв\"],[\"kw\",\"Cornish\",\"Kernewek\"],[\"ky\",\"Kyrgyz\",\"Кыргызча\"],[\"la\",\"Latin\",\"latine\"],[\"lb\",\"Luxembourgish\",\"Lëtzebuergesch\"],[\"lg\",\"Ganda\",\"Luganda\"],[\"li\",\"Limburgish\",\"Limburgs\"],[\"ln\",\"Lingala\",\"Lingála\"],[\"lo\",\"Lao\",\"ລາວ\"],[\"lt\",\"Lithuanian\",\"lietuvių kalba\"],[\"lu\",\"Luba-Katanga\",\"Tshiluba\"],[\"lv\",\"Latvian\",\"latviešu valoda\"],[\"mg\",\"Malagasy\",\"fiteny malagasy\"],[\"mh\",\"Marshallese\",\"Kajin M̧ajeļ\"],[\"mi\",\"Māori\",\"te reo Māori\"],[\"mk\",\"Macedonian\",\"македонски јазик\"],[\"ml\",\"Malayalam\",\"മലയാളം\"],[\"mn\",\"Mongolian\",\"Монгол хэл\"],[\"mr\",\"Marathi\",\"मराठी\"],[\"ms\",\"Malay\",\"Bahasa Melayu\"],[\"mt\",\"Maltese\",\"Malti\"],[\"my\",\"Burmese\",\"ဗမာစာ\"],[\"na\",\"Nauru\",\"Ekakairũ Naoero\"],[\"nb\",\"Norwegian Bokmål\",\"Norsk bokmål\"],[\"nd\",\"Northern Ndebele\",\"isiNdebele\"],[\"ne\",\"Nepali\",\"नेपाली\"],[\"ng\",\"Ndonga\",\"Owambo\"],[\"nl\",\"Dutch\",\"Nederlands\"],[\"nn\",\"Norwegian Nynorsk\",\"Norsk Nynorsk\"],[\"no\",\"Norwegian\",\"Norsk\"],[\"nr\",\"Southern Ndebele\",\"isiNdebele\"],[\"nv\",\"Navajo\",\"Diné bizaad\"],[\"ny\",\"Chichewa\",\"chiCheŵa\"],[\"oc\",\"Occitan\",\"occitan\"],[\"oj\",\"Ojibwe\",\"ᐊᓂᔑᓈᐯᒧᐎᓐ\"],[\"om\",\"Oromo\",\"Afaan Oromoo\"],[\"or\",\"Oriya\",\"ଓଡ଼ିଆ\"],[\"os\",\"Ossetian\",\"ирон æвзаг\"],[\"pa\",\"Panjabi\",\"ਪੰਜਾਬੀ\"],[\"pi\",\"Pāli\",\"पाऴि\"],[\"pl\",\"Polish\",\"Polski\"],[\"ps\",\"Pashto\",\"پښتو\"],[\"pt\",\"Portuguese\",\"Português\"],[\"qu\",\"Quechua\",\"Runa Simi\"],[\"rm\",\"Romansh\",\"rumantsch grischun\"],[\"rn\",\"Kirundi\",\"Ikirundi\"],[\"ro\",\"Romanian\",\"Română\"],[\"ru\",\"Russian\",\"Русский\"],[\"rw\",\"Kinyarwanda\",\"Ikinyarwanda\"],[\"sa\",\"Sanskrit\",\"संस्कृतम्\"],[\"sc\",\"Sardinian\",\"sardu\"],[\"sd\",\"Sindhi\",\"सिन्धी\"],[\"se\",\"Northern Sami\",\"Davvisámegiella\"],[\"sg\",\"Sango\",\"yângâ tî sängö\"],[\"si\",\"Sinhala\",\"සිංහල\"],[\"sk\",\"Slovak\",\"slovenčina\"],[\"sl\",\"Slovenian\",\"slovenščina\"],[\"sn\",\"Shona\",\"chiShona\"],[\"so\",\"Somali\",\"Soomaaliga\"],[\"sq\",\"Albanian\",\"Shqip\"],[\"sr\",\"Serbian\",\"српски језик\"],[\"ss\",\"Swati\",\"SiSwati\"],[\"st\",\"Southern Sotho\",\"Sesotho\"],[\"su\",\"Sundanese\",\"Basa Sunda\"],[\"sv\",\"Swedish\",\"Svenska\"],[\"sw\",\"Swahili\",\"Kiswahili\"],[\"ta\",\"Tamil\",\"தமிழ்\"],[\"te\",\"Telugu\",\"తెలుగు\"],[\"tg\",\"Tajik\",\"тоҷикӣ\"],[\"th\",\"Thai\",\"ไทย\"],[\"ti\",\"Tigrinya\",\"ትግርኛ\"],[\"tk\",\"Turkmen\",\"Türkmen\"],[\"tl\",\"Tagalog\",\"Wikang Tagalog\"],[\"tn\",\"Tswana\",\"Setswana\"],[\"to\",\"Tonga\",\"faka Tonga\"],[\"tr\",\"Turkish\",\"Türkçe\"],[\"ts\",\"Tsonga\",\"Xitsonga\"],[\"tt\",\"Tatar\",\"татар теле\"],[\"tw\",\"Twi\",\"Twi\"],[\"ty\",\"Tahitian\",\"Reo Tahiti\"],[\"ug\",\"Uyghur\",\"ئۇيغۇرچە‎\"],[\"uk\",\"Ukrainian\",\"Українська\"],[\"ur\",\"Urdu\",\"اردو\"],[\"uz\",\"Uzbek\",\"Ўзбек\"],[\"ve\",\"Venda\",\"Tshivenḓa\"],[\"vi\",\"Vietnamese\",\"Tiếng Việt\"],[\"vo\",\"Volapük\",\"Volapük\"],[\"wa\",\"Walloon\",\"walon\"],[\"wo\",\"Wolof\",\"Wollof\"],[\"xh\",\"Xhosa\",\"isiXhosa\"],[\"yi\",\"Yiddish\",\"ייִדיש\"],[\"yo\",\"Yoruba\",\"Yorùbá\"],[\"za\",\"Zhuang\",\"Saɯ cueŋƅ\"],[\"zh\",\"Chinese\",\"中文\"],[\"zu\",\"Zulu\",\"isiZulu\"],[\"ast\",\"Asturian\",\"Asturianu\"],[\"ckb\",\"Sorani (Kurdish)\",\"سۆرانی\"],[\"cnr\",\"Montenegrin\",\"crnogorski\"],[\"jbo\",\"Lojban\",\"la .lojban.\"],[\"kab\",\"Kabyle\",\"Taqbaylit\"],[\"kmr\",\"Kurmanji (Kurdish)\",\"Kurmancî\"],[\"ldn\",\"Láadan\",\"Láadan\"],[\"lfn\",\"Lingua Franca Nova\",\"lingua franca nova\"],[\"sco\",\"Scots\",\"Scots\"],[\"sma\",\"Southern Sami\",\"Åarjelsaemien Gïele\"],[\"smj\",\"Lule Sami\",\"Julevsámegiella\"],[\"szl\",\"Silesian\",\"ślůnsko godka\"],[\"tok\",\"Toki Pona\",\"toki pona\"],[\"zba\",\"Balaibalan\",\"باليبلن\"],[\"zgh\",\"Standard Moroccan Tamazight\",\"ⵜⴰⵎⴰⵣⵉⵖⵜ\"]]"; public static final List allLanguages; public static final MastodonLanguage ENGLISH = new MastodonLanguage("en", "English", "English"); From b94741feae3ecba737a22934fe4aad3355c300e3 Mon Sep 17 00:00:00 2001 From: sk Date: Sat, 10 Jun 2023 22:10:24 +0200 Subject: [PATCH 22/76] boop version --- mastodon/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mastodon/build.gradle b/mastodon/build.gradle index d43bc070a..0e8509c15 100644 --- a/mastodon/build.gradle +++ b/mastodon/build.gradle @@ -15,8 +15,8 @@ android { applicationId "org.joinmastodon.android.sk" minSdk 23 targetSdk 33 - versionCode 91 - versionName "1.2.3+fork.91" + versionCode 92 + versionName "1.2.3+fork.92" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" resourceConfigurations += ['ar-rSA', 'ar-rDZ', 'be-rBY', 'bn-rBD', 'bs-rBA', 'ca-rES', 'cs-rCZ', 'da-rDK', 'de-rDE', 'el-rGR', 'es-rES', 'eu-rES', 'fa-rIR', 'fi-rFI', 'fil-rPH', 'fr-rFR', 'ga-rIE', 'gd-rGB', 'gl-rES', 'hi-rIN', 'hr-rHR', 'hu-rHU', 'hy-rAM', 'ig-rNG', 'in-rID', 'is-rIS', 'it-rIT', 'iw-rIL', 'ja-rJP', 'kab', 'ko-rKR', 'my-rMM', 'nl-rNL', 'no-rNO', 'oc-rFR', 'pl-rPL', 'pt-rBR', 'pt-rPT', 'ro-rRO', 'ru-rRU', 'si-rLK', 'sl-rSI', 'sv-rSE', 'th-rTH', 'tr-rTR', 'uk-rUA', 'ur-rIN', 'vi-rVN', 'zh-rCN', 'zh-rTW'] } From af60adb55fa09d867e374b30afd5dcf548eee089 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 11 Jun 2023 05:16:01 +0200 Subject: [PATCH 23/76] New translations strings.xml (Indonesian) --- mastodon/src/main/res/values-in-rID/strings.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mastodon/src/main/res/values-in-rID/strings.xml b/mastodon/src/main/res/values-in-rID/strings.xml index 24b13b587..66acd5d86 100644 --- a/mastodon/src/main/res/values-in-rID/strings.xml +++ b/mastodon/src/main/res/values-in-rID/strings.xml @@ -10,7 +10,7 @@ Oke Menyiapkan untuk autentikasi… Menyelesaikan autentikasi… - %s di-boost-kan + %s membagikan Membalas ke %s Notifikasi mengikuti Anda @@ -417,6 +417,7 @@ Tampilkan Sembunyikan Gabung %s + Cari server lain atau Pelajari lebih lanjut Selamat datang di Mastodon From 42e26bef686e377440b376034f87204ce93c3717 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 11 Jun 2023 12:54:18 +0200 Subject: [PATCH 24/76] New translations strings.xml (Persian) --- mastodon/src/main/res/values-fa-rIR/strings.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mastodon/src/main/res/values-fa-rIR/strings.xml b/mastodon/src/main/res/values-fa-rIR/strings.xml index f09140ec9..f59c1a9a3 100644 --- a/mastodon/src/main/res/values-fa-rIR/strings.xml +++ b/mastodon/src/main/res/values-fa-rIR/strings.xml @@ -29,7 +29,7 @@ پست‌ها و پاسخ‌ها رسانه درباره - فالو + پی‌گیری اشتراک‌گذاری %s بی‌صدا %s مسدود %s @@ -44,11 +44,11 @@ مسدود رأی حذف - حذف پست + حذف فرسته پخش توقف جستجو - هشتگ‌ها + برچسب‌ها اخبار برای شما همه @@ -79,13 +79,13 @@ خودکار روشن تاریک - پست جدید + فرسته جدید پاسخ برگزیده‌ اشتراک‌گذاری ایموجی پاک‌کردن - دانلود + بارگیری اکنون همين الان From ed40f74d59e1e7ed685b420511a38cf1273fb2ea Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 11 Jun 2023 13:57:15 +0200 Subject: [PATCH 25/76] New translations strings.xml (Persian) --- .../src/main/res/values-fa-rIR/strings.xml | 39 +++++++++++++++++-- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/mastodon/src/main/res/values-fa-rIR/strings.xml b/mastodon/src/main/res/values-fa-rIR/strings.xml index f59c1a9a3..725990323 100644 --- a/mastodon/src/main/res/values-fa-rIR/strings.xml +++ b/mastodon/src/main/res/values-fa-rIR/strings.xml @@ -12,21 +12,29 @@ در پاسخ به %s اعلان‌ها شما را دنبال می‌کند - یک درخواست دنبال کردن برای شما ارسال کرد + یک درخواست پی‌گیری برای شما ارسال کرد ‫‬ فرسته‌تان را پسندید نظرسنجی به پایان رسید %dثانیه %dدقیقه %dساعت %dروز - اشتراک‌گذاری + هم‌رسانی تنظیمات انتشار پیش‌نویس‌ کنار گذاشته شود؟ صرف‌نظر کردن لغو - پست‌ها - پست‌ها و پاسخ‌ها + + پی‌گیرنده + پی‌گیرندگان + + + فرسته + فرسته‌ها + + فرسته‌ها + فرسته‌ها و پاسخ‌ها رسانه درباره پی‌گیری @@ -74,6 +82,7 @@ افراد بعدی علاقه‌مندی‌ها + تقویت‌ها نظرسنجی‌ها انتخاب حساب خودکار @@ -84,18 +93,40 @@ برگزیده‌ اشتراک‌گذاری ایموجی + نمایه من پاک‌کردن بارگیری اکنون + تقویت‌ها همين الان + نظرسنجی ویرایش شد + رسانه اضافه شد + فرسته ویرایش شد ویرایش + بارگذاری ناموفق بود + %.2f کیلوبایت + %.2f مگابایت + %.2f گیگابایت نصب موافقم + نشانک + برداشتن نشانک + نشانک‌ها + اروپا + آمریکای شمالی + آمریکای جنوبی + آفریقا + آسیا + پی‌گیری همه + حساب‌ها + نمایش + یا + به ماستودون خوش آمدید From df77ba61adae042226054484a4eb94437918ef96 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 11 Jun 2023 15:12:30 +0200 Subject: [PATCH 26/76] New translations strings.xml (Persian) --- mastodon/src/main/res/values-fa-rIR/strings.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mastodon/src/main/res/values-fa-rIR/strings.xml b/mastodon/src/main/res/values-fa-rIR/strings.xml index 725990323..8c588d01c 100644 --- a/mastodon/src/main/res/values-fa-rIR/strings.xml +++ b/mastodon/src/main/res/values-fa-rIR/strings.xml @@ -99,7 +99,9 @@ اکنون تقویت‌ها + علاقه‌مندی‌ها همين الان + فرستهٔ اصلی نظرسنجی ویرایش شد رسانه اضافه شد فرسته ویرایش شد @@ -116,6 +118,7 @@ نشانک برداشتن نشانک نشانک‌ها + علاقه‌مندی های شما اروپا آمریکای شمالی آمریکای جنوبی From 8e0d74f9c27444b8281554681faf352f91d0922c Mon Sep 17 00:00:00 2001 From: sk Date: Sun, 11 Jun 2023 17:12:56 +0200 Subject: [PATCH 27/76] use appkit V.sp --- .../ui/displayitems/FooterStatusDisplayItem.java | 4 +--- .../org/joinmastodon/android/ui/utils/UiUtils.java | 10 ---------- 2 files changed, 1 insertion(+), 13 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/FooterStatusDisplayItem.java b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/FooterStatusDisplayItem.java index a2823697e..646f8a3c3 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/FooterStatusDisplayItem.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/FooterStatusDisplayItem.java @@ -172,9 +172,7 @@ public class FooterStatusDisplayItem extends StatusDisplayItem{ } else if (action == MotionEvent.ACTION_DOWN) { longClickPerformed = false; touchingView = v; - // 28dp to center in middle of icon, because: - // (icon width = 24dp) / 2 + (paddingStart = 8dp) + (paddingHorizontal = 8dp) - v.setPivotX(UiUtils.sp(v.getContext(), 28)); + v.setPivotX(V.sp(28)); v.animate().scaleX(0.85f).scaleY(0.85f).setInterpolator(CubicBezierInterpolator.DEFAULT).setDuration(75).start(); if (disabled) return true; v.postDelayed(longClickRunnable, ViewConfiguration.getLongPressTimeout()); diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java b/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java index 385476a27..0abb9b0b2 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java @@ -1424,16 +1424,6 @@ public class UiUtils { } } - /** - * Scale the input value according to the device's scaled display density - * @param sp Input value in scale-independent pixels (sp) - * @return Scaled value in physical pixels (px) - */ - public static int sp(Context context, float sp){ - // TODO: replace with V.sp in next AppKit version - return Math.round(sp*context.getApplicationContext().getResources().getDisplayMetrics().scaledDensity); - } - /** * Wraps a View.OnClickListener to filter multiple clicks in succession. * Useful for buttons that perform some action that changes their state asynchronously. From acb1369e888b3a413e5964476ea067247d17c6c9 Mon Sep 17 00:00:00 2001 From: sk Date: Sun, 11 Jun 2023 17:23:54 +0200 Subject: [PATCH 28/76] fix "show replies/boosts" filter not applied closes sk22#566 --- .../android/fragments/HomeTimelineFragment.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTimelineFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTimelineFragment.java index 35495f5ab..97545a1f8 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTimelineFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTimelineFragment.java @@ -48,11 +48,13 @@ public class HomeTimelineFragment extends StatusListFragment { loadData(); } + private boolean typeFilterPredicate(Status s) { + return (GlobalUserPreferences.showReplies || s.inReplyToId == null) && + (GlobalUserPreferences.showBoosts || s.reblog == null); + } + private List filterPosts(List items) { - return items.stream().filter(i -> - (GlobalUserPreferences.showReplies || i.inReplyToId == null) && - (GlobalUserPreferences.showBoosts || i.reblog == null) - ).collect(Collectors.toList()); + return items.stream().filter(this::typeFilterPredicate).collect(Collectors.toList()); } @Override @@ -232,7 +234,7 @@ public class HomeTimelineFragment extends StatusListFragment { for(Status s:result){ if(idsBelowGap.contains(s.id)) break; - if(filterPredicate.test(s)){ + if(typeFilterPredicate(s) && filterPredicate.test(s)){ targetList.addAll(buildDisplayItems(s)); insertedPosts.add(s); } From 74a83c6ac4e4352aa64e1df7cbc8763c116ee93d Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 11 Jun 2023 17:37:10 +0200 Subject: [PATCH 29/76] New translations strings.xml (Persian) --- mastodon/src/main/res/values-fa-rIR/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mastodon/src/main/res/values-fa-rIR/strings.xml b/mastodon/src/main/res/values-fa-rIR/strings.xml index 8c588d01c..22a286ecb 100644 --- a/mastodon/src/main/res/values-fa-rIR/strings.xml +++ b/mastodon/src/main/res/values-fa-rIR/strings.xml @@ -49,7 +49,9 @@ محتوا درحال ذخیره‌سازی… بی‌صدا + مسدود کردن حساب مسدود + خموش رأی حذف حذف فرسته From fe8535186993ceea468c514ea7b106fd05de4a5c Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 11 Jun 2023 18:34:16 +0200 Subject: [PATCH 30/76] New translations strings.xml (Persian) --- .../src/main/res/values-fa-rIR/strings.xml | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/mastodon/src/main/res/values-fa-rIR/strings.xml b/mastodon/src/main/res/values-fa-rIR/strings.xml index 22a286ecb..6c8ea9e73 100644 --- a/mastodon/src/main/res/values-fa-rIR/strings.xml +++ b/mastodon/src/main/res/values-fa-rIR/strings.xml @@ -38,10 +38,13 @@ رسانه درباره پی‌گیری + ویرایش نمایه اشتراک‌گذاری %s بی‌صدا %s + ناخموشی ‎%s مسدود %s رفع مسدودیت %s + گزارش کردن %s عضو شد انجام شد درحال بارگذاری… @@ -49,14 +52,22 @@ محتوا درحال ذخیره‌سازی… بی‌صدا + ناخموشی مسدود کردن حساب + مسدود کردن دامنهٔ مسدود + رفع مسدودی حساب + رفع مسدودیت دامنهٔ + رفع مسدودیت خموش + مسدود شده رأی حذف حذف فرسته پخش توقف + خروج + افزودن حساب جستجو برچسب‌ها اخبار @@ -65,8 +76,11 @@ گزارش کردن %s من این را دوست ندارم این هرزنامه است + پی‌نگرفتن بازگشت ویرایش + رایانامه + تأیید گذرواژه فعالیت همه هنر @@ -92,20 +106,31 @@ تاریک فرسته جدید پاسخ + تقویت برگزیده‌ اشتراک‌گذاری + افزودن رسانه + افزودن نظرسنجی ایموجی نمایه من پاک‌کردن بارگیری + باز کردن تنظیمات + درحال بارگیری… + پی‌گیرتان است اکنون تقویت‌ها علاقه‌مندی‌ها + آخرین ویرایش %s همين الان فرستهٔ اصلی + متن ویرایش شد + نظرسنجی اضافه شد نظرسنجی ویرایش شد + نظرسنجی برداشته شد رسانه اضافه شد + رسانه برداشته شد فرسته ویرایش شد ویرایش بارگذاری ناموفق بود @@ -126,12 +151,18 @@ آمریکای جنوبی آفریقا آسیا + اقیانوسیه + تنظیم نمایه پی‌گیری همه + دربارهٔ شما + ذخیرهٔ تغییرات + مشاهده همه حساب‌ها نمایش یا + بیش‌تر بیاموزید به ماستودون خوش آمدید From 1dadc51ddfa861aeb4a12a0bf2fe08be8b1f583c Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 11 Jun 2023 19:41:48 +0200 Subject: [PATCH 31/76] New translations strings.xml (Persian) --- mastodon/src/main/res/values-fa-rIR/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/mastodon/src/main/res/values-fa-rIR/strings.xml b/mastodon/src/main/res/values-fa-rIR/strings.xml index 6c8ea9e73..9bb76f713 100644 --- a/mastodon/src/main/res/values-fa-rIR/strings.xml +++ b/mastodon/src/main/res/values-fa-rIR/strings.xml @@ -162,6 +162,7 @@ مشاهده همه حساب‌ها نمایش + نهفتن یا بیش‌تر بیاموزید به ماستودون خوش آمدید From 7260db666806bd76289e0d23abe84bb94243dfbc Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 11 Jun 2023 19:41:48 +0200 Subject: [PATCH 32/76] New translations full_description.txt (Persian) --- fastlane/metadata/android/fa-IR/full_description.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/fastlane/metadata/android/fa-IR/full_description.txt b/fastlane/metadata/android/fa-IR/full_description.txt index 11d74abb1..377fb641a 100644 --- a/fastlane/metadata/android/fa-IR/full_description.txt +++ b/fastlane/metadata/android/fa-IR/full_description.txt @@ -2,11 +2,11 @@ Mastodon is the largest decentralized social network on the internet. Instead of Join a community and create your profile. Find and follow fascinating folks and read their posts in an ad-free, chronological timeline. Express yourself with custom emoji, images, GIFs, videos, and audio in 500-character posts. Reply to threads and reblog posts from anyone to share great stuff. Find new accounts to follow and trending hashtags to expand your network. -Mastodon is built with a focus on privacy and safety. Decide whether your posts are shared with your followers, just the people you mention, or the whole world. Content warnings let you hide posts containing sensitive or triggering material until you're ready to engage with them. Each community has its own guidelines and moderators to keep its members safe, and robust blocking and reporting tools help prevent abuse. +ماستودون با تمرکز بر حریم خصوصی و ایمنی ساخته شده است. Decide whether your posts are shared with your followers, just the people you mention, or the whole world. Content warnings let you hide posts containing sensitive or triggering material until you're ready to engage with them. Each community has its own guidelines and moderators to keep its members safe, and robust blocking and reporting tools help prevent abuse. -More features: +قابلیت های دیگر: -• Dark Mode: Read posts in light, dark, or true black mode +حالت تاریک: فرسته‌ها را در حالت روشن، تاریک، یا سیاه بخوانید • Polls: Ask followers for their opinion and tally the votes • Explore: Trending hashtags and accounts are a tap away • Notifications: Get notified about new follows, replies, and reblogs From 44154a987d012f06e52ece6eb77d5fbe4ad2dfcd Mon Sep 17 00:00:00 2001 From: sk Date: Sun, 11 Jun 2023 19:46:18 +0200 Subject: [PATCH 33/76] setting for "re:" reply CW prefix always or only to others re: sk22#567 --- .../android/GlobalUserPreferences.java | 21 +++++++++++-- .../android/PushNotificationReceiver.java | 8 ++++- .../android/fragments/ComposeFragment.java | 7 +++-- .../android/fragments/SettingsFragment.java | 30 +++++++++++++++++-- .../res/menu/settings_prefix_reply_mode.xml | 6 ++++ mastodon/src/main/res/values/strings_sk.xml | 5 +++- 6 files changed, 68 insertions(+), 9 deletions(-) create mode 100644 mastodon/src/main/res/menu/settings_prefix_reply_mode.xml diff --git a/mastodon/src/main/java/org/joinmastodon/android/GlobalUserPreferences.java b/mastodon/src/main/java/org/joinmastodon/android/GlobalUserPreferences.java index de73cdfc9..be4306131 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/GlobalUserPreferences.java +++ b/mastodon/src/main/java/org/joinmastodon/android/GlobalUserPreferences.java @@ -40,7 +40,7 @@ public class GlobalUserPreferences{ public static boolean showAltIndicator; public static boolean showNoAltIndicator; public static boolean enablePreReleases; - public static boolean prefixRepliesWithRe; + public static PrefixRepliesMode prefixReplies; public static boolean bottomEncoding; public static boolean collapseLongPosts; public static boolean spectatorMode; @@ -112,7 +112,7 @@ public class GlobalUserPreferences{ showAltIndicator=prefs.getBoolean("showAltIndicator", true); showNoAltIndicator=prefs.getBoolean("showNoAltIndicator", true); enablePreReleases=prefs.getBoolean("enablePreReleases", false); - prefixRepliesWithRe=prefs.getBoolean("prefixRepliesWithRe", false); + prefixReplies=PrefixRepliesMode.valueOf(prefs.getString("prefixReplies", PrefixRepliesMode.NEVER.name())); bottomEncoding=prefs.getBoolean("bottomEncoding", false); collapseLongPosts=prefs.getBoolean("collapseLongPosts", true); spectatorMode=prefs.getBoolean("spectatorMode", false); @@ -132,6 +132,15 @@ public class GlobalUserPreferences{ allowRemoteLoading=prefs.getBoolean("allowRemoteLoading", true); autoRevealEqualSpoilers=AutoRevealMode.valueOf(prefs.getString("autoRevealEqualSpoilers", AutoRevealMode.THREADS.name())); + if (prefs.contains("prefixRepliesWithRe")) { + prefixReplies = prefs.getBoolean("prefixRepliesWithRe", false) + ? PrefixRepliesMode.TO_OTHERS : PrefixRepliesMode.NEVER; + prefs.edit() + .putString("prefixReplies", prefixReplies.name()) + .remove("prefixRepliesWithRe") + .apply(); + } + try { color=ColorPreference.valueOf(prefs.getString("color", ColorPreference.PINK.name())); } catch (IllegalArgumentException|ClassCastException ignored) { @@ -162,7 +171,7 @@ public class GlobalUserPreferences{ .putBoolean("showAltIndicator", showAltIndicator) .putBoolean("showNoAltIndicator", showNoAltIndicator) .putBoolean("enablePreReleases", enablePreReleases) - .putBoolean("prefixRepliesWithRe", prefixRepliesWithRe) + .putString("prefixReplies", prefixReplies.name()) .putBoolean("collapseLongPosts", collapseLongPosts) .putBoolean("spectatorMode", spectatorMode) .putBoolean("autoHideFab", autoHideFab) @@ -207,4 +216,10 @@ public class GlobalUserPreferences{ THREADS, DISCUSSIONS } + + public enum PrefixRepliesMode { + NEVER, + ALWAYS, + TO_OTHERS + } } diff --git a/mastodon/src/main/java/org/joinmastodon/android/PushNotificationReceiver.java b/mastodon/src/main/java/org/joinmastodon/android/PushNotificationReceiver.java index 372f39e02..c7da94a11 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/PushNotificationReceiver.java +++ b/mastodon/src/main/java/org/joinmastodon/android/PushNotificationReceiver.java @@ -1,5 +1,7 @@ package org.joinmastodon.android; +import static org.joinmastodon.android.GlobalUserPreferences.PrefixRepliesMode.*; + import android.app.Notification; import android.app.NotificationChannel; import android.app.NotificationChannelGroup; @@ -295,7 +297,11 @@ public class PushNotificationReceiver extends BroadcastReceiver{ req.language = preferences.postingDefaultLanguage; req.visibility = preferences.postingDefaultVisibility; req.inReplyToId = notification.status.id; - if(!notification.status.spoilerText.isEmpty() && GlobalUserPreferences.prefixRepliesWithRe && !notification.status.spoilerText.startsWith("re: ")){ + + if (!notification.status.spoilerText.isEmpty() && + (GlobalUserPreferences.prefixReplies == ALWAYS + || (GlobalUserPreferences.prefixReplies == TO_OTHERS && !ownID.equals(notification.status.account.id))) + && !notification.status.spoilerText.startsWith("re: ")) { req.spoilerText = "re: " + notification.status.spoilerText; } diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java index 8ddaebbf8..e1c36732e 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java @@ -1,5 +1,6 @@ package org.joinmastodon.android.fragments; +import static org.joinmastodon.android.GlobalUserPreferences.PrefixRepliesMode.*; import static org.joinmastodon.android.GlobalUserPreferences.recentLanguages; import static org.joinmastodon.android.api.requests.statuses.CreateStatus.DRAFTS_AFTER_INSTANT; import static org.joinmastodon.android.api.requests.statuses.CreateStatus.getDraftInstant; @@ -746,9 +747,11 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr if(!TextUtils.isEmpty(status.spoilerText)){ hasSpoiler=true; spoilerEdit.setVisibility(View.VISIBLE); - if(GlobalUserPreferences.prefixRepliesWithRe && !status.spoilerText.startsWith("re: ")){ + if ((GlobalUserPreferences.prefixReplies == ALWAYS + || (GlobalUserPreferences.prefixReplies == TO_OTHERS && !ownID.equals(status.account.id))) + && !status.spoilerText.startsWith("re: ")) { spoilerEdit.setText("re: " + status.spoilerText); - }else{ + } else { spoilerEdit.setText(status.spoilerText); } spoilerBtn.setSelected(true); diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java index 07940bafa..42494db3b 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java @@ -39,6 +39,7 @@ import org.joinmastodon.android.E; import org.joinmastodon.android.GlobalUserPreferences; import org.joinmastodon.android.GlobalUserPreferences.AutoRevealMode; import org.joinmastodon.android.GlobalUserPreferences.ColorPreference; +import org.joinmastodon.android.GlobalUserPreferences.PrefixRepliesMode; import org.joinmastodon.android.MainActivity; import org.joinmastodon.android.MastodonApp; import org.joinmastodon.android.R; @@ -221,8 +222,17 @@ public class SettingsFragment extends MastodonToolbarFragment implements Provide GlobalUserPreferences.keepOnlyLatestNotification=i.checked; GlobalUserPreferences.save(); })); - items.add(new SwitchItem(R.string.sk_settings_prefix_reply_cw_with_re, R.drawable.ic_fluent_arrow_reply_24_regular, GlobalUserPreferences.prefixRepliesWithRe, i->{ - GlobalUserPreferences.prefixRepliesWithRe=i.checked; + items.add(new ButtonItem(R.string.sk_settings_prefix_reply_cw_with_re, R.drawable.ic_fluent_arrow_reply_24_regular, b->{ + PopupMenu popupMenu=new PopupMenu(getActivity(), b, Gravity.CENTER_HORIZONTAL); + popupMenu.inflate(R.menu.settings_prefix_reply_mode); + popupMenu.setOnMenuItemClickListener(i -> onPrefixRepliesClick(i, b)); + b.setOnTouchListener(popupMenu.getDragToOpenListener()); + b.setOnClickListener(v->popupMenu.show()); + b.setText(switch(GlobalUserPreferences.prefixReplies){ + case TO_OTHERS -> R.string.sk_settings_prefix_replies_to_others; + case ALWAYS -> R.string.sk_settings_prefix_replies_always; + default -> R.string.sk_settings_prefix_replies_never; + }); GlobalUserPreferences.save(); })); items.add(new SwitchItem(R.string.sk_settings_confirm_before_reblog, R.drawable.ic_fluent_checkmark_circle_24_regular, GlobalUserPreferences.confirmBeforeReblog, i->{ @@ -541,6 +551,22 @@ public class SettingsFragment extends MastodonToolbarFragment implements Provide return true; } + private boolean onPrefixRepliesClick(MenuItem item, Button btn) { + int id = item.getItemId(); + PrefixRepliesMode mode = PrefixRepliesMode.NEVER; + if (id == R.id.prefix_replies_always) mode = PrefixRepliesMode.ALWAYS; + else if (id == R.id.prefix_replies_to_others) mode = PrefixRepliesMode.TO_OTHERS; + GlobalUserPreferences.prefixReplies = mode; + + btn.setText(switch(GlobalUserPreferences.prefixReplies){ + case TO_OTHERS -> R.string.sk_settings_prefix_replies_to_others; + case ALWAYS -> R.string.sk_settings_prefix_replies_always; + default -> R.string.sk_settings_prefix_replies_never; + }); + + return true; + } + private boolean onAutoRevealSpoilerClick(MenuItem item, Button btn) { int id = item.getItemId(); diff --git a/mastodon/src/main/res/menu/settings_prefix_reply_mode.xml b/mastodon/src/main/res/menu/settings_prefix_reply_mode.xml new file mode 100644 index 000000000..5ecccbeee --- /dev/null +++ b/mastodon/src/main/res/menu/settings_prefix_reply_mode.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/mastodon/src/main/res/values/strings_sk.xml b/mastodon/src/main/res/values/strings_sk.xml index 7aada80cc..9d7111204 100644 --- a/mastodon/src/main/res/values/strings_sk.xml +++ b/mastodon/src/main/res/values/strings_sk.xml @@ -260,7 +260,7 @@ New reports Server version: %s Poll results - Prefix reply CW with “re:” + Prefix CW with “re:” on replies to Filtered: %s Expand Collapse @@ -301,4 +301,7 @@ nobody author everyone + everyone + nobody + others \ No newline at end of file From 2b760bb2159104a5147f59a7fbadaf7e39334f6f Mon Sep 17 00:00:00 2001 From: Linerly Date: Sun, 11 Jun 2023 02:51:13 +0000 Subject: [PATCH 34/76] Translated using Weblate (Indonesian) Currently translated at 100.0% (301 of 301 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/id/ --- mastodon/src/main/res/values-in-rID/strings_sk.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mastodon/src/main/res/values-in-rID/strings_sk.xml b/mastodon/src/main/res/values-in-rID/strings_sk.xml index c3f5c9593..32a6e2498 100644 --- a/mastodon/src/main/res/values-in-rID/strings_sk.xml +++ b/mastodon/src/main/res/values-in-rID/strings_sk.xml @@ -298,4 +298,8 @@ Coba mendapatkan pendaftaran akurat untuk pengikut cr Gagal memuat profil melalui %s Tidak dapat buka dalam aplikasi + Tampilkan peringatan konten yang sama dari + bukan siapa pun + pembuat + semuanya \ No newline at end of file From 44558534e9c63b1cf78c3dc771815618514e9d3b Mon Sep 17 00:00:00 2001 From: Oliebol Date: Sun, 11 Jun 2023 12:48:39 +0000 Subject: [PATCH 35/76] Translated using Weblate (Dutch) Currently translated at 85.0% (256 of 301 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/nl/ --- mastodon/src/main/res/values-nl-rNL/strings_sk.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mastodon/src/main/res/values-nl-rNL/strings_sk.xml b/mastodon/src/main/res/values-nl-rNL/strings_sk.xml index 5a3c2beac..5b21ef096 100644 --- a/mastodon/src/main/res/values-nl-rNL/strings_sk.xml +++ b/mastodon/src/main/res/values-nl-rNL/strings_sk.xml @@ -254,4 +254,7 @@ Quoting %s Zichtbaarheid reactie Alle reacties + iedereen + auteur + niemand \ No newline at end of file From edeae13dda434aeb9f0a9282955a04377f1cd9bc Mon Sep 17 00:00:00 2001 From: sk22 Date: Sun, 11 Jun 2023 18:03:48 +0000 Subject: [PATCH 36/76] Translated using Weblate (German) Currently translated at 100.0% (304 of 304 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/de/ --- mastodon/src/main/res/values-de-rDE/strings_sk.xml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mastodon/src/main/res/values-de-rDE/strings_sk.xml b/mastodon/src/main/res/values-de-rDE/strings_sk.xml index 1dc62236c..efea6f003 100644 --- a/mastodon/src/main/res/values-de-rDE/strings_sk.xml +++ b/mastodon/src/main/res/values-de-rDE/strings_sk.xml @@ -250,7 +250,7 @@ “Neue Beiträge anzeigen”-Button Server-Version: %s Umfrage-Ergebnisse - CWs beim Antworten “re:” voranstellen + Voranstellen von „re:“ an CWs in Antworten an Gefiltert: %s Erweitern Einklappen @@ -300,4 +300,7 @@ niemandem Autor*in allen + andere + alle + niemanden \ No newline at end of file From 04304b3397f7749fad9a6b6e763fa5dfec458222 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 11 Jun 2023 20:49:08 +0200 Subject: [PATCH 37/76] New translations strings.xml (Persian) --- mastodon/src/main/res/values-fa-rIR/strings.xml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/mastodon/src/main/res/values-fa-rIR/strings.xml b/mastodon/src/main/res/values-fa-rIR/strings.xml index 9bb76f713..d5edce04c 100644 --- a/mastodon/src/main/res/values-fa-rIR/strings.xml +++ b/mastodon/src/main/res/values-fa-rIR/strings.xml @@ -51,7 +51,10 @@ برچسب محتوا درحال ذخیره‌سازی… + پایان‌یافته + خموشی حساب بی‌صدا + لغو خموشی حساب ناخموشی مسدود کردن حساب مسدود کردن دامنهٔ @@ -76,6 +79,7 @@ گزارش کردن %s من این را دوست ندارم این هرزنامه است + درحال ارسال گزارش… پی‌نگرفتن بازگشت ویرایش @@ -158,11 +162,15 @@ دربارهٔ شما + به هرصورت نشان داده شود + نهفتن دوباره ذخیرهٔ تغییرات مشاهده همه حساب‌ها + پیوند تأییدشده نمایش نهفتن + %s پیوست یا بیش‌تر بیاموزید به ماستودون خوش آمدید From fc307ff43f0d0b755fd7acfeb8e3624d5d251600 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 11 Jun 2023 21:52:27 +0200 Subject: [PATCH 38/76] New translations strings.xml (Persian) --- mastodon/src/main/res/values-fa-rIR/strings.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mastodon/src/main/res/values-fa-rIR/strings.xml b/mastodon/src/main/res/values-fa-rIR/strings.xml index d5edce04c..265b1e7f1 100644 --- a/mastodon/src/main/res/values-fa-rIR/strings.xml +++ b/mastodon/src/main/res/values-fa-rIR/strings.xml @@ -164,13 +164,16 @@ به هرصورت نشان داده شود نهفتن دوباره + یک یا چند مورد را انتخاب کنید ذخیرهٔ تغییرات + خط زمانی مشاهده همه حساب‌ها پیوند تأییدشده نمایش نهفتن %s پیوست + انتخاب کارسازی دیگر یا بیش‌تر بیاموزید به ماستودون خوش آمدید From f3e1fa4b2bc073db6d64c89c833e7103819d02a7 Mon Sep 17 00:00:00 2001 From: sk Date: Mon, 12 Jun 2023 01:01:45 +0200 Subject: [PATCH 39/76] fix announcements loading infinitely closes sk22#569 --- .../android/fragments/AnnouncementsFragment.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/AnnouncementsFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/AnnouncementsFragment.java index 1b6b8ce2a..430c1205b 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/AnnouncementsFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/AnnouncementsFragment.java @@ -94,12 +94,15 @@ public class AnnouncementsFragment extends BaseStatusListFragment @Override public void onSuccess(List result){ if (getActivity() == null) return; - List unread = result.stream().filter(a -> !a.read).collect(toList()); - List read = result.stream().filter(a -> a.read).collect(toList()); - onDataLoaded(unread, true); - onDataLoaded(read, false); - if (unread.isEmpty()) setResult(true, null); - else unreadIDs = unread.stream().map(a -> a.id).collect(toList()); + + // get unread items first + List data = result.stream().filter(a -> !a.read).collect(toList()); + if (data.isEmpty()) setResult(true, null); + else unreadIDs = data.stream().map(a -> a.id).collect(toList()); + + // append read items at the end + data.addAll(result.stream().filter(a -> a.read).collect(toList())); + onDataLoaded(data, false); } }) .exec(accountID); From 1a2d1efa291c3a5507ca7719f0bbe6fb53e04545 Mon Sep 17 00:00:00 2001 From: sk22 Date: Sun, 11 Jun 2023 23:09:33 +0000 Subject: [PATCH 40/76] Added translation using Weblate (Persian) --- mastodon/src/main/res/values-fa/strings_sk.xml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 mastodon/src/main/res/values-fa/strings_sk.xml diff --git a/mastodon/src/main/res/values-fa/strings_sk.xml b/mastodon/src/main/res/values-fa/strings_sk.xml new file mode 100644 index 000000000..a6b3daec9 --- /dev/null +++ b/mastodon/src/main/res/values-fa/strings_sk.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file From dd25f3380ab2d7989ced21df4526a94da805be4e Mon Sep 17 00:00:00 2001 From: sk Date: Mon, 12 Jun 2023 01:38:44 +0200 Subject: [PATCH 41/76] add setting to configure default value for "forward report" closes sk22#565 --- .../joinmastodon/android/GlobalUserPreferences.java | 10 +++++++--- .../android/fragments/SettingsFragment.java | 4 ++++ .../fragments/report/ReportCommentFragment.java | 5 +++-- mastodon/src/main/res/values/strings_sk.xml | 1 + 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/GlobalUserPreferences.java b/mastodon/src/main/java/org/joinmastodon/android/GlobalUserPreferences.java index be4306131..8167f6ecc 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/GlobalUserPreferences.java +++ b/mastodon/src/main/java/org/joinmastodon/android/GlobalUserPreferences.java @@ -49,14 +49,12 @@ public class GlobalUserPreferences{ public static boolean compactReblogReplyLine; public static boolean confirmBeforeReblog; public static boolean allowRemoteLoading; + public static boolean forwardReportDefault; public static AutoRevealMode autoRevealEqualSpoilers; public static String publishButtonText; public static ThemePreference theme; public static ColorPreference color; - private final static Type recentLanguagesType = new TypeToken>>() {}.getType(); - private final static Type pinnedTimelinesType = new TypeToken>>() {}.getType(); - private final static Type accountsDefaultContentTypesType = new TypeToken>() {}.getType(); public static Map> recentLanguages; public static Map> pinnedTimelines; public static Set accountsWithLocalOnlySupport; @@ -64,6 +62,10 @@ public class GlobalUserPreferences{ public static Set accountsWithContentTypesEnabled; public static Map accountsDefaultContentTypes; + private final static Type recentLanguagesType = new TypeToken>>() {}.getType(); + private final static Type pinnedTimelinesType = new TypeToken>>() {}.getType(); + private final static Type accountsDefaultContentTypesType = new TypeToken>() {}.getType(); + /** * Pleroma */ @@ -131,6 +133,7 @@ public class GlobalUserPreferences{ accountsDefaultContentTypes=fromJson(prefs.getString("accountsDefaultContentTypes", null), accountsDefaultContentTypesType, new HashMap<>()); allowRemoteLoading=prefs.getBoolean("allowRemoteLoading", true); autoRevealEqualSpoilers=AutoRevealMode.valueOf(prefs.getString("autoRevealEqualSpoilers", AutoRevealMode.THREADS.name())); + forwardReportDefault=prefs.getBoolean("forwardReportDefault", true); if (prefs.contains("prefixRepliesWithRe")) { prefixReplies = prefs.getBoolean("prefixRepliesWithRe", false) @@ -191,6 +194,7 @@ public class GlobalUserPreferences{ .putString("accountsDefaultContentTypes", gson.toJson(accountsDefaultContentTypes)) .putBoolean("allowRemoteLoading", allowRemoteLoading) .putString("autoRevealEqualSpoilers", autoRevealEqualSpoilers.name()) + .putBoolean("forwardReportDefault", forwardReportDefault) .apply(); } diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java index 42494db3b..20da1332a 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java @@ -239,6 +239,10 @@ public class SettingsFragment extends MastodonToolbarFragment implements Provide GlobalUserPreferences.confirmBeforeReblog=i.checked; GlobalUserPreferences.save(); })); + items.add(new SwitchItem(R.string.sk_settings_forward_report_default, R.drawable.ic_fluent_arrow_forward_24_regular, GlobalUserPreferences.forwardReportDefault, i->{ + GlobalUserPreferences.forwardReportDefault=i.checked; + GlobalUserPreferences.save(); + })); items.add(new SwitchItem(R.string.sk_settings_allow_remote_loading, R.drawable.ic_fluent_communication_24_regular, GlobalUserPreferences.allowRemoteLoading, i->{ GlobalUserPreferences.allowRemoteLoading=i.checked; GlobalUserPreferences.save(); diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/report/ReportCommentFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/report/ReportCommentFragment.java index 0e888c798..abe2a435f 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/report/ReportCommentFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/report/ReportCommentFragment.java @@ -15,6 +15,7 @@ import android.widget.TextView; import com.squareup.otto.Subscribe; import org.joinmastodon.android.E; +import org.joinmastodon.android.GlobalUserPreferences; import org.joinmastodon.android.R; import org.joinmastodon.android.api.requests.reports.SendReport; import org.joinmastodon.android.events.FinishReportFragmentsEvent; @@ -39,7 +40,7 @@ public class ReportCommentFragment extends MastodonToolbarFragment{ private TextView forwardReportText; private Switch forwardReportSwitch; private EditText commentEdit; - private boolean forwardReport; + private boolean forwardReport = GlobalUserPreferences.forwardReportDefault; @Override public void onCreate(Bundle savedInstanceState){ @@ -89,7 +90,7 @@ public class ReportCommentFragment extends MastodonToolbarFragment{ } else { forwardReportItem.setOnClickListener(this::onForwardReportClick); forwardReportText.setText(getActivity().getString(R.string.sk_forward_report_to, domain)); - forwardReportSwitch.setChecked(forwardReport = true); + forwardReportSwitch.setChecked(forwardReport); } return view; } diff --git a/mastodon/src/main/res/values/strings_sk.xml b/mastodon/src/main/res/values/strings_sk.xml index 9d7111204..68e378e6d 100644 --- a/mastodon/src/main/res/values/strings_sk.xml +++ b/mastodon/src/main/res/values/strings_sk.xml @@ -304,4 +304,5 @@ everyone nobody others + “Forward report” switch default \ No newline at end of file From ed075b276f8bc9caf401a447938bd49b4f46a948 Mon Sep 17 00:00:00 2001 From: sk22 Date: Sun, 11 Jun 2023 23:48:40 +0000 Subject: [PATCH 42/76] Translated using Weblate (German) Currently translated at 100.0% (305 of 305 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/de/ --- mastodon/src/main/res/values-de-rDE/strings_sk.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mastodon/src/main/res/values-de-rDE/strings_sk.xml b/mastodon/src/main/res/values-de-rDE/strings_sk.xml index efea6f003..c4ec0c197 100644 --- a/mastodon/src/main/res/values-de-rDE/strings_sk.xml +++ b/mastodon/src/main/res/values-de-rDE/strings_sk.xml @@ -101,7 +101,7 @@ Bereits geteilt Antworten mit anderem Konto Einheitliches Icon für alle Benachrichtigungen - Weiterleiten zu %s + Weiterleiten an %s Nicht gesendete Beiträge Entwurf Planen @@ -303,4 +303,5 @@ andere alle niemanden + Standardwert „Meldung weiterleiten“-Schalter \ No newline at end of file From bd2f05be673dd8ec770011447a165a8f5217ca0f Mon Sep 17 00:00:00 2001 From: sk Date: Mon, 12 Jun 2023 12:13:44 +0200 Subject: [PATCH 43/76] hide followers/following count if count is -1 --- .../android/fragments/FollowRequestsListFragment.java | 4 ++++ .../org/joinmastodon/android/fragments/ProfileFragment.java | 3 +++ .../android/fragments/discover/DiscoverAccountsFragment.java | 4 ++++ .../android/ui/displayitems/AccountCardStatusDisplayItem.java | 4 ++++ 4 files changed, 15 insertions(+) diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/FollowRequestsListFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/FollowRequestsListFragment.java index 9f144634d..17e9ce0de 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/FollowRequestsListFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/FollowRequestsListFragment.java @@ -255,6 +255,10 @@ public class FollowRequestsListFragment extends RecyclerFragment Date: Mon, 12 Jun 2023 13:33:30 +0200 Subject: [PATCH 44/76] no error when opening url that looks like fedi url --- .../java/org/joinmastodon/android/ExternalShareActivity.java | 2 +- .../main/java/org/joinmastodon/android/ui/utils/UiUtils.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/ExternalShareActivity.java b/mastodon/src/main/java/org/joinmastodon/android/ExternalShareActivity.java index ce56efb54..96e145d01 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ExternalShareActivity.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ExternalShareActivity.java @@ -69,7 +69,7 @@ public class ExternalShareActivity extends FragmentStackActivity{ .ifPresent(req -> req.wrapProgress(this, R.string.loading, true, d -> { UiUtils.transformDialogForLookup(this, accountId, isFediUrl ? text.get() : null, d); - d.setOnDismissListener((ev) -> finish()); + d.setOnDismissListener((x) -> finish()); })); } else { openComposeFragment(accountId); diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java b/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java index 0abb9b0b2..456cb01ef 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java @@ -1232,7 +1232,7 @@ public class UiUtils { go.accept(ProfileFragment.class, args); return; } - go.accept(null, bundleError(context.getString(R.string.sk_resource_not_found))); + go.accept(null, null); } @Override From 040237de2b22ff234d62f11d3980465758639151 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 12 Jun 2023 14:30:32 +0200 Subject: [PATCH 45/76] New translations strings.xml (Persian) --- mastodon/src/main/res/values-fa-rIR/strings.xml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mastodon/src/main/res/values-fa-rIR/strings.xml b/mastodon/src/main/res/values-fa-rIR/strings.xml index 265b1e7f1..2d1b2080d 100644 --- a/mastodon/src/main/res/values-fa-rIR/strings.xml +++ b/mastodon/src/main/res/values-fa-rIR/strings.xml @@ -14,6 +14,7 @@ شما را دنبال می‌کند یک درخواست پی‌گیری برای شما ارسال کرد ‫‬ فرسته‌تان را پسندید + فرستهٔ شما را تقویت کرد نظرسنجی به پایان رسید %dثانیه %dدقیقه @@ -82,8 +83,13 @@ درحال ارسال گزارش… پی‌نگرفتن بازگشت + قوانین کارساز + ایجاد حساب ویرایش + نام + نام کاربری رایانامه + گذرواژه تأیید گذرواژه فعالیت همه @@ -96,8 +102,11 @@ فناوری ارسال دوباره + بارگذاری مجدد + ویرایش تصویر ذخیره عمومی + فقط پی‌گیرندگان همه افراد بعدی From 871ada23ab0d5f81fa36e59fe529716056700355 Mon Sep 17 00:00:00 2001 From: sk Date: Mon, 12 Jun 2023 14:33:09 +0200 Subject: [PATCH 46/76] don't display context until fragment transition finished --- .../android/fragments/ThreadFragment.java | 148 ++++++++++-------- 1 file changed, 81 insertions(+), 67 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/ThreadFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/ThreadFragment.java index df7c14ed7..063b4fb04 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ThreadFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ThreadFragment.java @@ -52,7 +52,8 @@ import me.grishka.appkit.utils.V; public class ThreadFragment extends StatusListFragment implements ProvidesAssistContent { protected Status mainStatus, updatedStatus; private final HashMap ancestryMap = new HashMap<>(); - protected boolean contextInitiallyRendered; + private StatusContext result; + protected boolean contextInitiallyRendered, transitionFinished; @Override public void onCreate(Bundle savedInstanceState){ @@ -113,6 +114,12 @@ public class ThreadFragment extends StatusListFragment implements ProvidesAssist return items; } + @Override + public void onTransitionFinished() { + transitionFinished = true; + maybeApplyContext(); + } + @Override protected void doLoadData(int offset, int count){ if (refreshing) loadMainStatus(); @@ -120,72 +127,8 @@ public class ThreadFragment extends StatusListFragment implements ProvidesAssist .setCallback(new SimpleCallback<>(this){ @Override public void onSuccess(StatusContext result){ - if (getContext() == null) return; - Map oldData = null; - if(refreshing){ - oldData = new HashMap<>(data.size()); - for (Status s : data) oldData.put(s.id, s); - data.clear(); - ancestryMap.clear(); - displayItems.clear(); - data.add(mainStatus); - onAppendItems(Collections.singletonList(mainStatus)); - } - - // TODO: figure out how this code works - if(isInstanceAkkoma()) sortStatusContext(mainStatus, result); - - result.descendants=filterStatuses(result.descendants); - result.ancestors=filterStatuses(result.ancestors); - - for (NeighborAncestryInfo i : mapNeighborhoodAncestry(mainStatus, result)) { - ancestryMap.put(i.status.id, i); - } - - if(footerProgress!=null) - footerProgress.setVisibility(View.GONE); - data.addAll(result.descendants); - int prevCount=displayItems.size(); - onAppendItems(result.descendants); - int count=displayItems.size(); - if(!refreshing) - adapter.notifyItemRangeInserted(prevCount, count-prevCount); - int prependedCount = prependItems(result.ancestors, !refreshing); - if (prependedCount > 0 && displayItems.get(prependedCount) instanceof ReblogOrReplyLineStatusDisplayItem) { - displayItems.remove(prependedCount); - adapter.notifyItemRemoved(prependedCount); - count--; - } - - for (Status s : data) { - Status oldStatus = oldData == null ? null : oldData.get(s.id); - // restore previous spoiler/filter revealed states when refreshing - if (oldStatus != null) { - s.spoilerRevealed = oldStatus.spoilerRevealed; - s.filterRevealed = oldStatus.filterRevealed; - } else if (GlobalUserPreferences.autoRevealEqualSpoilers != AutoRevealMode.NEVER && - s.spoilerText != null && - s.spoilerText.equals(mainStatus.spoilerText) && - mainStatus.spoilerRevealed) { - if (GlobalUserPreferences.autoRevealEqualSpoilers == AutoRevealMode.DISCUSSIONS || Objects.equals(mainStatus.account.id, s.account.id)) { - s.spoilerRevealed = true; - } - } - } - - dataLoaded(); - if(refreshing){ - refreshDone(); - adapter.notifyDataSetChanged(); - } - list.scrollToPosition(displayItems.size()-count); - - // no animation is going to happen, so proceeding to apply right now - if (data.size() == 1) { - contextInitiallyRendered = true; - // for the case that the main status has already finished loading - maybeApplyMainStatus(); - } + ThreadFragment.this.result = result; + maybeApplyContext(); } }) .exec(accountID); @@ -208,6 +151,77 @@ public class ThreadFragment extends StatusListFragment implements ProvidesAssist }).exec(accountID); } + protected void maybeApplyContext() { + if (!transitionFinished || result == null || getContext() == null) return; + Map oldData = null; + if(refreshing){ + oldData = new HashMap<>(data.size()); + for (Status s : data) oldData.put(s.id, s); + data.clear(); + ancestryMap.clear(); + displayItems.clear(); + data.add(mainStatus); + onAppendItems(Collections.singletonList(mainStatus)); + } + + // TODO: figure out how this code works + if (isInstanceAkkoma()) sortStatusContext(mainStatus, result); + + result.descendants=filterStatuses(result.descendants); + result.ancestors=filterStatuses(result.ancestors); + + for (NeighborAncestryInfo i : mapNeighborhoodAncestry(mainStatus, result)) { + ancestryMap.put(i.status.id, i); + } + + if(footerProgress!=null) + footerProgress.setVisibility(View.GONE); + data.addAll(result.descendants); + int prevCount=displayItems.size(); + onAppendItems(result.descendants); + int count=displayItems.size(); + if(!refreshing) + adapter.notifyItemRangeInserted(prevCount, count-prevCount); + int prependedCount = prependItems(result.ancestors, !refreshing); + if (prependedCount > 0 && displayItems.get(prependedCount) instanceof ReblogOrReplyLineStatusDisplayItem) { + displayItems.remove(prependedCount); + adapter.notifyItemRemoved(prependedCount); + count--; + } + + for (Status s : data) { + Status oldStatus = oldData == null ? null : oldData.get(s.id); + // restore previous spoiler/filter revealed states when refreshing + if (oldStatus != null) { + s.spoilerRevealed = oldStatus.spoilerRevealed; + s.filterRevealed = oldStatus.filterRevealed; + } else if (GlobalUserPreferences.autoRevealEqualSpoilers != AutoRevealMode.NEVER && + s.spoilerText != null && + s.spoilerText.equals(mainStatus.spoilerText) && + mainStatus.spoilerRevealed) { + if (GlobalUserPreferences.autoRevealEqualSpoilers == AutoRevealMode.DISCUSSIONS || Objects.equals(mainStatus.account.id, s.account.id)) { + s.spoilerRevealed = true; + } + } + } + + dataLoaded(); + if(refreshing){ + refreshDone(); + adapter.notifyDataSetChanged(); + } + list.scrollToPosition(displayItems.size()-count); + + // no animation is going to happen, so proceeding to apply right now + if (data.size() == 1) { + contextInitiallyRendered = true; + // for the case that the main status has already finished loading + maybeApplyMainStatus(); + } + + result = null; + } + protected Object maybeApplyMainStatus() { if (updatedStatus == null || !contextInitiallyRendered) return null; From b6976fb51921be970046169a4e964d3c3b7d1c5e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 12 Jun 2023 15:36:23 +0200 Subject: [PATCH 47/76] New translations strings.xml (Persian) --- .../src/main/res/values-fa-rIR/strings.xml | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/mastodon/src/main/res/values-fa-rIR/strings.xml b/mastodon/src/main/res/values-fa-rIR/strings.xml index 2d1b2080d..2c6b6ff12 100644 --- a/mastodon/src/main/res/values-fa-rIR/strings.xml +++ b/mastodon/src/main/res/values-fa-rIR/strings.xml @@ -132,13 +132,28 @@ درحال بارگیری… پی‌گیرتان است + + %,d پسندیده + %,d پسندیده‌ها + اکنون تقویت‌ها علاقه‌مندی‌ها آخرین ویرایش %s همين الان + + %d ثانیه پیش + %d ثانیه پیش + + + %d دقیقه پیش + %d دقیقه پیش + فرستهٔ اصلی متن ویرایش شد + هشدار محتوا افزوده شد + هشدار محتوا ویرایش شد + هشدار محتوا برداشته شد نظرسنجی اضافه شد نظرسنجی ویرایش شد نظرسنجی برداشته شد @@ -147,25 +162,35 @@ فرسته ویرایش شد ویرایش بارگذاری ناموفق بود + %d بایت %.2f کیلوبایت %.2f مگابایت %.2f گیگابایت + در حال پردازش… + ماستودون برای اندروید %s آماده بارگیری است. + ماستودون برای اندروید %s بارگیری شده و آماده نصب است. + بارگیری (%s) نصب + حریم خصوصی شما موافقم + در تخته‌گیره رونوشت شد نشانک برداشتن نشانک نشانک‌ها علاقه‌مندی های شما + هر زبانی اروپا آمریکای شمالی آمریکای جنوبی آفریقا آسیا اقیانوسیه + افزودن سطر تنظیم نمایه + محبوب در ماستودون پی‌گیری همه دربارهٔ شما From 6cf214f127d2709822cc90ad41648705cbfebba1 Mon Sep 17 00:00:00 2001 From: sk Date: Mon, 12 Jun 2023 15:39:38 +0200 Subject: [PATCH 48/76] fix header disappearing in some cases closes sk22#570 --- .../displayitems/HeaderStatusDisplayItem.java | 3 + .../main/res/layout/display_item_header.xml | 134 +++++++++--------- 2 files changed, 70 insertions(+), 67 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/HeaderStatusDisplayItem.java b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/HeaderStatusDisplayItem.java index 4e4eb4a9e..9a624a1c4 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/HeaderStatusDisplayItem.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/HeaderStatusDisplayItem.java @@ -399,6 +399,9 @@ public class HeaderStatusDisplayItem extends StatusDisplayItem{ else collapseBtnIcon.animate().scaleY(item.status.textExpanded ? -1 : 1).start(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) collapseBtn.setTooltipText(collapseText); } + + itemView.setPaddingRelative(itemView.getPaddingStart(), itemView.getPaddingTop(), + item.inset ? V.dp(10) : V.dp(4), itemView.getPaddingBottom()); } @Override diff --git a/mastodon/src/main/res/layout/display_item_header.xml b/mastodon/src/main/res/layout/display_item_header.xml index b976d7400..72632d5df 100644 --- a/mastodon/src/main/res/layout/display_item_header.xml +++ b/mastodon/src/main/res/layout/display_item_header.xml @@ -6,79 +6,79 @@ android:paddingEnd="4dp" android:paddingStart="16dp"> - - - - - - - - - + android:layout_alignParentEnd="true"> + + + + + + + + + + - + + + + + - @@ -127,7 +127,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginEnd="8dp" - android:layout_toStartOf="@id/unread_indicator" + android:layout_toStartOf="@id/buttons" android:layout_toEndOf="@id/avatar" android:layout_alignBottom="@id/avatar" android:layoutDirection="locale" From a3cd7224bd239b79003abd6631431ddc061a067d Mon Sep 17 00:00:00 2001 From: sk Date: Mon, 12 Jun 2023 16:17:08 +0200 Subject: [PATCH 49/76] update readme --- README.md | 41 ++++++++++++++++--------- img/ic_fluent_animal_cat_24_regular.svg | 9 ++++++ 2 files changed, 36 insertions(+), 14 deletions(-) create mode 100644 img/ic_fluent_animal_cat_24_regular.svg diff --git a/README.md b/README.md index 417609784..b7404a77a 100644 --- a/README.md +++ b/README.md @@ -10,44 +10,57 @@   Get it on IzzyOnDroid -> A fork of the [official Mastodon Android app](https://github.com/mastodon/mastodon-android) adding important features that are missing in the official app and possibly won’t ever be implemented, such as the federated timeline, unlisted posting and an image description viewer. +> A fork of the [Mastodon Android app](https://github.com/mastodon/mastodon-android) adding important features that are missing in the official app, focusing on [Glitch](https://github.com/glitch-soc/mastodon) compatibility, a pretty UI and adding new features that I feel make using the Fediverse a more pleasent experience. ## Key features ### **Unlisted posting** -**Allows you to post publicly without having your post show up in trends, hashtags or public timelines (i.e., in the tabs “Community”, “Federated” and “Posts”).** +
+

Allows you to post publicly without having your post show up in trends, hashtags or public timelines (i.e., in the tabs “Community”, “Federated” and “Posts”).

When posting with Unlisted visibility, your posts will still be publicly accessible in your profile. They will also be shown in people’s Home timelines, but only if they follow you or someone they follow reblogged/replied to your post. - + The Mastodon documentation has some more information about [Unlisted posting](https://docs.joinmastodon.org/user/posting/#unlisted) and [Public timelines](https://docs.joinmastodon.org/user/network/#timelines). +
### **Federated timeline** -**This allows you to chronologically see all Public posts from people on all other Fediverse neighborhoods your home instance is connected to.** +
+

This allows you to chronologically see all Public posts from people on all other Fediverse neighborhoods your home instance is connected to.

Despite being one of the main features of federated social media, the Federated timeline wasn’t included in the official Mastodon app – supposedly, because this conflicts with Google’s safety requirements for apps on the Play Store. That’s one of the reasons why choosing a small, **well-moderated instance is important**. Instance admins and moderators should always make sure to ban abusive users and stop federating with instances who platform them. On well-moderated instances, the Federated timeline can be a welcoming place to meet new people! +
+ +### **Customizable timelines** + +
+

You can customize Megalodon’s home tab and not only add local and federated timelines, but also pin lists and hashtags.

+ +Even better: You can rename every timeline however you please and pick a distinct icon for each timeline. This way, you can pin the hashtag “#Caturday”, rename your timeline to “CUTENESS OVERLOAD” and set Cat icon from Microsoft Fluent UI icons as its icon. :3 + +You can find the timelines editor by opening your home tab, tapping the `⋮` button in the top right and go to “Edit timelines”. +
### **Draft and schedule posts** -**Allows for preparing a post and scheduling it to send it automatically at a specific time.** +
+

+Allows to prepare a post and schedule it to send it automatically at a specific time.

You can create drafts, edit them, send them manually later or set a scheduled date. Drafts are technically saved as scheduled posts, so you can view and edit them from other apps that support scheduled posts. Scheduled posts are handled by your home instance, so they'll work even if you uninstall Megalodon. - -### **Image description viewer** - -**Allows you to quickly check whether an image or video has an alternative text attached to it.** - -This is important to **ensure the content you’re sharing is as accessible as possible** to people who can’t see the images and rely on software to read back the provided content descriptions. Thankfully, it’s quite common for people on the Fediverse to provide such alt texts, and hopefully things stay this way! +
### **Pinning posts** -**This lets you can highlight important posts on your profile. A dedicated “Pinned” tab in people’s profiles shows all the posts they pinned.** +
+

This lets you can highlight important posts on your profile. A dedicated “Pinned” tab in people’s profiles shows all the posts they pinned.

-On the Fediverse, it’s quite common for people to pin posts they want others to read before following them. You can pin/unpin posts yourself by clicking the `⋯` button in the top right corner of your posts. +On the Fediverse, it’s quite common for people to pin posts they want others to read before following them. You can pin/unpin posts yourself by clicking the `⋮` button in the top right corner of your posts. +
## Installation @@ -88,7 +101,7 @@ Megalodon makes use of [Mastodon for Android](https://github.com/mastodon/mastod ## Release variants -All downloads can be found on the [Releases](https://github.com/sk22/megalodon/releases) page. +All downloads can be found on the [Releases](https://github.com/sk22/megalodon/releases) page. When downloading a pre-release, expect to see unfinished features and bugs. If you don’t want that, just download the [latest full release](https://github.com/sk22/megalodon/releases/latest/download/megalodon.apk). **`megalodon.apk`** diff --git a/img/ic_fluent_animal_cat_24_regular.svg b/img/ic_fluent_animal_cat_24_regular.svg new file mode 100644 index 000000000..83c0f5290 --- /dev/null +++ b/img/ic_fluent_animal_cat_24_regular.svg @@ -0,0 +1,9 @@ + + + + \ No newline at end of file From 9d9e98959f2d5e92663df23c4a83a49ad6c8f9a3 Mon Sep 17 00:00:00 2001 From: sk Date: Mon, 12 Jun 2023 16:18:45 +0200 Subject: [PATCH 50/76] change glitch url --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b7404a77a..3d820f593 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@   Get it on IzzyOnDroid -> A fork of the [Mastodon Android app](https://github.com/mastodon/mastodon-android) adding important features that are missing in the official app, focusing on [Glitch](https://github.com/glitch-soc/mastodon) compatibility, a pretty UI and adding new features that I feel make using the Fediverse a more pleasent experience. +> A fork of the [Mastodon Android app](https://github.com/mastodon/mastodon-android) adding important features that are missing in the official app, focusing on [Glitch](https://glitch-soc.github.io/docs) compatibility, a pretty UI and adding new features that I feel make using the Fediverse a more pleasent experience. ## Key features From 54c386cceceb4c289782b5cf0b1df655e01ce338 Mon Sep 17 00:00:00 2001 From: sk Date: Mon, 12 Jun 2023 16:32:28 +0200 Subject: [PATCH 51/76] update readme --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 3d820f593..5d6d48f43 100644 --- a/README.md +++ b/README.md @@ -121,11 +121,11 @@ Variant without the integrated updater. This is the variant to be published to F ### Translation -As with the source code, the translation is sourced from the official project, which you can contribute to on the official “**Mastodon for Android**” Crowdin project: https://crowdin.com/project/mastodon-for-android +The translation for the base of the app is sourced from the upstream **Mastodon for Android** project, which you can contribute to on its Crowdin project: [https://crowdin.com/project/mastodon-for-android](https://crowdin.com/project/mastodon-for-android) -There's also a handful of custom strings exclusive to this projects that would need to be translated. You can help translate **Megalodon** on Weblate: https://translate.codeberg.org/projects/megalodon/ +There's also a bunch of custom strings exclusive to this project that need to be translated. You can help translate **Megalodon** on Weblate: [https://translate.codeberg.org/projects/megalodon](https://translate.codeberg.org/projects/megalodon) -[![Translation status](https://translate.codeberg.org/widgets/megalodon/-/horizontal-auto.svg)](https://translate.codeberg.org/engage/megalodon/) +[![Translation status](https://translate.codeberg.org/widgets/megalodon/-/horizontal-auto.svg)](https://translate.codeberg.org/engage/megalodon) --- @@ -219,6 +219,8 @@ As this app is using Java 17 features, you need JDK 17 or newer to build it. Oth ./gradlew assembleRelease ``` +Note that Megalodon might be depending on an in-development version of [AppKit](https://github.com/grishka/appkit) – a library by Mastodon for Android’s developer. In case the used AppKit version isn’t published to Maven Central yet, you might have to clone, build and publish it to your local Maven repository. For more information, see [this GitHub issue](https://github.com/mastodon/mastodon-android/issues/375#issuecomment-1507678585). + ## License This project is released under the [GPL-3 License](./LICENSE). From 7b2f8d2be3a692ff9b0121fad25d7d58023c2e20 Mon Sep 17 00:00:00 2001 From: sk Date: Mon, 12 Jun 2023 16:40:52 +0200 Subject: [PATCH 52/76] update readme --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index 5d6d48f43..9aff048df 100644 --- a/README.md +++ b/README.md @@ -40,9 +40,7 @@ That’s one of the reasons why choosing a small, **well-moderated instance is i

You can customize Megalodon’s home tab and not only add local and federated timelines, but also pin lists and hashtags.

-Even better: You can rename every timeline however you please and pick a distinct icon for each timeline. This way, you can pin the hashtag “#Caturday”, rename your timeline to “CUTENESS OVERLOAD” and set Cat icon from Microsoft Fluent UI icons as its icon. :3 - -You can find the timelines editor by opening your home tab, tapping the `⋮` button in the top right and go to “Edit timelines”. +Even better: You can rename every timeline however you please and pick a distinct icon for each timeline. This way, you can pin the hashtag “#Caturday”, rename your timeline to “CUTENESS OVERLOAD” and set Cat icon from Microsoft Fluent UI icons as its icon. :3 You can find the timelines editor by opening your home tab, tapping the `⋮` button in the top right and going to “Edit timelines”.
### **Draft and schedule posts** From be91775f4b8720f79ffc9dc4f9e4e4113282e38d Mon Sep 17 00:00:00 2001 From: sk Date: Mon, 12 Jun 2023 17:29:00 +0200 Subject: [PATCH 53/76] fix pinned posts showing post multiple times --- .../fragments/PinnedPostsListFragment.java | 52 +++++++++++++++++++ .../android/fragments/ProfileFragment.java | 11 +++- 2 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 mastodon/src/main/java/org/joinmastodon/android/fragments/PinnedPostsListFragment.java diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/PinnedPostsListFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/PinnedPostsListFragment.java new file mode 100644 index 000000000..a091e5d42 --- /dev/null +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/PinnedPostsListFragment.java @@ -0,0 +1,52 @@ +package org.joinmastodon.android.fragments; + +import android.net.Uri; +import android.os.Bundle; + +import org.joinmastodon.android.R; +import org.joinmastodon.android.api.requests.accounts.GetAccountStatuses; +import org.joinmastodon.android.model.Account; +import org.joinmastodon.android.model.Filter; +import org.joinmastodon.android.model.Status; +import org.parceler.Parcels; + +import java.util.List; + +import me.grishka.appkit.api.SimpleCallback; + +public class PinnedPostsListFragment extends StatusListFragment{ + private Account account; + + public PinnedPostsListFragment() { + setListLayoutId(R.layout.recycler_fragment_no_refresh); + } + + @Override + public void onCreate(Bundle savedInstanceState){ + super.onCreate(savedInstanceState); + account=Parcels.unwrap(getArguments().getParcelable("profileAccount")); + setTitle(R.string.posts); + loadData(); + } + + @Override + protected void doLoadData(int offset, int count){ + new GetAccountStatuses(account.id, null, null, 100, GetAccountStatuses.Filter.PINNED) + .setCallback(new SimpleCallback<>(this){ + @Override + public void onSuccess(List result){ + onDataLoaded(result, false); + } + }).exec(accountID); + } + + @Override + protected Filter.FilterContext getFilterContext() { + return Filter.FilterContext.ACCOUNT; + } + + @Override + public Uri getWebUri(Uri.Builder base) { + return Uri.parse(account.url); + } +} diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java index 7ca2d96c3..a72eb02ac 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java @@ -124,7 +124,8 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList private ProgressBarButton actionButton, notifyButton; private ViewPager2 pager; private NestedRecyclerScrollView scrollView; - private AccountTimelineFragment postsFragment, postsWithRepliesFragment, pinnedPostsFragment, mediaFragment; + private AccountTimelineFragment postsFragment, postsWithRepliesFragment, mediaFragment; + private PinnedPostsListFragment pinnedPostsFragment; // private ProfileAboutFragment aboutFragment; private TabLayout tabbar; private SwipeRefreshLayout refreshLayout; @@ -421,8 +422,14 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList if(postsFragment==null){ postsFragment=AccountTimelineFragment.newInstance(accountID, account, GetAccountStatuses.Filter.DEFAULT, true); postsWithRepliesFragment=AccountTimelineFragment.newInstance(accountID, account, GetAccountStatuses.Filter.INCLUDE_REPLIES, false); - pinnedPostsFragment=AccountTimelineFragment.newInstance(accountID, account, GetAccountStatuses.Filter.PINNED, false); mediaFragment=AccountTimelineFragment.newInstance(accountID, account, GetAccountStatuses.Filter.MEDIA, false); + + Bundle args=new Bundle(); + args.putString("account", accountID); + args.putParcelable("profileAccount", Parcels.wrap(account)); + args.putBoolean("__is_tab", true); + pinnedPostsFragment=new PinnedPostsListFragment(); + pinnedPostsFragment.setArguments(args); // aboutFragment=new ProfileAboutFragment(); setFields(fields); } From 1433d0717ed0b6874e62c06807a8bf9531d53d0d Mon Sep 17 00:00:00 2001 From: Choukajohn Date: Mon, 12 Jun 2023 13:15:32 +0000 Subject: [PATCH 54/76] Translated using Weblate (French) Currently translated at 100.0% (305 of 305 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fr/ --- mastodon/src/main/res/values-fr-rFR/strings_sk.xml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/mastodon/src/main/res/values-fr-rFR/strings_sk.xml b/mastodon/src/main/res/values-fr-rFR/strings_sk.xml index e470d0b66..ad02d688d 100644 --- a/mastodon/src/main/res/values-fr-rFR/strings_sk.xml +++ b/mastodon/src/main/res/values-fr-rFR/strings_sk.xml @@ -254,7 +254,7 @@ Développer Réduire Réduire les messages très longs - Préfixe \"re :\" lors d\'une réponse avec AC + Préfixe les AC avec \"re :\" sur les réponses à Filtré : %s Corriger les pièces jointes \? Certaines pièces jointes n\'ont pas fini de se télécharger. @@ -298,4 +298,12 @@ informations distantes indisponibles Échec du chargement du profil via %s Essayez de récupérer des listes plus précises pour les abonnés, les likes et les boosts en chargeant les informations à partir de l\'instance d\'origine. + Révéler les AC identiques dans les réponses de + personne + auteur + tout le monde + tout le monde + personne + autres + \"Transférer le rapport\" par défaut \ No newline at end of file From 1f0108b14e10b56c0d150a9ec9137c9d81921f28 Mon Sep 17 00:00:00 2001 From: Oliebol Date: Mon, 12 Jun 2023 15:17:37 +0000 Subject: [PATCH 55/76] Translated using Weblate (Dutch) Currently translated at 84.5% (258 of 305 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/nl/ --- mastodon/src/main/res/values-nl-rNL/strings_sk.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mastodon/src/main/res/values-nl-rNL/strings_sk.xml b/mastodon/src/main/res/values-nl-rNL/strings_sk.xml index 5b21ef096..d59f1ce05 100644 --- a/mastodon/src/main/res/values-nl-rNL/strings_sk.xml +++ b/mastodon/src/main/res/values-nl-rNL/strings_sk.xml @@ -257,4 +257,6 @@ iedereen auteur niemand + niemand + iedereen \ No newline at end of file From 513e6439ff99322e019da8298771c4efb70135fd Mon Sep 17 00:00:00 2001 From: EndermanCo Date: Mon, 12 Jun 2023 08:07:53 +0000 Subject: [PATCH 56/76] Translated using Weblate (Persian) Currently translated at 22.2% (68 of 305 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fa/ --- .../src/main/res/values-fa/strings_sk.xml | 70 ++++++++++++++++++- 1 file changed, 69 insertions(+), 1 deletion(-) diff --git a/mastodon/src/main/res/values-fa/strings_sk.xml b/mastodon/src/main/res/values-fa/strings_sk.xml index a6b3daec9..daf887c66 100644 --- a/mastodon/src/main/res/values-fa/strings_sk.xml +++ b/mastodon/src/main/res/values-fa/strings_sk.xml @@ -1,2 +1,70 @@ - \ No newline at end of file + + سنجاق شده + سنجاق فرسته به نمایه + مگالودون + سنجاق به نمایه + درحال سنجاق کردن فرسته… + برداشتن سنجاق از نمایه + برداشتن سنجاق فرسته از نمایه + درحال برداشتن سنجاق فرسته… + توضیحات تصویر + فهرست نشده + نمایش پاسخ‌ها + سیاهه‌ها + فرسته‌ها + به‌روزرسانی موجود نیست + همه پاسخ‌ها + علامت‌گذاری رسانه به عنوان حساس + مگالودون %s آماده بارگیری است. + درخواست‌های پی‌گیری + پذیرفتن درخواست پی‌گیری + رد درخواست پی‌گیری + اعلان‌های فرسته + سامانه + صورتی + بنفش + سبز + آبی + قهوه‌ای + قرمز + زرد + ترجمه + زبان: %s + زبان های موجود + خوش آمدید! + %1$s (%2$s) + تنظیم نمایه + پیکربندی پالایه + تنظیمات امنیتی + درباره کاره + اعانه + پاک‌سازی همه اعلانات + حذف همه + متن دکمه انتشار + سفارشی‌سازی متن دکمه انتشار + برگردان تقویت + قوانین + بستن + باز کردن + نتایج نظرسنجی + نسخه کارساز: %s + حالت فقط محلی Glitch + فقط محلی + به کار انداختن پیش انتشار + ذخیره پیش نویس؟ + بدون نتیجه + درحال جستجو… + پیوست پرونده‭ + ویرایش شده + مارک‌دون + HTML + متن ساده + بررسی برای به‌روزرسانی + کارساز از فرسته فقط محلی پشتیبانی می‌کند + نمایش تقویت‌ها + فرسته‌های ویرایش شده + مگالودون %s بارگیری شده و آماده نصب است. + اجازه انتخاب های متعدد + باز کردن با حساب دیگر + \ No newline at end of file From 81d1ecc5f8affe057d4d55389f4e5d76f2987f3d Mon Sep 17 00:00:00 2001 From: sk Date: Mon, 12 Jun 2023 17:47:10 +0200 Subject: [PATCH 57/76] update readme, changelog --- README.md | 15 +++++++-------- metadata/en-US/changelogs/93.txt | 9 +++++++++ 2 files changed, 16 insertions(+), 8 deletions(-) create mode 100644 metadata/en-US/changelogs/93.txt diff --git a/README.md b/README.md index 9aff048df..e7a2bbe08 100644 --- a/README.md +++ b/README.md @@ -52,14 +52,6 @@ Allows to prepare a post and schedule it to send it automatically at a specific You can create drafts, edit them, send them manually later or set a scheduled date. Drafts are technically saved as scheduled posts, so you can view and edit them from other apps that support scheduled posts. Scheduled posts are handled by your home instance, so they'll work even if you uninstall Megalodon. -### **Pinning posts** - -
-

This lets you can highlight important posts on your profile. A dedicated “Pinned” tab in people’s profiles shows all the posts they pinned.

- -On the Fediverse, it’s quite common for people to pin posts they want others to read before following them. You can pin/unpin posts yourself by clicking the `⋮` button in the top right corner of your posts. -
- ## Installation ### IzzyOnDroid @@ -165,6 +157,10 @@ There's also a bunch of custom strings exclusive to this project that need to be * [Soft-blocking (by blocking and immediately unblocking)](https://github.com/sk22/megalodon/commit/e75d350b7a2709259e9fc5138e0e1f361bdb0972) * [Pinnable custom timelines](https://github.com/sk22/megalodon/pull/338/commits) * Support for local-only posts +* Support for copying the URL to posts/accounts/… in Pixel launcher’s Recent apps view +* Compatibility for Akkoma Bubble timeline +* Listings of followers/following/favorites/boosts can be loaded from the origin instance (there’s an option to disable this in in the settings) +* Allow opening posts/accounts in-app by sharing a URL/handle to Megalodon (Originally implemented in [Moshidon](https://github.com/LucasGGamerM/moshidon), [PR](https://github.com/sk22/megalodon/pull/531)) ### Behavior @@ -190,6 +186,8 @@ There's also a bunch of custom strings exclusive to this project that need to be * Improved filtering using Mastodon 4.0 API: [#202](https://github.com/sk22/megalodon/pull/202), [#212](https://github.com/sk22/megalodon/pull/212), [#255](https://github.com/sk22/megalodon/pull/255) by [@thiagojedi](https://github.com/thiagojedi) * [Support admin notifications](https://github.com/sk22/megalodon/commit/c12a6eaee6b609bc53eb0a45d9199f37d5241801) and [notifications for edited reblogged posts](https://github.com/sk22/megalodon/commit/900e8fb2e9353002c16d15e06b78d2731e121601) * [Android file opener added back in addition to image picker](https://github.com/sk22/megalodon/commit/3a6ace53d5ab01e28077c9c930cb6ed487b78031) +* [Replies are inserted below the replied-to post in thread view](https://github.com/sk22/megalodon/commit/87c37df370ec24aeea0d2dbaeb29468aa4fb5808) +* Option to auto-reveal equal content warnings in threads ### Visual @@ -207,6 +205,7 @@ There's also a bunch of custom strings exclusive to this project that need to be * Scale text according to system settings * Header in timeline for followed hashtags * [Indicator for missing alt texts](https://github.com/sk22/megalodon/commit/c0c276f03e793b78c478c17dfdef24a66ef7cedb) +* Visually grouped (by removing divider lines and reducing padding) threaded replies in thread view ## Building diff --git a/metadata/en-US/changelogs/93.txt b/metadata/en-US/changelogs/93.txt new file mode 100644 index 000000000..189e51de9 --- /dev/null +++ b/metadata/en-US/changelogs/93.txt @@ -0,0 +1,9 @@ +- Improved, clearer thread view +- Fixed filtering logic +- Open accounts/posts by sharing a website to Megalodon +- Load followers/favorites/… listings from origin instance +- Compatibility improvements for non-Mastodon servers +- Option to set post content type +- Support for copying URL from Recent apps on Pixel devices +- Auto-reveal equal CWs in threads +- Bugfixes and UI improvements \ No newline at end of file From 968cde9e4c5ba39db04c875ecc7e7db67e30baab Mon Sep 17 00:00:00 2001 From: sk Date: Mon, 12 Jun 2023 18:03:22 +0200 Subject: [PATCH 58/76] clean up empty regional locales --- .../src/main/res/values-ar-rDZ/strings_sk.xml | 17 ------- .../src/main/res/values-ar-rSA/strings_sk.xml | 3 -- .../src/main/res/values-ar/strings_sk.xml | 11 ++++- .../src/main/res/values-pt/strings_sk.xml | 44 ------------------- metadata/{ar_DZ => ar}/full_description.txt | 0 metadata/{ar_DZ => ar}/short_description.txt | 0 metadata/{my-MM => my}/short_description.txt | 0 metadata/{my-MM => my}/title.txt | 0 metadata/{pt => pt-PT}/changelogs/50.txt | 0 metadata/{pt => pt-PT}/changelogs/51.txt | 0 metadata/{pt => pt-PT}/changelogs/55.txt | 0 metadata/{pt => pt-PT}/changelogs/56.txt | 0 metadata/{pt => pt-PT}/changelogs/59.txt | 0 metadata/{pt => pt-PT}/changelogs/61.txt | 0 metadata/{pt => pt-PT}/full_description.txt | 0 metadata/{pt => pt-PT}/short_description.txt | 0 metadata/{pt => pt-PT}/title.txt | 0 17 files changed, 10 insertions(+), 65 deletions(-) delete mode 100644 mastodon/src/main/res/values-ar-rDZ/strings_sk.xml delete mode 100644 mastodon/src/main/res/values-ar-rSA/strings_sk.xml delete mode 100644 mastodon/src/main/res/values-pt/strings_sk.xml rename metadata/{ar_DZ => ar}/full_description.txt (100%) rename metadata/{ar_DZ => ar}/short_description.txt (100%) rename metadata/{my-MM => my}/short_description.txt (100%) rename metadata/{my-MM => my}/title.txt (100%) rename metadata/{pt => pt-PT}/changelogs/50.txt (100%) rename metadata/{pt => pt-PT}/changelogs/51.txt (100%) rename metadata/{pt => pt-PT}/changelogs/55.txt (100%) rename metadata/{pt => pt-PT}/changelogs/56.txt (100%) rename metadata/{pt => pt-PT}/changelogs/59.txt (100%) rename metadata/{pt => pt-PT}/changelogs/61.txt (100%) rename metadata/{pt => pt-PT}/full_description.txt (100%) rename metadata/{pt => pt-PT}/short_description.txt (100%) rename metadata/{pt => pt-PT}/title.txt (100%) diff --git a/mastodon/src/main/res/values-ar-rDZ/strings_sk.xml b/mastodon/src/main/res/values-ar-rDZ/strings_sk.xml deleted file mode 100644 index 3668745aa..000000000 --- a/mastodon/src/main/res/values-ar-rDZ/strings_sk.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - هل أنت متأكد أنك تريد حذف وإعادة صياغة هذا المنشور؟ - غير مدرج - القوائم - طلبات المتابعة - مدبّس - حذف وإعادة الصياغة - حذف وإعادة صياغة الرسالة - تدبيس على الصفحة الشخصية - تدبيس الرسالة على الصفحة الشخصية - إظهار الخيط الفديرالي - المساهمة في Megalodon - قبول طلب المتابعة - رفض طلب المتابعة - قوائم بها %s - \ No newline at end of file diff --git a/mastodon/src/main/res/values-ar-rSA/strings_sk.xml b/mastodon/src/main/res/values-ar-rSA/strings_sk.xml deleted file mode 100644 index 045e125f3..000000000 --- a/mastodon/src/main/res/values-ar-rSA/strings_sk.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/mastodon/src/main/res/values-ar/strings_sk.xml b/mastodon/src/main/res/values-ar/strings_sk.xml index c8aea7a8d..f4183214f 100644 --- a/mastodon/src/main/res/values-ar/strings_sk.xml +++ b/mastodon/src/main/res/values-ar/strings_sk.xml @@ -2,7 +2,16 @@ هل أنت متأكد أنك تريد حذف وإعادة صياغة هذا المنشور؟ تثبيت في الملف الشخصي - مثبت + المُثَبَّتَة حذف وإعادة صياغة حذف وإعادة صياغة المنشور + غير مدرج + القوائم + طلبات المتابعة + تدبيس الرسالة على الصفحة الشخصية + إظهار الخيط الفديرالي + المساهمة في Megalodon + قبول طلب المتابعة + رفض طلب المتابعة + قوائم بها %s \ No newline at end of file diff --git a/mastodon/src/main/res/values-pt/strings_sk.xml b/mastodon/src/main/res/values-pt/strings_sk.xml deleted file mode 100644 index a93f10998..000000000 --- a/mastodon/src/main/res/values-pt/strings_sk.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - Megalodon - Fixado - Apagar e reescrever - Tem a certeza que pretende apagar e reescrever esta publicação\? - Tem a certeza que deseja desafixar esta publicação\? - Todas as respostas - Carregar novas publicações automaticamente - Desligar as notificações de publicação para %s - Estas são as publicações mais recentes das pessoas na tua federação. - Apagar e reescrever publicação - Fixar no perfil - Fixar publicação no perfil - Deseja fixar esta publicação ao seu perfil\? - A fixar a publicação… - Desafixar do perfil - Desafixar publicação do perfil - A desafixar publicação… - Descrição da imagem - Não listado - Mostrar respostas - Citação %s - Visibilidade da resposta - Apagar idiomas usados recentemente - Respostas aos meus comentários - Respostas a mim - Mostrar impulsionamentos - Mostrar contagem de interações - Megalodon v%1$s (%2$d) - Marcar conteúdo como sensível - Ligar as notificações de publicação para %s - Federação - Megalodon %s pronto a descarregar. - Megalodon %s descarregado e pronto a instalar. - A verificar atualizações - Sem atualizações disponíveis - Listas - Pedidos para seguir - Aceitar pedido para seguir - Rejeitar pedido para seguir - Listas com %s - Mostrar sempre avisos de conteúdo - \ No newline at end of file diff --git a/metadata/ar_DZ/full_description.txt b/metadata/ar/full_description.txt similarity index 100% rename from metadata/ar_DZ/full_description.txt rename to metadata/ar/full_description.txt diff --git a/metadata/ar_DZ/short_description.txt b/metadata/ar/short_description.txt similarity index 100% rename from metadata/ar_DZ/short_description.txt rename to metadata/ar/short_description.txt diff --git a/metadata/my-MM/short_description.txt b/metadata/my/short_description.txt similarity index 100% rename from metadata/my-MM/short_description.txt rename to metadata/my/short_description.txt diff --git a/metadata/my-MM/title.txt b/metadata/my/title.txt similarity index 100% rename from metadata/my-MM/title.txt rename to metadata/my/title.txt diff --git a/metadata/pt/changelogs/50.txt b/metadata/pt-PT/changelogs/50.txt similarity index 100% rename from metadata/pt/changelogs/50.txt rename to metadata/pt-PT/changelogs/50.txt diff --git a/metadata/pt/changelogs/51.txt b/metadata/pt-PT/changelogs/51.txt similarity index 100% rename from metadata/pt/changelogs/51.txt rename to metadata/pt-PT/changelogs/51.txt diff --git a/metadata/pt/changelogs/55.txt b/metadata/pt-PT/changelogs/55.txt similarity index 100% rename from metadata/pt/changelogs/55.txt rename to metadata/pt-PT/changelogs/55.txt diff --git a/metadata/pt/changelogs/56.txt b/metadata/pt-PT/changelogs/56.txt similarity index 100% rename from metadata/pt/changelogs/56.txt rename to metadata/pt-PT/changelogs/56.txt diff --git a/metadata/pt/changelogs/59.txt b/metadata/pt-PT/changelogs/59.txt similarity index 100% rename from metadata/pt/changelogs/59.txt rename to metadata/pt-PT/changelogs/59.txt diff --git a/metadata/pt/changelogs/61.txt b/metadata/pt-PT/changelogs/61.txt similarity index 100% rename from metadata/pt/changelogs/61.txt rename to metadata/pt-PT/changelogs/61.txt diff --git a/metadata/pt/full_description.txt b/metadata/pt-PT/full_description.txt similarity index 100% rename from metadata/pt/full_description.txt rename to metadata/pt-PT/full_description.txt diff --git a/metadata/pt/short_description.txt b/metadata/pt-PT/short_description.txt similarity index 100% rename from metadata/pt/short_description.txt rename to metadata/pt-PT/short_description.txt diff --git a/metadata/pt/title.txt b/metadata/pt-PT/title.txt similarity index 100% rename from metadata/pt/title.txt rename to metadata/pt-PT/title.txt From 6fbf00a1321eb10a1cce8f9587e1e426b964da8a Mon Sep 17 00:00:00 2001 From: sk Date: Mon, 12 Jun 2023 18:07:28 +0200 Subject: [PATCH 59/76] add newline --- metadata/en-US/changelogs/93.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metadata/en-US/changelogs/93.txt b/metadata/en-US/changelogs/93.txt index 189e51de9..51b0d39e5 100644 --- a/metadata/en-US/changelogs/93.txt +++ b/metadata/en-US/changelogs/93.txt @@ -6,4 +6,4 @@ - Option to set post content type - Support for copying URL from Recent apps on Pixel devices - Auto-reveal equal CWs in threads -- Bugfixes and UI improvements \ No newline at end of file +- Bugfixes and UI improvements From 8178f81c85e9dab384bb3f35cb013b8f46b16a67 Mon Sep 17 00:00:00 2001 From: sk Date: Mon, 12 Jun 2023 18:08:40 +0200 Subject: [PATCH 60/76] update changelog --- metadata/en-US/changelogs/93.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/metadata/en-US/changelogs/93.txt b/metadata/en-US/changelogs/93.txt index 51b0d39e5..cd90df906 100644 --- a/metadata/en-US/changelogs/93.txt +++ b/metadata/en-US/changelogs/93.txt @@ -1,5 +1,4 @@ - Improved, clearer thread view -- Fixed filtering logic - Open accounts/posts by sharing a website to Megalodon - Load followers/favorites/… listings from origin instance - Compatibility improvements for non-Mastodon servers From 731e67725c1c13b51e23f9a0aa85d2fce5c7db0a Mon Sep 17 00:00:00 2001 From: sk Date: Mon, 12 Jun 2023 18:22:02 +0200 Subject: [PATCH 61/76] fix errors in strings --- mastodon/src/main/res/values-hr-rHR/strings_sk.xml | 2 +- mastodon/src/main/res/values-ru-rRU/strings_sk.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mastodon/src/main/res/values-hr-rHR/strings_sk.xml b/mastodon/src/main/res/values-hr-rHR/strings_sk.xml index 4578a31dc..eb78a49de 100644 --- a/mastodon/src/main/res/values-hr-rHR/strings_sk.xml +++ b/mastodon/src/main/res/values-hr-rHR/strings_sk.xml @@ -181,7 +181,7 @@ Vaša početna instanca mora podržavati isključivo-lokalno objavljivanje da bi ovo radilo. Većina modificiranih verzija Mastodona to radi, ali Mastodon ne. Sakrij gumbe za interakciju Automatski sakrij gumb \"Nova objava\" - "Citiranje %" + Citiranje %s Vidljivost odgovora Svi odgovori Odgovori onima koje pratim diff --git a/mastodon/src/main/res/values-ru-rRU/strings_sk.xml b/mastodon/src/main/res/values-ru-rRU/strings_sk.xml index a071ab499..21b70d939 100644 --- a/mastodon/src/main/res/values-ru-rRU/strings_sk.xml +++ b/mastodon/src/main/res/values-ru-rRU/strings_sk.xml @@ -257,7 +257,7 @@ Сворачивать очень длинные посты Исправить вложения\? Некоторые вложения еще не загрузились. - Цитирование%s + Цитирование %s Видимость ответа Скрыть кнопки взаимодействия Подписаться с другого аккаунта From c56c7448d0cabe35e197491f420dabca9a332a95 Mon Sep 17 00:00:00 2001 From: sk22 Date: Mon, 12 Jun 2023 16:12:18 +0000 Subject: [PATCH 62/76] Translated using Weblate (German) Currently translated at 100.0% (18 of 18 strings) Translation: Megalodon/metadata Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/de/ --- metadata/de-DE/changelogs/83.txt | 2 +- metadata/de-DE/changelogs/93.txt | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 metadata/de-DE/changelogs/93.txt diff --git a/metadata/de-DE/changelogs/83.txt b/metadata/de-DE/changelogs/83.txt index 7b1b4eea3..fcb207093 100644 --- a/metadata/de-DE/changelogs/83.txt +++ b/metadata/de-DE/changelogs/83.txt @@ -2,4 +2,4 @@ - Verbesserte Kopfzeilen für Reblogs und Antworten in der Timeline - Benachrichtigungs-Punkt (Benachrichtigungen werden aktuell noch nicht automatisch nachgeladen) - Für Akkoma-Benutzer_innen: Antwort-Sichtbarkeit, sortierte Thread-Antworten, Zitate, … -- Crashes behoben und kleinere Verbesserungen \ No newline at end of file +- Crashes behoben und kleinere Verbesserungen diff --git a/metadata/de-DE/changelogs/93.txt b/metadata/de-DE/changelogs/93.txt new file mode 100644 index 000000000..6458dc48a --- /dev/null +++ b/metadata/de-DE/changelogs/93.txt @@ -0,0 +1,8 @@ +- Verbesserte, übersichtlichere Thread-Ansicht +- Website an Megalodon teilen, um den Account/Beitrag zu öffnen +- Laden von Follower*innen/Favorisierungen/… von der Ursprungs-Instanz +- Verbesserte Kompatibilität mit Nicht-Mastodon-Servern +- Option, um Inhaltstyp eines Beitrags festzulegen +- URL kopieren in der Recent-Apps-Ansicht auf Pixel-Geräten +- Automatisches Aufdecken von gleichen CWs in Threads +- Fehlerbehebungen und UI-Verbesserungen From 320027ca9be7771c645fbbe1eac21f7776511100 Mon Sep 17 00:00:00 2001 From: sk Date: Mon, 12 Jun 2023 18:42:07 +0200 Subject: [PATCH 63/76] merge upstream photo layout changes --- .../android/ui/PhotoLayoutHelper.java | 224 ++++++++++-------- .../android/ui/views/MediaGridLayout.java | 13 +- 2 files changed, 129 insertions(+), 108 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/PhotoLayoutHelper.java b/mastodon/src/main/java/org/joinmastodon/android/ui/PhotoLayoutHelper.java index fe3accc4f..7ea073bed 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/PhotoLayoutHelper.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/PhotoLayoutHelper.java @@ -12,151 +12,164 @@ import androidx.annotation.NonNull; public class PhotoLayoutHelper{ public static final int MAX_WIDTH=1000; - public static final int MAX_HEIGHT=1910; + public static final int MAX_HEIGHT=1777; // 9:16 + public static final int MIN_HEIGHT=250; + public static final float GAP=1.5f; @NonNull public static TiledLayoutResult processThumbs(List thumbs){ - int _maxW=MAX_WIDTH; - int _maxH=MAX_HEIGHT; + float maxRatio=MAX_WIDTH/(float)MAX_HEIGHT; TiledLayoutResult result=new TiledLayoutResult(); if(thumbs.size()==1){ Attachment att=thumbs.get(0); result.rowSizes=result.columnSizes=new int[]{1}; - if(att.getWidth()>att.getHeight()){ - result.width=_maxW; - result.height=Math.round(att.getHeight()/(float)att.getWidth()*_maxW); + float ratio=att.getWidth()/(float) att.getHeight(); + if(ratio>maxRatio){ + result.width=MAX_WIDTH; + result.height=Math.max(MIN_HEIGHT, Math.round(att.getHeight()/(float)att.getWidth()*MAX_WIDTH)); }else{ - result.height=_maxH; - result.width=Math.round(att.getWidth()/(float)att.getHeight()*_maxH); + result.height=MAX_HEIGHT; + result.width=MAX_WIDTH;//Math.round(att.getWidth()/(float)att.getHeight()*MAX_HEIGHT); } - result.tiles=new TiledLayoutResult.Tile[]{new TiledLayoutResult.Tile(1, 1, result.width, result.height, 0, 0)}; + result.tiles=new TiledLayoutResult.Tile[]{new TiledLayoutResult.Tile(1, 1, 0, 0)}; + return result; }else if(thumbs.size()==0){ throw new IllegalArgumentException("Empty thumbs array"); } - String orients=""; - ArrayList ratios=new ArrayList(); + ArrayList ratios=new ArrayList<>(); int cnt=thumbs.size(); + boolean allAreWide=true, allAreSquare=true; for(Attachment thumb : thumbs){ -// float ratio=thumb.isSizeKnown() ? thumb.getWidth()/(float) thumb.getHeight() : 1f; - float ratio=thumb.getWidth()/(float) thumb.getHeight(); - char orient=ratio>1.2 ? 'w' : (ratio<0.8 ? 'n' : 'q'); - orients+=orient; + float ratio=Math.max(0.45f, thumb.getWidth()/(float) thumb.getHeight()); + if(ratio<=1.2f){ + allAreWide=false; + if(ratio<0.8f) + allAreSquare=false; + }else{ + allAreSquare=false; + } ratios.add(ratio); } float avgRatio=!ratios.isEmpty() ? sum(ratios)/ratios.size() : 1.0f; - float maxW, maxH, marginW=0, marginH=0; - maxW=_maxW; - maxH=_maxH; - - float maxRatio=maxW/maxH; - if(cnt==2){ - if(orients.equals("ww") && avgRatio>1.4*maxRatio && (ratios.get(1)-ratios.get(0))<0.2){ // two wide photos, one above the other - float h=Math.min(maxW/ratios.get(0), Math.min(maxW/ratios.get(1), (maxH-marginH)/2.0f)); + if(allAreWide && avgRatio>1.4*maxRatio && (ratios.get(1)-ratios.get(0))<0.2){ // two wide photos, one above the other + float h=Math.max(Math.min(MAX_WIDTH/ratios.get(0), Math.min(MAX_WIDTH/ratios.get(1), (MAX_HEIGHT-GAP)/2.0f)), MIN_HEIGHT/2f); - result.width=Math.round(maxW); - result.height=Math.round(h*2+marginH); + result.width=MAX_WIDTH; + result.height=Math.round(h*2+GAP); result.columnSizes=new int[]{result.width}; result.rowSizes=new int[]{Math.round(h), Math.round(h)}; result.tiles=new TiledLayoutResult.Tile[]{ - new TiledLayoutResult.Tile(1, 1, maxW, h, 0, 0), - new TiledLayoutResult.Tile(1, 1, maxW, h, 0, 1) + new TiledLayoutResult.Tile(1, 1, 0, 0), + new TiledLayoutResult.Tile(1, 1, 0, 1) }; - }else if(orients.equals("ww") || orients.equals("qq")){ // next to each other, same ratio - float w=((maxW-marginW)/2); - float h=Math.min(w/ratios.get(0), Math.min(w/ratios.get(1), maxH)); + }else if(allAreWide || allAreSquare){ // next to each other, same ratio + float w=((MAX_WIDTH-GAP)/2); + float h=Math.max(Math.min(w/ratios.get(0), Math.min(w/ratios.get(1), MAX_HEIGHT)), MIN_HEIGHT); - result.width=Math.round(maxW); + result.width=MAX_WIDTH; result.height=Math.round(h); - result.columnSizes=new int[]{Math.round(w), _maxW-Math.round(w)}; + result.columnSizes=new int[]{Math.round(w), MAX_WIDTH-Math.round(w)}; result.rowSizes=new int[]{Math.round(h)}; result.tiles=new TiledLayoutResult.Tile[]{ - new TiledLayoutResult.Tile(1, 1, w, h, 0, 0), - new TiledLayoutResult.Tile(1, 1, w, h, 1, 0) + new TiledLayoutResult.Tile(1, 1, 0, 0), + new TiledLayoutResult.Tile(1, 1, 1, 0) }; }else{ // next to each other, different ratios - float w0=((maxW-marginW)/ratios.get(1)/(1/ratios.get(0)+1/ratios.get(1))); - float w1=(maxW-w0-marginW); - float h=Math.min(maxH, Math.min(w0/ratios.get(0), w1/ratios.get(1))); + float w0=((MAX_WIDTH-GAP)/ratios.get(1)/(1/ratios.get(0)+1/ratios.get(1))); + float w1=(MAX_WIDTH-w0-GAP); + float h=Math.max(Math.min(MAX_HEIGHT, Math.min(w0/ratios.get(0), w1/ratios.get(1))), MIN_HEIGHT); result.columnSizes=new int[]{Math.round(w0), Math.round(w1)}; result.rowSizes=new int[]{Math.round(h)}; - result.width=Math.round(w0+w1+marginW); + result.width=Math.round(w0+w1+GAP); result.height=Math.round(h); result.tiles=new TiledLayoutResult.Tile[]{ - new TiledLayoutResult.Tile(1, 1, w0, h, 0, 0), - new TiledLayoutResult.Tile(1, 1, w1, h, 1, 0) + new TiledLayoutResult.Tile(1, 1, 0, 0), + new TiledLayoutResult.Tile(1, 1, 1, 0) }; } }else if(cnt==3){ - if(/*(ratios.get(0) > 1.2 * maxRatio || avgRatio > 1.5 * maxRatio) &&*/ orients.equals("www") || true){ // 2nd and 3rd photos are on the next line - float hCover=Math.min(maxW/ratios.get(0), (maxH-marginH)*0.66f); - float w2=((maxW-marginW)/2); - float h=Math.min(maxH-hCover-marginH, Math.min(w2/ratios.get(1), w2/ratios.get(2))); - result.width=Math.round(maxW); - result.height=Math.round(hCover+h+marginH); - result.columnSizes=new int[]{Math.round(w2), _maxW-Math.round(w2)}; + if((ratios.get(0) > 1.2 * maxRatio || avgRatio > 1.5 * maxRatio) || allAreWide){ // 2nd and 3rd photos are on the next line + float hCover=Math.min(MAX_WIDTH/ratios.get(0), (MAX_HEIGHT-GAP)*0.66f); + float w2=((MAX_WIDTH-GAP)/2); + float h=Math.min(MAX_HEIGHT-hCover-GAP, Math.min(w2/ratios.get(1), w2/ratios.get(2))); + if(hCover+h 1.2 * maxRatio || avgRatio > 1.5 * maxRatio) &&*/ orients.equals("wwww") || true /* temporary fix */){ // 2nd, 3rd and 4th photos are on the next line - float hCover=Math.min(maxW/ratios.get(0), (maxH-marginH)*0.66f); - float h=(maxW-2*marginW)/(ratios.get(1)+ratios.get(2)+ratios.get(3)); + if((ratios.get(0) > 1.2 * maxRatio || avgRatio > 1.5 * maxRatio) || allAreWide){ // 2nd, 3rd and 4th photos are on the next line + float hCover=Math.min(MAX_WIDTH/ratios.get(0), (MAX_HEIGHT-GAP)*0.66f); + float h=(MAX_WIDTH-2*GAP)/(ratios.get(1)+ratios.get(2)+ratios.get(3)); float w0=h*ratios.get(1); float w1=h*ratios.get(2); float w2=h*ratios.get(3); - h=Math.min(maxH-hCover-marginH, h); - result.width=Math.round(maxW); - result.height=Math.round(hCover+h+marginH); - result.columnSizes=new int[]{Math.round(w0), Math.round(w1), _maxW-Math.round(w0)-Math.round(w1)}; + h=Math.min(MAX_HEIGHT-hCover-GAP, h); + if(hCover+h tries=new HashMap<>(); // One line - int firstLine, secondLine, thirdLine; - tries.put(new int[]{firstLine=cnt}, new float[]{calculateMultiThumbsHeight(ratiosCropped, maxW, marginW)}); + int firstLine, secondLine; + tries.put(new int[]{cnt}, new float[]{calculateMultiThumbsHeight(ratiosCropped, MAX_WIDTH, GAP)}); // Two lines for(firstLine=1; firstLine<=cnt-1; firstLine++){ - tries.put(new int[]{firstLine, secondLine=cnt-firstLine}, new float[]{ - calculateMultiThumbsHeight(ratiosCropped.subList(0, firstLine), maxW, marginW), - calculateMultiThumbsHeight(ratiosCropped.subList(firstLine, ratiosCropped.size()), maxW, marginW) + tries.put(new int[]{firstLine, cnt-firstLine}, new float[]{ + calculateMultiThumbsHeight(ratiosCropped.subList(0, firstLine), MAX_WIDTH, GAP), + calculateMultiThumbsHeight(ratiosCropped.subList(firstLine, ratiosCropped.size()), MAX_WIDTH, GAP) } ); } @@ -189,23 +202,24 @@ public class PhotoLayoutHelper{ // Three lines for(firstLine=1; firstLine<=cnt-2; firstLine++){ for(secondLine=1; secondLine<=cnt-firstLine-1; secondLine++){ - tries.put(new int[]{firstLine, secondLine, thirdLine=cnt-firstLine-secondLine}, new float[]{ - calculateMultiThumbsHeight(ratiosCropped.subList(0, firstLine), maxW, marginW), - calculateMultiThumbsHeight(ratiosCropped.subList(firstLine, firstLine+secondLine), maxW, marginW), - calculateMultiThumbsHeight(ratiosCropped.subList(firstLine+secondLine, ratiosCropped.size()), maxW, marginW) + tries.put(new int[]{firstLine, secondLine, cnt-firstLine-secondLine}, new float[]{ + calculateMultiThumbsHeight(ratiosCropped.subList(0, firstLine), MAX_WIDTH, GAP), + calculateMultiThumbsHeight(ratiosCropped.subList(firstLine, firstLine+secondLine), MAX_WIDTH, GAP), + calculateMultiThumbsHeight(ratiosCropped.subList(firstLine+secondLine, ratiosCropped.size()), MAX_WIDTH, GAP) } ); } } - // Looking for minimum difference between thumbs block height and maxH (may probably be little over) + // Looking for minimum difference between thumbs block height and maxHeight (may probably be little over) + final int realMaxHeight=Math.min(MAX_HEIGHT, MAX_WIDTH); int[] optConf=null; float optDiff=0; for(int[] conf : tries.keySet()){ float[] heights=tries.get(conf); - float confH=marginH*(heights.length-1); + float confH=GAP*(heights.length-1); for(float h : heights) confH+=h; - float confDiff=Math.abs(confH-maxH); + float confDiff=Math.abs(confH-realMaxHeight); if(conf.length>1){ if(conf[0]>conf[1] || conf.length>2 && conf[1]>conf[2]){ confDiff*=1.1; @@ -222,7 +236,7 @@ public class PhotoLayoutHelper{ float[] optHeights=tries.get(optConf); int k=0; - result.width=Math.round(maxW); + result.width=MAX_WIDTH; result.rowSizes=new int[optHeights.length]; result.tiles=new TiledLayoutResult.Tile[thumbs.size()]; float totalHeight=0f; @@ -240,11 +254,11 @@ public class PhotoLayoutHelper{ ArrayList row=new ArrayList<>(); for(int j=0; j0; i--){ @@ -276,7 +290,7 @@ public class PhotoLayoutHelper{ columnOffset+=tile.colSpan; } } - result.height=Math.round(totalHeight+marginH*(optHeights.length-1)); + result.height=Math.round(totalHeight+GAP*(optHeights.length-1)); } return result; @@ -310,19 +324,19 @@ public class PhotoLayoutHelper{ } public static class Tile{ - public int colSpan, rowSpan, width, height, startCol, startRow; + public int colSpan, rowSpan, startCol, startRow; + public int width; - public Tile(int colSpan, int rowSpan, int width, int height, int startCol, int startRow){ + public Tile(int colSpan, int rowSpan, int startCol, int startRow){ this.colSpan=colSpan; this.rowSpan=rowSpan; - this.width=width; - this.height=height; this.startCol=startCol; this.startRow=startRow; } - public Tile(int colSpan, int rowSpan, float width, float height, int startCol, int startRow){ - this(colSpan, rowSpan, Math.round(width), Math.round(height), startCol, startRow); + public Tile(int colSpan, int rowSpan, int startCol, int startRow, int width){ + this(colSpan, rowSpan, startCol, startRow); + this.width=width; } @Override @@ -330,8 +344,8 @@ public class PhotoLayoutHelper{ return "Tile{"+ "colSpan="+colSpan+ ", rowSpan="+rowSpan+ - ", width="+width+ - ", height="+height+ + ", startCol="+startCol+ + ", startRow="+startRow+ '}'; } } diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/views/MediaGridLayout.java b/mastodon/src/main/java/org/joinmastodon/android/ui/views/MediaGridLayout.java index 7d6c49624..4f9cbbed6 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/views/MediaGridLayout.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/views/MediaGridLayout.java @@ -13,7 +13,7 @@ import me.grishka.appkit.utils.V; public class MediaGridLayout extends ViewGroup{ private static final String TAG="MediaGridLayout"; - private static final int GAP=1; // dp + private static final int GAP=2; // dp private PhotoLayoutHelper.TiledLayoutResult tiledLayout; private int[] columnStarts=new int[10], columnEnds=new int[10], rowStarts=new int[10], rowEnds=new int[10]; @@ -37,6 +37,9 @@ public class MediaGridLayout extends ViewGroup{ } int width=Math.min(UiUtils.MAX_WIDTH, MeasureSpec.getSize(widthMeasureSpec)); int height=Math.round(width*(tiledLayout.height/(float)PhotoLayoutHelper.MAX_WIDTH)); + if(tiledLayout.widthUiUtils.MAX_WIDTH){ - xOffset=(r-l)/2-UiUtils.MAX_WIDTH/2; + if(r-l>maxWidth){ + xOffset=(r-l)/2-maxWidth/2; } for(int i=0;i Date: Mon, 12 Jun 2023 19:10:22 +0200 Subject: [PATCH 64/76] New translations strings.xml (Persian) --- mastodon/src/main/res/values-fa-rIR/strings.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/mastodon/src/main/res/values-fa-rIR/strings.xml b/mastodon/src/main/res/values-fa-rIR/strings.xml index 2c6b6ff12..332e8c711 100644 --- a/mastodon/src/main/res/values-fa-rIR/strings.xml +++ b/mastodon/src/main/res/values-fa-rIR/strings.xml @@ -126,10 +126,15 @@ افزودن نظرسنجی ایموجی نمایه من + پی‌گیری %s + پی‌نگرفتن ‎%s + بازکردن در مرورگر پاک‌کردن بارگیری باز کردن تنظیمات + پرونده ذخیره شد درحال بارگیری… + اجتماع پی‌گیرتان است From c005e9bf181093a16f114b4dc7efca25d44ccdba Mon Sep 17 00:00:00 2001 From: sk Date: Mon, 12 Jun 2023 19:43:13 +0200 Subject: [PATCH 65/76] apply upstream alt overlay changes --- .../displayitems/MediaGridStatusDisplayItem.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/MediaGridStatusDisplayItem.java b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/MediaGridStatusDisplayItem.java index 18a21af39..bbc631aaa 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/MediaGridStatusDisplayItem.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/MediaGridStatusDisplayItem.java @@ -10,6 +10,7 @@ import android.app.Activity; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.text.TextUtils; +import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.view.ViewTreeObserver; @@ -25,7 +26,9 @@ import org.joinmastodon.android.model.Status; import org.joinmastodon.android.ui.PhotoLayoutHelper; import org.joinmastodon.android.ui.photoviewer.PhotoViewerHost; import org.joinmastodon.android.ui.utils.MediaAttachmentViewController; +import org.joinmastodon.android.ui.utils.UiUtils; import org.joinmastodon.android.ui.views.FrameLayoutThatOnlyMeasuresFirstChild; +import org.joinmastodon.android.ui.views.MaxWidthFrameLayout; import org.joinmastodon.android.ui.views.MediaGridLayout; import org.joinmastodon.android.utils.TypedObjectPool; @@ -88,6 +91,7 @@ public class MediaGridStatusDisplayItem extends StatusDisplayItem{ private final View.OnClickListener clickListener=this::onViewClick, altTextClickListener=this::onAltTextClick; private final ArrayList controllers=new ArrayList<>(); + private final MaxWidthFrameLayout overlays; private final FrameLayout altTextWrapper; private final TextView altTextButton; private final ImageView noAltTextButton; @@ -105,8 +109,13 @@ public class MediaGridStatusDisplayItem extends StatusDisplayItem{ wrapper=(FrameLayout)itemView; layout=new MediaGridLayout(activity); wrapper.addView(layout); + wrapper.setClipToPadding(false); - activity.getLayoutInflater().inflate(R.layout.overlay_image_alt_text, wrapper); + overlays=new MaxWidthFrameLayout(activity); + overlays.setMaxWidth(UiUtils.MAX_WIDTH); + wrapper.addView(overlays, new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT, Gravity.CENTER_HORIZONTAL)); + + activity.getLayoutInflater().inflate(R.layout.overlay_image_alt_text, overlays); altTextWrapper=findViewById(R.id.alt_text_wrapper); altTextButton=findViewById(R.id.alt_button); noAltTextButton=findViewById(R.id.no_alt_button); @@ -215,7 +224,7 @@ public class MediaGridStatusDisplayItem extends StatusDisplayItem{ int[] loc={0, 0}; v.getLocationInWindow(loc); int btnL=loc[0], btnT=loc[1]; - wrapper.getLocationInWindow(loc); + overlays.getLocationInWindow(loc); btnL-=loc[0]; btnT-=loc[1]; @@ -278,7 +287,7 @@ public class MediaGridStatusDisplayItem extends StatusDisplayItem{ int[] loc={0, 0}; btn.getLocationInWindow(loc); int btnL=loc[0], btnT=loc[1]; - wrapper.getLocationInWindow(loc); + overlays.getLocationInWindow(loc); btnL-=loc[0]; btnT-=loc[1]; From 888cee4556e66144857a386da5a7c9415cb67683 Mon Sep 17 00:00:00 2001 From: Andrewblasco Date: Mon, 12 Jun 2023 17:11:23 +0000 Subject: [PATCH 66/76] Translated using Weblate (Spanish) Currently translated at 100.0% (305 of 305 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/ --- mastodon/src/main/res/values-es-rES/strings_sk.xml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/mastodon/src/main/res/values-es-rES/strings_sk.xml b/mastodon/src/main/res/values-es-rES/strings_sk.xml index 5bccb3515..db33576db 100644 --- a/mastodon/src/main/res/values-es-rES/strings_sk.xml +++ b/mastodon/src/main/res/values-es-rES/strings_sk.xml @@ -245,9 +245,9 @@ Glitch modo sólo local Habilita esta opción si tu instancia local funciona con Glitch. No es necesario para Hometown o Akkoma. registrado - reportado + denunciado Registro de usuarios - Nuevos informes + Nuevas denuncias Versión de servidor: %s Resultado de encuestas Filtrado: %s @@ -256,7 +256,7 @@ Minimizar publicaciones largas ¿Corregir adjuntos\? Algunos adjuntos no han terminado de subirse. - Añadir \"re:\" a respuestas a Advertencias de Contenido + Añadir \"re:\" a Advertencias de Contenido para Modo espectador Ocultar los botones de interacción Seguir desde otra cuenta @@ -301,4 +301,8 @@ No se pudo cargar el perfil a través de %s Cargar la información desde las instancias remotas Intenta obtener listas más precisas de seguidores, Me gusta y promociones cargando la información desde la instancia de origen. + Todas + Ninguna + A otros + \"Reenviar denuncia\" activado por defecto \ No newline at end of file From a2f0fc8c87595b92babea9839c1eaccbd4589414 Mon Sep 17 00:00:00 2001 From: Andrewblasco Date: Mon, 12 Jun 2023 17:19:29 +0000 Subject: [PATCH 67/76] Translated using Weblate (Spanish) Currently translated at 100.0% (18 of 18 strings) Translation: Megalodon/metadata Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/es/ --- metadata/es/changelogs/93.txt | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 metadata/es/changelogs/93.txt diff --git a/metadata/es/changelogs/93.txt b/metadata/es/changelogs/93.txt new file mode 100644 index 000000000..e7efcb5db --- /dev/null +++ b/metadata/es/changelogs/93.txt @@ -0,0 +1,8 @@ +- Visualización de hilos mejorada y más clara +- Abre cuentas/publicaciones compartiendo una web con Megalodon +- Carga seguidores, favoritos etc. desde la instancia de origen +- Mejoras de compatibilidad con servidores no-Mastodon +- Opción para configurar el tipo de contenido en las publicaciones +- Soporte para copiar una URL desde la vista de Apps recientes en dispositivos Pixel +- Se muestran los Avisos de Contenido iguales automáticamente en hilos +- Corrección de errores y mejoras en la interfaz From 172515ba0aee22ea07732f074300cf34788ee568 Mon Sep 17 00:00:00 2001 From: EndermanCo Date: Mon, 12 Jun 2023 17:06:56 +0000 Subject: [PATCH 68/76] Translated using Weblate (Persian) Currently translated at 23.2% (71 of 305 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fa/ --- mastodon/src/main/res/values-fa/strings_sk.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mastodon/src/main/res/values-fa/strings_sk.xml b/mastodon/src/main/res/values-fa/strings_sk.xml index daf887c66..9a1a43bbe 100644 --- a/mastodon/src/main/res/values-fa/strings_sk.xml +++ b/mastodon/src/main/res/values-fa/strings_sk.xml @@ -67,4 +67,7 @@ مگالودون %s بارگیری شده و آماده نصب است. اجازه انتخاب های متعدد باز کردن با حساب دیگر + حذف پیش نویس + پیش‌نویس + پیش نویس ذخیره شد \ No newline at end of file From 09ed3c647a919157fcb155b3937935fc7b44710d Mon Sep 17 00:00:00 2001 From: sk Date: Mon, 12 Jun 2023 20:25:12 +0200 Subject: [PATCH 69/76] reduce max height for photos --- .../java/org/joinmastodon/android/ui/PhotoLayoutHelper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/PhotoLayoutHelper.java b/mastodon/src/main/java/org/joinmastodon/android/ui/PhotoLayoutHelper.java index 7ea073bed..f6544b879 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/PhotoLayoutHelper.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/PhotoLayoutHelper.java @@ -12,7 +12,7 @@ import androidx.annotation.NonNull; public class PhotoLayoutHelper{ public static final int MAX_WIDTH=1000; - public static final int MAX_HEIGHT=1777; // 9:16 + public static final int MAX_HEIGHT=1400; public static final int MIN_HEIGHT=250; public static final float GAP=1.5f; From 2e090101515948f1905b6ffea9508c2731b1b151 Mon Sep 17 00:00:00 2001 From: sk Date: Mon, 12 Jun 2023 20:44:25 +0200 Subject: [PATCH 70/76] boop version --- mastodon/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mastodon/build.gradle b/mastodon/build.gradle index 0e8509c15..8ae30e085 100644 --- a/mastodon/build.gradle +++ b/mastodon/build.gradle @@ -15,8 +15,8 @@ android { applicationId "org.joinmastodon.android.sk" minSdk 23 targetSdk 33 - versionCode 92 - versionName "1.2.3+fork.92" + versionCode 93 + versionName "1.2.3+fork.93" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" resourceConfigurations += ['ar-rSA', 'ar-rDZ', 'be-rBY', 'bn-rBD', 'bs-rBA', 'ca-rES', 'cs-rCZ', 'da-rDK', 'de-rDE', 'el-rGR', 'es-rES', 'eu-rES', 'fa-rIR', 'fi-rFI', 'fil-rPH', 'fr-rFR', 'ga-rIE', 'gd-rGB', 'gl-rES', 'hi-rIN', 'hr-rHR', 'hu-rHU', 'hy-rAM', 'ig-rNG', 'in-rID', 'is-rIS', 'it-rIT', 'iw-rIL', 'ja-rJP', 'kab', 'ko-rKR', 'my-rMM', 'nl-rNL', 'no-rNO', 'oc-rFR', 'pl-rPL', 'pt-rBR', 'pt-rPT', 'ro-rRO', 'ru-rRU', 'si-rLK', 'sl-rSI', 'sv-rSE', 'th-rTH', 'tr-rTR', 'uk-rUA', 'ur-rIN', 'vi-rVN', 'zh-rCN', 'zh-rTW'] } From e3199c009e572f17ec850f23630d6a232e2a10e0 Mon Sep 17 00:00:00 2001 From: sk Date: Tue, 13 Jun 2023 09:47:48 +0200 Subject: [PATCH 71/76] hopefully fix typetoken crashes --- mastodon/proguard-rules.pro | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mastodon/proguard-rules.pro b/mastodon/proguard-rules.pro index 506be84e2..b0d2ee44d 100644 --- a/mastodon/proguard-rules.pro +++ b/mastodon/proguard-rules.pro @@ -46,3 +46,7 @@ -keep interface org.parceler.Parcel -keep @org.parceler.Parcel class * { *; } -keep class **$$Parcelable { *; } + +-keep class com.google.gson.reflect.TypeToken +-keep class * extends com.google.gson.reflect.TypeToken +-keep public class * implements java.lang.reflect.Type From 08dc122b6befdf5efb5ad620e9a32a98ff4bf5e8 Mon Sep 17 00:00:00 2001 From: sk Date: Tue, 13 Jun 2023 10:07:30 +0200 Subject: [PATCH 72/76] tweak min/max heights --- .../org/joinmastodon/android/ui/PhotoLayoutHelper.java | 8 ++++++-- mastodon/src/main/res/layout/overlay_image_alt_text.xml | 3 ++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/PhotoLayoutHelper.java b/mastodon/src/main/java/org/joinmastodon/android/ui/PhotoLayoutHelper.java index f6544b879..86e1962ce 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/PhotoLayoutHelper.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/PhotoLayoutHelper.java @@ -10,12 +10,16 @@ import java.util.List; import androidx.annotation.NonNull; +import me.grishka.appkit.utils.V; + public class PhotoLayoutHelper{ public static final int MAX_WIDTH=1000; - public static final int MAX_HEIGHT=1400; - public static final int MIN_HEIGHT=250; + public static final int MAX_HEIGHT=1700; public static final float GAP=1.5f; + // 2 * margin + close button height - gap. i don't know if the gap subtraction is correct + public static final int MIN_HEIGHT = Math.round(V.dp(2 * 12) + V.dp(40) - GAP); + @NonNull public static TiledLayoutResult processThumbs(List thumbs){ float maxRatio=MAX_WIDTH/(float)MAX_HEIGHT; diff --git a/mastodon/src/main/res/layout/overlay_image_alt_text.xml b/mastodon/src/main/res/layout/overlay_image_alt_text.xml index 713926ea8..ff7ed747d 100644 --- a/mastodon/src/main/res/layout/overlay_image_alt_text.xml +++ b/mastodon/src/main/res/layout/overlay_image_alt_text.xml @@ -43,7 +43,8 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" - android:layout_marginEnd="40dp"> + android:layout_marginEnd="40dp" + android:minWidth="40dp"> Date: Tue, 13 Jun 2023 10:19:13 +0200 Subject: [PATCH 73/76] boop version --- mastodon/build.gradle | 4 ++-- metadata/de-DE/changelogs/{93.txt => 94.txt} | 0 metadata/en-US/changelogs/{93.txt => 94.txt} | 0 metadata/es/changelogs/{93.txt => 94.txt} | 0 4 files changed, 2 insertions(+), 2 deletions(-) rename metadata/de-DE/changelogs/{93.txt => 94.txt} (100%) rename metadata/en-US/changelogs/{93.txt => 94.txt} (100%) rename metadata/es/changelogs/{93.txt => 94.txt} (100%) diff --git a/mastodon/build.gradle b/mastodon/build.gradle index 8ae30e085..25cd20f2c 100644 --- a/mastodon/build.gradle +++ b/mastodon/build.gradle @@ -15,8 +15,8 @@ android { applicationId "org.joinmastodon.android.sk" minSdk 23 targetSdk 33 - versionCode 93 - versionName "1.2.3+fork.93" + versionCode 94 + versionName "1.2.3+fork.94" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" resourceConfigurations += ['ar-rSA', 'ar-rDZ', 'be-rBY', 'bn-rBD', 'bs-rBA', 'ca-rES', 'cs-rCZ', 'da-rDK', 'de-rDE', 'el-rGR', 'es-rES', 'eu-rES', 'fa-rIR', 'fi-rFI', 'fil-rPH', 'fr-rFR', 'ga-rIE', 'gd-rGB', 'gl-rES', 'hi-rIN', 'hr-rHR', 'hu-rHU', 'hy-rAM', 'ig-rNG', 'in-rID', 'is-rIS', 'it-rIT', 'iw-rIL', 'ja-rJP', 'kab', 'ko-rKR', 'my-rMM', 'nl-rNL', 'no-rNO', 'oc-rFR', 'pl-rPL', 'pt-rBR', 'pt-rPT', 'ro-rRO', 'ru-rRU', 'si-rLK', 'sl-rSI', 'sv-rSE', 'th-rTH', 'tr-rTR', 'uk-rUA', 'ur-rIN', 'vi-rVN', 'zh-rCN', 'zh-rTW'] } diff --git a/metadata/de-DE/changelogs/93.txt b/metadata/de-DE/changelogs/94.txt similarity index 100% rename from metadata/de-DE/changelogs/93.txt rename to metadata/de-DE/changelogs/94.txt diff --git a/metadata/en-US/changelogs/93.txt b/metadata/en-US/changelogs/94.txt similarity index 100% rename from metadata/en-US/changelogs/93.txt rename to metadata/en-US/changelogs/94.txt diff --git a/metadata/es/changelogs/93.txt b/metadata/es/changelogs/94.txt similarity index 100% rename from metadata/es/changelogs/93.txt rename to metadata/es/changelogs/94.txt From 22f5667549c1d56445806519e2aade78771bf236 Mon Sep 17 00:00:00 2001 From: sk Date: Tue, 13 Jun 2023 11:50:57 +0200 Subject: [PATCH 74/76] fix javadoc --- .../src/main/java/org/joinmastodon/android/model/BaseModel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/model/BaseModel.java b/mastodon/src/main/java/org/joinmastodon/android/model/BaseModel.java index 051be6240..fc67a71fc 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/model/BaseModel.java +++ b/mastodon/src/main/java/org/joinmastodon/android/model/BaseModel.java @@ -15,7 +15,7 @@ public abstract class BaseModel implements Cloneable{ /** * indicates the profile has been fetched from a foreign instance. * - * @see MastodonAPIRequest#execRemote + * @see org.joinmastodon.android.api.MastodonAPIRequest#execRemote */ public transient boolean isRemote; From 91b9fdf5ce991daaedd029d52edab030de6d8dc9 Mon Sep 17 00:00:00 2001 From: sk Date: Tue, 13 Jun 2023 12:13:55 +0200 Subject: [PATCH 75/76] add gson proguard rules --- mastodon/proguard-rules.pro | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/mastodon/proguard-rules.pro b/mastodon/proguard-rules.pro index b0d2ee44d..cf75550f0 100644 --- a/mastodon/proguard-rules.pro +++ b/mastodon/proguard-rules.pro @@ -47,6 +47,35 @@ -keep @org.parceler.Parcel class * { *; } -keep class **$$Parcelable { *; } --keep class com.google.gson.reflect.TypeToken --keep class * extends com.google.gson.reflect.TypeToken --keep public class * implements java.lang.reflect.Type +##---------------Begin: proguard configuration for Gson ---------- +# Gson uses generic type information stored in a class file when working with fields. Proguard +# removes such information by default, so configure it to keep all of it. +-keepattributes Signature + +# For using GSON @Expose annotation +-keepattributes *Annotation* + +# Gson specific classes +-dontwarn sun.misc.** +#-keep class com.google.gson.stream.** { *; } + +# Application classes that will be serialized/deserialized over Gson +-keep class com.google.gson.examples.android.model.** { ; } + +# Prevent proguard from stripping interface information from TypeAdapter, TypeAdapterFactory, +# JsonSerializer, JsonDeserializer instances (so they can be used in @JsonAdapter) +-keep class * extends com.google.gson.TypeAdapter +-keep class * implements com.google.gson.TypeAdapterFactory +-keep class * implements com.google.gson.JsonSerializer +-keep class * implements com.google.gson.JsonDeserializer + +# Prevent R8 from leaving Data object members always null +-keepclassmembers,allowobfuscation class * { + @com.google.gson.annotations.SerializedName ; +} + +# Retain generic signatures of TypeToken and its subclasses with R8 version 3.0 and higher. +-keep,allowobfuscation,allowshrinking class com.google.gson.reflect.TypeToken +-keep,allowobfuscation,allowshrinking class * extends com.google.gson.reflect.TypeToken + +##---------------End: proguard configuration for Gson ---------- From 3af7518cf4422c315bda148c9ad3f7561e0eac06 Mon Sep 17 00:00:00 2001 From: sk Date: Tue, 13 Jun 2023 12:20:03 +0200 Subject: [PATCH 76/76] disable proguard for now :/ --- mastodon/build.gradle | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/mastodon/build.gradle b/mastodon/build.gradle index 25cd20f2c..ae2820599 100644 --- a/mastodon/build.gradle +++ b/mastodon/build.gradle @@ -15,8 +15,8 @@ android { applicationId "org.joinmastodon.android.sk" minSdk 23 targetSdk 33 - versionCode 94 - versionName "1.2.3+fork.94" + versionCode 95 + versionName "1.2.3+fork.95" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" resourceConfigurations += ['ar-rSA', 'ar-rDZ', 'be-rBY', 'bn-rBD', 'bs-rBA', 'ca-rES', 'cs-rCZ', 'da-rDK', 'de-rDE', 'el-rGR', 'es-rES', 'eu-rES', 'fa-rIR', 'fi-rFI', 'fil-rPH', 'fr-rFR', 'ga-rIE', 'gd-rGB', 'gl-rES', 'hi-rIN', 'hr-rHR', 'hu-rHU', 'hy-rAM', 'ig-rNG', 'in-rID', 'is-rIS', 'it-rIT', 'iw-rIL', 'ja-rJP', 'kab', 'ko-rKR', 'my-rMM', 'nl-rNL', 'no-rNO', 'oc-rFR', 'pl-rPL', 'pt-rBR', 'pt-rPT', 'ro-rRO', 'ru-rRU', 'si-rLK', 'sl-rSI', 'sv-rSE', 'th-rTH', 'tr-rTR', 'uk-rUA', 'ur-rIN', 'vi-rVN', 'zh-rCN', 'zh-rTW'] } @@ -37,8 +37,9 @@ android { } playRelease{ initWith release - minifyEnabled true - shrinkResources true + // TODO: fix proguard rules and re-enable these +// minifyEnabled true +// shrinkResources true versionNameSuffix '-play' } }