4
1
mirror of https://github.com/Qortal/qortal-ui.git synced 2025-02-11 17:55:51 +00:00

Merge remote-tracking branch 'origin/master'

This commit is contained in:
kennycud 2024-06-01 17:39:34 -07:00
commit 6838efb973
29 changed files with 3058 additions and 530 deletions

View File

@ -27,7 +27,7 @@ Easiest way to install the lastest required packages on Linux is via nvm.
``` source ~/.bashrc ``` (For Fedora / CentOS) <br/> ``` source ~/.bashrc ``` (For Fedora / CentOS) <br/>
``` nvm ls-remote ``` (Fetch list of available versions) <br/> ``` nvm ls-remote ``` (Fetch list of available versions) <br/>
``` nvm install v20.11.1 ``` (LTS: Iron supported by Electron V30) <br/> ``` nvm install v20.11.1 ``` (LTS: Iron supported by Electron V30) <br/>
``` npm --location=global install npm@10.7.0 ``` <br/> ``` npm --location=global install npm@10.8.0 ``` <br/>
Adding via binary package mirror will only work if you have set the package path. You can do a node or java build via ports instead by downloading ports with portsnap fetch method. Adding via binary package mirror will only work if you have set the package path. You can do a node or java build via ports instead by downloading ports with portsnap fetch method.

View File

