diff --git a/core/src/data/defaultQapps.js b/core/src/data/defaultQapps.js
index e75ce717..88695481 100644
--- a/core/src/data/defaultQapps.js
+++ b/core/src/data/defaultQapps.js
@@ -86,5 +86,16 @@ export const defaultQappsTabs = [
"pluginNumber": "plugin-GGHiHzW6pe",
"menus": [],
"parent": false
+ },
+ {
+ "url": "myapp",
+ "domain": "core",
+ "page": "qdn/browser/index.html?name=Q-Mintership&service=APP",
+ "title": "Q-Mintership",
+ "icon": "vaadin:external-browser",
+ "mwcicon": "apps",
+ "pluginNumber": "plugin-GGJJPqW6pe",
+ "menus": [],
+ "parent": false
}
]
\ No newline at end of file
diff --git a/crypto/api/transactions/chat/decryptChatMessage.js b/crypto/api/transactions/chat/decryptChatMessage.js
index 0a88b697..a7497272 100644
--- a/crypto/api/transactions/chat/decryptChatMessage.js
+++ b/crypto/api/transactions/chat/decryptChatMessage.js
@@ -50,5 +50,13 @@ export const decryptChatMessageBase64 = (encryptedMessage, privateKey, recipient
return _decryptedMessage
}
+ let decrypted1 = new TextDecoder('utf-8').decode(_decryptedMessage)
+
+ if (decrypted1.includes('messageText')) {
+ let decrypted2 = JSON.parse(decrypted1)
+ let decrypted3 = Object.assign(decrypted2, {isFrivate: true})
+ return JSON.stringify(decrypted3)
+ }
+
return new TextDecoder('utf-8').decode(_decryptedMessage)
}
diff --git a/plugins/plugins/core/components/ChatHead.js b/plugins/plugins/core/components/ChatHead.js
index 91bf56e7..6b9b177f 100644
--- a/plugins/plugins/core/components/ChatHead.js
+++ b/plugins/plugins/core/components/ChatHead.js
@@ -129,7 +129,19 @@ class ChatHead extends LitElement {
>
${this.chatInfo.groupName ? this.chatInfo.groupName : this.chatInfo.name !== undefined ? this.chatInfo.name : this.chatInfo.address.substr(0, 15)}
- ${this.chatInfo.groupId !== undefined ? 'lock_open' : 'lock'}
+
+ ${
+ this.chatInfo.groupId === undefined ? 'private_connectivity' :
+ this.chatInfo.isOpen === false ? 'lock_outline' :
+ this.chatInfo.isOpen === true ? 'lock_open' :
+ 'lock_open'
+ }
+
diff --git a/plugins/plugins/core/components/ChatScroller.js b/plugins/plugins/core/components/ChatScroller.js
index 7438e0e3..44a6ea3d 100644
--- a/plugins/plugins/core/components/ChatScroller.js
+++ b/plugins/plugins/core/components/ChatScroller.js
@@ -1106,7 +1106,7 @@ class MessageTemplate extends LitElement {
version = parsedMessageObj.version
isForwarded = parsedMessageObj.type === 'forward'
isEdited = parsedMessageObj.isEdited && true
- isEncrypted = parsedMessageObj.isFromHub || parsedMessageObj.message ? true : false
+ isEncrypted = parsedMessageObj.isFromHub || parsedMessageObj.isFrivate || parsedMessageObj.message ? true : false
if (parsedMessageObj.images && Array.isArray(parsedMessageObj.images) && parsedMessageObj.images.length > 0) {
image = parsedMessageObj.images[0]
diff --git a/plugins/plugins/core/components/webworkerDecodeMessages.js b/plugins/plugins/core/components/webworkerDecodeMessages.js
index 91f20dbf..8f3d8c71 100644
--- a/plugins/plugins/core/components/webworkerDecodeMessages.js
+++ b/plugins/plugins/core/components/webworkerDecodeMessages.js
@@ -2893,6 +2893,14 @@ export const decryptChatMessageBase64 = (encryptedMessage, privateKey, recipient
return _decryptedMessage
}
+ let decrypted1 = new TextDecoder('utf-8').decode(_decryptedMessage)
+
+ if (decrypted1.includes('messageText')) {
+ let decrypted2 = JSON.parse(decrypted1)
+ let decrypted3 = Object.assign(decrypted2, {isFrivate: true})
+ return JSON.stringify(decrypted3)
+ }
+
return new TextDecoder('utf-8').decode(_decryptedMessage)
}
diff --git a/plugins/plugins/core/node-management/node-management.src.js b/plugins/plugins/core/node-management/node-management.src.js
index 85eedf3b..dc493188 100644
--- a/plugins/plugins/core/node-management/node-management.src.js
+++ b/plugins/plugins/core/node-management/node-management.src.js
@@ -12,6 +12,7 @@ import '@vaadin/grid'
// Multi language support
import { get, registerTranslateConfig, translate, use } from '../../../../core/translate'
+
registerTranslateConfig({
loader: lang => fetch(`/language/${lang}.json`).then(res => res.json())
})
@@ -427,7 +428,9 @@ class NodeManagement extends LitElement {
async addPeer() {
this.addPeerLoading = true
+
const addPeerAddress = this.shadowRoot.getElementById('addPeerAddress').value
+
await parentEpml.request('apiCall', {
url: `/peers?apiKey=${this.getApiKey()}`,
method: 'POST',
@@ -456,7 +459,6 @@ class NodeManagement extends LitElement {
addMintingAccount() {
this.addMintingAccountLoading = true
this.addMintingAccountMessage = 'Loading...'
-
this.addMintingAccountKey = this.shadowRoot.querySelector('#addMintingAccountKey').value
parentEpml.request('apiCall', {
@@ -479,6 +481,7 @@ class NodeManagement extends LitElement {
updateMintingAccounts() {
this.mintingAccounts = []
+
parentEpml.request('apiCall', {
url: `/admin/mintingaccounts?apiKey=${this.getApiKey()}`,
method: 'GET'
@@ -518,10 +521,6 @@ class NodeManagement extends LitElement {
if (!arr) { return true }
return arr.length === 0
}
-
- round(number) {
- return (Math.round(parseFloat(number) * 1e8) / 1e8).toFixed(8)
- }
}
window.customElements.define('node-management', NodeManagement)
\ No newline at end of file
diff --git a/plugins/plugins/core/overview-page/overview-page.src.js b/plugins/plugins/core/overview-page/overview-page.src.js
index 1c8a266a..de3a1ed3 100644
--- a/plugins/plugins/core/overview-page/overview-page.src.js
+++ b/plugins/plugins/core/overview-page/overview-page.src.js
@@ -10,6 +10,7 @@ import '@vaadin/button'
// Multi language support
import { get, registerTranslateConfig, translate, use } from '../../../../core/translate'
+
registerTranslateConfig({
loader: lang => fetch(`/language/${lang}.json`).then(res => res.json())
})
@@ -144,7 +145,6 @@ class OverviewPage extends LitElement {
async firstUpdated() {
this.changeTheme()
this.changeLanguage()
-
this.nodeConfig = window.parent.reduxStore.getState().app.nodeConfig
this.accountInfo = window.parent.reduxStore.getState().app.accountInfo
@@ -199,11 +199,13 @@ class OverviewPage extends LitElement {
changeTheme() {
const checkTheme = localStorage.getItem('qortalTheme')
+
if (checkTheme === 'dark') {
this.theme = 'dark'
} else {
this.theme = 'light'
}
+
document.querySelector('html').setAttribute('theme', this.theme)
}
@@ -225,6 +227,7 @@ class OverviewPage extends LitElement {
async refreshItems() {
this.nodeConfig = window.parent.reduxStore.getState().app.nodeConfig
this.accountInfo = window.parent.reduxStore.getState().app.accountInfo
+
await this.getNodeInfo()
await this.getCoreInfo()
await this.getBalanceInfo()
@@ -234,12 +237,14 @@ class OverviewPage extends LitElement {
async getMintingKeysList() {
this.check1 = false
this.check2 = false
+
const myNode = window.parent.reduxStore.getState().app.nodeConfig.knownNodes[window.parent.reduxStore.getState().app.nodeConfig.node]
const nodeStatus = myNode.protocol + '://' + myNode.domain + ':' + myNode.port
- const statusUrl = `${nodeStatus}/admin/mintingaccounts`
+ const statusUrl = `${nodeStatus}/admin/mintingaccounts?apiKey=${this.getApiKey()}`
try {
const res = await fetch(statusUrl)
+
this.listAccounts = await res.json()
const addressInfo = window.parent.reduxStore.getState().app.accountInfo.addressInfo
@@ -249,7 +254,6 @@ class OverviewPage extends LitElement {
const findRemovedSponsorsKey = this.listAccounts.filter((my) => my.address)
this.check1 = findMyMintingAccount !== undefined
-
this.check2 = findMyMintingRecipient !== undefined
if (findRemovedSponsorsKey.length > 0) {
@@ -285,8 +289,7 @@ class OverviewPage extends LitElement {
this.cssStatus = ''
return html`${translate("walletprofile.wp1")}`
} else if (this.nodeInfo.isMintingPossible === true && this.nodeInfo.isSynchronizing === false && this.check1 === false && this.check2 === true && addressInfo.level == 0 && addressInfo.blocksMinted < 7200) {
- this.cssStatus = ''
- return html`${translate("becomeMinterPage.bchange12")}`
+ return html``
} else if (this.check1 === false && this.check2 === false && myMintingKey === true) {
return html``
} else if (myMintingKey === false) {
@@ -319,6 +322,7 @@ class OverviewPage extends LitElement {
const infoNode = window.parent.reduxStore.getState().app.nodeConfig.knownNodes[window.parent.reduxStore.getState().app.nodeConfig.node]
const infoNodeUrl = infoNode.protocol + '://' + infoNode.domain + ':' + infoNode.port
const nodeUrl = `${infoNodeUrl}/admin/status`
+
await fetch(nodeUrl).then(response => {
return response.json()
}).then(data => {
@@ -332,6 +336,7 @@ class OverviewPage extends LitElement {
const infoCore = window.parent.reduxStore.getState().app.nodeConfig.knownNodes[window.parent.reduxStore.getState().app.nodeConfig.node]
const infoCoreUrl = infoCore.protocol + '://' + infoCore.domain + ':' + infoCore.port
const coreUrl = `${infoCoreUrl}/admin/info`
+
await fetch(coreUrl).then(response => {
return response.json()
}).then(data => {
@@ -344,6 +349,7 @@ class OverviewPage extends LitElement {
const infoBalance = window.parent.reduxStore.getState().app.nodeConfig.knownNodes[window.parent.reduxStore.getState().app.nodeConfig.node]
const infoBalanceUrl = infoBalance.protocol + '://' + infoBalance.domain + ':' + infoBalance.port
const balanceUrl = `${infoBalanceUrl}/addresses/balance/${this.accountInfo.addressInfo.address}`
+
await fetch(balanceUrl).then(response => {
return response.json()
}).then(data => {
@@ -422,7 +428,7 @@ class StartMintingNow extends LitElement {
async getMintingAcccounts() {
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 url = `${nodeUrl}/admin/mintingaccounts`
+ const url = `${nodeUrl}/admin/mintingaccounts?apiKey=${this.getApiKey()}`
try {
const res = await fetch(url)
this.mintingAccountData = await res.json()
@@ -484,7 +490,9 @@ class StartMintingNow extends LitElement {
let interval = null
let stop = false
+
this.status = 2
+
const getAnswer = async () => {
const rewardShares = async (minterAddr) => {
const url = `${nodeUrl}/addresses/rewardshares?minters=${minterAddr}&recipients=${minterAddr}`
@@ -508,6 +516,7 @@ class StartMintingNow extends LitElement {
stop = false
}
}
+
interval = setInterval(getAnswer, 5000)
}
diff --git a/plugins/plugins/core/q-chat/q-chat.src.js b/plugins/plugins/core/q-chat/q-chat.src.js
index bb99d469..04b80174 100644
--- a/plugins/plugins/core/q-chat/q-chat.src.js
+++ b/plugins/plugins/core/q-chat/q-chat.src.js
@@ -1207,6 +1207,20 @@ class Chat extends LitElement {
}
}
+ async getGroupType(newGroupId) {
+ try {
+ 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 response = await fetch(`${nodeUrl}/groups/${newGroupId}`)
+ const data = await response.json()
+
+ return data.isOpen
+ } catch (error) {
+ console.error('Error fetching group type', error)
+ throw error
+ }
+ }
+
async setChatHeads(chatObj) {
const chatObjGroups = Array.isArray(chatObj.groups) ? chatObj.groups : []
const chatObjDirect = Array.isArray(chatObj.direct) ? chatObj.direct : []
@@ -1216,12 +1230,14 @@ class Chat extends LitElement {
url: `group/${group.groupId}`,
groupName: 'Qortal General Chat',
timestamp: group.timestamp === undefined ? 2 : group.timestamp,
- sender: group.sender
+ sender: group.sender,
+ isOpen: true
} : {
...group,
timestamp: group.timestamp === undefined ? 1 : group.timestamp,
url: `group/${group.groupId}`,
- ownerName: group.ownerName === undefined ? await this.getOwnerName(group.groupId) : 'undefined'
+ ownerName: group.ownerName === undefined ? await this.getOwnerName(group.groupId) : 'undefined',
+ isOpen: group.isOpen === undefined ? await this.getGroupType(group.groupId) : true
}))
let directList = chatObjDirect.map(dc => {
diff --git a/plugins/plugins/core/reward-share/reward-share.src.js b/plugins/plugins/core/reward-share/reward-share.src.js
index d59aceec..fb99575c 100644
--- a/plugins/plugins/core/reward-share/reward-share.src.js
+++ b/plugins/plugins/core/reward-share/reward-share.src.js
@@ -13,6 +13,7 @@ import '@vaadin/grid'
// Multi language support
import { get, registerTranslateConfig, translate, use } from '../../../../core/translate'
+
registerTranslateConfig({
loader: lang => fetch(`/language/${lang}.json`).then(res => res.json())
})
@@ -346,7 +347,7 @@ class RewardShare extends LitElement {
getTxnRequestResponse(myTransaction)
}
} else if (accountDetails.address === recipientAddress) {
- if (accountDetails.level >= 1 && accountDetails.level <= 4) {
+ if (accountDetails.level <= 4) {
this.error = false
this.message = ''
let myTransaction = await makeTransactionRequest(lastRef)
@@ -361,7 +362,6 @@ class RewardShare extends LitElement {
getTxnRequestResponse(myTransaction)
}
} else if (accountDetails.level >= 5) {
-
this.error = false
this.message = ''
let myTransaction = await makeTransactionRequest(lastRef)
@@ -504,7 +504,7 @@ class RewardShare extends LitElement {
getTxnRequestResponse(myTransaction)
}
} else if (accountDetails.address === recipientAddress) {
- if (accountDetails.level >= 1 && accountDetails.level <= 4) {
+ if (accountDetails.level <= 4) {
this.error = false
this.message = ''
let myTransaction = await makeTransactionRequest(lastRef)
@@ -519,7 +519,6 @@ class RewardShare extends LitElement {
getTxnRequestResponse(myTransaction)
}
} else if (accountDetails.level >= 5) {
-
this.error = false
this.message = ''
let myTransaction = await makeTransactionRequest(lastRef)