forked from cory/tildefriends
Group contact messages, and try to fix some messages overflowing width.
git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@4238 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
parent
bdeee7fc0e
commit
3d2c88c201
@ -135,9 +135,9 @@ class TfElement extends LitElement {
|
|||||||
cache.last_row_id = max_row_id;
|
cache.last_row_id = max_row_id;
|
||||||
let store = JSON.stringify(cache);
|
let store = JSON.stringify(cache);
|
||||||
/* 2023-02-20: Exceeding message size. */
|
/* 2023-02-20: Exceeding message size. */
|
||||||
if (store.length < 512 * 1024) {
|
//if (store.length < 512 * 1024) {
|
||||||
await tfrpc.rpc.databaseSet('following', store);
|
await tfrpc.rpc.databaseSet('following', store);
|
||||||
}
|
//}
|
||||||
return [result, cache.following];
|
return [result, cache.following];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -280,16 +280,6 @@ class TfElement extends LitElement {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
add_fake_news() {
|
|
||||||
this.unread = [{
|
|
||||||
author: this.whoami,
|
|
||||||
placeholder: true,
|
|
||||||
id: '%fake_id',
|
|
||||||
text: 'text',
|
|
||||||
content: 'hello',
|
|
||||||
}, ...this.unread];
|
|
||||||
}
|
|
||||||
|
|
||||||
async set_tab(tab) {
|
async set_tab(tab) {
|
||||||
this.tab = tab;
|
this.tab = tab;
|
||||||
if (tab === 'news') {
|
if (tab === 'news') {
|
||||||
@ -326,7 +316,6 @@ class TfElement extends LitElement {
|
|||||||
return html`
|
return html`
|
||||||
${this.render_id_picker()}
|
${this.render_id_picker()}
|
||||||
${tabs}
|
${tabs}
|
||||||
<!-- <input type="button" value="Fake News" @click=${this.add_fake_news}></input> -->
|
|
||||||
${contents}
|
${contents}
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
@ -148,7 +148,7 @@ class TfMessageElement extends LitElement {
|
|||||||
} else if (mention.link?.startsWith('&') &&
|
} else if (mention.link?.startsWith('&') &&
|
||||||
mention.name?.startsWith('video:')) {
|
mention.name?.startsWith('video:')) {
|
||||||
return html`
|
return html`
|
||||||
<video controls style="max-height: 240px">
|
<video controls style="max-height: 240px; max-width: 128px">
|
||||||
<source src=${'/' + mention.link + '/view'}></source>
|
<source src=${'/' + mention.link + '/view'}></source>
|
||||||
</video>
|
</video>
|
||||||
`;
|
`;
|
||||||
@ -222,7 +222,7 @@ class TfMessageElement extends LitElement {
|
|||||||
html`<input type="button" value="Raw" @click=${() => self.raw = true}></input>`;
|
html`<input type="button" value="Raw" @click=${() => self.raw = true}></input>`;
|
||||||
function small_frame(inner) {
|
function small_frame(inner) {
|
||||||
return html`
|
return html`
|
||||||
<div style="border: 1px solid black; background-color: rgba(255, 255, 255, 0.1); margin-top: 8px; padding: 16px; display: inline-block">
|
<div style="border: 1px solid black; background-color: rgba(255, 255, 255, 0.1); margin-top: 8px; padding: 16px; display: inline-block; overflow-wrap: anywhere">
|
||||||
<tf-user id=${self.message.author} .users=${self.users}></tf-user>
|
<tf-user id=${self.message.author} .users=${self.users}></tf-user>
|
||||||
<span style="padding-right: 8px"><a tfarget="_top" href=${'#' + self.message.id}>%</a> ${new Date(self.message.timestamp).toLocaleString()}</span>
|
<span style="padding-right: 8px"><a tfarget="_top" href=${'#' + self.message.id}>%</a> ${new Date(self.message.timestamp).toLocaleString()}</span>
|
||||||
${raw_button}
|
${raw_button}
|
||||||
@ -231,7 +231,14 @@ class TfMessageElement extends LitElement {
|
|||||||
</div>
|
</div>
|
||||||
`
|
`
|
||||||
}
|
}
|
||||||
if (this.message.placeholder) {
|
if (this.message?.type === 'contact_group') {
|
||||||
|
return html`
|
||||||
|
<div style="border: 1px solid black; background-color: rgba(255, 255, 255, 0.1); margin-top: 8px; padding: 16px; overflow-wrap: anywhere">
|
||||||
|
${this.message.messages.map(x =>
|
||||||
|
html`<tf-message .message=${x} whoami=${this.whoami} .users=${this.users} .drafts=${this.drafts} .expanded=${this.expanded}></tf-message>`
|
||||||
|
)}
|
||||||
|
</div>`;
|
||||||
|
} else if (this.message.placeholder) {
|
||||||
return html`
|
return html`
|
||||||
<div style="border: 1px solid black; background-color: rgba(255, 255, 255, 0.1); margin-top: 8px; padding: 16px; overflow-wrap: anywhere">
|
<div style="border: 1px solid black; background-color: rgba(255, 255, 255, 0.1); margin-top: 8px; padding: 16px; overflow-wrap: anywhere">
|
||||||
<a target="_top" href=${'#' + this.message.id}>${this.message.id}</a> (placeholder)
|
<a target="_top" href=${'#' + this.message.id}>${this.message.id}</a> (placeholder)
|
||||||
@ -270,8 +277,9 @@ class TfMessageElement extends LitElement {
|
|||||||
${description}
|
${description}
|
||||||
`);
|
`);
|
||||||
} else if (content.type == 'contact') {
|
} else if (content.type == 'contact') {
|
||||||
return small_frame(html`
|
return html`
|
||||||
<div>
|
<div>
|
||||||
|
<tf-user id=${this.message.author} .users=${this.users}></tf-user>
|
||||||
is
|
is
|
||||||
${
|
${
|
||||||
content.blocking === true ? 'blocking' :
|
content.blocking === true ? 'blocking' :
|
||||||
@ -282,7 +290,7 @@ class TfMessageElement extends LitElement {
|
|||||||
}
|
}
|
||||||
<tf-user id=${this.message.content.contact} .users=${this.users}></tf-user>
|
<tf-user id=${this.message.content.contact} .users=${this.users}></tf-user>
|
||||||
</div>
|
</div>
|
||||||
`);
|
`;
|
||||||
} else if (content.type == 'post') {
|
} else if (content.type == 'post') {
|
||||||
let reply = (this.drafts[this.message?.id] !== undefined) ? html`
|
let reply = (this.drafts[this.message?.id] !== undefined) ? html`
|
||||||
<tf-compose
|
<tf-compose
|
||||||
|
@ -145,9 +145,29 @@ class TfNewsElement extends LitElement {
|
|||||||
return recursive_sort(roots, true);
|
return recursive_sort(roots, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
group_following(messages) {
|
||||||
|
let result = [];
|
||||||
|
let group = [];
|
||||||
|
for (let message of messages) {
|
||||||
|
if (message?.content?.type === 'contact') {
|
||||||
|
group.push(message);
|
||||||
|
} else {
|
||||||
|
if (group.length > 0) {
|
||||||
|
result.push({
|
||||||
|
type: 'contact_group',
|
||||||
|
messages: group,
|
||||||
|
});
|
||||||
|
group = [];
|
||||||
|
}
|
||||||
|
result.push(message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
load_and_render(messages) {
|
load_and_render(messages) {
|
||||||
let messages_by_id = this.process_messages(messages);
|
let messages_by_id = this.process_messages(messages);
|
||||||
let final_messages = this.finalize_messages(messages_by_id);
|
let final_messages = this.group_following(this.finalize_messages(messages_by_id));
|
||||||
return html`
|
return html`
|
||||||
<div style="display: flex; flex-direction: column">
|
<div style="display: flex; flex-direction: column">
|
||||||
${final_messages.map(x => html`<tf-message .message=${x} whoami=${this.whoami} .users=${this.users} .drafts=${this.drafts} .expanded=${this.expanded} collapsed=true></tf-message>`)}
|
${final_messages.map(x => html`<tf-message .message=${x} whoami=${this.whoami} .users=${this.users} .drafts=${this.drafts} .expanded=${this.expanded} collapsed=true></tf-message>`)}
|
||||||
|
@ -19,18 +19,23 @@ class TfUserElement extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
|
let name = this.users?.[this.id]?.name;
|
||||||
|
name = name !== undefined ?
|
||||||
|
html`<a target="_top" href=${'#' + this.id}>${name}</a>` :
|
||||||
|
html`<a target="_top" href=${'#' + this.id}>${this.id}</a>`;
|
||||||
|
|
||||||
if (this.users[this.id]) {
|
if (this.users[this.id]) {
|
||||||
let image = this.users[this.id].image;
|
let image = this.users[this.id].image;
|
||||||
image = typeof(image) == 'string' ? image : image?.link;
|
image = typeof(image) == 'string' ? image : image?.link;
|
||||||
return html`
|
return html`
|
||||||
<div style="display: inline-block; font-weight: bold">
|
<div style="display: inline-block; font-weight: bold">
|
||||||
<img style="width: 2em; height: 2em; vertical-align: middle; border-radius: 50%" ?hidden=${image === undefined} src="${image ? '/' + image + '/view' : undefined}">
|
<img style="width: 2em; height: 2em; vertical-align: middle; border-radius: 50%" ?hidden=${image === undefined} src="${image ? '/' + image + '/view' : undefined}">
|
||||||
<a target="_top" href=${'#' + this.id}>${this.users[this.id].name ?? this.id}</a>
|
${name}
|
||||||
</div>`;
|
</div>`;
|
||||||
} else {
|
} else {
|
||||||
return html`
|
return html`
|
||||||
<div style="display: inline-block; font-weight: bold; word-wrap: anywhere">
|
<div style="display: inline-block; font-weight: bold">
|
||||||
<a target="_top" href=${'#' + this.id}>${this.id}</a>
|
${name}
|
||||||
</div>`;
|
</div>`;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user