Files

94 lines
2.6 KiB
Go

package main
import (
"github.com/diamondburned/gotk4/pkg/gtk/v4"
"gosrc.io/xmpp/stanza"
"mellium.im/xmpp/color"
"sync"
)
type abMessage struct {
label_ref *gtk.Label
ocu_id string
}
type chatTab struct {
isMuc bool
msgs *gtk.ListBox
msg_refsID map[string]*abMessage
msg_refsOSID map[string]*abMessage
name string
current_nick string
muc_presence *stanza.Presence
}
type BlockingMode int
const (
Drop BlockingMode = iota // Do not even process if the entity is blocked
Hide // Hide the message but allow the user to expand it if they wish (discord style)
Highlight // Just highlight the message in orange
)
type DiscoveryMode int
const (
Everyone DiscoveryMode = iota // All entities can query
OnlyRoster // Only people on your roster can query
None // Nobody can query
)
type lambdaConfig struct {
Server string
Username string
Resource string
Password string
Insecure bool
Nick string
JoinBookmarks bool
CVD color.CVD
Identicons bool
Debug bool
ShowPresenceUpdates bool
CompactMode bool
ShowAvatarsInMemberList bool
CustomNicks map[string]string // Anyone with a specific Occupant ID will have this nick
CustomNicksAV map[string]string // Anyone with a specific avatar hash will have this nick
BlockingOI map[string]bool // Any person who's Occupant ID is in this map will have their messages dropped
BlockingMode BlockingMode
CheckUpdate string
RandomizeResource bool // If this is set to true, then the resource will be completely randomized by the server on every single connect
// Local Bookmarks
LocalBookmarks map[string]string // key: JID, value: Nickname
// Privacy settings
DiscoPrivacy DiscoveryMode // Whether or not Lambda will report its service discovery features and Identity. Reccomended mode is Everyone, Default is Everyone
VersionPrivacy DiscoveryMode // Whether or not Lambda will report its version information. Reccomended mode is Roster, Default is Everyone
IgnoreInsteadOfReturnErrorUponPrivacyViolation bool // If set to true, Lambda will simply ignore Disco and Query Version requests from entities that are untrusted as per the user's discovery mode. If set to false, a service-unavailable error will be reported.
// Spoofing
// TODO
}
type mucUnit struct {
// key: Resource
// value: last user presence
Members sync.Map
}
type userUnit struct {
// key: Resource
// value: last presence of this device
Devices sync.Map
}