mirror of
https://github.com/J3vb/OwnCord.git
synced 2026-09-03 03:50:00 +03:00
* fix(client): 3 defect(s) (OC-0037, OC-0063, OC-0116) Route the tray Status submenu through saveUserStatus() (mapping the legacy "offline" to "invisible") so notifications, autoIdle, and reconnect presence restore all agree with the tray's choice; build the connected overlay from the auth_ok payload instead of a pre-dispatch authStore snapshot; keep the TOTP overlay open across a rejected verify (totpPending latch) and retain the partial token for the retry instead of clearing it in finally. Hand-applied combined cluster preserved from the previous fix run's overlap-guard block (both clusters edit main.ts). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * fix(voice): 2 defect(s) (OC-0010, OC-0011) * fix(ws): 1 defect(s) (OC-0050) * fix(db): 1 defect(s) (OC-0052) * fix(client): 1 defect(s) (OC-0054) * fix(client): 1 defect(s) (OC-0059) * fix(auth): 1 defect(s) (OC-0061) * fix(ws): 1 defect(s) (OC-0062) * fix(client): 1 defect(s) (OC-0064) * fix(service): 1 defect(s) (OC-0070) * fix(ws): 1 defect(s) (OC-0073) * fix(service): 2 defect(s) (OC-0075, OC-0120) * fix(admin): 1 defect(s) (OC-0076) * fix(voice): 1 defect(s) (OC-0084) * fix(client): 2 defect(s) (OC-0085, OC-0094) Scope collapsed-category persistence to the connected host instead of the server display name, and stop the DM back button from jumping to the first text channel when DM mode was entered without recording channelBeforeDm. * fix(service): 1 defect(s) (OC-0087) * fix(client): 1 defect(s) (OC-0089) * fix(ws): 1 defect(s) (OC-0091) * fix(api): 1 defect(s) (OC-0093) * fix(identity): 1 defect(s) (OC-0118) * fix(dm): 1 defect(s) (OC-0119) * fix(voice): 1 defect(s) (OC-0135) * fix(api): 1 defect(s) (OC-0137) * fix(client): 1 defect(s) (OC-0142) * fix(client): 1 defect(s) (OC-0144) * fix(admin): 1 defect(s) (OC-0145) * fix(updater): 1 defect(s) (OC-0146) * fix(client): 1 defect(s) (OC-0150) * fix(mentions): 1 defect(s) (OC-0131) --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
29 lines
1.4 KiB
Go
29 lines
1.4 KiB
Go
package ws
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"github.com/owncord/server/db"
|
|
)
|
|
|
|
// EventStore persists broadcast events for cold-tier replay during reconnection
|
|
// when the in-memory ring buffer no longer covers the client's last_seq.
|
|
// *db.DB satisfies it (the methods moved into the db package when the store
|
|
// abstraction was removed in D3).
|
|
type EventStore interface {
|
|
PersistEvent(ctx context.Context, seq int64, eventType string, channelID int64, payload []byte) error
|
|
// PersistEvents writes a batch in one transaction, falling back to per-row
|
|
// inserts on tx failure (best-effort). Returns rows persisted and, when any
|
|
// row was lost, the first per-row error.
|
|
PersistEvents(ctx context.Context, events []db.PersistedEvent) (int, error)
|
|
GetEventsSince(ctx context.Context, afterSeq int64, limit int) ([]db.PersistedEvent, error)
|
|
GetEventsSinceForChannels(ctx context.Context, afterSeq int64, channelIDs []int64, limit int) ([]db.PersistedEvent, error)
|
|
// CountEventsInRange returns the unfiltered count of events with
|
|
// afterSeq < seq <= uptoSeq, used to detect an interior gap left by a
|
|
// lost row before a persisted range is trusted as a complete replay.
|
|
CountEventsInRange(ctx context.Context, afterSeq, uptoSeq int64) (int64, error)
|
|
PruneEventsOlderThan(ctx context.Context, cutoff time.Time) (int64, error)
|
|
GetMaxEventSeq(ctx context.Context) (int64, error)
|
|
}
|