From 811957d900684f13853c766b216a398745c47a28 Mon Sep 17 00:00:00 2001 From: AlphaX-Projects <77661270+AlphaX-Projects@users.noreply.github.com> Date: Thu, 5 Jan 2023 16:06:57 +0100 Subject: [PATCH] Add join requests actions --- qortal-ui-core/language/de.json | 11 +- qortal-ui-core/language/es.json | 11 +- qortal-ui-core/language/fr.json | 11 +- qortal-ui-core/language/hindi.json | 13 +- qortal-ui-core/language/hr.json | 13 +- qortal-ui-core/language/hu.json | 11 +- qortal-ui-core/language/it.json | 11 +- qortal-ui-core/language/ko.json | 11 +- qortal-ui-core/language/no.json | 11 +- qortal-ui-core/language/pl.json | 13 +- qortal-ui-core/language/pt.json | 11 +- qortal-ui-core/language/ro.json | 11 +- qortal-ui-core/language/rs.json | 11 +- qortal-ui-core/language/ru.json | 11 +- qortal-ui-core/language/us.json | 11 +- qortal-ui-core/language/zhc.json | 11 +- qortal-ui-core/language/zht.json | 11 +- .../group-management/group-management.src.js | 348 ++++++++++++++++++ 18 files changed, 521 insertions(+), 20 deletions(-) diff --git a/qortal-ui-core/language/de.json b/qortal-ui-core/language/de.json index e197a97e..f10ddfe7 100644 --- a/qortal-ui-core/language/de.json +++ b/qortal-ui-core/language/de.json @@ -799,6 +799,15 @@ "mg49":"Beim Drücken auf Bestätigen wird die Anfrage zum Abbrechen der Einladung gesendet!", "mg50":"Kommt bald...", "mg51":"Minimum 3 Zeichen / Maximum 32 Zeichen", - "mg52":"Maximal 128 Zeichen" + "mg52":"Maximal 128 Zeichen", + "mg53":"Ihre offenen Beitrittsanfragen", + "mg54":"Keine offenen Beitrittsanfragen", + "mg55":"Sind Sie sicher, dass Sie die Beitrittsanfrage von diesem Mitglied annehmen werden?", + "mg56":"Beim Drücken von Bestätigen wird die Beitrittsanfrage gesendet!", + "mg57":"Beitrittsanfrage erfolgreich angenommen", + "mg58":"ETWAS GING FALSCH", + "mg59":"Beitrittsanfrage abbrechen erfolgreich akzeptiert", + "mg60":"Sind Sie sicher, dass Sie die Beitrittsanfrage dieses Mitglieds abbrechen möchten?", + "mg61":"Beim Drücken auf Bestätigen wird die Anfrage zum Abbrechen des Beitritts gesendet!" } } diff --git a/qortal-ui-core/language/es.json b/qortal-ui-core/language/es.json index 0312fa3f..4ae55367 100644 --- a/qortal-ui-core/language/es.json +++ b/qortal-ui-core/language/es.json @@ -799,6 +799,15 @@ "mg49":"¡Al presionar confirmar, se enviará la solicitud de cancelación de invitación!", "mg50":"Próximamente...", "mg51":"Mínimo 3 Caracteres / Máximo 32 Caracteres", - "mg52":"Máximo de 128 caracteres" + "mg52":"Máximo de 128 caracteres", + "mg53":"Tus solicitudes abiertas de unión", + "mg54":"Sin solicitudes de unión abiertas", + "mg55":"¿Está seguro de aceptar la solicitud de ingreso de este miembro?", + "mg56":"¡Al presionar confirmar, se enviará la solicitud de aceptación de ingreso!", + "mg57":"Solicitud de ingreso aceptada con éxito", + "mg58":"ALGO SALIO MAL", + "mg59":"Solicitud de cancelación de unión aceptada con éxito", + "mg60":"¿Está seguro de cancelar la solicitud de ingreso de este miembro?", + "mg61":"¡Al presionar confirmar, se enviará la solicitud de cancelación de unión!" } } diff --git a/qortal-ui-core/language/fr.json b/qortal-ui-core/language/fr.json index d677edd0..03b21617 100644 --- a/qortal-ui-core/language/fr.json +++ b/qortal-ui-core/language/fr.json @@ -799,6 +799,15 @@ "mg49":"En appuyant sur confirmer, la demande d'annulation d'invitation sera envoyée !", "mg50":"Bientôt disponible...", "mg51":"Minimum 3 caractères / Maximum 32 caractères", - "mg52":"Maximum 128 caractères" + "mg52":"Maximum 128 caractères", + "mg53":"Vos demandes d'ouverture de jointure", + "mg54":"Aucune demande de jointure ouverte", + "mg55":"Êtes-vous sûr d'accepter la demande d'adhésion de ce membre ?", + "mg56":"En appuyant sur confirmer, la demande d'adhésion acceptée sera envoyée !", + "mg57":"Demande d'adhésion acceptée avec succès", + "mg58":"QUELQUE CHOSE S'EST TROMPÉ", + "mg59":"Annuler la demande d'adhésion acceptée avec succès", + "mg60":"Êtes-vous sûr d'annuler la demande d'adhésion de ce membre ?", + "mg61":"En appuyant sur confirmer, la demande d'annulation de l'adhésion sera envoyée !" } } diff --git a/qortal-ui-core/language/hindi.json b/qortal-ui-core/language/hindi.json index a35856f4..02479e0f 100644 --- a/qortal-ui-core/language/hindi.json +++ b/qortal-ui-core/language/hindi.json @@ -799,7 +799,16 @@ "mg48":"क्या आप वाकई इस सदस्य के लिए आमंत्रण रद्द करना चाहते हैं?", "mg49":"पुष्टि करें दबाने पर, रद्द आमंत्रण अनुरोध भेजा जाएगा!", "mg50":"जल्द ही आ रहा है ...", - "mg51": "न्यूनतम 3 वर्ण / अधिकतम 32 वर्ण", - "mg52": "अधिकतम 128 वर्ण" + "mg51":"न्यूनतम 3 वर्ण / अधिकतम 32 वर्ण", + "mg52":"अधिकतम 128 वर्ण", + "mg53":"आपका खुला शामिल होने का अनुरोध", + "mg54":"नो ओपन जॉइन रिक्वेस्ट", + "mg55":"क्या आप निश्चित रूप से इस सदस्य के शामिल होने के अनुरोध को स्वीकार करना चाहते हैं?", + "mg56":"पुष्टि करें दबाने पर, स्वीकार करने का अनुरोध भेजा जाएगा!", + "mg57":"जुड़ने का अनुरोध सफलतापूर्वक स्वीकार किया गया", + "mg58":"कुछ गलत हो गया", + "mg59":"रद्द करें शामिल होने का अनुरोध सफलतापूर्वक स्वीकार किया गया", + "mg60":"क्या आप निश्चित रूप से इस सदस्य के शामिल होने के अनुरोध को रद्द करना चाहते हैं?", + "mg61":"पुष्टि करें दबाने पर, रद्द करने का अनुरोध भेजा जाएगा!" } } diff --git a/qortal-ui-core/language/hr.json b/qortal-ui-core/language/hr.json index 8478c342..dc066af8 100644 --- a/qortal-ui-core/language/hr.json +++ b/qortal-ui-core/language/hr.json @@ -798,7 +798,16 @@ "mg48":"Jeste li sigurni da želite otkazati poziv za ovog člana?", "mg49":"Pritiskom na potvrdu, zahtjev za pozivnicu za otkazivanje bit će poslan!", "mg50":"Uskoro...", - "mg51": "Minimalno 3 znaka / Maksimalno 32 znaka", - "mg52": "Maksimalno 128 znakova" + "mg51":"Minimalno 3 znaka / Maksimalno 32 znaka", + "mg52":"Maksimalno 128 znakova", + "mg53":"Vaši otvoreni zahtjevi za pridruživanje", + "mg54":"Nema otvorenih zahtjeva za pridruživanje", + "mg55":"Jeste li sigurni da prihvaćate zahtjev za pridruživanje ovog člana?", + "mg56":"Pritiskom na potvrdu, zahtjev za prihvaćanje pridruživanja bit će poslan!", + "mg57":"Zahtjev za pridruživanje uspješno prihvaćen", + "mg58":"NEŠTO JE POŠLO PO ZLOU", + "mg59":"Poništi zahtjev za pridruživanje uspješno prihvaćen", + "mg60":"Jeste li sigurni da želite otkazati zahtjev za pridruživanje ovog člana?", + "mg61":"Pritiskom na potvrdu, bit će poslan zahtjev za otkazivanje pridruživanja!" } } diff --git a/qortal-ui-core/language/hu.json b/qortal-ui-core/language/hu.json index 6fdc4f54..76f9fed4 100644 --- a/qortal-ui-core/language/hu.json +++ b/qortal-ui-core/language/hu.json @@ -799,6 +799,15 @@ "mg49":"A megerősítés megnyomására a rendszer elküldi a meghívó visszavonási kérelmét!", "mg50":"Hamarosan...", "mg51":"Minimum 3 karakter / legfeljebb 32 karakter", - "mg52":"Legfeljebb 128 karakter" + "mg52":"Legfeljebb 128 karakter", + "mg53":"Az Ön nyitott csatlakozási kérelmei", + "mg54":"Nincsenek nyitott csatlakozási kérelmek", + "mg55":"Biztosan elfogadja ennek a tagnak a csatlakozási kérelmét?", + "mg56":"A megerősítés megnyomására a rendszer elküldi az elfogadási csatlakozási kérelmet!", + "mg57":"Csatlakozási kérelem sikeresen elfogadva", + "mg58":"VALAMI RÁMADT", + "mg59":"Csatlakozási kérelem visszavonása sikeresen elfogadva", + "mg60":"Biztosan visszavonja ennek a tagnak a csatlakozási kérelmét?", + "mg61":"A megerősítés megnyomására a csatlakozás megszakítási kérelme elküldésre kerül!" } } diff --git a/qortal-ui-core/language/it.json b/qortal-ui-core/language/it.json index 7cea8646..42e55e2e 100644 --- a/qortal-ui-core/language/it.json +++ b/qortal-ui-core/language/it.json @@ -799,6 +799,15 @@ "mg49":"Premendo conferma, verrà inviata la richiesta di annullamento dell'invito!", "mg50":"Prossimamente...", "mg51":"Minimo 3 caratteri / Massimo 32 caratteri", - "mg52":"Massimo 128 caratteri" + "mg52":"Massimo 128 caratteri", + "mg53":"Le tue richieste di partecipazione aperte", + "mg54":"Nessuna richiesta di partecipazione aperta", + "mg55":"Sei sicuro di accettare la richiesta di adesione di questo membro ?", + "mg56":"Premendo conferma, verrà inviata la richiesta di partecipazione accettata!", + "mg57":"Richiesta di partecipazione accettata con successo", + "mg58":"QUALCOSA È ANDATO storto", + "mg59":"Annulla richiesta di partecipazione accettata con successo", + "mg60":"Sei sicuro di voler annullare la richiesta di adesione di questo membro ?", + "mg61":"Premendo conferma, verrà inviata la richiesta di annullamento partecipazione!" } } diff --git a/qortal-ui-core/language/ko.json b/qortal-ui-core/language/ko.json index edd76c68..2124eec4 100644 --- a/qortal-ui-core/language/ko.json +++ b/qortal-ui-core/language/ko.json @@ -799,6 +799,15 @@ "mg49":"확인을 누르면 초대 취소 요청이 전송됩니다!", "mg50":"출시 예정...", "mg51":"최소 3자 / 최대 32자", - "mg52":"최대 128자" + "mg52":"최대 128자", + "mg53":"귀하의 오픈 조인 요청", + "mg54":"오픈 조인 요청 없음", + "mg55":"이 회원의 가입 요청을 수락하시겠습니까?", + "mg56":"확인을 누르면 가입 수락 요청이 전송됩니다!", + "mg57":"가입 요청이 성공적으로 수락됨", + "mg58":"뭔가 잘못되었습니다", + "mg59":"가입 요청 취소 성공", + "mg60":"이 회원의 가입 요청을 취소하시겠습니까?", + "mg61":"확인을 누르면 가입 취소 요청이 전송됩니다!" } } diff --git a/qortal-ui-core/language/no.json b/qortal-ui-core/language/no.json index 24e94b7d..a38abbe8 100644 --- a/qortal-ui-core/language/no.json +++ b/qortal-ui-core/language/no.json @@ -799,6 +799,15 @@ "mg49":"Når du trykker på bekreftelse, vil forespørselen om kansellering av invitasjon bli sendt!", "mg50":"Kommer snart...", "mg51":"Minimum 3 tegn / maksimum 32 tegn", - "mg52": "Maksimalt 128 tegn" + "mg52":"Maksimalt 128 tegn", + "mg53":"Dine åpne forespørsler om bli med", + "mg54":"Ingen åpne forespørsler om medlemskap", + "mg55":"Er du sikker på å godta forespørselen fra dette medlemmet?", + "mg56":"Når du trykker på bekreft, vil forespørselen om å godta bli sendt bli sendt!", + "mg57":"Bli med forespørsel ble godtatt", + "mg58":"NOE GIKK FEIL", + "mg59":"Avbryt deltakelsesforespørsel ble godtatt", + "mg60":"Er du sikker på å avbryte forespørselen om å bli medlem fra dette medlemmet?", + "mg61":"Når du trykker på bekreft, vil forespørselen om kansellering bli sendt!" } } diff --git a/qortal-ui-core/language/pl.json b/qortal-ui-core/language/pl.json index cd4f76c3..aff8fbd4 100644 --- a/qortal-ui-core/language/pl.json +++ b/qortal-ui-core/language/pl.json @@ -798,7 +798,16 @@ "mg48":"Czy na pewno chcesz anulować zaproszenie dla tego członka?", "mg49":"Po naciśnięciu potwierdzenia zostanie wysłana prośba o anulowanie zaproszenia!", "mg50":"Już wkrótce...", - "mg51": "Minimum 3 znaki / Maksymalnie 32 znaki", - "mg52": "Maksymalnie 128 znaków" + "mg51":"Minimum 3 znaki / Maksymalnie 32 znaki", + "mg52":"Maksymalnie 128 znaków", + "mg53":"Twoje otwarte prośby o dołączenie", + "mg54":"Brak otwartych próśb o dołączenie", + "mg55":"Czy na pewno akceptujesz prośbę o dołączenie od tego członka?", + "mg56":"Po naciśnięciu potwierdzenia zostanie wysłana prośba o zaakceptowanie dołączenia!", + "mg57":"Prośba o dołączenie pomyślnie zaakceptowana", + "mg58":"COŚ POszło nie tak", + "mg59":"Anuluj prośbę o dołączenie pomyślnie zaakceptowaną", + "mg60":"Czy na pewno chcesz anulować prośbę o dołączenie od tego członka?", + "mg61":"Po naciśnięciu potwierdzenia, zostanie wysłana prośba o anulowanie dołączenia!" } } diff --git a/qortal-ui-core/language/pt.json b/qortal-ui-core/language/pt.json index bce9759d..035986c0 100644 --- a/qortal-ui-core/language/pt.json +++ b/qortal-ui-core/language/pt.json @@ -799,6 +799,15 @@ "mg49":"Ao pressionar confirmar, a solicitação de cancelamento do convite será enviada!", "mg50":"Em Breve...", "mg51":"Mínimo de 3 caracteres / Máximo de 32 caracteres", - "mg52":"Máximo de 128 caracteres" + "mg52":"Máximo de 128 caracteres", + "mg53":"Suas solicitações de entrada abertas", + "mg54":"Nenhuma solicitação de entrada aberta", + "mg55":"Tem certeza que aceita a solicitação de entrada deste membro?", + "mg56":"Ao pressionar confirmar, o pedido de aceitação de entrada será enviado!", + "mg57":"Solicitação de entrada aceita com sucesso", + "mg58":"ALGO DEU ERRADO", + "mg59":"Cancelar pedido de entrada aceito com sucesso", + "mg60":"Tem certeza que deseja cancelar a solicitação de ingresso deste membro ?", + "mg61":"Ao pressionar confirmar, o pedido de cancelamento de adesão será enviado!" } } diff --git a/qortal-ui-core/language/ro.json b/qortal-ui-core/language/ro.json index 97861bf6..891a0be4 100644 --- a/qortal-ui-core/language/ro.json +++ b/qortal-ui-core/language/ro.json @@ -799,6 +799,15 @@ "mg49":"La apăsarea confirmării, cererea de anulare a invitației va fi trimisă!", "mg50":"În curând...", "mg51":"Minim 3 caractere / Maxim 32 de caractere", - "mg52":"Maximum 128 de caractere" + "mg52":"Maximum 128 de caractere", + "mg53":"Solicitările dvs. de înscriere deschise", + "mg54":"Fără solicitări de aderare deschise", + "mg55":"Sunteți sigur că acceptați solicitarea de alăturare de la acest membru?", + "mg56":"La apăsarea confirmării, va fi trimisă cererea de acceptare a înscrierii!", + "mg57":"Solicitarea de înscriere a fost acceptată cu succes", + "mg58":"CEVA A MERAT GREUT", + "mg59":"Anularea cererii de aderare a fost acceptată cu succes", + "mg60":"Sigur anulați solicitarea de alăturare de la acest membru?", + "mg61":"La apăsarea confirmării, cererea de anulare a aderării va fi trimisă!" } } diff --git a/qortal-ui-core/language/rs.json b/qortal-ui-core/language/rs.json index 0670c642..432280f7 100644 --- a/qortal-ui-core/language/rs.json +++ b/qortal-ui-core/language/rs.json @@ -799,6 +799,15 @@ "mg49":"Pritiskom na potvrdi, zahtev za otkazivanje pozivnice će biti poslat!", "mg50":"Uskoro...", "mg51":"Najmanje 3 znaka / maksimalno 32 znaka", - "mg52":"Maksimalno 128 znakova" + "mg52":"Maksimalno 128 znakova", + "mg53":"Vaši zahtevi za otvoreno pridruživanje", + "mg54":"Nema otvorenih zahteva za pridruživanje", + "mg55":"Da li ste sigurni da prihvatate zahtev za pridruživanje ovog člana?", + "mg56":"Pritiskom na potvrdi, biće poslat zahtev za prihvatanje pridruživanja!", + "mg57":"Zahtev za pridruživanje je uspešno prihvaćen", + "mg58":"NEŠTO JE POŠLO NA ZLO", + "mg59":"Zahtev za otkazivanje pridruživanja je uspešno prihvaćen", + "mg60":"Da li ste sigurni da otkažete zahtev za pridruživanje ovog člana?", + "mg61":"Pritiskom na potvrdu, zahtev za otkazivanje pridruživanja će biti poslat!" } } diff --git a/qortal-ui-core/language/ru.json b/qortal-ui-core/language/ru.json index 1828a4af..e40c5ae3 100644 --- a/qortal-ui-core/language/ru.json +++ b/qortal-ui-core/language/ru.json @@ -799,6 +799,15 @@ "mg49":"При нажатии подтверждения будет отправлен запрос на отмену приглашения!", "mg50":"Скоро...", "mg51":"Минимум 3 символа / максимум 32 символа", - "mg52":"Максимум 128 символов" + "mg52":"Максимум 128 символов", + "mg53":"Ваши открытые запросы на вступление", + "mg54":"Открытых запросов на присоединение нет", + "mg55":"Вы уверены, что принимаете запрос на вступление от этого участника?", + "mg56":"При нажатии подтверждения будет отправлен запрос на присоединение!", + "mg57":"Запрос на присоединение успешно принят", + "mg58":"ЧТО-ТО ПОШЛО НЕ ТАК", + "mg59":"Запрос на отмену присоединения успешно принят", + "mg60":"Вы уверены, что отмените запрос на вступление от этого участника?", + "mg61":"При нажатии кнопки подтверждения будет отправлен запрос на отмену присоединения!" } } diff --git a/qortal-ui-core/language/us.json b/qortal-ui-core/language/us.json index c50aa9ec..7da41ef0 100644 --- a/qortal-ui-core/language/us.json +++ b/qortal-ui-core/language/us.json @@ -799,6 +799,15 @@ "mg49":"On pressing confirm, the cancel invite request will be sent!", "mg50":"Coming Soon...", "mg51":"Minimum 3 Characters / Maximum 32 Characters", - "mg52":"Maximum 128 Characters" + "mg52":"Maximum 128 Characters", + "mg53":"Your Open Join Requests", + "mg54":"No Open Join Requests", + "mg55":"Are you sure to accept the join request from this member ?", + "mg56":"On pressing confirm, the accept join request will be sent!", + "mg57":"Join Request Successfully Accepted", + "mg58":"SOMETHING WENT WRONG", + "mg59":"Cancel Join Request Successfully Accepted", + "mg60":"Are you sure to cancel the join request from this member ?", + "mg61":"On pressing confirm, the cancel join request will be sent!" } } diff --git a/qortal-ui-core/language/zhc.json b/qortal-ui-core/language/zhc.json index c034caf0..dfd1d98d 100644 --- a/qortal-ui-core/language/zhc.json +++ b/qortal-ui-core/language/zhc.json @@ -799,6 +799,15 @@ "mg49":"按下确认后,将发送取消邀请请求!", "mg50":"即将推出……", "mg51":"最少 3 个字符 / 最多 32 个字符", - "mg52":"最多 128 个字符" + "mg52":"最多 128 个字符", + "mg53":"您的公开加入请求", + "mg54":"没有开放的加入请求", + "mg55":"您确定接受该会员的加入请求吗?", + "mg56":"按下确认后,将发送接受加入请求!", + "mg57":"成功接受加入请求", + "mg58":"出了点问题", + "mg59":"取消加入请求已成功接受", + "mg60":"您确定要取消该会员的加入请求吗?", + "mg61":"按下确认后,将发送取消加入请求!" } } diff --git a/qortal-ui-core/language/zht.json b/qortal-ui-core/language/zht.json index 94e0c663..7572a9df 100644 --- a/qortal-ui-core/language/zht.json +++ b/qortal-ui-core/language/zht.json @@ -799,6 +799,15 @@ "mg49":"按下確認後,將發送取消邀請請求!", "mg50":"即將推出……", "mg51":"最少 3 個字符 / 最多 32 個字符", - "mg52":"最多 128 個字符" + "mg52":"最多 128 個字符", + "mg53":"您的公開加入請求", + "mg54":"沒有開放的加入請求", + "mg55":"您確定接受該會員的加入請求嗎?", + "mg56":"按下確認後,將發送接受加入請求!", + "mg57":"成功接受加入請求", + "mg58":"出了點問題", + "mg59":"取消加入請求已成功接受", + "mg60":"您確定要取消該會員的加入請求嗎?", + "mg61":"按下確認後,將發送取消加入請求!" } } diff --git a/qortal-ui-plugins/plugins/core/group-management/group-management.src.js b/qortal-ui-plugins/plugins/core/group-management/group-management.src.js index db52b313..14a0388b 100644 --- a/qortal-ui-plugins/plugins/core/group-management/group-management.src.js +++ b/qortal-ui-plugins/plugins/core/group-management/group-management.src.js @@ -38,6 +38,7 @@ class GroupManagement extends LitElement { newAdminsList: { type: Array }, newBannedList: { type: Array }, newGroupInvitesList: { type: Array }, + newGroupJoinsList: { type: Array }, recipientPublicKey: { type: String }, selectedAddress: { type: Object }, manageGroupObj: { type: Object }, @@ -155,6 +156,11 @@ class GroupManagement extends LitElement { color: red; } + .success-icon { + font-size: 48px; + color: #198754; + } + .close-icon { font-size: 36px; } @@ -436,6 +442,7 @@ class GroupManagement extends LitElement { this.newAdminsList = [] this.newBannedList = [] this.newGroupInvitesList = [] + this.newGroupJoinsList = [] this.manageGroupObj = {} this.joinGroupObj = {} this.leaveGroupObj = {} @@ -836,6 +843,7 @@ class GroupManagement extends LitElement { groupInviteTemplate() { return html` +

${translate("managegroup.mg36")}

${translate("managegroup.mg35")} ` : html``} +


+

${translate("managegroup.mg53")}

+ + { + render(html`${this.renderAvatar(data.item)}`, root) + }} + > + { + render(html`${data.item.name}`, root) + }} + > + { + render(html`${data.item.owner}`, root) + }} + > + { + render(html`${this.renderConfirmRequestButton(data.item)}`, root) + }} + > + { + render(html`${this.renderDeclineRequestButton(data.item)}`, root) + }} + > + + ${this.isEmptyArray(this.newGroupJoinsList) ? html` + ${translate("managegroup.mg54")} + ` : html``} +
+
this.openInviteMemberToGroupDialog()}> ${translate("managegroup.mg2")} @@ -1033,6 +1089,72 @@ class GroupManagement extends LitElement { ${translate("general.close")} + + +
+ group_add +

${translate("managegroup.mg57")}

+

${translate("walletpage.wchange43")}

+
+ + this.closeSuccessJoinDialog()} + class="red" + > + ${translate("general.close")} + +
+ + +
+ warning +

${translate("managegroup.mg58")}

+

${this.errorMessage}

+

${translate("walletpage.wchange44")}

+
+ + this.closeErrorJoinDialog()} + class="red" + > + ${translate("general.close")} + +
+ + +
+ person_remove +

${translate("managegroup.mg59")}

+

${translate("walletpage.wchange43")}

+
+ + this.closeCancelSuccessJoinDialog()} + class="red" + > + ${translate("general.close")} + +
+ + +
+ warning +

${translate("managegroup.mg58")}

+

${this.errorMessage}

+

${translate("walletpage.wchange44")}

+
+ + this.closeCancelErrorJoinDialog()} + class="red" + > + ${translate("general.close")} + +
` } @@ -1986,6 +2108,38 @@ class GroupManagement extends LitElement { this.errorMessage = '' } + renderConfirmRequestButton(joinObj) { + return html` this.createAcceptJoinGroupMember(joinObj)}>add_task ${translate("transpage.tchange3")}` + } + + renderDeclineRequestButton(joinObj) { + return html` this.kickJoinGroupMember(joinObj)}>cancel ${translate("transpage.tchange2")}` + } + + closeSuccessJoinDialog() { + this.shadowRoot.querySelector('#successJoinDialog').close() + this.successMessage = '' + this.errorMessage = '' + } + + closeErrorJoinDialog() { + this.shadowRoot.querySelector('#errorJoinDialog').close() + this.successMessage = '' + this.errorMessage = '' + } + + closeCancelSuccessJoinDialog() { + this.shadowRoot.querySelector('#cancelSuccessJoinDialog').close() + this.successMessage = '' + this.errorMessage = '' + } + + closeCancelErrorJoinDialog() { + this.shadowRoot.querySelector('#cancelErrorJoinDialog').close() + this.successMessage = '' + this.errorMessage = '' + } + openMemberInfo(inviteGroupId) { const _inviteMemberInfo = this.shadowRoot.getElementById('toInviteMemberToGroup').value const _nviteMemberTime = this.shadowRoot.getElementById("inviteMemberTime").value @@ -2361,6 +2515,57 @@ class GroupManagement extends LitElement { } } + async getNewGroupJoinList(theGroup) { + let callGroupID = theGroup + const myNode = window.parent.reduxStore.getState().app.nodeConfig.knownNodes[window.parent.reduxStore.getState().app.nodeConfig.node] + const nodeUrl = myNode.protocol + '://' + myNode.domain + ':' + myNode.port + + let joinObj = [] + this.groupJoinMembers = [] + + await parentEpml.request('apiCall', { + url: `/groups/joinrequests/${callGroupID}` + }).then(res => { + this.groupJoinMembers = res + }) + + if (this.groupJoinMembers.length === 0) { + return + } else { + this.groupJoinMembers.map(a => { + let callTheJoinMember = a.joiner + let callSingleJoinMemberUrl = `${nodeUrl}/names/address/${callTheJoinMember}` + fetch(callSingleJoinMemberUrl).then(res => { + return res.json() + }).then(jsonRes => { + if (jsonRes.length) { + jsonRes.map(b => { + const joinObjToAdd = { + groupId: a.groupId, + name: b.name, + owner: b.owner, + time: '86400', + reason: 'NotAllowed' + } + joinObj.push(joinObjToAdd) + }) + } else { + const noName = 'No registered name' + const noNameObj = { + groupId: a.groupId, + name: noName, + owner: a.joiner, + time: '86400', + reason: 'NotAllowed' + } + joinObj.push(noNameObj) + } + this.newGroupJoinsList = joinObj + }) + }) + } + } + closeManageGroupOwnerDialog() { this.resetDefaultSettings() this.shadowRoot.getElementById('manageGroupOwnerDialog').close() @@ -2389,6 +2594,7 @@ class GroupManagement extends LitElement { await this.getNewMemberList(groupObj.groupId) await this.getNewBannedList(groupObj.groupId) await this.getNewGroupInvitesList(groupObj.groupId) + await this.getNewGroupJoinList(groupObj.groupId) await manageGroupDelay(1000) this.shadowRoot.getElementById('manageGroupOwnerDialog').open() } @@ -3057,6 +3263,148 @@ class GroupManagement extends LitElement { validateReceiver() } + async createAcceptJoinGroupMember(joinObj) { + const member = joinObj.owner + const inviteTime = joinObj.time + const inviteGroupMemberFeeInput = this.inviteGroupMemberFee + const theGroupId = joinObj.groupId + this.isLoading = true + this.btnDisable = true + + const getLastRef = async () => { + let myRef = await parentEpml.request('apiCall', { + type: 'api', + url: `/addresses/lastreference/${this.selectedAddress.address}` + }) + return myRef + } + + const validateReceiver = async () => { + let lastRef = await getLastRef() + let myTransaction = await makeTransactionRequest(lastRef) + getTxnRequestResponse(myTransaction) + } + + const makeTransactionRequest = async (lastRef) => { + const myMember = member + const myLastRef = lastRef + const myGroupId = theGroupId + const myFee = inviteGroupMemberFeeInput + const myInviteTime = inviteTime + const myInviteMemberDialog1 = get("managegroup.mg55") + const myInviteMemberDialog2 = get("managegroup.mg56") + + let myTxnrequest = await parentEpml.request('transaction', { + type: 29, + nonce: this.selectedAddress.nonce, + params: { + fee: myFee, + recipient: myMember, + rGroupId: myGroupId, + rInviteTime: myInviteTime, + lastReference: myLastRef, + inviteMemberDialog1: myInviteMemberDialog1, + inviteMemberDialog2: myInviteMemberDialog2 + } + }) + return myTxnrequest + } + + const getTxnRequestResponse = (txnResponse) => { + if (txnResponse.success === false && txnResponse.message) { + this.errorMessage = txnResponse.message + this.shadowRoot.querySelector('#errorJoinDialog').show() + this.isLoading = false + this.btnDisable = false + throw new Error(txnResponse) + } else if (txnResponse.success === true && !txnResponse.data.error) { + this.shadowRoot.querySelector('#successJoinDialog').show() + this.errorMessage = '' + this.successMessage = this.renderSuccessText() + this.isLoading = false + this.btnDisable = false + } else { + this.errorMessage = txnResponse.data.message + this.shadowRoot.querySelector('#errorJoinDialog').show() + this.isLoading = false + this.btnDisable = false + throw new Error(txnResponse) + } + } + validateReceiver() + } + + async kickJoinGroupMember(joinObj) { + const member = joinObj.owner + const reason = joinObj.reason + const kickGroupMemberFeeInput = this.kickGroupMemberFee + const theGroupId = joinObj.groupId + this.isLoading = true + this.btnDisable = true + + const getLastRef = async () => { + let myRef = await parentEpml.request('apiCall', { + type: 'api', + url: `/addresses/lastreference/${this.selectedAddress.address}` + }) + return myRef + } + + const validateReceiver = async () => { + let lastRef = await getLastRef() + let myTransaction = await makeTransactionRequest(lastRef) + getTxnRequestResponse(myTransaction) + } + + const makeTransactionRequest = async (lastRef) => { + const myMember = member + const myLastRef = lastRef + const myGroupId = theGroupId + const myFee = kickGroupMemberFeeInput + const myReason = reason + const myKickMemberDialog1 = get("managegroup.mg60") + const myKickMemberDialog2 = get("managegroup.mg61") + + let myTxnrequest = await parentEpml.request('transaction', { + type: 28, + nonce: this.selectedAddress.nonce, + params: { + fee: myFee, + recipient: myMember, + rGroupId: myGroupId, + rBanReason: myReason, + lastReference: myLastRef, + kickMemberDialog1: myKickMemberDialog1, + kickMemberDialog2: myKickMemberDialog2 + } + }) + return myTxnrequest + } + + const getTxnRequestResponse = (txnResponse) => { + if (txnResponse.success === false && txnResponse.message) { + this.errorMessage = txnResponse.message + this.shadowRoot.querySelector('#cancelErrorJoinDialog').show() + this.isLoading = false + this.btnDisable = false + throw new Error(txnResponse) + } else if (txnResponse.success === true && !txnResponse.data.error) { + this.shadowRoot.querySelector('#cancelSuccessJoinDialog').show() + this.errorMessage = '' + this.successMessage = this.renderSuccessText() + this.isLoading = false + this.btnDisable = false + } else { + this.errorMessage = txnResponse.data.message + this.shadowRoot.querySelector('#cancelErrorJoinDialog').show() + this.isLoading = false + this.btnDisable = false + throw new Error(txnResponse) + } + } + validateReceiver() + } + async addGroupAdmin(groupId) { const member = this.shadowRoot.getElementById('memberToAdmin').value const addGroupAdminFeeInput = this.addGroupAdminFee