diff --git a/apps/ssb.json b/apps/ssb.json index 161f5e82..1ba99a0c 100644 --- a/apps/ssb.json +++ b/apps/ssb.json @@ -1,5 +1,5 @@ { "type": "tildefriends-app", "emoji": "🦀", - "previous": "&BNj/9Tct9Iw03fAx0TSjCI5Cm1EizcmTj6JZm3bZpB4=.sha256" + "previous": "&R0bGxjJq3G2eJzuKfUrQP4ioSn75QlwvaS39Q9LzMto=.sha256" } diff --git a/apps/ssb/tf-message.js b/apps/ssb/tf-message.js index fc161345..057b6c8a 100644 --- a/apps/ssb/tf-message.js +++ b/apps/ssb/tf-message.js @@ -371,62 +371,34 @@ class TfMessageElement extends LitElement { return content; } - render_raw_button() { + copy_id(event) { + navigator.clipboard.writeText(this.message?.id); + } + + render_menu() { let content = this.get_content(); - let raw_button; - switch (this.format) { - case 'raw': - if (content?.type == 'post' || content?.type == 'blog') { - raw_button = html`<button - class="w3-button w3-theme-d1" - @click=${() => (this.format = 'md')} - > - Markdown - </button>`; - } else { - raw_button = html`<button - class="w3-button w3-theme-d1" - @click=${() => (this.format = 'message')} - > - Message - </button>`; - } - break; - case 'md': - raw_button = html`<button - class="w3-button w3-theme-d1" - @click=${() => (this.format = 'message')} - > - Message - </button>`; - break; - case 'decrypted': - raw_button = html`<button - class="w3-button w3-theme-d1" - @click=${() => (this.format = 'raw')} - > - Raw - </button>`; - break; - default: - if (this.message.decrypted) { - raw_button = html`<button - class="w3-button w3-theme-d1" - @click=${() => (this.format = 'decrypted')} - > - Decrypted - </button>`; - } else { - raw_button = html`<button - class="w3-button w3-theme-d1" - @click=${() => (this.format = 'raw')} - > - Raw - </button>`; - } - break; + let formats = [ + ['message', 'Message'], + ]; + if (content?.type == 'post' || content?.type == 'blog') { + formats.push(['md', 'Markdown']); } - return raw_button; + if (this.message?.decrypted) { + formats.push(['decrypted', 'Decrypted']); + } + formats.push(['raw', 'Raw']); + return html` + <div class="w3-bar-item w3-right w3-dropdown-hover"> + <button class="w3-button w3-theme-d1">%</button> + <div class="w3-dropdown-content w3-bar-block w3-card-4 w3-theme-l1" style="right: 48px"> + <a target="_top" class="w3-button w3-bar-item" href=${'#' + encodeURIComponent(this.message?.id)}>${this.message?.id}</a> + <button class="w3-button w3-bar-item w3-border-bottom" @click=${this.copy_id}>Copy ID</button> + ${formats.map(([format, name]) => (html` + <button class="w3-button w3-bar-item" style=${format == this.format ? 'font-weight: bold' : ''} @click=${() => (this.format = format)}>${name}</button> + `))} + </div> + </div> + `; } render_header() { @@ -441,11 +413,8 @@ class TfMessageElement extends LitElement { <tf-user id=${this.message.author} .users=${this.users}></tf-user> </span> ${is_encrypted} - <span class="w3-bar-item w3-right">${this.render_raw_button()}</span> + ${this.render_menu()} <span class="w3-bar-item w3-right" style="text-wrap: nowrap" - ><a target="_top" href=${'#' + encodeURIComponent(this.message.id)} - >%</a - > ${new Date(this.message.timestamp).toLocaleString()}</span > </header> diff --git a/apps/ssb/tf-tab-news.js b/apps/ssb/tf-tab-news.js index 1de22e1d..0f34d6fe 100644 --- a/apps/ssb/tf-tab-news.js +++ b/apps/ssb/tf-tab-news.js @@ -285,7 +285,7 @@ class TfTabNewsElement extends LitElement { return cache(html` ${this.render_sidebar()} <div - style="margin-left: 2in; padding: 0px; top: 0; max-height: 100%; overflow: auto" + style="margin-left: 2in; padding: 0px; top: 0; max-height: 100%; overflow: auto; contain: layout" id="main" class="w3-main" >