events

package
v1.3.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 16, 2026 License: Apache-2.0 Imports: 1 Imported by: 0

Documentation

Overview

Package events is a lossy in-process event bus for UI notifications. It is not a reliable delivery channel; plugin hooks read the database cursor instead.

Index

Constants

View Source
const (
	MessageReceived  = "message.received"
	MessagesChanged  = "messages.changed"
	SyncStarted      = "sync.started"
	SyncFinished     = "sync.finished"
	SyncFailed       = "sync.failed"
	OutboxChanged    = "outbox.changed"
	SettingsChanged  = "settings.changed"
	ApprovalsChanged = "approvals.changed"
	PluginsChanged   = "plugins.changed"
	MCPChanged       = "mcp.changed"
	LabelsChanged    = "labels.changed"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Bus

type Bus struct {
	// contains filtered or unexported fields
}

Bus fans events out to subscribers. Publish never blocks.

func New

func New() *Bus

New returns an empty Bus.

func (*Bus) Publish

func (b *Bus) Publish(e Event)

Publish delivers e to every subscriber without blocking.

func (*Bus) Subscribe

func (b *Bus) Subscribe() (<-chan Event, func())

Subscribe returns a channel of events and a func that unsubscribes it. The unsubscribe func closes the channel and is safe to call more than once.

type Event

type Event struct {
	Type       string
	AccountID  int64
	FolderID   int64
	ThreadIDs  []int64
	MessageIDs []int64
	Error      string
	// ConversationID is set on approvals.changed.
	ConversationID int64
}

Event describes something that happened. Only IDs are carried, never IMAP UIDs.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL