From eb85ba45ec5ea5b40aecac6b3557151337f3bd60 Mon Sep 17 00:00:00 2001
From: AlphaX-Projects <77661270+AlphaX-Projects@users.noreply.github.com>
Date: Sat, 28 Oct 2023 09:08:41 +0200
Subject: [PATCH] Update Add Fix
Updated dependencies
Added GET_DAY_SUMMARY
Fixed Qortal Lottery enter amount
---
package-lock.json | 443 +++---
package.json | 26 +-
.../core/components/qdn-action-types.js | 5 +-
.../plugins/core/qdn/browser/browser.src.js | 1262 +++++++++--------
.../core/qortal-lottery/qortal-lottery.src.js | 1 +
5 files changed, 891 insertions(+), 846 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 1b777009..b8f83b51 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,7 +11,7 @@
"dependencies": {
"@hapi/hapi": "21.3.2",
"@hapi/inert": "7.1.0",
- "@lit-labs/motion": "1.0.4",
+ "@lit-labs/motion": "1.0.6",
"@popperjs/core": "2.11.8",
"@tiptap/core": "2.0.4",
"@tiptap/extension-highlight": "2.0.4",
@@ -25,9 +25,9 @@
"bcryptjs": "2.4.3",
"buffer": "6.0.3",
"compressorjs": "1.2.1",
- "crypto-js": "4.1.1",
+ "crypto-js": "4.2.0",
"electron-dl": "3.5.1",
- "electron-log": "4.4.8",
+ "electron-log": "5.0.0",
"electron-store": "8.1.0",
"electron-updater": "6.1.4",
"emoji-picker-js": "https://github.com/Qortal/emoji-picker-js",
@@ -45,8 +45,8 @@
"prosemirror-schema-list": "1.3.0",
"prosemirror-state": "1.4.3",
"prosemirror-transform": "1.8.0",
- "prosemirror-view": "1.32.1",
- "sass": "1.69.4",
+ "prosemirror-view": "1.32.2",
+ "sass": "1.69.5",
"short-unique-id": "5.0.3"
},
"devDependencies": {
@@ -93,20 +93,20 @@
"@rollup/plugin-node-resolve": "15.2.3",
"@rollup/plugin-replace": "5.0.4",
"@rollup/plugin-terser": "0.4.4",
- "@vaadin/avatar": "24.2.0",
- "@vaadin/button": "24.2.0",
- "@vaadin/grid": "24.2.0",
- "@vaadin/icons": "24.2.0",
- "@vaadin/password-field": "24.2.0",
- "@vaadin/tooltip": "24.2.0",
+ "@vaadin/avatar": "24.2.1",
+ "@vaadin/button": "24.2.1",
+ "@vaadin/grid": "24.2.1",
+ "@vaadin/icons": "24.2.1",
+ "@vaadin/password-field": "24.2.1",
+ "@vaadin/tooltip": "24.2.1",
"@zip.js/zip.js": "2.7.30",
- "axios": "1.5.1",
+ "axios": "1.6.0",
"electron": "27.0.2",
"electron-builder": "24.6.4",
"electron-packager": "17.1.2",
"epml": "0.3.3",
"eslint": "8.52.0",
- "eslint-plugin-lit": "1.9.1",
+ "eslint-plugin-lit": "1.10.1",
"eslint-plugin-wc": "2.0.4",
"file-saver": "2.0.5",
"highcharts": "11.1.0",
@@ -757,9 +757,9 @@
}
},
"node_modules/@eslint-community/regexpp": {
- "version": "4.9.1",
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz",
- "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==",
+ "version": "4.10.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz",
+ "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==",
"dev": true,
"engines": {
"node": "^12.0.0 || ^14.0.0 || >=16.0.0"
@@ -1313,11 +1313,11 @@
}
},
"node_modules/@lit-labs/motion": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@lit-labs/motion/-/motion-1.0.4.tgz",
- "integrity": "sha512-cZrA6u/qR71ZIqk0PGINBLWPDxT8oHB706QzWHJKo7nCOi3KCsd7CSuR5H09I0t6E+bd2nVB+zJPGd2wVjNSsA==",
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/@lit-labs/motion/-/motion-1.0.6.tgz",
+ "integrity": "sha512-7d4d89CjdEMsU7lNG0gFMZOUowq00CgcJL1ifab0IVFc/fTCcfZyQuRb5vAhetkwPQFmiyP54tvHQ9GuHsLtuQ==",
"dependencies": {
- "lit": "^2.8.0"
+ "lit": "^2.0.0 || ^3.0.0"
}
},
"node_modules/@lit-labs/ssr-dom-shim": {
@@ -3612,10 +3612,13 @@
"dev": true
},
"node_modules/@types/node": {
- "version": "18.18.6",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.6.tgz",
- "integrity": "sha512-wf3Vz+jCmOQ2HV1YUJuCWdL64adYxumkrxtc+H1VUQlnQI04+5HtH+qZCOE21lBE7gIrt+CwX2Wv8Acrw5Ak6w==",
- "devOptional": true
+ "version": "18.18.7",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.7.tgz",
+ "integrity": "sha512-bw+lEsxis6eqJYW8Ql6+yTqkE6RuFtsQPSe5JxXbqYRFQEER5aJA9a5UH9igqDWm3X4iLHIKOHlnAXLM4mi7uQ==",
+ "devOptional": true,
+ "dependencies": {
+ "undici-types": "~5.26.4"
+ }
},
"node_modules/@types/object.omit": {
"version": "3.0.2",
@@ -3686,72 +3689,72 @@
"dev": true
},
"node_modules/@vaadin/a11y-base": {
- "version": "24.2.0",
- "resolved": "https://registry.npmjs.org/@vaadin/a11y-base/-/a11y-base-24.2.0.tgz",
- "integrity": "sha512-cnppkRPiVjSDPLPzdnZ14yQZYRdWFjNiUh6jmUTCXiGsXrkgoUfmALxhhc9iodd1WxbrXwtD4OsMcJi/uMIjAg==",
+ "version": "24.2.1",
+ "resolved": "https://registry.npmjs.org/@vaadin/a11y-base/-/a11y-base-24.2.1.tgz",
+ "integrity": "sha512-S4PG7xRfn/vUxuDtBEwsktjhLGSa70U02++l42Zqct8nT5xSZPjl7k9n+77bcDU/Ofpcwb9pZUPNeyi1lTKbzw==",
"dev": true,
"dependencies": {
"@open-wc/dedupe-mixin": "^1.3.0",
"@polymer/polymer": "^3.0.0",
- "@vaadin/component-base": "~24.2.0",
+ "@vaadin/component-base": "~24.2.1",
"lit": "^2.0.0"
}
},
"node_modules/@vaadin/avatar": {
- "version": "24.2.0",
- "resolved": "https://registry.npmjs.org/@vaadin/avatar/-/avatar-24.2.0.tgz",
- "integrity": "sha512-Xy+yxj9fxMLEjhLCsTmsYV3kVOamIurPgnPGK0/CGn4PQphdhqqiRd0b9cHxPJl/Ei6CDu033lj1ovT19CjmbA==",
+ "version": "24.2.1",
+ "resolved": "https://registry.npmjs.org/@vaadin/avatar/-/avatar-24.2.1.tgz",
+ "integrity": "sha512-HIxznBjaveGVypaFI3Wjed4D/I8hfW+Bg++PbyNUP/QuI+dQYvDskhS+qo8BzjuyB6s1ka+Rh5ROOk/SKL0XyQ==",
"dev": true,
"dependencies": {
"@polymer/polymer": "^3.0.0",
- "@vaadin/a11y-base": "~24.2.0",
- "@vaadin/component-base": "~24.2.0",
- "@vaadin/item": "~24.2.0",
- "@vaadin/list-box": "~24.2.0",
- "@vaadin/overlay": "~24.2.0",
- "@vaadin/tooltip": "~24.2.0",
- "@vaadin/vaadin-lumo-styles": "~24.2.0",
- "@vaadin/vaadin-material-styles": "~24.2.0",
- "@vaadin/vaadin-themable-mixin": "~24.2.0"
+ "@vaadin/a11y-base": "~24.2.1",
+ "@vaadin/component-base": "~24.2.1",
+ "@vaadin/item": "~24.2.1",
+ "@vaadin/list-box": "~24.2.1",
+ "@vaadin/overlay": "~24.2.1",
+ "@vaadin/tooltip": "~24.2.1",
+ "@vaadin/vaadin-lumo-styles": "~24.2.1",
+ "@vaadin/vaadin-material-styles": "~24.2.1",
+ "@vaadin/vaadin-themable-mixin": "~24.2.1"
}
},
"node_modules/@vaadin/button": {
- "version": "24.2.0",
- "resolved": "https://registry.npmjs.org/@vaadin/button/-/button-24.2.0.tgz",
- "integrity": "sha512-gHO9jiPGRV4AwzsLJ2A2OkIDIdeOJ7iZ2JwPSdj/O4pzwwqPe+VOd4s2mrLKGWD9TNW/gsX4cRFVzwfbvOOKyg==",
+ "version": "24.2.1",
+ "resolved": "https://registry.npmjs.org/@vaadin/button/-/button-24.2.1.tgz",
+ "integrity": "sha512-8DwoHxvQVZGXV63elsoYcbMe7tZnecijEQOrgSZ34Nn4e6VAv/1rPuW1QscewIOQSXYCbYeESPqAjOhWrHd+iw==",
"dev": true,
"dependencies": {
"@open-wc/dedupe-mixin": "^1.3.0",
"@polymer/polymer": "^3.0.0",
- "@vaadin/a11y-base": "~24.2.0",
- "@vaadin/component-base": "~24.2.0",
- "@vaadin/vaadin-lumo-styles": "~24.2.0",
- "@vaadin/vaadin-material-styles": "~24.2.0",
- "@vaadin/vaadin-themable-mixin": "~24.2.0",
+ "@vaadin/a11y-base": "~24.2.1",
+ "@vaadin/component-base": "~24.2.1",
+ "@vaadin/vaadin-lumo-styles": "~24.2.1",
+ "@vaadin/vaadin-material-styles": "~24.2.1",
+ "@vaadin/vaadin-themable-mixin": "~24.2.1",
"lit": "^2.0.0"
}
},
"node_modules/@vaadin/checkbox": {
- "version": "24.2.0",
- "resolved": "https://registry.npmjs.org/@vaadin/checkbox/-/checkbox-24.2.0.tgz",
- "integrity": "sha512-sy2NzW6ESF5t0TSuGrBGkLnELFEQM01UQf4rkSyo2d4qo8tDADW2XcItj810qIGcsMxxCyUiywM2J2tMyukrIA==",
+ "version": "24.2.1",
+ "resolved": "https://registry.npmjs.org/@vaadin/checkbox/-/checkbox-24.2.1.tgz",
+ "integrity": "sha512-ptkBqIk4v7NjVmw5OPIvUo1symP9EbOeIdgtWnIW0aXFKbgyl41ghOg5jT9XPY4fhLzcRp+ephgdzZYJG4S1fQ==",
"dev": true,
"dependencies": {
"@open-wc/dedupe-mixin": "^1.3.0",
"@polymer/polymer": "^3.0.0",
- "@vaadin/a11y-base": "~24.2.0",
- "@vaadin/component-base": "~24.2.0",
- "@vaadin/field-base": "~24.2.0",
- "@vaadin/vaadin-lumo-styles": "~24.2.0",
- "@vaadin/vaadin-material-styles": "~24.2.0",
- "@vaadin/vaadin-themable-mixin": "~24.2.0",
+ "@vaadin/a11y-base": "~24.2.1",
+ "@vaadin/component-base": "~24.2.1",
+ "@vaadin/field-base": "~24.2.1",
+ "@vaadin/vaadin-lumo-styles": "~24.2.1",
+ "@vaadin/vaadin-material-styles": "~24.2.1",
+ "@vaadin/vaadin-themable-mixin": "~24.2.1",
"lit": "^2.0.0"
}
},
"node_modules/@vaadin/component-base": {
- "version": "24.2.0",
- "resolved": "https://registry.npmjs.org/@vaadin/component-base/-/component-base-24.2.0.tgz",
- "integrity": "sha512-n0iIg6Oj6+Ei2L2BaEdZn1gXdvX7ZNgDnC28TGQ7o2Ld7K0GomEEyG20/nTra8zxgZRm57CZKoR+PEcxkzTexQ==",
+ "version": "24.2.1",
+ "resolved": "https://registry.npmjs.org/@vaadin/component-base/-/component-base-24.2.1.tgz",
+ "integrity": "sha512-DQOImwyKirm82g1XAXCzIEuQ+RW3P2qm4Qk4s7z6yhxErsseCXzsVXKKGAB6oya+XeuByoC1p6ja+cDcTjlVVA==",
"dev": true,
"dependencies": {
"@open-wc/dedupe-mixin": "^1.3.0",
@@ -3762,173 +3765,173 @@
}
},
"node_modules/@vaadin/field-base": {
- "version": "24.2.0",
- "resolved": "https://registry.npmjs.org/@vaadin/field-base/-/field-base-24.2.0.tgz",
- "integrity": "sha512-AN3NNgvFx8K2fa7RZQ1iWeqDA+wQ0joa1RCP58Qo9u+JtU9c75XHJKiPiQvFVGH0EmRjOXwhE0KqyMYmKFfOaw==",
+ "version": "24.2.1",
+ "resolved": "https://registry.npmjs.org/@vaadin/field-base/-/field-base-24.2.1.tgz",
+ "integrity": "sha512-Me5XjVFQQTA6pn+7dn6oe/Nf0hlu030CXgt5B7VAnJNNAB0ZkLMNc3Ll5QY1YhTv44Uss5ZvTxUo2DCAsL0NCw==",
"dev": true,
"dependencies": {
"@open-wc/dedupe-mixin": "^1.3.0",
"@polymer/polymer": "^3.0.0",
- "@vaadin/a11y-base": "~24.2.0",
- "@vaadin/component-base": "~24.2.0",
+ "@vaadin/a11y-base": "~24.2.1",
+ "@vaadin/component-base": "~24.2.1",
"lit": "^2.0.0"
}
},
"node_modules/@vaadin/grid": {
- "version": "24.2.0",
- "resolved": "https://registry.npmjs.org/@vaadin/grid/-/grid-24.2.0.tgz",
- "integrity": "sha512-jCkTb3I8ljdkJDlxSOr0ORlxqZphhdfbfaxHWFSc8/i1TlUo4Uof2VugZRsSDVh2UGB1DyHOGUtHn80ZPEqzaw==",
+ "version": "24.2.1",
+ "resolved": "https://registry.npmjs.org/@vaadin/grid/-/grid-24.2.1.tgz",
+ "integrity": "sha512-uzKiDG1Jw+rE/rQ9ZinI5Sj/57tJCsZhxdkvXGbXZtXAkfUJO3tqaiH/EJvFWkHUvOGuUACif5q6tKBFhOpjYg==",
"dev": true,
"dependencies": {
"@open-wc/dedupe-mixin": "^1.3.0",
"@polymer/polymer": "^3.0.0",
- "@vaadin/a11y-base": "~24.2.0",
- "@vaadin/checkbox": "~24.2.0",
- "@vaadin/component-base": "~24.2.0",
- "@vaadin/lit-renderer": "~24.2.0",
- "@vaadin/text-field": "~24.2.0",
- "@vaadin/vaadin-lumo-styles": "~24.2.0",
- "@vaadin/vaadin-material-styles": "~24.2.0",
- "@vaadin/vaadin-themable-mixin": "~24.2.0"
+ "@vaadin/a11y-base": "~24.2.1",
+ "@vaadin/checkbox": "~24.2.1",
+ "@vaadin/component-base": "~24.2.1",
+ "@vaadin/lit-renderer": "~24.2.1",
+ "@vaadin/text-field": "~24.2.1",
+ "@vaadin/vaadin-lumo-styles": "~24.2.1",
+ "@vaadin/vaadin-material-styles": "~24.2.1",
+ "@vaadin/vaadin-themable-mixin": "~24.2.1"
}
},
"node_modules/@vaadin/icon": {
- "version": "24.2.0",
- "resolved": "https://registry.npmjs.org/@vaadin/icon/-/icon-24.2.0.tgz",
- "integrity": "sha512-0Ame9r0eb+kz+ryaxnH/CzzNefT8VERL3YFNlLo0YhJPK9vhcT9qxOfbCqWvT52R0DorIux80WS8ZtMAKTsjOQ==",
+ "version": "24.2.1",
+ "resolved": "https://registry.npmjs.org/@vaadin/icon/-/icon-24.2.1.tgz",
+ "integrity": "sha512-jWow97z8bVgrts/0Cjkvqm9P5fxm5ooCRcLcr0vwf+FIqgY9U5j+zXIL06DbDnXCz25a8lLcnqnIjtDJLwr25Q==",
"dev": true,
"dependencies": {
"@polymer/polymer": "^3.0.0",
- "@vaadin/component-base": "~24.2.0",
- "@vaadin/vaadin-lumo-styles": "~24.2.0",
- "@vaadin/vaadin-themable-mixin": "~24.2.0",
+ "@vaadin/component-base": "~24.2.1",
+ "@vaadin/vaadin-lumo-styles": "~24.2.1",
+ "@vaadin/vaadin-themable-mixin": "~24.2.1",
"lit": "^2.0.0"
}
},
"node_modules/@vaadin/icons": {
- "version": "24.2.0",
- "resolved": "https://registry.npmjs.org/@vaadin/icons/-/icons-24.2.0.tgz",
- "integrity": "sha512-ekiGe5JscULbr0LvMdotCkBWfKDewiGf+VJTG0mjEthcTCvxH5snTmoTlUrUMLJjmIKR6rwNLZ5dx3yPrdcMDQ==",
+ "version": "24.2.1",
+ "resolved": "https://registry.npmjs.org/@vaadin/icons/-/icons-24.2.1.tgz",
+ "integrity": "sha512-lbR851SeFaInR2lGa+2OeVSz7k/NTGEpTnRtWtytUEQnBm/3O2/OQo+BwQ6grCA5lxiYL+qq4G7Fd2qBwLhYEA==",
"dev": true,
"dependencies": {
"@polymer/polymer": "^3.0.0",
- "@vaadin/icon": "~24.2.0"
+ "@vaadin/icon": "~24.2.1"
}
},
"node_modules/@vaadin/input-container": {
- "version": "24.2.0",
- "resolved": "https://registry.npmjs.org/@vaadin/input-container/-/input-container-24.2.0.tgz",
- "integrity": "sha512-Netv/fN+SFAZIvoZb8Dqwv0SLT4gGRtCwD+xstdF5CrgYuFcnrdAg8Gku7xSDhWy3Pq7sCXrbUV+YjCOHinSFA==",
+ "version": "24.2.1",
+ "resolved": "https://registry.npmjs.org/@vaadin/input-container/-/input-container-24.2.1.tgz",
+ "integrity": "sha512-P6GMXyjWC9EizJJhDMKzhQweTwdRQAmfY/oa+PuY/JRqYLQKy5DH8XmpNOUVxbFiVBaciFGtN8wJonLoBtCsJg==",
"dev": true,
"dependencies": {
"@polymer/polymer": "^3.0.0",
- "@vaadin/component-base": "~24.2.0",
- "@vaadin/vaadin-lumo-styles": "~24.2.0",
- "@vaadin/vaadin-material-styles": "~24.2.0",
- "@vaadin/vaadin-themable-mixin": "~24.2.0"
+ "@vaadin/component-base": "~24.2.1",
+ "@vaadin/vaadin-lumo-styles": "~24.2.1",
+ "@vaadin/vaadin-material-styles": "~24.2.1",
+ "@vaadin/vaadin-themable-mixin": "~24.2.1"
}
},
"node_modules/@vaadin/item": {
- "version": "24.2.0",
- "resolved": "https://registry.npmjs.org/@vaadin/item/-/item-24.2.0.tgz",
- "integrity": "sha512-kI+qOMkY7np2gmo88zc/z4OVBfNgBFjTDYhF7bnVTqD3aZIa39pjcNBm6vxJKPglOtZ/US3iJTh3HvyCv/EVjw==",
+ "version": "24.2.1",
+ "resolved": "https://registry.npmjs.org/@vaadin/item/-/item-24.2.1.tgz",
+ "integrity": "sha512-UX3LREC6ANSqFNYa+N/X1vd0K7XpfhmygfAkCTCQ0MVz4GJCA2Isr9Qo3o14vY+aEoZoNRRqNMEa7PP9yNDXJg==",
"dev": true,
"dependencies": {
"@open-wc/dedupe-mixin": "^1.3.0",
"@polymer/polymer": "^3.0.0",
- "@vaadin/a11y-base": "~24.2.0",
- "@vaadin/component-base": "~24.2.0",
- "@vaadin/vaadin-lumo-styles": "~24.2.0",
- "@vaadin/vaadin-material-styles": "~24.2.0",
- "@vaadin/vaadin-themable-mixin": "~24.2.0"
+ "@vaadin/a11y-base": "~24.2.1",
+ "@vaadin/component-base": "~24.2.1",
+ "@vaadin/vaadin-lumo-styles": "~24.2.1",
+ "@vaadin/vaadin-material-styles": "~24.2.1",
+ "@vaadin/vaadin-themable-mixin": "~24.2.1"
}
},
"node_modules/@vaadin/list-box": {
- "version": "24.2.0",
- "resolved": "https://registry.npmjs.org/@vaadin/list-box/-/list-box-24.2.0.tgz",
- "integrity": "sha512-F/5XEpnSYB1Rdl6Z1n1HN3k111B7VAD+9d5MCQCadfE4Q3bxqQ16QOqKON1LBoSguINwNRkm3M9Warpk8dUABQ==",
+ "version": "24.2.1",
+ "resolved": "https://registry.npmjs.org/@vaadin/list-box/-/list-box-24.2.1.tgz",
+ "integrity": "sha512-Lt9joa45tHi7CWuwulumXhchCtiRq9BcnbANd7rIJCqGIHlW+bZFspqJ+X12zObNTp9BDohFH5EJk6qPpqjSkg==",
"dev": true,
"dependencies": {
"@open-wc/dedupe-mixin": "^1.3.0",
"@polymer/polymer": "^3.0.0",
- "@vaadin/a11y-base": "~24.2.0",
- "@vaadin/component-base": "~24.2.0",
- "@vaadin/item": "~24.2.0",
- "@vaadin/vaadin-lumo-styles": "~24.2.0",
- "@vaadin/vaadin-material-styles": "~24.2.0",
- "@vaadin/vaadin-themable-mixin": "~24.2.0"
+ "@vaadin/a11y-base": "~24.2.1",
+ "@vaadin/component-base": "~24.2.1",
+ "@vaadin/item": "~24.2.1",
+ "@vaadin/vaadin-lumo-styles": "~24.2.1",
+ "@vaadin/vaadin-material-styles": "~24.2.1",
+ "@vaadin/vaadin-themable-mixin": "~24.2.1"
}
},
"node_modules/@vaadin/lit-renderer": {
- "version": "24.2.0",
- "resolved": "https://registry.npmjs.org/@vaadin/lit-renderer/-/lit-renderer-24.2.0.tgz",
- "integrity": "sha512-fkj6aetCgq3kp6tUqkvL+E9LwLd6oH/a8Pg93sPuBx4D2dQ85IVIgJCpYFlBjdaDp548/frPRkfpRmziZ1netw==",
+ "version": "24.2.1",
+ "resolved": "https://registry.npmjs.org/@vaadin/lit-renderer/-/lit-renderer-24.2.1.tgz",
+ "integrity": "sha512-eit1MD84gFh0FBkO8YGZI9Zi2uy6iMJNb4B9iq5VGkHpcj4bFsJCy/t+eDR23MdqVpEn725AXOdHu9NA9hupRg==",
"dev": true,
"dependencies": {
"lit": "^2.0.0"
}
},
"node_modules/@vaadin/overlay": {
- "version": "24.2.0",
- "resolved": "https://registry.npmjs.org/@vaadin/overlay/-/overlay-24.2.0.tgz",
- "integrity": "sha512-suNbMshKy52jhm2CDc4g974JU8hXsr5KIzopyR9A1pT3syiPx+75HqucZvqDJbiGMf/Fe04UjLrlhem6+tIuXw==",
+ "version": "24.2.1",
+ "resolved": "https://registry.npmjs.org/@vaadin/overlay/-/overlay-24.2.1.tgz",
+ "integrity": "sha512-f/gzh25yWI/7lfjrtvu7Sqhn5HaNA/SItCS5D94LIo7DbGK4qepjlYrO7YS6pr/Jv5bznQ27+nGskMxN6WLEAQ==",
"dev": true,
"dependencies": {
"@open-wc/dedupe-mixin": "^1.3.0",
"@polymer/polymer": "^3.0.0",
- "@vaadin/a11y-base": "~24.2.0",
- "@vaadin/component-base": "~24.2.0",
- "@vaadin/vaadin-lumo-styles": "~24.2.0",
- "@vaadin/vaadin-material-styles": "~24.2.0",
- "@vaadin/vaadin-themable-mixin": "~24.2.0"
+ "@vaadin/a11y-base": "~24.2.1",
+ "@vaadin/component-base": "~24.2.1",
+ "@vaadin/vaadin-lumo-styles": "~24.2.1",
+ "@vaadin/vaadin-material-styles": "~24.2.1",
+ "@vaadin/vaadin-themable-mixin": "~24.2.1"
}
},
"node_modules/@vaadin/password-field": {
- "version": "24.2.0",
- "resolved": "https://registry.npmjs.org/@vaadin/password-field/-/password-field-24.2.0.tgz",
- "integrity": "sha512-EGael4z/WBBpXHs6TQgKPUGCdHDT9OB+mmpKqfi8vlYr5FV7c6jxaouFH4mND4fiPwymCE8R1LbxVQ+wLcByeQ==",
+ "version": "24.2.1",
+ "resolved": "https://registry.npmjs.org/@vaadin/password-field/-/password-field-24.2.1.tgz",
+ "integrity": "sha512-6QRacwzeSChxbTPWBTzO8tkzMHQS2iTx7NoLA2C6JmaaZKXFcGRvsDXiuWJJa2yyYVcWegR/PW9VPfI2dvnwbQ==",
"dev": true,
"dependencies": {
"@polymer/polymer": "^3.0.0",
- "@vaadin/button": "~24.2.0",
- "@vaadin/component-base": "~24.2.0",
- "@vaadin/text-field": "~24.2.0",
- "@vaadin/vaadin-lumo-styles": "~24.2.0",
- "@vaadin/vaadin-material-styles": "~24.2.0",
- "@vaadin/vaadin-themable-mixin": "~24.2.0"
+ "@vaadin/button": "~24.2.1",
+ "@vaadin/component-base": "~24.2.1",
+ "@vaadin/text-field": "~24.2.1",
+ "@vaadin/vaadin-lumo-styles": "~24.2.1",
+ "@vaadin/vaadin-material-styles": "~24.2.1",
+ "@vaadin/vaadin-themable-mixin": "~24.2.1"
}
},
"node_modules/@vaadin/text-field": {
- "version": "24.2.0",
- "resolved": "https://registry.npmjs.org/@vaadin/text-field/-/text-field-24.2.0.tgz",
- "integrity": "sha512-JJDYZ/HjUnQtFh2ylYDoTmrj4OxXc5aeDUyhgAzH7BpDkRR2+pOWupKUlgwwc1RUhz5sC14Pw0xgt68ZaMo/MA==",
+ "version": "24.2.1",
+ "resolved": "https://registry.npmjs.org/@vaadin/text-field/-/text-field-24.2.1.tgz",
+ "integrity": "sha512-g/AAzpLS/ogPILPP+vpB36ttStAtmaX34iMuZNgDhCdDePHt0j4akKmoM025XrQ1xJ4oRtmff09AbjGizIt+vg==",
"dev": true,
"dependencies": {
"@open-wc/dedupe-mixin": "^1.3.0",
"@polymer/polymer": "^3.0.0",
- "@vaadin/a11y-base": "~24.2.0",
- "@vaadin/component-base": "~24.2.0",
- "@vaadin/field-base": "~24.2.0",
- "@vaadin/input-container": "~24.2.0",
- "@vaadin/vaadin-lumo-styles": "~24.2.0",
- "@vaadin/vaadin-material-styles": "~24.2.0",
- "@vaadin/vaadin-themable-mixin": "~24.2.0",
+ "@vaadin/a11y-base": "~24.2.1",
+ "@vaadin/component-base": "~24.2.1",
+ "@vaadin/field-base": "~24.2.1",
+ "@vaadin/input-container": "~24.2.1",
+ "@vaadin/vaadin-lumo-styles": "~24.2.1",
+ "@vaadin/vaadin-material-styles": "~24.2.1",
+ "@vaadin/vaadin-themable-mixin": "~24.2.1",
"lit": "^2.0.0"
}
},
"node_modules/@vaadin/tooltip": {
- "version": "24.2.0",
- "resolved": "https://registry.npmjs.org/@vaadin/tooltip/-/tooltip-24.2.0.tgz",
- "integrity": "sha512-I9ItRzk1Xw5JE6L/8V+FIDs+T7pAcd7vnVq3nTb81SYQ2Op2QUPTYG1jd9hz7QuZgVURtqO5Kbr9NtDbqUJYNA==",
+ "version": "24.2.1",
+ "resolved": "https://registry.npmjs.org/@vaadin/tooltip/-/tooltip-24.2.1.tgz",
+ "integrity": "sha512-Rw75Ck1lBWgd2DIGj+rL9ynN4f+XH8VuGSFd/r+l0O0yRI6JUL57MDsx9DRyqA3lMnqf3aWvIU77hQspAHz6Bg==",
"dev": true,
"dependencies": {
"@polymer/polymer": "^3.0.0",
- "@vaadin/a11y-base": "~24.2.0",
- "@vaadin/component-base": "~24.2.0",
- "@vaadin/overlay": "~24.2.0",
- "@vaadin/vaadin-lumo-styles": "~24.2.0",
- "@vaadin/vaadin-material-styles": "~24.2.0",
- "@vaadin/vaadin-themable-mixin": "~24.2.0"
+ "@vaadin/a11y-base": "~24.2.1",
+ "@vaadin/component-base": "~24.2.1",
+ "@vaadin/overlay": "~24.2.1",
+ "@vaadin/vaadin-lumo-styles": "~24.2.1",
+ "@vaadin/vaadin-material-styles": "~24.2.1",
+ "@vaadin/vaadin-themable-mixin": "~24.2.1"
}
},
"node_modules/@vaadin/vaadin-development-mode-detector": {
@@ -3938,32 +3941,32 @@
"dev": true
},
"node_modules/@vaadin/vaadin-lumo-styles": {
- "version": "24.2.0",
- "resolved": "https://registry.npmjs.org/@vaadin/vaadin-lumo-styles/-/vaadin-lumo-styles-24.2.0.tgz",
- "integrity": "sha512-rXW6GUe7Q0p5mKClVeVsMTOSZG8yN+snEDfZumD41/Vdfo/UAuVsl/k+J43pr1ArWzHQG0sqIRqHYMGqI8X+8g==",
+ "version": "24.2.1",
+ "resolved": "https://registry.npmjs.org/@vaadin/vaadin-lumo-styles/-/vaadin-lumo-styles-24.2.1.tgz",
+ "integrity": "sha512-hEMHyCp0S1Au3xVV0xXSL3U9kqSYt6yjroUEgU/RpRiDxH+/1pbkUbF/VonZX9KTambcRVUtZNwdlihSU9JYpQ==",
"dev": true,
"dependencies": {
"@polymer/polymer": "^3.0.0",
- "@vaadin/component-base": "~24.2.0",
- "@vaadin/icon": "~24.2.0",
- "@vaadin/vaadin-themable-mixin": "~24.2.0"
+ "@vaadin/component-base": "~24.2.1",
+ "@vaadin/icon": "~24.2.1",
+ "@vaadin/vaadin-themable-mixin": "~24.2.1"
}
},
"node_modules/@vaadin/vaadin-material-styles": {
- "version": "24.2.0",
- "resolved": "https://registry.npmjs.org/@vaadin/vaadin-material-styles/-/vaadin-material-styles-24.2.0.tgz",
- "integrity": "sha512-wHo3JlbheGpetme65ucSVCgjYwbvRNvfndHsig0n+l8EuvuVDsIoTrNdK7jz2gYMQpco36HOoSDPuqJXXt2nGQ==",
+ "version": "24.2.1",
+ "resolved": "https://registry.npmjs.org/@vaadin/vaadin-material-styles/-/vaadin-material-styles-24.2.1.tgz",
+ "integrity": "sha512-Ux2tbblv/h3vM28NdSn9enCgtlLOyOqBdnbq73Z1kd0BBd9CfFBcJah5ijW/NxYrAaYXIdO2kWknwyRf4Kgrww==",
"dev": true,
"dependencies": {
"@polymer/polymer": "^3.0.0",
- "@vaadin/component-base": "~24.2.0",
- "@vaadin/vaadin-themable-mixin": "~24.2.0"
+ "@vaadin/component-base": "~24.2.1",
+ "@vaadin/vaadin-themable-mixin": "~24.2.1"
}
},
"node_modules/@vaadin/vaadin-themable-mixin": {
- "version": "24.2.0",
- "resolved": "https://registry.npmjs.org/@vaadin/vaadin-themable-mixin/-/vaadin-themable-mixin-24.2.0.tgz",
- "integrity": "sha512-5Y2KwOlVUad9adTLondWQi7MGyvCmldWHFf5QiBIm22yQY/AxLVhzbPXcwPRR7yw+usVCJCDKmOMJa5YrwyQ1g==",
+ "version": "24.2.1",
+ "resolved": "https://registry.npmjs.org/@vaadin/vaadin-themable-mixin/-/vaadin-themable-mixin-24.2.1.tgz",
+ "integrity": "sha512-W1QW4KnMER0KdervGOIetF9DnYEgnURW4MJ4IecAlw5H14MN92lTXcsz8R5CT9ANerABqCGPCF+F+t0L8qrfxw==",
"dev": true,
"dependencies": {
"@open-wc/dedupe-mixin": "^1.3.0",
@@ -4016,9 +4019,9 @@
"dev": true
},
"node_modules/acorn": {
- "version": "8.10.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
- "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==",
+ "version": "8.11.2",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz",
+ "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==",
"dev": true,
"bin": {
"acorn": "bin/acorn"
@@ -4333,9 +4336,9 @@
}
},
"node_modules/axios": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.1.tgz",
- "integrity": "sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==",
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.0.tgz",
+ "integrity": "sha512-EZ1DYihju9pwVB+jg67ogm+Tmqc6JmhamRN6I4Zt8DfZu5lbcQGw3ozH9lFejSJgs/ibaef3A9PMXPLeefFGJg==",
"dev": true,
"dependencies": {
"follow-redirects": "^1.15.0",
@@ -4711,9 +4714,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001551",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001551.tgz",
- "integrity": "sha512-vtBAez47BoGMMzlbYhfXrMV1kvRF2WP/lqiMuDu1Sb4EE4LKEgjopFDSRtZfdVnslNRpOqV/woE+Xgrwj6VQlg==",
+ "version": "1.0.30001555",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001555.tgz",
+ "integrity": "sha512-NzbUFKUnJ3DTcq6YyZB6+qqhfD112uR3uoEnkmfzm2wVzUNsFkU7AwBjKQ654Sp5cau0JxhFyRSn/tQZ+XfygA==",
"dev": true,
"funding": [
{
@@ -5147,9 +5150,9 @@
}
},
"node_modules/crypto-js": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz",
- "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw=="
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz",
+ "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q=="
},
"node_modules/css-what": {
"version": "6.1.0",
@@ -5628,9 +5631,13 @@
}
},
"node_modules/electron-log": {
- "version": "4.4.8",
- "resolved": "https://registry.npmjs.org/electron-log/-/electron-log-4.4.8.tgz",
- "integrity": "sha512-QQ4GvrXO+HkgqqEOYbi+DHL7hj5JM+nHi/j+qrN9zeeXVKy8ZABgbu4CnG+BBqDZ2+tbeq9tUC4DZfIWFU5AZA=="
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/electron-log/-/electron-log-5.0.0.tgz",
+ "integrity": "sha512-vB3akupmQvA8jAyNL9rULZtf6WoP8vsabjXsRtiqXS6/D37SwN/4LEyj4JD+9Bv6xoTcx/LrVnsIKEEWdq5ClQ==",
+ "engines": {
+ "electron": ">= 13",
+ "node": ">= 14"
+ }
},
"node_modules/electron-packager": {
"version": "17.1.2",
@@ -5897,9 +5904,9 @@
}
},
"node_modules/electron-to-chromium": {
- "version": "1.4.563",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.563.tgz",
- "integrity": "sha512-dg5gj5qOgfZNkPNeyKBZQAQitIQ/xwfIDmEQJHCbXaD9ebTZxwJXUsDYcBlAvZGZLi+/354l35J1wkmP6CqYaw==",
+ "version": "1.4.569",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.569.tgz",
+ "integrity": "sha512-LsrJjZ0IbVy12ApW3gpYpcmHS3iRxH4bkKOW98y1/D+3cvDUWGcbzbsFinfUS8knpcZk/PG/2p/RnkMCYN7PVg==",
"dev": true
},
"node_modules/electron-updater": {
@@ -6138,9 +6145,9 @@
}
},
"node_modules/eslint-plugin-lit": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-lit/-/eslint-plugin-lit-1.9.1.tgz",
- "integrity": "sha512-XFFVufVxYJwqRB9sLkDXB7SvV1xi9hrC4HRFEdX1h9+iZ3dm4x9uS7EuT9uaXs6zR3DEgcojia1F7pmvWbc4Gg==",
+ "version": "1.10.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-lit/-/eslint-plugin-lit-1.10.1.tgz",
+ "integrity": "sha512-3eH++xFpe6efd+TN6B9kW1coULdPyK+3fMNws378nbYQ/HiWIz0+jVcsaGVs9BbLt6kVkDxZmUGF4Ivx3BatkA==",
"dev": true,
"dependencies": {
"parse5": "^6.0.1",
@@ -6756,7 +6763,6 @@
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
"dev": true,
- "optional": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -6834,16 +6840,16 @@
}
},
"node_modules/get-intrinsic": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz",
- "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==",
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
+ "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
"dev": true,
"optional": true,
"dependencies": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
+ "function-bind": "^1.1.2",
"has-proto": "^1.0.1",
- "has-symbols": "^1.0.3"
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -7052,15 +7058,6 @@
"integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
"dev": true
},
- "node_modules/has": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz",
- "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==",
- "dev": true,
- "engines": {
- "node": ">= 0.4.0"
- }
- },
"node_modules/has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
@@ -7071,13 +7068,13 @@
}
},
"node_modules/has-property-descriptors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
- "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
+ "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
"dev": true,
"optional": true,
"dependencies": {
- "get-intrinsic": "^1.1.1"
+ "get-intrinsic": "^1.2.2"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -7109,6 +7106,18 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/hasown": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
+ "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/highcharts": {
"version": "11.1.0",
"resolved": "https://registry.npmjs.org/highcharts/-/highcharts-11.1.0.tgz",
@@ -7389,12 +7398,12 @@
}
},
"node_modules/is-core-module": {
- "version": "2.13.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz",
- "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==",
+ "version": "2.13.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
+ "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
"dev": true,
"dependencies": {
- "has": "^1.0.3"
+ "hasown": "^2.0.0"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -8871,9 +8880,9 @@
}
},
"node_modules/prosemirror-view": {
- "version": "1.32.1",
- "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.32.1.tgz",
- "integrity": "sha512-9SnB4HBgRczzTyIMZLPE1iszegL04hNfUyS8uPtP1RPxNM2NTCiIs8KwNsJU4nbZO9rxJTwVTv7Jm3zU4CR78A==",
+ "version": "1.32.2",
+ "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.32.2.tgz",
+ "integrity": "sha512-l2RQUGaiDI8SG8ZjWIkjT8yjGmNwdzMFMzQmxv/Kh8Vx+ICnz5R+K0mrOS16rhfjX7n2t4emU0goh7TerQC3mw==",
"dependencies": {
"prosemirror-model": "^1.16.0",
"prosemirror-state": "^1.0.0",
@@ -9461,9 +9470,9 @@
}
},
"node_modules/sass": {
- "version": "1.69.4",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.4.tgz",
- "integrity": "sha512-+qEreVhqAy8o++aQfCJwp0sklr2xyEzkm9Pp/Igu9wNPoe7EZEQ8X/MBvvXggI2ql607cxKg/RKOwDj6pp2XDA==",
+ "version": "1.69.5",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.5.tgz",
+ "integrity": "sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==",
"dependencies": {
"chokidar": ">=3.0.0 <4.0.0",
"immutable": "^4.0.0",
@@ -10208,6 +10217,12 @@
"resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
"integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA=="
},
+ "node_modules/undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+ "devOptional": true
+ },
"node_modules/universalify": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
diff --git a/package.json b/package.json
index 9b85a313..f62863ba 100644
--- a/package.json
+++ b/package.json
@@ -33,7 +33,7 @@
"dependencies": {
"@hapi/hapi": "21.3.2",
"@hapi/inert": "7.1.0",
- "@lit-labs/motion": "1.0.4",
+ "@lit-labs/motion": "1.0.6",
"@popperjs/core": "2.11.8",
"@tiptap/core": "2.0.4",
"@tiptap/extension-highlight": "2.0.4",
@@ -47,9 +47,9 @@
"bcryptjs": "2.4.3",
"buffer": "6.0.3",
"compressorjs": "1.2.1",
- "crypto-js": "4.1.1",
+ "crypto-js": "4.2.0",
"electron-dl": "3.5.1",
- "electron-log": "4.4.8",
+ "electron-log": "5.0.0",
"electron-store": "8.1.0",
"electron-updater": "6.1.4",
"emoji-picker-js": "https://github.com/Qortal/emoji-picker-js",
@@ -67,8 +67,8 @@
"prosemirror-schema-list": "1.3.0",
"prosemirror-state": "1.4.3",
"prosemirror-transform": "1.8.0",
- "prosemirror-view": "1.32.1",
- "sass": "1.69.4",
+ "prosemirror-view": "1.32.2",
+ "sass": "1.69.5",
"short-unique-id": "5.0.3"
},
"devDependencies": {
@@ -115,20 +115,20 @@
"@rollup/plugin-node-resolve": "15.2.3",
"@rollup/plugin-replace": "5.0.4",
"@rollup/plugin-terser": "0.4.4",
- "@vaadin/avatar": "24.2.0",
- "@vaadin/button": "24.2.0",
- "@vaadin/grid": "24.2.0",
- "@vaadin/icons": "24.2.0",
- "@vaadin/password-field": "24.2.0",
- "@vaadin/tooltip": "24.2.0",
+ "@vaadin/avatar": "24.2.1",
+ "@vaadin/button": "24.2.1",
+ "@vaadin/grid": "24.2.1",
+ "@vaadin/icons": "24.2.1",
+ "@vaadin/password-field": "24.2.1",
+ "@vaadin/tooltip": "24.2.1",
"@zip.js/zip.js": "2.7.30",
- "axios": "1.5.1",
+ "axios": "1.6.0",
"electron": "27.0.2",
"electron-builder": "24.6.4",
"electron-packager": "17.1.2",
"epml": "0.3.3",
"eslint": "8.52.0",
- "eslint-plugin-lit": "1.9.1",
+ "eslint-plugin-lit": "1.10.1",
"eslint-plugin-wc": "2.0.4",
"file-saver": "2.0.5",
"highcharts": "11.1.0",
diff --git a/plugins/plugins/core/components/qdn-action-types.js b/plugins/plugins/core/components/qdn-action-types.js
index 496aba42..dd354da0 100644
--- a/plugins/plugins/core/components/qdn-action-types.js
+++ b/plugins/plugins/core/components/qdn-action-types.js
@@ -65,4 +65,7 @@ export const SEND_LOCAL_NOTIFICATION = 'SEND_LOCAL_NOTIFICATION'
export const VOTE_ON_POLL= 'VOTE_ON_POLL'
//CREATE_POLL
-export const CREATE_POLL= 'CREATE_POLL'
\ No newline at end of file
+export const CREATE_POLL= 'CREATE_POLL'
+
+//GET_DAY_SUMMARY
+export const GET_DAY_SUMMARY = 'GET_DAY_SUMMARY'
diff --git a/plugins/plugins/core/qdn/browser/browser.src.js b/plugins/plugins/core/qdn/browser/browser.src.js
index 3225f33e..50da5978 100644
--- a/plugins/plugins/core/qdn/browser/browser.src.js
+++ b/plugins/plugins/core/qdn/browser/browser.src.js
@@ -130,8 +130,8 @@ class WebBrowser extends LitElement {
}
constructor() {
- super();
- this.url = 'about:blank';
+ super()
+ this.url = 'about:blank'
this.uid = new ShortUniqueId()
this.myAddress = window.parent.reduxStore.getState().app.selectedAddress
this._publicKey = { key: '', hasPubKey: false }
@@ -141,13 +141,13 @@ class WebBrowser extends LitElement {
this.identifier =
urlParams.get('identifier') != null
? urlParams.get('identifier')
- : null;
+ : null
this.path =
urlParams.get('path') != null
? (urlParams.get('path').startsWith('/') ? '' : '/') +
urlParams.get('path')
- : '';
- this.preview = urlParams.get('preview');
+ : ''
+ this.preview = urlParams.get('preview')
this.link = urlParams.get('link')
this.dev = urlParams.get('dev')
this.followedNames = []
@@ -189,7 +189,7 @@ class WebBrowser extends LitElement {
url: `/lists/blockedNames?apiKey=${this.getApiKey()}`,
})
- this.blockedNames = blockedNames;
+ this.blockedNames = blockedNames
setTimeout(
getBlockedNames,
this.config.user.nodeSettings.pingInterval
@@ -226,7 +226,7 @@ class WebBrowser extends LitElement {
this.rvnFeePerByte = 0.00001125
this.arrrWalletAddress = ''
- let configLoaded = false;
+ let configLoaded = false
parentEpml.ready().then(() => {
parentEpml.subscribe('selected_address', async (selectedAddress) => {
@@ -242,12 +242,12 @@ class WebBrowser extends LitElement {
this.arrrWallet = window.parent.reduxStore.getState().app.selectedAddress.arrrWallet
})
parentEpml.subscribe('config', (c) => {
- this.config = JSON.parse(c);
+ this.config = JSON.parse(c)
if (!configLoaded) {
- render();
- setTimeout(getFollowedNames, 1);
- setTimeout(getBlockedNames, 1);
- configLoaded = true;
+ render()
+ setTimeout(getFollowedNames, 1)
+ setTimeout(getBlockedNames, 1)
+ configLoaded = true
}
})
})
@@ -255,20 +255,20 @@ class WebBrowser extends LitElement {
async extractComponents(url) {
if (!url.startsWith("qortal://")) {
- return null;
+ return null
}
- url = url.replace(/^(qortal\:\/\/)/, "");
+ url = url.replace(/^(qortal\:\/\/)/, "")
if (url.includes("/")) {
- let parts = url.split("/");
- const service = parts[0].toUpperCase();
- parts.shift();
- const name = parts[0];
- parts.shift();
- let identifier;
+ let parts = url.split("/")
+ const service = parts[0].toUpperCase()
+ parts.shift()
+ const name = parts[0]
+ parts.shift()
+ let identifier
if (parts.length > 0) {
- identifier = parts[0]; // Do not shift yet
+ identifier = parts[0] // Do not shift yet
// Check if a resource exists with this service, name and identifier combination
let responseObj = await parentEpml.request('apiCall', {
url: `/arbitrary/resource/status/${service}/${name}/${identifier}?apiKey=${this.getApiKey()}`
@@ -276,29 +276,29 @@ class WebBrowser extends LitElement {
if (responseObj.totalChunkCount > 0) {
// Identifier exists, so don't include it in the path
- parts.shift();
+ parts.shift()
}
else {
- identifier = null;
+ identifier = null
}
}extractComponents
- const components = {};
- components["service"] = service;
- components["name"] = name;
- components["identifier"] = identifier;
- components["path"] = path;
- return components;
+ const components = {}
+ components["service"] = service
+ components["name"] = name
+ components["identifier"] = identifier
+ components["path"] = path
+ return components
}
- return null;
+ return null
}
async _handleKeyDown(e) {
if (e.key === 'Enter') {
const value = e.target.value
- let newQuery = value;
+ let newQuery = value
if (newQuery.endsWith('/')) {
- newQuery = newQuery.slice(0, -1);
+ newQuery = newQuery.slice(0, -1)
}
const res = await this.extractComponents(newQuery)
if (!res) return
@@ -320,9 +320,9 @@ class WebBrowser extends LitElement {
async linkOpenNewTab(link) {
const value = link
- let newQuery = value;
+ let newQuery = value
if (newQuery.endsWith('/')) {
- newQuery = newQuery.slice(0, -1);
+ newQuery = newQuery.slice(0, -1)
}
const res = await this.extractComponents(newQuery)
if (!res) return
@@ -441,7 +441,7 @@ class WebBrowser extends LitElement {
const url = `${nodeUrl}/transactions/unitfee?txType=JOIN_GROUP`
const response = await fetch(url)
if (!response.ok) {
- throw new Error('Error when fetching join fee');
+ throw new Error('Error when fetching join fee')
}
const data = await response.json()
@@ -455,21 +455,22 @@ class WebBrowser extends LitElement {
const url = `${nodeUrl}/transactions/unitfee?txType=DEPLOY_AT`
const response = await fetch(url)
if (!response.ok) {
- throw new Error('Error when fetching join fee');
+ throw new Error('Error when fetching join fee')
}
const data = await response.json()
const joinFee = (Number(data) / 1e8).toFixed(8)
return joinFee
}
- async getArbitraryFee (){
+
+ async getArbitraryFee (){
const timestamp = Date.now()
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}/transactions/unitfee?txType=ARBITRARY×tamp=${timestamp}`
const response = await fetch(url)
if (!response.ok) {
- throw new Error('Error when fetching arbitrary fee');
+ throw new Error('Error when fetching arbitrary fee')
}
const data = await response.json()
const arbitraryFee = (Number(data) / 1e8).toFixed(8)
@@ -478,14 +479,15 @@ class WebBrowser extends LitElement {
fee : Number(data),
feeToShow: arbitraryFee
}
- }
+ }
+
async sendQortFee() {
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}/transactions/unitfee?txType=PAYMENT`
const response = await fetch(url)
if (!response.ok) {
- throw new Error('Error when fetching join fee');
+ throw new Error('Error when fetching join fee')
}
const data = await response.json()
@@ -499,20 +501,21 @@ class WebBrowser extends LitElement {
const url = `${nodeUrl}/transactions/unitfee?txType=VOTE_ON_POLL`
const response = await fetch(url)
if (!response.ok) {
- throw new Error('Error when fetching vote fee');
+ throw new Error('Error when fetching vote fee')
}
const data = await response.json()
const joinFee = (Number(data) / 1e8).toFixed(8)
return joinFee
}
+
async unitCreatePollFee() {
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}/transactions/unitfee?txType=CREATE_POLL`
const response = await fetch(url)
if (!response.ok) {
- throw new Error('Error when fetching vote fee');
+ throw new Error('Error when fetching vote fee')
}
const data = await response.json()
@@ -528,10 +531,10 @@ class WebBrowser extends LitElement {
url: `/addresses/lastreference/${this.selectedAddress.address}`
})
return myRef
- };
+ }
const validateReceiver = async () => {
- let lastRef = await getLastRef();
+ let lastRef = await getLastRef()
let myTransaction = await makeTransactionRequest(lastRef)
const res = getTxnRequestResponse(myTransaction)
return res
@@ -581,10 +584,10 @@ class WebBrowser extends LitElement {
url: `/addresses/lastreference/${this.selectedAddress.address}`
})
return myRef
- };
+ }
const validateReceiver = async () => {
- let lastRef = await getLastRef();
+ let lastRef = await getLastRef()
let myTransaction = await makeTransactionRequest(lastRef)
const res = getTxnRequestResponse(myTransaction)
return res
@@ -642,10 +645,10 @@ class WebBrowser extends LitElement {
url: `/addresses/lastreference/${this.selectedAddress.address}`
})
return myRef
- };
+ }
const validateReceiver = async () => {
- let lastRef = await getLastRef();
+ let lastRef = await getLastRef()
let myTransaction = await makeTransactionRequest(lastRef)
const res = getTxnRequestResponse(myTransaction)
return res
@@ -689,6 +692,7 @@ class WebBrowser extends LitElement {
return voteRes
}
+
async _createPoll(pollName, pollDescription, options, pollOwnerAddress) {
const voteFeeInput = await this.unitCreatePollFee()
const getLastRef = async () => {
@@ -697,10 +701,10 @@ class WebBrowser extends LitElement {
url: `/addresses/lastreference/${this.selectedAddress.address}`
})
return myRef
- };
+ }
const validateReceiver = async () => {
- let lastRef = await getLastRef();
+ let lastRef = await getLastRef()
let myTransaction = await makeTransactionRequest(lastRef)
const res = getTxnRequestResponse(myTransaction)
return res
@@ -751,8 +755,8 @@ class WebBrowser extends LitElement {
}
firstUpdated() {
- this.changeTheme();
- this.changeLanguage();
+ this.changeTheme()
+ this.changeLanguage()
this.btcWallet = window.parent.reduxStore.getState().app.selectedAddress.btcWallet
this.ltcWallet = window.parent.reduxStore.getState().app.selectedAddress.ltcWallet
@@ -762,18 +766,18 @@ class WebBrowser extends LitElement {
this.arrrWallet = window.parent.reduxStore.getState().app.selectedAddress.arrrWallet
window.addEventListener('storage', () => {
- const checkLanguage = localStorage.getItem('qortalLanguage');
- const checkTheme = localStorage.getItem('qortalTheme');
+ const checkLanguage = localStorage.getItem('qortalLanguage')
+ const checkTheme = localStorage.getItem('qortalTheme')
- use(checkLanguage);
+ use(checkLanguage)
if (checkTheme === 'dark') {
- this.theme = 'dark';
+ this.theme = 'dark'
} else {
- this.theme = 'light';
+ this.theme = 'light'
}
- document.querySelector('html').setAttribute('theme', this.theme);
- });
+ document.querySelector('html').setAttribute('theme', this.theme)
+ })
if (!isElectron()) {
} else {
@@ -790,20 +794,20 @@ class WebBrowser extends LitElement {
event.data.length == 0 ||
event.data.action == null
) {
- return;
+ return
}
- let response = '{"error": "Request could not be fulfilled"}';
- let data = event.data;
+ let response = '{"error": "Request could not be fulfilled"}'
+ let data = event.data
switch (data.action) {
case actions.GET_USER_ACCOUNT: {
- let skip = false;
+ let skip = false
if (window.parent.reduxStore.getState().app.qAPPAutoAuth) {
- skip = true;
+ skip = true
}
- let res1;
+ let res1
if (!skip) {
res1 = await showModalAndWait(
actions.GET_USER_ACCOUNT,
@@ -811,21 +815,21 @@ class WebBrowser extends LitElement {
service: this.service,
name: this.name
}
- );
- };
+ )
+ }
if ((res1 && res1.action === 'accept') || skip) {
- let account = {};
- account['address'] = this.selectedAddress.address;
+ let account = {}
+ account['address'] = this.selectedAddress.address
account['publicKey'] =
- this.selectedAddress.base58PublicKey;
- response = JSON.stringify(account);
- break;
+ this.selectedAddress.base58PublicKey
+ response = JSON.stringify(account)
+ break
} else {
- const data = {};
+ const data = {}
const errorMsg = "User declined to share account details"
- data['error'] = errorMsg;
- response = JSON.stringify(data);
- break;
+ data['error'] = errorMsg
+ response = JSON.stringify(data)
+ break
}
}
@@ -834,89 +838,89 @@ class WebBrowser extends LitElement {
const { encryptedData, publicKey } = data
try {
- let data = {};
+ let data = {}
if (!encryptedData) {
const errorMsg = `Missing fields: encryptedData`
- data['error'] = errorMsg;
- response = JSON.stringify(data);
+ data['error'] = errorMsg
+ response = JSON.stringify(data)
break
}
const uint8Array = base64ToUint8Array(encryptedData)
- const startsWithQortalEncryptedData = uint8ArrayStartsWith(uint8Array, "qortalEncryptedData");
+ const startsWithQortalEncryptedData = uint8ArrayStartsWith(uint8Array, "qortalEncryptedData")
if (startsWithQortalEncryptedData) {
if (!publicKey) {
const errorMsg = `Missing fields: publicKey`
- data['error'] = errorMsg;
- response = JSON.stringify(data);
+ data['error'] = errorMsg
+ response = JSON.stringify(data)
break
}
const decryptedDataToBase64 = decryptDeprecatedSingle(uint8Array, publicKey)
- response = JSON.stringify(decryptedDataToBase64);
- break;
+ response = JSON.stringify(decryptedDataToBase64)
+ break
}
- const startsWithQortalGroupEncryptedData = uint8ArrayStartsWith(uint8Array, "qortalGroupEncryptedData");
+ const startsWithQortalGroupEncryptedData = uint8ArrayStartsWith(uint8Array, "qortalGroupEncryptedData")
if (startsWithQortalGroupEncryptedData) {
const decryptedData = decryptGroupData(encryptedData)
const decryptedDataToBase64 = uint8ArrayToBase64(decryptedData)
- response = JSON.stringify(decryptedDataToBase64);
- break;
+ response = JSON.stringify(decryptedDataToBase64)
+ break
}
const errorMsg = "Unable to decrypt"
- data['error'] = errorMsg;
- response = JSON.stringify(data);
+ data['error'] = errorMsg
+ response = JSON.stringify(data)
break
} catch (error) {
- const data = {};
+ const data = {}
const errorMsg = error.message || "Error in decrypting data"
- data['error'] = errorMsg;
- response = JSON.stringify(data);
+ data['error'] = errorMsg
+ response = JSON.stringify(data)
break
}
}
case actions.GET_LIST_ITEMS: {
- const requiredFields = ['list_name'];
- const missingFields = [];
+ const requiredFields = ['list_name']
+ const missingFields = []
requiredFields.forEach((field) => {
if (!data[field]) {
- missingFields.push(field);
+ missingFields.push(field)
}
- });
+ })
if (missingFields.length > 0) {
- const missingFieldsString = missingFields.join(', ');
+ const missingFieldsString = missingFields.join(', ')
const errorMsg = `Missing fields: ${missingFieldsString}`
- let data = {};
- data['error'] = errorMsg;
- response = JSON.stringify(data);
+ let data = {}
+ data['error'] = errorMsg
+ response = JSON.stringify(data)
break
}
- let skip = false;
+ let skip = false
if (window.parent.reduxStore.getState().app.qAPPAutoLists) {
- skip = true;
+ skip = true
}
- let res1;
+ let res1
if (!skip) {
res1 = await showModalAndWait(
actions.GET_LIST_ITEMS,
{
list_name: data.list_name
}
- );
- };
+ )
+ }
if (res1 && res1.action === 'accept' || skip) {
@@ -925,42 +929,43 @@ class WebBrowser extends LitElement {
const list = await parentEpml.request('apiCall', {
type: 'api',
url: `/lists/${data.list_name}?apiKey=${this.getApiKey()}`,
- });
- response = JSON.stringify(list);
+ })
+ response = JSON.stringify(list)
} catch (error) {
- const data = {};
+ const data = {}
const errorMsg = "Error in retrieving list"
- data['error'] = errorMsg;
- response = JSON.stringify(data);
+ data['error'] = errorMsg
+ response = JSON.stringify(data)
} finally {
- break;
+ break
}
} else {
- const data = {};
+ const data = {}
const errorMsg = "User declined to share list"
- data['error'] = errorMsg;
- response = JSON.stringify(data);
- break;
+ data['error'] = errorMsg
+ response = JSON.stringify(data)
+ break
}
- };
+ }
+
case actions.ADD_LIST_ITEMS: {
- const requiredFields = ['list_name', 'items'];
- const missingFields = [];
+ const requiredFields = ['list_name', 'items']
+ const missingFields = []
requiredFields.forEach((field) => {
if (!data[field]) {
- missingFields.push(field);
+ missingFields.push(field)
}
- });
+ })
if (missingFields.length > 0) {
- const missingFieldsString = missingFields.join(', ');
+ const missingFieldsString = missingFields.join(', ')
const errorMsg = `Missing fields: ${missingFieldsString}`
- let data = {};
- data['error'] = errorMsg;
- response = JSON.stringify(data);
+ let data = {}
+ data['error'] = errorMsg
+ response = JSON.stringify(data)
break
}
const items = data.items
@@ -971,16 +976,16 @@ class WebBrowser extends LitElement {
list_name: list_name,
items: items
}
- );
+ )
if (res && res.action === 'accept') {
try {
const body = {
items: items,
- };
+ }
- const bodyToString = JSON.stringify(body);
+ const bodyToString = JSON.stringify(body)
const data = await parentEpml.request('apiCall', {
type: 'api',
method: 'POST',
@@ -989,41 +994,42 @@ class WebBrowser extends LitElement {
headers: {
'Content-Type': 'application/json',
},
- });
+ })
response = data
} catch (error) {
- const data = {};
+ const data = {}
const errorMsg = "Error in adding to list"
- data['error'] = errorMsg;
- response = JSON.stringify(data);
+ data['error'] = errorMsg
+ response = JSON.stringify(data)
} finally {
- break;
+ break
}
} else {
- const data = {};
+ const data = {}
const errorMsg = "User declined add to list"
- data['error'] = errorMsg;
- response = JSON.stringify(data);
- break;
+ data['error'] = errorMsg
+ response = JSON.stringify(data)
+ break
}
- };
+ }
+
case actions.DELETE_LIST_ITEM: {
- const requiredFields = ['list_name', 'item'];
- const missingFields = [];
+ const requiredFields = ['list_name', 'item']
+ const missingFields = []
requiredFields.forEach((field) => {
if (!data[field]) {
- missingFields.push(field);
+ missingFields.push(field)
}
- });
+ })
if (missingFields.length > 0) {
- const missingFieldsString = missingFields.join(', ');
+ const missingFieldsString = missingFields.join(', ')
const errorMsg = `Missing fields: ${missingFieldsString}`
- let data = {};
- data['error'] = errorMsg;
- response = JSON.stringify(data);
+ let data = {}
+ data['error'] = errorMsg
+ response = JSON.stringify(data)
break
}
const item = data.item
@@ -1034,16 +1040,16 @@ class WebBrowser extends LitElement {
list_name: list_name,
item: item
}
- );
+ )
if (res && res.action === 'accept') {
try {
const body = {
items: [item],
- };
+ }
- const bodyToString = JSON.stringify(body);
+ const bodyToString = JSON.stringify(body)
const data = await parentEpml.request('apiCall', {
type: 'api',
@@ -1053,53 +1059,52 @@ class WebBrowser extends LitElement {
headers: {
'Content-Type': 'application/json',
},
- });
+ })
response = data
} catch (error) {
- const data = {};
+ const data = {}
const errorMsg = "Error in adding to list"
- data['error'] = errorMsg;
- response = JSON.stringify(data);
+ data['error'] = errorMsg
+ response = JSON.stringify(data)
} finally {
- break;
+ break
}
} else {
- const data = {};
+ const data = {}
const errorMsg = "User declined add to list"
- data['error'] = errorMsg;
- response = JSON.stringify(data);
- break;
+ data['error'] = errorMsg
+ response = JSON.stringify(data)
+ break
}
- };
-
+ }
case actions.LINK_TO_QDN_RESOURCE:
case actions.QDN_RESOURCE_DISPLAYED:
// Links are handled by the core, but the UI also listens for these actions in order to update the address bar.
// Note: don't update this.url here, as we don't want to force reload the iframe each time.
if (this.preview != null && this.preview.length > 0) {
- this.displayUrl = translate("appspage.schange40");
- return;
+ this.displayUrl = translate("appspage.schange40")
+ return
}
- let url = 'qortal://' + data.service + '/' + data.name;
+ let url = 'qortal://' + data.service + '/' + data.name
this.path =
data.path != null
? (data.path.startsWith('/') ? '' : '/') + data.path
- : null;
+ : null
if (
data.identifier != null &&
data.identifier != '' &&
data.identifier != 'default'
)
- url = url.concat('/' + data.identifier);
+ url = url.concat('/' + data.identifier)
if (this.path != null && this.path != '/')
- url = url.concat(this.path);
- this.name = data.name;
- this.service = data.service;
- this.identifier = data.identifier;
- this.displayUrl = url;
+ url = url.concat(this.path)
+ this.name = data.name
+ this.service = data.service
+ this.identifier = data.identifier
+ this.displayUrl = url
const frame = window.frameElement
let tabId = ""
@@ -1116,7 +1121,8 @@ class WebBrowser extends LitElement {
service: data.service,
id: tabId ? tabId : ""
}))
- return;
+ return
+
case actions.SET_TAB_NOTIFICATIONS: {
const { count } = data
if (isNaN(count)) {
@@ -1139,58 +1145,58 @@ class WebBrowser extends LitElement {
case actions.PUBLISH_QDN_RESOURCE: {
// optional fields: encrypt:boolean recipientPublicKey:string
- const requiredFields = ['service', 'name'];
- const missingFields = [];
+ const requiredFields = ['service', 'name']
+ const missingFields = []
requiredFields.forEach((field) => {
if (!data[field]) {
- missingFields.push(field);
+ missingFields.push(field)
}
- });
+ })
if (missingFields.length > 0) {
- const missingFieldsString = missingFields.join(', ');
+ const missingFieldsString = missingFields.join(', ')
const errorMsg = `Missing fields: ${missingFieldsString}`
- let data = {};
- data['error'] = errorMsg;
- response = JSON.stringify(data);
+ let data = {}
+ data['error'] = errorMsg
+ response = JSON.stringify(data)
break
}
if (!data.file && !data.data64) {
- let data = {};
- data['error'] = "No data or file was submitted";
- response = JSON.stringify(data);
+ let data = {}
+ data['error'] = "No data or file was submitted"
+ response = JSON.stringify(data)
break
}
// Use "default" if user hasn't specified an identifer
- const service = data.service;
- const name = data.name;
- let identifier = data.identifier;
- let data64 = data.data64;
- const filename = data.filename;
- const title = data.title;
- const description = data.description;
- const category = data.category;
- const tag1 = data.tag1;
- const tag2 = data.tag2;
- const tag3 = data.tag3;
- const tag4 = data.tag4;
- const tag5 = data.tag5;
+ const service = data.service
+ const name = data.name
+ let identifier = data.identifier
+ let data64 = data.data64
+ const filename = data.filename
+ const title = data.title
+ const description = data.description
+ const category = data.category
+ const tag1 = data.tag1
+ const tag2 = data.tag2
+ const tag3 = data.tag3
+ const tag4 = data.tag4
+ const tag5 = data.tag5
let feeAmount = null
if (data.identifier == null) {
- identifier = 'default';
+ identifier = 'default'
}
if (data.encrypt && (!data.publicKeys || (Array.isArray(data.publicKeys) && data.publicKeys.length === 0))) {
- let data = {};
- data['error'] = "Encrypting data requires public keys";
- response = JSON.stringify(data);
+ let data = {}
+ data['error'] = "Encrypting data requires public keys"
+ response = JSON.stringify(data)
break
}
if (!data.encrypt && data.service.endsWith("_PRIVATE")) {
- let data = {};
- data['error'] = "Only encrypted data can go into private services";
- response = JSON.stringify(data);
+ let data = {}
+ data['error'] = "Only encrypted data can go into private services"
+ response = JSON.stringify(data)
break
}
if (data.file) {
@@ -1209,18 +1215,15 @@ class WebBrowser extends LitElement {
}
} catch (error) {
- const obj = {};
- const errorMsg = error.message || 'Upload failed due to failed encryption';
- obj['error'] = errorMsg;
- response = JSON.stringify(obj);
+ const obj = {}
+ const errorMsg = error.message || 'Upload failed due to failed encryption'
+ obj['error'] = errorMsg
+ response = JSON.stringify(obj)
break
}
}
-
-
-
const res2 = await showModalAndWait(
actions.PUBLISH_QDN_RESOURCE,
{
@@ -1230,14 +1233,14 @@ class WebBrowser extends LitElement {
encrypt: data.encrypt,
feeAmount: getArbitraryFee.feeToShow
}
- );
+ )
if (res2.action === 'accept') {
if (data.file && !data.encrypt) {
data64 = await fileToBase64(data.file)
}
- const worker = new WebWorker();
+ const worker = new WebWorker()
try {
- this.loader.show();
+ this.loader.show()
const resPublish = await publishData({
registeredName: encodeURIComponent(name),
file: data64,
@@ -1260,65 +1263,66 @@ class WebBrowser extends LitElement {
apiVersion: 2,
withFee: res2.userData.isWithFee === true ? true : false,
feeAmount: feeAmount
- });
+ })
- response = JSON.stringify(resPublish);
- worker.terminate();
+ response = JSON.stringify(resPublish)
+ worker.terminate()
} catch (error) {
- worker.terminate();
- const obj = {};
- const errorMsg = error.message || 'Upload failed';
- obj['error'] = errorMsg;
- response = JSON.stringify(obj);
- console.error(error);
- break;
+ worker.terminate()
+ const obj = {}
+ const errorMsg = error.message || 'Upload failed'
+ obj['error'] = errorMsg
+ response = JSON.stringify(obj)
+ console.error(error)
+ break
} finally {
- this.loader.hide();
+ this.loader.hide()
}
} else if (res2.action === 'reject') {
- response = '{"error": "User declined request"}';
+ response = '{"error": "User declined request"}'
}
// Params: data.service, data.name, data.identifier, data.data64,
// TODO: prompt user for publish. If they confirm, call `POST /arbitrary/{service}/{name}/{identifier}/base64` and sign+process transaction
// then set the response string from the core to the `response` variable (defined above)
// If they decline, send back JSON that includes an `error` key, such as `{"error": "User declined request"}`
- break;
+ break
}
+
case actions.PUBLISH_MULTIPLE_QDN_RESOURCES: {
- const requiredFields = ['resources'];
- const missingFields = [];
+ const requiredFields = ['resources']
+ const missingFields = []
let feeAmount = null
requiredFields.forEach((field) => {
if (!data[field]) {
- missingFields.push(field);
+ missingFields.push(field)
}
- });
+ })
if (missingFields.length > 0) {
- const missingFieldsString = missingFields.join(', ');
+ const missingFieldsString = missingFields.join(', ')
const errorMsg = `Missing fields: ${missingFieldsString}`
- let data = {};
- data['error'] = errorMsg;
- response = JSON.stringify(data);
+ let data = {}
+ data['error'] = errorMsg
+ response = JSON.stringify(data)
break
}
const resources = data.resources
if (!Array.isArray(resources)) {
- let data = {};
+ let data = {}
data['error'] = "Invalid data"
- response = JSON.stringify(data);
+ response = JSON.stringify(data)
break
}
if (resources.length === 0) {
- let data = {};
+ let data = {}
data['error'] = "No resources to publish"
- response = JSON.stringify(data);
+ response = JSON.stringify(data)
break
}
if (data.encrypt && (!data.publicKeys || (Array.isArray(data.publicKeys) && data.publicKeys.length === 0))) {
- let data = {};
- data['error'] = "Encrypting data requires public keys";
- response = JSON.stringify(data);
+ let data = {}
+ data['error'] = "Encrypting data requires public keys"
+ response = JSON.stringify(data)
break
}
const getArbitraryFee = await this.getArbitraryFee()
@@ -1330,25 +1334,25 @@ class WebBrowser extends LitElement {
encrypt: data.encrypt,
feeAmount: getArbitraryFee.feeToShow
}
- );
+ )
if (res2.action === 'reject') {
- response = '{"error": "User declined request"}';
+ response = '{"error": "User declined request"}'
break
}
const resourcesMap = resources.map(async (resource) => {
- const requiredFields = ['service', 'name'];
- const missingFields = [];
+ const requiredFields = ['service', 'name']
+ const missingFields = []
requiredFields.forEach((field) => {
if (!resource[field]) {
- missingFields.push(field);
+ missingFields.push(field)
}
- });
+ })
if (missingFields.length > 0) {
- const missingFieldsString = missingFields.join(', ');
+ const missingFieldsString = missingFields.join(', ')
const errorMsg = `Missing fields: ${missingFieldsString}`
throw new Error(errorMsg)
}
@@ -1358,21 +1362,21 @@ class WebBrowser extends LitElement {
throw new Error('No data or file was submitted')
}
- const service = resource.service;
- const name = resource.name;
- let identifier = resource.identifier;
- let data64 = resource.data64;
- const filename = resource.filename;
- const title = resource.title;
- const description = resource.description;
- const category = resource.category;
- const tag1 = resource.tag1;
- const tag2 = resource.tag2;
- const tag3 = resource.tag3;
- const tag4 = resource.tag4;
- const tag5 = resource.tag5;
+ const service = resource.service
+ const name = resource.name
+ let identifier = resource.identifier
+ let data64 = resource.data64
+ const filename = resource.filename
+ const title = resource.title
+ const description = resource.description
+ const category = resource.category
+ const tag1 = resource.tag1
+ const tag2 = resource.tag2
+ const tag3 = resource.tag3
+ const tag4 = resource.tag4
+ const tag5 = resource.tag5
if (resource.identifier == null) {
- identifier = 'default';
+ identifier = 'default'
}
if (!data.encrypt && service.endsWith("_PRIVATE")) {
@@ -1403,8 +1407,7 @@ class WebBrowser extends LitElement {
data64 = await fileToBase64(resource.file)
}
-
- const worker = new WebWorker();
+ const worker = new WebWorker()
try {
const resPublish = await publishData({
@@ -1429,13 +1432,13 @@ class WebBrowser extends LitElement {
apiVersion: 2,
withFee: res2.userData.isWithFee === true ? true : false,
feeAmount: feeAmount
- });
+ })
- worker.terminate();
+ worker.terminate()
return resPublish
} catch (error) {
- worker.terminate();
- const errorMsg = error.message || 'Upload failed';
+ worker.terminate()
+ const errorMsg = error.message || 'Upload failed'
throw new Error(errorMsg)
}
@@ -1443,147 +1446,152 @@ class WebBrowser extends LitElement {
})
try {
- this.loader.show();
- const results = await Promise.all(resourcesMap);
- response = JSON.stringify(results);
- this.loader.hide();
+ this.loader.show()
+ const results = await Promise.all(resourcesMap)
+ response = JSON.stringify(results)
+ this.loader.hide()
break
// handle successful results
} catch (error) {
- const obj = {};
- const errorMsg = error.message || 'Upload failed';
- obj['error'] = errorMsg;
- response = JSON.stringify(obj);
- this.loader.hide();
- break;
+ const obj = {}
+ const errorMsg = error.message || 'Upload failed'
+ obj['error'] = errorMsg
+ response = JSON.stringify(obj)
+ this.loader.hide()
+ break
}
// Params: data.service, data.name, data.identifier, data.data64,
// TODO: prompt user for publish. If they confirm, call `POST /arbitrary/{service}/{name}/{identifier}/base64` and sign+process transaction
// then set the response string from the core to the `response` variable (defined above)
// If they decline, send back JSON that includes an `error` key, such as `{"error": "User declined request"}`
- break;
+ break
}
+
case actions.VOTE_ON_POLL: {
- const requiredFields = ['pollName', 'optionIndex'];
- const missingFields = [];
+ const requiredFields = ['pollName', 'optionIndex']
+ const missingFields = []
requiredFields.forEach((field) => {
if (!data[field]) {
- missingFields.push(field);
+ missingFields.push(field)
}
- });
+ })
if (missingFields.length > 0) {
- const missingFieldsString = missingFields.join(', ');
+ const missingFieldsString = missingFields.join(', ')
const errorMsg = `Missing fields: ${missingFieldsString}`
- let data = {};
- data['error'] = errorMsg;
- response = JSON.stringify(data);
+ let data = {}
+ data['error'] = errorMsg
+ response = JSON.stringify(data)
break
}
- const pollName = data.pollName;
- const optionIndex = data.optionIndex;
-
+
+ const pollName = data.pollName
+ const optionIndex = data.optionIndex
let pollInfo = null
try {
pollInfo = await parentEpml.request("apiCall", {
type: "api",
url: `/polls/${pollName}`,
- });
+ })
} catch (error) {
- const errorMsg = (error && error.message) || 'Poll not found';
- let obj = {};
- obj['error'] = errorMsg;
- response = JSON.stringify(obj);
+ const errorMsg = (error && error.message) || 'Poll not found'
+ let obj = {}
+ obj['error'] = errorMsg
+ response = JSON.stringify(obj)
break
}
if (!pollInfo || pollInfo.error) {
- const errorMsg = (pollInfo && pollInfo.message) || 'Poll not found';
- let obj = {};
- obj['error'] = errorMsg;
- response = JSON.stringify(obj);
+ const errorMsg = (pollInfo && pollInfo.message) || 'Poll not found'
+ let obj = {}
+ obj['error'] = errorMsg
+ response = JSON.stringify(obj)
break
}
try {
- this.loader.show();
+ this.loader.show()
const resVoteOnPoll = await this._voteOnPoll(pollName, optionIndex)
- response = JSON.stringify(resVoteOnPoll);
+ response = JSON.stringify(resVoteOnPoll)
} catch (error) {
- const obj = {};
- const errorMsg = error.message || 'Failed to vote on the poll.';
- obj['error'] = errorMsg;
- response = JSON.stringify(obj);
+ const obj = {}
+ const errorMsg = error.message || 'Failed to vote on the poll.'
+ obj['error'] = errorMsg
+ response = JSON.stringify(obj)
} finally {
- this.loader.hide();
+ this.loader.hide()
}
- break;
+ break
}
+
case actions.CREATE_POLL: {
- const requiredFields = ['pollName', 'pollDescription', 'pollOptions', 'pollOwnerAddress'];
- const missingFields = [];
+ const requiredFields = ['pollName', 'pollDescription', 'pollOptions', 'pollOwnerAddress']
+ const missingFields = []
requiredFields.forEach((field) => {
if (!data[field]) {
- missingFields.push(field);
+ missingFields.push(field)
}
- });
+ })
if (missingFields.length > 0) {
- const missingFieldsString = missingFields.join(', ');
+ const missingFieldsString = missingFields.join(', ')
const errorMsg = `Missing fields: ${missingFieldsString}`
- let data = {};
- data['error'] = errorMsg;
- response = JSON.stringify(data);
+ let data = {}
+ data['error'] = errorMsg
+ response = JSON.stringify(data)
break
}
- const pollName = data.pollName;
+
+ const pollName = data.pollName
const pollDescription = data.pollDescription
const pollOptions = data.pollOptions
const pollOwnerAddress = data.pollOwnerAddress
try {
- this.loader.show();
+ this.loader.show()
const resCreatePoll = await this._createPoll(pollName, pollDescription, pollOptions, pollOwnerAddress)
- response = JSON.stringify(resCreatePoll);
+ response = JSON.stringify(resCreatePoll)
} catch (error) {
- const obj = {};
- const errorMsg = error.message || 'Failed to created poll.';
- obj['error'] = errorMsg;
- response = JSON.stringify(obj);
+ const obj = {}
+ const errorMsg = error.message || 'Failed to created poll.'
+ obj['error'] = errorMsg
+ response = JSON.stringify(obj)
} finally {
- this.loader.hide();
+ this.loader.hide()
}
- break;
+ break
}
+
case actions.OPEN_NEW_TAB: {
if(!data.qortalLink){
- const obj = {};
- const errorMsg = 'Please enter a qortal link - qortal://...';
- obj['error'] = errorMsg;
- response = JSON.stringify(obj);
+ const obj = {}
+ const errorMsg = 'Please enter a qortal link - qortal://...'
+ obj['error'] = errorMsg
+ response = JSON.stringify(obj)
break
}
try {
await this.linkOpenNewTab(data.qortalLink)
response = true
- break;
+ break
} catch (error) {
console.log('error', error)
- const obj = {};
- const errorMsg = "Invalid qortal link";
- obj['error'] = errorMsg;
- response = JSON.stringify(obj);
- break;
+ const obj = {}
+ const errorMsg = "Invalid qortal link"
+ obj['error'] = errorMsg
+ response = JSON.stringify(obj)
+ break
}
}
+
case actions.NOTIFICATIONS_PERMISSION: {
try {
@@ -1592,32 +1600,33 @@ class WebBrowser extends LitElement {
{
name: this.name
}
- );
+ )
if (res.action === 'accept'){
this.addAppToNotificationList(this.name)
response = true
- break;
+ break
} else {
response = false
- break;
+ break
}
} catch (error) {
- break;
+ break
}
}
+
case actions.SEND_LOCAL_NOTIFICATION: {
const {title, url, icon, message} = data
try {
const id = `appNotificationList-${this.selectedAddress.address}`
- const checkData = localStorage.getItem(id) ? JSON.parse(localStorage.getItem(id)) : null;
+ const checkData = localStorage.getItem(id) ? JSON.parse(localStorage.getItem(id)) : null
if(!checkData || !checkData[this.name]) throw new Error('App not on permission list')
const appInfo = checkData[this.name]
const lastNotification = appInfo.lastNotification
const interval = appInfo.interval
if (lastNotification && interval) {
- const timeDifference = Date.now() - lastNotification;
+ const timeDifference = Date.now() - lastNotification
if (timeDifference > interval) {
parentEpml.request('showNotification', {
@@ -1625,7 +1634,7 @@ class WebBrowser extends LitElement {
})
response = true
this.updateLastNotification(id, this.name)
- break;
+ break
} else {
throw new Error(`duration until another notification can be sent: ${interval - timeDifference}`)
}
@@ -1635,31 +1644,31 @@ class WebBrowser extends LitElement {
})
response = true
this.updateLastNotification(id)
- break;
+ break
} else {
throw new Error(`invalid data`)
}
} catch (error) {
- const obj = {};
- const errorMsg = error.message || "error in pushing notification";
- obj['error'] = errorMsg;
- response = JSON.stringify(obj);
- break;
+ const obj = {}
+ const errorMsg = error.message || "error in pushing notification"
+ obj['error'] = errorMsg
+ response = JSON.stringify(obj)
+ break
}
}
case actions.SEND_CHAT_MESSAGE: {
- const message = data.message;
- const recipient = data.destinationAddress;
- const groupId = data.groupId;
+ const message = data.message
+ const recipient = data.destinationAddress
+ const groupId = data.groupId
const isRecipient = groupId ? false : true
const sendMessage = async (messageText, chatReference) => {
- let _reference = new Uint8Array(64);
- window.crypto.getRandomValues(_reference);
- let reference = window.parent.Base58.encode(_reference);
+ let _reference = new Uint8Array(64)
+ window.crypto.getRandomValues(_reference)
+ let reference = window.parent.Base58.encode(_reference)
const sendMessageRequest = async () => {
let chatResponse
@@ -1679,7 +1688,7 @@ class WebBrowser extends LitElement {
isEncrypted: 1,
isText: 1
}
- });
+ })
}
@@ -1700,85 +1709,85 @@ class WebBrowser extends LitElement {
isEncrypted: 0,
isText: 1
}
- });
+ })
}
const msgResponse = await _computePow(chatResponse)
- return msgResponse;
- };
+ return msgResponse
+ }
const _computePow = async (chatBytes) => {
- const difficulty = 8;
+ const difficulty = 8
const path = window.parent.location.origin + '/memory-pow/memory-pow.wasm.full'
- const worker = new WebWorkerChat();
- let nonce = null;
- let chatBytesArray = null;
+ const worker = new WebWorkerChat()
+ let nonce = null
+ let chatBytesArray = null
await new Promise((res) => {
- worker.postMessage({ chatBytes, path, difficulty });
+ worker.postMessage({ chatBytes, path, difficulty })
worker.onmessage = e => {
- chatBytesArray = e.data.chatBytesArray;
- nonce = e.data.nonce;
- res();
+ chatBytesArray = e.data.chatBytesArray
+ nonce = e.data.nonce
+ res()
}
- });
+ })
let _response = await parentEpml.request('sign_chat', {
nonce: this.selectedAddress.nonce,
chatBytesArray: chatBytesArray,
chatNonce: nonce,
apiVersion: 2
- });
+ })
- const chatResponse = getSendChatResponse(_response);
- return chatResponse;
- };
+ const chatResponse = getSendChatResponse(_response)
+ return chatResponse
+ }
const getSendChatResponse = (res) => {
if (res.signature) {
return res
} else if (res.error) {
- throw new Error(res.message);
+ throw new Error(res.message)
} else {
- throw new Error('ERROR: Could not send message');
+ throw new Error('ERROR: Could not send message')
}
- };
+ }
- const chatResponse = await sendMessageRequest();
- return chatResponse;
+ const chatResponse = await sendMessageRequest()
+ return chatResponse
}
const result = await showModalAndWait(
actions.SEND_CHAT_MESSAGE
- );
+ )
if (result.action === "accept") {
- let hasPublicKey = true;
+ let hasPublicKey = true
if (isRecipient) {
const res = await parentEpml.request('apiCall', {
type: 'api',
url: `/addresses/publickey/${recipient}`
- });
+ })
if (res.error === 102) {
this._publicKey.key = ''
this._publicKey.hasPubKey = false
- hasPublicKey = false;
+ hasPublicKey = false
} else if (res !== false) {
this._publicKey.key = res
this._publicKey.hasPubKey = true
} else {
this._publicKey.key = ''
this._publicKey.hasPubKey = false
- hasPublicKey = false;
+ hasPublicKey = false
}
}
if (!hasPublicKey && isRecipient) {
- response = '{"error": "Cannot send an encrypted message to this user since they do not have their publickey on chain."}';
+ response = '{"error": "Cannot send an encrypted message to this user since they do not have their publickey on chain."}'
break
}
@@ -1805,64 +1814,64 @@ class WebBrowser extends LitElement {
images: [''],
repliedTo: '',
version: 3
- };
+ }
- const stringifyMessageObject = JSON.stringify(messageObject);
+ const stringifyMessageObject = JSON.stringify(messageObject)
// if (this.balance < 4) {
// this.myTrimmedMeassage = ''
// this.myTrimmedMeassage = stringifyMessageObject
// this.shadowRoot.getElementById('confirmDialog').open()
// } else {
- // this.sendMessage(stringifyMessageObject, typeMessage);
+ // this.sendMessage(stringifyMessageObject, typeMessage)
// }
try {
- this.loader.show();
- const msgResponse = await sendMessage(stringifyMessageObject);
- response = msgResponse;
+ this.loader.show()
+ const msgResponse = await sendMessage(stringifyMessageObject)
+ response = msgResponse
} catch (error) {
- console.error(error);
+ console.error(error)
if (error.message) {
- let data = {};
- data['error'] = error.message;
- response = JSON.stringify(data);
+ let data = {}
+ data['error'] = error.message
+ response = JSON.stringify(data)
break
}
- response = '{"error": "Request could not be fulfilled"}';
+ response = '{"error": "Request could not be fulfilled"}'
} finally {
- this.loader.hide();
+ this.loader.hide()
}
} else {
- response = '{"error": "User declined request"}';
+ response = '{"error": "User declined request"}'
}
- // this.loader.show();
+ // this.loader.show()
// Params: data.groupId, data.destinationAddress, data.message
// TODO: prompt user to send chat message. If they confirm, sign+process a CHAT transaction
// then set the response string from the core to the `response` variable (defined above)
// If they decline, send back JSON that includes an `error` key, such as `{"error": "User declined request"}`
- break;
+ break
}
case actions.JOIN_GROUP: {
- const requiredFields = ['groupId'];
- const missingFields = [];
+ const requiredFields = ['groupId']
+ const missingFields = []
requiredFields.forEach((field) => {
if (!data[field]) {
- missingFields.push(field);
+ missingFields.push(field)
}
- });
+ })
if (missingFields.length > 0) {
- const missingFieldsString = missingFields.join(', ');
+ const missingFieldsString = missingFields.join(', ')
const errorMsg = `Missing fields: ${missingFieldsString}`
- let data = {};
- data['error'] = errorMsg;
- response = JSON.stringify(data);
+ let data = {}
+ data['error'] = errorMsg
+ response = JSON.stringify(data)
break
}
- const groupId = data.groupId;
+ const groupId = data.groupId
let groupInfo = null
@@ -1870,60 +1879,61 @@ class WebBrowser extends LitElement {
groupInfo = await parentEpml.request("apiCall", {
type: "api",
url: `/groups/${groupId}`,
- });
+ })
} catch (error) {
- const errorMsg = (error && error.message) || 'Group not found';
- let obj = {};
- obj['error'] = errorMsg;
- response = JSON.stringify(obj);
+ const errorMsg = (error && error.message) || 'Group not found'
+ let obj = {}
+ obj['error'] = errorMsg
+ response = JSON.stringify(obj)
break
}
if (!groupInfo || groupInfo.error) {
- const errorMsg = (groupInfo && groupInfo.message) || 'Group not found';
- let obj = {};
- obj['error'] = errorMsg;
- response = JSON.stringify(obj);
+ const errorMsg = (groupInfo && groupInfo.message) || 'Group not found'
+ let obj = {}
+ obj['error'] = errorMsg
+ response = JSON.stringify(obj)
break
}
try {
- this.loader.show();
+ this.loader.show()
const resJoinGroup = await this._joinGroup(groupId, groupInfo.groupName)
- response = JSON.stringify(resJoinGroup);
+ response = JSON.stringify(resJoinGroup)
} catch (error) {
- const obj = {};
- const errorMsg = error.message || 'Failed to join the group.';
- obj['error'] = errorMsg;
- response = JSON.stringify(obj);
+ const obj = {}
+ const errorMsg = error.message || 'Failed to join the group.'
+ obj['error'] = errorMsg
+ response = JSON.stringify(obj)
} finally {
- this.loader.hide();
+ this.loader.hide()
}
// Params: data.groupId
// TODO: prompt user to join group. If they confirm, sign+process a JOIN_GROUP transaction
// then set the response string from the core to the `response` variable (defined above)
// If they decline, send back JSON that includes an `error` key, such as `{"error": "User declined request"}`
- break;
+ break
}
+
case actions.SAVE_FILE: {
try {
- const requiredFields = ['filename', 'blob'];
- const missingFields = [];
+ const requiredFields = ['filename', 'blob']
+ const missingFields = []
requiredFields.forEach((field) => {
if (!data[field]) {
- missingFields.push(field);
+ missingFields.push(field)
}
- });
+ })
if (missingFields.length > 0) {
- const missingFieldsString = missingFields.join(', ');
+ const missingFieldsString = missingFields.join(', ')
const errorMsg = `Missing fields: ${missingFieldsString}`
- let data = {};
- data['error'] = errorMsg;
- response = JSON.stringify(data);
+ let data = {}
+ data['error'] = errorMsg
+ response = JSON.stringify(data)
break
}
@@ -1937,10 +1947,10 @@ class WebBrowser extends LitElement {
{
filename
}
- );
+ )
if (res.action === 'reject') {
- response = '{"error": "User declined request"}';
+ response = '{"error": "User declined request"}'
break
}
@@ -1953,17 +1963,17 @@ class WebBrowser extends LitElement {
const fileExtension = mimeToExtensionMap[mimeType] || backupExention
let fileHandleOptions = {}
if (!mimeType) {
- const obj = {};
- const errorMsg = 'A mimeType could not be derived';
- obj['error'] = errorMsg;
- response = JSON.stringify(obj);
+ const obj = {}
+ const errorMsg = 'A mimeType could not be derived'
+ obj['error'] = errorMsg
+ response = JSON.stringify(obj)
break
}
if (!fileExtension) {
- const obj = {};
- const errorMsg = 'A file extension could not be derived';
- obj['error'] = errorMsg;
- response = JSON.stringify(obj);
+ const obj = {}
+ const errorMsg = 'A file extension could not be derived'
+ obj['error'] = errorMsg
+ response = JSON.stringify(obj)
break
}
if (fileExtension && mimeType) {
@@ -1994,78 +2004,77 @@ class WebBrowser extends LitElement {
writeFile(fileHandle, blob).then(() => console.log("FILE SAVED"))
} catch (error) {
if (error.name === 'AbortError') {
- const obj = {};
- const errorMsg = 'User declined the download';
- obj['error'] = errorMsg;
- response = JSON.stringify(obj);
+ const obj = {}
+ const errorMsg = 'User declined the download'
+ obj['error'] = errorMsg
+ response = JSON.stringify(obj)
break
}
FileSaver.saveAs(blob, filename)
}
- response = JSON.stringify(true);
+ response = JSON.stringify(true)
} catch (error) {
- const obj = {};
- const errorMsg = error.message || 'Failed to initiate download';
- obj['error'] = errorMsg;
- response = JSON.stringify(obj);
+ const obj = {}
+ const errorMsg = error.message || 'Failed to initiate download'
+ obj['error'] = errorMsg
+ response = JSON.stringify(obj)
}
- break;
+ break
}
case 'DEPLOY_AT': {
- const requiredFields = ['name', 'description', 'tags', 'creationBytes', 'amount', 'assetId', 'type'];
- const missingFields = [];
+ const requiredFields = ['name', 'description', 'tags', 'creationBytes', 'amount', 'assetId', 'type']
+ const missingFields = []
requiredFields.forEach((field) => {
if (!data[field] && data[field] !== 0) {
- missingFields.push(field);
+ missingFields.push(field)
}
- });
+ })
if (missingFields.length > 0) {
- const missingFieldsString = missingFields.join(', ');
+ const missingFieldsString = missingFields.join(', ')
const errorMsg = `Missing fields: ${missingFieldsString}`
- let data = {};
- data['error'] = errorMsg;
- response = JSON.stringify(data);
+ let data = {}
+ data['error'] = errorMsg
+ response = JSON.stringify(data)
break
}
try {
- this.loader.show();
+ this.loader.show()
const resDeployAt = await this._deployAt(data.name, data.description, data.tags, data.creationBytes, data.amount, data.assetId, data.type)
- response = JSON.stringify(resDeployAt);
+ response = JSON.stringify(resDeployAt)
} catch (error) {
- const obj = {};
- const errorMsg = error.message || 'Failed to join the group.';
- obj['error'] = errorMsg;
- response = JSON.stringify(obj);
+ const obj = {}
+ const errorMsg = error.message || 'Failed to join the group.'
+ obj['error'] = errorMsg
+ response = JSON.stringify(obj)
} finally {
- this.loader.hide();
+ this.loader.hide()
}
- break;
+ break
}
-
case actions.GET_WALLET_BALANCE: {
- const requiredFields = ['coin'];
- const missingFields = [];
+ const requiredFields = ['coin']
+ const missingFields = []
requiredFields.forEach((field) => {
if (!data[field]) {
- missingFields.push(field);
+ missingFields.push(field)
}
- });
+ })
if (missingFields.length > 0) {
- const missingFieldsString = missingFields.join(', ');
+ const missingFieldsString = missingFields.join(', ')
const errorMsg = `Missing fields: ${missingFieldsString}`
- let data = {};
- data['error'] = errorMsg;
- response = JSON.stringify(data);
+ let data = {}
+ data['error'] = errorMsg
+ response = JSON.stringify(data)
break
}
// Params: data.coin (QORT / BTC / LTC / DOGE / DGB / RVN / ARRR)
@@ -2074,14 +2083,14 @@ class WebBrowser extends LitElement {
// If they decline, send back JSON that includes an `error` key, such as `{"error": "User declined request"}`
const res3 = await showModalAndWait(
actions.GET_WALLET_BALANCE
- );
+ )
if (res3.action === 'accept') {
- let coin = data.coin;
+ let coin = data.coin
if (coin === "QORT") {
let qortAddress = window.parent.reduxStore.getState().app.selectedAddress.address
try {
- this.loader.show();
+ this.loader.show()
const QORTBalance = await parentEpml.request('apiCall', {
url: `/addresses/balance/${qortAddress}?apiKey=${this.getApiKey()}`,
})
@@ -2089,14 +2098,14 @@ class WebBrowser extends LitElement {
} catch (error) {
- console.error(error);
- const data = {};
- const errorMsg = error.message || get("browserpage.bchange21");
- data['error'] = errorMsg;
- response = JSON.stringify(data);
+ console.error(error)
+ const data = {}
+ const errorMsg = error.message || get("browserpage.bchange21")
+ data['error'] = errorMsg
+ response = JSON.stringify(data)
} finally {
- this.loader.hide();
+ this.loader.hide()
}
} else {
let _url = ``
@@ -2131,39 +2140,55 @@ class WebBrowser extends LitElement {
break
}
try {
- this.loader.show();
+ this.loader.show()
const res = await parentEpml.request('apiCall', {
url: _url,
method: 'POST',
body: _body,
})
if (isNaN(Number(res))) {
- const data = {};
- const errorMsg = error.message || get("browserpage.bchange21");
- data['error'] = errorMsg;
- response = JSON.stringify(data);
- return;
+ const data = {}
+ const errorMsg = error.message || get("browserpage.bchange21")
+ data['error'] = errorMsg
+ response = JSON.stringify(data)
+ return
} else {
- response = (Number(res) / 1e8).toFixed(8);
+ response = (Number(res) / 1e8).toFixed(8)
}
} catch (error) {
- console.error(error);
- const data = {};
- const errorMsg = error.message || get("browserpage.bchange21");
- data['error'] = errorMsg;
- response = JSON.stringify(data);
- return;
+ console.error(error)
+ const data = {}
+ const errorMsg = error.message || get("browserpage.bchange21")
+ data['error'] = errorMsg
+ response = JSON.stringify(data)
+ return
} finally {
this.loader.hide()
}
}
} else if (res3.action === 'reject') {
- response = '{"error": "User declined request"}';
+ response = '{"error": "User declined request"}'
}
- break;
+ break
}
+ case actions.GET_DAY_SUMMARY: {
+ try {
+ const summary = await parentEpml.request('apiCall', {
+ type: 'api',
+ url: `/admin/summary?apiKey=${this.getApiKey()}`,
+ })
+ response = summary
+ } catch (error) {
+ const data = {}
+ const errorMsg = "Error in retrieving summary"
+ data['error'] = errorMsg
+ response = JSON.stringify(data)
+ } finally {
+ break
+ }
+ }
case actions.SEND_COIN: {
const requiredFields = ['coin', 'destinationAddress', 'amount']
@@ -3048,26 +3073,26 @@ class WebBrowser extends LitElement {
}
// Parse response
- let responseObj;
+ let responseObj
try {
- responseObj = JSON.parse(response);
+ responseObj = JSON.parse(response)
} catch (e) {
// Not all responses will be JSON
- responseObj = response;
+ responseObj = response
}
// Respond to app
if (responseObj.error != null) {
event.ports[0].postMessage({
result: null,
error: responseObj,
- });
+ })
} else {
event.ports[0].postMessage({
result: responseObj,
error: null,
- });
+ })
}
- });
+ })
this.clearConsole()
setInterval(() => {
this.clearConsole()
@@ -3083,29 +3108,30 @@ class WebBrowser extends LitElement {
}
changeTheme() {
- const checkTheme = localStorage.getItem('qortalTheme');
+ const checkTheme = localStorage.getItem('qortalTheme')
if (checkTheme === 'dark') {
- this.theme = 'dark';
+ this.theme = 'dark'
} else {
- this.theme = 'light';
+ this.theme = 'light'
}
- document.querySelector('html').setAttribute('theme', this.theme);
+ document.querySelector('html').setAttribute('theme', this.theme)
}
changeLanguage() {
- const checkLanguage = localStorage.getItem('qortalLanguage');
+ const checkLanguage = localStorage.getItem('qortalLanguage')
if (checkLanguage === null || checkLanguage.length === 0) {
- localStorage.setItem('qortalLanguage', 'us');
- use('us');
+ localStorage.setItem('qortalLanguage', 'us')
+ use('us')
} else {
- use(checkLanguage);
+ use(checkLanguage)
}
}
+
addAppToNotificationList(appName) {
if(!appName) throw new Error('unknown app name')
- const id = `appNotificationList-${this.selectedAddress.address}`;
- const checkData = localStorage.getItem(id) ? JSON.parse(localStorage.getItem(id)) : null;
+ const id = `appNotificationList-${this.selectedAddress.address}`
+ const checkData = localStorage.getItem(id) ? JSON.parse(localStorage.getItem(id)) : null
if (!checkData) {
const newData = {
@@ -3113,32 +3139,32 @@ class WebBrowser extends LitElement {
interval: 900000, // 15mins in milliseconds
lastNotification: null,
},
- };
- localStorage.setItem(id, JSON.stringify(newData));
+ }
+ localStorage.setItem(id, JSON.stringify(newData))
} else {
- const copyData = { ...checkData };
+ const copyData = { ...checkData }
copyData[appName] = {
interval: 900000, // 15mins in milliseconds
lastNotification: null,
- };
- localStorage.setItem(id, JSON.stringify(copyData));
+ }
+ localStorage.setItem(id, JSON.stringify(copyData))
}
}
updateLastNotification(id, appName) {
- const checkData = localStorage.getItem(id) ? JSON.parse(localStorage.getItem(id)) : null;
+ const checkData = localStorage.getItem(id) ? JSON.parse(localStorage.getItem(id)) : null
if (checkData) {
- const copyData = { ...checkData };
+ const copyData = { ...checkData }
if (copyData[appName]) {
- copyData[appName].lastNotification = Date.now(); // Make sure to use Date.now(), not date.now()
+ copyData[appName].lastNotification = Date.now() // Make sure to use Date.now(), not date.now()
} else {
copyData[appName] = {
interval: 900000, // 15mins in milliseconds
lastNotification: Date.now(),
- };
+ }
}
- localStorage.setItem(id, JSON.stringify(copyData));
+ localStorage.setItem(id, JSON.stringify(copyData))
}
}
@@ -3146,7 +3172,7 @@ class WebBrowser extends LitElement {
renderFollowUnfollowButton() {
// Only show the follow/unfollow button if we have permission to modify the list on this node
if (this.followedNames == null || !Array.isArray(this.followedNames)) {
- return html``;
+ return html``
}
if (this.followedNames.indexOf(this.name) === -1) {
@@ -3156,7 +3182,7 @@ class WebBrowser extends LitElement {
title="${translate('browserpage.bchange7')} ${this.name}"
class="address-bar-button float-right"
>