From b6186a349fce4efc7fd8f49795fadfa304257f18 Mon Sep 17 00:00:00 2001 From: sk Date: Thu, 20 Apr 2023 16:03:57 +0200 Subject: [PATCH 01/29] update gradle --- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 2 +- mastodon/build.gradle | 5 +++-- mastodon/src/github/AndroidManifest.xml | 3 +-- mastodon/src/main/AndroidManifest.xml | 3 +-- 5 files changed, 7 insertions(+), 8 deletions(-) diff --git a/build.gradle b/build.gradle index d426d29b9..a32966dc8 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:7.3.1' + classpath 'com.android.tools.build:gradle:7.4.2' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 112a498f8..e17ced581 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Thu Jan 13 11:33:43 MSK 2022 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME diff --git a/mastodon/build.gradle b/mastodon/build.gradle index 904e4f6da..727138002 100644 --- a/mastodon/build.gradle +++ b/mastodon/build.gradle @@ -49,9 +49,10 @@ android { setRoot "src/github" } } - lintOptions{ - checkReleaseBuilds false + namespace 'org.joinmastodon.android' + lint { abortOnError false + checkReleaseBuilds false } } diff --git a/mastodon/src/github/AndroidManifest.xml b/mastodon/src/github/AndroidManifest.xml index a75f12de6..5838d1c43 100644 --- a/mastodon/src/github/AndroidManifest.xml +++ b/mastodon/src/github/AndroidManifest.xml @@ -1,6 +1,5 @@ - + diff --git a/mastodon/src/main/AndroidManifest.xml b/mastodon/src/main/AndroidManifest.xml index a30bb3c80..c5ffb97e4 100644 --- a/mastodon/src/main/AndroidManifest.xml +++ b/mastodon/src/main/AndroidManifest.xml @@ -1,6 +1,5 @@ - + From b3a9b5824dd871f2e9ecb601638ddae832574b67 Mon Sep 17 00:00:00 2001 From: sk Date: Sat, 22 Apr 2023 16:29:41 +0200 Subject: [PATCH 02/29] fix non-positional subtitution in string --- mastodon/src/main/res/values-ca-rES/strings_sk.xml | 2 +- mastodon/src/main/res/values-cy/strings_sk.xml | 2 +- mastodon/src/main/res/values-de-rDE/strings_sk.xml | 2 +- mastodon/src/main/res/values-es-rES/strings_sk.xml | 2 +- mastodon/src/main/res/values-eu-rES/strings_sk.xml | 2 +- mastodon/src/main/res/values-fr-rFR/strings_sk.xml | 2 +- mastodon/src/main/res/values-gl-rES/strings_sk.xml | 2 +- mastodon/src/main/res/values-hu-rHU/strings_sk.xml | 2 +- mastodon/src/main/res/values-in-rID/strings_sk.xml | 2 +- mastodon/src/main/res/values-it-rIT/strings_sk.xml | 2 +- mastodon/src/main/res/values-ko-rKR/strings_sk.xml | 2 +- mastodon/src/main/res/values-my/strings_sk.xml | 2 +- mastodon/src/main/res/values-nl-rNL/strings_sk.xml | 2 +- mastodon/src/main/res/values-pl-rPL/strings_sk.xml | 2 +- mastodon/src/main/res/values-pt-rBR/strings_sk.xml | 2 +- mastodon/src/main/res/values-ru-rRU/strings_sk.xml | 2 +- mastodon/src/main/res/values-sl-rSI/strings_sk.xml | 2 +- mastodon/src/main/res/values-uk-rUA/strings_sk.xml | 2 +- mastodon/src/main/res/values-zh-rCN/strings_sk.xml | 2 +- mastodon/src/main/res/values-zh-rTW/strings_sk.xml | 2 +- mastodon/src/main/res/values/strings_sk.xml | 2 +- 21 files changed, 21 insertions(+), 21 deletions(-) diff --git a/mastodon/src/main/res/values-ca-rES/strings_sk.xml b/mastodon/src/main/res/values-ca-rES/strings_sk.xml index abcebd6c1..3f56e760e 100644 --- a/mastodon/src/main/res/values-ca-rES/strings_sk.xml +++ b/mastodon/src/main/res/values-ca-rES/strings_sk.xml @@ -69,7 +69,7 @@ Traduït amb %s Llengua: %s Llengües disponibles - %s (%s) + %1$s (%2$s) Segur que vols esborrar les llengües recents\? El tauró et saluda! Per a començar, introdueix el domini de la instància a continuació. Desactiva el desplaçament entre pestanyes diff --git a/mastodon/src/main/res/values-cy/strings_sk.xml b/mastodon/src/main/res/values-cy/strings_sk.xml index 37c91af2e..972316ea4 100644 --- a/mastodon/src/main/res/values-cy/strings_sk.xml +++ b/mastodon/src/main/res/values-cy/strings_sk.xml @@ -40,7 +40,7 @@ Dim diweddariad ar gael Gwirio am ddiweddariad Caniatáu mwy nag un dewis - %s (%s) + %1$s (%2$s) Analluogi llusgo rhwng tabiau Dewisiadau postio Rheolau 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 ae19fb02b..627c46d68 100644 --- a/mastodon/src/main/res/values-de-rDE/strings_sk.xml +++ b/mastodon/src/main/res/values-de-rDE/strings_sk.xml @@ -50,7 +50,7 @@ Mehrfachantworten erlauben Übersetzt mit %s Sprache: %s - %s (%s) + %1$s (%2$s) Sicher, dass du die Liste der zuletzt verwendeten Sprachen leeren willst\? Übersetzen Original anzeigen 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 93fbb61ca..06294a3f6 100644 --- a/mastodon/src/main/res/values-es-rES/strings_sk.xml +++ b/mastodon/src/main/res/values-es-rES/strings_sk.xml @@ -53,7 +53,7 @@ Traducido mediante %s Idioma: %s Idiomas disponibles - %s (%s) + %1$s (%2$s) ¿Seguro que quieres borrar los idiomas usados recientemente\? Borrar idiomas usados recientemente ¡El tiburón te saluda! Para empezar, introduce a continuación el nombre del dominio de tu instancia. diff --git a/mastodon/src/main/res/values-eu-rES/strings_sk.xml b/mastodon/src/main/res/values-eu-rES/strings_sk.xml index 7cf917166..2becb390e 100644 --- a/mastodon/src/main/res/values-eu-rES/strings_sk.xml +++ b/mastodon/src/main/res/values-eu-rES/strings_sk.xml @@ -35,7 +35,7 @@ Lagundu Megalodon %s-ekin itzulia Hizkuntza: %s - %s (%s) + %1$s (%2$s) Beste kontu baten laster-marka %s bezala laster-markara eramana Dagoeneko laster-marka da 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 81abb4f74..2d3d204a8 100644 --- a/mastodon/src/main/res/values-fr-rFR/strings_sk.xml +++ b/mastodon/src/main/res/values-fr-rFR/strings_sk.xml @@ -53,7 +53,7 @@ Traduit en utilisant %s Langue : %s Langues disponibles - %s (%s) + %1$s (%2$s) Êtes-vous sûr de vouloir effacer vos langues récemment utilisées \? Effacer les langues récemment utilisées exemple.social diff --git a/mastodon/src/main/res/values-gl-rES/strings_sk.xml b/mastodon/src/main/res/values-gl-rES/strings_sk.xml index c5a833878..47e008637 100644 --- a/mastodon/src/main/res/values-gl-rES/strings_sk.xml +++ b/mastodon/src/main/res/values-gl-rES/strings_sk.xml @@ -44,7 +44,7 @@ Desactivar desprazamento do texto na barra de título ¡Benvida! Contribúe a Megalodon - %s (%s) + %1$s (%2$s) exemplo.social Idiomas dispoñíbeis Configurar perfil diff --git a/mastodon/src/main/res/values-hu-rHU/strings_sk.xml b/mastodon/src/main/res/values-hu-rHU/strings_sk.xml index 39397a9ab..af5cb9891 100644 --- a/mastodon/src/main/res/values-hu-rHU/strings_sk.xml +++ b/mastodon/src/main/res/values-hu-rHU/strings_sk.xml @@ -39,7 +39,7 @@ Összevont idővonal megjelenítése Biztos, hogy törölni szeretné a nemrég használt nyelveket\? Elérhető nyelvek - %s (%s) + %1$s (%2$s) Csak a megnyitott hozzászólások lefordítása Már reblogoltam Átlogolva mint %s 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 a3f2638d9..6f70a497d 100644 --- a/mastodon/src/main/res/values-in-rID/strings_sk.xml +++ b/mastodon/src/main/res/values-in-rID/strings_sk.xml @@ -53,7 +53,7 @@ Apakah Anda yakin ingin menghapus bahasa terkini yang Anda gunakan\? Sistem Bahasa yang tersedia - %s (%s) + %1$s (%2$s) Terjemahkan Tampilkan yang asli Bahasa: %s 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 ad00a1c79..e853b6f4a 100644 --- a/mastodon/src/main/res/values-it-rIT/strings_sk.xml +++ b/mastodon/src/main/res/values-it-rIT/strings_sk.xml @@ -51,7 +51,7 @@ Mostra originale Tradotto con %s Lingua: %s - %s (%s) + %1$s (%2$s) Sei sicuro di voler cancellare le lingue usate di recente\? Cancella le lingue usate di recente Benvenuto! diff --git a/mastodon/src/main/res/values-ko-rKR/strings_sk.xml b/mastodon/src/main/res/values-ko-rKR/strings_sk.xml index b4f54d38b..13c01b5fc 100644 --- a/mastodon/src/main/res/values-ko-rKR/strings_sk.xml +++ b/mastodon/src/main/res/values-ko-rKR/strings_sk.xml @@ -51,7 +51,7 @@ 번역하기 원본 보기 언어: %s - %s (%s) + %1$s (%2$s) %s를 통해 번역함 모든 언어 최근 사용한 언어 지우기 diff --git a/mastodon/src/main/res/values-my/strings_sk.xml b/mastodon/src/main/res/values-my/strings_sk.xml index 6c6b70b30..ef9343e53 100644 --- a/mastodon/src/main/res/values-my/strings_sk.xml +++ b/mastodon/src/main/res/values-my/strings_sk.xml @@ -45,7 +45,7 @@ တခြားအကောင့်ဖြင့် ရီပလိုင်းပြန်မည် %s ဖြင့် ဘာသာပြန်ထားသည် ဘာသာစကား။ ။%s - %s (%s) + %1$s (%2$s) Filter များကို စီစဉ်မည် လုံခြုံရေးဆိုင်ရာ ဆက်တင်များ စည်းကမ်းချက်များ 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 43cc6a141..a7bfef1a6 100644 --- a/mastodon/src/main/res/values-nl-rNL/strings_sk.xml +++ b/mastodon/src/main/res/values-nl-rNL/strings_sk.xml @@ -53,7 +53,7 @@ Bookmark opgeslagen als %s Al als bookmark opgeslagen Als favoriet opgeslagen als %s - %s (%s) + %1$s (%2$s) example.social Antwoord met ander account Zelfde icoon voor alle meldingen diff --git a/mastodon/src/main/res/values-pl-rPL/strings_sk.xml b/mastodon/src/main/res/values-pl-rPL/strings_sk.xml index 7d0bc4e7c..8faf9cf5d 100644 --- a/mastodon/src/main/res/values-pl-rPL/strings_sk.xml +++ b/mastodon/src/main/res/values-pl-rPL/strings_sk.xml @@ -53,7 +53,7 @@ Przetłumaczono przy użyciu %s Język: %s Dostępne języki - %s (%s) + %1$s (%2$s) Czy na pewno chcesz wyczyścić ostatnio użyte języki\? Wyczyść ostatnio użyte języki przykład.social diff --git a/mastodon/src/main/res/values-pt-rBR/strings_sk.xml b/mastodon/src/main/res/values-pt-rBR/strings_sk.xml index 3118836d9..31930c14f 100644 --- a/mastodon/src/main/res/values-pt-rBR/strings_sk.xml +++ b/mastodon/src/main/res/values-pt-rBR/strings_sk.xml @@ -51,7 +51,7 @@ Traduzido usando %s Idioma: %s Idiomas disponíveis - %s (%s) + %1$s (%2$s) Você tem certeza que deseja limpar os idiomas usados recentemente\? Limpar idiomas usados recentemente Notificações de publicações 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 7c02411b8..af2ed2e33 100644 --- a/mastodon/src/main/res/values-ru-rRU/strings_sk.xml +++ b/mastodon/src/main/res/values-ru-rRU/strings_sk.xml @@ -25,7 +25,7 @@ Показать оригинал Переведено через %s Доступные языки - %s (%s) + %1$s (%2$s) Добро пожаловать! example.social Автоматически загружать новые посты diff --git a/mastodon/src/main/res/values-sl-rSI/strings_sk.xml b/mastodon/src/main/res/values-sl-rSI/strings_sk.xml index 07cf120c5..26d5bddca 100644 --- a/mastodon/src/main/res/values-sl-rSI/strings_sk.xml +++ b/mastodon/src/main/res/values-sl-rSI/strings_sk.xml @@ -52,7 +52,7 @@ Barvna paleta Dovoli več izbir Pokaži izvirnik - %s (%s) + %1$s (%2$s) Dobrodošli! primer.social Že dodano med zaznamke 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 cd8f14245..ca688612e 100644 --- a/mastodon/src/main/res/values-uk-rUA/strings_sk.xml +++ b/mastodon/src/main/res/values-uk-rUA/strings_sk.xml @@ -13,7 +13,7 @@ Перекладено за допомогою %s Мова: %s Доступні мови - %s (%s) + %1$s (%2$s) Очистити нещодавно використані мови Завжди розкривати попередження про вміст Дописи diff --git a/mastodon/src/main/res/values-zh-rCN/strings_sk.xml b/mastodon/src/main/res/values-zh-rCN/strings_sk.xml index 96e730d4a..9740dd8e1 100644 --- a/mastodon/src/main/res/values-zh-rCN/strings_sk.xml +++ b/mastodon/src/main/res/values-zh-rCN/strings_sk.xml @@ -57,7 +57,7 @@ 使用 %s 翻译 语言:%s 可用语言 - %s (%s) + %1$s (%2$s) example.social 禁用选项卡之间的滑动 设置个人资料 diff --git a/mastodon/src/main/res/values-zh-rTW/strings_sk.xml b/mastodon/src/main/res/values-zh-rTW/strings_sk.xml index e6449977a..c6f3e1a59 100644 --- a/mastodon/src/main/res/values-zh-rTW/strings_sk.xml +++ b/mastodon/src/main/res/values-zh-rTW/strings_sk.xml @@ -7,7 +7,7 @@ 通過 %s 翻譯 語言: %s 可用語言 - %s (%s) + %1$s (%2$s) 歡迎! Megalodon 釘選 diff --git a/mastodon/src/main/res/values/strings_sk.xml b/mastodon/src/main/res/values/strings_sk.xml index 3e0c5b5fe..60f9fd533 100644 --- a/mastodon/src/main/res/values/strings_sk.xml +++ b/mastodon/src/main/res/values/strings_sk.xml @@ -60,7 +60,7 @@ Translated using %s Language: %s Available languages - %s (%s) + %1$s (%2$s) Clear recently used languages Are you sure you want to clear your recently used languages? Welcome! From aa3d9e7b8fdcb4fac1ad982ebe58db25d3a74bca Mon Sep 17 00:00:00 2001 From: poesty Date: Sun, 26 Mar 2023 03:27:52 +0000 Subject: [PATCH 03/29] Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (272 of 272 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/zh_Hans/ --- .../src/main/res/values-zh-rCN/strings_sk.xml | 78 +++++++++---------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/mastodon/src/main/res/values-zh-rCN/strings_sk.xml b/mastodon/src/main/res/values-zh-rCN/strings_sk.xml index 9740dd8e1..1621f008f 100644 --- a/mastodon/src/main/res/values-zh-rCN/strings_sk.xml +++ b/mastodon/src/main/res/values-zh-rCN/strings_sk.xml @@ -2,29 +2,29 @@ 置顶 删除并重新编辑 - 删除并重新编辑帖文 - 确定要删除并重新编辑此帖文吗? + 删除并重新编辑嘟文 + 确定要删除并重新编辑此嘟文吗? 置顶 - 置顶帖文 - 你确定要在资料页置顶此帖文吗? - 正在置顶帖文… + 置顶嘟文 + 你确定要在资料页置顶此嘟文吗? + 正在置顶嘟文… 取消置顶 - 取消帖文置顶 - 你确定不再置顶此帖文吗? + 取消嘟文置顶 + 你确定不再置顶此嘟文吗? 正在取消置顶… 图片描述 不公开 联邦时间轴 - 这些是互联实例中最新发布的帖文。 + 这些是互联实例中最新发布的嘟文。 Megalodon 显示回复 - 显示转发 - 自动加载新帖文 + 显示转嘟 + 自动加载新嘟文 显示互动次数 Megalodon v%1$s (%2$d) 标记为敏感媒体 - 启用 %s 的帖文通知 - 关闭 %s 的帖文通知 + 启用 %s 的嘟文通知 + 关闭 %s 的嘟文通知 Megalodon %s 已经可以下载了。 Megalodon %s 已下载,准备安装。 检查更新 @@ -45,8 +45,8 @@ - 帖文 - 帖文通知 + 嘟文 + 嘟文通知 翻译 显示原文 允许多选 @@ -82,10 +82,10 @@ 删除所有 你确定要清除所有通知吗? 在联邦宇宙上查找 - 撤销转发 - 转发可见性 - 引用此帖文 - 复制帖文链接 + 撤销转嘟 + 转嘟可见性 + 引用此嘟文 + 复制嘟文链接 你关注的标签 在 %s 上查找 找不到资源 @@ -96,32 +96,32 @@ 用其他账号收藏 已收藏为 %s 已收藏过 - 用其他账号转发 - 已转发为 %s - 已转发过 + 用其他账号转嘟 + 已转嘟为 %s + 已转嘟过 用其他帐号回复 所有通知的统一图标 - 未发送的帖文 + 未发送的嘟文 删除草稿 草稿 定时 - 删除定时帖文 - 你确定要删除此定时帖文吗? + 删除定时嘟文 + 你确定要删除此定时嘟文吗? 草稿或定时 - 帖文将保存为草稿。 + 嘟文将保存为草稿。 定时于 草稿已保存 - 帖文已定时 - 转发给 %s - 你确定要删除此帖文草稿吗? + 嘟文已定时 + 转嘟给 %s + 你确定要删除此嘟文草稿吗? 定时时间过早 - 帖文只能设置为 10 分钟或更晚发送。 + 嘟文只能设置为 10 分钟或更晚发送。 保存为草稿? 保存更改? 保存草稿? 保存更改? 标记为草稿 - 定时帖文 + 定时嘟文 不要定时 不要标记为草稿 减少动画效果 @@ -151,14 +151,14 @@ 本站 至少有一个附件不包含描述。 仍然发布 - 如果你为某些人启用了帖文通知,其新帖文将显示在此处。 + 如果你为某些人启用了嘟文通知,其新嘟文将显示在此处。 时间线 编辑时间线 ALT 编辑 - 编辑帖文 + 编辑嘟文 缺少 ALT 文本 - 帖文 + 嘟文 添加 时间线 列表 @@ -223,7 +223,7 @@ 耳机 人类 地球 - 编辑已转发帖文 + 编辑已转嘟嘟文 钉子 通过屏蔽并立即解除屏蔽以移除%s的关注者身份? 拍板 @@ -248,7 +248,7 @@ 如果你的主实例运行 Glitch,请启用此功能。Hometown 或 Akkoma 不需要启用。 用户注册 新举报 - “查看新帖文” 按钮 + “查看新嘟文” 按钮 服务器版本: %s 投票结果 展开 @@ -256,8 +256,8 @@ 修复附件? 部分附件尚未上传完毕。 已过滤:%s - 折叠很长的帖文 - 在回复带有内容警告的帖文前加上 \"re:\" + 折叠很长的嘟文 + 在回复带有内容警告的嘟文前加上 \"re:\" 旁观模式 隐藏互动按钮 对我的回复 @@ -271,6 +271,6 @@ 对正在关注的回复 已向 %s 发送回复 头像上方的 “回复” 一行 - 紧凑转发/回复行 - 显示同主题帖文 + 紧凑转嘟/回复行 + 显示对话 \ No newline at end of file From cb9c869712fd7a1c7178f17624e18a8ddc2b6ad3 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 26 Mar 2023 09:02:05 +0000 Subject: [PATCH 04/29] Translated using Weblate (Russian) Currently translated at 92.2% (251 of 272 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ru/ --- mastodon/src/main/res/values-ru-rRU/strings_sk.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 af2ed2e33..c6c48cbef 100644 --- a/mastodon/src/main/res/values-ru-rRU/strings_sk.xml +++ b/mastodon/src/main/res/values-ru-rRU/strings_sk.xml @@ -115,7 +115,7 @@ Сохранить изменения\? Пометить как черновик Запланировать публикацию - "Переслать пользователю %s" + Переслать пользователю %s Удалить черновик Удалить запланированную публикацию Публикация будет сохранена в черновики. From 0f53b17515562d1d033d9eec0110c72d89f7e631 Mon Sep 17 00:00:00 2001 From: sk22 Date: Mon, 27 Mar 2023 15:53:42 +0000 Subject: [PATCH 05/29] Translated using Weblate (Spanish) Currently translated at 100.0% (272 of 272 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/ --- mastodon/src/main/res/values-es-rES/strings_sk.xml | 2 +- 1 file changed, 1 insertion(+), 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 06294a3f6..eb38b3267 100644 --- a/mastodon/src/main/res/values-es-rES/strings_sk.xml +++ b/mastodon/src/main/res/values-es-rES/strings_sk.xml @@ -262,7 +262,7 @@ Seguir desde otra cuenta Seguido desde %s Ocultar automáticamente el botón Redactar - Respondiendo a + En respuesta Citando %s Visibilidad de la respuesta Todas las respuestas From ba85d185747587e54a7b24656fa48ded7d495022 Mon Sep 17 00:00:00 2001 From: AiOO Date: Tue, 4 Apr 2023 15:58:37 +0000 Subject: [PATCH 06/29] Translated using Weblate (Korean) Currently translated at 100.0% (272 of 272 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ko/ --- .../src/main/res/values-ko-rKR/strings_sk.xml | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/mastodon/src/main/res/values-ko-rKR/strings_sk.xml b/mastodon/src/main/res/values-ko-rKR/strings_sk.xml index 13c01b5fc..7a442f5b0 100644 --- a/mastodon/src/main/res/values-ko-rKR/strings_sk.xml +++ b/mastodon/src/main/res/values-ko-rKR/strings_sk.xml @@ -14,7 +14,7 @@ 고정 해제 중… 이미지 설명 타임라인에 비표시 - 답장 표시 + 답글 표시 리블로그 표시 자동으로 새 게시물 불러오기 반응 수 표시 @@ -128,7 +128,7 @@ 로컬 연합 답글을 표시할 대상 - 정말로 \"%s\" 리스트를 삭제하시겠습니까\? + 정말로 “%s” 리스트를 삭제하시겠습니까\? 공지사항 읽음으로 표시 인스턴스에 대하여 @@ -243,7 +243,7 @@ 멘션한 사람에게만 게시 인스턴스 기능 목록 사용하시는 인스턴스가 Glitch에서 실행 중인 경우 활성화하세요. Hometown이나 Akkoma의 경우 활성화할 필요가 없습니다. - \"새 게시물 보기\" 버튼 + “새 게시물 보기” 버튼 서버 버전: %s 열람주의 게시물 답글에 “re:” 추가 %s 필터로 걸러짐 @@ -260,6 +260,16 @@ 관객 모드 상호작용 버튼 가리기 다른 계정으로 팔로우 - %s 계정으로 팔로우함 + %s 계정으로 팔로우했습니다 게시 버튼 자동으로 가리기 + 답글 + 표시할 답글 + 모든 답글 + 팔로우한 계정에 대한 답글 + 나에 대한 답글 + %s 님 언급 + 아바타 위의 “…님에게 답글” 정보 + 스레드 보기 + %s 님에게 답글을 보냈습니다 + 리블로그/답글 정보 요약 \ No newline at end of file From 8d3380ff6e87273d8e1c257ddd7d0469800069f3 Mon Sep 17 00:00:00 2001 From: Pegasus89 Date: Thu, 6 Apr 2023 21:32:44 +0000 Subject: [PATCH 07/29] Translated using Weblate (Croatian) Currently translated at 97.4% (265 of 272 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/hr/ --- .../src/main/res/values-hr-rHR/strings_sk.xml | 268 +++++++++++++++++- 1 file changed, 267 insertions(+), 1 deletion(-) 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 045e125f3..4578a31dc 100644 --- a/mastodon/src/main/res/values-hr-rHR/strings_sk.xml +++ b/mastodon/src/main/res/values-hr-rHR/strings_sk.xml @@ -1,3 +1,269 @@ - + Proširi + Obavijesti o objavama + Objave + Home + Lokalno + Federacija + Omogući više izbora + Očisti listu nedavno korištenih jezika + Megalodon + Prikvačeno + Izbriši i ponovno uredi + Izbriši i ponovno uredi objavu + Jeste li sigurni da želite izbrisati i ponovno izraditi ovu objavu\? + Prikvači na profil + Prikvači objavu na profil + Želite li prikvačiti ovu objavu na svoj profil\? + Objava se prikvačuje… + Otkvači s profila + Otkvači objavu s profila + Jeste li sigurni da želite otkvačiti ovu objavu\? + Objava se otkvačuje… + Opis slike + Prikaži odgovore + Pokaži podržane objave + Dobrodošli! + Morski pas te pozdravlja! Za početak, u nastavku unesi naziv domene svoje početne instance. + Uvijek otkrij upozorenja o sadržaju + Onemogući pomicanje teksta u naslovnim trakama + Doprinesi Megalodonu + Odbij zahtjev za praćenjem + Označeno kao %s + Prevedi + Prikaži original + Jezik: %s + Dostupni jezici + %s (%s) + Jesi li siguran da želiš izbrisati listu nedavno korištenih jezika\? + primjer.social + Onemogući prelazak između kartica + Postavi profil + Postavke objavljivanja + Konfiguriraj filtere + Sigurnosne postavke + Pravila + O aplikaciji + Doniraj + Paleta boja + Sustav + Ružičasta + Zelena + Plava + Smeđa + Crvena + Žuta + Ljubičasta + Izbriši obavijesti + Izbriši obavijest + Jeste li sigurni da želite izbrisati ovu obavijest\? + Omogući brisanje obavijesti + Tekst gumba za objavljivanje + Prilagodi tekst gumba za objavljivanje + Zakaži + Skica + %s podržava prijevod! + %s izgleda da ne podržava prijevod. + Izbriši sve + Jeste li sigurni da želite izbrisati sve obavijesti\? + Izbriši sve obavijesti + Vidljivo podijeli objavu + Napiši objavu o ovome + Poništi dijeljenje objave + Kopiraj vezu na objavu + Hashtagovi koje pratite + Otvori s drugim profilom + Resurs nije moguće pronaći + Proslijedi %s + Neobjavljene objave + Spremi skicu\? + Spremi izmjene\? + Označi kao skicu + Zakaži objavu + Ne zakazuj + Ne skiciraj + Zakaži ili skiciraj + Podijeli objavu s drugim profilom + Smanji kretanje u animacijama + Naziv liste + Prikaži odgovore na objavu + Najave + Označi kao pročitano + O Instanci + Prikaži samo jednu obavijest + Kreiraj + Kreiraj listu + Kao odgovor + Upiši za početak pretraživanja + Ukloni %s kao pratitelja blokiranjem i trenutnim deblokiranjem\? + Ukloni + Pratitelj je uspješno uklonjen + Dnevnik promjena + Ukloni kao pratitelja + Najmanje jedan prilog ne sadrži opis. + Svejedno objavi + Onemogući podsjetnik za dodavanje zamjenskog teksta + Vremenske trake + Objave + Dodaj + Vremenska traka + Popis + Hashtag + Prikvači vremensku traku + Otkvači vremensku traku + Grad + Mačka + Pas + Zec + Kornjača + Balon + Slika + Bot + Jezik + Lokacija + Megafon + Mikrofon + Mikroskop + Klavijtura + Kava + Smijeh + Novosti + Pi + uređivano + uređivane objave + Priloži datoteku + Nove prijave + Sažmi + Nema rezultata + Spremi skicu\? + Zamjenski tekst nije dostupan + Indikator za zamjenske tekstove + Omogući predobjavljivanja + Samo spomenuto + · + Samo lokalna instanca + Poslužitelj podržava samo lokalno objavljivanje + Način rada: \"Glitch isključivo-lokalno\" + Omogućite ovo ako vaša početna instanca radi na Glitchu. Nije potrebno za Hometown ili Akkomu. + prijavljen + prijavljeno + Korisnici koji se prijavljuju + Gumb \"Pogledaj nove objave\" + Verzija poslužitelja: %s + Rezultati ankete + Prati s drugog profila + Praćen od strane %s + Nenavedeno + Liste s %s + Prikaži objedinjenu vremensku traku + "Prevedeno uporabom %s" + Prevodi samo otvorene objave + Pretraga na Fediversu + Pretraga na %s + Označite s drugim profilom + Označi kao omiljeno s drugim profilom + Identična ikona za sve obavijesti + Jeste li sigurni da želite izbrisati ovu zakazanu objavu\? + Objava zakazana + Objava mora biti zakazana najmanje 10 minuta prije zakazanog vremena. + Nedostaje alternativni tekst + Ako omogućite obavijesti o objavama za neke osobe, njihove nove objave pojavit će se ovdje. + Stetoskop + Knjiga + Pribadača + Uredi vremensku crtu + Traženje… + Želite li spremiti promjene na ovoj skici ili je želite sada objaviti\? + Indikator nedostajućih zamjenskih opisa + Samo lokalno + Značajke instance + 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 %" + Vidljivost odgovora + Svi odgovori + Odgovori onima koje pratim + Odgovori meni + Automatski učitaj nove objave + Prikaži brojanje interakcija + Označi medijske datoteke kao osjetljive + Uključene obavijesti o objavama za %s + Isključene obavijesti o objavama za %s + Federacija + Ovo su najnovije objave ljudi u vašoj federaciji. + Megalodon %s je spreman za preuzimanje. + Megalodon %s je preuzet i spreman za instaliranje. + Provjerite ima li ažuriranja + Nema dostupnih ažuriranja + Liste + Zahtijevi za praćenjem + Prihvati zahtjev za praćenjem + Već spremljeno + Označeno kao omiljeno s profilom %s + Već označeno kao omiljeno + Podijeljena objava kao %s + Objava već podijeljena + Odgovorite s drugim profilom + Izbriši skicu + Jeste li sigurni da želite izbrisati ovu skicu objave\? + Izbriši zakazanu objavu + Skiciraj ili zakaži + Objava će biti spremljena kao skica. + Zakazano za + Skica spremljena + Zakazano vrijeme je prerano + članovi liste + praćeni korisnici + nitko + Izbriši listu + Uredi popis + Jeste li sigurni da želite izbrisati popis “%s”\? + Vaši popisi + Prikvačeno na početnu stranicu + Otkvačeno s početne stranice + ukloni + Ikona + Srce + Zvijezda + Paleta boja + Akademska kapa + Oznaka + Vrijeme + Igre + Kod + Žarulja + Vlak + Klapa + Lišće + Sport + Otvor + Glazba + Ljudi + Zdravlje + Važno + Razgovor + Štit + Bicikl + Karta + Matematička formula + Ruksak + Aktovka + Vatra + Buba + Pizza + Čekić + Slušalice + Čovjek + Globus + Uredi vremenske crte + ALT + Sažmi vrlo dugačke objave + Prijenos nekih privitaka nije dovršen. + Popravi privitke\? + Pošalji odgovor %s + Redak \"Odgovor na\" iznad avatara + Prikaži niz objava + Sažeti redak podijeli/odgovori + \ No newline at end of file From 191d582c308f4f0734a0648a5fcb205bb2ca10c9 Mon Sep 17 00:00:00 2001 From: Pegasus89 Date: Thu, 6 Apr 2023 21:43:46 +0000 Subject: [PATCH 08/29] Translated using Weblate (Croatian) Currently translated at 12.5% (2 of 16 strings) Translation: Megalodon/metadata Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/hr/ --- metadata/hr/short_description.txt | 1 + metadata/hr/title.txt | 1 + 2 files changed, 2 insertions(+) create mode 100644 metadata/hr/short_description.txt create mode 100644 metadata/hr/title.txt diff --git a/metadata/hr/short_description.txt b/metadata/hr/short_description.txt new file mode 100644 index 000000000..321d9214c --- /dev/null +++ b/metadata/hr/short_description.txt @@ -0,0 +1 @@ +Mastodon za Android, ali je ružičaste boje i ima više mogućnosti diff --git a/metadata/hr/title.txt b/metadata/hr/title.txt new file mode 100644 index 000000000..cf946e02c --- /dev/null +++ b/metadata/hr/title.txt @@ -0,0 +1 @@ +Megalodon From 2f2e053d26dfdfc0d6817aebd03001e8fecfc3f6 Mon Sep 17 00:00:00 2001 From: Choukajohn Date: Fri, 7 Apr 2023 11:24:11 +0000 Subject: [PATCH 09/29] Translated using Weblate (French) Currently translated at 17.6% (3 of 17 strings) Translation: Megalodon/metadata Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/fr/ --- metadata/fr/short_description.txt | 2 +- metadata/fr/title.txt | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 metadata/fr/title.txt diff --git a/metadata/fr/short_description.txt b/metadata/fr/short_description.txt index d259a8c4e..69c3b02a5 100644 --- a/metadata/fr/short_description.txt +++ b/metadata/fr/short_description.txt @@ -1 +1 @@ -Mastodon for Android but it's pink and has more features \ No newline at end of file +Mastodon for Android but it's pink and has more features diff --git a/metadata/fr/title.txt b/metadata/fr/title.txt new file mode 100644 index 000000000..cf946e02c --- /dev/null +++ b/metadata/fr/title.txt @@ -0,0 +1 @@ +Megalodon From 08b29dff3d3e91884d32735c248af2ade2dbe6c9 Mon Sep 17 00:00:00 2001 From: gallegonovato Date: Fri, 7 Apr 2023 16:20:02 +0000 Subject: [PATCH 10/29] Translated using Weblate (Spanish) Currently translated at 100.0% (17 of 17 strings) Translation: Megalodon/metadata Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/es/ --- metadata/es/changelogs/83.txt | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 metadata/es/changelogs/83.txt diff --git a/metadata/es/changelogs/83.txt b/metadata/es/changelogs/83.txt new file mode 100644 index 000000000..a21fc0fe7 --- /dev/null +++ b/metadata/es/changelogs/83.txt @@ -0,0 +1,5 @@ +- Me gusta/marcar/responder directamente desde la notificación de Android +- Encabezados más bonitos y coherentes para reblogs y respuestas en la línea de tiempo. +- Punto de notificación (que aún no carga las notificaciones) +- Para usuarios de Akkoma: Visibilidad de las respuestas, las respuestas ordenadas, citas, ... +- Corrección de fallos y pequeños ajustes From 3b25e367bb784764547a29293fd8b00a2f21fd97 Mon Sep 17 00:00:00 2001 From: ihor_ck Date: Fri, 7 Apr 2023 20:17:57 +0000 Subject: [PATCH 11/29] Translated using Weblate (Ukrainian) Currently translated at 100.0% (17 of 17 strings) Translation: Megalodon/metadata Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/uk/ --- metadata/uk/changelogs/83.txt | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 metadata/uk/changelogs/83.txt diff --git a/metadata/uk/changelogs/83.txt b/metadata/uk/changelogs/83.txt new file mode 100644 index 000000000..93b0fcdac --- /dev/null +++ b/metadata/uk/changelogs/83.txt @@ -0,0 +1,5 @@ +- Уподобуйте/додавайте до закладок/відповідайте прямо зі шторки сповіщень +- Красивіші та послідовніші заголовки для поширень і відповідей у стрічці +- Точка сповіщення (яка ще не завантажує сповіщення) +- Для користувачів Akkoma: Видимість відповідей, відсортовані відповіді в темі, цитування, … +- Виправлення збоїв і незначні зміни From a78e75747ab8c1b6676a620c1119e06aae3fcf44 Mon Sep 17 00:00:00 2001 From: Espasant3 Date: Mon, 10 Apr 2023 10:01:04 +0000 Subject: [PATCH 12/29] Translated using Weblate (Galician) Currently translated at 100.0% (17 of 17 strings) Translation: Megalodon/metadata Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/gl/ --- metadata/gl-ES/changelogs/83.txt | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 metadata/gl-ES/changelogs/83.txt diff --git a/metadata/gl-ES/changelogs/83.txt b/metadata/gl-ES/changelogs/83.txt new file mode 100644 index 000000000..c4e7eb4c0 --- /dev/null +++ b/metadata/gl-ES/changelogs/83.txt @@ -0,0 +1,5 @@ +- Dalle a me gusta / garda en marcadores / responde directamente desde o tono de notificación +- Encabezados máis bonitos e consistentes para promocionar e respostas na cronoloxía +- Punto de notificación (que en realidade non carga las notificaciones todavía) +- Para os usuarios de Akkoma: Visibilidade de respostas, respostas de chío ordenadas, citas, ... +- Correccións de erros e axustes menores From e0b6ed71032fb64faa48370c135c35e43d6f98cc Mon Sep 17 00:00:00 2001 From: AiOO Date: Tue, 11 Apr 2023 22:59:39 +0000 Subject: [PATCH 13/29] Translated using Weblate (Korean) Currently translated at 100.0% (272 of 272 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ko/ --- mastodon/src/main/res/values-ko-rKR/strings_sk.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mastodon/src/main/res/values-ko-rKR/strings_sk.xml b/mastodon/src/main/res/values-ko-rKR/strings_sk.xml index 7a442f5b0..619d57b8c 100644 --- a/mastodon/src/main/res/values-ko-rKR/strings_sk.xml +++ b/mastodon/src/main/res/values-ko-rKR/strings_sk.xml @@ -100,7 +100,7 @@ 다른 계정으로 열기 리소스를 찾을 수 없습니다 %s 인스턴스에서 찾아오는 중 - 언급하여 게시 + 인용하여 게시 게시하지 않은 게시물 초안 작성 게시 예약 @@ -240,7 +240,7 @@ Glitch 로컬에만 게시 모드 서버가 로컬에만 게시하는 것을 지원함 로컬에만 게시 - 멘션한 사람에게만 게시 + 멘션된 사람들만 보임 인스턴스 기능 목록 사용하시는 인스턴스가 Glitch에서 실행 중인 경우 활성화하세요. Hometown이나 Akkoma의 경우 활성화할 필요가 없습니다. “새 게시물 보기” 버튼 @@ -267,7 +267,7 @@ 모든 답글 팔로우한 계정에 대한 답글 나에 대한 답글 - %s 님 언급 + %s 님 인용 아바타 위의 “…님에게 답글” 정보 스레드 보기 %s 님에게 답글을 보냈습니다 From f894ecd25bbcab9ed6a7ad4eeaa06217b94fb9bd Mon Sep 17 00:00:00 2001 From: AiOO Date: Tue, 11 Apr 2023 23:12:42 +0000 Subject: [PATCH 14/29] Translated using Weblate (Korean) Currently translated at 100.0% (17 of 17 strings) Translation: Megalodon/metadata Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/ko/ --- metadata/ko/changelogs/83.txt | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 metadata/ko/changelogs/83.txt diff --git a/metadata/ko/changelogs/83.txt b/metadata/ko/changelogs/83.txt new file mode 100644 index 000000000..a28dff874 --- /dev/null +++ b/metadata/ko/changelogs/83.txt @@ -0,0 +1,5 @@ +- 알림창에서 바로 좋아요/보관/답글 달기 +- 타임라인에서 리블로그와 답글에 더 예쁘고 일관성 있는 헤더 제공 +- 알림 표시 점 (아직 실제로 알림을 확인하지 않은 경우) +- Akkoma 유저를 위한 업데이트: 답글 표시 범위, 정렬된 스레드 답글, 인용, … +- 충돌 수정 및 사소한 업데이트 From eea2e38f1b86772d6025435db358958f870e8a81 Mon Sep 17 00:00:00 2001 From: Espasant3 Date: Wed, 12 Apr 2023 20:45:43 +0000 Subject: [PATCH 15/29] Translated using Weblate (Galician) Currently translated at 100.0% (17 of 17 strings) Translation: Megalodon/metadata Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/gl/ --- metadata/gl-ES/changelogs/83.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/metadata/gl-ES/changelogs/83.txt b/metadata/gl-ES/changelogs/83.txt index c4e7eb4c0..8db2473f6 100644 --- a/metadata/gl-ES/changelogs/83.txt +++ b/metadata/gl-ES/changelogs/83.txt @@ -1,5 +1,5 @@ -- Dalle a me gusta / garda en marcadores / responde directamente desde o tono de notificación -- Encabezados máis bonitos e consistentes para promocionar e respostas na cronoloxía +- Dalle a gústame / garda en marcadores / responde directamente desde o ton de notificación +- Encabezados máis bonitos e consistentes para promocionar e respostar na cronoloxía - Punto de notificación (que en realidade non carga las notificaciones todavía) -- Para os usuarios de Akkoma: Visibilidade de respostas, respostas de chío ordenadas, citas, ... +- Para os usuarios de Akkoma: Visibilidade de respostas, respostas de chío ordenadas, citacións, ... - Correccións de erros e axustes menores From b0b2daa5d584696e9bcf395982300bac5374d384 Mon Sep 17 00:00:00 2001 From: a_mento Date: Sat, 15 Apr 2023 22:10:36 +0000 Subject: [PATCH 16/29] Translated using Weblate (Basque) Currently translated at 100.0% (272 of 272 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/eu/ --- mastodon/src/main/res/values-eu-rES/strings_sk.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/mastodon/src/main/res/values-eu-rES/strings_sk.xml b/mastodon/src/main/res/values-eu-rES/strings_sk.xml index 2becb390e..bf1a574eb 100644 --- a/mastodon/src/main/res/values-eu-rES/strings_sk.xml +++ b/mastodon/src/main/res/values-eu-rES/strings_sk.xml @@ -261,4 +261,14 @@ Jarraitu beste kontu batetik %s-(d/t)ik jarraitua Automatikoki ezkutatu Idatzi botoia + Erantzunez + Erantzunaren ikusgarritasuna + Erantzun guztiak + Jarraitzen ditudanei eginiko erantzunak + \"Honi erantzunez\" abatarraren gaineko lerroa + Erakutsi haria + Bultzada/erantzun lerro trinkoa + %s aipatzen + Niri eginiko erantzunak + %s-(r)i erantzun \ No newline at end of file From aae239494e8a624fc6eb66b4f7ec32a0d571c8bc Mon Sep 17 00:00:00 2001 From: gallegonovato Date: Tue, 18 Apr 2023 14:07:31 +0000 Subject: [PATCH 17/29] Translated using Weblate (Spanish) Currently translated at 100.0% (273 of 273 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/ --- mastodon/src/main/res/values-es-rES/strings_sk.xml | 1 + 1 file changed, 1 insertion(+) 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 eb38b3267..7cc725731 100644 --- a/mastodon/src/main/res/values-es-rES/strings_sk.xml +++ b/mastodon/src/main/res/values-es-rES/strings_sk.xml @@ -272,4 +272,5 @@ \"En respuesta a\" línea sobre el avatar Mostrar hilo Línea compacta de reblog/respuesta + Confirmar antes de volver a publicar \ No newline at end of file From c817886a2d0d8d25caf967ec20b91a58bd0ae0b7 Mon Sep 17 00:00:00 2001 From: Choukajohn Date: Tue, 18 Apr 2023 10:50:36 +0000 Subject: [PATCH 18/29] Translated using Weblate (French) Currently translated at 100.0% (273 of 273 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fr/ --- mastodon/src/main/res/values-fr-rFR/strings_sk.xml | 1 + 1 file changed, 1 insertion(+) 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 2d3d204a8..3fd9ae09c 100644 --- a/mastodon/src/main/res/values-fr-rFR/strings_sk.xml +++ b/mastodon/src/main/res/values-fr-rFR/strings_sk.xml @@ -273,4 +273,5 @@ Afficher le fil Ligne de repost/réponse compacte Ligne \"En réponse à\" au-dessus de l\'avatar + Confirmer avant de reposter \ No newline at end of file From b88b3d15f8326233768aaa8275b23f7142c6eef9 Mon Sep 17 00:00:00 2001 From: Linerly Date: Tue, 18 Apr 2023 11:50:23 +0000 Subject: [PATCH 19/29] Translated using Weblate (Indonesian) Currently translated at 100.0% (273 of 273 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/id/ --- mastodon/src/main/res/values-in-rID/strings_sk.xml | 1 + 1 file changed, 1 insertion(+) 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 6f70a497d..92d01deda 100644 --- a/mastodon/src/main/res/values-in-rID/strings_sk.xml +++ b/mastodon/src/main/res/values-in-rID/strings_sk.xml @@ -273,4 +273,5 @@ Baris “Membalas ke” di atas avatar Tampilkan utasan Baris berbagi/balasan + Konfirmasi sebelum membagikan ulang \ No newline at end of file From ffc18029bb24e224b9f36284948bd150880dc147 Mon Sep 17 00:00:00 2001 From: Eryk Michalak Date: Tue, 18 Apr 2023 15:00:16 +0000 Subject: [PATCH 20/29] Translated using Weblate (Polish) Currently translated at 100.0% (273 of 273 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/pl/ --- mastodon/src/main/res/values-pl-rPL/strings_sk.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/mastodon/src/main/res/values-pl-rPL/strings_sk.xml b/mastodon/src/main/res/values-pl-rPL/strings_sk.xml index 8faf9cf5d..9930482df 100644 --- a/mastodon/src/main/res/values-pl-rPL/strings_sk.xml +++ b/mastodon/src/main/res/values-pl-rPL/strings_sk.xml @@ -271,4 +271,5 @@ Tekst \"W odpowiedzi na\" nad avatarem Pokaż wątek Zmniejsz linię reblogu/odpowiedzi + Potwierdź przed reblogowaniem \ No newline at end of file From 43c19e4942e422543825bf3be4eafaf4cb73a431 Mon Sep 17 00:00:00 2001 From: ihor_ck Date: Tue, 18 Apr 2023 13:11:02 +0000 Subject: [PATCH 21/29] Translated using Weblate (Ukrainian) Currently translated at 100.0% (273 of 273 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/uk/ --- mastodon/src/main/res/values-uk-rUA/strings_sk.xml | 1 + 1 file changed, 1 insertion(+) 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 ca688612e..f07c6c240 100644 --- a/mastodon/src/main/res/values-uk-rUA/strings_sk.xml +++ b/mastodon/src/main/res/values-uk-rUA/strings_sk.xml @@ -272,4 +272,5 @@ Рядок «У відповідь» над аватаром Показати потік Компактний рядок для поширеного допису/відповіді + Підтверджувати поширення \ No newline at end of file From b736fa18bbae23c05995e483be9b1d3d91fbd923 Mon Sep 17 00:00:00 2001 From: sk Date: Sat, 22 Apr 2023 16:32:00 +0200 Subject: [PATCH 22/29] remove empty french metadata --- metadata/fr/full_description.txt | 17 ----------------- metadata/fr/short_description.txt | 1 - 2 files changed, 18 deletions(-) delete mode 100644 metadata/fr/full_description.txt delete mode 100644 metadata/fr/short_description.txt diff --git a/metadata/fr/full_description.txt b/metadata/fr/full_description.txt deleted file mode 100644 index 4afd4be3a..000000000 --- a/metadata/fr/full_description.txt +++ /dev/null @@ -1,17 +0,0 @@ -Megalodon is a modified version of the official Mastodon Android app adding important features that are missing in the official app, such as the federated timeline, unlisted posting, bookmarks and an image description viewer. - -Key features - -- Unlisted posting: Post publicly without having your post show up in trends, hashtags or public timelines. -- Federated timeline: See all public posts from people on all other Fediverse neighborhoods your home instance is connected to. -- Image description viewer: Quickly check whether an image or video has an alt text attached to it. -- Pinning posts: Pin your most important posts to your profile and see what others have pinned using the “Pinned“ tab. -- Bookmarks: Quickly save posts and find them later in the Bookmarks list. -- Follow hashtags: See new posts from specific hashtags directly in your home timeline by following them. -- Answering follow requests: Accept or decline follow requests from your notifications or the dedicated Follow requests list. -- Delete and re-draft: The much-loved feature that made editing possible without an actual editing function. - -Unreleased official features, available in advance - -- Editing posts -- Integrated updater for GitHub releases diff --git a/metadata/fr/short_description.txt b/metadata/fr/short_description.txt deleted file mode 100644 index d259a8c4e..000000000 --- a/metadata/fr/short_description.txt +++ /dev/null @@ -1 +0,0 @@ -Mastodon for Android but it's pink and has more features \ No newline at end of file From 7bcdd6070a43b326e89cca51c6edf3de566ac2f3 Mon Sep 17 00:00:00 2001 From: sk Date: Sat, 22 Apr 2023 16:38:16 +0200 Subject: [PATCH 23/29] boost instead of reblog --- mastodon/src/main/res/values/strings_sk.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/mastodon/src/main/res/values/strings_sk.xml b/mastodon/src/main/res/values/strings_sk.xml index 60f9fd533..3d0fb224a 100644 --- a/mastodon/src/main/res/values/strings_sk.xml +++ b/mastodon/src/main/res/values/strings_sk.xml @@ -89,8 +89,8 @@ %s does not appear to support translation. Looking it up on the Fediverse Looking it up on %s - Undo reblog - Reblog with visibility + Undo boost + Boost with visibility Post about this Hashtags you follow Copy link to post @@ -102,9 +102,9 @@ Favorite with other account Favorited as %s Already favorited - Reblog with other account - Reblogged as %s - Already reblogged + Boost with other account + Boosted as %s + Already boosted Reply with other account Uniform icon for all notifications Forward to %s @@ -230,7 +230,7 @@ ALT edited Edited posts - Edits a reblogged post + Edits a boosted post Attach file Searching… No results @@ -271,6 +271,6 @@ In reply “In reply to” line above avatar Show thread - Compact reblog/reply line - Confirm before reblogging + Compact boost/reply line + Confirm before boosting \ No newline at end of file From de42145f30e194a35c497eea7d075a98b67809bc Mon Sep 17 00:00:00 2001 From: sk22 Date: Sat, 22 Apr 2023 14:35:08 +0000 Subject: [PATCH 24/29] Translated using Weblate (German) Currently translated at 100.0% (273 of 273 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 627c46d68..4d5aacb69 100644 --- a/mastodon/src/main/res/values-de-rDE/strings_sk.xml +++ b/mastodon/src/main/res/values-de-rDE/strings_sk.xml @@ -164,7 +164,7 @@ Fehlende Bildbeschreibung Erinnerung zum Hinzufügen von Bildbeschreibungen ausschalten ALT - Bearbeitet einen geteilten Beitrag + einen geteilten Beitrag bearbeitet Timelines Timeline Hashtag @@ -271,4 +271,5 @@ Thread öffnen Kompakte Geteilt/Geantwortet-Zeile “Als Antwort auf”-Zeile über Profilbild + Vor dem Teilen bestätigen \ No newline at end of file From c9bcd000c37a471049a1bd74cedb2f268d1b28fc Mon Sep 17 00:00:00 2001 From: sk Date: Sat, 22 Apr 2023 16:49:42 +0200 Subject: [PATCH 25/29] update gradle --- build.gradle | 2 +- gradle.properties | 5 ++++- gradle/wrapper/gradle-wrapper.properties | 2 +- mastodon/build.gradle | 4 ++-- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/build.gradle b/build.gradle index a32966dc8..8357ab502 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:7.4.2' + classpath 'com.android.tools.build:gradle:8.0.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } diff --git a/gradle.properties b/gradle.properties index 3c6cdff76..d71e770d0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -16,4 +16,7 @@ org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 # https://developer.android.com/topic/libraries/support-library/androidx-rn android.useAndroidX=true # Automatically convert third-party libraries to use AndroidX -android.enableJetifier=false \ No newline at end of file +android.enableJetifier=false +android.defaults.buildfeatures.buildconfig=true +android.nonTransitiveRClass=false +android.nonFinalResIds=false \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index e17ced581..fbc367fb9 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Thu Jan 13 11:33:43 MSK 2022 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME diff --git a/mastodon/build.gradle b/mastodon/build.gradle index 727138002..22bba4460 100644 --- a/mastodon/build.gradle +++ b/mastodon/build.gradle @@ -12,8 +12,8 @@ android { versionCode 83 versionName "1.2.2+fork.83" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - resConfigs "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" - } + 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'] + } buildTypes { release { From 4d7c4aed4ce96cb8db9d9a8e3ca9d1502b29e466 Mon Sep 17 00:00:00 2001 From: sk Date: Sat, 22 Apr 2023 16:51:44 +0200 Subject: [PATCH 26/29] enable nonTransitiveRClass --- gradle.properties | 2 +- .../android/api/MastodonErrorResponse.java | 4 +--- .../joinmastodon/android/fragments/HomeFragment.java | 10 +++++----- .../android/fragments/ProfileAboutFragment.java | 2 +- .../android/fragments/ProfileFragment.java | 4 +--- 5 files changed, 9 insertions(+), 13 deletions(-) diff --git a/gradle.properties b/gradle.properties index d71e770d0..415e17f9f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -18,5 +18,5 @@ android.useAndroidX=true # Automatically convert third-party libraries to use AndroidX android.enableJetifier=false android.defaults.buildfeatures.buildconfig=true -android.nonTransitiveRClass=false +android.nonTransitiveRClass=true android.nonFinalResIds=false \ No newline at end of file diff --git a/mastodon/src/main/java/org/joinmastodon/android/api/MastodonErrorResponse.java b/mastodon/src/main/java/org/joinmastodon/android/api/MastodonErrorResponse.java index 9dfbfdc83..7dedffd54 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/api/MastodonErrorResponse.java +++ b/mastodon/src/main/java/org/joinmastodon/android/api/MastodonErrorResponse.java @@ -5,8 +5,6 @@ import android.view.View; import android.widget.TextView; import android.widget.Toast; -import org.joinmastodon.android.R; - import me.grishka.appkit.api.ErrorResponse; public class MastodonErrorResponse extends ErrorResponse{ @@ -22,7 +20,7 @@ public class MastodonErrorResponse extends ErrorResponse{ @Override public void bindErrorView(View view){ - TextView text=view.findViewById(R.id.error_text); + TextView text=view.findViewById(me.grishka.appkit.R.id.error_text); text.setText(error); } diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeFragment.java index d4c2a9a99..d4db400ef 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeFragment.java @@ -104,7 +104,7 @@ public class HomeFragment extends AppKitFragment implements OnBackPressedListene content.setOrientation(LinearLayout.VERTICAL); FrameLayout fragmentContainer=new FrameLayout(getActivity()); - fragmentContainer.setId(R.id.fragment_wrap); + fragmentContainer.setId(me.grishka.appkit.R.id.fragment_wrap); content.addView(fragmentContainer, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 0, 1f)); inflater.inflate(R.layout.tab_bar, content); @@ -128,10 +128,10 @@ public class HomeFragment extends AppKitFragment implements OnBackPressedListene if(savedInstanceState==null){ getChildFragmentManager().beginTransaction() - .add(R.id.fragment_wrap, homeTabFragment) - .add(R.id.fragment_wrap, searchFragment).hide(searchFragment) - .add(R.id.fragment_wrap, notificationsFragment).hide(notificationsFragment) - .add(R.id.fragment_wrap, profileFragment).hide(profileFragment) + .add(me.grishka.appkit.R.id.fragment_wrap, homeTabFragment) + .add(me.grishka.appkit.R.id.fragment_wrap, searchFragment).hide(searchFragment) + .add(me.grishka.appkit.R.id.fragment_wrap, notificationsFragment).hide(notificationsFragment) + .add(me.grishka.appkit.R.id.fragment_wrap, profileFragment).hide(profileFragment) .commit(); String defaultTab=getArguments().getString("tab"); diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileAboutFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileAboutFragment.java index 15b11215c..efde0fd37 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileAboutFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileAboutFragment.java @@ -337,7 +337,7 @@ public class ProfileAboutFragment extends Fragment implements WindowInsetsAwareF public void onSelectedChanged(@Nullable RecyclerView.ViewHolder viewHolder, int actionState){ super.onSelectedChanged(viewHolder, actionState); if(actionState==ItemTouchHelper.ACTION_STATE_DRAG){ - viewHolder.itemView.setTag(R.id.item_touch_helper_previous_elevation, viewHolder.itemView.getElevation()); // prevents the default behavior of changing elevation in onDraw() + viewHolder.itemView.setTag(androidx.recyclerview.R.id.item_touch_helper_previous_elevation, viewHolder.itemView.getElevation()); // prevents the default behavior of changing elevation in onDraw() viewHolder.itemView.animate().translationZ(V.dp(1)).setDuration(200).setInterpolator(CubicBezierInterpolator.DEFAULT).start(); draggedViewHolder=viewHolder; } 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 4cd713ff3..a2eb62b2b 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java @@ -19,13 +19,11 @@ import android.os.Bundle; import android.text.SpannableStringBuilder; import android.text.TextUtils; import android.text.style.ImageSpan; -import android.util.Log; import android.view.Gravity; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; -import android.view.MotionEvent; import android.view.SubMenu; import android.view.View; import android.view.ViewGroup; @@ -1375,7 +1373,7 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList public void onSelectedChanged(@Nullable RecyclerView.ViewHolder viewHolder, int actionState){ super.onSelectedChanged(viewHolder, actionState); if(actionState==ItemTouchHelper.ACTION_STATE_DRAG){ - viewHolder.itemView.setTag(R.id.item_touch_helper_previous_elevation, viewHolder.itemView.getElevation()); // prevents the default behavior of changing elevation in onDraw() + viewHolder.itemView.setTag(androidx.recyclerview.R.id.item_touch_helper_previous_elevation, viewHolder.itemView.getElevation()); // prevents the default behavior of changing elevation in onDraw() viewHolder.itemView.animate().translationZ(V.dp(1)).setDuration(200).setInterpolator(CubicBezierInterpolator.DEFAULT).start(); draggedViewHolder=viewHolder; } From 226e2a7cdc9b0b559a49c6cac9810cbaf0c0d793 Mon Sep 17 00:00:00 2001 From: r3g_5z Date: Sat, 22 Apr 2023 11:28:16 -0400 Subject: [PATCH 27/29] Minor maintenance things (#501) * validate gradle wrapper jar file this is extremely important. see the following: https://blog.gradle.org/wrapper-attack-report https://github.com/gradle/wrapper-validation-action#the-gradle-wrapper-problem-in-open-source Signed-off-by: r3g_5z * update gradle wrapper to 8.1.1 it is necessary to run the gradlew update command twice to actually update the jar file properly, e.g.: ./gradlew wrapper --gradle-version=8.1.1 --gradle-distribution-sha256-sum=e111cb9948407e26351227dabce49822fb88c37ee72f1d1582a69c68af2e702f ./gradlew wrapper --gradle-version=8.1.1 --gradle-distribution-sha256-sum=e111cb9948407e26351227dabce49822fb88c37ee72f1d1582a69c68af2e702f Signed-off-by: r3g_5z * use Gradle toolchain this allows for better build reproducibility and avoid mix and matching JDKs from other projects https://docs.gradle.org/current/userguide/toolchains.html Signed-off-by: r3g_5z * update dependencies and fix build errors Signed-off-by: r3g_5z --------- Signed-off-by: r3g_5z Co-authored-by: sk22 --- .github/workflows/validate-gradle-wrapper.yml | 11 + gradle/wrapper/gradle-wrapper.jar | Bin 59203 -> 62076 bytes gradle/wrapper/gradle-wrapper.properties | 7 +- gradlew | 288 +++++++++++------- gradlew.bat | 15 +- mastodon/build.gradle | 14 +- .../fragments/ProfileAboutFragment.java | 2 +- .../android/fragments/ProfileFragment.java | 2 +- 8 files changed, 212 insertions(+), 127 deletions(-) create mode 100644 .github/workflows/validate-gradle-wrapper.yml diff --git a/.github/workflows/validate-gradle-wrapper.yml b/.github/workflows/validate-gradle-wrapper.yml new file mode 100644 index 000000000..b5f0b31ac --- /dev/null +++ b/.github/workflows/validate-gradle-wrapper.yml @@ -0,0 +1,11 @@ +name: Validate Gradle Wrapper + +on: [pull_request, push] + +jobs: + validation: + name: Validation + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: gradle/wrapper-validation-action@v1 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index e708b1c023ec8b20f512888fe07c5bd3ff77bb8f..c1962a79e29d3e0ab67b14947c167a862655af9b 100644 GIT binary patch delta 42507 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 AFaQ7m delta 39488 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 SjTjh$z-I$+9LbEIUi}{|+iFq( diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index fbc367fb9..2c3425d49 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,7 @@ -#Thu Jan 13 11:33:43 MSK 2022 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip distributionPath=wrapper/dists -zipStorePath=wrapper/dists +distributionSha256Sum=e111cb9948407e26351227dabce49822fb88c37ee72f1d1582a69c68af2e702f +distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip +networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 4f906e0c8..aeb74cbb4 100755 --- a/gradlew +++ b/gradlew @@ -1,7 +1,7 @@ -#!/usr/bin/env sh +#!/bin/sh # -# Copyright 2015 the original author or authors. +# Copyright © 2015-2021 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,67 +17,98 @@ # ############################################################################## -## -## Gradle start up script for UN*X -## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# ############################################################################## # Attempt to set APP_HOME + # Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum warn () { echo "$*" -} +} >&2 die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar @@ -87,9 +118,9 @@ CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -98,7 +129,7 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" + JAVACMD=java which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the @@ -106,80 +137,109 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin or MSYS, switch paths to Windows format before running java -if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=`expr $i + 1` - done - case $i in - 0) set -- ;; - 1) set -- "$args0" ;; - 2) set -- "$args0" "$args1" ;; - 3) set -- "$args0" "$args1" "$args2" ;; - 4) set -- "$args0" "$args1" "$args2" "$args3" ;; - 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" esac fi -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=`save "$@"` +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index ac1b06f93..6689b85be 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -14,7 +14,7 @@ @rem limitations under the License. @rem -@if "%DEBUG%" == "" @echo off +@if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -25,7 +25,8 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @@ -40,7 +41,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute +if %ERRORLEVEL% equ 0 goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -75,13 +76,15 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar :end @rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd +if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal diff --git a/mastodon/build.gradle b/mastodon/build.gradle index 22bba4460..9945ae056 100644 --- a/mastodon/build.gradle +++ b/mastodon/build.gradle @@ -2,6 +2,12 @@ plugins { id 'com.android.application' } +java { + toolchain { + languageVersion = JavaLanguageVersion.of(17) + } +} + android { compileSdk 33 defaultConfig { @@ -54,10 +60,14 @@ android { abortOnError false checkReleaseBuilds false } + + buildFeatures { + buildConfig true + } } dependencies { - api 'androidx.annotation:annotation:1.3.0' + api 'androidx.annotation:annotation:1.6.0' implementation 'com.squareup.okhttp3:okhttp:3.14.9' implementation 'me.grishka.litex:recyclerview:1.2.1.1' implementation 'me.grishka.litex:swiperefreshlayout:1.1.0.1' @@ -66,7 +76,7 @@ dependencies { implementation 'me.grishka.litex:viewpager:1.0.0' implementation 'me.grishka.litex:viewpager2:1.0.0' implementation 'me.grishka.appkit:appkit:1.2.7' - implementation 'com.google.code.gson:gson:2.8.9' + implementation 'com.google.code.gson:gson:2.9.0' implementation 'org.jsoup:jsoup:1.14.3' implementation 'com.squareup:otto:1.3.8' implementation 'de.psdev:async-otto:1.0.3' diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileAboutFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileAboutFragment.java index efde0fd37..90751bded 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileAboutFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileAboutFragment.java @@ -337,7 +337,7 @@ public class ProfileAboutFragment extends Fragment implements WindowInsetsAwareF public void onSelectedChanged(@Nullable RecyclerView.ViewHolder viewHolder, int actionState){ super.onSelectedChanged(viewHolder, actionState); if(actionState==ItemTouchHelper.ACTION_STATE_DRAG){ - viewHolder.itemView.setTag(androidx.recyclerview.R.id.item_touch_helper_previous_elevation, viewHolder.itemView.getElevation()); // prevents the default behavior of changing elevation in onDraw() + viewHolder.itemView.setTag(me.grishka.appkit.R.id.item_touch_helper_previous_elevation, viewHolder.itemView.getElevation()); // prevents the default behavior of changing elevation in onDraw() viewHolder.itemView.animate().translationZ(V.dp(1)).setDuration(200).setInterpolator(CubicBezierInterpolator.DEFAULT).start(); draggedViewHolder=viewHolder; } 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 a2eb62b2b..1a684af23 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java @@ -1373,7 +1373,7 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList public void onSelectedChanged(@Nullable RecyclerView.ViewHolder viewHolder, int actionState){ super.onSelectedChanged(viewHolder, actionState); if(actionState==ItemTouchHelper.ACTION_STATE_DRAG){ - viewHolder.itemView.setTag(androidx.recyclerview.R.id.item_touch_helper_previous_elevation, viewHolder.itemView.getElevation()); // prevents the default behavior of changing elevation in onDraw() + viewHolder.itemView.setTag(me.grishka.appkit.R.id.item_touch_helper_previous_elevation, viewHolder.itemView.getElevation()); // prevents the default behavior of changing elevation in onDraw() viewHolder.itemView.animate().translationZ(V.dp(1)).setDuration(200).setInterpolator(CubicBezierInterpolator.DEFAULT).start(); draggedViewHolder=viewHolder; } From b5a08b1b983765da7e6c96f5c2d5e22f176b1755 Mon Sep 17 00:00:00 2001 From: Jacoco <63549689+Jacocococo@users.noreply.github.com> Date: Sat, 22 Apr 2023 17:39:41 +0200 Subject: [PATCH 28/29] Pleroma emoji reaction notifications (#499) --- .../android/fragments/NotificationsListFragment.java | 12 +++++++++++- .../org/joinmastodon/android/model/Notification.java | 6 +++++- .../ui/displayitems/HeaderStatusDisplayItem.java | 5 +++-- .../android/ui/utils/CustomEmojiHelper.java | 10 ++++++++++ mastodon/src/main/res/values/strings_sk.xml | 1 + 5 files changed, 30 insertions(+), 4 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/NotificationsListFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/NotificationsListFragment.java index a0cad1855..5d3243864 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/NotificationsListFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/NotificationsListFragment.java @@ -16,6 +16,7 @@ import org.joinmastodon.android.events.PollUpdatedEvent; import org.joinmastodon.android.events.RemoveAccountPostsEvent; import org.joinmastodon.android.model.Account; import org.joinmastodon.android.model.CacheablePaginatedResponse; +import org.joinmastodon.android.model.Emoji; import org.joinmastodon.android.model.Filter; import org.joinmastodon.android.model.Notification; import org.joinmastodon.android.model.PaginatedResponse; @@ -24,6 +25,7 @@ import org.joinmastodon.android.ui.displayitems.AccountCardStatusDisplayItem; import org.joinmastodon.android.ui.displayitems.HeaderStatusDisplayItem; import org.joinmastodon.android.ui.displayitems.StatusDisplayItem; import org.joinmastodon.android.ui.displayitems.TextStatusDisplayItem; +import org.joinmastodon.android.ui.text.HtmlParser; import org.joinmastodon.android.ui.utils.DiscoverInfoBannerHelper; import org.joinmastodon.android.ui.utils.InsetStatusItemDecoration; import org.joinmastodon.android.ui.utils.UiUtils; @@ -83,6 +85,13 @@ public class NotificationsListFragment extends BaseStatusListFragment buildDisplayItems(Notification n){ Account reportTarget = n.report == null ? null : n.report.targetAccount == null ? null : n.report.targetAccount; + Emoji emoji = new Emoji(); + if(n.emojiUrl!=null){ + emoji.shortcode=n.emoji.substring(1,n.emoji.length()-1); + emoji.url=n.emojiUrl; + emoji.staticUrl=n.emojiUrl; + emoji.visibleInPicker=false; + } String extraText=switch(n.type){ case FOLLOW -> getString(R.string.user_followed_you); case FOLLOW_REQUEST -> getString(R.string.user_sent_follow_request); @@ -93,8 +102,9 @@ public class NotificationsListFragment extends BaseStatusListFragment getString(R.string.sk_post_edited); case SIGN_UP -> getString(R.string.sk_signed_up); case REPORT -> getString(R.string.sk_reported); + case EMOJI_REACTION -> getString(R.string.sk_reacted, n.emoji); }; - HeaderStatusDisplayItem titleItem=extraText!=null ? new HeaderStatusDisplayItem(n.id, n.account, n.createdAt, this, accountID, n.status, extraText, n, null) : null; + HeaderStatusDisplayItem titleItem=extraText!=null ? new HeaderStatusDisplayItem(n.id, n.account, n.createdAt, this, accountID, n.status, n.emojiUrl!=null ? HtmlParser.parseCustomEmoji(extraText, Collections.singletonList(emoji)) : extraText, n, null) : null; if(n.status!=null){ ArrayList items=StatusDisplayItem.buildItems(this, n.status, accountID, n, knownAccounts, titleItem!=null, titleItem==null, n, false, Filter.FilterContext.NOTIFICATIONS); if(titleItem!=null) diff --git a/mastodon/src/main/java/org/joinmastodon/android/model/Notification.java b/mastodon/src/main/java/org/joinmastodon/android/model/Notification.java index b104e86bf..264f6a54d 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/model/Notification.java +++ b/mastodon/src/main/java/org/joinmastodon/android/model/Notification.java @@ -20,6 +20,8 @@ public class Notification extends BaseModel implements DisplayItemsParent{ public Account account; public Status status; public Report report; + public String emoji; + public String emojiUrl; @Override public void postprocess() throws ObjectValidationException{ @@ -54,7 +56,9 @@ public class Notification extends BaseModel implements DisplayItemsParent{ @SerializedName("admin.sign_up") SIGN_UP, @SerializedName("admin.report") - REPORT + REPORT, + @SerializedName("pleroma:emoji_reaction") + EMOJI_REACTION } @Parcel 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 96fcf45ae..f3c57fc6b 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 @@ -83,13 +83,13 @@ public class HeaderStatusDisplayItem extends StatusDisplayItem{ public final Status status; private boolean hasVisibilityToggle; boolean needBottomPadding; - private String extraText; + private CharSequence extraText; private Notification notification; private ScheduledStatus scheduledStatus; private Announcement announcement; private Consumer consumeReadAnnouncement; - public HeaderStatusDisplayItem(String parentID, Account user, Instant createdAt, BaseStatusListFragment parentFragment, String accountID, Status status, String extraText, Notification notification, ScheduledStatus scheduledStatus){ + public HeaderStatusDisplayItem(String parentID, Account user, Instant createdAt, BaseStatusListFragment parentFragment, String accountID, Status status, CharSequence extraText, Notification notification, ScheduledStatus scheduledStatus){ super(parentID, parentFragment); user=scheduledStatus != null ? AccountSessionManager.getInstance().getAccount(accountID).self : user; this.user=user; @@ -114,6 +114,7 @@ public class HeaderStatusDisplayItem extends StatusDisplayItem{ } } this.extraText=extraText; + emojiHelper.addText(extraText); } public static HeaderStatusDisplayItem fromAnnouncement(Announcement a, Status fakeStatus, Account instanceUser, BaseStatusListFragment parentFragment, String accountID, Consumer consumeReadID) { diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/utils/CustomEmojiHelper.java b/mastodon/src/main/java/org/joinmastodon/android/ui/utils/CustomEmojiHelper.java index 6e0a6b002..faafc39d4 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/utils/CustomEmojiHelper.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/utils/CustomEmojiHelper.java @@ -29,6 +29,16 @@ public class CustomEmojiHelper{ } } + public void addText(CharSequence text) { + if(!(text instanceof Spanned)) + return; + CustomEmojiSpan[] spans=((Spanned) text).getSpans(0, text.length(), CustomEmojiSpan.class); + for(List group:Arrays.stream(spans).collect(Collectors.groupingBy(s->s.emoji)).values()){ + this.spans.add(group); + requests.add(group.get(0).createImageLoaderRequest()); + } + } + public int getImageCount(){ return requests.size(); } diff --git a/mastodon/src/main/res/values/strings_sk.xml b/mastodon/src/main/res/values/strings_sk.xml index 3d0fb224a..2d161aaa5 100644 --- a/mastodon/src/main/res/values/strings_sk.xml +++ b/mastodon/src/main/res/values/strings_sk.xml @@ -252,6 +252,7 @@ Enable this if your home instance runs on Glitch. Not needed for Hometown or Akkoma. signed up reported + reacted with %s Users signing up New reports Server version: %s From 63e536c66cbbfbff21d1b062982949eb0137b9b3 Mon Sep 17 00:00:00 2001 From: sk Date: Sat, 22 Apr 2023 18:20:05 +0200 Subject: [PATCH 29/29] fix hidden no alt/alt badge remaining clickable closes sk22#498 --- .../displayitems/MediaGridStatusDisplayItem.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 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 bd1c7c06f..83353ad8e 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 @@ -1,5 +1,7 @@ package org.joinmastodon.android.ui.displayitems; +import static org.joinmastodon.android.GlobalUserPreferences.*; + import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorSet; @@ -181,10 +183,11 @@ public class MediaGridStatusDisplayItem extends StatusDisplayItem{ altTextIndex=index; Attachment att=item.attachments.get(index); boolean hasAltText = !TextUtils.isEmpty(att.description); - altTextButton.setVisibility(hasAltText && GlobalUserPreferences.showAltIndicator ? View.VISIBLE : View.GONE); - noAltTextButton.setVisibility(!hasAltText && GlobalUserPreferences.showNoAltIndicator ? View.VISIBLE : View.GONE); - altText.setVisibility(hasAltText && GlobalUserPreferences.showAltIndicator ? View.VISIBLE : View.GONE); - noAltText.setVisibility(!hasAltText && GlobalUserPreferences.showNoAltIndicator ? View.VISIBLE : View.GONE); + if ((hasAltText && !showAltIndicator) || (!hasAltText && !showNoAltIndicator)) return; + altTextButton.setVisibility(hasAltText && showAltIndicator ? View.VISIBLE : View.GONE); + noAltTextButton.setVisibility(!hasAltText && showNoAltIndicator ? View.VISIBLE : View.GONE); + altText.setVisibility(hasAltText && showAltIndicator ? View.VISIBLE : View.GONE); + noAltText.setVisibility(!hasAltText && showNoAltIndicator ? View.VISIBLE : View.GONE); altText.setText(att.description); altTextWrapper.setVisibility(View.VISIBLE); altTextWrapper.setBackgroundResource(hasAltText ? R.drawable.bg_image_alt_overlay : R.drawable.bg_image_no_alt_overlay); @@ -251,8 +254,7 @@ public class MediaGridStatusDisplayItem extends StatusDisplayItem{ boolean hasAltText = !TextUtils.isEmpty(item.attachments.get(i).description); if(c.btnsWrap!=null && c.btnsWrap!=btn - && ((hasAltText && GlobalUserPreferences.showAltIndicator) - || (!hasAltText && GlobalUserPreferences.showNoAltIndicator)) + && ((hasAltText && showAltIndicator) || (!hasAltText && showNoAltIndicator)) ) c.btnsWrap.setVisibility(View.VISIBLE); i++; }