[bugfix] don't trash emoji in profile fields on edit (#1440)
This commit is contained in:
parent
ac2bdbbc62
commit
ad6ab037e4
|
@ -53,13 +53,16 @@ func (p *processor) Update(ctx context.Context, account *gtsmodel.Account, form
|
||||||
return nil, gtserror.NewErrorBadRequest(err)
|
return nil, gtserror.NewErrorBadRequest(err)
|
||||||
}
|
}
|
||||||
account.DisplayName = text.SanitizePlaintext(*form.DisplayName)
|
account.DisplayName = text.SanitizePlaintext(*form.DisplayName)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Re-parse for emojis regardless of whether the DisplayName changed
|
||||||
|
// because we can't otherwise tell which emojis belong to DisplayName
|
||||||
|
// and which belong to Note
|
||||||
formatResult := p.formatter.FromPlainEmojiOnly(ctx, p.parseMention, account.ID, "", account.DisplayName)
|
formatResult := p.formatter.FromPlainEmojiOnly(ctx, p.parseMention, account.ID, "", account.DisplayName)
|
||||||
for _, emoji := range formatResult.Emojis {
|
for _, emoji := range formatResult.Emojis {
|
||||||
account.Emojis = append(account.Emojis, emoji)
|
account.Emojis = append(account.Emojis, emoji)
|
||||||
account.EmojiIDs = append(account.EmojiIDs, emoji.ID)
|
account.EmojiIDs = append(account.EmojiIDs, emoji.ID)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if form.Note != nil {
|
if form.Note != nil {
|
||||||
if err := validate.Note(*form.Note); err != nil {
|
if err := validate.Note(*form.Note); err != nil {
|
||||||
|
@ -68,7 +71,9 @@ func (p *processor) Update(ctx context.Context, account *gtsmodel.Account, form
|
||||||
|
|
||||||
// Set the raw note before processing
|
// Set the raw note before processing
|
||||||
account.NoteRaw = *form.Note
|
account.NoteRaw = *form.Note
|
||||||
|
}
|
||||||
|
|
||||||
|
// As per DisplayName, we need to reparse regardless to keep emojis straight
|
||||||
// Process note to generate a valid HTML representation
|
// Process note to generate a valid HTML representation
|
||||||
var f text.FormatFunc
|
var f text.FormatFunc
|
||||||
if account.StatusFormat == "markdown" {
|
if account.StatusFormat == "markdown" {
|
||||||
|
@ -76,7 +81,7 @@ func (p *processor) Update(ctx context.Context, account *gtsmodel.Account, form
|
||||||
} else {
|
} else {
|
||||||
f = p.formatter.FromPlain
|
f = p.formatter.FromPlain
|
||||||
}
|
}
|
||||||
formatted := f(ctx, p.parseMention, account.ID, "", *form.Note)
|
formatted := f(ctx, p.parseMention, account.ID, "", account.NoteRaw)
|
||||||
|
|
||||||
// Set updated HTML-ified note
|
// Set updated HTML-ified note
|
||||||
account.Note = formatted.HTML
|
account.Note = formatted.HTML
|
||||||
|
@ -84,7 +89,6 @@ func (p *processor) Update(ctx context.Context, account *gtsmodel.Account, form
|
||||||
account.Emojis = append(account.Emojis, emoji)
|
account.Emojis = append(account.Emojis, emoji)
|
||||||
account.EmojiIDs = append(account.EmojiIDs, emoji.ID)
|
account.EmojiIDs = append(account.EmojiIDs, emoji.ID)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if form.Avatar != nil && form.Avatar.Size != 0 {
|
if form.Avatar != nil && form.Avatar.Size != 0 {
|
||||||
avatarInfo, err := p.UpdateAvatar(ctx, form.Avatar, nil, account.ID)
|
avatarInfo, err := p.UpdateAvatar(ctx, form.Avatar, nil, account.ID)
|
||||||
|
|
Loading…
Reference in New Issue