room-namespace event ids

This commit is contained in:
Sorunome 2020-04-25 11:52:44 +02:00
parent 3f161b27cb
commit 179c6ca7dc
No known key found for this signature in database
GPG Key ID: B19471D07FC9BE9C
1 changed files with 15 additions and 14 deletions

View File

@ -105,10 +105,11 @@ export class Skype {
if (!contact || !conversation) { if (!contact || !conversation) {
return null; return null;
} }
const room = this.getRoomParams(puppetId, conversation);
return { return {
user: this.getUserParams(puppetId, contact), user: this.getUserParams(puppetId, contact),
room: this.getRoomParams(puppetId, conversation), room,
eventId: resource.id, // tslint:disable-line no-any eventId: `${resource.id};${room.roomId}`,
}; };
} }
@ -378,7 +379,7 @@ export class Skype {
const eventId = ret && ret.MessageId; const eventId = ret && ret.MessageId;
this.messageDeduplicator.unlock(dedupeKey, p.client.username, eventId); this.messageDeduplicator.unlock(dedupeKey, p.client.username, eventId);
if (eventId) { if (eventId) {
await this.puppet.eventSync.insert(room.puppetId, data.eventId!, eventId); await this.puppet.eventSync.insert(room.puppetId, data.eventId!, `${eventId};${room.roomId}`);
} }
} }
@ -401,11 +402,11 @@ export class Skype {
} }
const dedupeKey = `${room.puppetId};${room.roomId}`; const dedupeKey = `${room.puppetId};${room.roomId}`;
this.messageDeduplicator.lock(dedupeKey, p.client.username, msg); this.messageDeduplicator.lock(dedupeKey, p.client.username, msg);
await p.client.sendEdit(conversation.id, eventId, msg); await p.client.sendEdit(conversation.id, eventId.split(";")[0], msg);
const newEventId = ""; const newEventId = "";
this.messageDeduplicator.unlock(dedupeKey, p.client.username, newEventId); this.messageDeduplicator.unlock(dedupeKey, p.client.username, newEventId);
if (newEventId) { if (newEventId) {
await this.puppet.eventSync.insert(room.puppetId, data.eventId!, newEventId); await this.puppet.eventSync.insert(room.puppetId, data.eventId!, `${newEventId};${room.roomId}`);
} }
} }
@ -431,7 +432,7 @@ export class Skype {
const ownContact = await p.client.getContact(p.client.username); const ownContact = await p.client.getContact(p.client.username);
const authorname = escapeHtml(ownContact ? ownContact.displayName : p.client.username); const authorname = escapeHtml(ownContact ? ownContact.displayName : p.client.username);
const conversationId = escapeHtml(conversation.id); const conversationId = escapeHtml(conversation.id);
const timestamp = Math.round(Number(eventId) / 1000).toString(); const timestamp = Math.round(Number(eventId.split(";")[0]) / 1000).toString();
const origEventId = (await this.puppet.eventSync.getMatrix(room.puppetId, eventId))[0]; const origEventId = (await this.puppet.eventSync.getMatrix(room.puppetId, eventId))[0];
let contents = "blah"; let contents = "blah";
if (origEventId) { if (origEventId) {
@ -451,7 +452,7 @@ export class Skype {
} }
} }
const quote = `<quote author="${author}" authorname="${authorname}" timestamp="${timestamp}" ` + const quote = `<quote author="${author}" authorname="${authorname}" timestamp="${timestamp}" ` +
`conversation="${conversationId}" messageid="${escapeHtml(eventId)}">` + `conversation="${conversationId}" messageid="${escapeHtml(eventId.split(";")[0])}">` +
`<legacyquote>[${timestamp}] ${authorname}: </legacyquote>${contents}<legacyquote> `<legacyquote>[${timestamp}] ${authorname}: </legacyquote>${contents}<legacyquote>
&lt;&lt;&lt; </legacyquote></quote>`; &lt;&lt;&lt; </legacyquote></quote>`;
@ -462,7 +463,7 @@ export class Skype {
const newEventId = ret && ret.MessageId; const newEventId = ret && ret.MessageId;
this.messageDeduplicator.unlock(dedupeKey, p.client.username, newEventId); this.messageDeduplicator.unlock(dedupeKey, p.client.username, newEventId);
if (newEventId) { if (newEventId) {
await this.puppet.eventSync.insert(room.puppetId, data.eventId!, newEventId); await this.puppet.eventSync.insert(room.puppetId, data.eventId!, `${newEventId};${room.roomId}`);
} }
} }
@ -478,7 +479,7 @@ export class Skype {
return; return;
} }
p.deletedMessages.add(eventId); p.deletedMessages.add(eventId);
await p.client.sendDelete(conversation.id, eventId); await p.client.sendDelete(conversation.id, eventId.split(";")[0]);
} }
public async handleMatrixImage(room: IRemoteRoom, data: IFileEvent) { public async handleMatrixImage(room: IRemoteRoom, data: IFileEvent) {
@ -522,7 +523,7 @@ export class Skype {
const eventId = ret && ret.MessageId; const eventId = ret && ret.MessageId;
this.messageDeduplicator.unlock(dedupeKey, p.client.username, eventId); this.messageDeduplicator.unlock(dedupeKey, p.client.username, eventId);
if (eventId) { if (eventId) {
await this.puppet.eventSync.insert(room.puppetId, data.eventId!, eventId); await this.puppet.eventSync.insert(room.puppetId, data.eventId!, `${eventId};${room.roomId}`);
} }
} }
@ -578,7 +579,7 @@ export class Skype {
const messageid = quote.attr("messageid"); const messageid = quote.attr("messageid");
if (messageid) { if (messageid) {
const sendQuoteMsg = this.skypeMessageParser.parse(msg, { noQuotes: true }); const sendQuoteMsg = this.skypeMessageParser.parse(msg, { noQuotes: true });
await this.puppet.sendReply(params, messageid, sendQuoteMsg); await this.puppet.sendReply(params, `${messageid};${params.room.roomId}`, sendQuoteMsg);
return; return;
} }
} }
@ -635,12 +636,12 @@ export class Skype {
sendMsg.emote = true; sendMsg.emote = true;
} }
if (resource.content) { if (resource.content) {
await this.puppet.sendEdit(params, resource.id, sendMsg); await this.puppet.sendEdit(params, `${resource.id};${params.room.roomId}`, sendMsg);
} else if (p.deletedMessages.has(resource.id)) { } else if (p.deletedMessages.has(`${resource.id};${params.room.roomId}`)) {
log.silly("normal message redact dedupe"); log.silly("normal message redact dedupe");
return; return;
} else { } else {
await this.puppet.sendRedact(params, resource.id); await this.puppet.sendRedact(params, `${resource.id};${params.room.roomId}`);
} }
} }