mirror of
https://github.com/Qortal/qortal-ui.git
synced 2025-04-23 19:37:52 +00:00
commit
4457215a0e
@ -1417,6 +1417,7 @@
|
|||||||
"mpchange83": "ABGELEHNT",
|
"mpchange83": "ABGELEHNT",
|
||||||
"mpchange84": "FEHLER",
|
"mpchange84": "FEHLER",
|
||||||
"mpchange85": "ERFOLGREICH",
|
"mpchange85": "ERFOLGREICH",
|
||||||
"mpchange86": "Immer automatisches Abrufen des Wallet-Guthabens zulassen"
|
"mpchange86": "Immer automatisches Abrufen des Wallet-Guthabens zulassen",
|
||||||
|
"mpchange87": "Bitte geben Sie die Gruppen-ID ein"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1417,6 +1417,7 @@
|
|||||||
"mpchange83": "RECHAZADO",
|
"mpchange83": "RECHAZADO",
|
||||||
"mpchange84": "ERROR",
|
"mpchange84": "ERROR",
|
||||||
"mpchange85": "ÉXITO",
|
"mpchange85": "ÉXITO",
|
||||||
"mpchange86": "Permitir siempre obtener el saldo de la billetera automáticamente"
|
"mpchange86": "Permitir siempre obtener el saldo de la billetera automáticamente",
|
||||||
|
"mpchange87": "Por favor, introduzca el ID del grupo"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1417,6 +1417,7 @@
|
|||||||
"mpchange83": "DECLINED",
|
"mpchange83": "DECLINED",
|
||||||
"mpchange84": "FAILURE",
|
"mpchange84": "FAILURE",
|
||||||
"mpchange85": "EDU",
|
"mpchange85": "EDU",
|
||||||
"mpchange86": "Luba alati rahakoti saldo automaatne hankimine"
|
"mpchange86": "Luba alati rahakoti saldo automaatne hankimine",
|
||||||
|
"mpchange87": "Palun sisestage grupi ID"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1417,6 +1417,7 @@
|
|||||||
"mpchange83": "hylätty",
|
"mpchange83": "hylätty",
|
||||||
"mpchange84": "FAILURE",
|
"mpchange84": "FAILURE",
|
||||||
"mpchange85": "SUCCESS",
|
"mpchange85": "SUCCESS",
|
||||||
"mpchange86": "Salli aina saada lompakon saldo automaattisesti"
|
"mpchange86": "Salli aina saada lompakon saldo automaattisesti",
|
||||||
|
"mpchange87": "Anna ryhmän tunnus"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1417,6 +1417,7 @@
|
|||||||
"mpchange83": "REFUSÉ",
|
"mpchange83": "REFUSÉ",
|
||||||
"mpchange84": "ÉCHEC",
|
"mpchange84": "ÉCHEC",
|
||||||
"mpchange85": "SUCCÈS",
|
"mpchange85": "SUCCÈS",
|
||||||
"mpchange86": "Toujours autoriser l'obtention automatique du solde du portefeuille"
|
"mpchange86": "Toujours autoriser l'obtention automatique du solde du portefeuille",
|
||||||
|
"mpchange87": "Veuillez saisir l'ID du groupe"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1417,6 +1417,7 @@
|
|||||||
"mpchange83": "अस्वीकृत",
|
"mpchange83": "अस्वीकृत",
|
||||||
"mpchange84": "विफल",
|
"mpchange84": "विफल",
|
||||||
"mpchange85": "सफल",
|
"mpchange85": "सफल",
|
||||||
"mpchange86": "हमेशा वॉलेट बैलेंस को स्वचालित रूप से प्राप्त करने की अनुमति दें"
|
"mpchange86": "हमेशा वॉलेट बैलेंस को स्वचालित रूप से प्राप्त करने की अनुमति दें",
|
||||||
|
"mpchange87": "कृपया ग्रुप आईडी दर्ज करें"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1417,6 +1417,7 @@
|
|||||||
"mpchange83": "ODBIJENO",
|
"mpchange83": "ODBIJENO",
|
||||||
"mpchange84": "GREŠKA",
|
"mpchange84": "GREŠKA",
|
||||||
"mpchange85": "USPJEH",
|
"mpchange85": "USPJEH",
|
||||||
"mpchange86": "Uvijek dopusti automatsko dobivanje stanja novčanika"
|
"mpchange86": "Uvijek dopusti automatsko dobivanje stanja novčanika",
|
||||||
|
"mpchange87": "Molimo unesite ID grupe"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1417,6 +1417,7 @@
|
|||||||
"mpchange83": "Elutasítva",
|
"mpchange83": "Elutasítva",
|
||||||
"mpchange84": "FAILURE",
|
"mpchange84": "FAILURE",
|
||||||
"mpchange85": "SIKER",
|
"mpchange85": "SIKER",
|
||||||
"mpchange86": "Mindig engedélyezze a pénztárcaegyenleg automatikus lekérését"
|
"mpchange86": "Mindig engedélyezze a pénztárcaegyenleg automatikus lekérését",
|
||||||
|
"mpchange87": "Kérjük, adja meg a csoport azonosítóját"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1417,6 +1417,7 @@
|
|||||||
"mpchange83": "RIFIUTATO",
|
"mpchange83": "RIFIUTATO",
|
||||||
"mpchange84": "FALLITO",
|
"mpchange84": "FALLITO",
|
||||||
"mpchange85": "RIUSCITO",
|
"mpchange85": "RIUSCITO",
|
||||||
"mpchange86": "Consenti sempre di ottenere automaticamente il saldo del portafoglio"
|
"mpchange86": "Consenti sempre di ottenere automaticamente il saldo del portafoglio",
|
||||||
|
"mpchange87": "Inserisci l'ID del gruppo"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1417,6 +1417,7 @@
|
|||||||
"mpchange83": "拒否されました",
|
"mpchange83": "拒否されました",
|
||||||
"mpchange84": "失敗",
|
"mpchange84": "失敗",
|
||||||
"mpchange85": "成功",
|
"mpchange85": "成功",
|
||||||
"mpchange86": "ウォレット残高の自動取得を常に許可する"
|
"mpchange86": "ウォレット残高の自動取得を常に許可する",
|
||||||
|
"mpchange87": "グループ ID を入力してください"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1417,6 +1417,7 @@
|
|||||||
"mpchange83": "거부됨",
|
"mpchange83": "거부됨",
|
||||||
"mpchange84": "실패",
|
"mpchange84": "실패",
|
||||||
"mpchange85": "성공",
|
"mpchange85": "성공",
|
||||||
"mpchange86": "항상 지갑 잔액을 자동으로 가져오도록 허용"
|
"mpchange86": "항상 지갑 잔액을 자동으로 가져오도록 허용",
|
||||||
|
"mpchange87": "그룹 ID를 입력하세요"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1417,6 +1417,7 @@
|
|||||||
"mpchange83": "GEWEIGERD",
|
"mpchange83": "GEWEIGERD",
|
||||||
"mpchange84": "MISLUKT",
|
"mpchange84": "MISLUKT",
|
||||||
"mpchange85": "SUCCES",
|
"mpchange85": "SUCCES",
|
||||||
"mpchange86": "Altijd toestaan om automatisch saldo in portemonnee op te halen"
|
"mpchange86": "Altijd toestaan om automatisch saldo in portemonnee op te halen",
|
||||||
|
"mpchange87": "Voer de groeps-ID in"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1417,6 +1417,7 @@
|
|||||||
"mpchange83": "AVSLAGT",
|
"mpchange83": "AVSLAGT",
|
||||||
"mpchange84": "FEIL",
|
"mpchange84": "FEIL",
|
||||||
"mpchange85": "SUKSESS",
|
"mpchange85": "SUKSESS",
|
||||||
"mpchange86": "Tillat alltid få lommeboksaldo automatisk"
|
"mpchange86": "Tillat alltid få lommeboksaldo automatisk",
|
||||||
|
"mpchange87": "Vennligst skriv inn gruppe-ID"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1417,6 +1417,7 @@
|
|||||||
"mpchange83": "ODRZUCONE",
|
"mpchange83": "ODRZUCONE",
|
||||||
"mpchange84": "NIEPOWODZENIE",
|
"mpchange84": "NIEPOWODZENIE",
|
||||||
"mpchange85": "POWODZENIE",
|
"mpchange85": "POWODZENIE",
|
||||||
"mpchange86": "Zawsze zezwalaj na automatyczne pobieranie salda portfela"
|
"mpchange86": "Zawsze zezwalaj na automatyczne pobieranie salda portfela",
|
||||||
|
"mpchange87": "Wprowadź identyfikator grupy"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1417,6 +1417,7 @@
|
|||||||
"mpchange83": "RECLINADO",
|
"mpchange83": "RECLINADO",
|
||||||
"mpchange84": "FALHA",
|
"mpchange84": "FALHA",
|
||||||
"mpchange85": "SUCESSO",
|
"mpchange85": "SUCESSO",
|
||||||
"mpchange86": "Permitir sempre obter saldo da carteira automaticamente"
|
"mpchange86": "Permitir sempre obter saldo da carteira automaticamente",
|
||||||
|
"mpchange87": "Por favor introduza o ID do grupo"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1417,6 +1417,7 @@
|
|||||||
"mpchange83": "RESFUS",
|
"mpchange83": "RESFUS",
|
||||||
"mpchange84": "Eșec",
|
"mpchange84": "Eșec",
|
||||||
"mpchange85": "SUCCES",
|
"mpchange85": "SUCCES",
|
||||||
"mpchange86": "Permiteți întotdeauna obținerea automată a soldului portofelului"
|
"mpchange86": "Permiteți întotdeauna obținerea automată a soldului portofelului",
|
||||||
|
"mpchange87": "Vă rugăm să introduceți ID-ul grupului"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1417,6 +1417,7 @@
|
|||||||
"mpchange83": "ODBIJENO",
|
"mpchange83": "ODBIJENO",
|
||||||
"mpchange84": "GREŠKA",
|
"mpchange84": "GREŠKA",
|
||||||
"mpchange85": "USPEH",
|
"mpchange85": "USPEH",
|
||||||
"mpchange86": "Uvek dozvoli automatsko dobijanje stanja novčanika"
|
"mpchange86": "Uvek dozvoli automatsko dobijanje stanja novčanika",
|
||||||
|
"mpchange87": "Unesite ID grupe"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1417,6 +1417,7 @@
|
|||||||
"mpchange83": "ОТКЛОНЕНО",
|
"mpchange83": "ОТКЛОНЕНО",
|
||||||
"mpchange84": "НЕУДАЧА",
|
"mpchange84": "НЕУДАЧА",
|
||||||
"mpchange85": "УСПЕШНО",
|
"mpchange85": "УСПЕШНО",
|
||||||
"mpchange86": "Всегда разрешать автоматически получать баланс кошелька"
|
"mpchange86": "Всегда разрешать автоматически получать баланс кошелька",
|
||||||
|
"mpchange87": "Пожалуйста, введите идентификатор группы"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1417,6 +1417,7 @@
|
|||||||
"mpchange83": "DECLINED",
|
"mpchange83": "DECLINED",
|
||||||
"mpchange84": "FAILURE",
|
"mpchange84": "FAILURE",
|
||||||
"mpchange85": "SUCCESS",
|
"mpchange85": "SUCCESS",
|
||||||
"mpchange86": "Always allow get wallet balance automatically"
|
"mpchange86": "Always allow get wallet balance automatically",
|
||||||
|
"mpchange87": "Please Enter The Group ID"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1417,6 +1417,7 @@
|
|||||||
"mpchange83": "拒绝",
|
"mpchange83": "拒绝",
|
||||||
"mpchange84": "失败",
|
"mpchange84": "失败",
|
||||||
"mpchange85": "成功",
|
"mpchange85": "成功",
|
||||||
"mpchange86": "始终允许自动获取钱包余额"
|
"mpchange86": "始终允许自动获取钱包余额",
|
||||||
|
"mpchange87": "请输入群组ID"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1417,6 +1417,7 @@
|
|||||||
"mpchange83": "拒絕",
|
"mpchange83": "拒絕",
|
||||||
"mpchange84": "失敗",
|
"mpchange84": "失敗",
|
||||||
"mpchange85": "成功",
|
"mpchange85": "成功",
|
||||||
"mpchange86": "隨時允許自動取得錢包餘額"
|
"mpchange86": "隨時允許自動取得錢包餘額",
|
||||||
|
"mpchange87": "請輸入群組 ID"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,15 @@ import {
|
|||||||
const Base64Message = {}
|
const Base64Message = {}
|
||||||
|
|
||||||
Base64Message.decode = function (string, keys, ref) {
|
Base64Message.decode = function (string, keys, ref) {
|
||||||
|
let repliedToStr = ''
|
||||||
|
let hubSpecialId = ''
|
||||||
|
let hubMessageStr = ''
|
||||||
|
let newMessageObject = ''
|
||||||
|
let messageUseEmbed = {}
|
||||||
|
let isHubReaction = false
|
||||||
|
let editStr = false
|
||||||
|
let embedFileStr = '"images":[""]'
|
||||||
|
|
||||||
const binaryString = atob(string)
|
const binaryString = atob(string)
|
||||||
const binaryLength = binaryString.length
|
const binaryLength = binaryString.length
|
||||||
const bytes = new Uint8Array(binaryLength)
|
const bytes = new Uint8Array(binaryLength)
|
||||||
@ -34,88 +43,54 @@ Base64Message.decode = function (string, keys, ref) {
|
|||||||
return decodedString
|
return decodedString
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
let repliedToStr = ''
|
|
||||||
let addedFileStr = ''
|
|
||||||
let messageStr = ''
|
|
||||||
let hubString = ''
|
|
||||||
let messageRep = ''
|
|
||||||
let messageUseEmbed = {}
|
|
||||||
|
|
||||||
const res = decryptSingle(string, keys, false)
|
const res = decryptSingle(string, keys, false)
|
||||||
|
|
||||||
if (res === 'noKey' || res === 'decryptionFailed') {
|
if (res === 'noKey' || res === 'decryptionFailed') {
|
||||||
return '{"messageText":{"type":"doc","content":[{"type":"paragraph","content":[{"type":"text","text":"This message could not be decrypted"}]}]}' + addedFileStr + ',"repliedTo":"","version":3,"isFromHub":true}'
|
return '{"specialId":"","message":"<p>This message could not be decrypted</p>","repliedTo":"","isEdited":false,"isFromHub":true,"isReaction":false,"version": 3}'
|
||||||
}
|
}
|
||||||
|
|
||||||
const decryptToUnit8Array = base64ToUint8Array(res)
|
const decryptToUnit8Array = base64ToUint8Array(res)
|
||||||
const responseData = uint8ArrayToObject(decryptToUnit8Array)
|
const responseData = uint8ArrayToObject(decryptToUnit8Array)
|
||||||
|
|
||||||
if (responseData.type === "notification") {
|
if (responseData.type === "notification") {
|
||||||
const messageStrRaw = responseData.data.message
|
hubMessageStr = responseData.data.message
|
||||||
messageStr = messageStrRaw.trim()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ref !== "noref") {
|
if (ref !== "noref") {
|
||||||
if (responseData.type === "reaction") {
|
if (responseData.type === "reaction") {
|
||||||
|
isHubReaction = true
|
||||||
repliedToStr = ref
|
repliedToStr = ref
|
||||||
messageStr = responseData.content
|
hubMessageStr = responseData.content
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (responseData.hasOwnProperty('message') && typeof responseData['message'] === 'string' && responseData['message'].length) {
|
if (responseData.type === "edit") {
|
||||||
if (responseData.message.includes('qortal://use-embed/')) {
|
editStr = true
|
||||||
const useEmbed1 = extensionToPointer(responseData.message)
|
|
||||||
const useEmbed2 = /<newpointer>(.*?)<\/newpointer>/g.exec(useEmbed1)
|
|
||||||
const useEmbed3 = encodedToChar(useEmbed2[1])
|
|
||||||
|
|
||||||
messageUseEmbed = parseQortalLink(useEmbed3)
|
|
||||||
addedFileStr = embedToString(messageUseEmbed)
|
|
||||||
|
|
||||||
const useEmbed4 = responseData.message.split(useEmbed2[1]).join('')
|
|
||||||
|
|
||||||
if (useEmbed4 === "<p></p>") {
|
|
||||||
messageRep = useEmbed4.split('<p></p>').join('<p>Qortal-Hub embed link</p>')
|
|
||||||
} else {
|
|
||||||
messageRep = useEmbed4
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
messageRep = responseData.message
|
|
||||||
addedFileStr = ',"images":[""]'
|
|
||||||
}
|
|
||||||
|
|
||||||
const messageRep1 = messageRep.split('"').join('<upvote>')
|
|
||||||
const messageRep2 = messageRep1.split('</p><p></p><p></p><p></p><p>').join('"},{"type":"hardBreak"},{"type":"hardBreak"},{"type":"hardBreak"},{"type":"hardBreak"},{"type":"text","text":"')
|
|
||||||
const messageRep3 = messageRep2.split('</p><p></p><p></p><p>').join('"},{"type":"hardBreak"},{"type":"hardBreak"},{"type":"hardBreak"},{"type":"text","text":"')
|
|
||||||
const messageRep4 = messageRep3.split('</p><p></p><p>').join('"},{"type":"hardBreak"},{"type":"hardBreak"},{"type":"text","text":"')
|
|
||||||
const messageRep5 = messageRep4.replace('</p><p>', '')
|
|
||||||
const messageRep6 = messageRep5.replace('<p></p>', '')
|
|
||||||
const messageRep7 = messageRep6.replace('<p>', '')
|
|
||||||
const messageRep8 = messageRep7.replace('<br></p>', '')
|
|
||||||
const messageRep9 = messageRep8.replace('</p>', '')
|
|
||||||
const messageRep10 = messageRep9.trim()
|
|
||||||
const messageRep11 = messageRep10.split('<br><br><br><br>').join('"},{"type":"hardBreak"},{"type":"hardBreak"},{"type":"hardBreak"},{"type":"hardBreak"},{"type":"text","text":"')
|
|
||||||
const messageRep12 = messageRep11.split('<br><br><br>').join('"},{"type":"hardBreak"},{"type":"hardBreak"},{"type":"hardBreak"},{"type":"text","text":"')
|
|
||||||
const messageRep13 = messageRep12.split('<br><br>').join('"},{"type":"hardBreak"},{"type":"hardBreak"},{"type":"text","text":"')
|
|
||||||
const messageRep14 = messageRep13.split('<br>').join('"},{"type":"hardBreak"},{"type":"text","text":"')
|
|
||||||
messageStr = messageRep14
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (responseData.repliedTo) {
|
if (responseData.repliedTo) {
|
||||||
repliedToStr = responseData.repliedTo
|
repliedToStr = responseData.repliedTo
|
||||||
}
|
}
|
||||||
|
|
||||||
if (responseData.type === "edit") {
|
if (responseData.specialId) {
|
||||||
hubString = '{"messageText":{"type":"doc","content":[{"type":"paragraph","content":[{"type":"text","text":"' + messageStr + '"}]}]}' + addedFileStr + ',"repliedTo":"' + repliedToStr + '","version":3,"isEdited":true,"isFromHub":true}'
|
hubSpecialId = responseData.specialId
|
||||||
} else if (responseData.type === "reaction") {
|
|
||||||
hubString = '{"messageText":{"type":"doc","content":[{"type":"paragraph","content":[{"type":"text","text":"' + messageStr + '"}]}]}' + addedFileStr + ',"repliedTo":"' + repliedToStr + '","version":3,"isReaction":true,"isFromHub":true}'
|
|
||||||
} else {
|
|
||||||
hubString = '{"messageText":{"type":"doc","content":[{"type":"paragraph","content":[{"type":"text","text":"' + messageStr + '"}]}]}' + addedFileStr + ',"repliedTo":"' + repliedToStr + '","version":3,"isFromHub":true}'
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const preparedString = hubString.split('<upvote>').join('\\"')
|
if (responseData.message.includes('qortal://use-embed/')) {
|
||||||
const finalString = preparedString.replace(/<\/?[^>]+(>|$)/g, '')
|
const useEmbed1 = extensionToPointer(responseData.message)
|
||||||
|
const useEmbed2 = /<newpointer>(.*?)<\/newpointer>/g.exec(useEmbed1)
|
||||||
|
const useEmbed3 = encodedToChar(useEmbed2[1])
|
||||||
|
|
||||||
return finalString
|
messageUseEmbed = parseQortalLink(useEmbed3)
|
||||||
|
embedFileStr = embedToString(messageUseEmbed)
|
||||||
|
hubMessageStr = responseData.message.split(useEmbed2[1]).join('')
|
||||||
|
} else {
|
||||||
|
hubMessageStr = responseData.message
|
||||||
|
}
|
||||||
|
|
||||||
|
newMessageObject = '{"specialId":"' + hubSpecialId + '","message":"' + hubMessageStr + '",' + embedFileStr + ',"repliedTo":"' + repliedToStr + '","isEdited":' + editStr + ',"isFromHub":true,"isReaction":' + isHubReaction + ',"version": 3}'
|
||||||
|
|
||||||
|
return newMessageObject
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1081,17 +1081,22 @@ class MessageTemplate extends LitElement {
|
|||||||
let version = 0
|
let version = 0
|
||||||
let isForwarded = false
|
let isForwarded = false
|
||||||
let isEdited = false
|
let isEdited = false
|
||||||
let isFromHub = false
|
let isEncrypted = false
|
||||||
|
|
||||||
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, Mention])
|
messageVersion2 = generateHTML(parsedMessageObj.messageText, [StarterKit, Underline, Highlight, Mention])
|
||||||
messageVersion2WithLink = processText(messageVersion2)
|
messageVersion2WithLink = processText(messageVersion2)
|
||||||
}
|
}
|
||||||
|
|
||||||
message = parsedMessageObj.messageText
|
if (parsedMessageObj.version > 1 && parsedMessageObj.message) {
|
||||||
|
messageVersion2 = parsedMessageObj.message
|
||||||
|
messageVersion2WithLink = processText(messageVersion2)
|
||||||
|
}
|
||||||
|
|
||||||
|
message = parsedMessageObj.messageText ? parsedMessageObj.messageText : parsedMessageObj.message
|
||||||
repliedToData = this.messageObj.repliedToData
|
repliedToData = this.messageObj.repliedToData
|
||||||
isImageDeleted = parsedMessageObj.isImageDeleted
|
isImageDeleted = parsedMessageObj.isImageDeleted
|
||||||
isGifDeleted = parsedMessageObj.isGifDeleted
|
isGifDeleted = parsedMessageObj.isGifDeleted
|
||||||
@ -1101,7 +1106,7 @@ class MessageTemplate extends LitElement {
|
|||||||
version = parsedMessageObj.version
|
version = parsedMessageObj.version
|
||||||
isForwarded = parsedMessageObj.type === 'forward'
|
isForwarded = parsedMessageObj.type === 'forward'
|
||||||
isEdited = parsedMessageObj.isEdited && true
|
isEdited = parsedMessageObj.isEdited && true
|
||||||
isFromHub = parsedMessageObj.isFromHub && true
|
isEncrypted = parsedMessageObj.isFromHub || parsedMessageObj.message ? true : false
|
||||||
|
|
||||||
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]
|
||||||
@ -1133,8 +1138,8 @@ class MessageTemplate extends LitElement {
|
|||||||
let hideit = hidemsg.includes(this.messageObj.sender)
|
let hideit = hidemsg.includes(this.messageObj.sender)
|
||||||
let forwarded = ''
|
let forwarded = ''
|
||||||
let edited = ''
|
let edited = ''
|
||||||
let fromHubOk = ''
|
let encrypted = ''
|
||||||
let fromHubNo = ''
|
let decrypted = ''
|
||||||
|
|
||||||
levelFounder = html`<level-founder checkleveladdress="${this.messageObj.sender}"></level-founder>`
|
levelFounder = html`<level-founder checkleveladdress="${this.messageObj.sender}"></level-founder>`
|
||||||
|
|
||||||
@ -1250,9 +1255,9 @@ class MessageTemplate extends LitElement {
|
|||||||
</span>
|
</span>
|
||||||
`
|
`
|
||||||
|
|
||||||
fromHubOk = html` <mwc-icon style="font-size:16px; color: var(--chat-group);">key</mwc-icon> `
|
encrypted = html` <mwc-icon style="font-size:16px; color: var(--chat-group);">key</mwc-icon> `
|
||||||
|
|
||||||
fromHubNo = html` <mwc-icon style="font-size:16px; color: var(--chat-group);">key_off</mwc-icon> `
|
decrypted = html` <mwc-icon style="font-size:16px; color: var(--chat-group);">key_off</mwc-icon> `
|
||||||
|
|
||||||
if (repliedToData) {
|
if (repliedToData) {
|
||||||
try {
|
try {
|
||||||
@ -1672,7 +1677,7 @@ class MessageTemplate extends LitElement {
|
|||||||
` : this.isAgo ? html`
|
` : this.isAgo ? html`
|
||||||
<div style="display: flex; align-items: center;">
|
<div style="display: flex; align-items: center;">
|
||||||
<div style="margin-top: 4px;">
|
<div style="margin-top: 4px;">
|
||||||
${isFromHub ? html`${fromHubOk}` : html`${fromHubNo}`}
|
${isEncrypted ? html`${encrypted}` : html`${decrypted}`}
|
||||||
</div>
|
</div>
|
||||||
<div id="timeformat">
|
<div id="timeformat">
|
||||||
<span>
|
<span>
|
||||||
@ -1683,7 +1688,7 @@ class MessageTemplate extends LitElement {
|
|||||||
` : this.isIso ? html`
|
` : this.isIso ? html`
|
||||||
<div style="display: flex; align-items: center;">
|
<div style="display: flex; align-items: center;">
|
||||||
<div style="margin-top: 4px;">
|
<div style="margin-top: 4px;">
|
||||||
${isFromHub ? html`${fromHubOk}` : html`${fromHubNo}`}
|
${isEncrypted ? html`${encrypted}` : html`${decrypted}`}
|
||||||
</div>
|
</div>
|
||||||
<div id="timeformat">
|
<div id="timeformat">
|
||||||
<span>
|
<span>
|
||||||
@ -1694,7 +1699,7 @@ class MessageTemplate extends LitElement {
|
|||||||
` : this.isBoth ? html`
|
` : this.isBoth ? html`
|
||||||
<div style="display: flex; align-items: center;">
|
<div style="display: flex; align-items: center;">
|
||||||
<div style="margin-top: 4px;">
|
<div style="margin-top: 4px;">
|
||||||
${isFromHub ? html`${fromHubOk}` : html`${fromHubNo}`}
|
${isEncrypted ? html`${encrypted}` : html`${decrypted}`}
|
||||||
</div>
|
</div>
|
||||||
<div id="timeformat">
|
<div id="timeformat">
|
||||||
<span>
|
<span>
|
||||||
|
@ -2014,8 +2014,13 @@ export const chatStyles = css`
|
|||||||
}
|
}
|
||||||
|
|
||||||
#messageContent code {
|
#messageContent code {
|
||||||
background-color: rgba(#616161, 0.1);
|
background: #0D0D0D;
|
||||||
color: #616161;
|
color: #FFF;
|
||||||
|
font-family: 'JetBrainsMono', monospace;
|
||||||
|
padding: 0.75rem 1rem;
|
||||||
|
border-radius: 0.5rem;
|
||||||
|
white-space: pre-wrap;
|
||||||
|
margin-top: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#messageContent pre {
|
#messageContent pre {
|
||||||
@ -2034,12 +2039,10 @@ export const chatStyles = css`
|
|||||||
font-size: 0.8rem;
|
font-size: 0.8rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#messageContent img {
|
#messageContent img {
|
||||||
width: 1.7em;
|
width: 1.7em;
|
||||||
height: 1.5em;
|
height: 1.5em;
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#messageContent blockquote {
|
#messageContent blockquote {
|
||||||
@ -2078,8 +2081,13 @@ export const chatStyles = css`
|
|||||||
}
|
}
|
||||||
|
|
||||||
.replied-message code {
|
.replied-message code {
|
||||||
background-color: rgba(#616161, 0.1);
|
background: #0D0D0D;
|
||||||
color: #616161;
|
color: #FFF;
|
||||||
|
font-family: 'JetBrainsMono', monospace;
|
||||||
|
padding: 0.75rem 1rem;
|
||||||
|
border-radius: 0.5rem;
|
||||||
|
white-space: pre-wrap;
|
||||||
|
margin: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.replied-message pre {
|
.replied-message pre {
|
||||||
|
@ -159,15 +159,15 @@ export const embedToString = (embed) => {
|
|||||||
embedService = embed.service
|
embedService = embed.service
|
||||||
embedName = embed.name
|
embedName = embed.name
|
||||||
embedIdentifier = embed.identifier
|
embedIdentifier = embed.identifier
|
||||||
embedString = ',"images":[{"service":"' + embedService + '","name":"' + embedName + '","identifier":"' + embedIdentifier + '"}],"isImageDeleted":false'
|
embedString = '"images":[{"service":"' + embedService + '","name":"' + embedName + '","identifier":"' + embedIdentifier + '"}],"isImageDeleted":false'
|
||||||
} else if (embed.type === "ATTACHMENT") {
|
} else if (embed.type === "ATTACHMENT") {
|
||||||
embedService = embed.service
|
embedService = embed.service
|
||||||
embedName = embed.name
|
embedName = embed.name
|
||||||
embedIdentifier = embed.identifier
|
embedIdentifier = embed.identifier
|
||||||
embedAttachmentName = embed.fileName
|
embedAttachmentName = embed.fileName
|
||||||
embedString = ',"attachments":[{"service":"' + embedService + '","name":"' + embedName + '","identifier":"' + embedIdentifier + '","attachmentName":"' + embedAttachmentName + '","attachmentSize":0}],"isAttachmentDeleted":false'
|
embedString = '"attachments":[{"service":"' + embedService + '","name":"' + embedName + '","identifier":"' + embedIdentifier + '","attachmentName":"' + embedAttachmentName + '","attachmentSize":0}],"isAttachmentDeleted":false'
|
||||||
} else {
|
} else {
|
||||||
embedString = ',"images":[""]'
|
embedString = '"images":[""]'
|
||||||
}
|
}
|
||||||
|
|
||||||
return embedString
|
return embedString
|
||||||
|
@ -2767,6 +2767,15 @@ self.addEventListener('message', async (e) => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
const decode = (string, keys, ref) => {
|
const decode = (string, keys, ref) => {
|
||||||
|
let repliedToStr = ''
|
||||||
|
let hubSpecialId = ''
|
||||||
|
let hubMessageStr = ''
|
||||||
|
let newMessageObject = ''
|
||||||
|
let messageUseEmbed = {}
|
||||||
|
let isHubReaction = false
|
||||||
|
let editStr = false
|
||||||
|
let embedFileStr = '"images":[""]'
|
||||||
|
|
||||||
const binaryString = atob(string)
|
const binaryString = atob(string)
|
||||||
const binaryLength = binaryString.length
|
const binaryLength = binaryString.length
|
||||||
const bytes = new Uint8Array(binaryLength)
|
const bytes = new Uint8Array(binaryLength)
|
||||||
@ -2787,88 +2796,54 @@ const decode = (string, keys, ref) => {
|
|||||||
return decodedString
|
return decodedString
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
let repliedToStr = ''
|
|
||||||
let addedFileStr = ''
|
|
||||||
let messageStr = ''
|
|
||||||
let hubString = ''
|
|
||||||
let messageRep = ''
|
|
||||||
let messageUseEmbed = {}
|
|
||||||
|
|
||||||
const res = decryptSingle(string, keys, false)
|
const res = decryptSingle(string, keys, false)
|
||||||
|
|
||||||
if (res === 'noKey' || res === 'decryptionFailed') {
|
if (res === 'noKey' || res === 'decryptionFailed') {
|
||||||
return '{"messageText":{"type":"doc","content":[{"type":"paragraph","content":[{"type":"text","text":"This message could not be decrypted"}]}]}' + addedFileStr + ',"repliedTo":"","version":3,"isFromHub":true}'
|
return '{"specialId":"","message":"<p>This message could not be decrypted</p>","repliedTo":"","isEdited":false,"isFromHub":true,"isReaction":false,"version": 3}'
|
||||||
}
|
}
|
||||||
|
|
||||||
const decryptToUnit8Array = base64ToUint8Array(res)
|
const decryptToUnit8Array = base64ToUint8Array(res)
|
||||||
const responseData = uint8ArrayToObject(decryptToUnit8Array)
|
const responseData = uint8ArrayToObject(decryptToUnit8Array)
|
||||||
|
|
||||||
if (responseData.type === "notification") {
|
if (responseData.type === "notification") {
|
||||||
const messageStrRaw = responseData.data.message
|
hubMessageStr = responseData.data.message
|
||||||
messageStr = messageStrRaw.trim()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ref !== "noref") {
|
if (ref !== "noref") {
|
||||||
if (responseData.type === "reaction") {
|
if (responseData.type === "reaction") {
|
||||||
|
isHubReaction = true
|
||||||
repliedToStr = ref
|
repliedToStr = ref
|
||||||
messageStr = responseData.content
|
hubMessageStr = responseData.content
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (responseData.hasOwnProperty('message') && typeof responseData['message'] === 'string' && responseData['message'].length) {
|
if (responseData.type === "edit") {
|
||||||
if (responseData.message.includes('qortal://use-embed/')) {
|
editStr = true
|
||||||
const useEmbed1 = extensionToPointer(responseData.message)
|
|
||||||
const useEmbed2 = /<newpointer>(.*?)<\/newpointer>/g.exec(useEmbed1)
|
|
||||||
const useEmbed3 = encodedToChar(useEmbed2[1])
|
|
||||||
|
|
||||||
messageUseEmbed = parseQortalLink(useEmbed3)
|
|
||||||
addedFileStr = embedToString(messageUseEmbed)
|
|
||||||
|
|
||||||
const useEmbed4 = responseData.message.split(useEmbed2[1]).join('')
|
|
||||||
|
|
||||||
if (useEmbed4 === "<p></p>") {
|
|
||||||
messageRep = useEmbed4.split('<p></p>').join('<p>Qortal-Hub embed link</p>')
|
|
||||||
} else {
|
|
||||||
messageRep = useEmbed4
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
messageRep = responseData.message
|
|
||||||
addedFileStr = ',"images":[""]'
|
|
||||||
}
|
|
||||||
|
|
||||||
const messageRep1 = messageRep.split('"').join('<upvote>')
|
|
||||||
const messageRep2 = messageRep1.split('</p><p></p><p></p><p></p><p>').join('"},{"type":"hardBreak"},{"type":"hardBreak"},{"type":"hardBreak"},{"type":"hardBreak"},{"type":"text","text":"')
|
|
||||||
const messageRep3 = messageRep2.split('</p><p></p><p></p><p>').join('"},{"type":"hardBreak"},{"type":"hardBreak"},{"type":"hardBreak"},{"type":"text","text":"')
|
|
||||||
const messageRep4 = messageRep3.split('</p><p></p><p>').join('"},{"type":"hardBreak"},{"type":"hardBreak"},{"type":"text","text":"')
|
|
||||||
const messageRep5 = messageRep4.replace('</p><p>', '')
|
|
||||||
const messageRep6 = messageRep5.replace('<p></p>', '')
|
|
||||||
const messageRep7 = messageRep6.replace('<p>', '')
|
|
||||||
const messageRep8 = messageRep7.replace('<br></p>', '')
|
|
||||||
const messageRep9 = messageRep8.replace('</p>', '')
|
|
||||||
const messageRep10 = messageRep9.trim()
|
|
||||||
const messageRep11 = messageRep10.split('<br><br><br><br>').join('"},{"type":"hardBreak"},{"type":"hardBreak"},{"type":"hardBreak"},{"type":"hardBreak"},{"type":"text","text":"')
|
|
||||||
const messageRep12 = messageRep11.split('<br><br><br>').join('"},{"type":"hardBreak"},{"type":"hardBreak"},{"type":"hardBreak"},{"type":"text","text":"')
|
|
||||||
const messageRep13 = messageRep12.split('<br><br>').join('"},{"type":"hardBreak"},{"type":"hardBreak"},{"type":"text","text":"')
|
|
||||||
const messageRep14 = messageRep13.split('<br>').join('"},{"type":"hardBreak"},{"type":"text","text":"')
|
|
||||||
messageStr = messageRep14
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (responseData.repliedTo) {
|
if (responseData.repliedTo) {
|
||||||
repliedToStr = responseData.repliedTo
|
repliedToStr = responseData.repliedTo
|
||||||
}
|
}
|
||||||
|
|
||||||
if (responseData.type === "edit") {
|
if (responseData.specialId) {
|
||||||
hubString = '{"messageText":{"type":"doc","content":[{"type":"paragraph","content":[{"type":"text","text":"' + messageStr + '"}]}]}' + addedFileStr + ',"repliedTo":"' + repliedToStr + '","version":3,"isEdited":true,"isFromHub":true}'
|
hubSpecialId = responseData.specialId
|
||||||
} else if (responseData.type === "reaction") {
|
|
||||||
hubString = '{"messageText":{"type":"doc","content":[{"type":"paragraph","content":[{"type":"text","text":"' + messageStr + '"}]}]}' + addedFileStr + ',"repliedTo":"' + repliedToStr + '","version":3,"isReaction":true,"isFromHub":true}'
|
|
||||||
} else {
|
|
||||||
hubString = '{"messageText":{"type":"doc","content":[{"type":"paragraph","content":[{"type":"text","text":"' + messageStr + '"}]}]}' + addedFileStr + ',"repliedTo":"' + repliedToStr + '","version":3,"isFromHub":true}'
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const preparedString = hubString.split('<upvote>').join('\\"')
|
if (responseData.message.includes('qortal://use-embed/')) {
|
||||||
const finalString = preparedString.replace(/<\/?[^>]+(>|$)/g, '')
|
const useEmbed1 = extensionToPointer(responseData.message)
|
||||||
|
const useEmbed2 = /<newpointer>(.*?)<\/newpointer>/g.exec(useEmbed1)
|
||||||
|
const useEmbed3 = encodedToChar(useEmbed2[1])
|
||||||
|
|
||||||
return finalString
|
messageUseEmbed = parseQortalLink(useEmbed3)
|
||||||
|
embedFileStr = embedToString(messageUseEmbed)
|
||||||
|
hubMessageStr = responseData.message.split(useEmbed2[1]).join('')
|
||||||
|
} else {
|
||||||
|
hubMessageStr = responseData.message
|
||||||
|
}
|
||||||
|
|
||||||
|
newMessageObject = '{"specialId":"' + hubSpecialId + '","message":"' + hubMessageStr + '",' + embedFileStr + ',"repliedTo":"' + repliedToStr + '","isEdited":' + editStr + ',"isFromHub":true,"isReaction":' + isHubReaction + ',"version": 3}'
|
||||||
|
|
||||||
|
return newMessageObject
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -317,7 +317,7 @@ class Chat extends LitElement {
|
|||||||
<!-- View Chat Over ID -->
|
<!-- View Chat Over ID -->
|
||||||
<mwc-dialog id="viewChatDialog">
|
<mwc-dialog id="viewChatDialog">
|
||||||
<div style="text-align: center;">
|
<div style="text-align: center;">
|
||||||
<h1>Please Enter The Group ID</h1>
|
<h1>${translate("modals.mpchange87")}</h1>
|
||||||
<hr>
|
<hr>
|
||||||
<br>
|
<br>
|
||||||
</div>
|
</div>
|
||||||
@ -326,7 +326,7 @@ class Chat extends LitElement {
|
|||||||
style="width: 100%;"
|
style="width: 100%;"
|
||||||
required
|
required
|
||||||
id="groupIdInput"
|
id="groupIdInput"
|
||||||
label="Emter Group ID"
|
label="${translate("managegroup.mg8")}"
|
||||||
type="number"
|
type="number"
|
||||||
auto-validate="false"
|
auto-validate="false"
|
||||||
value=""
|
value=""
|
||||||
|
@ -17,7 +17,7 @@ import {
|
|||||||
} from '../../../utils/classes'
|
} from '../../../utils/classes'
|
||||||
import {appendBuffer} from '../../../utils/utilities'
|
import {appendBuffer} from '../../../utils/utilities'
|
||||||
import {QORT_DECIMALS} from '../../../../../crypto/api/constants'
|
import {QORT_DECIMALS} from '../../../../../crypto/api/constants'
|
||||||
import {listOfAllQortalRequests} from '../../components/qdn-action-constants'
|
import {mimeToExtensionMap, listOfAllQortalRequests} from '../../components/qdn-action-constants'
|
||||||
import {
|
import {
|
||||||
createSymmetricKeyAndNonce,
|
createSymmetricKeyAndNonce,
|
||||||
decryptGroupEncryptionWithSharingKey,
|
decryptGroupEncryptionWithSharingKey,
|
||||||
@ -2252,6 +2252,108 @@ class WebBrowser extends LitElement {
|
|||||||
}
|
}
|
||||||
break
|
break
|
||||||
|
|
||||||
|
case actions.SAVE_FILE: {
|
||||||
|
try {
|
||||||
|
const requiredFields = ['filename', 'blob']
|
||||||
|
const missingFields = []
|
||||||
|
let dataSentBack = {}
|
||||||
|
requiredFields.forEach((field) => {
|
||||||
|
if (!data[field]) {
|
||||||
|
missingFields.push(field)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
if (missingFields.length > 0) {
|
||||||
|
const missingFieldsString = missingFields.join(', ')
|
||||||
|
const tryAgain = get("walletpage.wchange44")
|
||||||
|
await showErrorAndWait(
|
||||||
|
"MISSING_FIELDS",
|
||||||
|
{
|
||||||
|
id1: missingFieldsString,
|
||||||
|
id2: tryAgain
|
||||||
|
}
|
||||||
|
)
|
||||||
|
dataSentBack['error'] = `Missing fields: ${missingFieldsString}`
|
||||||
|
response = JSON.stringify(dataSentBack)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
const filename = data.filename
|
||||||
|
const blob = data.blob
|
||||||
|
const res = await showModalAndWait(
|
||||||
|
actions.SAVE_FILE,
|
||||||
|
{
|
||||||
|
filename
|
||||||
|
}
|
||||||
|
)
|
||||||
|
if (res.action === 'reject') {
|
||||||
|
let myMsg1 = get("transactions.declined")
|
||||||
|
let myMsg2 = get("walletpage.wchange44")
|
||||||
|
await showErrorAndWait("DECLINED_REQUEST", { id1: myMsg1, id2: myMsg2 })
|
||||||
|
response = '{"error": "User declined request"}'
|
||||||
|
break
|
||||||
|
}
|
||||||
|
const mimeType = blob.type || data.mimeType
|
||||||
|
let backupExention = filename.split('.').pop()
|
||||||
|
if (backupExention) {
|
||||||
|
backupExention = '.' + backupExention
|
||||||
|
}
|
||||||
|
const fileExtension = mimeToExtensionMap[mimeType] || backupExention
|
||||||
|
let fileHandleOptions = {}
|
||||||
|
if (!mimeType) {
|
||||||
|
const obj = {}
|
||||||
|
obj['error'] = 'A mimeType could not be derived'
|
||||||
|
response = JSON.stringify(obj)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
if (!fileExtension) {
|
||||||
|
const obj = {}
|
||||||
|
obj['error'] = 'A file extension could not be derived'
|
||||||
|
response = JSON.stringify(obj)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
if (fileExtension && mimeType) {
|
||||||
|
fileHandleOptions = {
|
||||||
|
accept: {
|
||||||
|
[mimeType]: [fileExtension]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
const fileHandle = await self.showSaveFilePicker({
|
||||||
|
suggestedName: filename,
|
||||||
|
types: [
|
||||||
|
{
|
||||||
|
description: mimeType,
|
||||||
|
...fileHandleOptions
|
||||||
|
}
|
||||||
|
]
|
||||||
|
})
|
||||||
|
const writeFile = async (fileHandle, contents) => {
|
||||||
|
const writable = await fileHandle.createWritable()
|
||||||
|
await writable.write(contents)
|
||||||
|
await writable.close()
|
||||||
|
}
|
||||||
|
writeFile(fileHandle, blob).then(() => console.log("FILE SAVED"))
|
||||||
|
} catch (error) {
|
||||||
|
if (error.name === 'AbortError') {
|
||||||
|
const obj = {}
|
||||||
|
obj['error'] = 'User declined the download'
|
||||||
|
response = JSON.stringify(obj)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
FileSaver.saveAs(blob, filename)
|
||||||
|
}
|
||||||
|
response = JSON.stringify(true)
|
||||||
|
} catch (error) {
|
||||||
|
let myMsg1 = get("managegroup.mg58")
|
||||||
|
let myMsg2 = get("walletpage.wchange44")
|
||||||
|
await showErrorAndWait("ACTION_FAILED", { id1: myMsg1, id2: myMsg2 })
|
||||||
|
const obj = {}
|
||||||
|
obj['error'] = error.message || 'Failed to initiate download'
|
||||||
|
response = JSON.stringify(obj)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break
|
||||||
|
|
||||||
case actions.DEPLOY_AT: {
|
case actions.DEPLOY_AT: {
|
||||||
const requiredFields = ['name', 'description', 'tags', 'creationBytes', 'amount', 'assetId', 'type']
|
const requiredFields = ['name', 'description', 'tags', 'creationBytes', 'amount', 'assetId', 'type']
|
||||||
const missingFields = []
|
const missingFields = []
|
||||||
|
Loading…
x
Reference in New Issue
Block a user