From 67d0ee282d4cc19a089e7f8105fbdab8ae983d8c Mon Sep 17 00:00:00 2001 From: Weblate <noreply@weblate.org> Date: Wed, 24 May 2023 12:40:12 +0200 Subject: [PATCH 01/10] Update translation files Updated by "Cleanup translation files" hook in Weblate. Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/ --- js/src/i18n/ar.json | 1 - js/src/i18n/be.json | 1 - js/src/i18n/bn.json | 1 - js/src/i18n/ca.json | 1 - js/src/i18n/cs.json | 1 - js/src/i18n/cy.json | 1 - js/src/i18n/de.json | 1 - js/src/i18n/eo.json | 1 - js/src/i18n/es.json | 1 - js/src/i18n/eu.json | 1 - js/src/i18n/fa.json | 1 - js/src/i18n/fi.json | 1 - js/src/i18n/gd.json | 1 - js/src/i18n/gl.json | 1 - js/src/i18n/he.json | 1 - js/src/i18n/hr.json | 1 - js/src/i18n/hu.json | 1 - js/src/i18n/id.json | 1 - js/src/i18n/it.json | 1 - js/src/i18n/ja.json | 1 - js/src/i18n/kab.json | 1 - js/src/i18n/kn.json | 1 - js/src/i18n/nl.json | 1 - js/src/i18n/nn.json | 1 - js/src/i18n/oc.json | 1 - js/src/i18n/pl.json | 1 - js/src/i18n/pt.json | 1 - js/src/i18n/pt_BR.json | 1 - js/src/i18n/ru.json | 1 - js/src/i18n/sl.json | 1 - js/src/i18n/sv.json | 1 - js/src/i18n/zh_Hans.json | 1 - js/src/i18n/zh_Hant.json | 1 - 33 files changed, 33 deletions(-) diff --git a/js/src/i18n/ar.json b/js/src/i18n/ar.json index d035acd36..f46cdbd26 100644 --- a/js/src/i18n/ar.json +++ b/js/src/i18n/ar.json @@ -1070,7 +1070,6 @@ "You don't have any upcoming events. Maybe try another filter?": "", "You excluded member {member}.": "", "You have attended {count} events in the past.": "", - "You have been disconnected": "", "You have been invited by {invitedBy} to the following group:": "", "You have been removed from this group's members.": "", "You have cancelled your participation": "لقد ألغيتَ مشاركتك", diff --git a/js/src/i18n/be.json b/js/src/i18n/be.json index 36d589722..cfb8b6a79 100644 --- a/js/src/i18n/be.json +++ b/js/src/i18n/be.json @@ -1070,7 +1070,6 @@ "You don't have any upcoming events. Maybe try another filter?": "", "You excluded member {member}.": "", "You have attended {count} events in the past.": "", - "You have been disconnected": "", "You have been invited by {invitedBy} to the following group:": "", "You have been removed from this group's members.": "", "You have cancelled your participation": "", diff --git a/js/src/i18n/bn.json b/js/src/i18n/bn.json index f403abed9..c839583c0 100644 --- a/js/src/i18n/bn.json +++ b/js/src/i18n/bn.json @@ -1070,7 +1070,6 @@ "You don't have any upcoming events. Maybe try another filter?": "", "You excluded member {member}.": "", "You have attended {count} events in the past.": "", - "You have been disconnected": "", "You have been invited by {invitedBy} to the following group:": "", "You have been removed from this group's members.": "", "You have cancelled your participation": "", diff --git a/js/src/i18n/ca.json b/js/src/i18n/ca.json index bd0f94750..5b81b05bb 100644 --- a/js/src/i18n/ca.json +++ b/js/src/i18n/ca.json @@ -1070,7 +1070,6 @@ "You don't have any upcoming events. Maybe try another filter?": "", "You excluded member {member}.": "Has exclòs el/la membre {member}.", "You have attended {count} events in the past.": "", - "You have been disconnected": "S'ha desconnectat la sessió", "You have been invited by {invitedBy} to the following group:": "{invitedBy} t'ha convidat a afegir-te al següent grup:", "You have been removed from this group's members.": "T'han tret d'aquest grup.", "You have cancelled your participation": "Has canceŀlat la teva participació", diff --git a/js/src/i18n/cs.json b/js/src/i18n/cs.json index 51cdd69e5..ab09773c0 100644 --- a/js/src/i18n/cs.json +++ b/js/src/i18n/cs.json @@ -1347,7 +1347,6 @@ "You don't have any upcoming events. Maybe try another filter?": "Nemáte žádné nadcházející události. Možná zkuste jiný filtr?", "You excluded member {member}.": "Vyloučili jste člena {member}.", "You have attended {count} events in the past.": "V minulosti jste se nezúčastnili žádné akce.|V minulosti jste se zúčastnili jedné akce.|V minulosti jste se zúčastnili {count} akcí.", - "You have been disconnected": "Byl jste odpojen", "You have been invited by {invitedBy} to the following group:": "Byli jste pozváni společností {invitedBy} do následující skupiny:", "You have been removed from this group's members.": "Byli jste odstraněni z členů této skupiny.", "You have cancelled your participation": "Zrušili jste svou účast", diff --git a/js/src/i18n/cy.json b/js/src/i18n/cy.json index d81dd9911..9cd7ae6b3 100644 --- a/js/src/i18n/cy.json +++ b/js/src/i18n/cy.json @@ -1070,7 +1070,6 @@ "You don't have any upcoming events. Maybe try another filter?": "", "You excluded member {member}.": "", "You have attended {count} events in the past.": "", - "You have been disconnected": "", "You have been invited by {invitedBy} to the following group:": "", "You have been removed from this group's members.": "", "You have cancelled your participation": "", diff --git a/js/src/i18n/de.json b/js/src/i18n/de.json index 101e0c056..765d03c39 100644 --- a/js/src/i18n/de.json +++ b/js/src/i18n/de.json @@ -1275,7 +1275,6 @@ "You don't have any upcoming events. Maybe try another filter?": "Sie haben keine anstehenden Veranstaltungen. Möglicherweise eine andere Filtereinstellung versuchen?", "You excluded member {member}.": "Sie haben {member} ausgeschlossen.", "You have attended {count} events in the past.": "Sie haben in der Vergangenheit keine Veranstaltungen besucht.|Sie haben in der Vergangenheit eine Veranstaltung besucht.|Sie haben in der Vergangenheit {count} Veranstaltungen besucht.", - "You have been disconnected": "Ihre Verbindung wurde getrennt", "You have been invited by {invitedBy} to the following group:": "Sie wurden von {invitedBy} zu dieser Gruppe eingeladen:", "You have been removed from this group's members.": "Sie wurden von diesen Gruppenmitgliedern entfernt.", "You have cancelled your participation": "Sie haben Ihre Teilnahme abgesagt", diff --git a/js/src/i18n/eo.json b/js/src/i18n/eo.json index f7191f8f6..f1e607b1e 100644 --- a/js/src/i18n/eo.json +++ b/js/src/i18n/eo.json @@ -1070,7 +1070,6 @@ "You don't have any upcoming events. Maybe try another filter?": "", "You excluded member {member}.": "", "You have attended {count} events in the past.": "", - "You have been disconnected": "", "You have been invited by {invitedBy} to the following group:": "", "You have been removed from this group's members.": "", "You have cancelled your participation": "", diff --git a/js/src/i18n/es.json b/js/src/i18n/es.json index f376da6e5..c8cae1f91 100644 --- a/js/src/i18n/es.json +++ b/js/src/i18n/es.json @@ -1226,7 +1226,6 @@ "You don't have any upcoming events. Maybe try another filter?": "No tienes ningún evento próximo. ¿Quizás probar con otro filtro?", "You excluded member {member}.": "Ha excluido al miembro {member}.", "You have attended {count} events in the past.": "No ha asistido a ningún evento en el pasado. |Ha asistido a un evento en el pasado. |Ha asistido a {count} eventos en el pasado.", - "You have been disconnected": "Has sido desconectado", "You have been invited by {invitedBy} to the following group:": "Usted ha sido invitado por {invitedBy} al siguiente grupo:", "You have been removed from this group's members.": "Ha sido eliminado de los miembros de este grupo.", "You have cancelled your participation": "Has cancelado tu participación", diff --git a/js/src/i18n/eu.json b/js/src/i18n/eu.json index 514c6f3e2..396990b27 100644 --- a/js/src/i18n/eu.json +++ b/js/src/i18n/eu.json @@ -1070,7 +1070,6 @@ "You don't have any upcoming events. Maybe try another filter?": "", "You excluded member {member}.": "", "You have attended {count} events in the past.": "", - "You have been disconnected": "", "You have been invited by {invitedBy} to the following group:": "", "You have been removed from this group's members.": "", "You have cancelled your participation": "", diff --git a/js/src/i18n/fa.json b/js/src/i18n/fa.json index c196dd3dd..ca7b12ec3 100644 --- a/js/src/i18n/fa.json +++ b/js/src/i18n/fa.json @@ -1070,7 +1070,6 @@ "You don't have any upcoming events. Maybe try another filter?": "", "You excluded member {member}.": "", "You have attended {count} events in the past.": "", - "You have been disconnected": "", "You have been invited by {invitedBy} to the following group:": "", "You have been removed from this group's members.": "", "You have cancelled your participation": "", diff --git a/js/src/i18n/fi.json b/js/src/i18n/fi.json index 10e234c7c..b87e44644 100644 --- a/js/src/i18n/fi.json +++ b/js/src/i18n/fi.json @@ -1070,7 +1070,6 @@ "You don't have any upcoming events. Maybe try another filter?": "", "You excluded member {member}.": "Jätit pois käyttäjän {member}.", "You have attended {count} events in the past.": "", - "You have been disconnected": "Yhteytesi on katkaistu", "You have been invited by {invitedBy} to the following group:": "{invitedBy} on kutsunut sinut seuraaviin ryhmiin:", "You have been removed from this group's members.": "Sinut on poistettu ryhmän jäsenistä.", "You have cancelled your participation": "Olet perunut osallistumisesi", diff --git a/js/src/i18n/gd.json b/js/src/i18n/gd.json index b6510172f..d72e021cf 100644 --- a/js/src/i18n/gd.json +++ b/js/src/i18n/gd.json @@ -1145,7 +1145,6 @@ "You don't have any upcoming events. Maybe try another filter?": "Chan eil tachartas ri thighinn agad. Am feuch thu criathrag eile?", "You excluded member {member}.": "Dhùin thu am ball {member} a-mach.", "You have attended {count} events in the past.": "", - "You have been disconnected": "Chaidh do cheangal a bhriseadh", "You have been invited by {invitedBy} to the following group:": "Thug {invitedBy} cuireadh dhut dhan bhuidheann seo:", "You have been removed from this group's members.": "Chaidh do thoirt air falbh o bhallrachd a’ bhuidhinn seo.", "You have cancelled your participation": "Sguir thu dhen chom-pàirteachadh agad", diff --git a/js/src/i18n/gl.json b/js/src/i18n/gl.json index e5bcbb838..587752476 100644 --- a/js/src/i18n/gl.json +++ b/js/src/i18n/gl.json @@ -1070,7 +1070,6 @@ "You don't have any upcoming events. Maybe try another filter?": "", "You excluded member {member}.": "Excluíches a {member}.", "You have attended {count} events in the past.": "", - "You have been disconnected": "A túa sesión rematou", "You have been invited by {invitedBy} to the following group:": "Foches convidada por {invitedBy} ó seguinte grupo:", "You have been removed from this group's members.": "Sacáronte deste grupo.", "You have cancelled your participation": "Cancelaches a túa participación", diff --git a/js/src/i18n/he.json b/js/src/i18n/he.json index 162021687..2456b23d2 100644 --- a/js/src/i18n/he.json +++ b/js/src/i18n/he.json @@ -367,7 +367,6 @@ "You are participating in this event anonymously but didn't confirm participation": "את.ה משתתפ.ת באירוע זה באופן אנונימי אך טרם אישרת את השתתפותך", "You can add tags by hitting the Enter key or by adding a comma": "ניתן להוסיף תגיות על־ידי לחיצה על מקש Enter או על־ידי הוספת פסיק", "You can try another search term or drag and drop the marker on the map": "ניתן לנסות חיפוש נוסף או לגרור את הסמן שעל המפה", - "You have been disconnected": "נותקת", "You have cancelled your participation": "ביטלת את השתתפותך", "You have one event in {days} days.": "אין לך אירועים ב־{days} days | יש לך אירוע אחד ב־{days} ימים. | יש לך {count} אירועים ב־{days} ימים", "You have one event today.": "אין לך אירועים היום | יש לך אירוע אחד היום | יש לך {count} אירועים היום", diff --git a/js/src/i18n/hr.json b/js/src/i18n/hr.json index 4c3d45ead..bc05bae06 100644 --- a/js/src/i18n/hr.json +++ b/js/src/i18n/hr.json @@ -1186,7 +1186,6 @@ "You don't have any upcoming events. Maybe try another filter?": "", "You excluded member {member}.": "Isključili ste člana {member}.", "You have attended {count} events in the past.": "", - "You have been disconnected": "Isključeni ste", "You have been invited by {invitedBy} to the following group:": "{invitedBy} su vas pozvali u grupu:", "You have been removed from this group's members.": "Izbačeni ste iz ove grupe.", "You have cancelled your participation": "Otkazali ste svoje sudjelovanje", diff --git a/js/src/i18n/hu.json b/js/src/i18n/hu.json index c2dabfdee..b35a138cc 100644 --- a/js/src/i18n/hu.json +++ b/js/src/i18n/hu.json @@ -1234,7 +1234,6 @@ "You don't have any upcoming events. Maybe try another filter?": "Nincsenek közelgő eseményei. Esetleg megpróbál egy másik szűrőt?", "You excluded member {member}.": "Ön kizárta {member} tagot.", "You have attended {count} events in the past.": "Ön nem vett részt semmilyen eseményen a múltban.|Ön egy eseményen vett részt a múltban.|Ön {count} eseményen vett részt a múltban.", - "You have been disconnected": "A kapcsolata bontva lett", "You have been invited by {invitedBy} to the following group:": "{invitedBy} meghívta Önt a következő csoportba:", "You have been removed from this group's members.": "El lett távolítva a csoport tagjai közül.", "You have cancelled your participation": "Törölte a részvételét", diff --git a/js/src/i18n/id.json b/js/src/i18n/id.json index 54dfc9b78..b68cb6942 100644 --- a/js/src/i18n/id.json +++ b/js/src/i18n/id.json @@ -1080,7 +1080,6 @@ "You don't have any upcoming events. Maybe try another filter?": "", "You excluded member {member}.": "", "You have attended {count} events in the past.": "", - "You have been disconnected": "", "You have been invited by {invitedBy} to the following group:": "Anda telah diundang oleh {invitedBy} ke kelompok berikut:", "You have been removed from this group's members.": "", "You have cancelled your participation": "Anda telah membatalkan keikutsertaan Anda", diff --git a/js/src/i18n/it.json b/js/src/i18n/it.json index e05db4844..0f86d0434 100644 --- a/js/src/i18n/it.json +++ b/js/src/i18n/it.json @@ -1239,7 +1239,6 @@ "You don't have any upcoming events. Maybe try another filter?": "Non ci sono eventi imminenti. Forse si può provare con un altro filtro?", "You excluded member {member}.": "Hai escluso il membro {member}.", "You have attended {count} events in the past.": "Non hai ancora partecipato ad alcun evento.|Hai partecipato ad un evento.|Hai partecipato a {count} eventi.", - "You have been disconnected": "Sei stato disconnesso", "You have been invited by {invitedBy} to the following group:": "Sei stato invitato da {invitedBy} al seguente gruppo:", "You have been removed from this group's members.": "Sei stato rimosso dai membri di questo gruppo.", "You have cancelled your participation": "Hai cancellato la tua partecipazione", diff --git a/js/src/i18n/ja.json b/js/src/i18n/ja.json index cb6d0cb80..de59def4c 100644 --- a/js/src/i18n/ja.json +++ b/js/src/i18n/ja.json @@ -1100,7 +1100,6 @@ "You don't have any upcoming events. Maybe try another filter?": "", "You excluded member {member}.": "", "You have attended {count} events in the past.": "", - "You have been disconnected": "", "You have been invited by {invitedBy} to the following group:": "", "You have been removed from this group's members.": "あなたはこのグループのメンバーから除外されました。", "You have cancelled your participation": "", diff --git a/js/src/i18n/kab.json b/js/src/i18n/kab.json index 41744acaa..44e0e299c 100644 --- a/js/src/i18n/kab.json +++ b/js/src/i18n/kab.json @@ -1070,7 +1070,6 @@ "You don't have any upcoming events. Maybe try another filter?": "", "You excluded member {member}.": "", "You have attended {count} events in the past.": "", - "You have been disconnected": "", "You have been invited by {invitedBy} to the following group:": "", "You have been removed from this group's members.": "", "You have cancelled your participation": "", diff --git a/js/src/i18n/kn.json b/js/src/i18n/kn.json index bdeff5646..f9fb383a8 100644 --- a/js/src/i18n/kn.json +++ b/js/src/i18n/kn.json @@ -1070,7 +1070,6 @@ "You don't have any upcoming events. Maybe try another filter?": "", "You excluded member {member}.": "", "You have attended {count} events in the past.": "", - "You have been disconnected": "", "You have been invited by {invitedBy} to the following group:": "", "You have been removed from this group's members.": "", "You have cancelled your participation": "", diff --git a/js/src/i18n/nl.json b/js/src/i18n/nl.json index d0bda65d9..42b10c989 100644 --- a/js/src/i18n/nl.json +++ b/js/src/i18n/nl.json @@ -1080,7 +1080,6 @@ "You don't have any upcoming events. Maybe try another filter?": "", "You excluded member {member}.": "U sloot lid {member} uit.", "You have attended {count} events in the past.": "", - "You have been disconnected": "De verbinding is verbroken", "You have been invited by {invitedBy} to the following group:": "U bent uitgenodigd door {invitedBy} voor deelname aan de volgende groep:", "You have been removed from this group's members.": "Je bent uitgeschreven als lid van deze groep.", "You have cancelled your participation": "U hebt uw deelname geannuleerd", diff --git a/js/src/i18n/nn.json b/js/src/i18n/nn.json index 043ed94bb..0a3a20611 100644 --- a/js/src/i18n/nn.json +++ b/js/src/i18n/nn.json @@ -1234,7 +1234,6 @@ "You don't have any upcoming events. Maybe try another filter?": "Du har ingen komande hendingar. Kanskje du kan prøva eit anna søk?", "You excluded member {member}.": "Du kasta ut medlemen {member}.", "You have attended {count} events in the past.": "Du har ikkje vore med på hendingar tidlegare.|Du har vore med på ei hending tidlegare.|Du har vore med på {count} hendingar tidlegare.", - "You have been disconnected": "Du er fråkopla", "You have been invited by {invitedBy} to the following group:": "{invitedBy} har invitert deg til denne gruppa:", "You have been removed from this group's members.": "Du er ikkje lenger medlem i denne gruppa.", "You have cancelled your participation": "Du har avlyst deltakinga di", diff --git a/js/src/i18n/oc.json b/js/src/i18n/oc.json index f91b195ad..c9df6e556 100644 --- a/js/src/i18n/oc.json +++ b/js/src/i18n/oc.json @@ -1070,7 +1070,6 @@ "You don't have any upcoming events. Maybe try another filter?": "", "You excluded member {member}.": "", "You have attended {count} events in the past.": "", - "You have been disconnected": "Sètz estat desconnectat", "You have been invited by {invitedBy} to the following group:": "{invitedBy} vos a convidat a rejónher lo grop seguent :", "You have been removed from this group's members.": "Vos an mes defòra del grop.", "You have cancelled your participation": "Avètz anullada vòstra participacion", diff --git a/js/src/i18n/pl.json b/js/src/i18n/pl.json index 4c3b73599..aad9952ee 100644 --- a/js/src/i18n/pl.json +++ b/js/src/i18n/pl.json @@ -1070,7 +1070,6 @@ "You don't have any upcoming events. Maybe try another filter?": "", "You excluded member {member}.": "", "You have attended {count} events in the past.": "", - "You have been disconnected": "Zostałeś(-aś) rozłączony(-a)", "You have been invited by {invitedBy} to the following group:": "Zostałeś zaproszony przez {invitedBy} do następującej grupy:", "You have been removed from this group's members.": "Zostałeś(-aś) usunięty(-a) z członków tej grupy.", "You have cancelled your participation": "Wycofałeś(-aś) swój udział", diff --git a/js/src/i18n/pt.json b/js/src/i18n/pt.json index 57c3435d9..517d2a84d 100644 --- a/js/src/i18n/pt.json +++ b/js/src/i18n/pt.json @@ -1070,7 +1070,6 @@ "You don't have any upcoming events. Maybe try another filter?": "", "You excluded member {member}.": "", "You have attended {count} events in the past.": "", - "You have been disconnected": "", "You have been invited by {invitedBy} to the following group:": "", "You have been removed from this group's members.": "", "You have cancelled your participation": "", diff --git a/js/src/i18n/pt_BR.json b/js/src/i18n/pt_BR.json index 72483222b..227fae897 100644 --- a/js/src/i18n/pt_BR.json +++ b/js/src/i18n/pt_BR.json @@ -1070,7 +1070,6 @@ "You don't have any upcoming events. Maybe try another filter?": "", "You excluded member {member}.": "", "You have attended {count} events in the past.": "", - "You have been disconnected": "Você foi desconectado", "You have been invited by {invitedBy} to the following group:": "Você foi convidado por {invitedBy} para o seguinte grupo:", "You have been removed from this group's members.": "Você foi removido dos membros deste grupo.", "You have cancelled your participation": "Você cancelou a sua participação", diff --git a/js/src/i18n/ru.json b/js/src/i18n/ru.json index 9dae61daa..a610c8c40 100644 --- a/js/src/i18n/ru.json +++ b/js/src/i18n/ru.json @@ -1070,7 +1070,6 @@ "You don't have any upcoming events. Maybe try another filter?": "", "You excluded member {member}.": "Вы исключили участника {member}.", "You have attended {count} events in the past.": "", - "You have been disconnected": "Вы были отключены", "You have been invited by {invitedBy} to the following group:": "Вы были приглашены пользователем {invitedBy} в следующую группу:", "You have been removed from this group's members.": "Вы были удалены из участников этой группы.", "You have cancelled your participation": "Вы отказались от участия", diff --git a/js/src/i18n/sl.json b/js/src/i18n/sl.json index 57bf0a7f9..933b18ea6 100644 --- a/js/src/i18n/sl.json +++ b/js/src/i18n/sl.json @@ -1070,7 +1070,6 @@ "You don't have any upcoming events. Maybe try another filter?": "", "You excluded member {member}.": "Izključili ste člana {member}.", "You have attended {count} events in the past.": "", - "You have been disconnected": "Povezava je bila prekinjena", "You have been invited by {invitedBy} to the following group:": "{invitedBy} vas je povabil v naslednjo skupino:", "You have been removed from this group's members.": "Odstranjeni ste bili iz te skupine.", "You have cancelled your participation": "Odpovedali ste udeležbo", diff --git a/js/src/i18n/sv.json b/js/src/i18n/sv.json index 06ba7dbde..1a5d0ffc1 100644 --- a/js/src/i18n/sv.json +++ b/js/src/i18n/sv.json @@ -1071,7 +1071,6 @@ "You don't have any upcoming events. Maybe try another filter?": "", "You excluded member {member}.": "", "You have attended {count} events in the past.": "", - "You have been disconnected": "Du har blivit frånkopplad", "You have been invited by {invitedBy} to the following group:": "Du har blivit inbjuden av {invitedBy} till följande grupp:", "You have been removed from this group's members.": "Du har blivit borttagen som gruppmedlem.", "You have cancelled your participation": "Du har avslutat ditt deltagande", diff --git a/js/src/i18n/zh_Hans.json b/js/src/i18n/zh_Hans.json index 573aa344f..9ecdc037e 100644 --- a/js/src/i18n/zh_Hans.json +++ b/js/src/i18n/zh_Hans.json @@ -1239,7 +1239,6 @@ "You don't have any upcoming events. Maybe try another filter?": "你没有任何即将发生的活动。也许可以尝试另一个过滤条件?", "You excluded member {member}.": "你排除了会员{member}。", "You have attended {count} events in the past.": "你在过去没有参加过任何活动。|你在过去参加过一次活动。|你在过去参加过{count}次活动。", - "You have been disconnected": "你已经离线", "You have been invited by {invitedBy} to the following group:": "您已被{invitedBy}邀请加入以下群组:", "You have been removed from this group's members.": "你已被从这个群组的成员中删除。", "You have cancelled your participation": "你已经取消了你的参与", diff --git a/js/src/i18n/zh_Hant.json b/js/src/i18n/zh_Hant.json index 9ec83939c..faf0062b6 100644 --- a/js/src/i18n/zh_Hant.json +++ b/js/src/i18n/zh_Hant.json @@ -1106,7 +1106,6 @@ "You don't have any upcoming events. Maybe try another filter?": "", "You excluded member {member}.": "", "You have attended {count} events in the past.": "", - "You have been disconnected": "", "You have been invited by {invitedBy} to the following group:": "", "You have been removed from this group's members.": "", "You have cancelled your participation": "", From 96129d2339133027220d3b5fcb1c52f84bcc5cbb Mon Sep 17 00:00:00 2001 From: Thomas Citharel <tcit@tcit.fr> Date: Wed, 24 May 2023 15:29:26 +0200 Subject: [PATCH 02/10] feat(front): make profile members link to profile on group admin view and the reverse Signed-off-by: Thomas Citharel <tcit@tcit.fr> --- js/src/views/Admin/AdminGroupProfile.vue | 58 +++++++++++++++++------- js/src/views/Admin/AdminProfile.vue | 48 ++++++++++++++------ 2 files changed, 76 insertions(+), 30 deletions(-) diff --git a/js/src/views/Admin/AdminGroupProfile.vue b/js/src/views/Admin/AdminGroupProfile.vue index 422672e2a..a74050f2c 100644 --- a/js/src/views/Admin/AdminGroupProfile.vue +++ b/js/src/views/Admin/AdminGroupProfile.vue @@ -114,26 +114,52 @@ > <article class="flex gap-1"> <div class="flex-none"> - <figure v-if="props.row.actor.avatar"> - <img - class="rounded" - :src="props.row.actor.avatar.url" - alt="" - width="48" - height="48" - /> - </figure> - <AccountCircle :size="48" v-else /> + <router-link + class="no-underline" + :to="{ + name: RouteName.ADMIN_PROFILE, + params: { id: props.row.actor.id }, + }" + > + <figure v-if="props.row.actor.avatar"> + <img + class="rounded" + :src="props.row.actor.avatar.url" + alt="" + width="48" + height="48" + /> + </figure> + <AccountCircle :size="48" v-else /> + </router-link> </div> <div> <div class="prose dark:prose-invert"> - <span v-if="props.row.actor.name">{{ - props.row.actor.name - }}</span - ><span v-else>@{{ usernameWithDomain(props.row.actor) }}</span + <router-link + class="no-underline" + :to="{ + name: RouteName.ADMIN_PROFILE, + params: { id: props.row.actor.id }, + }" + v-if="props.row.actor.name" + >{{ props.row.actor.name }}</router-link + ><router-link + class="no-underline" + :to="{ + name: RouteName.ADMIN_PROFILE, + params: { id: props.row.actor.id }, + }" + v-else + >@{{ usernameWithDomain(props.row.actor) }}</router-link ><br /> - <span v-if="props.row.actor.name" - >@{{ usernameWithDomain(props.row.actor) }}</span + <router-link + class="no-underline" + :to="{ + name: RouteName.ADMIN_PROFILE, + params: { id: props.row.actor.id }, + }" + v-if="props.row.actor.name" + >@{{ usernameWithDomain(props.row.actor) }}</router-link > </div> </div> diff --git a/js/src/views/Admin/AdminProfile.vue b/js/src/views/Admin/AdminProfile.vue index 32ecf05d4..9494ba99a 100644 --- a/js/src/views/Admin/AdminProfile.vue +++ b/js/src/views/Admin/AdminProfile.vue @@ -199,23 +199,43 @@ v-slot="props" > <article class="flex gap-2"> - <figure class="" v-if="props.row.parent.avatar"> - <img - class="rounded-full" - :src="props.row.parent.avatar.url" - alt="" - width="48" - height="48" - /> - </figure> - <AccountCircle v-else :size="48" /> + <router-link + class="no-underline" + :to="{ + name: RouteName.ADMIN_GROUP_PROFILE, + params: { id: props.row.parent.id }, + }" + > + <figure class="" v-if="props.row.parent.avatar"> + <img + class="rounded-full" + :src="props.row.parent.avatar.url" + alt="" + width="48" + height="48" + /> + </figure> + <AccountCircle v-else :size="48" /> + </router-link> <div class=""> <div class="prose dark:prose-invert"> - <span v-if="props.row.parent.name">{{ - props.row.parent.name - }}</span + <router-link + class="no-underline" + :to="{ + name: RouteName.ADMIN_GROUP_PROFILE, + params: { id: props.row.parent.id }, + }" + v-if="props.row.parent.name" + >{{ props.row.parent.name }}</router-link ><br /> - <span>@{{ usernameWithDomain(props.row.parent) }}</span> + <router-link + class="no-underline" + :to="{ + name: RouteName.ADMIN_GROUP_PROFILE, + params: { id: props.row.parent.id }, + }" + >@{{ usernameWithDomain(props.row.parent) }}</router-link + > </div> </div> </article> From 2933ee06791a24dbf8c8b2a2eabc67f71e56f361 Mon Sep 17 00:00:00 2001 From: Thomas Citharel <tcit@tcit.fr> Date: Wed, 24 May 2023 15:29:49 +0200 Subject: [PATCH 03/10] fix(graphql): fix calling GET_GROUP Signed-off-by: Thomas Citharel <tcit@tcit.fr> --- js/src/graphql/group.ts | 7 ------- 1 file changed, 7 deletions(-) diff --git a/js/src/graphql/group.ts b/js/src/graphql/group.ts index c68278b52..689288b65 100644 --- a/js/src/graphql/group.ts +++ b/js/src/graphql/group.ts @@ -1,5 +1,4 @@ import gql from "graphql-tag"; -import { DISCUSSION_BASIC_FIELDS_FRAGMENT } from "./discussion"; import { RESOURCE_METADATA_BASIC_FIELDS_FRAGMENT } from "./resources"; import { POST_BASIC_FIELDS } from "./post"; import { ACTOR_FRAGMENT } from "./actor"; @@ -246,7 +245,6 @@ export const GROUP_FIELDS_FRAGMENTS = gql` } } ${GROUP_BASIC_FIELDS_FRAGMENTS} - ${DISCUSSION_BASIC_FIELDS_FRAGMENT} ${RESOURCE_METADATA_BASIC_FIELDS_FRAGMENT} `; @@ -278,8 +276,6 @@ export const GET_GROUP = gql` $postsLimit: Int $membersPage: Int $membersLimit: Int - $discussionsPage: Int - $discussionsLimit: Int ) { getGroup(id: $id) { mediaSize @@ -287,9 +283,6 @@ export const GET_GROUP = gql` } } ${GROUP_FIELDS_FRAGMENTS} - ${DISCUSSION_BASIC_FIELDS_FRAGMENT} - ${POST_BASIC_FIELDS} - ${RESOURCE_METADATA_BASIC_FIELDS_FRAGMENT} `; export const CREATE_GROUP = gql` From 3e0324d36ec5a8aa388e6b5d598a6f9a0c596797 Mon Sep 17 00:00:00 2001 From: Thomas Citharel <tcit@tcit.fr> Date: Wed, 24 May 2023 15:31:48 +0200 Subject: [PATCH 04/10] feat(front): make profiles and group admin views default to local Signed-off-by: Thomas Citharel <tcit@tcit.fr> --- js/src/views/Admin/GroupProfiles.vue | 2 +- js/src/views/Admin/ProfilesView.vue | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/js/src/views/Admin/GroupProfiles.vue b/js/src/views/Admin/GroupProfiles.vue index cd30e5875..dbd904eea 100644 --- a/js/src/views/Admin/GroupProfiles.vue +++ b/js/src/views/Admin/GroupProfiles.vue @@ -133,7 +133,7 @@ const preferredUsername = ref(""); const name = ref(""); const domain = ref(""); -const local = useRouteQuery("local", false, booleanTransformer); +const local = useRouteQuery("local", true, booleanTransformer); const suspended = useRouteQuery("suspended", false, booleanTransformer); const page = useRouteQuery("page", 1, integerTransformer); diff --git a/js/src/views/Admin/ProfilesView.vue b/js/src/views/Admin/ProfilesView.vue index 9d51b9207..67bb16fb6 100644 --- a/js/src/views/Admin/ProfilesView.vue +++ b/js/src/views/Admin/ProfilesView.vue @@ -119,7 +119,7 @@ const preferredUsername = ref(""); const name = ref(""); const domain = ref(""); -const local = useRouteQuery("local", false, booleanTransformer); +const local = useRouteQuery("local", true, booleanTransformer); const suspended = useRouteQuery("suspended", false, booleanTransformer); const page = useRouteQuery("page", 1, integerTransformer); From 94f186ce5080316cd633e0344651b0050c2f14d4 Mon Sep 17 00:00:00 2001 From: Thomas Citharel <tcit@tcit.fr> Date: Wed, 24 May 2023 15:36:38 +0200 Subject: [PATCH 05/10] fix(front): increase padding next to arrow down in <select> elements Signed-off-by: Thomas Citharel <tcit@tcit.fr> --- js/src/assets/oruga-tailwindcss.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/src/assets/oruga-tailwindcss.css b/js/src/assets/oruga-tailwindcss.css index f06833582..06e5fd8c2 100644 --- a/js/src/assets/oruga-tailwindcss.css +++ b/js/src/assets/oruga-tailwindcss.css @@ -193,7 +193,7 @@ body { /* Select */ .select { - @apply dark:bg-zinc-600 dark:placeholder:text-zinc-400 dark:text-zinc-50 rounded pl-2 pr-6 border-2 border-transparent h-10 shadow-none border rounded; + @apply dark:bg-zinc-600 dark:placeholder:text-zinc-400 dark:text-zinc-50 rounded pl-2 pr-8 border-2 border-transparent h-10 shadow-none border rounded; } /* Radio */ From 7fa452d9e3f9bb2443e571c9a32eaed51e32480a Mon Sep 17 00:00:00 2001 From: Thomas Citharel <tcit@tcit.fr> Date: Wed, 24 May 2023 15:41:13 +0200 Subject: [PATCH 06/10] feat(front): improve padding on event tags Signed-off-by: Thomas Citharel <tcit@tcit.fr> --- js/src/views/Event/EventView.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/src/views/Event/EventView.vue b/js/src/views/Event/EventView.vue index 2d5b2015d..73092ebab 100755 --- a/js/src/views/Event/EventView.vue +++ b/js/src/views/Event/EventView.vue @@ -108,7 +108,7 @@ <tag v-if="eventCategory" class="category" capitalize>{{ eventCategory }}</tag> - <router-link + <router-link class="rounded-md truncate text-sm text-violet-title py-1 bg-purple-3 dark:text-violet-3 category" v-for="tag in event?.tags ?? []" :key="tag.title" :to="{ name: RouteName.TAG, params: { tag: tag.title } }" From dc3b93ffb5a4b072aec792533fd6e4b58ed7a893 Mon Sep 17 00:00:00 2001 From: Thomas Citharel <tcit@tcit.fr> Date: Wed, 24 May 2023 16:14:19 +0200 Subject: [PATCH 07/10] feat(front): show skeleton content on event view until the event is loaded Signed-off-by: Thomas Citharel <tcit@tcit.fr> --- .../Event/SkeletonDateCalendarIcon.vue | 18 +++++ js/src/views/Event/EventView.vue | 71 ++++++++++++++++--- 2 files changed, 81 insertions(+), 8 deletions(-) create mode 100644 js/src/components/Event/SkeletonDateCalendarIcon.vue diff --git a/js/src/components/Event/SkeletonDateCalendarIcon.vue b/js/src/components/Event/SkeletonDateCalendarIcon.vue new file mode 100644 index 000000000..b31ad986d --- /dev/null +++ b/js/src/components/Event/SkeletonDateCalendarIcon.vue @@ -0,0 +1,18 @@ +<template> + <div + class="datetime-container flex flex-col rounded-lg text-center justify-center overflow-hidden items-stretch bg-white dark:bg-gray-700 text-violet-3 dark:text-white" + > + <div class="datetime-container-content"> + <div class="ml-2 h-8 bg-slate-200 w-16"></div> + <div class="ml-2 mt-2 h-4 bg-slate-200 w-16"></div> + </div> + </div> +</template> + +<style lang="scss" scoped> +div.datetime-container { + width: calc(80px); + box-shadow: 0 0 12px rgba(0, 0, 0, 0.2); + height: calc(80px); +} +</style> diff --git a/js/src/views/Event/EventView.vue b/js/src/views/Event/EventView.vue index 73092ebab..8046344b9 100755 --- a/js/src/views/Event/EventView.vue +++ b/js/src/views/Event/EventView.vue @@ -7,7 +7,12 @@ class="flex flex-col relative pb-2 bg-white dark:bg-zinc-700 my-2 rounded" > <div class="date-calendar-icon-wrapper relative" v-if="event?.beginsOn"> + <skeleton-date-calendar-icon + v-if="eventLoading" + class="absolute left-3 -top-16" + /> <date-calendar-icon + v-else :date="event.beginsOn.toString()" class="absolute left-3 -top-16" /> @@ -16,7 +21,12 @@ <section class="intro px-2 pt-4" dir="auto"> <div class="flex flex-wrap gap-2"> <div class="flex-1 min-w-[300px]"> + <div + v-if="eventLoading" + class="animate-pulse mb-2 h-12 bg-slate-200 w-3/4" + /> <h1 + v-else class="text-4xl font-bold m-0" dir="auto" :lang="event?.language" @@ -24,7 +34,11 @@ {{ event?.title }} </h1> <div class="organizer"> - <div v-if="event?.organizerActor && !event?.attributedTo"> + <div + v-if="eventLoading" + class="animate-pulse mb-2 h-6 space-y-6 bg-slate-200 w-64" + /> + <div v-else-if="event?.organizerActor && !event?.attributedTo"> <popover-actor-card :actor="event.organizerActor" :inline="true" @@ -71,7 +85,11 @@ </span> </div> <div class="flex flex-wrap items-center gap-2 gap-y-4 mt-2 my-3"> - <p v-if="event?.status !== EventStatus.CONFIRMED"> + <div + v-if="eventLoading" + class="animate-pulse mb-2 h-6 space-y-6 bg-slate-200 w-64" + /> + <p v-else-if="event?.status !== EventStatus.CONFIRMED"> <tag variant="warning" v-if="event?.status === EventStatus.TENTATIVE" @@ -83,7 +101,7 @@ >{{ t("Event cancelled") }}</tag > </p> - <template v-if="!event?.draft"> + <template v-if="!eventLoading && !event?.draft"> <p v-if="event?.visibility === EventVisibility.PUBLIC" class="inline-flex gap-1" @@ -104,11 +122,16 @@ <tag variant="info">{{ organizerDomain }}</tag> </a> </template> - <p class="flex flex-wrap gap-1 items-center" dir="auto"> + <div + v-if="eventLoading" + class="animate-pulse mb-2 h-6 space-y-6 bg-slate-200 w-64" + /> + <p v-else class="flex flex-wrap gap-1 items-center" dir="auto"> <tag v-if="eventCategory" class="category" capitalize>{{ eventCategory }}</tag> - <router-link class="rounded-md truncate text-sm text-violet-title py-1 bg-purple-3 dark:text-violet-3 category" + <router-link + class="rounded-md truncate text-sm text-violet-title py-1 bg-purple-3 dark:text-violet-3 category" v-for="tag in event?.tags ?? []" :key="tag.title" :to="{ name: RouteName.TAG, params: { tag: tag.title } }" @@ -122,8 +145,12 @@ </div> </div> + <div v-if="eventLoading"> + <div class="animate-pulse mb-2 h-6 bg-slate-200 w-64" /> + <div class="animate-pulse mb-2 h-6 bg-slate-200 w-64" /> + </div> <EventActionSection - v-if="event" + v-else-if="event" :event="event" :currentActor="currentActor" :participations="participations" @@ -140,8 +167,23 @@ class="rounded bg-white dark:bg-zinc-700 shadow-md h-min max-w-screen-sm" > <div class="sticky p-4"> + <aside + v-if="eventLoading" + class="animate-pulse rounded bg-white dark:bg-zinc-700 h-min max-w-screen-sm" + > + <div class="mb-6 p-2" v-for="i in 3" :key="i"> + <div class="mb-2 h-6 bg-slate-200 w-64" /> + <div class="flex space-x-4 flex-row"> + <div class="rounded-full bg-slate-200 h-10 w-10"></div> + <div class="flex flex-col flex-1 space-y-2"> + <div class="h-3 bg-slate-200"></div> + <div class="h-3 bg-slate-200"></div> + </div> + </div> + </div> + </aside> <event-metadata-sidebar - v-if="event" + v-else-if="event" :event="event" :user="loggedUser" @showMapModal="showMap = true" @@ -153,7 +195,19 @@ class="event-description bg-white dark:bg-zinc-700 px-3 pt-1 pb-3 rounded mb-4" > <h2 class="text-2xl">{{ t("About this event") }}</h2> - <p v-if="!event?.description"> + <div + v-if="eventLoading" + class="animate-pulse mb-2 h-6 space-y-6 bg-slate-200 w-3/4" + /> + <div + v-if="eventLoading" + class="animate-pulse mb-2 h-6 space-y-6 bg-slate-200 w-3/4" + /> + <div + v-if="eventLoading" + class="animate-pulse mb-2 h-6 space-y-6 bg-slate-200 w-1/4" + /> + <p v-else-if="!event?.description"> {{ t("The event organizer didn't add any description.") }} </p> <div v-else> @@ -235,6 +289,7 @@ import { usernameWithDomain, } from "@/types/actor"; import DateCalendarIcon from "@/components/Event/DateCalendarIcon.vue"; +import SkeletonDateCalendarIcon from "@/components/Event/SkeletonDateCalendarIcon.vue"; import Earth from "vue-material-design-icons/Earth.vue"; import Link from "vue-material-design-icons/Link.vue"; import MultiCard from "@/components/Event/MultiCard.vue"; From 927e95f387653c7d620e9051c30843ba49c2d65c Mon Sep 17 00:00:00 2001 From: Thomas Citharel <tcit@tcit.fr> Date: Thu, 25 May 2023 12:07:28 +0200 Subject: [PATCH 08/10] fix(emails): make sure group notification emails are only sent once per email Signed-off-by: Thomas Citharel <tcit@tcit.fr> --- lib/web/email/group.ex | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/web/email/group.ex b/lib/web/email/group.ex index da29082b4..b4e5b03be 100644 --- a/lib/web/email/group.ex +++ b/lib/web/email/group.ex @@ -26,6 +26,7 @@ defmodule Mobilizon.Web.Email.Group do users ++ [Users.get_user_with_activity_settings!(actor.user_id)] end end) + |> Enum.uniq_by(& &1.email) |> Enum.each(¬ify_follower(event, group, &1)) end From fe4fbc0bdf698c75227845096a3535f8580ad09b Mon Sep 17 00:00:00 2001 From: Thomas Citharel <tcit@tcit.fr> Date: Thu, 25 May 2023 12:06:55 +0200 Subject: [PATCH 09/10] test(emails): add test for group notification emails Add test for Mobilizon.Web.Email.Group Signed-off-by: Thomas Citharel <tcit@tcit.fr> --- test/web/email/group_test.exs | 156 ++++++++++++++++++++++++++++++++++ 1 file changed, 156 insertions(+) create mode 100644 test/web/email/group_test.exs diff --git a/test/web/email/group_test.exs b/test/web/email/group_test.exs new file mode 100644 index 000000000..cbab2447f --- /dev/null +++ b/test/web/email/group_test.exs @@ -0,0 +1,156 @@ +defmodule Mobilizon.Web.Email.GroupTest do + @moduledoc """ + Test the Mobilizon.Web.Email.Group module + """ + + alias Mobilizon.Actors.Actor + alias Mobilizon.Events.Event + alias Mobilizon.Users + alias Mobilizon.Users.{ActivitySetting, Setting, User} + alias Mobilizon.Web.Email.Group + + use Mobilizon.DataCase + import Swoosh.TestAssertions + import Mobilizon.Factory + + describe "Notify of new event" do + test "members, followers, execept the ones that disabled it" do + {_user_creator, actor} = insert_user_with_settings("user@creator.com") + %Actor{} = group = insert(:group) + %Event{} = event = insert(:event, attributed_to: group, organizer_actor: actor) + + insert(:member, + parent: group, + actor: actor, + role: :administrator, + member_since: DateTime.add(DateTime.utc_now(), -3600) + ) + + {_user_member, actor_member} = insert_user_with_settings("user@member.com") + + insert(:member, + parent: group, + actor: actor_member, + role: :member, + member_since: DateTime.add(DateTime.utc_now(), -3600) + ) + + {_user_pending_member, actor_pending_member} = + insert_user_with_settings("user@pending.member.com") + + insert(:member, + parent: group, + actor: actor_pending_member, + role: :not_approved + ) + + {_user_invited_member, actor_invited_member} = + insert_user_with_settings("user@invited.member.com") + + insert(:member, + parent: group, + actor: actor_invited_member, + role: :invited, + member_since: DateTime.add(DateTime.utc_now(), -3600) + ) + + {_user_rejected_member, actor_rejected_member} = + insert_user_with_settings("user@rejected.member.com") + + insert(:member, + parent: group, + actor: actor_rejected_member, + role: :rejected, + member_since: DateTime.add(DateTime.utc_now(), -3600) + ) + + {_user_approved_follower, actor_follower} = + insert_user_with_settings("user@approved.follower.com") + + insert(:follower, actor: actor_follower, target_actor: group, approved: true) + + {_user_no_notify_follower, actor_follower_no_notify} = + insert_user_with_settings("user@no-notify.follower.com") + + insert(:follower, + actor: actor_follower_no_notify, + target_actor: group, + approved: true, + notify: false + ) + + {_user_unapproved_follower, actor_unapproved_follower} = + insert_user_with_settings("user@unapproved.follower.com") + + insert(:follower, actor: actor_unapproved_follower, target_actor: group, approved: false) + + # One profile has no notify, the other one has it + {user_still_notify_follower, actor_follower_still_notify} = + insert_user_with_settings("user@still-notify.follower.com") + + insert(:follower, + actor: actor_follower_still_notify, + target_actor: group, + approved: true, + notify: false + ) + + %Actor{} = actor_follower_with_notify = insert(:actor, user: user_still_notify_follower) + + insert(:follower, + actor: actor_follower_with_notify, + target_actor: group, + approved: true, + notify: true + ) + + %Actor{} = actor_remote_follower = insert(:actor, user: nil, domain: "some.remote.tld") + + insert(:follower, + actor: actor_remote_follower, + target_actor: group, + approved: true, + notify: true + ) + + assert :ok == Group.notify_of_new_event(event) + + refute_email_sent(to: "user@creator.com") + refute_email_sent(to: "user@pending.member.com") + refute_email_sent(to: "user@invited.member.com") + refute_email_sent(to: "user@rejected.member.com") + refute_email_sent(to: "user@unapproved.follower.com") + refute_email_sent(to: "user@no-notify.follower.com") + + assert_email_sent(to: "user@member.com") + assert_email_sent(to: "user@approved.follower.com") + assert_email_sent(to: "user@still-notify.follower.com") + end + end + + defp insert_user_with_settings(email) do + %User{} = user = insert(:user, email: email) + + %Actor{} = actor = insert(:actor, user: user) + + %Setting{} = + user_settings = + insert(:settings, + user: user, + user_id: user.id, + group_notifications: :one_day + ) + + %ActivitySetting{} = + activity_setting = insert(:mobilizon_activity_setting, user_id: user.id, user: user) + + {:ok, user} = + Users.update_user(user, %{ + settings: user_settings, + activity_settings: [activity_setting], + default_actor_id: actor.id + }) + + {user, actor} + end +end From 08ce7e26b73045279261ab87a14cb4f3dab5df1e Mon Sep 17 00:00:00 2001 From: Thomas Citharel <tcit@tcit.fr> Date: Thu, 25 May 2023 12:08:13 +0200 Subject: [PATCH 10/10] feat(front): make admin profile view linkable directly with parameters Signed-off-by: Thomas Citharel <tcit@tcit.fr> --- js/src/views/Admin/ProfilesView.vue | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/js/src/views/Admin/ProfilesView.vue b/js/src/views/Admin/ProfilesView.vue index 67bb16fb6..f5fff8f38 100644 --- a/js/src/views/Admin/ProfilesView.vue +++ b/js/src/views/Admin/ProfilesView.vue @@ -115,9 +115,9 @@ import Account from "vue-material-design-icons/Account.vue"; const PROFILES_PER_PAGE = 10; -const preferredUsername = ref(""); -const name = ref(""); -const domain = ref(""); +const preferredUsername = useRouteQuery("preferredUsername", ""); +const name = useRouteQuery("name", ""); +const domain = useRouteQuery("domain", ""); const local = useRouteQuery("local", true, booleanTransformer); const suspended = useRouteQuery("suspended", false, booleanTransformer);