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

Minor fixes

- Removed start minting button from sidebar
- Added disable sync indicator popup under settings
- Fixed colors
- Added translations
This commit is contained in:
AlphaX-Projects 2024-03-14 10:30:58 +01:00
parent 046c3832ad
commit 7669b1caf0
34 changed files with 316 additions and 225 deletions

View File

@ -70,7 +70,7 @@ html {
--login-border-50pct: rgba(0, 167, 245, 0.5);
--login-border-10pct: rgba(0, 167, 245, 0.1);
--login-button: rgb(3, 169, 244);
--accent-color: #03a9f4;
--general-color-blue: #03a9f4;
--qchat-name: #03a9f4;
--qchat-my-name: #05be0e;
}
@ -147,7 +147,7 @@ html[theme="dark"] {
--login-border-50pct: rgba(0, 167, 245, 0.5);
--login-border-10pct: rgba(0, 167, 245, 0.1);
--login-button: rgb(3, 169, 244);
--accent-color: #03a9f4;
--general-color-blue: #03a9f4;
--qchat-name: #03a9f4;
--qchat-my-name: #05be0e;
}

View File

@ -213,7 +213,8 @@
"arrr1": "ARRR-Wallet nicht initialisiert!",
"arrr2": "Bitte gehen Sie zur Registerkarte „Wallet“ und initialisieren Sie zuerst Ihre arrr-Wallet.",
"arrr3": "Core-Update erforderlich!",
"arrr4": "Um den privaten Schlüssel Ihrer arrr-Wallet zu speichern, benötigen Sie zuerst ein Core-Update!"
"arrr4": "Um den privaten Schlüssel Ihrer arrr-Wallet zu speichern, benötigen Sie zuerst ein Core-Update!",
"sync_indicator": "Synchronisierungsanzeige-Popup deaktivieren"
},
"appinfo": {
"blockheight": "Blockhöhe",

View File

@ -213,7 +213,8 @@
"arrr1": "¡Cartera ARRR no inicializada!",
"arrr2": "Por favor, vaya a la pestaña de billetera e inicialice su billetera arrr primero.",
"arrr3": "¡Necesita actualización principal!",
"arrr4": "¡Para guardar la clave privada de tu billetera arrr, primero necesitas una actualización básica!"
"arrr4": "¡Para guardar la clave privada de tu billetera arrr, primero necesitas una actualización básica!",
"sync_indicator": "Desactivar la ventana emergente del indicador de sincronización"
},
"appinfo": {
"blockheight": "Altura del Bloque",

View File

@ -213,7 +213,8 @@
"arrr1": "ARRR rahakott pole initsialiseeritud!",
"arrr2": "Minge rahakoti vahekaardile ja lähtestage esmalt oma arrr rahakott.",
"arrr3": "Vaja põhivärskendust!",
"arrr4": "Oma arrr rahakoti privaatvõtme salvestamiseks vajate esmalt põhivärskendust!"
"arrr4": "Oma arrr rahakoti privaatvõtme salvestamiseks vajate esmalt põhivärskendust!",
"sync_indicator": "Keela sünkroonimisindikaatori hüpikaken"
},
"appinfo": {
"blockheight": "Ploki kõrgus",

View File

@ -213,7 +213,8 @@
"arrr1": "ARRR-lompakkoa ei ole alustettu!",
"arrr2": "Siirry lompakko-välilehdelle ja nollaa ensin ARRR-lompakkosi.",
"arrr3": "Tarvitaan iso päivitys!",
"arrr4": "Jotta voit tallentaa ARRR-lompakkosi yksityisen avaimesi, tarvitset ensin pääpäivityksen!"
"arrr4": "Jotta voit tallentaa ARRR-lompakkosi yksityisen avaimesi, tarvitset ensin pääpäivityksen!",
"sync_indicator": "Poista synkronoinnin ilmaisimen ponnahdusikkuna"
},
"appinfo": {
"blockheight": "Lohkon korkeus",

View File

@ -213,7 +213,8 @@
"arrr1": "Portefeuille ARRR non initialisé !",
"arrr2": "Veuillez aller dans l'onglet Portefeuille et initialiser d'abord votre portefeuille arrr.",
"arrr3": "Besoin d'une mise à jour principale !",
"arrr4": "Pour sauvegarder la clé privée de votre portefeuille arrr, vous avez d'abord besoin d'une mise à jour principale !"
"arrr4": "Pour sauvegarder la clé privée de votre portefeuille arrr, vous avez d'abord besoin d'une mise à jour principale !",
"sync_indicator": "Désactiver la fenêtre contextuelle de l'indicateur de synchronisation"
},
"appinfo": {
"blockheight": "Hauteur de bloc",

View File

@ -213,7 +213,8 @@
"arrr1": "ARRR वॉलेट प्रारंभ नहीं हुआ!",
"arrr2": "कृपया वॉलेट टैब पर जाएं और पहले अपना Arrr वॉलेट प्रारंभ करें।",
"arrr3": "मुख्य अद्यतन की आवश्यकता है!",
"arrr4": "अपने Arrr वॉलेट की निजी कुंजी को सहेजने के लिए आपको पहले एक कोर अपडेट की आवश्यकता है!"
"arrr4": "अपने Arrr वॉलेट की निजी कुंजी को सहेजने के लिए आपको पहले एक कोर अपडेट की आवश्यकता है!",
"sync_indicator": "सिंक संकेतक पॉपअप अक्षम करें"
},
"appinfo": {
"blockheight": "ब्लॉक ऊँचाई",

View File

@ -213,7 +213,8 @@
"arrr1": "Novčanik ARRR nije inicijaliziran!",
"arrr2": "Idite na karticu novčanika i prvo inicijalizirajte svoj arrr novčanik.",
"arrr3": "Potrebno je ažuriranje jezgre!",
"arrr4": "Da biste spremili privatni ključ vašeg arrr novčanika, prvo trebate ažurirati jezgru!"
"arrr4": "Da biste spremili privatni ključ vašeg arrr novčanika, prvo trebate ažurirati jezgru!",
"sync_indicator": "Onemogući skočni prozor indikatora sinkronizacije"
},
"appinfo": {
"blockheight": "Visina bloka",

View File

@ -213,7 +213,8 @@
"arrr1": "ARRR Wallet nincs inicializálva!",
"arrr2": "Kérjük, lépjen a Wallet fülre, és először inicializálja arrr pénztárcáját.",
"arrr3": "Alapfrissítésre van szükség!",
"arrr4": "Az arrr pénztárca privát kulcsának mentéséhez először egy alapvető frissítésre van szükség!"
"arrr4": "Az arrr pénztárca privát kulcsának mentéséhez először egy alapvető frissítésre van szükség!",
"sync_indicator": "Szinkronizálásjelző előugró ablak letiltása"
},
"appinfo": {
"blockheight": "Blokk Magassága",

View File

@ -213,7 +213,8 @@
"arrr1": "Portafoglio ARRR non inizializzato!",
"arrr2": "Vai alla scheda Portafoglio e inizializza prima il tuo portafoglio arrr.",
"arrr3": "È necessario l'aggiornamento del core!",
"arrr4": "Per salvare la chiave privata del tuo portafoglio arrr devi prima aggiornare il core!"
"arrr4": "Per salvare la chiave privata del tuo portafoglio arrr devi prima aggiornare il core!",
"sync_indicator": "Disabilita il popup dell'indicatore di sincronizzazione"
},
"appinfo": {
"blockheight": "Altezza blocco",

View File

@ -213,7 +213,8 @@
"arrr1": "ARRR ウォレットが初期化されていません!",
"arrr2": "ウォレットタブに移動して、まずarrrウォレットを初期化してください。",
"arrr3": "コアのアップデートが必要です!",
"arrr4": "arrr ウォレットの秘密キーを保存するには、まずコアのアップデートが必要です!"
"arrr4": "arrr ウォレットの秘密キーを保存するには、まずコアのアップデートが必要です!",
"sync_indicator": "同期インジケーターのポップアップを無効にする"
},
"appinfo": {
"blockheight": "ブロック高",

View File

@ -213,7 +213,8 @@
"arrr1": "ARRR 지갑이 초기화되지 않았습니다!",
"arrr2": "지갑 탭으로 이동하여 먼저 arrr 지갑을 초기화하세요.",
"arrr3": "핵심 업데이트가 필요합니다!",
"arrr4": "arrr 지갑의 개인 키를 저장하려면 먼저 핵심 업데이트가 필요합니다!"
"arrr4": "arrr 지갑의 개인 키를 저장하려면 먼저 핵심 업데이트가 필요합니다!",
"sync_indicator": "동기화 표시 팝업 비활성화"
},
"appinfo": {
"blockheight": "블록 높이",

View File

@ -213,7 +213,8 @@
"arrr1": "ARRR portefeuille is niet geïnitialiseerd!",
"arrr2": "Ga naar de portefeuille-tab en initialiseer eerst jouw ARRR portefeuille.",
"arrr3": "De 'core' heeft een update nodig!",
"arrr4": "Om de privé-sleutel van jouw ARRR portefeuille te kunnen bewaren, moet je voor de 'core' eerst een update installeren!"
"arrr4": "Om de privé-sleutel van jouw ARRR portefeuille te kunnen bewaren, moet je voor de 'core' eerst een update installeren!",
"sync_indicator": "Synchronisatie-indicator pop-up uitschakelen"
},
"appinfo": {
"blockheight": "Blokhoogte",

View File

@ -213,7 +213,8 @@
"arrr1": "ARRR-lommebok ikke initialisert !",
"arrr2": "Vennligst gå til lommebok-fanen og initialiser arrr-lommeboken først.",
"arrr3": "Trenger kjerneoppdatering!",
"arrr4": "For å lagre den private nøkkelen til arrr-lommeboken din trenger du en kjerneoppdatering først!"
"arrr4": "For å lagre den private nøkkelen til arrr-lommeboken din trenger du en kjerneoppdatering først!",
"sync_indicator": "Deaktiver popup for synkroniseringsindikator"
},
"appinfo": {
"blockheight": "Blokkhøyde",

View File

@ -213,7 +213,8 @@
"arrr1": "Portfel ARRR nie został zainicjowany!",
"arrr2": "Przejdź do zakładki portfela i najpierw zainicjalizuj swój portfel arrr.",
"arrr3": "Potrzebujesz aktualizacji rdzenia!",
"arrr4": "Aby zapisać klucz prywatny swojego portfela arrr, potrzebujesz najpierw aktualizacji rdzenia!"
"arrr4": "Aby zapisać klucz prywatny swojego portfela arrr, potrzebujesz najpierw aktualizacji rdzenia!",
"sync_indicator": "Wyłącz wyskakujące okienko wskaźnika synchronizacji"
},
"appinfo": {
"blockheight": "Wysokość bloku",

View File

@ -213,7 +213,8 @@
"arrr1": "Carteira ARRR não inicializada!",
"arrr2": "Por favor, vá para a aba carteira e inicialize sua carteira arrr primeiro.",
"arrr3": "Precisa de atualização principal!",
"arrr4": "Para salvar a chave privada da sua carteira arrr você precisa primeiro de uma atualização principal!"
"arrr4": "Para salvar a chave privada da sua carteira arrr você precisa primeiro de uma atualização principal!",
"sync_indicator": "Desativar pop-up do indicador de sincronização"
},
"appinfo": {
"blockheight": "Altura do Bloco",

View File

@ -213,7 +213,8 @@
"arrr1": "Portoletul ARRR nu este inițializat !",
"arrr2": "Vă rugăm să accesați fila Portofel și să inițializați mai întâi portofelul arrr.",
"arrr3": "Am nevoie de actualizare de bază !",
"arrr4": "Pentru a salva cheia privată a portofelului dvs. arrr, aveți nevoie mai întâi de o actualizare de bază !"
"arrr4": "Pentru a salva cheia privată a portofelului dvs. arrr, aveți nevoie mai întâi de o actualizare de bază !",
"sync_indicator": "Dezactivați fereastra pop-up indicator de sincronizare"
},
"appinfo": {
"blockheight": "Dimensiunea blocului",

View File

@ -213,7 +213,8 @@
"arrr1": "ARRR novčanik nije inicijalizovan!",
"arrr2": "Molim vas idite na karticu Novčanik i prvo inicijalizujte svoj arrr novčanik.",
"arrr3": "Potrebno je ažuriranje jezgra!",
"arrr4": "Da biste sačuvali privatni ključ vašeg arrr novčanika, prvo vam je potrebno ažuriranje jezgra!"
"arrr4": "Da biste sačuvali privatni ključ vašeg arrr novčanika, prvo vam je potrebno ažuriranje jezgra!",
"sync_indicator": "Onemogući iskačući prozor indikatora sinhronizacije"
},
"appinfo": {
"blockheight": "Visina Bloka",

View File

@ -213,7 +213,8 @@
"arrr1": "Кошелек ARRR не инициализирован!",
"arrr2": "Пожалуйста, перейдите на вкладку кошелька и сначала инициализируйте свой кошелек arrr.",
"arrr3": "Требуется обновление ядра!",
"arrr4": "Чтобы сохранить закрытый ключ вашего кошелька arrr, вам сначала необходимо обновить ядро!"
"arrr4": "Чтобы сохранить закрытый ключ вашего кошелька arrr, вам сначала необходимо обновить ядро!",
"sync_indicator": "Отключить всплывающее окно индикатора синхронизации"
},
"appinfo": {
"blockheight": "Высота блока",

View File

@ -213,7 +213,8 @@
"arrr1": "ARRR Wallet Not Initialized !",
"arrr2": "Please go to wallet tab and initialize your arrr wallet first.",
"arrr3": "Need Core Update !",
"arrr4": "To save the private key of your arrr wallet you need a core update first !"
"arrr4": "To save the private key of your arrr wallet you need a core update first !",
"sync_indicator": "Disable sync indicator popup"
},
"appinfo": {
"blockheight": "Block Height",

View File

@ -213,7 +213,8 @@
"arrr1": "ARRR 钱包未初始化!",
"arrr2": "请先进入钱包选项卡并初始化您的arrr钱包。",
"arrr3": "需要核心更新!",
"arrr4": "要保存你的 arr 钱包的私钥,你需要先进行核心更新!"
"arrr4": "要保存你的 arr 钱包的私钥,你需要先进行核心更新!",
"sync_indicator": "禁用同步指示器弹出窗口"
},
"appinfo": {
"blockheight": "区块高度",

View File

@ -213,7 +213,8 @@
"arrr1": "ARRR 錢包未初始化!",
"arrr2": "請先進入錢包標籤並初始化您的arrr錢包。",
"arrr3": "需要核心更新!",
"arrr4": "要儲存你的 arr 錢包的私鑰,你需要先進行核心更新!"
"arrr4": "要儲存你的 arr 錢包的私鑰,你需要先進行核心更新!",
"sync_indicator": "停用同步指示器彈出視窗"
},
"appinfo": {
"blockheight": "區塊高度",

View File

@ -35,7 +35,6 @@ import './search-modal.js'
import './user-info-view/user-info-view.js'
import '../functional-components/side-menu.js'
import '../functional-components/side-menu-item.js'
import './start-minting.js'
import './notification-view/notification-bell.js'
import './notification-view/notification-bell-general.js'
import './friends-view/friends-side-panel-parent.js'
@ -147,7 +146,8 @@ class AppView extends connect(store)(LitElement) {
lockSet: { type: String },
myLockScreenPass: { type: String },
myLockScreenSet: { type: String },
helperMessage: { type: String }
helperMessage: { type: String },
showSyncMessages: { type: Boolean }
}
}
@ -548,7 +548,6 @@ class AppView extends connect(store)(LitElement) {
getTourElements(){
let els = {}
console.log('this.shadowRoot.querySelector("core-sync-status")', this.shadowRoot.querySelector("core-sync-status"))
const el1 = this.shadowRoot.querySelector("core-sync-status").shadowRoot.getElementById("core-sync-status-id")
const el2 = this.shadowRoot.querySelector("show-plugin").shadowRoot.getElementById("showPluginId")
const el3 = this.shadowRoot.querySelector("beginner-checklist").shadowRoot.getElementById("popover-notification")
@ -625,7 +624,7 @@ class AppView extends connect(store)(LitElement) {
</app-header>
<show-plugin></show-plugin>
<tour-component .getElements=${this.getTourElements}></tour-component>
<sync-indicator ></sync-indicator>
${!this.showSyncMessages ? html`<sync-indicator></sync-indicator>` : html``}
</app-header-layout>
</app-drawer-layout>
<user-info-view></user-info-view>
@ -698,6 +697,8 @@ class AppView extends connect(store)(LitElement) {
this.helperMessage = this.renderHelperPass()
this.showSyncMessages = store.getState().app.showSyncIndicator
this.salt = ''
this.salt = Base58.encode(store.getState().app.wallet._addresses[0].keyPair.privateKey)
@ -2117,10 +2118,6 @@ class AppView extends connect(store)(LitElement) {
${this.renderNodeManagement()}
</side-menu-item>
<div>
<start-minting></start-minting>
</div>
`
}
}
@ -2806,6 +2803,7 @@ class AppView extends connect(store)(LitElement) {
this.config = state.config
this.urls = state.app.registeredUrls
this.addressInfo = state.app.accountInfo.addressInfo
this.showSyncMessages = state.app.showSyncIndicator
if (sideurl === "minting") {
this.shadowRoot.getElementById('qminter').setAttribute('selected', 'selected')

View File

@ -1,9 +1,10 @@
import { LitElement, html, css } from 'lit';
import { store } from '../../store';
import { connect } from 'pwa-helpers';
import '@material/mwc-icon';
import { translate } from '../../../translate';
import { parentEpml } from '../show-plugin';
import { LitElement, html, css } from 'lit'
import { store } from '../../store'
import { connect } from 'pwa-helpers'
import { translate } from '../../../translate'
import { parentEpml } from '../show-plugin'
import '@material/mwc-icon'
class SyncIndicator extends connect(store)(LitElement) {
static get properties() {
@ -11,20 +12,20 @@ class SyncIndicator extends connect(store)(LitElement) {
isBehind: { type: Boolean },
blocksBehind: { type: Number },
isSynchronizing: { type: Boolean },
hasCoreRunning: { type: Boolean },
};
hasCoreRunning: { type: Boolean }
}
}
constructor() {
super();
this.isBehind = null;
this.blocksBehind = 0;
this.nodeUrl = this.getNodeUrl();
this.myNode = this.getMyNode();
this.interval = null;
this.hasCoreRunning = true;
this.seenWelcomeSync = false;
this.numberOfTries = 0;
super()
this.isBehind = null
this.blocksBehind = 0
this.nodeUrl = this.getNodeUrl()
this.myNode = this.getMyNode()
this.interval = null
this.hasCoreRunning = true
this.seenWelcomeSync = false
this.numberOfTries = 0
this.hasOpened = false
}
@ -34,13 +35,15 @@ class SyncIndicator extends connect(store)(LitElement) {
--mdc-theme-text-primary-on-background: var(--black);
box-sizing: border-box;
}
:host {
box-sizing: border-box;
position: fixed;
bottom: 25px;
bottom: 50px;
right: 25px;
z-index: 50000;
}
.parent {
width: 360px;
padding: 10px;
@ -52,11 +55,13 @@ class SyncIndicator extends connect(store)(LitElement) {
user-select: none;
background: var(--white);
}
.row {
display: flex;
gap: 10px;
width: 100%;
}
.column {
display: flex;
flex-direction: column;
@ -78,34 +83,36 @@ class SyncIndicator extends connect(store)(LitElement) {
cursor: pointer;
background-color: #03a8f475;
}
`;
`
}
async firstUpdated() {
this.address = store.getState().app.selectedAddress.address
const seenWelcomeSync = JSON.parse(
localStorage.getItem(`welcome-sync-${this.address}`) || 'false'
);
this.seenWelcomeSync = seenWelcomeSync;
)
this.seenWelcomeSync = seenWelcomeSync
}
getNodeUrl() {
const myNode =
window.parent.reduxStore.getState().app.nodeConfig.knownNodes[
window.parent.reduxStore.getState().app.nodeConfig.node
];
]
const nodeUrl =
myNode.protocol + '://' + myNode.domain + ':' + myNode.port;
return nodeUrl;
const nodeUrl = myNode.protocol + '://' + myNode.domain + ':' + myNode.port
return nodeUrl
}
getMyNode() {
const myNode =
window.parent.reduxStore.getState().app.nodeConfig.knownNodes[
window.parent.reduxStore.getState().app.nodeConfig.node
];
]
return myNode;
return myNode
}
async getDaySummary() {
@ -113,25 +120,25 @@ class SyncIndicator extends connect(store)(LitElement) {
this.fetchingSummary = true
const endpointLastBlock = `${this.nodeUrl}/blocks/last`;
const resLastBlock = await fetch(endpointLastBlock);
const dataLastBlock = await resLastBlock.json();
const timestampNow = Date.now();
const currentBlockTimestamp = dataLastBlock.timestamp;
const endpointLastBlock = `${this.nodeUrl}/blocks/last`
const resLastBlock = await fetch(endpointLastBlock)
const dataLastBlock = await resLastBlock.json()
const timestampNow = Date.now()
const currentBlockTimestamp = dataLastBlock.timestamp
if (currentBlockTimestamp < timestampNow) {
const diff = timestampNow - currentBlockTimestamp;
const inSeconds = diff / 1000; // millisecs to secs
const inBlocks = inSeconds / 70;
this.blocksBehind = parseInt(inBlocks);
const diff = timestampNow - currentBlockTimestamp
const inSeconds = diff / 1000 // millisecs to secs
const inBlocks = inSeconds / 70
this.blocksBehind = parseInt(inBlocks)
if (inBlocks >= 100) {
this.isBehind = true;
this.isBehind = true
} else {
this.isBehind = false;
this.blocksBehind = 0;
this.isBehind = false
this.blocksBehind = 0
}
} else {
this.blocksBehind = 0;
this.isBehind = false;
this.blocksBehind = 0
this.isBehind = false
}
} catch (error) {} finally {
this.fetchingSummary = false
@ -144,11 +151,11 @@ class SyncIndicator extends connect(store)(LitElement) {
this.interval = setInterval(() => {
if(this.fetchingSummary) return
if (this.isBehind === false) {
this.isBehind = null;
clearInterval(this.interval);
this.isBehind = null
clearInterval(this.interval)
}
this.getDaySummary();
}, 20000);
this.getDaySummary()
}, 20000)
} catch (error) {}
}
@ -161,30 +168,30 @@ class SyncIndicator extends connect(store)(LitElement) {
bubbles: true,
composed: true,
})
);
)
}
if (
state.app.nodeStatus &&
Object.keys(state.app.nodeStatus).length === 0
) {
if (this.numberOfTries > 5) {
this.hasCoreRunning = false;
this.hasCoreRunning = false
} else {
this.numberOfTries = this.numberOfTries + 1;
this.numberOfTries = this.numberOfTries + 1
}
} else if(state.app.nodeStatus && state.app.nodeStatus.syncPercent === 100 && state.app.nodeStatus.syncPercent !== this.syncPercentage){
this.syncPercentage = state.app.nodeStatus.syncPercent;
this.isSynchronizing = false;
this.syncPercentage = state.app.nodeStatus.syncPercent
this.isSynchronizing = false
} else if (
state.app.nodeStatus
) {
this.hasCoreRunning = true
this.numberOfTries = 0
this.syncPercentage = state.app.nodeStatus.syncPercent;
this.syncPercentage = state.app.nodeStatus.syncPercent
if (state.app.nodeStatus.syncPercent !== 100) {
this.isSynchronizing = true;
this.isSynchronizing = true
}
if (
@ -193,20 +200,20 @@ class SyncIndicator extends connect(store)(LitElement) {
state.app.nodeStatus.isSynchronizing &&
state.app.nodeStatus.syncPercent !== 100
) {
this.checkHowManyBlocksBehind();
this.checkHowManyBlocksBehind()
}
} else {
this.hasCoreRunning = true;
this.hasCoreRunning = true
}
}
async bootstrap(){
try {
const endpoint = `${this.nodeUrl}/admin/bootstrap/?apiKey=${this.myNode.apiKey}`;
const res = await fetch(endpoint);
const data = await res.json();
if(data === true){
parentEpml.request('showSnackBar', get('tour.tour22'));
const endpoint = `${this.nodeUrl}/admin/bootstrap/?apiKey=${this.myNode.apiKey}`
const res = await fetch(endpoint)
const data = await res.json()
if (data === true) {
parentEpml.request('showSnackBar', get('tour.tour22'))
}
} catch (error) {
@ -274,7 +281,8 @@ class SyncIndicator extends connect(store)(LitElement) {
</div>
`
: "" }
`;
`
}
}
customElements.define('sync-indicator', SyncIndicator);
customElements.define('sync-indicator', SyncIndicator)

View File

@ -22,10 +22,12 @@ import {
allowQAPPAutoAuth,
allowQAPPAutoFriendsList,
allowQAPPAutoLists,
allowShowSyncIndicator,
removeAutoLoadImageChat,
removeQAPPAutoAuth,
removeQAPPAutoFriendsList,
removeQAPPAutoLists,
removeShowSyncIndicator,
setNewNotification,
setNewTab,
setSideEffectAction,
@ -47,7 +49,9 @@ window.reduxAction = {
setNewNotification: setNewNotification,
setSideEffectAction: setSideEffectAction,
allowQAPPAutoFriendsList: allowQAPPAutoFriendsList,
removeQAPPAutoFriendsList: removeQAPPAutoFriendsList
removeQAPPAutoFriendsList: removeQAPPAutoFriendsList,
allowShowSyncIndicator: allowShowSyncIndicator,
removeShowSyncIndicator: removeShowSyncIndicator
}
const animationDuration = 0.7 // Seconds

View File

@ -13,68 +13,56 @@ class WelcomePage extends LitElement {
backDisabled: { type: Boolean, notify: true },
backText: { type: String, notify: true },
hideNav: { type: Boolean, notify: true },
welcomeMessage: { type: String },
theme: { type: String, reflect: true }
}
}
static get styles() {
return [
css`
return css`
* {
--mdc-theme-primary: var(--login-button);
--mdc-theme-secondary: var(--mdc-theme-primary);
--mdc-button-outline-color: var(--accent-color);
--mdc-button-outline-color: var(--general-color-blue);
}
mwc-button {
.button-outline {
margin: 6px;
width: 90%;
max-width:90vw;
margin: 4px;
border-top: 0;
border-bottom: 0;
}
.welcome-page {
padding: 12px 0;
overflow: hidden;
}
`
]
}
constructor() {
super()
this.hideNav = true
this.nextText = ''
const welcomeMessage = 'Welcome to Qortal';
this.welcomeMessage = welcomeMessage
this.welcomeMessage = 'Welcome to Qortal'
this.theme = localStorage.getItem('qortalTheme') ? localStorage.getItem('qortalTheme') : 'light'
}
firstUpdated() {
// ...
}
firstUpdated() {}
render() {
return html`
<style>
#mobile-logo {}
@media only screen and (min-width: ${getComputedStyle(document.body).getPropertyValue('--layout-breakpoint-tablet')}) {
#mobile-logo {
display:hidden;
visibility:none;
}
}
</style>
<div class='welcome-page' style="overflow:hidden;">
<div id="mobile-logo"></div>
<mwc-button @click=${() => this.navigate('login')} outlined style="border-top:0; border-bottom:0;">${translate("login.login")}</mwc-button>
<mwc-button @click=${() => this.navigate('create-account')} outlined style="border-top:0; border-bottom:0;">${translate("login.createaccount")}</mwc-button>
<div class="welcome-page">
<mwc-button class="button-outline" @click=${() => this.navigate('login')} outlined>${translate("login.login")}</mwc-button>
<mwc-button class="button-outline" @click=${() => this.navigate('create-account')} outlined>${translate("login.createaccount")}</mwc-button>
</div>
`
}
back() { }
back() {}
next() { }
next() {}
navigate(page) {
this.dispatchEvent(new CustomEvent('navigate', {

View File

@ -1,20 +1,20 @@
import {css, html, LitElement} from 'lit'
import {connect} from 'pwa-helpers'
import {store} from '../../store.js'
import {allowShowSyncIndicator, removeShowSyncIndicator} from '../../redux/app/app-actions.js'
import {doSetQChatNotificationConfig} from '../../redux/user/user-actions.js'
import {translate} from '../../../translate/index.js'
import isElectron from 'is-electron'
import '@material/mwc-checkbox'
class NotificationsView extends connect(store)(LitElement) {
static get properties() {
return {
notificationConfig: { type: Object },
q_chatConfig: { type: Object },
theme: { type: String, reflect: true },
appNotificationList: {type: Array}
appNotificationList: { type: Array }
}
}
@ -26,8 +26,8 @@ class NotificationsView extends connect(store)(LitElement) {
this.appNotificationList = [] // Fetch the list of apps from local storage
}
firstUpdated(){
this.appNotificationList = this.getAppsFromStorage();
firstUpdated() {
this.appNotificationList = this.getAppsFromStorage()
}
static get styles() {
@ -54,6 +54,16 @@ class NotificationsView extends connect(store)(LitElement) {
}
}
.checkbox-row {
position: relative;
display: flex;
align-items: center;
align-content: center;
font-family: Montserrat, sans-serif;
font-weight: 600;
color: var(--black);
}
.content-box {
border: 1px solid #a1a1a1;
padding: 10px 25px;
@ -137,7 +147,9 @@ class NotificationsView extends connect(store)(LitElement) {
<label
for="qChatPlaySound"
@click=${() => this.shadowRoot.getElementById('qChatPlaySound').click()}
>${translate("settings.playsound")}</label>
>
${translate("settings.playsound")}
</label>
</div>
<div style="line-height: 3rem;">
@ -145,20 +157,27 @@ class NotificationsView extends connect(store)(LitElement) {
<label
for="qChatShowNotification"
@click=${() => this.shadowRoot.getElementById('qChatShowNotification').click()}
>${translate("settings.shownotifications")}</label>
>
${translate("settings.shownotifications")}
</label>
</div>
</div>
<div class="content-box">
<h4>${translate("settings.qappNotification1")}</h4>
${this.appNotificationList.map((app)=> html`
${this.appNotificationList.map((app) => html`
<div style="display: flex; justify-content: space-between; margin-top: 10px;">
${app}
<button class="remove-button" @click=${() => this.removeApp(app)}>Remove</button>
</div>
`)}
</div>
</div>
<div class="checkbox-row">
<label for="syncIndicator" id="syncIndicatorLabel" style="color: var(--black);">
${translate("settings.sync_indicator")}
</label>
<mwc-checkbox style="margin-right: -15px;" id="syncIndicator" @click=${(e) => this.checkForSyncMessages(e)} ?checked=${store.getState().app.showSyncIndicator}></mwc-checkbox>
</div>
${this.renderSetCoreButton()}
</div>
`
@ -167,10 +186,10 @@ class NotificationsView extends connect(store)(LitElement) {
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)) : [];
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) {
@ -205,6 +224,14 @@ class NotificationsView extends connect(store)(LitElement) {
window.electronAPI.setStartCore()
}
checkForSyncMessages(e) {
if (e.target.checked) {
store.dispatch(removeShowSyncIndicator(false))
} else {
store.dispatch(allowShowSyncIndicator(true))
}
}
stateChanged(state) {
this.notificationConfig = state.user.notifications
this.q_chatConfig = this.notificationConfig.q_chat
@ -226,8 +253,6 @@ class NotificationsView extends connect(store)(LitElement) {
store.dispatch(doSetQChatNotificationConfig(data))
}
}
}
window.customElements.define('notifications-view', NotificationsView)

View File

@ -168,9 +168,10 @@ class SecurityView extends connect(store)(LitElement) {
class="add-dev-button"
title="${translate('tabmenu.tm18')}"
@click=${this.openDevDialog}
>${translate('tabmenu.tm38')}</button>
>
${translate('tabmenu.tm38')}
</button>
</div>
</div>
`
}

View File

@ -25,7 +25,6 @@ registerTranslateConfig({
loader: lang => fetch(`/language/${lang}.json`).then(res => res.json())
})
export const parentEpml = new Epml({ type: 'WINDOW', source: window.parent })
class ShowPlugin extends connect(store)(LitElement) {
@ -43,7 +42,7 @@ class ShowPlugin extends connect(store)(LitElement) {
chatLastSeen: { type: Array },
chatHeads: { type: Array },
proxyPort: { type: Number },
isOpenDevDialog: {type: Boolean}
isOpenDevDialog: { type: Boolean }
}
}
@ -211,7 +210,7 @@ class ShowPlugin extends connect(store)(LitElement) {
font-weight: bold;
background: none;
border: none;
color: var(--accent-color);
color: var(--general-color-blue);
font-size: 2em;
cursor: pointer;
transition: color 0.3s;
@ -229,7 +228,7 @@ class ShowPlugin extends connect(store)(LitElement) {
max-height: 28px;
padding: 5px 5px;
font-size: 14px;
background-color: var(--accent-color);
background-color: var(--general-color-blue);
color: white;
border: 1px solid transparent;
border-radius: 3px;
@ -248,7 +247,7 @@ class ShowPlugin extends connect(store)(LitElement) {
.iconActive {
position: absolute;
top: 5px;
color: var(--accent-color);
color: var(--general-color-blue);
--mdc-icon-size: 24px;
}
@ -260,7 +259,7 @@ class ShowPlugin extends connect(store)(LitElement) {
}
.tab:hover .iconInactive {
color: var(--accent-color);
color: var(--general-color-blue);
}
.count {
@ -1078,7 +1077,7 @@ class NavBar extends connect(store)(LitElement) {
}
.resetIcon:hover {
color: var(--accent-color);
color: var(--general-color-blue);
font-weight: bold;
}
@ -1092,7 +1091,7 @@ class NavBar extends connect(store)(LitElement) {
}
.searchIcon:hover {
color: var(--accent-color);
color: var(--general-color-blue);
font-weight: bold;
}
@ -1106,7 +1105,7 @@ class NavBar extends connect(store)(LitElement) {
}
.importIcon:hover {
color: var(--accent-color);
color: var(--general-color-blue);
font-weight: bold;
}
@ -1120,7 +1119,7 @@ class NavBar extends connect(store)(LitElement) {
}
.exportIcon:hover {
color: var(--accent-color);
color: var(--general-color-blue);
font-weight: bold;
}
@ -1141,7 +1140,7 @@ class NavBar extends connect(store)(LitElement) {
paper-dialog button {
padding: 5px 10px;
font-size: 18px;
background-color: var(--accent-color);
background-color: var(--general-color-blue);
color: white;
border: 1px solid transparent;
border-radius: 5px;
@ -1175,7 +1174,7 @@ class NavBar extends connect(store)(LitElement) {
}
vaadin-text-field[focused]::part(input-field) {
border-color: var(--accent-color);
border-color: var(--general-color-blue);
}
`

View File

@ -70,7 +70,7 @@ class SettingsPage extends connect(store)(LitElement) {
display: inline-block;
width: 150px;
font-weight: 600;
color: var(--accent-color);
color: var(--general-color-blue);
border: 1px solid transparent;
}
@ -87,7 +87,7 @@ class SettingsPage extends connect(store)(LitElement) {
}
.buttonBlue {
color: var(--accent-color);
color: var(--general-color-blue);
}
.floatleft {

View File

@ -22,7 +22,9 @@ import {
UPDATE_NODE_STATUS,
SET_PROFILE_DATA,
ALLOW_QAPP_FRIENDS_LIST,
REMOVE_QAPP_FRIENDS_LIST
REMOVE_QAPP_FRIENDS_LIST,
ALLOW_SHOW_SYNC_INDICATOR,
REMOVE_SHOW_SYNC_INDICATOR
} from '../app-action-types.js'
export const doUpdateBlockInfo = (blockObj) => {
@ -164,18 +166,21 @@ export const setNewTab = (payload) => {
payload
}
}
export const setNewNotification = (payload) => {
return {
type: SET_NEW_NOTIFICATION,
payload
}
}
export const setIsOpenDevDialog = (payload)=> {
export const setIsOpenDevDialog = (payload) => {
return {
type: IS_OPEN_DEV_DIALOG,
payload
}
}
export const addTabInfo = (payload) => {
return {
type: ADD_TAB_INFO,
@ -196,16 +201,31 @@ export const setSideEffectAction = (payload)=> {
payload
}
}
export const setProfileData = (payload)=> {
export const setProfileData = (payload) => {
return {
type: SET_PROFILE_DATA,
payload
}
}
export const setCoinBalances = (payload)=> {
export const setCoinBalances = (payload) => {
return {
type: SET_COIN_BALANCES,
payload
}
}
export const allowShowSyncIndicator = (payload) => {
return {
type: ALLOW_SHOW_SYNC_INDICATOR,
payload
}
}
export const removeShowSyncIndicator = (payload) => {
return {
type: REMOVE_SHOW_SYNC_INDICATOR,
payload
}
}

View File

@ -34,6 +34,8 @@ export const IS_OPEN_DEV_DIALOG = 'IS_OPEN_DEV_DIALOG'
export const SET_NEW_NOTIFICATION = 'SET_NEW_NOTIFICATION'
export const SET_SIDE_EFFECT= 'SET_SIDE_EFFECT'
export const SET_PROFILE_DATA = 'SET_PROFILE_DATA'
export const SET_COIN_BALANCES= 'SET_COIN_BALANCES'
export const ALLOW_QAPP_FRIENDS_LIST= 'ALLOW_QAPP_FRIENDS_LIST'
export const REMOVE_QAPP_FRIENDS_LIST= 'REMOVE_QAPP_FRIENDS_LIST'
export const SET_COIN_BALANCES = 'SET_COIN_BALANCES'
export const ALLOW_QAPP_FRIENDS_LIST = 'ALLOW_QAPP_FRIENDS_LIST'
export const REMOVE_QAPP_FRIENDS_LIST = 'REMOVE_QAPP_FRIENDS_LIST'
export const ALLOW_SHOW_SYNC_INDICATOR = 'ALLOW_SHOW_SYNC_INDICATOR'
export const REMOVE_SHOW_SYNC_INDICATOR = 'REMOVE_SHOW_SYNC_INDICATOR'

View File

@ -38,7 +38,9 @@ import {
UPDATE_NODE_STATUS,
SET_PROFILE_DATA,
ALLOW_QAPP_FRIENDS_LIST,
REMOVE_QAPP_FRIENDS_LIST
REMOVE_QAPP_FRIENDS_LIST,
ALLOW_SHOW_SYNC_INDICATOR,
REMOVE_SHOW_SYNC_INDICATOR
} from './app-action-types.js'
import {initWorkersReducer} from './reducers/init-workers.js'
import {loginReducer} from './reducers/login-reducer.js'
@ -49,8 +51,6 @@ const chatLastSeen = localForage.createInstance({
name: "chat-last-seen",
});
const INITIAL_STATE = {
loggedIn: false,
drawerOpen: false,
@ -88,6 +88,7 @@ const INITIAL_STATE = {
qAPPAutoAuth: loadStateFromLocalStorage('qAPPAutoAuth') || false,
qAPPAutoLists: loadStateFromLocalStorage('qAPPAutoLists') || false,
qAPPFriendsList: loadStateFromLocalStorage('qAPPFriendsList') || false,
showSyncIndicator: loadStateFromLocalStorage('showSyncIndicator') || false,
chatLastSeen: [],
newTab: null,
tabInfo: {},
@ -228,6 +229,7 @@ export default (state = INITIAL_STATE, action) => {
qAPPAutoAuth: action.payload
}
}
case ALLOW_QAPP_AUTO_LISTS: {
saveStateToLocalStorage("qAPPAutoLists", true)
return {
@ -266,6 +268,7 @@ export default (state = INITIAL_STATE, action) => {
chatLastSeen: action.payload
}
}
case ADD_CHAT_LAST_SEEN: {
const chatId = action.payload.key
const timestamp = action.payload.timestamp
@ -299,12 +302,14 @@ export default (state = INITIAL_STATE, action) => {
newTab: action.payload
}
}
case IS_OPEN_DEV_DIALOG: {
return {
...state,
isOpenDevDialog: action.payload
}
}
case ADD_TAB_INFO: {
const newTabInfo = action.payload
if (state.tabInfo[newTabInfo.id] && state.tabInfo[newTabInfo.id].name && newTabInfo.name === state.tabInfo[newTabInfo.id].name) break
@ -319,6 +324,7 @@ export default (state = INITIAL_STATE, action) => {
}
}
}
case SET_TAB_NOTIFICATIONS: {
const count = action.payload.count
const name = action.payload.name
@ -346,18 +352,21 @@ export default (state = INITIAL_STATE, action) => {
newNotification: action.payload
}
}
case SET_SIDE_EFFECT: {
return {
...state,
sideEffectAction: action.payload
}
}
case SET_PROFILE_DATA: {
return {
...state,
profileData: action.payload
}
}
case SET_COIN_BALANCES: {
const copyBalances = {...state.coinBalances}
copyBalances[action.payload.type] = {
@ -370,6 +379,22 @@ export default (state = INITIAL_STATE, action) => {
}
}
case ALLOW_SHOW_SYNC_INDICATOR: {
saveStateToLocalStorage("showSyncIndicator", true)
return {
...state,
showSyncIndicator: action.payload
}
}
case REMOVE_SHOW_SYNC_INDICATOR: {
saveStateToLocalStorage("showSyncIndicator", false)
return {
...state,
showSyncIndicator: action.payload
}
}
default:
return state
}

View File

@ -69,7 +69,7 @@ export const chatStyles = css`
.forwarded-text {
user-select: none;
color: var(--accent-color);
color: var(--general-color-blue);
margin-bottom: 5px;
}