mirror of
https://github.com/tulir/gomuks.git
synced 2025-04-19 18:13: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))
|
mediaReferenceEntries := make([]*database.MediaReference, len(evts))
|
||||||
mediaCacheEntries := make([]*database.PlainMedia, 0, len(evts))
|
mediaCacheEntries := make([]*database.PlainMedia, 0, len(evts))
|
||||||
for i, evt := range evts {
|
for i, evt := range evts {
|
||||||
|
if err := h.fillPrevContent(ctx, evt); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
dbEvts[i] = database.MautrixToEvent(evt)
|
dbEvts[i] = database.MautrixToEvent(evt)
|
||||||
currentStateEntries[i] = &database.CurrentStateEntry{
|
currentStateEntries[i] = &database.CurrentStateEntry{
|
||||||
EventType: evt.Type,
|
EventType: evt.Type,
|
||||||
|
|
|
@ -630,6 +630,18 @@ func (h *HiClient) postDecryptProcess(ctx context.Context, llSummary *mautrix.La
|
||||||
return
|
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(
|
func (h *HiClient) processEvent(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
evt *event.Event,
|
evt *event.Event,
|
||||||
|
@ -645,13 +657,8 @@ func (h *HiClient) processEvent(
|
||||||
return dbEvt, nil
|
return dbEvt, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if evt.StateKey != nil && evt.Unsigned.PrevContent == nil && evt.Unsigned.ReplacesState != "" {
|
if err := h.fillPrevContent(ctx, evt); err != nil {
|
||||||
replacesState, err := h.DB.Event.GetByID(ctx, evt.Unsigned.ReplacesState)
|
return nil, err
|
||||||
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}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
dbEvt := database.MautrixToEvent(evt)
|
dbEvt := database.MautrixToEvent(evt)
|
||||||
contentWithoutFallback := removeReplyFallback(evt)
|
contentWithoutFallback := removeReplyFallback(evt)
|
||||||
|
|
Loading…
Add table
Reference in a new issue