mirror of
https://github.com/Qortal/qortal-ui.git
synced 2025-02-11 17:55:51 +00:00
add name menu
This commit is contained in:
parent
fe3991eb16
commit
3762670e31
@ -434,10 +434,15 @@
|
||||
"wcchange9": "Senden fehlgeschlagen, bitte erneut versuchen..."
|
||||
},
|
||||
"blockpage": {
|
||||
"bcchange1": "blockieren",
|
||||
"bcchange1": "Benutzer Blockieren",
|
||||
"bcchange2": "Dieser Benutzer wurde erfolgreich blockiert!",
|
||||
"bcchange3": "Beim Blockieren dieses Benutzers ist ein Fehler aufgetreten. Bitte versuche es erneut!",
|
||||
"bcchange4": "Kein Name registriert"
|
||||
"bcchange4": "Kein Name registriert",
|
||||
"bcchange5": "Diesen Benutzer Blockieren",
|
||||
"bcchange6": "Möchten Sie diesen Benutzer wirklich blockieren?",
|
||||
"bcchange7": "MENÜ",
|
||||
"bcchange8": "Adresse Kopieren",
|
||||
"bcchange9": "Private Nachricht"
|
||||
},
|
||||
"grouppage": {
|
||||
"gchange1": "Qortal-Gruppen",
|
||||
|
@ -434,10 +434,15 @@
|
||||
"wcchange9": "El envío ha fallado, por favor intente de nuevo..."
|
||||
},
|
||||
"blockpage": {
|
||||
"bcchange1": "bloquear",
|
||||
"bcchange1": "Bloquear Usuario",
|
||||
"bcchange2": "Se ha bloqueado con éxito a este usuario!",
|
||||
"bcchange3": "Ha ocurrido un error al intentar bloquear este usuario. Por favor, inténtelo de nuevo!",
|
||||
"bcchange4": "Nombre no registrado"
|
||||
"bcchange4": "Nombre no registrado",
|
||||
"bcchange5": "Bloquear solicitud de usuario",
|
||||
"bcchange6": "Estás seguro de bloquear a este usuario?",
|
||||
"bcchange7": "MENÚ",
|
||||
"bcchange8": "Copiar Dirección",
|
||||
"bcchange9": "Mensaje Privado"
|
||||
},
|
||||
"grouppage": {
|
||||
"gchange1": "Grupos Qortal",
|
||||
|
@ -434,10 +434,15 @@
|
||||
"wcchange9": "Échec de l’envoi, veuillez réessayer..."
|
||||
},
|
||||
"blockpage": {
|
||||
"bcchange1": "bloquer",
|
||||
"bcchange1": "Bloquer un Utilisateur",
|
||||
"bcchange2": "Blocage réussi de cet utilisateur!",
|
||||
"bcchange3": "Une erreur s’est produite lors de la tentative de blocage de cet utilisateur. Veuillez réessayer!",
|
||||
"bcchange4": "Pas de nom enregistré"
|
||||
"bcchange4": "Pas de nom enregistré",
|
||||
"bcchange5": "Bloquer la demande de l'utilisateur",
|
||||
"bcchange6": "Êtes-vous sûr de bloquer cet utilisateur ?",
|
||||
"bcchange7": "MENU",
|
||||
"bcchange8": "Copier l'Adresse",
|
||||
"bcchange9": "Message Privé"
|
||||
},
|
||||
"grouppage": {
|
||||
"gchange1": "Groupes Qortal",
|
||||
|
@ -441,10 +441,15 @@
|
||||
"wcchange9": "भेजना विफल, कृपया पुन: प्रयास करें..."
|
||||
},
|
||||
"blockpage": {
|
||||
"bcchange1": "ब्लॉक",
|
||||
"bcchange1": "खंड उपयोगकर्ता",
|
||||
"bcchange2": "इस उपयोगकर्ता को सफलतापूर्वक अवरुद्ध!",
|
||||
"bcchange3": "इस उपयोगकर्ता को ब्लॉक करने की कोशिश करते समय त्रुटि हुई कृपया फिर से प्रयास करें!",
|
||||
"bcchange4": "कोई पंजीकृत नाम नहीं"
|
||||
"bcchange4": "कोई पंजीकृत नाम नहीं",
|
||||
"bcchange5": "उपयोगकर्ता अनुरोध को ब्लॉक करें",
|
||||
"bcchange6": "क्या आप वाकई इस उपयोगकर्ता को ब्लॉक करना चाहते हैं?",
|
||||
"bcchange7": "मेन्यू",
|
||||
"bcchange8": "कॉपी पता",
|
||||
"bcchange9": "निजी संदेश"
|
||||
},
|
||||
"grouppage": {
|
||||
"gchange1": "क्वॉर्टल समूह",
|
||||
|
@ -434,10 +434,15 @@
|
||||
"wcchange9": "Slanje neuspješno, molimo ponovite..."
|
||||
},
|
||||
"blockpage": {
|
||||
"bcchange1": "blokiraj",
|
||||
"bcchange1": "Blokirati Korisnika",
|
||||
"bcchange2": "Uspješno blokiran ovaj korisnik",
|
||||
"bcchange3": "Došlo je do pogreške prilikom pokušaja blokiranja ovog korisnika. Molimo pokušajte ponovno!",
|
||||
"bcchange4": "Nema registrirano ime"
|
||||
"bcchange4": "Nema registrirano ime",
|
||||
"bcchange5": "Blokiraj korisnički zahtjev",
|
||||
"bcchange6": "Jeste li sigurni da ćete blokirati ovog korisnika?",
|
||||
"bcchange7": "MENI",
|
||||
"bcchange8": "Kopiraj Adresu",
|
||||
"bcchange9": "Privatna Poruka"
|
||||
},
|
||||
"grouppage": {
|
||||
"gchange1": "Qortal Grupe",
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -434,10 +434,15 @@
|
||||
"wcchange9": "Invio fallito, riprovare..."
|
||||
},
|
||||
"blockpage": {
|
||||
"bcchange1": "blocco",
|
||||
"bcchange1": "Blocca Utente",
|
||||
"bcchange2": "Bloccato con successo questo utente!",
|
||||
"bcchange3": "Si è verificato un errore durante il tentativo di bloccare questo utente. Per favore, riprova!",
|
||||
"bcchange4": "Nessun nome registrato"
|
||||
"bcchange4": "Nessun nome registrato",
|
||||
"bcchange5": "Blocca richiesta utente",
|
||||
"bcchange6": "Sei sicuro di bloccare questo utente?",
|
||||
"bcchange7": "MENÙ",
|
||||
"bcchange8": "Copia Indirizzo",
|
||||
"bcchange9": "Messaggio Privato"
|
||||
},
|
||||
"grouppage": {
|
||||
"gchange1": "Gruppi Qortal",
|
||||
|
@ -434,10 +434,15 @@
|
||||
"wcchange9": "Wysyłanie nie powiodło się, spróbuj ponownie..."
|
||||
},
|
||||
"blockpage": {
|
||||
"bcchange1": "zablokuj",
|
||||
"bcchange2": "Pomyślnie zablokowano tego użytkownika!",
|
||||
"bcchange3": "Wystąpił błąd podczas próby zablokowania tego użytkownika. Spróbuj ponownie!",
|
||||
"bcchange4": "Brak zarejestrowanej nazwy"
|
||||
"bcchange1": "Zablokuj Użytkownika",
|
||||
"bcchange2": "Pomyślnie zablokowano tego użytkownika!",
|
||||
"bcchange3": "Wystąpił błąd podczas próby zablokowania tego użytkownika. Spróbuj ponownie!",
|
||||
"bcchange4": "Brak zarejestrowanej nazwy",
|
||||
"bcchange5": "Zablokuj żądanie użytkownika",
|
||||
"bcchange6": "Czy na pewno chcesz zablokować tego użytkownika?",
|
||||
"bcchange7": "MENU",
|
||||
"bcchange8": "Kopiuj Adres",
|
||||
"bcchange9": "Prywatna Wiadomość"
|
||||
},
|
||||
"grouppage": {
|
||||
"gchange1": "Grupy Qortal",
|
||||
|
@ -434,10 +434,15 @@
|
||||
"wcchange9": "Envio falhou, por favor tente novamente..."
|
||||
},
|
||||
"blockpage": {
|
||||
"bcchange1": "Bloquear",
|
||||
"bcchange1": "Bloquear Usuário",
|
||||
"bcchange2": "Bloqueou com sucesso este usuário!",
|
||||
"bcchange3": "Ocorreu um erro ao tentar bloquear esse usuário. Por favor, tente de novo!",
|
||||
"bcchange4": "Nenhum nome registrado"
|
||||
"bcchange4": "Nenhum nome registrado",
|
||||
"bcchange5": "Bloquear solicitação de usuário",
|
||||
"bcchange6": "Tem certeza de bloquear este usuário?",
|
||||
"bcchange7": "MENU",
|
||||
"bcchange8": "Copiar Endereço",
|
||||
"bcchange9": "Mensagem Privada"
|
||||
},
|
||||
"grouppage": {
|
||||
"gchange1": "Grupos Qortal",
|
||||
|
@ -434,10 +434,15 @@
|
||||
"wcchange9": "Slanje neuspešno, Molim pokušajte ponov..."
|
||||
},
|
||||
"blockpage": {
|
||||
"bcchange1": "blokirajte",
|
||||
"bcchange1": "Blokirajte Korisnika",
|
||||
"bcchange2": "Korisnik uspešno blokiran!",
|
||||
"bcchange3": "Desila se greška pri pokušaju blokiranja ovog korisnika. Molim pokušajte ponovo!",
|
||||
"bcchange4": "Bez registrovanih imena"
|
||||
"bcchange4": "Bez registrovanih imena",
|
||||
"bcchange5": "Blokiraj korisnički zahtev",
|
||||
"bcchange6": "Da li ste sigurni da blokirate ovog korisnika?",
|
||||
"bcchange7": "MENI",
|
||||
"bcchange8": "Kopiraj Adresu",
|
||||
"bcchange9": "Privatna Poruka"
|
||||
},
|
||||
"grouppage": {
|
||||
"gchange1": "Qortal Grupe",
|
||||
|
@ -434,10 +434,15 @@
|
||||
"wcchange9": "Sending failed, Please retry..."
|
||||
},
|
||||
"blockpage": {
|
||||
"bcchange1": "block",
|
||||
"bcchange1": "Block User",
|
||||
"bcchange2": "Successfully blocked this user!",
|
||||
"bcchange3": "Error occurred when trying to block this user. Please try again!",
|
||||
"bcchange4": "No registered name"
|
||||
"bcchange4": "No registered name",
|
||||
"bcchange5": "Block User Request",
|
||||
"bcchange6": "Are you sure to block this user ?",
|
||||
"bcchange7": "MENU",
|
||||
"bcchange8": "Copy Address",
|
||||
"bcchange9": "Private Message"
|
||||
},
|
||||
"grouppage": {
|
||||
"gchange1": "Qortal Groups",
|
||||
|
@ -434,10 +434,15 @@
|
||||
"wcchange9": "发送失败, 请再此尝试..."
|
||||
},
|
||||
"blockpage": {
|
||||
"bcchange1": "封锁",
|
||||
"bcchange1": "阻止用户",
|
||||
"bcchange2": "成功封锁此用户!",
|
||||
"bcchange3": "尝试封锁此用户时出错。 请再试一次!",
|
||||
"bcchange4": "没有注册名称"
|
||||
"bcchange4": "没有注册名称",
|
||||
"bcchange5": "阻止用户请求",
|
||||
"bcchange6": "你确定要屏蔽这个用户吗?",
|
||||
"bcchange7": "菜单",
|
||||
"bcchange8": "复制地址",
|
||||
"bcchange9": "私人讯息"
|
||||
},
|
||||
"grouppage": {
|
||||
"gchange1": "Qortal 群组",
|
||||
@ -580,7 +585,7 @@
|
||||
"rewarddialog2": "给",
|
||||
"rewarddialog3": "如果是的话,请保存下面的铸币密钥并添加到任何节点上,以允许它代表您铸币.",
|
||||
"rewarddialog4": "点击确认后,奖励分享密钥将会创建,但你必须将该密钥添加到节点中才能成功铸币并获得相对应的奖励.",
|
||||
"rewarddialog5": "您正在删除与此账号关联的奖励分享交易:",
|
||||
"rewarddialog5": "您正在删除与此账号关联的奖励分享交易:",
|
||||
"rewarddialog6": "点击确认后,奖励分享将被移除,已创建的铸币密钥也随之失效。"
|
||||
}
|
||||
}
|
||||
|
@ -434,10 +434,15 @@
|
||||
"wcchange9": "發送失敗, 請再此嘗試..."
|
||||
},
|
||||
"blockpage": {
|
||||
"bcchange1": "封鎖",
|
||||
"bcchange1": "阻止用戶",
|
||||
"bcchange2": "成功封鎖此用戶!",
|
||||
"bcchange3": "嘗試封鎖此用戶時出錯。 請再試一次!",
|
||||
"bcchange4": "沒有註冊名稱"
|
||||
"bcchange4": "沒有註冊名稱",
|
||||
"bcchange5": "阻止用戶請求",
|
||||
"bcchange6": "你確定要屏蔽這個用戶嗎?",
|
||||
"bcchange7": "菜單",
|
||||
"bcchange8": "複製地址",
|
||||
"bcchange9": "私人讯息"
|
||||
},
|
||||
"grouppage": {
|
||||
"gchange1": "Qortal 群組",
|
||||
|
@ -1,164 +0,0 @@
|
||||
import { LitElement, html, css } from 'lit'
|
||||
import { render } from 'lit/html.js'
|
||||
import { Epml } from '../../../epml.js'
|
||||
import snackbar from './snackbar.js'
|
||||
import { use, get, translate, translateUnsafeHTML, registerTranslateConfig } from 'lit-translate'
|
||||
|
||||
registerTranslateConfig({
|
||||
loader: lang => fetch(`/language/${lang}.json`).then(res => res.json())
|
||||
})
|
||||
|
||||
import '@material/mwc-button'
|
||||
import '@material/mwc-dialog'
|
||||
import '@material/mwc-icon'
|
||||
import '@material/mwc-snackbar'
|
||||
|
||||
const parentEpml = new Epml({ type: 'WINDOW', source: window.parent })
|
||||
|
||||
class BlockAddress extends LitElement {
|
||||
static get properties() {
|
||||
return {
|
||||
toblockaddress: { type: String, attribute: true },
|
||||
chatBlockedAdresses: { type: Array }
|
||||
}
|
||||
}
|
||||
|
||||
static get styles() {
|
||||
return css`
|
||||
* {
|
||||
--mdc-theme-primary: rgb(3, 169, 244);
|
||||
--mdc-theme-secondary: var(--mdc-theme-primary);
|
||||
--mdc-dialog-content-ink-color: var(--black);
|
||||
--mdc-theme-surface: var(--white);
|
||||
--mdc-theme-text-primary-on-background: var(--black);
|
||||
}
|
||||
`
|
||||
}
|
||||
|
||||
constructor() {
|
||||
super()
|
||||
this.chatBlockedAdresses = []
|
||||
}
|
||||
|
||||
render() {
|
||||
return html`
|
||||
<mwc-button dense unelevated label="${translate("blockpage.bcchange1")}" icon="voice_over_off" @click="${() => this.chatBlockAddress()}"></mwc-button>
|
||||
`
|
||||
}
|
||||
|
||||
firstUpdated() {
|
||||
|
||||
this.changeLanguage()
|
||||
this.getChatBlockedAdresses()
|
||||
|
||||
setInterval(() => {
|
||||
this.getChatBlockedAdresses();
|
||||
}, 60000)
|
||||
|
||||
window.addEventListener('storage', () => {
|
||||
const checkLanguage = localStorage.getItem('qortalLanguage')
|
||||
use(checkLanguage)
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
updated(changedProps) {
|
||||
}
|
||||
|
||||
changeLanguage() {
|
||||
const checkLanguage = localStorage.getItem('qortalLanguage')
|
||||
|
||||
if (checkLanguage === null || checkLanguage.length === 0) {
|
||||
localStorage.setItem('qortalLanguage', 'us')
|
||||
use('us')
|
||||
} else {
|
||||
use(checkLanguage)
|
||||
}
|
||||
}
|
||||
|
||||
async getChatBlockedAdresses() {
|
||||
const chatBlockedAdresses = await parentEpml.request('apiCall', {
|
||||
url: `/lists/blockedAddresses?apiKey=${this.getApiKey()}`
|
||||
})
|
||||
this.chatBlockedAdresses = chatBlockedAdresses
|
||||
}
|
||||
|
||||
async chatBlockAddress() {
|
||||
let address = this.toblockaddress
|
||||
|
||||
let items = [
|
||||
address
|
||||
]
|
||||
|
||||
let addressJsonString = JSON.stringify({ "items": items })
|
||||
|
||||
let ret = await parentEpml.request('apiCall', {
|
||||
url: `/lists/blockedAddresses?apiKey=${this.getApiKey()}`,
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: `${addressJsonString}`
|
||||
})
|
||||
|
||||
if (ret === true) {
|
||||
this.chatBlockedAdresses = this.chatBlockedAdresses.filter(item => item != address)
|
||||
this.chatBlockedAdresses.push(address)
|
||||
this.getChatBlockedList()
|
||||
let err1string = get("blockpage.bcchange2")
|
||||
snackbar.add({
|
||||
labelText: `${err1string}`,
|
||||
dismiss: true
|
||||
})
|
||||
} else {
|
||||
let err2string = get("blockpage.bcchange2")
|
||||
snackbar.add({
|
||||
labelText: `${err2string}`,
|
||||
dismiss: true
|
||||
})
|
||||
}
|
||||
return ret
|
||||
}
|
||||
|
||||
getChatBlockedList() {
|
||||
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 blockedAddressesUrl = `${nodeUrl}/lists/blockedAddresses?apiKey=${this.getApiKey()}`
|
||||
const err3string = 'No regitered name'
|
||||
|
||||
localStorage.removeItem("ChatBlockedAddresses")
|
||||
|
||||
var obj = [];
|
||||
|
||||
fetch(blockedAddressesUrl).then(response => {
|
||||
return response.json()
|
||||
}).then(data => {
|
||||
return data.map(item => {
|
||||
const noName = {
|
||||
name: err3string,
|
||||
owner: item
|
||||
}
|
||||
fetch(`${nodeUrl}/names/address/${item}?limit=0&reverse=true`).then(res => {
|
||||
return res.json()
|
||||
}).then(jsonRes => {
|
||||
if(jsonRes.length) {
|
||||
jsonRes.map (item => {
|
||||
obj.push(item)
|
||||
})
|
||||
} else {
|
||||
obj.push(noName)
|
||||
}
|
||||
localStorage.setItem("ChatBlockedAddresses", JSON.stringify(obj))
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
getApiKey() {
|
||||
const myNode = window.parent.reduxStore.getState().app.nodeConfig.knownNodes[window.parent.reduxStore.getState().app.nodeConfig.node];
|
||||
let apiKey = myNode.apiKey;
|
||||
return apiKey;
|
||||
}
|
||||
}
|
||||
|
||||
window.customElements.define('block-address', BlockAddress)
|
@ -10,7 +10,7 @@ registerTranslateConfig({
|
||||
import { escape, unescape } from 'html-escaper';
|
||||
import { inputKeyCodes } from '../../utils/keyCodes.js'
|
||||
import './ChatScroller.js'
|
||||
import './BlockAddress.js'
|
||||
import './NameMenu.js'
|
||||
import './TimeAgo.js'
|
||||
import { EmojiPicker } from 'emoji-picker-js';
|
||||
import '@polymer/paper-spinner/paper-spinner-lite.js'
|
||||
@ -258,9 +258,6 @@ class ChatPage extends LitElement {
|
||||
parentEpml.imReady();
|
||||
}
|
||||
|
||||
updated(changedProps) {
|
||||
}
|
||||
|
||||
changeLanguage() {
|
||||
const checkLanguage = localStorage.getItem('qortalLanguage')
|
||||
|
||||
@ -358,7 +355,7 @@ class ChatPage extends LitElement {
|
||||
*/
|
||||
chatMessageTemplate(messageObj) {
|
||||
let avatarImg = '';
|
||||
let blockButton = '';
|
||||
let nameMenu = '';
|
||||
if (messageObj.senderName) {
|
||||
const myNode = window.parent.reduxStore.getState().app.nodeConfig.knownNodes[window.parent.reduxStore.getState().app.nodeConfig.node];
|
||||
const nodeUrl = myNode.protocol + '://' + myNode.domain + ':' + myNode.port;
|
||||
@ -366,18 +363,17 @@ class ChatPage extends LitElement {
|
||||
avatarImg = `<img src="${avatarUrl}" style="max-width:100%; max-height:100%;" onerror="this.onerror=null; this.src='/img/incognito.png';" />`;
|
||||
}
|
||||
|
||||
if (messageObj.sender === this.selectedAddress.address) {
|
||||
blockButton = ``
|
||||
if (messageObj.sender === this.myAddress) {
|
||||
nameMenu = ``
|
||||
} else {
|
||||
blockButton = `<block-address toblockaddress="${messageObj.sender}"></block-address>`
|
||||
nameMenu = `<name-menu toblockaddress="${messageObj.sender}" nametodialog="${messageObj.senderName ? messageObj.senderName : messageObj.sender}"></name-menu>`
|
||||
}
|
||||
|
||||
return `
|
||||
<li class="clearfix">
|
||||
<div class="message-data ${messageObj.sender === this.selectedAddress.address ? "align-right" : ""}">
|
||||
<span class="message-data-name">${messageObj.senderName ? messageObj.senderName : messageObj.sender}</span>
|
||||
<span class="message-data-name">${nameMenu}</span>
|
||||
<span class="message-data-time"><message-time timestamp=${messageObj.timestamp}></message-time></span>
|
||||
<span class="message-data-block">${blockButton}</span>
|
||||
</div>
|
||||
<div class="message-data-avatar" style="width:42px; height:42px; ${messageObj.sender === this.selectedAddress.address ? "float:right;" : "float:left;"} margin:3px;">${avatarImg}</div>
|
||||
<div class="message ${messageObj.sender === this.selectedAddress.address ? "my-message float-right" : "other-message float-left"}">${this.emojiPicker.parse(escape(messageObj.decodedMessage))}</div>
|
||||
@ -662,7 +658,7 @@ class ChatPage extends LitElement {
|
||||
const hashAry = new Uint8Array(window.parent.memory.buffer, hashPtr, 32);
|
||||
hashAry.set(chatBytesHash);
|
||||
|
||||
const difficulty = this.balance === 0 ? 14 : 8;
|
||||
const difficulty = this.balance === 0 ? 12 : 8;
|
||||
const workBufferLength = 8 * 1024 * 1024;
|
||||
const workBufferPtr = window.parent.sbrk(workBufferLength, window.parent.heap);
|
||||
let nonce = window.parent.computePow(hashPtr, workBufferPtr, workBufferLength, difficulty);
|
||||
@ -698,7 +694,6 @@ class ChatPage extends LitElement {
|
||||
* @param { Boolean } isDown
|
||||
*/
|
||||
setIsUserDown(isDown) {
|
||||
|
||||
this.isUserDown = isDown;
|
||||
}
|
||||
|
||||
@ -790,40 +785,40 @@ class ChatPage extends LitElement {
|
||||
editor.styles = document.createElement('style');
|
||||
editor.styles.setAttribute('type', 'text/css');
|
||||
editor.styles.innerText = `
|
||||
html {
|
||||
cursor: text;
|
||||
}
|
||||
body {
|
||||
font-size: 1rem;
|
||||
line-height: 1.38rem;
|
||||
font-weight: 400;
|
||||
font-family: "Open Sans", helvetica, sans-serif;
|
||||
padding-right: 3px;
|
||||
text-align: left;
|
||||
white-space: break-spaces;
|
||||
word-break: break-word;
|
||||
outline: none;
|
||||
}
|
||||
body[contentEditable=true]:empty:before {
|
||||
content: attr(data-placeholder);
|
||||
display: block;
|
||||
color: rgb(103, 107, 113);
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
user-select: none;
|
||||
white-space: nowrap;
|
||||
}
|
||||
body[contentEditable=false]{
|
||||
background: rgba(0,0,0,0.1);
|
||||
}
|
||||
img.emoji {
|
||||
width: 1.7em;
|
||||
height: 1.5em;
|
||||
margin-bottom: -2px;
|
||||
vertical-align: bottom;
|
||||
}
|
||||
`;
|
||||
editor.content.head.appendChild(editor.styles);
|
||||
html {
|
||||
cursor: text;
|
||||
}
|
||||
body {
|
||||
font-size: 1rem;
|
||||
line-height: 1.38rem;
|
||||
font-weight: 400;
|
||||
font-family: "Open Sans", helvetica, sans-serif;
|
||||
padding-right: 3px;
|
||||
text-align: left;
|
||||
white-space: break-spaces;
|
||||
word-break: break-word;
|
||||
outline: none;
|
||||
}
|
||||
body[contentEditable=true]:empty:before {
|
||||
content: attr(data-placeholder);
|
||||
display: block;
|
||||
color: rgb(103, 107, 113);
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
user-select: none;
|
||||
white-space: nowrap;
|
||||
}
|
||||
body[contentEditable=false]{
|
||||
background: rgba(0,0,0,0.1);
|
||||
}
|
||||
img.emoji {
|
||||
width: 1.7em;
|
||||
height: 1.5em;
|
||||
margin-bottom: -2px;
|
||||
vertical-align: bottom;
|
||||
}
|
||||
`;
|
||||
editor.content.head.appendChild(editor.styles);
|
||||
};
|
||||
|
||||
ChatEditor.prototype.enable = function () {
|
||||
|
@ -2,7 +2,7 @@ import { LitElement, html, css } from 'lit'
|
||||
import { render } from 'lit/html.js'
|
||||
import { Epml } from '../../../epml.js'
|
||||
|
||||
import './BlockAddress.js'
|
||||
import './NameMenu.js'
|
||||
|
||||
import '@material/mwc-button'
|
||||
import '@material/mwc-dialog'
|
||||
@ -36,6 +36,8 @@ class ChatScroller extends LitElement {
|
||||
* {
|
||||
scrollbar-width: thin;
|
||||
scrollbar-color: var(--thumbBG) var(--scrollbarBG);
|
||||
--mdc-theme-primary: rgb(3, 169, 244);
|
||||
--mdc-theme-secondary: var(--mdc-theme-primary);
|
||||
}
|
||||
|
||||
*::-webkit-scrollbar-track {
|
||||
@ -48,6 +50,11 @@ class ChatScroller extends LitElement {
|
||||
border: 3px solid var(--scrollbarBG);
|
||||
}
|
||||
|
||||
a {
|
||||
color: var(--black);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
@ -56,7 +63,7 @@ class ChatScroller extends LitElement {
|
||||
|
||||
.chat-list {
|
||||
overflow-y: auto;
|
||||
height: 91vh;
|
||||
height: 92vh;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
@ -66,23 +73,14 @@ class ChatScroller extends LitElement {
|
||||
|
||||
.message-data-name {
|
||||
color: var(--black);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.message-data-time {
|
||||
color: #a8aab1;
|
||||
font-size: 13px;
|
||||
padding-left: 6px;
|
||||
}
|
||||
|
||||
.message-data-block {
|
||||
color: #03a9f4;
|
||||
font-size: 16px;
|
||||
padding-left: 6px;
|
||||
}
|
||||
|
||||
.blockicon {
|
||||
color: #03a9f4;
|
||||
--mdc-icon-size: 16px;
|
||||
padding-bottom: 4px;
|
||||
}
|
||||
|
||||
.message {
|
||||
@ -204,7 +202,7 @@ class ChatScroller extends LitElement {
|
||||
|
||||
chatMessageTemplate(messageObj) {
|
||||
let avatarImg = '';
|
||||
let blockButton = '';
|
||||
let nameMenu = '';
|
||||
if (messageObj.senderName) {
|
||||
const myNode = window.parent.reduxStore.getState().app.nodeConfig.knownNodes[window.parent.reduxStore.getState().app.nodeConfig.node];
|
||||
const nodeUrl = myNode.protocol + '://' + myNode.domain + ':' + myNode.port;
|
||||
@ -213,17 +211,17 @@ class ChatScroller extends LitElement {
|
||||
}
|
||||
|
||||
if (messageObj.sender === this.myAddress) {
|
||||
blockButton = ``
|
||||
nameMenu = ``
|
||||
} else {
|
||||
blockButton = `<block-address toblockaddress="${messageObj.sender}"></block-address>`
|
||||
nameMenu = `<name-menu toblockaddress="${messageObj.sender}" nametodialog="${messageObj.senderName ? messageObj.senderName : messageObj.sender}"></name-menu>`
|
||||
}
|
||||
|
||||
return `
|
||||
<li class="clearfix">
|
||||
<div class="message-data ${messageObj.sender === this.myAddress ? "align-right" : ""}">
|
||||
<span class="message-data-name">${messageObj.senderName ? messageObj.senderName : messageObj.sender}</span>
|
||||
<span class="message-data-name">${nameMenu}</span>
|
||||
<span class="message-data-time"><message-time timestamp=${messageObj.timestamp}></message-time></span>
|
||||
<span class="message-data-block">${blockButton}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="message-data-avatar" style="width:42px; height:42px; ${messageObj.sender === this.myAddress ? "float:right;" : "float:left;"} margin:3px;">${avatarImg}</div>
|
||||
<div id="messageContent" class="message ${messageObj.sender === this.myAddress ? "my-message float-right" : "other-message float-left"}">${this.emojiPicker.parse(this.escapeHTML(messageObj.decodedMessage))}</div>
|
||||
|
@ -432,7 +432,7 @@ class ChatWelcomePage extends LitElement {
|
||||
const hashAry = new Uint8Array(window.parent.memory.buffer, hashPtr, 32);
|
||||
hashAry.set(chatBytesHash);
|
||||
|
||||
const difficulty = this.balance === 0 ? 14 : 8;
|
||||
const difficulty = this.balance === 0 ? 12 : 8;
|
||||
|
||||
const workBufferLength = 8 * 1024 * 1024;
|
||||
const workBufferPtr = window.parent.sbrk(workBufferLength, window.parent.heap);
|
||||
|
@ -904,7 +904,6 @@ class Chat extends LitElement {
|
||||
}
|
||||
|
||||
scrollToBottom() {
|
||||
|
||||
const viewElement = this.shadowRoot.querySelector('chat-page').shadowRoot.querySelector('chat-scroller').shadowRoot.getElementById('viewElement');
|
||||
viewElement.scroll({ top: viewElement.scrollHeight, left: 0, behavior: 'smooth' })
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user