mirror of
https://github.com/Qortal/qortal-ui.git
synced 2025-04-23 11:27:52 +00:00
Merge branch 'master' of https://github.com/Qortal/qortal-ui
This commit is contained in:
commit
b4fbb4970f
@ -525,7 +525,27 @@
|
|||||||
"bchange13": "Error occurred when trying to block this registered name. Please try again!",
|
"bchange13": "Error occurred when trying to block this registered name. Please try again!",
|
||||||
"bchange14": "Error occurred when trying to unblock this registered name. Please try again!",
|
"bchange14": "Error occurred when trying to unblock this registered name. Please try again!",
|
||||||
"bchange15": "Can't delete data from followed names. Please unfollow first.",
|
"bchange15": "Can't delete data from followed names. Please unfollow first.",
|
||||||
"bchange16": "Error occurred when trying to delete this resource. Please try again!"
|
"bchange16": "Error occurred when trying to delete this resource. Please try again!",
|
||||||
|
"bchange17": "User declined to share account details",
|
||||||
|
"bchange18": "has requested authentication. Would you like to authenticate?",
|
||||||
|
"bchange19": "Do you give this application permission to publish to QDN?",
|
||||||
|
"bchange20": "Do you give this application permission to get your wallet balance?",
|
||||||
|
"bchange21": "Fetch Wallet Failed. Please try again!",
|
||||||
|
"bchange22": "Do you give this application permission to send a chat message?",
|
||||||
|
"bchange23": "Message Sent!",
|
||||||
|
"bchange24": "This shares your QORT address and allows your account to interact with the",
|
||||||
|
"bchange25": "No sensitive data is shared.",
|
||||||
|
"bchange26": "Always authenticate automatically",
|
||||||
|
"bchange27": "Reject",
|
||||||
|
"bchange28": "Accept",
|
||||||
|
"bchange29": "Instant publish (requires 0.001 QORT fee)",
|
||||||
|
"bchange30": "Service",
|
||||||
|
"bchange31": "Name",
|
||||||
|
"bchange32": "Identifier",
|
||||||
|
"bchange33": "Instant publish",
|
||||||
|
"bchange34": "Filename",
|
||||||
|
"bchange35": "Do you give this application permission to send coins?",
|
||||||
|
"bchange36": "Do you want to publish instant to QDN without computing proof-of-work?"
|
||||||
},
|
},
|
||||||
"datapage": {
|
"datapage": {
|
||||||
"dchange1": "Data Management",
|
"dchange1": "Data Management",
|
||||||
|
@ -2,6 +2,7 @@ import { LitElement, html, css } from 'lit'
|
|||||||
import { connect } from 'pwa-helpers'
|
import { connect } from 'pwa-helpers'
|
||||||
import { store } from '../../store.js'
|
import { store } from '../../store.js'
|
||||||
import { stateAwait } from '../../stateAwait.js'
|
import { stateAwait } from '../../stateAwait.js'
|
||||||
|
import { translate, translateUnsafeHTML } from 'lit-translate'
|
||||||
|
|
||||||
import '@material/mwc-button'
|
import '@material/mwc-button'
|
||||||
import '@material/mwc-icon'
|
import '@material/mwc-icon'
|
||||||
@ -36,6 +37,7 @@ class LoginView extends connect(store)(LitElement) {
|
|||||||
config: { type: Object },
|
config: { type: Object },
|
||||||
rippleLoadingMessage: { type: String },
|
rippleLoadingMessage: { type: String },
|
||||||
selectedPageElement: {},
|
selectedPageElement: {},
|
||||||
|
nodeConfig: { type: Object },
|
||||||
theme: { type: String, reflect: true }
|
theme: { type: String, reflect: true }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -132,10 +134,8 @@ class LoginView extends connect(store)(LitElement) {
|
|||||||
max-height:var(--window-height);
|
max-height:var(--window-height);
|
||||||
margin-right: auto;
|
margin-right: auto;
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
|
|
||||||
width: calc(100vw);
|
width: calc(100vw);
|
||||||
}
|
}
|
||||||
|
|
||||||
.qortal-logo {
|
.qortal-logo {
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
margin-right: auto;
|
margin-right: auto;
|
||||||
@ -202,7 +202,6 @@ class LoginView extends connect(store)(LitElement) {
|
|||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
}
|
}
|
||||||
#loginContainerPages [page="welcome"] {
|
#loginContainerPages [page="welcome"] {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@media only screen and (max-width: ${getComputedStyle(document.body).getPropertyValue('--layout-breakpoint-tablet')}) {
|
@media only screen and (max-width: ${getComputedStyle(document.body).getPropertyValue('--layout-breakpoint-tablet')}) {
|
||||||
@ -222,7 +221,6 @@ class LoginView extends connect(store)(LitElement) {
|
|||||||
padding-left:12px;
|
padding-left:12px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes fade {
|
@keyframes fade {
|
||||||
from {
|
from {
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
@ -258,7 +256,6 @@ class LoginView extends connect(store)(LitElement) {
|
|||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<div class="login-page" ?hidden=${this.loggedIn}>
|
<div class="login-page" ?hidden=${this.loggedIn}>
|
||||||
<mwc-fab icon="settings" style="position:fixed; right:24px; bottom:24px;" @click=${() => settings.show()}></mwc-fab>
|
<mwc-fab icon="settings" style="position:fixed; right:24px; bottom:24px;" @click=${() => settings.show()}></mwc-fab>
|
||||||
<span style="position:fixed; left:24px; bottom:24px;"><qort-theme-toggle></qort-theme-toggle></span>
|
<span style="position:fixed; left:24px; bottom:24px;"><qort-theme-toggle></qort-theme-toggle></span>
|
||||||
@ -266,6 +263,7 @@ class LoginView extends connect(store)(LitElement) {
|
|||||||
<div class="login-card-center-container">
|
<div class="login-card-center-container">
|
||||||
<div class="login-card" id="login-card">
|
<div class="login-card" id="login-card">
|
||||||
<img class="qortal-logo" src="${this.config.coin.logo}">
|
<img class="qortal-logo" src="${this.config.coin.logo}">
|
||||||
|
<h5 style="color:var(--mdc-theme-primary)" ?hidden="${this.selectedPage != "welcome"}">${translate("appinfo.uiversion")}: ${this.nodeConfig.version ? this.nodeConfig.version : ''}</h5>
|
||||||
<iron-pages selected="${this.selectedPage}" attr-for-selected="page" id="loginContainerPages">
|
<iron-pages selected="${this.selectedPage}" attr-for-selected="page" id="loginContainerPages">
|
||||||
<welcome-page @next=${e => this.selectedPageElement.next(e)} page="welcome"></welcome-page>
|
<welcome-page @next=${e => this.selectedPageElement.next(e)} page="welcome"></welcome-page>
|
||||||
<create-account-section @next=${e => this.selectedPageElement.next(e)} page="create-account"></create-account-section>
|
<create-account-section @next=${e => this.selectedPageElement.next(e)} page="create-account"></create-account-section>
|
||||||
@ -294,6 +292,7 @@ class LoginView extends connect(store)(LitElement) {
|
|||||||
if (this.loggedIn && !state.app.loggedIn) this.cleanup()
|
if (this.loggedIn && !state.app.loggedIn) this.cleanup()
|
||||||
this.loggedIn = state.app.loggedIn
|
this.loggedIn = state.app.loggedIn
|
||||||
this.config = state.config
|
this.config = state.config
|
||||||
|
this.nodeConfig = state.app.nodeConfig
|
||||||
}
|
}
|
||||||
|
|
||||||
cleanup() {
|
cleanup() {
|
||||||
|
@ -12,6 +12,7 @@ class WalletProfile extends connect(store)(LitElement) {
|
|||||||
wallet: { type: Object },
|
wallet: { type: Object },
|
||||||
nodeConfig: { type: Object },
|
nodeConfig: { type: Object },
|
||||||
accountInfo: { type: Object },
|
accountInfo: { type: Object },
|
||||||
|
imageUrl: { type: String },
|
||||||
theme: { type: String, reflect: true }
|
theme: { type: String, reflect: true }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -30,6 +31,7 @@ class WalletProfile extends connect(store)(LitElement) {
|
|||||||
names: [],
|
names: [],
|
||||||
addressInfo: {}
|
addressInfo: {}
|
||||||
}
|
}
|
||||||
|
this.imageUrl = ''
|
||||||
this.theme = localStorage.getItem('qortalTheme') ? localStorage.getItem('qortalTheme') : 'light'
|
this.theme = localStorage.getItem('qortalTheme') ? localStorage.getItem('qortalTheme') : 'light'
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -42,32 +44,27 @@ class WalletProfile extends connect(store)(LitElement) {
|
|||||||
background: var(--sidetopbar);
|
background: var(--sidetopbar);
|
||||||
color: var(--black);
|
color: var(--black);
|
||||||
}
|
}
|
||||||
|
|
||||||
#profileInMenu:hover {
|
#profileInMenu:hover {
|
||||||
}
|
}
|
||||||
|
|
||||||
#accountIcon {
|
#accountIcon {
|
||||||
font-size:48px;
|
font-size:48px;
|
||||||
color: var(--mdc-theme-primary);
|
color: var(--mdc-theme-primary);
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
}
|
}
|
||||||
|
|
||||||
#accountName {
|
#accountName {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
font-weight:500;
|
font-weight:500;
|
||||||
display: inline-block;
|
|
||||||
width:100%;
|
width:100%;
|
||||||
padding-bottom:8px;
|
padding-bottom:8px;
|
||||||
|
display: flex;
|
||||||
}
|
}
|
||||||
|
|
||||||
#blocksMinted {
|
#blocksMinted {
|
||||||
margin:0;
|
margin:0;
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
font-size: 11px;
|
font-size: 12px;
|
||||||
color: #03a9f4;
|
color: #03a9f4;
|
||||||
}
|
}
|
||||||
|
|
||||||
#address {
|
#address {
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
@ -76,16 +73,32 @@ class WalletProfile extends connect(store)(LitElement) {
|
|||||||
margin-top:8px;
|
margin-top:8px;
|
||||||
font-size:11px;
|
font-size:11px;
|
||||||
}
|
}
|
||||||
|
.round-fullinfo {
|
||||||
|
position: relative;
|
||||||
|
width: 68px;
|
||||||
|
height: 68px;
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
.full-info-logo {
|
||||||
|
width: 68px;
|
||||||
|
height: 68px;
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
.inline-block-child {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|
||||||
<div id="profileInMenu">
|
<div id="profileInMenu">
|
||||||
<div style="padding: 8px 0;">
|
<div style="padding: 8px 0;">
|
||||||
<span id="accountName">
|
<div id="accountName">
|
||||||
${this.accountInfo.names.length !== 0 ? this.accountInfo.names[0].name : ''}
|
<div id="child inline-block-child" class="full-info-logo">${this.getAvatar()}</div>
|
||||||
</span>
|
|
||||||
${this.accountInfo.addressInfo ? html`<span style="margin-bottom: 8px; display: inline-block; font-size: 14px;">${translate("walletprofile.minterlevel")} - <span style="color: #03a9f4;">${this.accountInfo.addressInfo.level} ${this.accountInfo.addressInfo.flags === 1 ? html`<strong>(F)</strong>` : ''}</span>` : ''}
|
<div id="inline-block-child">
|
||||||
<p id="blocksMinted">${translate("walletprofile.blocksminted")} - ${this.accountInfo.addressInfo.blocksMinted + this.accountInfo.addressInfo.blocksMintedAdjustment}</p>
|
<div>${this.accountInfo.names.length !== 0 ? this.accountInfo.names[0].name : ''}</div>
|
||||||
|
<div>${this.accountInfo.addressInfo ? html`<span style="margin-bottom: 8px; display: inline-block; font-size: 14px;">${translate("walletprofile.minterlevel")} - <span style="color: #03a9f4;">${this.accountInfo.addressInfo.level} ${this.accountInfo.addressInfo.flags === 1 ? html`<strong>(F)</strong>` : ''}</span>` : ''}</div>
|
||||||
|
<p id="blocksMinted">${translate("walletprofile.blocksminted")} - ${this.accountInfo.addressInfo.blocksMinted + this.accountInfo.addressInfo.blocksMintedAdjustment}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<p id="address">${this.wallet.addresses[0].address}</p>
|
<p id="address">${this.wallet.addresses[0].address}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -106,6 +119,23 @@ class WalletProfile extends connect(store)(LitElement) {
|
|||||||
this.toast = container.appendChild(toast)
|
this.toast = container.appendChild(toast)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async getAllWithAddress(myAddress) {
|
||||||
|
await this.getAddressUserAvatar(myAddress)
|
||||||
|
}
|
||||||
|
|
||||||
|
getAvatar() {
|
||||||
|
const avatarNode = store.getState().app.nodeConfig.knownNodes[store.getState().app.nodeConfig.node]
|
||||||
|
const avatarUrl = avatarNode.protocol + '://' + avatarNode.domain + ':' + avatarNode.port
|
||||||
|
const url = `${avatarUrl}/arbitrary/THUMBNAIL/${this.accountInfo.names[0].name}/qortal_avatar?async=true&apiKey=${this.getApiKey()}`
|
||||||
|
return html`<img class="round-fullinfo" src="${url}" onerror="this.src='/img/incognito.png';" />`
|
||||||
|
}
|
||||||
|
|
||||||
|
getApiKey() {
|
||||||
|
const apiNode = store.getState().app.nodeConfig.knownNodes[store.getState().app.nodeConfig.node];
|
||||||
|
let apiKey = apiNode.apiKey;
|
||||||
|
return apiKey;
|
||||||
|
}
|
||||||
|
|
||||||
stateChanged(state) {
|
stateChanged(state) {
|
||||||
this.wallet = state.app.wallet
|
this.wallet = state.app.wallet
|
||||||
this.nodeConfig = state.app.nodeConfig
|
this.nodeConfig = state.app.nodeConfig
|
||||||
|
@ -1320,9 +1320,9 @@ class GroupManagement extends LitElement {
|
|||||||
<div class="divCard">
|
<div class="divCard">
|
||||||
<h3 style="margin: 0; margin-bottom: 1em; text-align: center;">${translate("grouppage.gchange3")}</h3>
|
<h3 style="margin: 0; margin-bottom: 1em; text-align: center;">${translate("grouppage.gchange3")}</h3>
|
||||||
<vaadin-grid theme="large" id="joinedGroupsGrid" ?hidden="${this.isEmptyArray(this.joinedGroups)}" .items="${this.joinedGroups}" aria-label="Joined Groups" all-rows-visible>
|
<vaadin-grid theme="large" id="joinedGroupsGrid" ?hidden="${this.isEmptyArray(this.joinedGroups)}" .items="${this.joinedGroups}" aria-label="Joined Groups" all-rows-visible>
|
||||||
<vaadin-grid-column width="8rem" flex-grow="0" header="${translate("grouppage.gchange54")}" path="memberCount"></vaadin-grid-column>
|
<vaadin-grid-sort-column width="8rem" flex-grow="0" header="${translate("grouppage.gchange54")}" path="memberCount"></vaadin-grid-sort-column>
|
||||||
<vaadin-grid-column header="${translate("grouppage.gchange4")}" path="groupName"></vaadin-grid-column>
|
<vaadin-grid-sort-column header="${translate("grouppage.gchange4")}" path="groupName"></vaadin-grid-sort-column>
|
||||||
<vaadin-grid-column header="${translate("grouppage.gchange5")}" path="description"></vaadin-grid-column>
|
<vaadin-grid-sort-column header="${translate("grouppage.gchange5")}" path="description"></vaadin-grid-sort-column>
|
||||||
<vaadin-grid-column width="11rem" flex-grow="0" header="${translate("grouppage.gchange6")}" .renderer=${(root, column, data) => {
|
<vaadin-grid-column width="11rem" flex-grow="0" header="${translate("grouppage.gchange6")}" .renderer=${(root, column, data) => {
|
||||||
render(html`${this.renderRole(data.item)}`, root)
|
render(html`${this.renderRole(data.item)}`, root)
|
||||||
}}></vaadin-grid-column>
|
}}></vaadin-grid-column>
|
||||||
@ -1382,9 +1382,9 @@ class GroupManagement extends LitElement {
|
|||||||
</vaadin-text-field><br>
|
</vaadin-text-field><br>
|
||||||
<vaadin-grid theme="large" id="publicGroupsGrid" .items="${this.filteredItems}" aria-label="Public Open Groups" all-rows-visible>
|
<vaadin-grid theme="large" id="publicGroupsGrid" .items="${this.filteredItems}" aria-label="Public Open Groups" all-rows-visible>
|
||||||
<vaadin-grid-sort-column width="8rem" flex-grow="0" header="${translate("grouppage.gchange54")}" path="memberCount"></vaadin-grid-sort-column>
|
<vaadin-grid-sort-column width="8rem" flex-grow="0" header="${translate("grouppage.gchange54")}" path="memberCount"></vaadin-grid-sort-column>
|
||||||
<vaadin-grid-column header="${translate("grouppage.gchange4")}" path="groupName"></vaadin-grid-column>
|
<vaadin-grid-sort-column header="${translate("grouppage.gchange4")}" path="groupName"></vaadin-grid-sort-column>
|
||||||
<vaadin-grid-column header="${translate("grouppage.gchange5")}" path="description"></vaadin-grid-column>
|
<vaadin-grid-sort-column header="${translate("grouppage.gchange5")}" path="description"></vaadin-grid-sort-column>
|
||||||
<vaadin-grid-column header="${translate("grouppage.gchange10")}" path="owner"></vaadin-grid-column>
|
<vaadin-grid-sort-column header="${translate("grouppage.gchange10")}" path="owner"></vaadin-grid-sort-column>
|
||||||
<vaadin-grid-column width="11rem" flex-grow="0" header="${translate("grouppage.gchange7")}" .renderer=${(root, column, data) => {
|
<vaadin-grid-column width="11rem" flex-grow="0" header="${translate("grouppage.gchange7")}" .renderer=${(root, column, data) => {
|
||||||
render(html`<mwc-button @click=${() => this.joinGroup(data.item)}><mwc-icon>queue</mwc-icon> ${translate("grouppage.gchange51")}</mwc-button>`, root)
|
render(html`<mwc-button @click=${() => this.joinGroup(data.item)}><mwc-icon>queue</mwc-icon> ${translate("grouppage.gchange51")}</mwc-button>`, root)
|
||||||
}}></vaadin-grid-column>
|
}}></vaadin-grid-column>
|
||||||
@ -1979,7 +1979,7 @@ class GroupManagement extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
renderBanButton(groupObj) {
|
renderBanButton(groupObj) {
|
||||||
return html`<mwc-button class="warning" @click=${() => this.openCreateBanMemberDialog(groupObj)}><mwc-icon>create</mwc-icon> ${translate("managegroup.mg6")}</mwc-button>`
|
return html`<mwc-button class="red" @click=${() => this.openCreateBanMemberDialog(groupObj)}><mwc-icon>hardware</mwc-icon> ${translate("managegroup.mg6")}</mwc-button>`
|
||||||
}
|
}
|
||||||
|
|
||||||
openCreateBanMemberDialog(groupObj) {
|
openCreateBanMemberDialog(groupObj) {
|
||||||
@ -2029,7 +2029,7 @@ class GroupManagement extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
renderKickGroupMemberButton(groupObj) {
|
renderKickGroupMemberButton(groupObj) {
|
||||||
return html`<mwc-button class="red" title="${translate("managegroup.mg31")}" @click=${() => this.openKickGroupMemberDialog(groupObj)}><mwc-icon>exit_to_app</mwc-icon> ${translate("managegroup.mg7")}</mwc-button>`
|
return html`<mwc-button class="warning" title="${translate("managegroup.mg31")}" @click=${() => this.openKickGroupMemberDialog(groupObj)}><mwc-icon>exit_to_app</mwc-icon> ${translate("managegroup.mg7")}</mwc-button>`
|
||||||
}
|
}
|
||||||
|
|
||||||
openKickGroupMemberDialog(groupObj) {
|
openKickGroupMemberDialog(groupObj) {
|
||||||
@ -2674,9 +2674,9 @@ class GroupManagement extends LitElement {
|
|||||||
|
|
||||||
renderManageButton(groupObj) {
|
renderManageButton(groupObj) {
|
||||||
if (groupObj.owner === this.selectedAddress.address) {
|
if (groupObj.owner === this.selectedAddress.address) {
|
||||||
return html`<mwc-button @click=${() => this.manageGroupOwner(groupObj)}><mwc-icon>create</mwc-icon> ${translate("grouppage.gchange40")}</mwc-button>`
|
return html`<mwc-button class="warning" @click=${() => this.manageGroupOwner(groupObj)}><mwc-icon>create</mwc-icon> ${translate("grouppage.gchange40")}</mwc-button>`
|
||||||
} else if (groupObj.isAdmin === true) {
|
} else if (groupObj.isAdmin === true) {
|
||||||
return html`<mwc-button @click=${() => this.manageGroupAdmin(groupObj)}><mwc-icon>create</mwc-icon> ${translate("grouppage.gchange40")}</mwc-button>`
|
return html`<mwc-button class="warning" @click=${() => this.manageGroupAdmin(groupObj)}><mwc-icon>create</mwc-icon> ${translate("grouppage.gchange40")}</mwc-button>`
|
||||||
} else {
|
} else {
|
||||||
return html`<mwc-button @click=${() => this.leaveGroup(groupObj)}><mwc-icon>exit_to_app</mwc-icon> ${translate("grouppage.gchange50")}</mwc-button>`
|
return html`<mwc-button @click=${() => this.leaveGroup(groupObj)}><mwc-icon>exit_to_app</mwc-icon> ${translate("grouppage.gchange50")}</mwc-button>`
|
||||||
}
|
}
|
||||||
|
@ -679,7 +679,7 @@ class NamesMarket extends LitElement {
|
|||||||
|
|
||||||
async updatePageSoldSize() {
|
async updatePageSoldSize() {
|
||||||
this.filteredSoldItems = []
|
this.filteredSoldItems = []
|
||||||
this.marketSoldNames.sort((a, b) => parseFloat(a.amount) - parseFloat(b.amount))
|
this.marketSoldNames.sort((b, a) => parseFloat(a.amount) - parseFloat(b.amount))
|
||||||
this.filteredSoldItems = this.marketSoldNames
|
this.filteredSoldItems = this.marketSoldNames
|
||||||
await this.setSoldPages()
|
await this.setSoldPages()
|
||||||
await this.updateItemsSoldFromPage(1, true)
|
await this.updateItemsSoldFromPage(1, true)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user