More fixes for servers without m.thread-support
Also, always retry loading timeline without "initialEventId" if first attempt fails (previously we did it only for M_UNKNOWN errors)
This commit is contained in:
parent
ecb4b1717b
commit
8f227c2994
6 changed files with 20 additions and 14 deletions
|
|
@ -115,7 +115,7 @@
|
||||||
<div v-if="replyToContentType === 'm.text'" class="reply-text" :title="replyToEvent.getContent().body">
|
<div v-if="replyToContentType === 'm.text'" class="reply-text" :title="replyToEvent.getContent().body">
|
||||||
{{ replyToEvent.getContent().body | latestReply }}
|
{{ replyToEvent.getContent().body | latestReply }}
|
||||||
</div>
|
</div>
|
||||||
<div v-if="replyToContentType === 'm.thread'">{{ replyToThreadMessage }}</div>
|
<div v-if="replyToContentType === 'm.thread' || replyToContentType === 'io.element.thread'">{{ replyToThreadMessage }}</div>
|
||||||
<div v-if="replyToContentType === 'm.image'">{{ $t("message.reply_image") }}</div>
|
<div v-if="replyToContentType === 'm.image'">{{ $t("message.reply_image") }}</div>
|
||||||
<div v-if="replyToContentType === 'm.audio'">{{ $t("message.reply_audio_message") }}</div>
|
<div v-if="replyToContentType === 'm.audio'">{{ $t("message.reply_audio_message") }}</div>
|
||||||
<div v-if="replyToContentType === 'm.video'">{{ $t("message.reply_video") }}</div>
|
<div v-if="replyToContentType === 'm.video'">{{ $t("message.reply_video") }}</div>
|
||||||
|
|
@ -1027,7 +1027,7 @@ export default {
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
console.log("Error fetching events!", err, this);
|
console.log("Error fetching events!", err, this);
|
||||||
if (err.errcode == "M_UNKNOWN" && initialEventId) {
|
if (initialEventId) {
|
||||||
// Try again without initial event!
|
// Try again without initial event!
|
||||||
this.onRoomJoined(null);
|
this.onRoomJoined(null);
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -1175,7 +1175,8 @@ export default {
|
||||||
Vue.set(event, "parentThread", parentEvent);
|
Vue.set(event, "parentThread", parentEvent);
|
||||||
} else {
|
} else {
|
||||||
// Try to load from server.
|
// Try to load from server.
|
||||||
this.$matrix.matrixClient.getEventTimeline(this.timelineSet, event.threadRootId).then((tl) => {
|
this.$matrix.matrixClient.getEventTimeline(this.timelineSet, event.threadRootId)
|
||||||
|
.then((tl) => {
|
||||||
if (tl) {
|
if (tl) {
|
||||||
const parentEvent = tl.getEvents().find((e) => e.getId() === event.threadRootId);
|
const parentEvent = tl.getEvents().find((e) => e.getId() === event.threadRootId);
|
||||||
if (parentEvent) {
|
if (parentEvent) {
|
||||||
|
|
@ -1197,7 +1198,7 @@ export default {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
}).catch(e => console.error(e));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
@ -1618,7 +1619,7 @@ export default {
|
||||||
this.replyToEvent = event;
|
this.replyToEvent = event;
|
||||||
this.$refs.messageInput.focus();
|
this.$refs.messageInput.focus();
|
||||||
if (event.parentThread || event.isThreadRoot || event.isMxThread) {
|
if (event.parentThread || event.isThreadRoot || event.isMxThread) {
|
||||||
this.replyToContentType = 'm.thread';
|
this.replyToContentType = util.threadMessageType();
|
||||||
} else {
|
} else {
|
||||||
this.replyToContentType = event.getContent().msgtype || 'm.poll';
|
this.replyToContentType = event.getContent().msgtype || 'm.poll';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,7 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.thread = this.timelineSet.relations.getChildEventsForEvent(this.event.getId(), "m.thread", "m.room.message");
|
this.thread = this.timelineSet.relations.getChildEventsForEvent(this.event.getId(), util.threadMessageType(), "m.room.message");
|
||||||
if (!this.thread) {
|
if (!this.thread) {
|
||||||
this.event.on("Event.relationsCreated", this.onRelationsCreated);
|
this.event.on("Event.relationsCreated", this.onRelationsCreated);
|
||||||
}
|
}
|
||||||
|
|
@ -63,7 +63,7 @@ export default {
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
onRelationsCreated() {
|
onRelationsCreated() {
|
||||||
this.thread = this.timelineSet.relations.getChildEventsForEvent(this.event.getId(), "m.thread", "m.room.message");
|
this.thread = this.timelineSet.relations.getChildEventsForEvent(this.event.getId(), util.threadMessageType(), "m.room.message");
|
||||||
this.event.off("Event.relationsCreated", this.onRelationsCreated);
|
this.event.off("Event.relationsCreated", this.onRelationsCreated);
|
||||||
},
|
},
|
||||||
onItemClick(event) {
|
onItemClick(event) {
|
||||||
|
|
|
||||||
|
|
@ -54,7 +54,7 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.thread = this.timelineSet.relations.getChildEventsForEvent(this.event.getId(), "m.thread", "m.room.message");
|
this.thread = this.timelineSet.relations.getChildEventsForEvent(this.event.getId(), util.threadMessageType(), "m.room.message");
|
||||||
if (!this.thread) {
|
if (!this.thread) {
|
||||||
this.event.on("Event.relationsCreated", this.onRelationsCreated);
|
this.event.on("Event.relationsCreated", this.onRelationsCreated);
|
||||||
}
|
}
|
||||||
|
|
@ -64,7 +64,7 @@ export default {
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
onRelationsCreated() {
|
onRelationsCreated() {
|
||||||
this.thread = this.timelineSet.relations.getChildEventsForEvent(this.event.getId(), "m.thread", "m.room.message");
|
this.thread = this.timelineSet.relations.getChildEventsForEvent(this.event.getId(), util.threadMessageType(), "m.room.message");
|
||||||
this.event.off("Event.relationsCreated", this.onRelationsCreated);
|
this.event.off("Event.relationsCreated", this.onRelationsCreated);
|
||||||
},
|
},
|
||||||
onItemClick(event) {
|
onItemClick(event) {
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.thread = this.timelineSet.relations.getChildEventsForEvent(this.event.getId(), "m.thread", "m.room.message");
|
this.thread = this.timelineSet.relations.getChildEventsForEvent(this.event.getId(), util.threadMessageType(), "m.room.message");
|
||||||
if (!this.thread) {
|
if (!this.thread) {
|
||||||
this.event.on("Event.relationsCreated", this.onRelationsCreated);
|
this.event.on("Event.relationsCreated", this.onRelationsCreated);
|
||||||
}
|
}
|
||||||
|
|
@ -30,7 +30,7 @@ export default {
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
onRelationsCreated() {
|
onRelationsCreated() {
|
||||||
this.thread = this.timelineSet.relations.getChildEventsForEvent(this.event.getId(), "m.thread", "m.room.message");
|
this.thread = this.timelineSet.relations.getChildEventsForEvent(this.event.getId(), util.threadMessageType(), "m.room.message");
|
||||||
this.event.off("Event.relationsCreated", this.onRelationsCreated);
|
this.event.off("Event.relationsCreated", this.onRelationsCreated);
|
||||||
},
|
},
|
||||||
processThread() {
|
processThread() {
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.thread = this.timelineSet.relations.getChildEventsForEvent(this.event.getId(), "m.thread", "m.room.message");
|
this.thread = this.timelineSet.relations.getChildEventsForEvent(this.event.getId(), util.threadMessageType(), "m.room.message");
|
||||||
if (!this.thread) {
|
if (!this.thread) {
|
||||||
this.event.on("Event.relationsCreated", this.onRelationsCreated);
|
this.event.on("Event.relationsCreated", this.onRelationsCreated);
|
||||||
}
|
}
|
||||||
|
|
@ -30,7 +30,7 @@ export default {
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
onRelationsCreated() {
|
onRelationsCreated() {
|
||||||
this.thread = this.timelineSet.relations.getChildEventsForEvent(this.event.getId(), "m.thread", "m.room.message");
|
this.thread = this.timelineSet.relations.getChildEventsForEvent(this.event.getId(), util.threadMessageType(), "m.room.message");
|
||||||
this.event.off("Event.relationsCreated", this.onRelationsCreated);
|
this.event.off("Event.relationsCreated", this.onRelationsCreated);
|
||||||
},
|
},
|
||||||
processThread() {
|
processThread() {
|
||||||
|
|
|
||||||
|
|
@ -68,6 +68,11 @@ class UploadPromise {
|
||||||
}
|
}
|
||||||
|
|
||||||
class Util {
|
class Util {
|
||||||
|
|
||||||
|
threadMessageType() {
|
||||||
|
return Thread.hasServerSideSupport ? "m.thread" : "io.element.thread"
|
||||||
|
}
|
||||||
|
|
||||||
getAttachmentUrlAndDuration(event) {
|
getAttachmentUrlAndDuration(event) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
const content = event.getContent();
|
const content = event.getContent();
|
||||||
|
|
@ -400,7 +405,7 @@ class Util {
|
||||||
// If thread root (an eventId) is set, add that here
|
// If thread root (an eventId) is set, add that here
|
||||||
if (threadRoot) {
|
if (threadRoot) {
|
||||||
messageContent["m.relates_to"] = {
|
messageContent["m.relates_to"] = {
|
||||||
"rel_type": Thread.hasServerSideSupport ? "m.thread" : "io.element.thread",
|
"rel_type": this.threadMessageType(),
|
||||||
"event_id": threadRoot
|
"event_id": threadRoot
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue