This commit is contained in:
AlphaX-Projects 2023-04-14 10:08:17 +02:00
commit b4fbb4970f
5 changed files with 80 additions and 31 deletions

View File

@ -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",

View File

@ -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() {

View File

@ -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> &nbsp;&nbsp;&nbsp;
${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

View File

@ -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>&nbsp;${translate("grouppage.gchange51")}</mwc-button>`, root) render(html`<mwc-button @click=${() => this.joinGroup(data.item)}><mwc-icon>queue</mwc-icon>&nbsp;${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>&nbsp;${translate("managegroup.mg6")}</mwc-button>` return html`<mwc-button class="red" @click=${() => this.openCreateBanMemberDialog(groupObj)}><mwc-icon>hardware</mwc-icon>&nbsp;${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>&nbsp;${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>&nbsp;${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>&nbsp;${translate("grouppage.gchange40")}</mwc-button>` return html`<mwc-button class="warning" @click=${() => this.manageGroupOwner(groupObj)}><mwc-icon>create</mwc-icon>&nbsp;${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>&nbsp;${translate("grouppage.gchange40")}</mwc-button>` return html`<mwc-button class="warning" @click=${() => this.manageGroupAdmin(groupObj)}><mwc-icon>create</mwc-icon>&nbsp;${translate("grouppage.gchange40")}</mwc-button>`
} else { } else {
return html`<mwc-button @click=${() => this.leaveGroup(groupObj)}><mwc-icon>exit_to_app</mwc-icon>&nbsp;${translate("grouppage.gchange50")}</mwc-button>` return html`<mwc-button @click=${() => this.leaveGroup(groupObj)}><mwc-icon>exit_to_app</mwc-icon>&nbsp;${translate("grouppage.gchange50")}</mwc-button>`
} }

View File

@ -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)