From 04dfbd73e7b67f6777366abd17e30b36ca039aff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=81=E9=A3=9E?= Date: Mon, 30 May 2022 06:34:44 +0000 Subject: [PATCH 01/18] Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (309 of 309 strings) Translation: ntfy/Android app Translate-URL: https://hosted.weblate.org/projects/ntfy/android/zh_Hans/ --- app/src/main/res/values-zh-rCN/strings.xml | 26 +++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 249847b..7dec5f6 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -6,7 +6,7 @@ 已全部同步 订阅刷新失败:%1$s 通知已开启 - 通知已关闭 + 通知已暂停 暂停通知到 %1$s 设置 Bug 报告 @@ -18,7 +18,7 @@ 取消 正在重新连接…… 昨天 - %1$s (UnifiedPush) + %1$s(统一推送) 详细的说明请见 ntfy.sh 和帮助文档。 此通知由 %1$s 通过 UnifiedPush 管理 请关闭对本应用的电量优化以避免通知推送问题。 @@ -174,7 +174,7 @@ 设置 暂停通知 显示所有通知 - 已暂停通知至手动恢复 + 已暂停通知直至手动恢复 已暂停通知至 %1$s 最低优先级 显示所有通知 @@ -299,4 +299,24 @@ 订阅%1$s 主题 分钟 默认 + 已订阅 5 个实时推送主题 + 已订阅 6 个主题 + 覆盖请勿打扰(DND)、声音等。 + %1$s 失败:%2$s + + + 最高 + 已订阅 6 个实时推送主题 + 已订阅 5 个主题 + 即时交付 + 通知会立即发送。需要前台服务,并消耗更多电池。 + 通知使用Firebase发送。交付可能会延迟,但消耗的电池更少。 + 外观 + 订阅图标 + 设置要在通知中显示的图标 + 订阅图标(点击可删除) + 此主题的通知中显示的图标 + 无法保存图标:%1$s + 使用全局设置 + 使用全局设置 \ No newline at end of file From 9e90e4e56b9db86fdd1bddf189f4aebc695f988c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=81=E9=A3=9E?= Date: Mon, 30 May 2022 06:42:06 +0000 Subject: [PATCH 02/18] Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (3 of 3 strings) Translation: ntfy/Android app (Fastlane metadata) Translate-URL: https://hosted.weblate.org/projects/ntfy/android-fastlane/zh_Hans/ --- .../metadata/android/zh-CN/full_description.txt | 17 +++++++++++++++++ .../android/zh-CN/short_description.txt | 1 + fastlane/metadata/android/zh-CN/title.txt | 1 + 3 files changed, 19 insertions(+) create mode 100644 fastlane/metadata/android/zh-CN/full_description.txt create mode 100644 fastlane/metadata/android/zh-CN/short_description.txt create mode 100644 fastlane/metadata/android/zh-CN/title.txt diff --git a/fastlane/metadata/android/zh-CN/full_description.txt b/fastlane/metadata/android/zh-CN/full_description.txt new file mode 100644 index 0000000..1f8bbd6 --- /dev/null +++ b/fastlane/metadata/android/zh-CN/full_description.txt @@ -0,0 +1,17 @@ +从任何 Bash/PowerShell 脚本,或从你自己的应用程序使用 PUT/POST 请求,例如通过 Linux 上的 curl 或 Invoke-WebRequest,向你的设备发送通知。 + +ntfy 是 https://ntfy.sh 的 Android 客户端,这是一个基于 HTTP 的免费开源 pub-sub 服务。您可以订阅此应用程序中的主题,然后通过简单的 HTTP API 发布消息。 + +用途: +* 当一个长期运行的进程完成时通知自己 +* 当备份失败时通知你的手机 +* 当有人登录到你的服务器时发出警报 + +例如: + +$ curl -d "Your backup is done" ntfy.sh/mytopic + +在此处查找更多示例和使用说明: +* 主页:https://ntfy.sh +* GitHub(服务端):https://github.com/binwiederhier/ntfy +* GitHub(安卓端):https://github.com/binwiederhier/ntfy-android diff --git a/fastlane/metadata/android/zh-CN/short_description.txt b/fastlane/metadata/android/zh-CN/short_description.txt new file mode 100644 index 0000000..a221572 --- /dev/null +++ b/fastlane/metadata/android/zh-CN/short_description.txt @@ -0,0 +1 @@ +从任何脚本使用 PUT/POST 请求向您的设备发送通知 diff --git a/fastlane/metadata/android/zh-CN/title.txt b/fastlane/metadata/android/zh-CN/title.txt new file mode 100644 index 0000000..ac762f6 --- /dev/null +++ b/fastlane/metadata/android/zh-CN/title.txt @@ -0,0 +1 @@ +ntfy - PUT/POST 至您的设备 From 7964d365b61ad6ffb941203f267bf4eae5081944 Mon Sep 17 00:00:00 2001 From: Orel Date: Tue, 31 May 2022 10:43:06 +0200 Subject: [PATCH 03/18] Added translation using Weblate (Hebrew) --- app/src/main/res/values-iw/strings.xml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 app/src/main/res/values-iw/strings.xml diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml new file mode 100644 index 0000000..a6b3dae --- /dev/null +++ b/app/src/main/res/values-iw/strings.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file From fe7fcdf0a85e3e2ddd3c912e72301667fddd9b04 Mon Sep 17 00:00:00 2001 From: SchoNie Date: Tue, 31 May 2022 20:22:11 +0000 Subject: [PATCH 04/18] Translated using Weblate (Dutch) Currently translated at 100.0% (309 of 309 strings) Translation: ntfy/Android app Translate-URL: https://hosted.weblate.org/projects/ntfy/android/nl/ --- app/src/main/res/values-nl/strings.xml | 113 ++++++++++++++++++++++--- 1 file changed, 101 insertions(+), 12 deletions(-) diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index a8a2c0d..44d199b 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -134,16 +134,16 @@ Bestand downloaden Download annuleren Melding kopiëren - Aan het luisteren voor binnenkomende notificaties + Luisteren naar inkomende meldingen Directe levering staat altijd aan voor andere hosts dan %1$s. Abonneer Verbinding mislukt: %1$s Dit onderwerp vereist dat je inlogt. Gelieve een gebruikersnaam en wachtwoord in te vullen. Verwijder alle notificaties in dit onderwerp\? Onmiddellijke levering in \"doze\" modus - Schakel nu over naar WebSockets in de Settings / \"Connectie protocol\" om te verzekeren dat je kan communiceren met je zelf gehoste ntfy server na Juni 2022. - Onderwerpen zijn mogelijk niet beveiligd met een wachtwoord, dus kies een naam die moeilijk te raden is. Eenmaal geabonneerd, kunt u PUT/POST-meldingen plaatsen. - Geef de service URLs hieronder om te abboneren aan onderwerpen van andere servers. + Schakel nu over naar WebSockets in Instellingen / \"Verbindingsprotocol\" om er zeker van te zijn dat je kunt communiceren met je zelf gehoste ntfy server na juni 2022. + Onderwerpen zijn mogelijk niet beveiligd met een wachtwoord, dus kies een naam die moeilijk te raden is. Eenmaal geabonneerd, kunt u berichten PUT/POST\'en. + Vul server URLS hieronder in om te abonneren op onderwerpen van andere servers. Leer meer Zorgt ervoor dat berichten onmiddellijk worden afgeleverd, zelfs als het toestel inactief is. Login gefaald. Gebruiker %1$s is niet geauthoriseerd. @@ -151,8 +151,8 @@ Om een notificatie naar dit onderwerp te sturen, verstuur een simpele PUT of POST naar de URL van dit onderwerp. Voorbeeld (door gebruik van curl):
curl -d \"Hallo\"%1$s
Gedetaileerde instructies zijn ter beschikking op ntfy.sh en in de documentatie. - Afmelden voor dit onderwerp en alle ontvangen meldingen verwijderen\? - Test: Je kunt desgewenst een titel instellen. + Afmelden voor dit onderwerp en alle notificaties verwijderen\? + Test: Je kan een titel aanmaken als je wil. Directe levering uit Directe bezorging inschakelen Directe bezorging uitschakelen @@ -209,15 +209,15 @@ Oké Verwijder eerder opgenomen logs en begin opnieuw Je kunt de gebruikersnaam/wachtwoord voor de geselecteerde gebruiker bewerken of verwijderen. - Dit is een testmelding van de ntfy Android app. Het heeft een %1$d prioriteitsniveau. Als je een andere stuurt kan deze er anders uitzien. - Kan bericht niet verzenden: %1$s - Kan bericht niet verzenden: Anoniem publiceren niet toegestaan. - Kan bericht niet verzenden: De gebruiker \"%1$s\" is niet geautoriseerd. - Kan bericht niet verzenden: De bijlage is te groot. + Dit is een testnotificatie van de ntfy Android app. De prioriteit is level %1$d. Als je een andere notificatie stuurt, kan die er anders uit zien. + Kan het bericht niet versturen: %1$s + Kan bericht niet versturen: Anoniem publiceren niet toegestaan. + Kan bericht niet versturen: De gebruiker \"%1$s\" is niet geautoriseerd. + Kan bericht niet versturen: De bijlage is te groot. Gekopieerd naar het klembord Directe levering aan Tags: %1$s - Melding verwijderd + Notificatie verwijderd Opslaan Annuleren %1$s @@ -230,4 +230,93 @@ Loggen (tot 1,000 vermeldingen) naar apparaat … Schakel loggen in zodat je logs later kunt delen om problemen te diagnosticeren. Er zijn geen onderwerpen/hostnamen gecensureerd. Misschien heb je geen abonnementen\? + verwijderd + Alles automatisch downloaden + Nooit automatisch downloaden + Als kleiner dan 5 MB + Meldingen automatisch verwijderen na drie dagen + Nooit + Na één dag + URL: %1$s kan niet worden geopend + Bijlage kan niet worden geopend: Het bestand kan verwijderd zijn, of er geen app aanwezig die het bestand kan openen. + Geabonneerd op vijf onderwerpen voor directe levering + Bijlage: %1$s kan niet worden geopend + Geabonneerd op vijf onderwerpen + Er is een afbeelding met je gedeeld + Alle notificaties worden weergegeven + Kanaal instellingen + Als kleiner dan 500 kB + %1$d gedownload + verwijderd, link vervalt %1$s + Toon notificaties als prioriteit is %1$d (%2$s) of hoger + download mislukt, link vervalt %1$s + Voeg content om te delen toe + Afbeelding: %1$s kan niet worden gelezen + Bestandsinformatie van: %1$s kan niet worden gelezen + Alleen maximale prioriteit + min + laag + Als kleiner dan 100 kB + Voer de root URL in van je eigen server om deze standaard te gebruiken bij abonneren op nieuwe onderwerpen en/of delen in onderwerpen. + Kan icoon: %1$s niet bewaren + Gebruikt in onderwerpen %1$s + In geen enkel onderwerp in gebruik + Gebruikt in onderwerp %1$s + Gebruik systeem standaard + Notificaties worden direct afgeleverd. Dit vereist een service in de voorgrond en verbruikt meer batterij. + Icoon wat zal worden weergegeven in notificaties voor dit onderwerp + Gebruik globale instelling + Toon notificaties als prioriteit is 5 (max) + standaard + Bijlages nooit automatisch downloaden + Als kleiner dan 10 MB + Meldingen nooit automatisch verwijderen + hoog + Niet Storen (DND), geluiden, etc. + Bijlages downloaden + max + Donkere modus + Meldingen automatisch verwijderen na één week + Geabonneerd op zes onderwerpen voor directe levering + Geabonneerd op zes onderwerpen + Bijlage kan niet geopend of gedownload worden. De link is verlopen en een lokaal bestand kan niet worden gevonden. + Bijlage: %1$s kan niet worden bewaard + Bijlage: %1$s kan niet worden verwijderd + Bijlage: %1$s kan niet worden gedownload + niet gedownload + niet gedownload, link is verlopen + niet gedownload, verloopt %1$s + verwijderd, link is verlopen + download mislukt + download mislukt, link is verlopen + Er is een bestand met je gedeeld + Iedere prioriteit + Lage prioriteit en hoger + Standaard prioriteit en hoger + Hoge prioriteit en hoger + Bijlages automatisch downloaden + Als kleiner dan 50 MB + Meldingen automatisch verwijderen na één maand + Meldingen automatisch verwijderen na drie maanden + Na één week + Na één maand + Na 3 maanden + Na 3 dagen + %1$s (standaard) + Als kleiner dan 1 MB + Gebruikers + Gebruikers toevoegen + Nieuwe gebruiker toevoegen + Creëer een nieuwe gebruiker voor een nieuwe server + Gebruik de systeem standaard + Lichte modus aan + Donkere modus aan. Ben je een vampier\? + Lichte modus + Directe levering + Notificaties worden afgeleverd via Firebase. Aflevering kan iets vertraagd zijn, maar dit verbruikt minder batterij. + Weergave + Abonnement icoon + Stel een icoon in wat zal worden weergegeven in notificaties + Abonnementen icoon (tap om te verwijderen) + Gebruikt globale instelling \ No newline at end of file From 4f53bf884e9d1de56340afefdbdb556cd1a2ba21 Mon Sep 17 00:00:00 2001 From: Orel Date: Tue, 31 May 2022 10:51:41 +0000 Subject: [PATCH 05/18] Translated using Weblate (Hebrew) Currently translated at 10.3% (32 of 309 strings) Translation: ntfy/Android app Translate-URL: https://hosted.weblate.org/projects/ntfy/android/he/ --- app/src/main/res/values-iw/strings.xml | 43 +++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index a6b3dae..3eaa2f7 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -1,2 +1,43 @@ - \ No newline at end of file + + רשום ל-%1$d נושאים + %1$d התראות התקבלו + הכל מעודכן + הרענון של הרישום הבא נכשל: %1$s + רישומים לנושאים + התראות פועלות + ההתראות מושתקות עד %1$s + הגדרות + דווח/י על באג + קרא/י את הדוקומנטציה + דרג/י את האפליקציה ⭐ + הסר/י רישום + מחק/י לצמיתות + ביטול + התראת %1$d + התראות %1$d + אתמול + הוספת רישום + נראה שלא נרשמת לאף נושא עדיין. + מיטוב סוללה צריך להיות כבוי עבור האפליקציה כדי להימנע מבעיות בשליחת וקבלת התראות. + שאל אחר כך + הסר + תקן עכשיו + שאל אחר כך + התראות (עדיפות מינימאלית) + שירות רישום + מאזין להתראות נכנסות + התראות (עדיפות נמוכה) + התראות (עדיפות ברירת מחדל) + התראות (עדיפות גבוהה) + התראות (עדיפות מקסימאלית) + הרענון של %1$d רישומים נכשל +\n +\n%2$s + התראות מושתקות + להסיר את הרישום מהנושא(ים) הנבחר(ים) ולמחוק את כל ההתראות לצמיתות\? + מתחבר מחדש… + לחצ\\י על + על מנת ליצור או להירשם אל מול נושא מסוים. לאחר מכן תקבל\\י התראות במכשירך כשתשלח\\י התראות דרך PUT או POST. + הוראות מפורטות זמינות ב-ntfy.sh, ובדוקומנטציה. + החלפ\\י ל-WebSockets תחת הגדרות \\ ״פרוטוקול חיבור״ עכשיו על מנת לוודא שאת\\ה יכול\\ה לתקשר עם שרת ה-ntfy באחסון עצמי שלך גם לאחר יוני 2022. + \ No newline at end of file From bc6f5edd8cdbe9f3c7c06ba0a46c71ab30169d53 Mon Sep 17 00:00:00 2001 From: SchoNie Date: Tue, 31 May 2022 20:26:55 +0000 Subject: [PATCH 06/18] Translated using Weblate (Dutch) Currently translated at 100.0% (3 of 3 strings) Translation: ntfy/Android app (Fastlane metadata) Translate-URL: https://hosted.weblate.org/projects/ntfy/android-fastlane/nl/ --- .../metadata/android/nl/full_description.txt | 17 +++++++++++++++++ .../metadata/android/nl/short_description.txt | 1 + fastlane/metadata/android/nl/title.txt | 1 + 3 files changed, 19 insertions(+) create mode 100644 fastlane/metadata/android/nl/full_description.txt create mode 100644 fastlane/metadata/android/nl/short_description.txt create mode 100644 fastlane/metadata/android/nl/title.txt diff --git a/fastlane/metadata/android/nl/full_description.txt b/fastlane/metadata/android/nl/full_description.txt new file mode 100644 index 0000000..a220c97 --- /dev/null +++ b/fastlane/metadata/android/nl/full_description.txt @@ -0,0 +1,17 @@ +Stuur notificaties naar je telefoon vanaf ieder Bash or PowerShell script, of vanaf je eigen app door gebruik te maken van PUT/POST verzoeken, bijv. via curl op Linux of Invoke-WebRequest op Windows. + +ntfy is een Android client voor https://ntfy.sh, een gratis en opensource HTTP gebaseerde pub-sub service. Je kan abonneren op onderwerpen in deze app en berichten publiceren via een simpele HTTP API. + +Gebruik-voorbeelden: +* Notificaties naar jezelf als bepaalde script processen mislukt of afgerond zijn. +* Ping je telefoon bij een mislukte backup. +* Alarmering bij een mislukte login poging. + +Voorbeeld: + +$ curl -d "De backup is succesvol afgerond!" ntfy.sh/mijnonderwerp + +Meer voorbeelden en documenten vindt je hier: +* Website: https://ntfy.sh +* GitHub (server): https://github.com/binwiederhier/ntfy +* GitHub (Android app): https://github.com/binwiederhier/ntfy-android diff --git a/fastlane/metadata/android/nl/short_description.txt b/fastlane/metadata/android/nl/short_description.txt new file mode 100644 index 0000000..59a2e33 --- /dev/null +++ b/fastlane/metadata/android/nl/short_description.txt @@ -0,0 +1 @@ +Stuur notificaties naar je telefoon vanaf ieder script m.b.v PUT/POST verzoeken diff --git a/fastlane/metadata/android/nl/title.txt b/fastlane/metadata/android/nl/title.txt new file mode 100644 index 0000000..510d640 --- /dev/null +++ b/fastlane/metadata/android/nl/title.txt @@ -0,0 +1 @@ +ntfy - PUT/POST naar je phone From c61a02fdeca9e72fcbd437127c071125e608da38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=81=E9=A3=9E?= Date: Fri, 3 Jun 2022 03:54:12 +0000 Subject: [PATCH 07/18] Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (309 of 309 strings) Translation: ntfy/Android app Translate-URL: https://hosted.weblate.org/projects/ntfy/android/zh_Hans/ --- app/src/main/res/values-zh-rCN/strings.xml | 28 +++++++++++----------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 7dec5f6..e3fb3b3 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -31,7 +31,7 @@ \n \n%2$s 删除订阅 - 您目前还没有订阅。 + 您当前还没有订阅。 低功耗模式下仍实时推送 确保在用户未使用设备时,消息也能实时送达。 低功耗模式下仍在除 %1$s 之外的服务器上使用实时推送。 @@ -44,23 +44,23 @@ 此主题需要您登录。请输入用户名和密码。 用户名 密码 - 登录失败。用户 %1$s 无权访问。 + 登录失败。 %1$s用户无权访问。 新用户 - 目前还没有关于此主题的通知。 + 当前还没有关于此主题的通知。 请在“链接协议”中选择 WebSockets 以保证在 2022 年 6 月之后仍能收到来自自建 ntfy 服务器的推送。 稍后再问 暂时不管 详情 订阅主题 主题未必有密码保护,因此请选择难以猜测的名称。订阅之后,您可以通知 PUT/POST 请求发送通知。 - 主题名称,比如:phils_alerts + 主题名称,例如:phils_alerts 详细的说明请见 ntfy.sh 和帮助文档。 您确认要删除这个主题下的所有通知吗? 这是 ntfy 安卓应用发来的测试通知。此通知优先级为 %1$d。如果再发送一条通知,通知的样式可能有变化。 - 无法发送消息:用户 %1$s 无权发布。 + 无法发送消息: %1$s用户无权发布。 下载文件 保存文件 - 向此主题的 URL 发送 PUT 或者 POST 请求即可发送通知。 + 向此主题的链接地址发送 PUT 或者 POST 请求即可发送通知。 例子(使用 curl):
$ curl -d \"Hi\" %1$s
永久删除 取消 @@ -80,8 +80,8 @@ 打开文件 删除文件 不再下载 - 复制 URL - URL 已复制到剪贴板 + 复制链接地址 + 链接地址已复制到剪贴板 复制通知 已保存为“下载”目录中的 %1$s 无法打开或下载附件。此链接已过期且未保存到本地。 @@ -157,20 +157,20 @@ 已订阅 4 个实时推送主题 已订阅 %1$d 个实时推送主题 使用其他服务器 - 在下方输入服务 URL 以订阅主题。 + 在下方输入服务链接地址以订阅主题。 无法下载附件:%1$s 未下载 未下载,链接已失效 通知已复制到剪贴板 无法打开附件:%1$s 无法打开附件:此文件已被删除或无可用打开方式。 - 无法打开 URL: %1$s + 无法打开链接:%1$s 无法保存附件:%1$s 无法删除附件:%1$s %1$s \n文件: %2$s %1$s -\n文件: %2$s, 已下载 +\n文件:已下载%2$s 设置 暂停通知 显示所有通知 @@ -251,7 +251,7 @@ \n%3$s 通知 %1$s -\n文件: %2$s, 下载失败 +\n文件:下载%2$s失败 备份失败:%1$s 日志已复制到剪贴板 上传并复制链接 (屏蔽敏感信息) @@ -259,7 +259,7 @@ 未在任何主题使用 亮色模式 在主题 %1$s 使用 - 暗色模式已启用。你是吸血鬼吗? + 暗色模式已启用。您是吸血鬼吗? 跟随系统默认 删除以前的日志并重新来过 添加用户 @@ -310,7 +310,7 @@ 已订阅 5 个主题 即时交付 通知会立即发送。需要前台服务,并消耗更多电池。 - 通知使用Firebase发送。交付可能会延迟,但消耗的电池更少。 + 通知使用 Firebase 发送。投递可能会延迟,但消耗的电池更少。 外观 订阅图标 设置要在通知中显示的图标 From 8cb852a2cba95eb12ff1e58e8e331385962fd73c Mon Sep 17 00:00:00 2001 From: Hunter Kehoe Date: Sun, 5 Jun 2022 16:22:26 -0600 Subject: [PATCH 08/18] fixes binwiederhier/ntfy#235 --- app/src/main/java/io/heckel/ntfy/ui/Colors.kt | 8 ++++++++ app/src/main/java/io/heckel/ntfy/ui/DetailActivity.kt | 10 ++-------- app/src/main/java/io/heckel/ntfy/ui/DetailAdapter.kt | 8 ++++++++ 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/io/heckel/ntfy/ui/Colors.kt b/app/src/main/java/io/heckel/ntfy/ui/Colors.kt index cce4db0..816d4b4 100644 --- a/app/src/main/java/io/heckel/ntfy/ui/Colors.kt +++ b/app/src/main/java/io/heckel/ntfy/ui/Colors.kt @@ -14,10 +14,18 @@ class Colors { return if (isDarkThemeOn(context)) R.color.black_800b else R.color.gray_400 } + fun cardBackground(context: Context): Int { + return if (isDarkThemeOn(context)) R.color.black_800b else R.color.white + } + fun cardSelectedBackground(context: Context): Int { return if (isDarkThemeOn(context)) R.color.black_700b else R.color.gray_500 } + fun cardBackgroundColor(context: Context): Int { + return ContextCompat.getColor(context, cardBackground(context)) + } + fun cardSelectedBackgroundColor(context: Context): Int { return ContextCompat.getColor(context, cardSelectedBackground(context)) } diff --git a/app/src/main/java/io/heckel/ntfy/ui/DetailActivity.kt b/app/src/main/java/io/heckel/ntfy/ui/DetailActivity.kt index 214d614..a3ff9b6 100644 --- a/app/src/main/java/io/heckel/ntfy/ui/DetailActivity.kt +++ b/app/src/main/java/io/heckel/ntfy/ui/DetailActivity.kt @@ -636,7 +636,6 @@ class DetailActivity : AppCompatActivity(), ActionMode.Callback, NotificationFra finishActionMode() } else { actionMode!!.title = adapter.selected.size.toString() - redrawList() } } @@ -717,8 +716,7 @@ class DetailActivity : AppCompatActivity(), ActionMode.Callback, NotificationFra private fun beginActionMode(notification: Notification) { actionMode = startActionMode(this) - adapter.selected.add(notification.id) - redrawList() + adapter.toggleSelection(notification.id) // Fade status bar color val fromColor = ContextCompat.getColor(this, Colors.statusBarNormal(this)) @@ -734,7 +732,7 @@ class DetailActivity : AppCompatActivity(), ActionMode.Callback, NotificationFra private fun endActionModeAndRedraw() { actionMode = null adapter.selected.clear() - redrawList() + adapter.notifyItemRangeChanged(0, adapter.currentList.size-1) // Fade status bar color val fromColor = ContextCompat.getColor(this, Colors.statusBarActionMode(this)) @@ -742,10 +740,6 @@ class DetailActivity : AppCompatActivity(), ActionMode.Callback, NotificationFra fadeStatusBarColor(window, fromColor, toColor) } - private fun redrawList() { - mainList.adapter = adapter // Oh, what a hack ... - } - companion object { const val TAG = "NtfyDetailActivity" const val EXTRA_SUBSCRIPTION_ID = "subscriptionId" diff --git a/app/src/main/java/io/heckel/ntfy/ui/DetailAdapter.kt b/app/src/main/java/io/heckel/ntfy/ui/DetailAdapter.kt index 64e2d99..dc4718a 100644 --- a/app/src/main/java/io/heckel/ntfy/ui/DetailAdapter.kt +++ b/app/src/main/java/io/heckel/ntfy/ui/DetailAdapter.kt @@ -58,6 +58,12 @@ class DetailAdapter(private val activity: Activity, private val lifecycleScope: } else { selected.add(notificationId) } + + if (selected.size != 0) { + val listIds = currentList.map { notification -> notification.id } + val notificationPosition = listIds.indexOf(notificationId) + notifyItemChanged(notificationPosition) + } } /* ViewHolder for Topic, takes in the inflated view and the onClick behavior. */ @@ -114,6 +120,8 @@ class DetailAdapter(private val activity: Activity, private val lifecycleScope: } if (selected.contains(notification.id)) { cardView.setCardBackgroundColor(Colors.cardSelectedBackgroundColor(context)) + } else { + cardView.setCardBackgroundColor(Colors.cardBackgroundColor(context)) } val attachment = notification.attachment val exists = if (attachment?.contentUri != null) fileExists(context, attachment.contentUri) else false From 9656f9147c71af9f41f33e814ba5f3ba5ea898bb Mon Sep 17 00:00:00 2001 From: Hunter Kehoe Date: Sun, 5 Jun 2022 19:10:39 -0600 Subject: [PATCH 09/18] clear last item background color when selected --- app/src/main/java/io/heckel/ntfy/ui/DetailActivity.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/io/heckel/ntfy/ui/DetailActivity.kt b/app/src/main/java/io/heckel/ntfy/ui/DetailActivity.kt index a3ff9b6..7e2621b 100644 --- a/app/src/main/java/io/heckel/ntfy/ui/DetailActivity.kt +++ b/app/src/main/java/io/heckel/ntfy/ui/DetailActivity.kt @@ -732,7 +732,7 @@ class DetailActivity : AppCompatActivity(), ActionMode.Callback, NotificationFra private fun endActionModeAndRedraw() { actionMode = null adapter.selected.clear() - adapter.notifyItemRangeChanged(0, adapter.currentList.size-1) + adapter.notifyItemRangeChanged(0, adapter.currentList.size) // Fade status bar color val fromColor = ContextCompat.getColor(this, Colors.statusBarActionMode(this)) From 5f75a263d989087c47fb41000fbce961b0f7dfa9 Mon Sep 17 00:00:00 2001 From: Hunter Kehoe Date: Sun, 5 Jun 2022 19:14:33 -0600 Subject: [PATCH 10/18] redraw selected subscription list items individually --- app/src/main/java/io/heckel/ntfy/ui/MainActivity.kt | 8 ++------ app/src/main/java/io/heckel/ntfy/ui/MainAdapter.kt | 9 +++++++++ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/io/heckel/ntfy/ui/MainActivity.kt b/app/src/main/java/io/heckel/ntfy/ui/MainActivity.kt index cd77ed6..6781f98 100644 --- a/app/src/main/java/io/heckel/ntfy/ui/MainActivity.kt +++ b/app/src/main/java/io/heckel/ntfy/ui/MainActivity.kt @@ -538,7 +538,6 @@ class MainActivity : AppCompatActivity(), ActionMode.Callback, AddFragment.Subsc finishActionMode() } else { actionMode!!.title = adapter.selected.size.toString() - redrawList() } } @@ -593,8 +592,7 @@ class MainActivity : AppCompatActivity(), ActionMode.Callback, AddFragment.Subsc private fun beginActionMode(subscription: Subscription) { actionMode = startActionMode(this) - adapter.selected.add(subscription.id) - redrawList() + adapter.toggleSelection(subscription.id) // Fade out FAB fab.alpha = 1f @@ -647,9 +645,7 @@ class MainActivity : AppCompatActivity(), ActionMode.Callback, AddFragment.Subsc if (!this::mainList.isInitialized) { return } - runOnUiThread { - mainList.adapter = adapter // Oh, what a hack ... - } + adapter.notifyItemRangeChanged(0, adapter.currentList.size) } companion object { diff --git a/app/src/main/java/io/heckel/ntfy/ui/MainAdapter.kt b/app/src/main/java/io/heckel/ntfy/ui/MainAdapter.kt index aebeadc..0ffa4fa 100644 --- a/app/src/main/java/io/heckel/ntfy/ui/MainAdapter.kt +++ b/app/src/main/java/io/heckel/ntfy/ui/MainAdapter.kt @@ -2,6 +2,7 @@ package io.heckel.ntfy.ui import android.content.Context import android.graphics.BitmapFactory +import android.graphics.Color import android.net.Uri import android.view.LayoutInflater import android.view.View @@ -46,6 +47,12 @@ class MainAdapter(private val repository: Repository, private val onClick: (Subs } else { selected.add(subscriptionId) } + + if (selected.size != 0) { + val listIds = currentList.map { subscription -> subscription.id } + val subscriptionPosition = listIds.indexOf(subscriptionId) + notifyItemChanged(subscriptionPosition) + } } /* ViewHolder for Topic, takes in the inflated view and the onClick behavior. */ @@ -111,6 +118,8 @@ class MainAdapter(private val repository: Repository, private val onClick: (Subs itemView.setOnLongClickListener { onLongClick(subscription); true } if (selected.contains(subscription.id)) { itemView.setBackgroundResource(Colors.itemSelectedBackground(context)) + } else { + itemView.setBackgroundColor(Color.TRANSPARENT); } } } From e70d56427b13434b1ece00098014f4ad5a9e79be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ph=E1=BA=A1m=20Nh=E1=BB=B1t=20Nam?= Date: Wed, 8 Jun 2022 19:21:30 +0200 Subject: [PATCH 11/18] Added translation using Weblate (Hindi) --- app/src/main/res/values-hi/strings.xml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 app/src/main/res/values-hi/strings.xml diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml new file mode 100644 index 0000000..a6b3dae --- /dev/null +++ b/app/src/main/res/values-hi/strings.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file From 07708e3dc5b89afe3a00efbaab184675dfc3cc91 Mon Sep 17 00:00:00 2001 From: Mayeul Cantan Date: Mon, 13 Jun 2022 13:07:22 +0000 Subject: [PATCH 12/18] Translated using Weblate (French) Currently translated at 100.0% (309 of 309 strings) Translation: ntfy/Android app Translate-URL: https://hosted.weblate.org/projects/ntfy/android/fr/ --- app/src/main/res/values-fr/strings.xml | 27 ++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index bc961a5..eb9b873 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -3,9 +3,9 @@ Notifications (priorité basse) Notifications (priorité normale) Abonnement - Abonné à deux sujets de livraison instantanée - Abonné à quatre sujets de livraison instantanée - Abonné à %1$d sujets de livraison instantanée + Abonné à deux sujets à réception instantanée + Abonné à quatre sujets à réception instantanée + Abonné à %1$d sujets à réception instantanée Abonné aux sujets Abonné à un sujet Abonné à quatre sujets @@ -53,13 +53,13 @@ Désabonner Supprimer définitivement Supprimer définitivement la ou les notification(s) sélectionnée(s) \? - Abonné à un sujet de livraison instantanée + Abonné à un sujet à réception instantanée Notifications (priorité maximale) Notifications (priorité minimale) Notifications (priorité élevée) Écoute les notifications entrantes - Abonné aux sujets de livraison instantanée - Abonné à trois sujets de livraison instantanée + Abonné aux sujets à réception instantanée + Abonné à trois sujets à réception instantanée Tout est à jour Notifications en sourdine Abonné à deux sujets @@ -304,4 +304,19 @@ Ignorer Ne pas déranger (DND), sons, etc. %1$s a échoué : %2$s Paramètres du canal + Abonné à six sujets + Réception instantanée + Abonné à cinq sujets + Les notifications sont transmises à l\'aide de Firebase. La réception peut être retardée, mais consomme moins de batterie. + Icône affichée pour les notifications de ce sujet + Abonné à six sujets à réception instantanée + Abonné à cinq sujets à réception instantanée + Apparence + Icône de souscription (toucher pour retirer) + Impossible d\'enregistrer l\'icône : %1$s + Les notifications sont reçues instantanément. Requiert un service en premier plan et consomme plus de batterie. + Icône d\'abonnement + Choisir une icône à afficher pour les notifications + Utiliser le paramètre global + utilisation du paramètre global \ No newline at end of file From b2867d0a8371702826c04521f66a73db06682e3b Mon Sep 17 00:00:00 2001 From: Elisey Kravchuk Date: Wed, 15 Jun 2022 19:53:33 +0000 Subject: [PATCH 13/18] Translated using Weblate (Russian) Currently translated at 93.5% (289 of 309 strings) Translation: ntfy/Android app Translate-URL: https://hosted.weblate.org/projects/ntfy/android/ru/ --- app/src/main/res/values-ru/strings.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index f88a5e1..3beb5ba 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -304,4 +304,8 @@ Отмена Удалить пользователя %1$s не удалась: %2$s + Подписан на пять тем с мгновенной доставкой + Подписан на шесть тем с мгновенной доставкой + Подписан на пять тем + Подписан на шесть тем \ No newline at end of file From 658efc8ecee31a5442d4ad1583ef79413620a1ad Mon Sep 17 00:00:00 2001 From: Hunter Kehoe Date: Thu, 16 Jun 2022 21:01:12 -0600 Subject: [PATCH 14/18] include attachment name and URL in broadcast intents --- app/src/main/java/io/heckel/ntfy/msg/BroadcastService.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/java/io/heckel/ntfy/msg/BroadcastService.kt b/app/src/main/java/io/heckel/ntfy/msg/BroadcastService.kt index e5f46fd..36133e2 100644 --- a/app/src/main/java/io/heckel/ntfy/msg/BroadcastService.kt +++ b/app/src/main/java/io/heckel/ntfy/msg/BroadcastService.kt @@ -33,6 +33,8 @@ class BroadcastService(private val ctx: Context) { intent.putExtra("priority", notification.priority) intent.putExtra("muted", muted) intent.putExtra("muted_str", muted.toString()) + intent.putExtra("attachment_name", notification.attachment?.name) + intent.putExtra("attachment_url", notification.attachment?.url) Log.d(TAG, "Sending message intent broadcast: ${intent.action} with extras ${intent.extras}") ctx.sendBroadcast(intent) From c09e37882e90202c654d1d87412960db43f26320 Mon Sep 17 00:00:00 2001 From: Philipp Heckel Date: Fri, 17 Jun 2022 20:16:49 -0400 Subject: [PATCH 15/18] Update deps --- app/build.gradle | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 7a1f71f..21a1b2e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -61,9 +61,9 @@ android { dependencies { // AndroidX, The Basics - implementation "androidx.appcompat:appcompat:1.4.1" - implementation "androidx.core:core-ktx:1.7.0" - implementation "androidx.constraintlayout:constraintlayout:2.1.3" + implementation "androidx.appcompat:appcompat:1.4.2" + implementation "androidx.core:core-ktx:1.8.0" + implementation "androidx.constraintlayout:constraintlayout:2.1.4" implementation "androidx.activity:activity-ktx:1.4.0" implementation "androidx.fragment:fragment-ktx:1.4.1" implementation "androidx.work:work-runtime-ktx:2.7.1" @@ -81,7 +81,7 @@ dependencies { implementation 'com.squareup.okhttp3:okhttp:4.9.3' // Firebase, sigh ... (only Google Play) - playImplementation 'com.google.firebase:firebase-messaging:23.0.4' + playImplementation 'com.google.firebase:firebase-messaging:23.0.5' // RecyclerView implementation "androidx.recyclerview:recyclerview:1.3.0-alpha02" @@ -90,7 +90,7 @@ dependencies { implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0' // Material design - implementation "com.google.android.material:material:1.6.0" + implementation "com.google.android.material:material:1.6.1" // LiveData implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" From aebbbd0d4422fc7f98a15bfe219619ffb79779b7 Mon Sep 17 00:00:00 2001 From: Philipp Heckel Date: Fri, 17 Jun 2022 20:23:06 -0400 Subject: [PATCH 16/18] Changelog, bump versions --- app/build.gradle | 4 ++-- fastlane/metadata/android/en-US/changelog/28.txt | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 fastlane/metadata/android/en-US/changelog/28.txt diff --git a/app/build.gradle b/app/build.gradle index 21a1b2e..5499b58 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -12,8 +12,8 @@ android { minSdkVersion 21 targetSdkVersion 31 - versionCode 27 - versionName "1.13.0" + versionCode 28 + versionName "1.14.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/fastlane/metadata/android/en-US/changelog/28.txt b/fastlane/metadata/android/en-US/changelog/28.txt new file mode 100644 index 0000000..3243140 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelog/28.txt @@ -0,0 +1,8 @@ +Bugs: +* Fixed: Long-click selecting of notifications scrolls to the top (#235, thanks to @wunter8) + +Additional translations: +* Italian (thanks to @Genio2003) +* Dutch (thanks to @SchoNie) + +Thank you to @wunter8 for proactively picking up some Android tickets, and fixing them! You rock! From 9dd21255d309724bc0310a51a21ffb113a99cf0c Mon Sep 17 00:00:00 2001 From: Philipp Heckel Date: Fri, 17 Jun 2022 20:57:51 -0400 Subject: [PATCH 17/18] Add additional attachment extras --- .../main/java/io/heckel/ntfy/msg/BroadcastService.kt | 10 ++++++++-- fastlane/metadata/android/en-US/changelog/28.txt | 1 + 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/io/heckel/ntfy/msg/BroadcastService.kt b/app/src/main/java/io/heckel/ntfy/msg/BroadcastService.kt index 36133e2..a15f09a 100644 --- a/app/src/main/java/io/heckel/ntfy/msg/BroadcastService.kt +++ b/app/src/main/java/io/heckel/ntfy/msg/BroadcastService.kt @@ -31,10 +31,16 @@ class BroadcastService(private val ctx: Context) { intent.putExtra("tags", notification.tags) intent.putExtra("tags_map", joinTagsMap(splitTags(notification.tags))) intent.putExtra("priority", notification.priority) + intent.putExtra("click", notification.click) intent.putExtra("muted", muted) intent.putExtra("muted_str", muted.toString()) - intent.putExtra("attachment_name", notification.attachment?.name) - intent.putExtra("attachment_url", notification.attachment?.url) + intent.putExtra("attachment_name", notification.attachment?.name ?: "") + intent.putExtra("attachment_type", notification.attachment?.type ?: "") + intent.putExtra("attachment_size", notification.attachment?.size ?: 0L) + intent.putExtra("attachment_size_str", notification.attachment?.size?.toString() ?: "") + intent.putExtra("attachment_expires", notification.attachment?.expires ?: 0L) + intent.putExtra("attachment_expires_str", notification.attachment?.expires?.toString() ?: "") + intent.putExtra("attachment_url", notification.attachment?.url ?: "") Log.d(TAG, "Sending message intent broadcast: ${intent.action} with extras ${intent.extras}") ctx.sendBroadcast(intent) diff --git a/fastlane/metadata/android/en-US/changelog/28.txt b/fastlane/metadata/android/en-US/changelog/28.txt index 3243140..e08bbbe 100644 --- a/fastlane/metadata/android/en-US/changelog/28.txt +++ b/fastlane/metadata/android/en-US/changelog/28.txt @@ -1,5 +1,6 @@ Bugs: * Fixed: Long-click selecting of notifications scrolls to the top (#235, thanks to @wunter8) +* Add attachment and click URL extras to MESSAGE_RECEIVED broadcast (#330, thanks to @wunter8) Additional translations: * Italian (thanks to @Genio2003) From 7f88d8f3ff7147705883aaf4363f22f4900a7ebc Mon Sep 17 00:00:00 2001 From: Philipp Heckel Date: Fri, 17 Jun 2022 21:06:50 -0400 Subject: [PATCH 18/18] Remove _str options --- app/src/main/java/io/heckel/ntfy/msg/BroadcastService.kt | 2 -- fastlane/metadata/android/en-US/changelog/28.txt | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/app/src/main/java/io/heckel/ntfy/msg/BroadcastService.kt b/app/src/main/java/io/heckel/ntfy/msg/BroadcastService.kt index a15f09a..6ad65b2 100644 --- a/app/src/main/java/io/heckel/ntfy/msg/BroadcastService.kt +++ b/app/src/main/java/io/heckel/ntfy/msg/BroadcastService.kt @@ -37,9 +37,7 @@ class BroadcastService(private val ctx: Context) { intent.putExtra("attachment_name", notification.attachment?.name ?: "") intent.putExtra("attachment_type", notification.attachment?.type ?: "") intent.putExtra("attachment_size", notification.attachment?.size ?: 0L) - intent.putExtra("attachment_size_str", notification.attachment?.size?.toString() ?: "") intent.putExtra("attachment_expires", notification.attachment?.expires ?: 0L) - intent.putExtra("attachment_expires_str", notification.attachment?.expires?.toString() ?: "") intent.putExtra("attachment_url", notification.attachment?.url ?: "") Log.d(TAG, "Sending message intent broadcast: ${intent.action} with extras ${intent.extras}") diff --git a/fastlane/metadata/android/en-US/changelog/28.txt b/fastlane/metadata/android/en-US/changelog/28.txt index e08bbbe..42000e0 100644 --- a/fastlane/metadata/android/en-US/changelog/28.txt +++ b/fastlane/metadata/android/en-US/changelog/28.txt @@ -1,6 +1,6 @@ Bugs: * Fixed: Long-click selecting of notifications scrolls to the top (#235, thanks to @wunter8) -* Add attachment and click URL extras to MESSAGE_RECEIVED broadcast (#330, thanks to @wunter8) +* Add attachment and click URL extras to MESSAGE_RECEIVED broadcast (#329, thanks to @wunter8) Additional translations: * Italian (thanks to @Genio2003)