mirror of
https://github.com/element-hq/element-web
synced 2024-11-24 02:05:45 +03:00
Redo and fix trailing characters in user pills
This removes the handling of trailing chars from createMentionParts as we need to determine whether or not to insert the trailing char differently in different situations Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
This commit is contained in:
parent
c2b66d0dbe
commit
715fff6f0c
3 changed files with 6 additions and 10 deletions
|
@ -502,10 +502,8 @@ export default class SendMessageComposer extends React.Component {
|
||||||
member.rawDisplayName : userId;
|
member.rawDisplayName : userId;
|
||||||
const caret = this._editorRef.getCaret();
|
const caret = this._editorRef.getCaret();
|
||||||
const position = model.positionForOffset(caret.offset, caret.atNodeEnd);
|
const position = model.positionForOffset(caret.offset, caret.atNodeEnd);
|
||||||
// createMentionParts() assumes that the mention already has it's own part
|
// Insert suffix only if the caret is at the start of the composer
|
||||||
// which isn't true, therefore we increase the position.index by 1. This
|
const parts = partCreator.createMentionParts(caret.offset === 0, displayName, userId);
|
||||||
// also solves the problem of the index being -1 when the composer is empty.
|
|
||||||
const parts = partCreator.createMentionParts(position.index + 1, displayName, userId);
|
|
||||||
model.transform(() => {
|
model.transform(() => {
|
||||||
const addedLen = model.insert(parts, position);
|
const addedLen = model.insert(parts, position);
|
||||||
return model.positionForOffset(caret.offset + addedLen, true);
|
return model.positionForOffset(caret.offset + addedLen, true);
|
||||||
|
|
|
@ -125,10 +125,8 @@ export default class AutocompleteWrapperModel {
|
||||||
case "at-room":
|
case "at-room":
|
||||||
return [this.partCreator.atRoomPill(completionId), this.partCreator.plain(completion.suffix)];
|
return [this.partCreator.atRoomPill(completionId), this.partCreator.plain(completion.suffix)];
|
||||||
case "user":
|
case "user":
|
||||||
// not using suffix here, because we also need to calculate
|
// Insert suffix only if the pill is the part with index 0 - we are at the start of the composer
|
||||||
// the suffix when clicking a display name to insert a mention,
|
return this.partCreator.createMentionParts(this.partIndex === 0, text, completionId);
|
||||||
// which happens in createMentionParts
|
|
||||||
return this.partCreator.createMentionParts(this.partIndex, text, completionId);
|
|
||||||
case "command":
|
case "command":
|
||||||
// command needs special handling for auto complete, but also renders as plain texts
|
// command needs special handling for auto complete, but also renders as plain texts
|
||||||
return [(this.partCreator as CommandPartCreator).command(text)];
|
return [(this.partCreator as CommandPartCreator).command(text)];
|
||||||
|
|
|
@ -543,9 +543,9 @@ export class PartCreator {
|
||||||
return new UserPillPart(userId, displayName, member);
|
return new UserPillPart(userId, displayName, member);
|
||||||
}
|
}
|
||||||
|
|
||||||
createMentionParts(partIndex: number, displayName: string, userId: string) {
|
createMentionParts(insertTrailingCharacter: boolean, displayName: string, userId: string) {
|
||||||
const pill = this.userPill(displayName, userId);
|
const pill = this.userPill(displayName, userId);
|
||||||
const postfix = this.plain(partIndex === 0 ? ": " : " ");
|
const postfix = this.plain(insertTrailingCharacter ? ": " : " ");
|
||||||
return [pill, postfix];
|
return [pill, postfix];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue