Merge pull request #5951 from SimonBrandner/fix/room-pill-history

Fix saving room pill part to history
pull/21833/head
Michael Telatynski 2021-05-04 12:32:04 +01:00 committed by GitHub
commit ed8b05b730
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 19 additions and 12 deletions

View File

@ -158,7 +158,7 @@ export default class EditorModel {
}
}
reset(serializedParts: SerializedPart[], caret: Caret, inputType: string) {
reset(serializedParts: SerializedPart[], caret?: Caret, inputType?: string) {
this._parts = serializedParts.map(p => this._partCreator.deserializePart(p));
if (!caret) {
caret = this.getPositionAtEnd();

View File

@ -34,7 +34,7 @@ interface ISerializedPart {
interface ISerializedPillPart {
type: Type.AtRoomPill | Type.RoomPill | Type.UserPill;
text: string;
resourceId: string;
resourceId?: string;
}
export type SerializedPart = ISerializedPart | ISerializedPillPart;
@ -287,6 +287,14 @@ abstract class PillPart extends BasePart implements IPillPart {
}
}
serialize(): ISerializedPillPart {
return {
type: this.type,
text: this.text,
resourceId: this.resourceId,
};
}
get canEdit() {
return false;
}
@ -366,6 +374,13 @@ class AtRoomPillPart extends RoomPillPart {
get type(): IPillPart["type"] {
return Type.AtRoomPill;
}
serialize(): ISerializedPillPart {
return {
type: this.type,
text: this.text,
};
}
}
class UserPillPart extends PillPart {
@ -394,14 +409,6 @@ class UserPillPart extends PillPart {
get className() {
return "mx_UserPill mx_Pill";
}
serialize(): ISerializedPillPart {
return {
type: this.type,
text: this.text,
resourceId: this.resourceId,
};
}
}
class PillCandidatePart extends PlainBasePart implements IPillCandidatePart {
@ -495,7 +502,7 @@ export class PartCreator {
case Type.PillCandidate:
return this.pillCandidate(part.text);
case Type.RoomPill:
return this.roomPill(part.text);
return this.roomPill(part.resourceId);
case Type.UserPill:
return this.userPill(part.text, part.resourceId);
}

View File

@ -178,7 +178,7 @@ describe('editor/deserialize', function() {
const parts = normalize(parseEvent(htmlMessage(html), createPartCreator()));
expect(parts.length).toBe(3);
expect(parts[0]).toStrictEqual({type: "plain", text: "Try "});
expect(parts[1]).toStrictEqual({type: "room-pill", text: "#room:hs.tld"});
expect(parts[1]).toStrictEqual({type: "room-pill", text: "#room:hs.tld", resourceId: "#room:hs.tld"});
expect(parts[2]).toStrictEqual({type: "plain", text: "?"});
});
it('@room pill', function() {