@ -842,7 +842,7 @@
"cchange74": "reagiert mit", "cchange74": "reagiert mit",
"cchange75": "Anhang wird hochgeladen. Dies kann bis zu einer Minute dauern.", "cchange75": "Anhang wird hochgeladen. Dies kann bis zu einer Minute dauern.",
"cchange76": "Anhang wird gelöscht. Dies kann bis zu einer Minute dauern.", "cchange76": "Anhang wird gelöscht. Dies kann bis zu einer Minute dauern.",
"cchange77": "Größe des Anhangs überschreitet 1 MB", "cchange77": "Größe des Anhangs überschreitet 10 MB",
"cchange78": "Möchten Sie dieses Bild wirklich löschen?", "cchange78": "Möchten Sie dieses Bild wirklich löschen?",
"cchange79": "Möchten Sie diesen Anhang wirklich löschen?", "cchange79": "Möchten Sie diesen Anhang wirklich löschen?",
"cchange80": "Dieses Bild wurde gelöscht", "cchange80": "Dieses Bild wurde gelöscht",
@ -855,7 +855,24 @@
"cchange94": "geladen", "cchange94": "geladen",
"cchange95": "Nur meine Ressourcen", "cchange95": "Nur meine Ressourcen",
"cchange96": "Gruppenverwaltung öffnen", "cchange96": "Gruppenverwaltung öffnen",
"cchange97": "Link zur Gruppe beitreten, in Zwischenablage kopiert" "cchange97": "Link zur Gruppe beitreten, in Zwischenablage kopiert",
"cchange98": "Datei wird hochgeladen. Dies kann einige Minuten dauern.",
"cchange99": "Datei wird gelöscht. Dies kann bis zu einer Minute dauern.",
"cchange100": "Dateigröße überschreitet 125 MB",
"cchange101": "Sind Sie sicher, dass Sie diese Datei löschen möchten?",
"cchange102": "Diese Datei wurde gelöscht",
"cchange103": "GIF wird hochgeladen. Dies kann bis zu einer Minute dauern.",
"cchange104": "GIF wird gelöscht. Dies kann bis zu einer Minute dauern.",
"cchange105": "Dateigröße überschreitet 3 MB",
"cchange106": "Sind Sie sicher, dass Sie dieses GIF löschen möchten?",
"cchange107": "Dieses GIF wurde gelöscht",
"cchange108": "Der Download wird im Hintergrund fortgesetzt, es kann nur EINE Q-Chat-Datei gleichzeitig heruntergeladen werden.",
"cchange109": "Dateityp nicht unterstützt!",
"cchange110": "BILD HOCHLADEN",
"cchange111": "GIF HOCHLADEN",
"cchange112": "ANHANG HOCHLADEN",
"cchange113": "DATEI HOCHLADEN",
"cchange114": "Schreibe etwas …"
}, },
"welcomepage": { "welcomepage": {
"wcchange1": "Willkommen zu Q-Chat", "wcchange1": "Willkommen zu Q-Chat",

View File

@ -842,7 +842,7 @@
"cchange74": "reaccionó con", "cchange74": "reaccionó con",
"cchange75": "Cargando archivo adjunto. Esto puede demorar hasta un minuto.", "cchange75": "Cargando archivo adjunto. Esto puede demorar hasta un minuto.",
"cchange76": "Eliminando archivo adjunto. Esto puede demorar hasta un minuto.", "cchange76": "Eliminando archivo adjunto. Esto puede demorar hasta un minuto.",
"cchange77": "El tamaño del archivo adjunto supera 1 MB", "cchange77": "El tamaño del archivo adjunto supera 10 MB",
"cchange78": "¿Está seguro de que desea eliminar esta imagen?", "cchange78": "¿Está seguro de que desea eliminar esta imagen?",
"cchange79": "¿Está seguro de que desea eliminar este archivo adjunto?", "cchange79": "¿Está seguro de que desea eliminar este archivo adjunto?",
"cchange80": "Esta imagen ha sido eliminada", "cchange80": "Esta imagen ha sido eliminada",
@ -855,7 +855,24 @@
"cchange94": "cargado", "cchange94": "cargado",
"cchange95": "Sólo mis recursos", "cchange95": "Sólo mis recursos",
"cchange96": "Gestión de grupos abiertos", "cchange96": "Gestión de grupos abiertos",
"cchange97": "Enlace para unirse al grupo copiado al portapapeles" "cchange97": "Enlace para unirse al grupo copiado al portapapeles",
"cchange98": "Subiendo archivo. Esto puede tardar algunos minutos.",
"cchange99": "Eliminando archivo. Esto puede tardar hasta un minuto.",
"cchange100": "El tamaño del archivo supera los 125 MB",
"cchange101": "¿Está seguro de que desea eliminar este archivo?",
"cchange102": "Este archivo ha sido eliminado",
"cchange103": "Subiendo gif. Esto puede tardar hasta un minuto.",
"cchange104": "Eliminando gif. Esto puede tardar hasta un minuto.",
"cchange105": "El tamaño del archivo supera los 3 MB",
"cchange106": "¿Estás seguro de que deseas eliminar este gif?",
"cchange107": "Este gif ha sido eliminado",
"cchange108": "La descarga continuará en segundo plano, sólo se puede descargar UN archivo Q-Chat simultáneamente.",
"cchange109": "¡Tipo de archivo no compatible!",
"cchange110": "CARGAR IMAGEN",
"cchange111": "CARGAR GIF",
"cchange112": "CARGA DE ADJUNTOS",
"cchange113": "CARGA DE ARCHIVO",
"cchange114": "Escribe algo ..."
}, },
"welcomepage": { "welcomepage": {
"wcchange1": "Bienvenido al Q-Chat", "wcchange1": "Bienvenido al Q-Chat",

View File

@ -842,7 +842,7 @@
"cchange74": "reageerisid", "cchange74": "reageerisid",
"cchange75": "Manuse üleslaadimine. See võib võtta kuni minuti.", "cchange75": "Manuse üleslaadimine. See võib võtta kuni minuti.",
"cchange76": "Manuse kustutamine, võib võtta kuni minuti.", "cchange76": "Manuse kustutamine, võib võtta kuni minuti.",
"cchange77": "Manuse suurus ületab 1 MB mahu", "cchange77": "Manuse suurus ületab 10 MB mahu",
"cchange78": "Kas oled kindel, et soovid selle pildi kustutada?", "cchange78": "Kas oled kindel, et soovid selle pildi kustutada?",
"cchange79": "Kas oled kindel, et soovid selle manuse kustutada?", "cchange79": "Kas oled kindel, et soovid selle manuse kustutada?",
"cchange80": "Pilt kustutatud", "cchange80": "Pilt kustutatud",
@ -855,7 +855,24 @@
"cchange94": "laaditud", "cchange94": "laaditud",
"cchange95": "Ainult minu ressursid", "cchange95": "Ainult minu ressursid",
"cchange96": "Avatud rühmahaldus", "cchange96": "Avatud rühmahaldus",
"cchange97": "Grupiga liitumise link on lõikelauale kopeeritud" "cchange97": "Grupiga liitumise link on lõikelauale kopeeritud",
"cchange98": "Faili üleslaadimine. See võib võtta mõne minuti.",
"cchange99": "Faili kustutamine. Selleks võib kuluda kuni üks minut.",
"cchange100": "Faili suurus ületab 125 MB",
"cchange101": "Kas soovite kindlasti selle faili kustutada?",
"cchange102": "See fail on kustutatud",
"cchange103": "GIF-i üleslaadimine. Selleks võib kuluda kuni üks minut.",
"cchange104": "GIF-i kustutamine. Selleks võib kuluda kuni üks minut.",
"cchange105": "Faili suurus ületab 3 MB",
"cchange106": "Kas soovite kindlasti selle GIF-i kustutada?",
"cchange107": "See gif on kustutatud",
"cchange108": "Allalaadimine jätkub taustal, korraga saab alla laadida ainult ÜHE Q-Chat faili.",
"cchange109": "Failitüüpi ei toetata!",
"cchange110": "PILDI ÜLESLAADIMINE",
"cchange111": "GIF-I ÜLESLAADIMINE",
"cchange112": "MANUSE ÜLESLAADIMINE",
"cchange113": "FAILI ÜLESLAADIMINE",
"cchange114": "Kirjutage midagi ..."
}, },
"welcomepage": { "welcomepage": {
"wcchange1": "Tere tulemast Q-Chatti", "wcchange1": "Tere tulemast Q-Chatti",

View File

@ -842,7 +842,7 @@
"cchange74": "vastasi", "cchange74": "vastasi",
"cchange75": "Lähetetään liitettä. Tämä voi kestää minuutin.", "cchange75": "Lähetetään liitettä. Tämä voi kestää minuutin.",
"cchange76": "Liitetiedoston poistaminen voi kestää minuutin.", "cchange76": "Liitetiedoston poistaminen voi kestää minuutin.",
"cchange77": "Liitekoko ylittää 1 Mt", "cchange77": "Liitekoko ylittää 10 Mt",
"cchange78": "Haluatko varmasti poistaa tämän kuvan?", "cchange78": "Haluatko varmasti poistaa tämän kuvan?",
"cchange79": "Haluatko varmasti poistaa tämän liitteen?", "cchange79": "Haluatko varmasti poistaa tämän liitteen?",
"cchange80": "Kuva poistettu", "cchange80": "Kuva poistettu",
@ -855,7 +855,24 @@
"cchange94": "ladattu", "cchange94": "ladattu",
"cchange95": "Vain minun resurssit", "cchange95": "Vain minun resurssit",
"cchange96": "Avoin ryhmänhallinta", "cchange96": "Avoin ryhmänhallinta",
"cchange97": "Ryhmän liittymislinkki kopioitu leikepöydälle" "cchange97": "Ryhmän liittymislinkki kopioitu leikepöydälle",
"cchange98": "Ladataan tiedostoa. Tämä voi kestää muutaman minuutin.",
"cchange99": "Poistetaan tiedostoa. Tämä voi kestää minuutin.",
"cchange100": "Tiedoston koko ylittää 125 Mt",
"cchange101": "Haluatko varmasti poistaa tämän tiedoston?",
"cchange102": "Tämä tiedosto on poistettu",
"cchange103": "Ladataan GIF-tiedostoa. Tämä voi kestää minuutin.",
"cchange104": "Poistetaan GIF-tiedostoa. Tämä voi kestää minuutin.",
"cchange105": "Tiedoston koko ylittää 3 Mt",
"cchange106": "Haluatko varmasti poistaa tämän gifin?",
"cchange107": "Tämä gif on poistettu",
"cchange108": "Lataus jatkuu taustalla, vain YKSI Q-Chat-tiedosto voidaan ladata samanaikaisesti.",
"cchange109": "Tiedostotyyppiä ei tueta!",
"cchange110": "KUVAN LATAUS",
"cchange111": "GIF LATAUS",
"cchange112": "LIITTEEN LATAUS",
"cchange113": "TIEDOSTON LATAUS",
"cchange114": "Kirjoita jotain ..."
}, },
"welcomepage": { "welcomepage": {
"wcchange1": "Tervetuloa Q-Chatiin", "wcchange1": "Tervetuloa Q-Chatiin",

View File

@ -842,7 +842,7 @@
"cchange74": "a réagi avec", "cchange74": "a réagi avec",
"cchange75": "Téléchargement de la pièce jointe. Cela peut prendre jusqu'à une minute.", "cchange75": "Téléchargement de la pièce jointe. Cela peut prendre jusqu'à une minute.",
"cchange76": "Suppression de la pièce jointe. Cela peut prendre jusqu'à une minute.", "cchange76": "Suppression de la pièce jointe. Cela peut prendre jusqu'à une minute.",
"cchange77": "La taille de la pièce jointe dépasse 1 Mo", "cchange77": "La taille de la pièce jointe dépasse 10 Mo",
"cchange78": "Êtes-vous sûr de vouloir supprimer cette image ?", "cchange78": "Êtes-vous sûr de vouloir supprimer cette image ?",
"cchange79": "Êtes-vous sûr de vouloir supprimer cette pièce jointe ?", "cchange79": "Êtes-vous sûr de vouloir supprimer cette pièce jointe ?",
"cchange80": "Cette image a été supprimée", "cchange80": "Cette image a été supprimée",
@ -855,7 +855,24 @@
"cchange94": "chargé", "cchange94": "chargé",
"cchange95": "Uniquement mes ressources", "cchange95": "Uniquement mes ressources",
"cchange96": "Gestion de groupe ouverte", "cchange96": "Gestion de groupe ouverte",
"cchange97": "Lien de rejoindre le groupe copié dans le presse-papiers" "cchange97": "Lien de rejoindre le groupe copié dans le presse-papiers",
"cchange98": "Téléchargement du fichier. Cela peut prendre quelques minutes.",
"cchange99": "Suppression du fichier. Cela peut prendre jusqu'à une minute.",
"cchange100": "La taille du fichier dépasse 125 Mo",
"cchange101": "Etes-vous sûr de vouloir supprimer ce fichier ?",
"cchange102": "Ce fichier a été supprimé",
"cchange103": "Téléchargement du gif. Cela peut prendre jusqu'à une minute.",
"cchange104": "Suppression du gif. Cela peut prendre jusqu'à une minute.",
"cchange105": "La taille du fichier dépasse 3 Mo",
"cchange106": "Etes-vous sûr de vouloir supprimer ce gif ?",
"cchange107": "Ce gif a été supprimé",
"cchange108": "Le téléchargement continuera en arrière-plan, UN seul fichier Q-Chat peut être téléchargé simultanément.",
"cchange109": "Type de fichier non pris en charge !",
"cchange110": "TÉLÉCHARGEMENT D'IMAGE",
"cchange111": "TÉLÉCHARGEMENT GIF",
"cchange112": "TÉLÉCHARGEMENT DE PIÈCE JOINTE",
"cchange113": "TÉLÉCHARGEMENT DE FICHIER",
"cchange114": "Écrivez quelque chose ..."
}, },
"welcomepage": { "welcomepage": {
"wcchange1": "Bienvenue dans Q-Chat", "wcchange1": "Bienvenue dans Q-Chat",

View File

@ -842,7 +842,7 @@
"cchange74": "के साथ प्रतिक्रिया", "cchange74": "के साथ प्रतिक्रिया",
"cchange75": "अटैचमेंट अपलोड हो रहा है। इसमें एक मिनट तक का समय लग सकता है।", "cchange75": "अटैचमेंट अपलोड हो रहा है। इसमें एक मिनट तक का समय लग सकता है।",
"cchange76": "अनुलग्नक हटाया जा रहा है। इसमें एक मिनट तक का समय लग सकता है।", "cchange76": "अनुलग्नक हटाया जा रहा है। इसमें एक मिनट तक का समय लग सकता है।",
"cchange77": "अटैचमेंट का आकार 1 एमबी से अधिक है", "cchange77": "अटैचमेंट का आकार 10 एमबी से अधिक है",
"cchange78": "क्या आप सुनिश्चित हैं कि आप इस चित्र को हटाना चाहते हैं?", "cchange78": "क्या आप सुनिश्चित हैं कि आप इस चित्र को हटाना चाहते हैं?",
"cchange79": "क्या आप वाकई इस अटैचमेंट को मिटाना चाहते हैं?", "cchange79": "क्या आप वाकई इस अटैचमेंट को मिटाना चाहते हैं?",
"cchange80": "इस चित्र को हटा दिया गया है", "cchange80": "इस चित्र को हटा दिया गया है",
@ -855,7 +855,24 @@
"cchange94": "लोड किया गया", "cchange94": "लोड किया गया",
"cchange95": "केवल मेरे संसाधन", "cchange95": "केवल मेरे संसाधन",
"cchange96": "समूह प्रबंधन खोलें", "cchange96": "समूह प्रबंधन खोलें",
"cchange97": "ग्रुप में शामिल होने का लिंक क्लिपबोर्ड पर कॉपी किया गया" "cchange97": "ग्रुप में शामिल होने का लिंक क्लिपबोर्ड पर कॉपी किया गया",
"cchange98": "फ़ाइल अपलोड हो रही है। इसमें कुछ मिनट लग सकते हैं।",
"cchange99": "फ़ाइल हटाई जा रही है। इसमें एक मिनट तक का समय लग सकता है।",
"cchange100": "फ़ाइल का आकार 125 एमबी से अधिक है",
"cchange101": "क्या आप वाकई इस फ़ाइल को हटाना चाहते हैं?",
"cchange102": "यह फ़ाइल हटा दी गई है",
"cchange103": "gif अपलोड हो रहा है। इसमें एक मिनट तक का समय लग सकता है।",
"cchange104": "Gif हटा रहा हूँ। इसमें एक मिनट तक का समय लग सकता है।",
"cchange105": "फ़ाइल का आकार 3 एमबी से अधिक है",
"cchange106": "क्या आप वाकई इस GIF को हटाना चाहते हैं?",
"cchange107": "यह GIF हटा दिया गया है",
"cchange108": "डाउनलोड पृष्ठभूमि में जारी रहेगा, केवल एक Q-चैट फ़ाइल एक साथ डाउनलोड की जा सकती है।",
"cchange109": "फ़ाइल प्रकार समर्थित नहीं है!",
"cchange110": "छवि अपलोड करें",
"cchange111": "जीआईएफ अपलोड",
"cchange112": "अटैचमेंट अपलोड",
"cchange113": "फ़ाइल अपलोड करें",
"cchange114": "कुछ लिखें ..."
}, },
"welcomepage": { "welcomepage": {
"wcchange1": "क्यू-चैट में आपका स्वागत है", "wcchange1": "क्यू-चैट में आपका स्वागत है",

View File

@ -842,7 +842,7 @@
"cchange74": "reagirao sa", "cchange74": "reagirao sa",
"cchange75": "Učitavanje privitka. Ovo može potrajati do jedne minute.", "cchange75": "Učitavanje privitka. Ovo može potrajati do jedne minute.",
"cchange76": "Brisanje privitka. Ovo može potrajati do jedne minute.", "cchange76": "Brisanje privitka. Ovo može potrajati do jedne minute.",
"cchange77": "Veličina privitka premašuje 1 MB", "cchange77": "Veličina privitka premašuje 10 MB",
"cchange78": "Jeste li sigurni da želite izbrisati ovu sliku?", "cchange78": "Jeste li sigurni da želite izbrisati ovu sliku?",
"cchange79": "Jeste li sigurni da želite izbrisati ovaj privitak?", "cchange79": "Jeste li sigurni da želite izbrisati ovaj privitak?",
"cchange80": "Ova slika je izbrisana", "cchange80": "Ova slika je izbrisana",
@ -855,7 +855,24 @@
"cchange94": "učitano", "cchange94": "učitano",
"cchange95": "Samo moji resursi", "cchange95": "Samo moji resursi",
"cchange96": "Otvoreno upravljanje grupom", "cchange96": "Otvoreno upravljanje grupom",
"cchange97": "Veza za pridruživanje grupi kopirana je u međuspremnik" "cchange97": "Veza za pridruživanje grupi kopirana je u međuspremnik",
"cchange98": "Učitavanje datoteke. Ovo može potrajati nekoliko minuta.",
"cchange99": "Brisanje datoteke. Ovo može potrajati do jedne minute.",
"cchange100": "Veličina datoteke premašuje 125 MB",
"cchange101": "Jeste li sigurni da želite izbrisati ovu datoteku?",
"cchange102": "Ova datoteka je izbrisana",
"cchange103": "Učitavanje GIF-a. Ovo može potrajati do jedne minute.",
"cchange104": "Brisanje GIF-a. Ovo može potrajati do jedne minute.",
"cchange105": "Veličina datoteke premašuje 3 MB",
"cchange106": "Jeste li sigurni da želite izbrisati ovaj gif?",
"cchange107": "Ovaj gif je izbrisan",
"cchange108": "Preuzimanje će se nastaviti u pozadini, samo JEDNA Q-Chat datoteka može se preuzeti istovremeno.",
"cchange109": "Vrsta datoteke nije podržana!",
"cchange110": "PRIJENOS SLIKE",
"cchange111": "PRIJENOS GIF-a",
"cchange112": "PRIJENOS PRIVITA",
"cchange113": "PRIJENOS DATOTEKE",
"cchange114": "Napiši nešto ..."
}, },
"welcomepage": { "welcomepage": {
"wcchange1": "Dobrodošli u Q-Čavrljanje", "wcchange1": "Dobrodošli u Q-Čavrljanje",

View File

@ -842,7 +842,7 @@
"cchange74": "reagált:", "cchange74": "reagált:",
"cchange75": "Melléklet feltöltése. Ez akár egy percig is eltarthat.", "cchange75": "Melléklet feltöltése. Ez akár egy percig is eltarthat.",
"cchange76": "Melléklet törlése. Ez akár egy percig is eltarthat.", "cchange76": "Melléklet törlése. Ez akár egy percig is eltarthat.",
"cchange77": "A melléklet mérete meghaladja az 1 MB-ot", "cchange77": "A melléklet mérete meghaladja az 10 MB-ot",
"cchange78": "Biztosan törli ezt a képet?", "cchange78": "Biztosan törli ezt a képet?",
"cchange79": "Biztosan törli ezt a mellékletet?", "cchange79": "Biztosan törli ezt a mellékletet?",
"cchange80": "Ezt a képet törölték", "cchange80": "Ezt a képet törölték",
@ -855,7 +855,24 @@
"cchange94": "betöltve", "cchange94": "betöltve",
"cchange95": "Csak az én erőforrásaim", "cchange95": "Csak az én erőforrásaim",
"cchange96": "Nyitott csoportkezelés", "cchange96": "Nyitott csoportkezelés",
"cchange97": "Csatlakozási link a vágólapra másolva" "cchange97": "Csatlakozási link a vágólapra másolva",
"cchange98": "Fájl feltöltése folyamatban. Ez eltarthat néhány percig.",
"cchange99": "Fájl törlése. Ez akár egy percig is eltarthat.",
"cchange100": "A fájl mérete meghaladja a 125 MB-ot",
"cchange101": "Biztosan törli ezt a fájlt?",
"cchange102": "Ez a fájl törölve lett",
"cchange103": "Gif feltöltése. Ez akár egy percig is eltarthat.",
"cchange104": "Gif törlése. Ez akár egy percig is eltarthat.",
"cchange105": "A fájl mérete meghaladja a 3 MB-ot",
"cchange106": "Biztosan törli ezt a gifet?",
"cchange107": "Ez a gif törölve lett",
"cchange108": "A letöltés a háttérben folytatódik, egyszerre csak EGY Q-Chat fájl tölthető le.",
"cchange109": "A fájltípus nem támogatott!",
"cchange110": "KÉP FELTÖLTÉS",
"cchange111": "GIF FELTÖLTÉS",
"cchange112": "MELLÉKLET FELTÖLTÉSE",
"cchange113": "FÁJL FELTÖLTÉS",
"cchange114": "Írj valamit ..."
}, },
"welcomepage": { "welcomepage": {
"wcchange1": "Üdvözöljük a Q-Chathoz", "wcchange1": "Üdvözöljük a Q-Chathoz",

View File

@ -842,7 +842,7 @@
"cchange74": "ha reagito con", "cchange74": "ha reagito con",
"cchange75": "Caricamento dell'allegato. L'operazione potrebbe richiedere fino a un minuto.", "cchange75": "Caricamento dell'allegato. L'operazione potrebbe richiedere fino a un minuto.",
"cchange76": "Eliminazione dell'allegato. L'operazione potrebbe richiedere fino a un minuto.", "cchange76": "Eliminazione dell'allegato. L'operazione potrebbe richiedere fino a un minuto.",
"cchange77": "La dimensione dell'allegato supera 1 MB", "cchange77": "La dimensione dell'allegato supera 10 MB",
"cchange78": "Sei sicuro di voler eliminare questa immagine?", "cchange78": "Sei sicuro di voler eliminare questa immagine?",
"cchange79": "Sei sicuro di voler eliminare questo allegato?", "cchange79": "Sei sicuro di voler eliminare questo allegato?",
"cchange80": "Questa immagine è stata cancellata", "cchange80": "Questa immagine è stata cancellata",
@ -855,7 +855,24 @@
"cchange94": "caricato", "cchange94": "caricato",
"cchange95": "Solo le mie risorse", "cchange95": "Solo le mie risorse",
"cchange96": "Apri gestione gruppo", "cchange96": "Apri gestione gruppo",
"cchange97": "Link per unirti al gruppo copiato negli appunti" "cchange97": "Link per unirti al gruppo copiato negli appunti",
"cchange98": "Caricamento del file. L'operazione potrebbe richiedere alcuni minuti.",
"cchange99": "Eliminazione del file. L'operazione potrebbe richiedere fino a un minuto.",
"cchange100": "La dimensione del file supera 125 MB",
"cchange101": "Sei sicuro di voler eliminare questo file?",
"cchange102": "Questo file è stato eliminato",
"cchange103": "Caricamento gif. L'operazione potrebbe richiedere fino a un minuto.",
"cchange104": "Eliminazione gif. L'operazione potrebbe richiedere fino a un minuto.",
"cchange105": "La dimensione del file supera i 3 MB",
"cchange106": "Sei sicuro di voler eliminare questa gif?",
"cchange107": "Questa gif è stata eliminata",
"cchange108": "Il download continuerà in background, solo UN file Q-Chat potrà essere scaricato contemporaneamente.",
"cchange109": "Tipo di file non supportato!",
"cchange110": "CARICA IMMAGINE",
"cchange111": "CARICA GIF",
"cchange112": "CARICA ALLEGATO",
"cchange113": "CARICA FILE",
"cchange114": "Scrivi qualcosa ..."
}, },
"welcomepage": { "welcomepage": {
"wcchange1": "Benvenuto in Q-Chat", "wcchange1": "Benvenuto in Q-Chat",

View File

@ -842,7 +842,7 @@
"cchange74": "リアクション", "cchange74": "リアクション",
"cchange75": "添付ファイルをアップロード中。これには最大 1 分かかる場合があります。", "cchange75": "添付ファイルをアップロード中。これには最大 1 分かかる場合があります。",
"cchange76": "添付ファイルを削除中。これには最大 1 分かかる場合があります。", "cchange76": "添付ファイルを削除中。これには最大 1 分かかる場合があります。",
"cchange77": "添付ファイルのサイズが 1 MB を超えています", "cchange77": "添付ファイルのサイズが 10 MB を超えています",
"cchange78": "この画像を削除しますか?", "cchange78": "この画像を削除しますか?",
"cchange79": "この添付ファイルを削除しますか?", "cchange79": "この添付ファイルを削除しますか?",
"cchange80": "この画像は削除されました", "cchange80": "この画像は削除されました",
@ -855,7 +855,24 @@
"cchange94": "ロードされました", "cchange94": "ロードされました",
"cchange95": "私のリソースのみ", "cchange95": "私のリソースのみ",
"cchange96": "オープングループ管理", "cchange96": "オープングループ管理",
"cchange97": "グループに参加するリンクがクリップボードにコピーされました" "cchange97": "グループに参加するリンクがクリップボードにコピーされました",
"cchange98": "ファイルをアップロードしています。これには数分かかる場合があります。",
"cchange99": "ファイルを削除しています。これには最大 1 分かかる場合があります。",
"cchange100": "ファイル サイズが 125 MB を超えています",
"cchange101": "このファイルを削除してもよろしいですか?",
"cchange102": "このファイルは削除されました",
"cchange103": "gif をアップロードしています。これには最大 1 分かかる場合があります。",
"cchange104": "gif を削除しています。これには最大 1 分かかる場合があります。",
"cchange105": "ファイル サイズが 3 MB を超えています",
"cchange106": "この gif を削除してもよろしいですか?",
"cchange107": "このGIFは削除されました",
"cchange108": "ダウンロードはバックグラウンドで続行されます。同時にダウンロードできる Q-Chat ファイルは 1 つだけです。",
"cchange109": "ファイルの種類はサポートされていません!",
"cchange110": "画像アップロード",
"cchange111": "GIF アップロード",
"cchange112": "添付ファイルのアップロード",
"cchange113": "ファイルのアップロード",
"cchange114": "何か書いてください ..."
}, },
"welcomepage": { "welcomepage": {
"wcchange1": "Q-Chat へようこそ", "wcchange1": "Q-Chat へようこそ",

View File

@ -842,7 +842,7 @@
"cchange74": "반응", "cchange74": "반응",
"cchange75": "첨부파일을 업로드하는 중입니다. 최대 1분이 소요될 수 있습니다.", "cchange75": "첨부파일을 업로드하는 중입니다. 최대 1분이 소요될 수 있습니다.",
"cchange76": "첨부파일을 삭제하는 중입니다. 최대 1분이 소요될 수 있습니다.", "cchange76": "첨부파일을 삭제하는 중입니다. 최대 1분이 소요될 수 있습니다.",
"cchange77": "첨부 파일 크기가 1MB를 초과함", "cchange77": "첨부 파일 크기가 10MB를 초과함",
"cchange78": "정말 이 이미지를 삭제하시겠습니까?", "cchange78": "정말 이 이미지를 삭제하시겠습니까?",
"cchange79": "이 첨부파일을 삭제하시겠습니까?", "cchange79": "이 첨부파일을 삭제하시겠습니까?",
"cchange80": "이 이미지는 삭제되었습니다", "cchange80": "이 이미지는 삭제되었습니다",
@ -855,7 +855,24 @@
"cchange94": "로드됨", "cchange94": "로드됨",
"cchange95": "내 리소스만", "cchange95": "내 리소스만",
"cchange96": "그룹 관리 열기", "cchange96": "그룹 관리 열기",
"cchange97": "그룹 가입 링크가 클립보드에 복사되었습니다." "cchange97": "그룹 가입 링크가 클립보드에 복사되었습니다.",
"cchange98": "파일을 업로드하는 중입니다. 몇 분 정도 걸릴 수 있습니다.",
"cchange99": "파일을 삭제하는 중입니다. 최대 1분이 걸릴 수 있습니다.",
"cchange100": "파일 크기가 125MB를 초과합니다",
"cchange101": "정말 이 파일을 삭제하시겠습니까?",
"cchange102": "이 파일은 삭제되었습니다",
"cchange103": "gif를 업로드하는 중입니다. 최대 1분이 걸릴 수 있습니다.",
"cchange104": "gif를 삭제하는 중입니다. 최대 1분이 걸릴 수 있습니다.",
"cchange105": "파일 크기가 3MB를 초과합니다",
"cchange106": "이 GIF를 삭제하시겠습니까?",
"cchange107": "이 GIF는 삭제되었습니다",
"cchange108": "다운로드는 백그라운드에서 계속됩니다. 동시에 하나의 Q-Chat 파일만 다운로드할 수 있습니다.",
"cchange109": "파일 형식이 지원되지 않습니다!",
"cchange110": "이미지 업로드",
"cchange111": "GIF 업로드",
"cchange112": "첨부 파일 업로드",
"cchange113": "파일 업로드",
"cchange114": "뭔가를 쓰세요 ..."
}, },
"welcomepage": { "welcomepage": {
"wcchange1": "Q-Chat에 오신 것을 환영합니다.", "wcchange1": "Q-Chat에 오신 것을 환영합니다.",

View File

@ -842,7 +842,7 @@
"cchange74": "reageerden met", "cchange74": "reageerden met",
"cchange75": "Bijlage wordt opgeladen. Dit kan ongeveer een minuut duren.", "cchange75": "Bijlage wordt opgeladen. Dit kan ongeveer een minuut duren.",
"cchange76": "Bijlage wordt verwijderd. Dit kan ongeveer een minuut duren.", "cchange76": "Bijlage wordt verwijderd. Dit kan ongeveer een minuut duren.",
"cchange77": "Bijlage is groter dan 1 MB", "cchange77": "Bijlage is groter dan 10 MB",
"cchange78": "Bent U zeker dat U deze afbeelding wenst te verwijderen?", "cchange78": "Bent U zeker dat U deze afbeelding wenst te verwijderen?",
"cchange79": "Bent U zeker dat U deze bijlage wenst te verwijderen?", "cchange79": "Bent U zeker dat U deze bijlage wenst te verwijderen?",
"cchange80": "Deze afbeelding werd verwijderd", "cchange80": "Deze afbeelding werd verwijderd",
@ -855,7 +855,24 @@
"cchange94": "opgeladen", "cchange94": "opgeladen",
"cchange95": "Enkel mijn gegevens", "cchange95": "Enkel mijn gegevens",
"cchange96": "Groep-beheer openen", "cchange96": "Groep-beheer openen",
"cchange97": "Link voor lid-aanvraag naar klembord gekopieerd" "cchange97": "Link voor lid-aanvraag naar klembord gekopieerd",
"cchange98": "Bestand uploaden. Dit kan enkele minuten duren.",
"cchange99": "Bestand verwijderen. Dit kan maximaal één minuut duren.",
"cchange100": "Bestandsgrootte is groter dan 125 MB",
"cchange101": "Weet u zeker dat u dit bestand wilt verwijderen?",
"cchange102": "Dit bestand is verwijderd",
"cchange103": "Gif uploaden. Dit kan maximaal een minuut duren.",
"cchange104": "Gif verwijderen. Dit kan maximaal een minuut duren.",
"cchange105": "Bestandsgrootte is groter dan 3 MB",
"cchange106": "Weet je zeker dat je deze gif wilt verwijderen?",
"cchange107": "Deze gif is verwijderd",
"cchange108": "Het downloaden gaat door op de achtergrond, er kan slechts ÉÉN Q-Chat-bestand tegelijkertijd worden gedownload.",
"cchange109": "Bestandstype niet ondersteund!",
"cchange110": "AFBEELDING UPLOADEN",
"cchange111": "GIF-UPLOAD",
"cchange112": "BIJLAGE UPLOADEN",
"cchange113": "BESTAND UPLOADEN",
"cchange114": "Schrijf iets ..."
}, },
"welcomepage": { "welcomepage": {
"wcchange1": "Welkom bij Q-Chat", "wcchange1": "Welkom bij Q-Chat",

View File

@ -842,7 +842,7 @@
"cchange74": "reagerte med", "cchange74": "reagerte med",
"cchange75": "Laster opp vedlegg. Dette kan ta opptil ett minutt.", "cchange75": "Laster opp vedlegg. Dette kan ta opptil ett minutt.",
"cchange76": "Sletter vedlegg. Dette kan ta opptil ett minutt.", "cchange76": "Sletter vedlegg. Dette kan ta opptil ett minutt.",
"cchange77": "Vedleggsstørrelsen overstiger 1 MB", "cchange77": "Vedleggsstørrelsen overstiger 10 MB",
"cchange78": "Er du sikker på at du vil slette dette bildet?", "cchange78": "Er du sikker på at du vil slette dette bildet?",
"cchange79": "Er du sikker på at du vil slette dette vedlegget?", "cchange79": "Er du sikker på at du vil slette dette vedlegget?",
"cchange80": "Dette bildet har blitt slettet", "cchange80": "Dette bildet har blitt slettet",
@ -855,7 +855,24 @@
"cchange94": "lastet", "cchange94": "lastet",
"cchange95": "Kun mine ressurser", "cchange95": "Kun mine ressurser",
"cchange96": "Åpne gruppeadministrasjon", "cchange96": "Åpne gruppeadministrasjon",
"cchange97": "Bli med i gruppekoblingen kopiert til utklippstavlen" "cchange97": "Bli med i gruppekoblingen kopiert til utklippstavlen",
"cchange98": "Laster opp fil. Dette kan ta noen minutter.",
"cchange99": "Sletter fil. Dette kan ta opptil ett minutt.",
"cchange100": "Filstørrelse overstiger 125 MB",
"cchange101": "Er du sikker på at du vil slette denne filen?",
"cchange102": "Denne filen har blitt slettet",
"cchange103": "Laster opp gif. Dette kan ta opptil ett minutt.",
"cchange104": "Sletter gif. Dette kan ta opptil ett minutt.",
"cchange105": "Filstørrelsen overstiger 3 MB",
"cchange106": "Er du sikker på at du vil slette denne gif-filen?",
"cchange107": "Denne gif-filen har blitt slettet",
"cchange108": "Nedlastingen fortsetter i bakgrunnen, kun EN Q-Chat-fil kan lastes ned samtidig.",
"cchange109": "Filtype støttes ikke!",
"cchange110": "OPPLAST BILDE",
"cchange111": "LAST OPP GIF",
"cchange112": "LAST OPP VEDLEGG",
"cchange113": "LAST OPP FIL",
"cchange114": "Skriv noe ..."
}, },
"welcomepage": { "welcomepage": {
"wcchange1": "Velkommen til Q-Chat", "wcchange1": "Velkommen til Q-Chat",

View File

@ -842,7 +842,7 @@
"cchange74": "zareagował z", "cchange74": "zareagował z",
"cchange75": "Przesyłanie załącznika. Może to potrwać do jednej minuty.", "cchange75": "Przesyłanie załącznika. Może to potrwać do jednej minuty.",
"cchange76": "Usuwanie załącznika. Może to potrwać do jednej minuty.", "cchange76": "Usuwanie załącznika. Może to potrwać do jednej minuty.",
"cchange77": "Rozmiar załącznika przekracza 1 MB", "cchange77": "Rozmiar załącznika przekracza 10 MB",
"cchange78": "Czy na pewno chcesz usunąć ten obraz?", "cchange78": "Czy na pewno chcesz usunąć ten obraz?",
"cchange79": "Czy na pewno chcesz usunąć ten załącznik?", "cchange79": "Czy na pewno chcesz usunąć ten załącznik?",
"cchange80": "Ten obraz został usunięty", "cchange80": "Ten obraz został usunięty",
@ -855,7 +855,24 @@
"cchange94": "załadowano", "cchange94": "załadowano",
"cchange95": "Tylko moje zasoby", "cchange95": "Tylko moje zasoby",
"cchange96": "Otwarte zarządzanie grupą", "cchange96": "Otwarte zarządzanie grupą",
"cchange97": "Link do dołączenia do grupy skopiowany do schowka" "cchange97": "Link do dołączenia do grupy skopiowany do schowka",
"cchange98": "Ładowanie pliku. To może zająć kilka minut.",
"cchange99": "Usuwanie pliku. To może zająć do jednej minuty.",
"cchange100": "Rozmiar pliku przekracza 125 MB",
"cchange101": "Czy na pewno chcesz usunąć ten plik?",
"cchange102": "Ten plik został usunięty",
"cchange103": "Ładowanie gifa. Może to zająć do jednej minuty.",
"cchange104": "Usuwanie GIF. Może to zająć do jednej minuty.",
"cchange105": "Rozmiar pliku przekracza 3 MB",
"cchange106": "Czy na pewno chcesz usunąć ten gif?",
"cchange107": "Ten gif został usunięty",
"cchange108": "Pobieranie będzie kontynuowane w tle, jednocześnie można pobrać tylko JEDEN plik Q-Chat.",
"cchange109": "Typ pliku nie jest obsługiwany!",
"cchange110": "PRZESYŁANIE OBRAZU",
"cchange111": "PRZEŚLIJ GIF",
"cchange112": "PRZESYŁANIE ZAŁĄCZNIKÓW",
"cchange113": "PRZESYŁANIE PLIKU",
"cchange114": "Napisz coś ..."
}, },
"welcomepage": { "welcomepage": {
"wcchange1": "Witamy w Q-Chat", "wcchange1": "Witamy w Q-Chat",

View File

@ -842,7 +842,7 @@
"cchange74": "reagiu com", "cchange74": "reagiu com",
"cchange75": "Carregando anexo. Isso pode levar até um minuto.", "cchange75": "Carregando anexo. Isso pode levar até um minuto.",
"cchange76": "Excluindo anexo. Isso pode levar até um minuto.", "cchange76": "Excluindo anexo. Isso pode levar até um minuto.",
"cchange77": "O tamanho do anexo excede 1 MB", "cchange77": "O tamanho do anexo excede 10 MB",
"cchange78": "Tem certeza que deseja excluir esta imagem?", "cchange78": "Tem certeza que deseja excluir esta imagem?",
"cchange79": "Tem certeza que deseja excluir este anexo?", "cchange79": "Tem certeza que deseja excluir este anexo?",
"cchange80": "Esta imagem foi apagada", "cchange80": "Esta imagem foi apagada",
@ -855,7 +855,24 @@
"cchange94": "carregado", "cchange94": "carregado",
"cchange95": "Somente meus recursos", "cchange95": "Somente meus recursos",
"cchange96": "Gerenciamento de grupo aberto", "cchange96": "Gerenciamento de grupo aberto",
"cchange97": "Link para entrar no grupo copiado para a área de transferência" "cchange97": "Link para entrar no grupo copiado para a área de transferência",
"cchange98": "Enviando arquivo. Isso pode levar alguns minutos.",
"cchange99": "Excluindo arquivo. Isso pode levar até um minuto.",
"cchange100": "Tamanho do arquivo excede 125 MB",
"cchange101": "Tem certeza que deseja excluir este arquivo?",
"cchange102": "Este arquivo foi excluído",
"cchange103": "Enviando gif. Isso pode levar até um minuto.",
"cchange104": "Excluindo gif. Isso pode levar até um minuto.",
"cchange105": "Tamanho do arquivo excede 3 MB",
"cchange106": "Tem certeza que deseja excluir este gif?",
"cchange107": "Este gif foi excluído",
"cchange108": "O download continuará em segundo plano, apenas UM arquivo Q-Chat pode ser baixado simultaneamente.",
"cchange109": "Tipo de arquivo não suportado!",
"cchange110": "CARREGAR IMAGEM",
"cchange111": "CARREGAR GIF",
"cchange112": "UPLOAD DE ANEXO",
"cchange113": "CARREGAR ARQUIVO",
"cchange114": "Escreva algo ..."
}, },
"welcomepage": { "welcomepage": {
"wcchange1": "Bem-vindo ao Q-Chat", "wcchange1": "Bem-vindo ao Q-Chat",

View File

@ -842,7 +842,7 @@
"cchange74": "a reacționat cu", "cchange74": "a reacționat cu",
"cchange75": "Se încarcă atașamentul. Aceasta poate dura până la un minut.", "cchange75": "Se încarcă atașamentul. Aceasta poate dura până la un minut.",
"cchange76": "Se șterge atașamentul. Aceasta poate dura până la un minut.", "cchange76": "Se șterge atașamentul. Aceasta poate dura până la un minut.",
"cchange77": "Dimensiunea atașamentului depășește 1 MB", "cchange77": "Dimensiunea atașamentului depășește 10 MB",
"cchange78": "Sunteți sigur că doriți să ștergeți această imagine?", "cchange78": "Sunteți sigur că doriți să ștergeți această imagine?",
"cchange79": "Sunteți sigur că doriți să ștergeți acest atașament?", "cchange79": "Sunteți sigur că doriți să ștergeți acest atașament?",
"cchange80": "Această imagine a fost ștearsă", "cchange80": "Această imagine a fost ștearsă",
@ -855,7 +855,24 @@
"cchange94": "încărcat", "cchange94": "încărcat",
"cchange95": "Numai resursele mele", "cchange95": "Numai resursele mele",
"cchange96": "Deschideți managementul grupului", "cchange96": "Deschideți managementul grupului",
"cchange97": "Linkul de alaturare grupului a fost copiat in clipboard" "cchange97": "Linkul de alaturare grupului a fost copiat in clipboard",
"cchange98": "Se încarcă fișierul. Aceasta poate dura câteva minute.",
"cchange99": "Ștergerea fișierului. Aceasta poate dura până la un minut.",
"cchange100": "Dimensiunea fișierului depășește 125 MB",
"cchange101": "Sunteți sigur că doriți să ștergeți acest fișier?",
"cchange102": "Acest fișier a fost șters",
"cchange103": "Încărcarea GIF-ului. Aceasta poate dura până la un minut.",
"cchange104": "Ștergerea GIF-ului. Aceasta poate dura până la un minut.",
"cchange105": "Dimensiunea fișierului depășește 3 MB",
"cchange106": "Sunteți sigur că doriți să ștergeți acest gif?",
"cchange107": "Acest gif a fost șters",
"cchange108": "Descărcarea va continua în fundal, un singur fișier Q-Chat poate fi descărcat simultan.",
"cchange109": "Tipul de fișier nu este acceptat!",
"cchange110": "ÎNCĂRCARE IMAGINEA",
"cchange111": "ÎNCĂRCARE GIF",
"cchange112": "ÎNCĂRCARE AATAșAMENT",
"cchange113": "ÎNCĂRCARE FIȘIER",
"cchange114": "Scrie ceva ..."
}, },
"welcomepage": { "welcomepage": {
"wcchange1": "Bine ai venit la Q-Chat", "wcchange1": "Bine ai venit la Q-Chat",

View File

@ -842,7 +842,7 @@
"cchange74": "reagovao sa", "cchange74": "reagovao sa",
"cchange75": "Otpremanje priloga. Ovo može potrajati do jednog minuta.", "cchange75": "Otpremanje priloga. Ovo može potrajati do jednog minuta.",
"cchange76": "Brisanje priloga. Ovo može potrajati do jednog minuta.", "cchange76": "Brisanje priloga. Ovo može potrajati do jednog minuta.",
"cchange77": "Veličina priloga prelazi 1 MB", "cchange77": "Veličina priloga prelazi 10 MB",
"cchange78": "Da li ste sigurni da želite da izbrišete ovu sliku?", "cchange78": "Da li ste sigurni da želite da izbrišete ovu sliku?",
"cchange79": "Da li ste sigurni da želite da izbrišete ovaj prilog?", "cchange79": "Da li ste sigurni da želite da izbrišete ovaj prilog?",
"cchange80": "Ova slika je izbrisana", "cchange80": "Ova slika je izbrisana",
@ -855,7 +855,24 @@
"cchange94": "učitano", "cchange94": "učitano",
"cchange95": "Samo moji resursi", "cchange95": "Samo moji resursi",
"cchange96": "Otvoreno upravljanje grupom", "cchange96": "Otvoreno upravljanje grupom",
"cchange97": "Link pridruživanja grupi je kopiran u međuspremnik" "cchange97": "Link pridruživanja grupi je kopiran u međuspremnik",
"cchange98": "Otpremanje datoteke. Ovo može potrajati nekoliko minuta.",
"cchange99": "Brisanje datoteke. Ovo može potrajati do jednog minuta.",
"cchange100": "Veličina datoteke premašuje 125 MB",
"cchange101": "Da li ste sigurni da želite da izbrišete ovu datoteku?",
"cchange102": "Ova datoteka je izbrisana",
"cchange103": "Otpremanje gif-a. Ovo može potrajati do jednog minuta.",
"cchange104": "Brisanje gif-a. Ovo može potrajati do jednog minuta.",
"cchange105": "Veličina datoteke prelazi 3 MB",
"cchange106": "Da li ste sigurni da želite da izbrišete ovaj gif?",
"cchange107": "Ovaj gif je izbrisan",
"cchange108": "Preuzimanje će se nastaviti u pozadini, samo JEDAN K-Chat fajl može da se preuzme istovremeno.",
"cchange109": "Tip datoteke nije podržan!",
"cchange110": "OTPREMA SLIKE",
"cchange111": "OSTAVLJANJE GIFOVA",
"cchange112": "OTDAVANJE PRILOGA",
"cchange113": "OTPREMA DATOTEKA",
"cchange114": "Napiši nešto ..."
}, },
"welcomepage": { "welcomepage": {
"wcchange1": "Dobrodošli na Q-Chat", "wcchange1": "Dobrodošli na Q-Chat",

View File

@ -842,7 +842,7 @@
"cchange74": "отреагировал", "cchange74": "отреагировал",
"cchange75": "Выполняется загрузка вложения. Это может занять до одной минуты.", "cchange75": "Выполняется загрузка вложения. Это может занять до одной минуты.",
"cchange76": "Удаление вложения. Это может занять до одной минуты.", "cchange76": "Удаление вложения. Это может занять до одной минуты.",
"cchange77": "Размер вложения превышает 1 МБ", "cchange77": "Размер вложения превышает 10 МБ",
"cchange78": "Вы уверены, что хотите удалить это изображение?", "cchange78": "Вы уверены, что хотите удалить это изображение?",
"cchange79": "Вы уверены, что хотите удалить это вложение?", "cchange79": "Вы уверены, что хотите удалить это вложение?",
"cchange80": "Это изображение было удалено", "cchange80": "Это изображение было удалено",
@ -855,7 +855,24 @@
"cchange94": "загружено", "cchange94": "загружено",
"cchange95": "Только мои ресурсы", "cchange95": "Только мои ресурсы",
"cchange96": "Открытое управление группой", "cchange96": "Открытое управление группой",
"cchange97": "Ссылка на вступление в группу скопирована в буфер обмена" "cchange97": "Ссылка на вступление в группу скопирована в буфер обмена",
"cchange98": "Загрузка файла. Это может занять несколько минут.",
"cchange99": "Удаление файла. Это может занять до одной минуты.",
"cchange100": "Размер файла превышает 125 МБ",
"cchange101": "Вы уверены, что хотите удалить этот файл?",
"cchange102": "Этот файл был удален",
"cchange103": "Загрузка gif. Это может занять до одной минуты.",
"cchange104": "Удаление gif. Это может занять до одной минуты.",
"cchange105": "Размер файла превышает 3 МБ",
"cchange106": "Вы уверены, что хотите удалить эту гифку?",
"cchange107": "Эта гифка была удалена",
"cchange108": "Загрузка продолжится в фоновом режиме, одновременно можно загрузить только ОДИН файл Q-Chat.",
"cchange109": "Тип файла не поддерживается!",
"cchange110": "ЗАГРУЗКА ИЗОБРАЖЕНИЯ",
"cchange111": "ЗАГРУЗИТЬ GIF",
"cchange112": "ЗАГРУЗКА ВЛОЖЕНИЯ",
"cchange113": "ЗАГРУЗКА ФАЙЛА",
"cchange114": "Напишите что-нибудь ..."
}, },
"welcomepage": { "welcomepage": {
"wcchange1": "Добро пожаловать в Q-Chat", "wcchange1": "Добро пожаловать в Q-Chat",

View File

@ -842,7 +842,7 @@
"cchange74": "reacted with", "cchange74": "reacted with",
"cchange75": "Uploading attachment. This may take up to one minute.", "cchange75": "Uploading attachment. This may take up to one minute.",
"cchange76": "Deleting attachment. This may take up to one minute.", "cchange76": "Deleting attachment. This may take up to one minute.",
"cchange77": "Attachment size exceeds 1 MB", "cchange77": "Attachment size exceeds 10 MB",
"cchange78": "Are you sure you want to delete this image?", "cchange78": "Are you sure you want to delete this image?",
"cchange79": "Are you sure you want to delete this attachment?", "cchange79": "Are you sure you want to delete this attachment?",
"cchange80": "This image has been deleted", "cchange80": "This image has been deleted",
@ -855,7 +855,24 @@
"cchange94": "loaded", "cchange94": "loaded",
"cchange95": "Only my resources", "cchange95": "Only my resources",
"cchange96": "Open Group Management", "cchange96": "Open Group Management",
"cchange97": "Join group link copied to clipboard" "cchange97": "Join group link copied to clipboard",
"cchange98": "Uploading file. This may take some minutes.",
"cchange99": "Deleting file. This may take up to one minute.",
"cchange100": "File size exceeds 125 MB",
"cchange101": "Are you sure you want to delete this file?",
"cchange102": "This file has been deleted",
"cchange103": "Uploading gif. This may take up to one minutes.",
"cchange104": "Deleting gif. This may take up to one minute.",
"cchange105": "File size exceeds 3 MB",
"cchange106": "Are you sure you want to delete this gif?",
"cchange107": "This gif has been deleted",
"cchange108": "Download will continue in the background, only ONE Q-Chat file can be downloaded simultaneously.",
"cchange109": "File type not supported!",
"cchange110": "IMAGE UPLOAD",
"cchange111": "GIF UPLOAD",
"cchange112": "ATTACHMENT UPLOAD",
"cchange113": "FILE UPLOAD",
"cchange114": "Write something ..."
}, },
"welcomepage": { "welcomepage": {
"wcchange1": "Welcome to Q-Chat", "wcchange1": "Welcome to Q-Chat",

View File

@ -842,7 +842,7 @@
"cchange74": "心情回应", "cchange74": "心情回应",
"cchange75": "上传附件。这可能需要一分钟。", "cchange75": "上传附件。这可能需要一分钟。",
"cchange76": "正在删除附件。这可能需要一分钟。", "cchange76": "正在删除附件。这可能需要一分钟。",
"cchange77": "附件大小超过 1 MB", "cchange77": "附件大小超过 10 MB",
"cchange78": "你确定要删除这张图片吗?", "cchange78": "你确定要删除这张图片吗?",
"cchange79": "你确定要删除这个附件吗?", "cchange79": "你确定要删除这个附件吗?",
"cchange80": "这张图片已被删除", "cchange80": "这张图片已被删除",
@ -855,7 +855,24 @@
"cchange94": "已加载", "cchange94": "已加载",
"cchange95": "只有我的资源", "cchange95": "只有我的资源",
"cchange96": "打开群组管理", "cchange96": "打开群组管理",
"cchange97": "加入群组链接已复制到剪贴板" "cchange97": "加入群组链接已复制到剪贴板",
"cchange98": "正在上传文件。这可能需要几分钟时间。",
"cchange99": "正在删除文件。这可能最多需要一分钟。",
"cchange100": "文件大小超过 125 MB",
"cchange101": "您确定要删除此文件吗?",
"cchange102": "该文件已被删除",
"cchange103": "正在上传 gif。这最多可能需要一分钟。",
"cchange104": "正在删除 gif。这可能最多需要一分钟。",
"cchange105": "文件大小超过 3 MB",
"cchange106": "您确定要删除这个 gif 吗?",
"cchange107": "该动图已被删除",
"cchange108": "下载将在后台继续,只能同时下载一个 Q-Chat 文件。",
"cchange109": "不支持文件类型!",
"cchange110": "图片上传",
"cchange111": "GIF 上传",
"cchange112": "附件上传",
"cchange113": "文件上传",
"cchange114": "写点东西 ..."
}, },
"welcomepage": { "welcomepage": {
"wcchange1": "欢迎来到Q-Chat", "wcchange1": "欢迎来到Q-Chat",

View File

@ -842,7 +842,7 @@
"cchange74": "心情回應", "cchange74": "心情回應",
"cchange75": "上傳附件。這可能需要一分鐘。", "cchange75": "上傳附件。這可能需要一分鐘。",
"cchange76": "正在刪除附件。這可能需要一分鐘。", "cchange76": "正在刪除附件。這可能需要一分鐘。",
"cchange77": "附件大小超過 1 MB", "cchange77": "附件大小超過 10 MB",
"cchange78": "你確定要刪除這張圖片嗎?", "cchange78": "你確定要刪除這張圖片嗎?",
"cchange79": "你確定要刪除這個附件嗎?", "cchange79": "你確定要刪除這個附件嗎?",
"cchange80": "這張圖片已被刪除", "cchange80": "這張圖片已被刪除",
@ -855,7 +855,24 @@
"cchange94": "已載入", "cchange94": "已載入",
"cchange95": "只有我的資源", "cchange95": "只有我的資源",
"cchange96": "開啟群組管理", "cchange96": "開啟群組管理",
"cchange97": "加入群組連結已複製到剪貼簿" "cchange97": "加入群組連結已複製到剪貼簿",
"cchange98": "正在上傳檔案。這可能需要幾分鐘。",
"cchange99": "正在刪除檔案。這可能最多需要一分鐘。",
"cchange100": "檔案大小超過 125 MB",
"cchange101": "您確定要刪除此檔案嗎?",
"cchange102": "該檔案已刪除",
"cchange103": "正在上傳 gif。這最多可能需要一分鐘。",
"cchange104": "正在刪除 gif。這可能最多需要一分鐘。",
"cchange105": "檔案大小超過 3 MB",
"cchange106": "您確定要刪除這個 gif 嗎?",
"cchange107": "該動圖已刪除",
"cchange108": "下載將在背景繼續,只能同時下載一個 Q-Chat 檔案。",
"cchange109": "不支援檔案類型!",
"cchange110": "圖片上傳",
"cchange111": "GIF 上傳",
"cchange112": "附件上傳",
"cchange113": "檔案上傳",
"cchange114": "寫點東西 ..."
}, },
"welcomepage": { "welcomepage": {
"wcchange1": "歡迎來到 Q-Chat", "wcchange1": "歡迎來到 Q-Chat",

BIN
img/file-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

1639
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -74,7 +74,7 @@
"xhr2": "0.2.1" "xhr2": "0.2.1"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "7.24.5", "@babel/core": "7.24.6",
"@electron/packager": "18.3.2", "@electron/packager": "18.3.2",
"@material/mwc-button": "0.27.0", "@material/mwc-button": "0.27.0",
"@material/mwc-checkbox": "0.27.0", "@material/mwc-checkbox": "0.27.0",
@ -114,7 +114,7 @@
"@qortal/rollup-plugin-web-worker-loader": "1.6.5", "@qortal/rollup-plugin-web-worker-loader": "1.6.5",
"@rollup/plugin-alias": "5.1.0", "@rollup/plugin-alias": "5.1.0",
"@rollup/plugin-babel": "6.0.4", "@rollup/plugin-babel": "6.0.4",
"@rollup/plugin-commonjs": "25.0.7", "@rollup/plugin-commonjs": "25.0.8",
"@rollup/plugin-node-resolve": "15.2.3", "@rollup/plugin-node-resolve": "15.2.3",
"@rollup/plugin-replace": "5.0.5", "@rollup/plugin-replace": "5.0.5",
"@rollup/plugin-terser": "0.4.4", "@rollup/plugin-terser": "0.4.4",
@ -128,8 +128,8 @@
"@vaadin/tabsheet": "24.2.9", "@vaadin/tabsheet": "24.2.9",
"@vaadin/tooltip": "24.2.9", "@vaadin/tooltip": "24.2.9",
"@zip.js/zip.js": "2.7.44", "@zip.js/zip.js": "2.7.44",
"axios": "1.7.1", "axios": "1.7.2",
"electron": "30.0.6", "electron": "30.0.8",
"electron-builder": "24.13.3", "electron-builder": "24.13.3",
"epml": "0.3.3", "epml": "0.3.3",
"eslint": "8.57.0", "eslint": "8.57.0",
@ -144,7 +144,7 @@
"pwa-helpers": "0.9.1", "pwa-helpers": "0.9.1",
"redux": "5.0.1", "redux": "5.0.1",
"redux-thunk": "3.1.0", "redux-thunk": "3.1.0",
"rollup": "4.17.2", "rollup": "4.18.0",
"rollup-plugin-node-globals": "1.4.0", "rollup-plugin-node-globals": "1.4.0",
"rollup-plugin-progress": "1.1.2", "rollup-plugin-progress": "1.1.2",
"rollup-plugin-scss": "3.0.0", "rollup-plugin-scss": "3.0.0",

File diff suppressed because it is too large Load Diff

View File

@ -21,6 +21,9 @@ import './ChatImage'
import '@material/mwc-button' import '@material/mwc-button'
import '@material/mwc-dialog' import '@material/mwc-dialog'
import '@material/mwc-icon' import '@material/mwc-icon'
import '@polymer/paper-dialog/paper-dialog.js'
import '@polymer/paper-icon-button/paper-icon-button.js'
import '@polymer/iron-icons/iron-icons.js'
import '@vaadin/icon' import '@vaadin/icon'
import '@vaadin/icons' import '@vaadin/icons'
import '@vaadin/tooltip' import '@vaadin/tooltip'
@ -96,6 +99,7 @@ function processText(input) {
parts.forEach((part) => { parts.forEach((part) => {
if (part.startsWith('qortal://')) { if (part.startsWith('qortal://')) {
const link = document.createElement('span') const link = document.createElement('span')
// Store the URL in a data attribute // Store the URL in a data attribute
link.setAttribute('data-url', part) link.setAttribute('data-url', part)
link.textContent = part link.textContent = part
@ -107,7 +111,9 @@ function processText(input) {
e.preventDefault() e.preventDefault()
try { try {
const res = await extractComponents(part) const res = await extractComponents(part)
if (!res) return if (!res) return
if (res.type && res.groupid && res.action === 'join') { if (res.type && res.groupid && res.action === 'join') {
window.parent.reduxStore.dispatch( window.parent.reduxStore.dispatch(
window.parent.reduxAction.setNewTab({ window.parent.reduxAction.setNewTab({
@ -130,7 +136,7 @@ function processText(input) {
window.parent.reduxStore.dispatch( window.parent.reduxStore.dispatch(
window.parent.reduxAction.setSideEffectAction({ window.parent.reduxAction.setSideEffectAction({
type: 'openJoinGroupModal', type: 'openJoinGroupModal',
data: +res.groupid data: res.groupid
}) })
) )
return return
@ -987,7 +993,9 @@ class MessageTemplate extends LitElement {
openDialogImage: { type: Boolean }, openDialogImage: { type: Boolean },
openDialogGif: { type: Boolean }, openDialogGif: { type: Boolean },
openDeleteImage: { type: Boolean }, openDeleteImage: { type: Boolean },
openDeleteGif: { type: Boolean },
openDeleteAttachment: { type: Boolean }, openDeleteAttachment: { type: Boolean },
openDeleteFile: { type: Boolean },
isImageLoaded: { type: Boolean }, isImageLoaded: { type: Boolean },
isGifLoaded: { type: Boolean }, isGifLoaded: { type: Boolean },
isFirstMessage: { type: Boolean }, isFirstMessage: { type: Boolean },
@ -1032,6 +1040,10 @@ class MessageTemplate extends LitElement {
this.isLastMessageInGroup = false this.isLastMessageInGroup = false
this.viewImage = false this.viewImage = false
this.isInProgress = false this.isInProgress = false
this.openDeleteImage = false
this.openDeleteGif = false
this.openDeleteAttachment = false
this.openDeleteFile = false
} }
render() { render() {
@ -1044,36 +1056,50 @@ class MessageTemplate extends LitElement {
let repliedToData = null let repliedToData = null
let image = null let image = null
let gif = null let gif = null
let attachment = null
let file = null
let isImageDeleted = false let isImageDeleted = false
let isGifDeleted = false
let isAttachmentDeleted = false let isAttachmentDeleted = false
let isFileDeleted = false
let version = 0 let version = 0
let isForwarded = false let isForwarded = false
let isEdited = false let isEdited = false
let attachment = null
try { try {
const parsedMessageObj = JSON.parse(this.messageObj.decodedMessage) const parsedMessageObj = JSON.parse(this.messageObj.decodedMessage)
if (+parsedMessageObj.version > 1 && parsedMessageObj.messageText) { if (+parsedMessageObj.version > 1 && parsedMessageObj.messageText) {
messageVersion2 = generateHTML(parsedMessageObj.messageText, [StarterKit, Underline, Highlight]) messageVersion2 = generateHTML(parsedMessageObj.messageText, [StarterKit, Underline, Highlight])
messageVersion2WithLink = processText(messageVersion2) messageVersion2WithLink = processText(messageVersion2)
} }
message = parsedMessageObj.messageText message = parsedMessageObj.messageText
repliedToData = this.messageObj.repliedToData repliedToData = this.messageObj.repliedToData
isImageDeleted = parsedMessageObj.isImageDeleted isImageDeleted = parsedMessageObj.isImageDeleted
isGifDeleted = parsedMessageObj.isGifDeleted
isAttachmentDeleted = parsedMessageObj.isAttachmentDeleted isAttachmentDeleted = parsedMessageObj.isAttachmentDeleted
isFileDeleted = parsedMessageObj.isFileDeleted
// reactions = parsedMessageObj.reactions || [] // reactions = parsedMessageObj.reactions || []
version = parsedMessageObj.version version = parsedMessageObj.version
isForwarded = parsedMessageObj.type === 'forward' isForwarded = parsedMessageObj.type === 'forward'
isEdited = parsedMessageObj.isEdited && true isEdited = parsedMessageObj.isEdited && true
if (parsedMessageObj.attachments && Array.isArray(parsedMessageObj.attachments) && parsedMessageObj.attachments.length > 0) {
attachment = parsedMessageObj.attachments[0]
}
if (parsedMessageObj.images && Array.isArray(parsedMessageObj.images) && parsedMessageObj.images.length > 0) { if (parsedMessageObj.images && Array.isArray(parsedMessageObj.images) && parsedMessageObj.images.length > 0) {
image = parsedMessageObj.images[0] image = parsedMessageObj.images[0]
} }
if (parsedMessageObj.gifs && Array.isArray(parsedMessageObj.gifs) && parsedMessageObj.gifs.length > 0) { if (parsedMessageObj.gifs && Array.isArray(parsedMessageObj.gifs) && parsedMessageObj.gifs.length > 0) {
gif = parsedMessageObj.gifs[0] gif = parsedMessageObj.gifs[0]
} }
if (parsedMessageObj.attachments && Array.isArray(parsedMessageObj.attachments) && parsedMessageObj.attachments.length > 0) {
attachment = parsedMessageObj.attachments[0]
}
if (parsedMessageObj.files && Array.isArray(parsedMessageObj.files) && parsedMessageObj.files.length > 0) {
file = parsedMessageObj.files[0]
}
} catch (error) { } catch (error) {
message = this.messageObj.decodedMessage message = this.messageObj.decodedMessage
} }
@ -1141,7 +1167,7 @@ class MessageTemplate extends LitElement {
if (gif) { if (gif) {
const myNode = window.parent.reduxStore.getState().app.nodeConfig.knownNodes[window.parent.reduxStore.getState().app.nodeConfig.node] const myNode = window.parent.reduxStore.getState().app.nodeConfig.knownNodes[window.parent.reduxStore.getState().app.nodeConfig.node]
const nodeUrl = myNode.protocol + '://' + myNode.domain + ':' + myNode.port const nodeUrl = myNode.protocol + '://' + myNode.domain + ':' + myNode.port
gifUrl = `${nodeUrl}/arbitrary/${gif.service}/${gif.name}/${gif.identifier}?filepath=${gif.filePath}` gifUrl = `${nodeUrl}/arbitrary/${gif.service}/${gif.name}/${gif.identifier}?async=true`
if (this.viewImage || this.myAddress === this.messageObj.sender) { if (this.viewImage || this.myAddress === this.messageObj.sender) {
gifHTML = createGif(gifUrl) gifHTML = createGif(gifUrl)
gifHTMLDialog = createGif(gifUrl) gifHTMLDialog = createGif(gifUrl)
@ -1280,7 +1306,7 @@ class MessageTemplate extends LitElement {
class=${[`image-container`, !this.isImageLoaded ? 'defaultSize' : '',].join(' ')} class=${[`image-container`, !this.isImageLoaded ? 'defaultSize' : '',].join(' ')}
style=${this.isFirstMessage && 'margin-top: 10px;'} style=${this.isFirstMessage && 'margin-top: 10px;'}
> >
<div style="display:flex;width:100%;height:100%;justify-content:center;align-items:center;cursor:pointer;color:var(--black);"> <div style="display: flex; width: 100%; height: 100%; justify-content: center; align-items: center; cursor: pointer; color: var(--black);">
${translate('chatpage.cchange40')} ${translate('chatpage.cchange40')}
</div> </div>
</div> </div>
@ -1293,7 +1319,12 @@ class MessageTemplate extends LitElement {
${imageHTML} ${imageHTML}
${this.myAddress === this.messageObj.sender ? ${this.myAddress === this.messageObj.sender ?
html` html`
<vaadin-icon @click=${() => {this.openDeleteImage = true;}} class="image-delete-icon" icon="vaadin:close" slot="icon"></vaadin-icon> <vaadin-icon
@click=${() => this.openDeleteImageDialog()}
icon="vaadin:close"
slot="icon"
class="image-delete-icon"
></vaadin-icon>
` `
: '' : ''
} }
@ -1301,35 +1332,62 @@ class MessageTemplate extends LitElement {
` `
: image && isImageDeleted ? : image && isImageDeleted ?
html` html`
<p class="image-deleted-msg">${translate('chatpage.cchange80')}</p> <div class="attachment-container">
<div class="attachment-info">
<p style=${'font-style: italic;'} class="attachment-name">
${translate('chatpage.cchange80')}
</p>
</div>
</div>
` `
: html`` : html``
} }
${gif && !this.viewImage && this.myAddress !== this.messageObj.sender ? ${gif && !isGifDeleted && !this.viewImage && this.myAddress !== this.messageObj.sender ?
html` html`
<div <div
@click=${() => {this.viewImage = true;}} @click=${() => {this.viewImage = true;}}
class=${[`image-container`, !this.isImageLoaded ? 'defaultSize' : '', ].join(' ')} class=${[`image-container`, !this.isGifoaded ? 'defaultSize' : '', ].join(' ')}
style=${this.isFirstMessage && 'margin-top: 10px;'} style=${this.isFirstMessage && 'margin-top: 10px;'}
> >
<div style="display:flex;width:100%;height:100%;justify-content:center;align-items:center;cursor:pointer;color:var(--black);"> <div style="display: flex; width: 100%; height: 100%; justify-content: center; align-items: center; cursor: pointer; color: var(--black);">
${translate('gifs.gchange25')} ${translate('gifs.gchange25')}
</div> </div>
</div> </div>
` `
: html`` : html``
} }
${gif && (this.viewImage || this.myAddress === this.messageObj.sender) ? ${gif && !isGifDeleted && (this.viewImage || this.myAddress === this.messageObj.sender) ?
html` html`
<div class=${[`image-container`, !this.isGifLoaded ? 'defaultSize' : '',].join(' ')} style=${this.isFirstMessage && 'margin-top: 10px;'}> <div class=${[`image-container`, !this.isGifLoaded ? 'defaultSize' : '',].join(' ')} style=${this.isFirstMessage && 'margin-top: 10px;'}>
${gifHTML} ${gifHTML}
${this.myAddress === this.messageObj.sender ?
html`
<vaadin-icon
@click=${() => this.openDeleteGifDialog()}
icon="vaadin:close"
slot="icon"
class="image-delete-icon"
></vaadin-icon>
`
: ''
}
</div> </div>
` `
: gif && isGifDeleted ?
html`
<div class="attachment-container">
<div class="attachment-info">
<p style=${'font-style: italic;'} class="attachment-name">
${translate('chatpage.cchange107')}
</p>
</div>
</div>
`
: html`` : html``
} }
${attachment && !isAttachmentDeleted ? ${attachment && !isAttachmentDeleted ?
html` html`
<div @click=${async () => await this.downloadAttachment(attachment)} class="attachment-container"> <div class="attachment-container">
<div class="attachment-icon-container"> <div class="attachment-icon-container">
<img src="/img/attachment-icon.png" alt="attachment-icon" class="attachment-icon" /> <img src="/img/attachment-icon.png" alt="attachment-icon" class="attachment-icon" />
</div> </div>
@ -1341,11 +1399,16 @@ class MessageTemplate extends LitElement {
${roundToNearestDecimal(attachment.attachmentSize)} mb ${roundToNearestDecimal(attachment.attachmentSize)} mb
</p> </p>
</div> </div>
<vaadin-icon icon="vaadin:download-alt" slot="icon" class="download-icon"></vaadin-icon> <vaadin-icon
@click=${async () => await this.downloadAttachment(attachment)}
icon="vaadin:download-alt"
slot="icon"
class="download-icon"
></vaadin-icon>
${this.myAddress === this.messageObj.sender ? ${this.myAddress === this.messageObj.sender ?
html` html`
<vaadin-icon <vaadin-icon
@click=${(e) => {e.stopPropagation(); this.openDeleteAttachment = true;}} @click=${() => this.openDeleteAttachmentDialog()}
class="image-delete-icon" class="image-delete-icon"
icon="vaadin:close" icon="vaadin:close"
slot="icon" slot="icon"
@ -1368,6 +1431,51 @@ class MessageTemplate extends LitElement {
` `
: html`` : html``
} }
${file && !isFileDeleted ?
html`
<div class="file-container">
<div class="file-icon-container">
<img src="/img/file-icon.png" alt="file-icon" class="file-icon" />
</div>
<div class="attachment-info">
<p class="attachment-name">
${file && file.appFileName}
</p>
<p class="attachment-size">
${roundToNearestDecimal(file.appFileSize)} mb
</p>
</div>
<vaadin-icon
@click=${async () => await this.downloadFile(file)}
icon="vaadin:download-alt"
slot="icon"
class="download-icon"
></vaadin-icon>
${this.myAddress === this.messageObj.sender ?
html`
<vaadin-icon
@click=${() => this.openDeleteFileDialog()}
class="image-delete-icon"
icon="vaadin:close"
slot="icon"
></vaadin-icon>
`
: html``
}
</div>
`
: file && isFileDeleted ?
html`
<div class="attachment-container">
<div class="attachment-info">
<p style=${'font-style: italic;'} class="attachment-name">
${translate('chatpage.cchange102')}
</p>
</div>
</div>
`
: html``
}
<div id="messageContent" class="message" style=${image && replacedMessage !== '' && 'margin-top: 15px;'}> <div id="messageContent" class="message" style=${image && replacedMessage !== '' && 'margin-top: 15px;'}>
${+version > 1 ? messageVersion2WithLink ? ${+version > 1 ? messageVersion2WithLink ?
html` html`
@ -1511,7 +1619,6 @@ class MessageTemplate extends LitElement {
</mwc-button> </mwc-button>
</mwc-dialog> </mwc-dialog>
<mwc-dialog id="showDialogPublicKey" ?open=${this.openDialogGif} @closed=${() => {this.openDialogGif = false;}}> <mwc-dialog id="showDialogPublicKey" ?open=${this.openDialogGif} @closed=${() => {this.openDialogGif = false;}}>
MessageTemplate
<div class="dialog-header"></div> <div class="dialog-header"></div>
<div class="dialog-container imageContainer"> <div class="dialog-container imageContainer">
${gifHTMLDialog} ${gifHTMLDialog}
@ -1519,34 +1626,88 @@ class MessageTemplate extends LitElement {
<mwc-button slot="primaryAction" dialogAction="cancel" class="red" @click=${() => {this.openDialogGif = false;}}> <mwc-button slot="primaryAction" dialogAction="cancel" class="red" @click=${() => {this.openDialogGif = false;}}>
${translate('general.close')} ${translate('general.close')}
</mwc-button> </mwc-button>
MessageTemplate
</mwc-dialog> </mwc-dialog>
<mwc-dialog hideActions ?open=${this.openDeleteImage} @closed=${() => {this.openDeleteImage = false;}}> <mwc-dialog hideActions id="deleteImageDialog" scrimClickAction="" escapeKeyAction="">
<div class="delete-image-msg"> <div class="delete-image-msg">
<p>${translate('chatpage.cchange78')}</p> <p>${translate('chatpage.cchange78')}</p>
</div> </div>
<div class="modal-button-row" @click=${() => (this.openDeleteImage = false)}> <div class="modal-button-row">
<button class="modal-button-red"> <button class="modal-button-red" @click=${() => this.closeDeleteImageDialog()}>
Cancel ${translate('login.lp4')}
</button> </button>
<button class="modal-button" @click=${() => this.sendMessage({type: 'delete', name: image.name, identifier: image.identifier, editedMessageObj: this.messageObj,})}> <button class="modal-button" @click=${() => {
Yes this.sendMessage({type: 'delete', name: image.name, identifier: image.identifier, editedMessageObj: this.messageObj});
this.closeDeleteImageDialog();
}}>
${translate('general.yes')}
</button> </button>
</div> </div>
</mwc-dialog> </mwc-dialog>
<mwc-dialog hideActions ?open=${this.openDeleteAttachment} @closed=${() => {this.openDeleteAttachment = false;}}> <mwc-dialog hideActions id="deleteGifDialog" scrimClickAction="" escapeKeyAction="">
<div class="delete-image-msg">
<p>${translate('chatpage.cchange106')}</p>
</div>
<div class="modal-button-row">
<button class="modal-button-red" @click=${() => this.closeDeleteGifDialog()}>
${translate('login.lp4')}
</button>
<button class="modal-button" @click=${() => {
this.sendMessage({type: 'deleteGif', gif: gif, name: gif.name, identifier: gif.identifier, editedMessageObj: this.messageObj});
this.closeDeleteGifDialog();
}}>
${translate('general.yes')}
</button>
</div>
</mwc-dialog>
<mwc-dialog hideActions id="deleteAttachmentDialog" scrimClickAction="" escapeKeyAction="">
<div class="delete-image-msg"> <div class="delete-image-msg">
<p>${translate('chatpage.cchange79')}</p> <p>${translate('chatpage.cchange79')}</p>
</div> </div>
<div class="modal-button-row" @click=${() => (this.openDeleteAttachment = false)}> <div class="modal-button-row">
<button class="modal-button-red"> <button class="modal-button-red" @click=${() => this.closeDeleteAttachmentDialog()}>
Cancel ${translate('login.lp4')}
</button> </button>
<button class="modal-button" @click=${() => {this.sendMessage({type: 'deleteAttachment', attachment: attachment, name: attachment.name, identifier: attachment.identifier, editedMessageObj: this.messageObj,});}}> <button class="modal-button" @click=${() => {
Yes this.sendMessage({type: 'deleteAttachment', attachment: attachment, name: attachment.name, identifier: attachment.identifier, editedMessageObj: this.messageObj});
this.closeDeleteAttachmentDialog();
}}>
${translate('general.yes')}
</button> </button>
</div> </div>
</mwc-dialog> </mwc-dialog>
<mwc-dialog hideActions id="deleteFileDialog" scrimClickAction="" escapeKeyAction="">
<div class="delete-image-msg">
<p>${translate('chatpage.cchange101')}</p>
</div>
<div class="modal-button-row">
<button class="modal-button-red" @click=${() => this.closeDeleteFileDialog()}>
${translate('login.lp4')}
</button>
<button class="modal-button" @click=${() => {
this.sendMessage({type: 'deleteFile', file: file, name: file.name, identifier: file.identifier, editedMessageObj: this.messageObj});
this.closeDeleteFileDialog();
}}>
${translate('general.yes')}
</button>
</div>
</mwc-dialog>
<paper-dialog id="downloadProgressDialog" class="progress" modal>
<span class="close-download"><paper-icon-button icon="icons:close" @click="${() => this.closeDownloadProgressDialog()}" title="${translate("general.close")}"></paper-icon-button></span>
<div class="lds-roller">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
<h2>${translate('appspage.schange41')}</h2>
</paper-dialog>
<paper-dialog id="closeProgressDialog" class="close-progress" modal>
${translate('chatpage.cchange108')}
</paper-dialog>
` `
} }
@ -1574,6 +1735,14 @@ class MessageTemplate extends LitElement {
}, 60000) }, 60000)
} }
async closeDownloadProgressDialog() {
const closeDelay = ms => new Promise(res => setTimeout(res, ms))
this.shadowRoot.getElementById('downloadProgressDialog').close()
this.shadowRoot.getElementById('closeProgressDialog').open()
await closeDelay(3000)
this.shadowRoot.getElementById('closeProgressDialog').close()
}
// Open & Close Private Message Chat Modal // Open & Close Private Message Chat Modal
showPrivateMessageModal() { showPrivateMessageModal() {
this.openDialogPrivateMessage = true this.openDialogPrivateMessage = true
@ -1600,17 +1769,82 @@ class MessageTemplate extends LitElement {
} }
} }
async downloadAttachment(attachment) { openDeleteImageDialog() {
this.openDeleteImage = true
this.shadowRoot.querySelector('#deleteImageDialog').show()
}
closeDeleteImageDialog() {
this.shadowRoot.querySelector('#deleteImageDialog').close()
this.openDeleteImage = false
}
openDeleteGifDialog() {
this.openDeleteGif = true
this.shadowRoot.querySelector('#deleteGifDialog').show()
}
closeDeleteGifDialog() {
this.shadowRoot.querySelector('#deleteGifDialog').close()
this.openDeleteGif = false
}
openDeleteAttachmentDialog() {
this.openDeleteAttachment = true
this.shadowRoot.querySelector('#deleteAttachmentDialog').show()
}
closeDeleteAttachmentDialog() {
this.shadowRoot.querySelector('#deleteAttachmentDialog').close()
this.openDeleteAttachment = false
}
openDeleteFileDialog() {
this.openDeleteFile = true
this.shadowRoot.querySelector('#deleteFileDialog').show()
}
closeDeleteFileDialog() {
this.shadowRoot.querySelector('#deleteFileDialog').close()
this.openDeleteFile = false
}
downloadAttachment(attachment) {
const myNode = window.parent.reduxStore.getState().app.nodeConfig.knownNodes[window.parent.reduxStore.getState().app.nodeConfig.node] const myNode = window.parent.reduxStore.getState().app.nodeConfig.knownNodes[window.parent.reduxStore.getState().app.nodeConfig.node]
const nodeUrl = myNode.protocol + '://' + myNode.domain + ':' + myNode.port const nodeUrl = myNode.protocol + '://' + myNode.domain + ':' + myNode.port
this.shadowRoot.getElementById('downloadProgressDialog').open()
try { try {
axios.get( axios.get(
`${nodeUrl}/arbitrary/QCHAT_ATTACHMENT/${attachment.name}/${attachment.identifier}`, `${nodeUrl}/arbitrary/ATTACHMENT/${attachment.name}/${attachment.identifier}`,
{ responseType: 'blob' } { responseType: 'blob' }
).then((response) => { ).then((response) => {
this.shadowRoot.getElementById('downloadProgressDialog').close()
let filename = attachment.attachmentName let filename = attachment.attachmentName
let blob = new Blob([response.data], { type: 'application/octet-stream' }) let blob = new Blob([response.data], { type: 'application/octet-stream' })
this.shadowRoot.getElementById('downloadProgressDialog').close()
this.saveFileToDisk(blob, filename)
})
} catch (error) {
console.error(error)
}
}
downloadFile(file) {
const myNode = window.parent.reduxStore.getState().app.nodeConfig.knownNodes[window.parent.reduxStore.getState().app.nodeConfig.node]
const nodeUrl = myNode.protocol + '://' + myNode.domain + ':' + myNode.port
this.shadowRoot.getElementById('downloadProgressDialog').open()
try {
axios.get(
`${nodeUrl}/arbitrary/FILE/${file.name}/${file.identifier}`,
{ responseType: 'blob' }
).then((response) => {
this.shadowRoot.getElementById('downloadProgressDialog').close()
let filename = file.appFileName
let blob = new Blob([response.data], { type: 'application/octet-stream' })
this.saveFileToDisk(blob, filename) this.saveFileToDisk(blob, filename)
}) })
} catch (error) { } catch (error) {
@ -1630,7 +1864,8 @@ class MessageTemplate extends LitElement {
await writable.write(contents) await writable.write(contents)
await writable.close() await writable.close()
} }
writeFile(fileHandle, blob).then(() => console.log('FILE SAVED'))
await writeFile(fileHandle, blob).then(() => console.log('FILE SAVED'))
} catch (error) { } catch (error) {
console.log(error) console.log(error)
} }

View File

@ -135,14 +135,18 @@ class ChatTextEditor extends LitElement {
this.insertFile(e.target.files[0]) this.insertFile(e.target.files[0])
const filePickerInput = this.shadowRoot.getElementById('file-picker') const filePickerInput = this.shadowRoot.getElementById('file-picker')
if (filePickerInput) { if (filePickerInput) {
filePickerInput.value = "" filePickerInput.value = ''
} }
}}" }}"
id="file-picker" id="file-picker"
class="file-picker-input" class="file-picker-input"
type="file" type="file"
name="myImage" name="myImage"
accept="image/*, .doc, .docx, .pdf, .zip, .pdf, .txt, .odt, .ods, .xls, .xlsx, .ppt, .pptx" accept="
image/*, .doc, .docx, .zip, .pdf, .txt, .odt, .ods, .html,
.xls, .xlsx, .ppt, .pptx, .jar, .gzip, .exe, .deb, .rar, .log,
.sh, .dmg, .pkg, .7z, .gz, .psd, .mp4, .rpm, .snap, .AppImage
"
> >
</div> </div>
</div> </div>
@ -295,7 +299,7 @@ class ChatTextEditor extends LitElement {
} }
sendMessageFunc(props) { sendMessageFunc(props) {
if (this.editor.isEmpty && (this.iframeId !== 'newChat' && this.iframeId !== 'newAttachmentChat')) return if (this.editor.isEmpty && (this.iframeId !== 'newChat' && this.iframeId !== 'newGifChat' && this.iframeId !== 'newAttachmentChat' && this.iframeId !== 'newFileChat')) return
this.getMessageSize(this.editor.getJSON()) this.getMessageSize(this.editor.getJSON())
@ -351,18 +355,42 @@ class ChatTextEditor extends LitElement {
repliedTo: '', repliedTo: '',
version: 3 version: 3
} }
} else if (this.gifFile && this.iframeId === 'newGifChat') {
messageObject = {
messageText: trimmedMessage,
images: [{
service: "IMAGE",
name: '123456789123456789123456789',
identifier: '123456'
}],
repliedTo: '',
version: 3
}
} else if (this.attachment && this.iframeId === 'newAttachmentChat') { } else if (this.attachment && this.iframeId === 'newAttachmentChat') {
messageObject = { messageObject = {
messageText: trimmedMessage, messageText: trimmedMessage,
attachments: [{ attachments: [{
service: "QCHAT_ATTACHMENT", service: "ATTACHMENT",
name: '123456789123456789123456789', name: '123456789123456789123456789',
identifier: '123456', identifier: '123456',
attachmentName: "123456789123456789123456789", attachmentName: "123456789123456789123456789",
attachmentSize: "123456" attachmentSize: "123456"
}], }],
repliedTo: '', repliedTo: '',
version: 2 version: 3
}
} else if (this.appFile && this.iframeId === 'newFileChat') {
messageObject = {
messageText: trimmedMessage,
files: [{
service: "FILE",
name: '123456789123456789123456789',
identifier: '123456',
appFileName: "123456789123456789123456789",
appFileSize: "123456"
}],
repliedTo: '',
version: 3
} }
} else { } else {
messageObject = { messageObject = {

View File

@ -426,7 +426,6 @@ export const chatpageStyles = css`
width: 800px; width: 800px;
} }
.close-icon { .close-icon {
color: #676b71; color: #676b71;
width: 18px; width: 18px;
@ -1152,6 +1151,22 @@ export const chatpageStyles = css`
width: 70%; width: 70%;
} }
.file-icon-container {
display: flex;
align-items: center;
justify-content: center;
height: 128px;
width: 128px;
border-radius: 50%;
border: none;
background-color: transparent;
}
.file-icon {
height: 128px;
width: 128px;
}
.attachment-name { .attachment-name {
font-family: Work Sans, sans-serif; font-family: Work Sans, sans-serif;
font-size: 20px; font-size: 20px;
@ -1440,6 +1455,7 @@ export const chatStyles = css`
--mdc-theme-secondary: var(--mdc-theme-primary); --mdc-theme-secondary: var(--mdc-theme-primary);
--mdc-dialog-max-width: 85vw; --mdc-dialog-max-width: 85vw;
--mdc-dialog-max-height: 95vh; --mdc-dialog-max-height: 95vh;
} }
* :focus-visible { * :focus-visible {
@ -1567,7 +1583,6 @@ export const chatStyles = css`
min-width: 150px; min-width: 150px;
} }
.message-myBg { .message-myBg {
background-color: var(--chat-bubble-myBg) !important; background-color: var(--chat-bubble-myBg) !important;
} }
@ -2107,10 +2122,8 @@ export const chatStyles = css`
justify-content: space-evenly; justify-content: space-evenly;
padding: 5px 0 10px 0; padding: 5px 0 10px 0;
gap: 20px; gap: 20px;
cursor: pointer;
} }
.attachment-icon-container { .attachment-icon-container {
display: flex; display: flex;
align-items: center; align-items: center;
@ -2126,6 +2139,30 @@ export const chatStyles = css`
width: 70%; width: 70%;
} }
.file-container {
display: flex;
align-items: center;
justify-content: space-evenly;
padding: 5px 0 10px 0;
gap: 20px;
}
.file-icon-container {
display: flex;
align-items: center;
justify-content: center;
height: 50px;
width: 50px;
border-radius: 50%;
border: none;
background-color: transparent;
}
.file-icon {
height: 50px;
width: 50px;
}
.attachment-info { .attachment-info {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
@ -2158,6 +2195,7 @@ export const chatStyles = css`
color: var(--chat-bubble-msg-color); color: var(--chat-bubble-msg-color);
width: 19px; width: 19px;
background-color: transparent; background-color: transparent;
cursor: pointer;
} }
.download-icon:hover::before { .download-icon:hover::before {
@ -2247,6 +2285,155 @@ export const chatStyles = css`
transform: rotate(360deg); transform: rotate(360deg);
} }
} }
paper-dialog.progress {
width: auto;
max-width: 50vw;
height: auto;
max-height: 30vh;
background-color: var(--white);
color: var(--black);
border: 1px solid var(--black);
border-radius: 15px;
text-align: center;
padding: 15px;
line-height: 1.6;
overflow: hidden;
}
paper-dialog.close-progress {
min-width: 550px;
max-width: 550px;
height: auto;
background-color: var(--white);
color: var(--black);
border: 1px solid var(--black);
border-radius: 15px;
text-align: center;
padding: 15px;
font-size: 17px;
font-weight: 500;
line-height: 20px;
overflow: hidden;
}
.lds-roller {
display: inline-block;
position: relative;
width: 80px;
height: 80px;
}
.lds-roller div {
animation: lds-roller 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;
transform-origin: 40px 40px;
}
.lds-roller div:after {
content: " ";
display: block;
position: absolute;
width: 7px;
height: 7px;
border-radius: 50%;
background: var(--black);
margin: -4px 0 0 -4px;
}
.lds-roller div:nth-child(1) {
animation-delay: -0.036s;
}
.lds-roller div:nth-child(1):after {
top: 63px;
left: 63px;
}
.lds-roller div:nth-child(2) {
animation-delay: -0.072s;
}
.lds-roller div:nth-child(2):after {
top: 68px;
left: 56px;
}
.lds-roller div:nth-child(3) {
animation-delay: -0.108s;
}
.lds-roller div:nth-child(3):after {
top: 71px;
left: 48px;
}
.lds-roller div:nth-child(4) {
animation-delay: -0.144s;
}
.lds-roller div:nth-child(4):after {
top: 72px;
left: 40px;
}
.lds-roller div:nth-child(5) {
animation-delay: -0.18s;
}
.lds-roller div:nth-child(5):after {
top: 71px;
left: 32px;
}
.lds-roller div:nth-child(6) {
animation-delay: -0.216s;
}
.lds-roller div:nth-child(6):after {
top: 68px;
left: 24px;
}
.lds-roller div:nth-child(7) {
animation-delay: -0.252s;
}
.lds-roller div:nth-child(7):after {
top: 63px;
left: 17px;
}
.lds-roller div:nth-child(8) {
animation-delay: -0.288s;
}
.lds-roller div:nth-child(8):after {
top: 56px;
left: 12px;
}
@keyframes lds-roller {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
.close-download {
color: var(--black);
font-size: 14px;
font-weight: bold;
position: absolute;
top: -15px;
right: -15px;
}
.close-download:hover {
color: #df3636;
}
` `
export const toolTipStyles = css` export const toolTipStyles = css`
@ -3631,6 +3818,12 @@ export const chatTextEditorStyles = css`
cursor: pointer; cursor: pointer;
} }
.ProseMirror {
word-wrap: break-word;
white-space: pre-wrap;
white-space: break-spaces;
}
.ProseMirror:focus { .ProseMirror:focus {
outline: none; outline: none;
} }