Render m.reaction events

This commit is contained in:
Kegan Dougal 2021-10-21 15:57:50 +01:00
parent 0295e968b0
commit 0ebf6b6fd0
2 changed files with 29 additions and 18 deletions

View File

@ -21,6 +21,10 @@ INF Poller: v2 poll loop started ip=::1 since= user_id=@kegan:matrix.org
```
Wait for the first initial v2 sync to be processed (this can take minutes!) and then v3 APIs will be responsive.
### How can I help?
At present, the best way to help would be to run a local v3 server pointed at a busy account and just leave it and a client running in the background. Look at it occasionally and submit any issues you notice. You can save console logs by right-clicking -> Save As.
## API
API is under active development and is not stable.

View File

@ -142,18 +142,7 @@ const renderMessage = (container, ev) => {
msgCell.setAttribute("id", eventIdKey);
msgCell.getElementsByClassName("msgsender")[0].textContent = ev.sender;
msgCell.getElementsByClassName("msgtimestamp")[0].textContent = formatTimestamp(ev.origin_server_ts);
let body = "";
switch (ev.type) {
case "m.room.message":
body = ev.content.body;
break;
case "m.room.member":
body = membershipChangeText(ev);
break;
default:
body = ev.type + " event";
break;
}
let body = textForEvent(ev);
msgCell.getElementsByClassName("msgcontent")[0].textContent = body;
container.appendChild(msgCell);
};
@ -293,13 +282,12 @@ const render = (container) => {
roomSenderSpan.textContent = mostRecentEvent.sender;
roomTimestampSpan.textContent = formatTimestamp(mostRecentEvent.origin_server_ts);
if (mostRecentEvent.type === "m.room.message") {
roomContentSpan.textContent = mostRecentEvent.content.body;
} else if (mostRecentEvent.type === "m.room.member") {
const body = textForEvent(mostRecentEvent);
if (mostRecentEvent.type === "m.room.member") {
roomContentSpan.textContent = "";
roomSenderSpan.textContent = membershipChangeText(mostRecentEvent);
} else if (mostRecentEvent.type) {
roomContentSpan.textContent = mostRecentEvent.type + " event";
roomSenderSpan.textContent = body;
} else {
roomContentSpan.textContent = body;
}
} else {
roomContentSpan.textContent = "";
@ -499,6 +487,25 @@ const doSyncRequest = async (accessToken, pos, reqBody) => {
return respBody;
}
const textForEvent = (ev) => {
let body = "";
switch (ev.type) {
case "m.room.message":
body = ev.content.body;
break;
case "m.room.member":
body = membershipChangeText(ev);
break;
case "m.reaction":
body = "reacted with " + (ev.content["m.relates_to"] || {}).key;
break;
default:
body = ev.type + " event";
break;
}
return body;
}
const membershipChangeText = (ev) => {
const prevContent = (ev.unsigned || {}).prev_content || {};
const prevMembership = prevContent.membership || "leave";