mirror of
https://github.com/tulir/gomuks.git
synced 2025-04-16 08:53:41 -05:00
hicli/paginate: fill prev content when resyncing state
This commit is contained in:
parent
0bf0a35cee
commit
ef2e95a294
2 changed files with 17 additions and 7 deletions
|
@ -78,6 +78,9 @@ func (h *HiClient) processGetRoomState(ctx context.Context, roomID id.RoomID, fe
|
|||
mediaReferenceEntries := make([]*database.MediaReference, len(evts))
|
||||
mediaCacheEntries := make([]*database.PlainMedia, 0, len(evts))
|
||||
for i, evt := range evts {
|
||||
if err := h.fillPrevContent(ctx, evt); err != nil {
|
||||
return err
|
||||
}
|
||||
dbEvts[i] = database.MautrixToEvent(evt)
|
||||
currentStateEntries[i] = &database.CurrentStateEntry{
|
||||
EventType: evt.Type,
|
||||
|
|
|
@ -630,6 +630,18 @@ func (h *HiClient) postDecryptProcess(ctx context.Context, llSummary *mautrix.La
|
|||
return
|
||||
}
|
||||
|
||||
func (h *HiClient) fillPrevContent(ctx context.Context, evt *event.Event) error {
|
||||
if evt.StateKey != nil && evt.Unsigned.PrevContent == nil && evt.Unsigned.ReplacesState != "" {
|
||||
replacesState, err := h.DB.Event.GetByID(ctx, evt.Unsigned.ReplacesState)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to get prev content for %s from %s: %w", evt.ID, evt.Unsigned.ReplacesState, err)
|
||||
} else if replacesState != nil {
|
||||
evt.Unsigned.PrevContent = &event.Content{VeryRaw: replacesState.Content}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (h *HiClient) processEvent(
|
||||
ctx context.Context,
|
||||
evt *event.Event,
|
||||
|
@ -645,13 +657,8 @@ func (h *HiClient) processEvent(
|
|||
return dbEvt, nil
|
||||
}
|
||||
}
|
||||
if evt.StateKey != nil && evt.Unsigned.PrevContent == nil && evt.Unsigned.ReplacesState != "" {
|
||||
replacesState, err := h.DB.Event.GetByID(ctx, evt.Unsigned.ReplacesState)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to get prev content for %s from %s: %w", evt.ID, evt.Unsigned.ReplacesState, err)
|
||||
} else if replacesState != nil {
|
||||
evt.Unsigned.PrevContent = &event.Content{VeryRaw: replacesState.Content}
|
||||
}
|
||||
if err := h.fillPrevContent(ctx, evt); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
dbEvt := database.MautrixToEvent(evt)
|
||||
contentWithoutFallback := removeReplyFallback(evt)
|
||||
|
|
Loading…
Add table
Reference in a new issue