diff --git a/README.md b/README.md
index ee11d8c0..5d4a8115 100644
--- a/README.md
+++ b/README.md
@@ -27,7 +27,7 @@ Easiest way to install the lastest required packages on Linux is via nvm.
``` source ~/.profile ``` (For Debian based distro)
``` source ~/.bashrc ``` (For Fedora / CentOS)
``` nvm ls-remote ``` (Fetch list of available versions)
-``` nvm install v18.15.0 ``` (LTS: Hydrogen supported by Electron)
+``` nvm install v18.16.1 ``` (LTS: Hydrogen supported by Electron)
``` npm --location=global install npm@9.8.1 ```
Adding via binary package mirror will only work if you have set the package path. You can do a node or java build via ports instead by downloading ports with portsnap fetch method.
diff --git a/core/font/switch-theme.css b/core/font/switch-theme.css
index 4d308e76..7a0f6a9e 100644
--- a/core/font/switch-theme.css
+++ b/core/font/switch-theme.css
@@ -64,6 +64,7 @@ html {
--app-background-2: #09c6f9;
--app-icon: #ffffff;
--app-hr: rgba(0, 0, 0, .3);
+ --code-block-text-color: #008fd5;
}
html[theme="dark"] {
@@ -132,4 +133,5 @@ html[theme="dark"] {
--app-background-2: #0d324d;
--app-icon: #03a9f4;
--app-hr: rgba(255, 255, 255, .3);
+ --code-block-text-color: #008fd5;
}
\ No newline at end of file
diff --git a/core/language/de.json b/core/language/de.json
index c5942515..3dd767c5 100644
--- a/core/language/de.json
+++ b/core/language/de.json
@@ -717,7 +717,8 @@
"bchange43": "Erteilen Sie dieser Anwendung die Erlaubnis, diese Liste hinzuzufügen?",
"bchange44": "Erteilen Sie dieser Anwendung die Erlaubnis, sie von dieser Liste zu löschen?",
"bchange45": "Verschlüsseln",
- "bchange46": "Geben Sie dieser Anwendung die Erlaubnis, die folgende Datei zu speichern?"
+ "bchange46": "Geben Sie dieser Anwendung die Erlaubnis, die folgende Datei zu speichern?",
+ "bchange47": "Sofortige Veröffentlichung – erforderlich"
},
"datapage": {
"dchange1": "Datenmanagement",
diff --git a/core/language/es.json b/core/language/es.json
index 65a7e649..72ab3b45 100644
--- a/core/language/es.json
+++ b/core/language/es.json
@@ -717,7 +717,8 @@
"bchange43": "¿Le das permiso a esta aplicación para agregar a esta lista?",
"bchange44": "¿Le das permiso a esta aplicación para eliminar de esta lista?",
"bchange45": "Cifrar",
- "bchange46": "¿Le das permiso a esta aplicación para guardar el siguiente archivo?"
+ "bchange46": "¿Le das permiso a esta aplicación para guardar el siguiente archivo?",
+ "bchange47": "Publicación instantánea - requiere"
},
"datapage": {
"dchange1": "Gestión de datos",
diff --git a/core/language/fr.json b/core/language/fr.json
index 9890b43e..d95207c6 100644
--- a/core/language/fr.json
+++ b/core/language/fr.json
@@ -717,7 +717,8 @@
"bchange43": "Autorisez-vous cette application à ajouter à cette liste ?",
"bchange44": "Autorisez-vous cette application à supprimer de cette liste ?",
"bchange45": "Crypter",
- "bchange46": "Autorisez-vous cette application à enregistrer le fichier suivant"
+ "bchange46": "Autorisez-vous cette application à enregistrer le fichier suivant",
+ "bchange47": "Publication instantanée - nécessite"
},
"datapage": {
"dchange1": "Gestion de données",
diff --git a/core/language/hindi.json b/core/language/hindi.json
index a4f7938a..174d0188 100644
--- a/core/language/hindi.json
+++ b/core/language/hindi.json
@@ -718,7 +718,8 @@
"bchange43": "क्या आप इस एप्लिकेशन को इस सूची में जोड़ने की अनुमति देते हैं?",
"bchange44": "क्या आप इस एप्लिकेशन को इस सूची से हटाने की अनुमति देते हैं?",
"bchange45": "एन्क्रिप्ट",
- "bchange46": "क्या आप इस एप्लिकेशन को निम्न फ़ाइल सहेजने की अनुमति देते हैं"
+ "bchange46": "क्या आप इस एप्लिकेशन को निम्न फ़ाइल सहेजने की अनुमति देते हैं",
+ "bchange47": "तत्काल प्रकाशन - आवश्यक है"
},
"datapage": {
"dchange1": "डाटा प्रबंधन",
diff --git a/core/language/hr.json b/core/language/hr.json
index ad206a90..c84335a4 100644
--- a/core/language/hr.json
+++ b/core/language/hr.json
@@ -717,7 +717,8 @@
"bchange43": "Dajete li ovoj aplikaciji dopuštenje za dodavanje na ovaj popis?",
"bchange44": "Dajete li ovoj aplikaciji dopuštenje za brisanje s ovog popisa?",
"bchange45": "Šifriraj",
- "bchange46": "Dajete li ovoj aplikaciji dopuštenje za spremanje sljedeće datoteke"
+ "bchange46": "Dajete li ovoj aplikaciji dopuštenje za spremanje sljedeće datoteke",
+ "bchange47": "Trenutno objavljivanje - zahtijeva"
},
"datapage": {
"dchange1": "Upravljanje podacima",
diff --git a/core/language/hu.json b/core/language/hu.json
index 5557a6d1..3ee22c75 100644
--- a/core/language/hu.json
+++ b/core/language/hu.json
@@ -717,7 +717,8 @@
"bchange43": "Engedélyt ad ennek az alkalmazásnak, hogy felvegye ezt a listát?",
"bchange44": "Engedélyezi ennek az alkalmazásnak, hogy töröljön erről a listáról?",
"bchange45": "Titkosítás",
- "bchange46": "Engedélyezi ennek az alkalmazásnak a következő fájl mentését"
+ "bchange46": "Engedélyezi ennek az alkalmazásnak a következő fájl mentését",
+ "bchange47": "Azonnali közzététel – szükséges"
},
"datapage": {
"dchange1": "Adatkezelés",
diff --git a/core/language/it.json b/core/language/it.json
index a544e4ad..04d839a9 100644
--- a/core/language/it.json
+++ b/core/language/it.json
@@ -717,7 +717,8 @@
"bchange43": "Concedi a questa applicazione il permesso di aggiungersi a questa lista?",
"bchange44": "Concedi a questa applicazione il permesso di eliminare da questo elenco?",
"bchange45": "Cripta",
- "bchange46": "Concedi a questa applicazione il permesso di salvare il seguente file"
+ "bchange46": "Concedi a questa applicazione il permesso di salvare il seguente file",
+ "bchange47": "Pubblicazione istantanea - richiede"
},
"datapage": {
"dchange1": "Gestione dati",
diff --git a/core/language/jp.json b/core/language/jp.json
index 32560ac5..3be3822a 100644
--- a/core/language/jp.json
+++ b/core/language/jp.json
@@ -720,7 +720,8 @@
"bchange43": "このアプリケーションにこのリストに追加する事を許可しますか?",
"bchange44": "このアプリケーションにこのリストから削除する事を許可しますか?",
"bchange45": "暗号化",
- "bchange46": "このアプリケーションに次のファイルを保存する事を許可しますか?"
+ "bchange46": "このアプリケーションに次のファイルを保存する事を許可しますか?",
+ "bchange47": "インスタント公開 - が必要です"
},
"datapage": {
"dchange1": "データ管理",
diff --git a/core/language/ko.json b/core/language/ko.json
index a16860a3..85fd09ec 100644
--- a/core/language/ko.json
+++ b/core/language/ko.json
@@ -717,7 +717,8 @@
"bchange43": "이 목록에 추가할 수 있는 권한을 이 응용 프로그램에 부여하시겠습니까?",
"bchange44": "이 목록에서 삭제할 수 있는 권한을 이 애플리케이션에 부여하시겠습니까?",
"bchange45": "암호화",
- "bchange46": "이 응용 프로그램에 다음 파일을 저장할 권한을 부여하시겠습니까?"
+ "bchange46": "이 응용 프로그램에 다음 파일을 저장할 권한을 부여하시겠습니까?",
+ "bchange47": "즉시 게시 - 필요"
},
"datapage": {
"dchange1": "데이터 관리",
diff --git a/core/language/no.json b/core/language/no.json
index 1a12905b..aa6b396c 100644
--- a/core/language/no.json
+++ b/core/language/no.json
@@ -717,7 +717,8 @@
"bchange43": "Gir du denne applikasjonen tillatelse til å legge til denne listen?",
"bchange44": "Gir du denne applikasjonen tillatelse til å slette fra denne listen?",
"bchange45": "Krypter",
- "bchange46": "Gir du dette programmet tillatelse til å lagre følgende fil"
+ "bchange46": "Gir du dette programmet tillatelse til å lagre følgende fil",
+ "bchange47": "Øyeblikkelig publisering - krever"
},
"datapage": {
"dchange1": "Data-administrasjon",
diff --git a/core/language/pl.json b/core/language/pl.json
index 273ead7e..f3d88f13 100644
--- a/core/language/pl.json
+++ b/core/language/pl.json
@@ -717,7 +717,8 @@
"bchange43": "Czy zezwalasz tej aplikacji na dodanie do tej listy?",
"bchange44": "Czy zezwalasz tej aplikacji na usunięcie z tej listy?",
"bchange45": "Szyfruj",
- "bchange46": "Czy zezwalasz tej aplikacji na zapisanie następującego pliku"
+ "bchange46": "Czy zezwalasz tej aplikacji na zapisanie następującego pliku",
+ "bchange47": "Błyskawiczna publikacja - wymaga"
},
"datapage": {
"dchange1": "Zarządzanie danymi",
diff --git a/core/language/pt.json b/core/language/pt.json
index f2a64c14..39709266 100644
--- a/core/language/pt.json
+++ b/core/language/pt.json
@@ -717,7 +717,8 @@
"bchange43": "Você dá a este aplicativo permissão para adicionar a esta lista?",
"bchange44": "Você dá a este aplicativo permissão para deletar desta lista?",
"bchange45": "Criptografar",
- "bchange46": "Você concede permissão a este aplicativo para salvar o seguinte arquivo"
+ "bchange46": "Você concede permissão a este aplicativo para salvar o seguinte arquivo",
+ "bchange47": "Publicação instantânea - requer"
},
"datapage": {
"dchange1": "Gerenciamento de Dados",
diff --git a/core/language/ro.json b/core/language/ro.json
index 2c0fe833..891362ed 100644
--- a/core/language/ro.json
+++ b/core/language/ro.json
@@ -717,7 +717,8 @@
"bchange43": "Oferiți acestei aplicații permisiunea de a adăuga la această listă?",
"bchange44": "Oferiți acestei aplicații permisiunea de a șterge din această listă?",
"bchange45": "Criptați",
- "bchange46": "Dați această aplicație permisiunea de a salva următorul fișier"
+ "bchange46": "Dați această aplicație permisiunea de a salva următorul fișier",
+ "bchange47": "Publicare instantanee - necesită"
},
"datapage": {
"dchange1": "Gestionare date",
diff --git a/core/language/rs.json b/core/language/rs.json
index 6ce28838..87ca3f34 100644
--- a/core/language/rs.json
+++ b/core/language/rs.json
@@ -717,7 +717,8 @@
"bchange43": "Da li dajete ovoj aplikaciji dozvolu za dodavanje na ovu listu?",
"bchange44": "Da li ovoj aplikaciji dajete dozvolu za brisanje sa ove liste?",
"bchange45": "Šifrovanje",
- "bchange46": "Da li ovoj aplikaciji dajete dozvolu da sačuva sledeću datoteku"
+ "bchange46": "Da li ovoj aplikaciji dajete dozvolu da sačuva sledeću datoteku",
+ "bchange47": "Trenutno objavljivanje - zahteva"
},
"datapage": {
"dchange1": "Upravljanje podacima",
diff --git a/core/language/ru.json b/core/language/ru.json
index 9b8cda1f..9ece6005 100644
--- a/core/language/ru.json
+++ b/core/language/ru.json
@@ -717,7 +717,8 @@
"bchange43": "Даете ли вы этому приложению разрешение на добавление в этот список?",
"bchange44": "Даете ли вы этому приложению разрешение на удаление из этого списка?",
"bchange45": "Шифровать",
- "bchange46": "Даете ли вы этому приложению разрешение на сохранение следующего файла?"
+ "bchange46": "Даете ли вы этому приложению разрешение на сохранение следующего файла?",
+ "bchange47": "Мгновенная публикация - требуется"
},
"datapage": {
"dchange1": "Управление данными",
diff --git a/core/language/us.json b/core/language/us.json
index cbf85a4f..64afa585 100644
--- a/core/language/us.json
+++ b/core/language/us.json
@@ -203,7 +203,8 @@
"exp2": "Export Master Key",
"exp3": "Export",
"exp4": "Please choose a wallet to backup the private master key.",
- "core": "Start Core Settings"
+ "core": "Start Core Settings",
+ "qappNotification1": "Q-App notifications"
},
"appinfo": {
"blockheight": "Block Height",
@@ -719,7 +720,9 @@
"bchange43": "Do you give this application permission to add to this list?",
"bchange44": "Do you give this application permission to delete from this list?",
"bchange45": "Encrypt",
- "bchange46": "Do you give this application permission to save the following file"
+ "bchange46": "Do you give this application permission to save the following file",
+ "bchange47": "Instant publish - requires",
+ "bchange48": "Do you give this application permission to send you notifications"
},
"datapage": {
"dchange1": "Data Management",
@@ -1007,7 +1010,10 @@
"rewarddialog3": "If yes, you will need to save the key below in order to mint. It can be supplied to any node in order to allow it to mint on your behalf.",
"rewarddialog4": "On pressing confirm, the rewardshare will be created, but you will still need to supply the above key to a node in order to mint with the account.",
"rewarddialog5": "You are removing a reward share transaction associated with account:",
- "rewarddialog6": "On pressing confirm, the rewardshare will be removed and the minting key will become invalid."
+ "rewarddialog6": "On pressing confirm, the rewardshare will be removed and the minting key will become invalid.",
+ "deployAtdialog1": "You are deploying the AT",
+ "deployAtdialog2": "On pressing confirm, the AT will be deployed!",
+ "deployAtdialog3": "Initial amount balance"
},
"sponsorshipspage": {
"schange1": "Active Sponsorships",
diff --git a/core/language/zhc.json b/core/language/zhc.json
index 4227f543..c3a21761 100644
--- a/core/language/zhc.json
+++ b/core/language/zhc.json
@@ -717,7 +717,8 @@
"bchange43": "您授予此应用程序添加到此列表的权限吗?",
"bchange44": "您授予此应用程序从列表中删除的权限吗?",
"bchange45": "加密",
- "bchange46": "您是否授予此应用程序保存以下文件的权限"
+ "bchange46": "您是否授予此应用程序保存以下文件的权限",
+ "bchange47": "即时发布 - 需要"
},
"datapage": {
"dchange1": "资料管理",
diff --git a/core/language/zht.json b/core/language/zht.json
index 99e43890..7ef6f96b 100644
--- a/core/language/zht.json
+++ b/core/language/zht.json
@@ -717,7 +717,8 @@
"bchange43": "您授予此應用程序添加到此列表的權限嗎?",
"bchange44": "您授予此應用程序從列表中刪除的權限嗎?",
"bchange45": "加密",
- "bchange46": "您是否授予此應用程序保存以下文件的權限"
+ "bchange46": "您是否授予此應用程序保存以下文件的權限",
+ "bchange47": "即時發布 - 需要"
},
"datapage": {
"dchange1": "資料管理",
diff --git a/core/src/components/app-info.js b/core/src/components/app-info.js
index 5ce24ae7..fc2719c4 100644
--- a/core/src/components/app-info.js
+++ b/core/src/components/app-info.js
@@ -119,11 +119,11 @@ class AppInfo extends connect(store)(LitElement) {
this.setStorage()
this.getNodeInfo()
this.getCoreInfo()
- try {
- this.confirmPublicKeyOnChain(store.getState().app.selectedAddress.address)
- } catch (error) {
- console.error(error)
- }
+ // try {
+ // this.confirmPublicKeyOnChain(store.getState().app.selectedAddress.address)
+ // } catch (error) {
+ // console.error(error)
+ // }
setInterval(() => {
this.getNodeInfo()
diff --git a/core/src/components/app-view.js b/core/src/components/app-view.js
index 3c433c11..08b9c019 100644
--- a/core/src/components/app-view.js
+++ b/core/src/components/app-view.js
@@ -3047,4 +3047,5 @@ class AppView extends connect(store)(LitElement) {
}
}
-window.customElements.define('app-view', AppView)
\ No newline at end of file
+window.customElements.define('app-view', AppView)
+
diff --git a/core/src/components/notification-view/notification-bell.js b/core/src/components/notification-view/notification-bell.js
index 4ac64130..bb3913c5 100644
--- a/core/src/components/notification-view/notification-bell.js
+++ b/core/src/components/notification-view/notification-bell.js
@@ -140,7 +140,9 @@ class NotificationBell extends connect(store)(LitElement) {
${this.notificationCount ? html`
this._toggleNotifications()} title="Q-Mail">
` : html`
- this._toggleNotifications()} title="Q-Mail">
+ {
+ this._openTabQmail()
+ }} title="Q-Mail">
`}
${this.notificationCount ? html`
@@ -188,6 +190,23 @@ class NotificationBell extends connect(store)(LitElement) {
if (this.notifications.length === 0) return
this.showNotifications = !this.showNotifications
}
+ _openTabQmail() {
+ const query = `?service=APP&name=Q-Mail`
+ store.dispatch(setNewTab({
+ url: `qdn/browser/index.html${query}`,
+ id: 'q-mail-notification',
+ myPlugObj: {
+ "url": "qapps",
+ "domain": "core",
+ "page": `qdn/browser/index.html${query}`,
+ "title": "Q-Mail",
+ "icon": "vaadin:mailbox",
+ "mwcicon": "mail_outline",
+ "menus": [],
+ "parent": false
+ }
+ }))
+ }
static styles = css`
.layout {
diff --git a/core/src/components/settings-view/notifications-view.js b/core/src/components/settings-view/notifications-view.js
index ca209c24..1d8fb279 100644
--- a/core/src/components/settings-view/notifications-view.js
+++ b/core/src/components/settings-view/notifications-view.js
@@ -14,7 +14,8 @@ class NotificationsView extends connect(store)(LitElement) {
notificationConfig: { type: Object },
q_chatConfig: { type: Object },
blockConfig: { type: Object },
- theme: { type: String, reflect: true }
+ theme: { type: String, reflect: true },
+ appNotificationList: {type: Array}
}
}
@@ -24,6 +25,11 @@ class NotificationsView extends connect(store)(LitElement) {
this.q_chatConfig = {}
this.blockConfig = {}
this.theme = localStorage.getItem('qortalTheme') ? localStorage.getItem('qortalTheme') : 'light'
+ this.appNotificationList = [] // Fetch the list of apps from local storage
+ }
+
+ firstUpdated(){
+ this.appNotificationList = this.getAppsFromStorage();
}
static get styles() {
@@ -42,7 +48,7 @@ class NotificationsView extends connect(store)(LitElement) {
text-align: center;
}
- @media(min-width: 1150px) {
+ @media(min-width: 1400px) {
.notification-box {
display: grid;
grid-template-columns: 1fr 1fr;
@@ -106,6 +112,18 @@ class NotificationsView extends connect(store)(LitElement) {
transition: all .2s;
position: relative;
}
+
+ .remove-button {
+ font-family: Roboto, sans-serif;
+ font-size: 16px;
+ color: var(--mdc-theme-primary);
+ background-color: transparent;
+ padding: 8px 10px;
+ border-radius: 5px;
+ border: none;
+ transition: all 0.3s ease-in-out;
+ cursor: pointer;
+ }
`
}
@@ -145,12 +163,47 @@ class NotificationsView extends connect(store)(LitElement) {
+
+
${translate("settings.qappNotification1")}
+ ${this.appNotificationList.map((app)=> html`
+
+ ${app}
+
+
+ `)}
+
+
${this.renderSetCoreButton()}
`
}
+ getAppsFromStorage() {
+ // Your method to fetch the list of apps from local storage
+ // Example:
+ const address= store.getState().app.selectedAddress.address
+ const id = `appNotificationList-${address}`;
+ const data = localStorage.getItem(id);
+ return data ? Object.keys(JSON.parse(data)) : [];
+ }
+
+ removeApp(appName) {
+ // Remove the app from local storage
+ this.removeAppFromStorage(appName);
+ // Update the apps list in the component
+ this.appNotificationList = this.appNotificationList.filter(app => app !== appName);
+ }
+
+ removeAppFromStorage(appName) {
+ // Your method to remove the app from local storage
+ const address= store.getState().app.selectedAddress.address
+ const id = `appNotificationList-${address}`;
+ const data = JSON.parse(localStorage.getItem(id) || '{}');
+ delete data[appName];
+ localStorage.setItem(id, JSON.stringify(data));
+ }
+
renderSetCoreButton() {
if (!isElectron()) {
return html``
diff --git a/core/src/components/settings-view/security-view.js b/core/src/components/settings-view/security-view.js
index c0ee023d..850fcffd 100644
--- a/core/src/components/settings-view/security-view.js
+++ b/core/src/components/settings-view/security-view.js
@@ -1,7 +1,7 @@
import { LitElement, html, css } from 'lit'
import { connect } from 'pwa-helpers'
import { store } from '../../store.js'
-import { allowQAPPAutoAuth, removeQAPPAutoAuth, removeQAPPAutoLists, allowQAPPAutoLists } from '../../redux/app/app-actions.js'
+import { allowQAPPAutoAuth, removeQAPPAutoAuth, removeQAPPAutoLists, allowQAPPAutoLists, setIsOpenDevDialog } from '../../redux/app/app-actions.js'
import { use, get, translate, translateUnsafeHTML, registerTranslateConfig } from 'lit-translate'
import snackbar from '../../functional-components/snackbar.js'
import FileSaver from 'file-saver'
@@ -15,7 +15,8 @@ class SecurityView extends connect(store)(LitElement) {
static get properties() {
return {
theme: { type: String, reflect: true },
- backupErrorMessage: { type: String }
+ backupErrorMessage: { type: String },
+ closeSettings: {attribute: false}
}
}
@@ -75,6 +76,23 @@ class SecurityView extends connect(store)(LitElement) {
transition: all .2s;
position: relative;
}
+
+ .add-dev-button {
+ margin-top: 4px;
+ max-height: 28px;
+ padding: 5px 5px;
+ font-size: 14px;
+ background-color: #03a9f4;
+ color: white;
+ border: 1px solid transparent;
+ border-radius: 3px;
+ cursor: pointer;
+ }
+
+ .add-dev-button:hover {
+ opacity: 0.8;
+ cursor: pointer;
+ }
`
}
@@ -122,6 +140,14 @@ class SecurityView extends connect(store)(LitElement) {
this.checkForLists(e)} ?checked=${store.getState().app.qAPPAutoLists}>
+