types

package
v0.0.0-...-52f30ea Latest Latest
Warning

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

Go to latest
Published: Apr 24, 2024 License: BSD-3-Clause Imports: 15 Imported by: 129

Documentation

Index

Constants

View Source
const (
	ActionNewConversation            = "newConversation"
	ActionNewMessage                 = "newMessage"
	ActionReadMessage                = "readMessage"
	ActionSetStatus                  = "setStatus"
	ActionSetAppNotificationSettings = "setAppNotificationSettings"
	ActionTeamType                   = "teamType"
	ActionExpunge                    = "expunge"

	PushActivity            = "chat.activity"
	PushTyping              = "chat.typing"
	PushMembershipUpdate    = "chat.membershipUpdate"
	PushTLFFinalize         = "chat.tlffinalize"
	PushTLFResolve          = "chat.tlfresolve"
	PushKBFSUpgrade         = "chat.kbfsupgrade"
	PushConvRetention       = "chat.convretention"
	PushTeamRetention       = "chat.teamretention"
	PushConvSettings        = "chat.convsettings"
	PushSubteamRename       = "chat.subteamrename"
	PushConversationsUpdate = "chat.conversationsupdate"

	MapsDomain = "keybasemaps"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type ActivityNotifier

type ActivityNotifier interface {
	Activity(ctx context.Context, uid gregor1.UID, topicType chat1.TopicType, activity *chat1.ChatActivity,
		source chat1.ChatActivitySource)
	TypingUpdate(ctx context.Context, updates []chat1.ConvTypingUpdate)
	JoinedConversation(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID,
		topicType chat1.TopicType, conv *chat1.InboxUIItem)
	LeftConversation(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID,
		topicType chat1.TopicType)
	ResetConversation(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID,
		topicType chat1.TopicType)
	KBFSToImpteamUpgrade(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID,
		topicType chat1.TopicType)
	SetConvRetention(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID,
		topicType chat1.TopicType, conv *chat1.InboxUIItem)
	SetTeamRetention(ctx context.Context, uid gregor1.UID, teamID keybase1.TeamID,
		topicType chat1.TopicType, convs []chat1.InboxUIItem)
	SetConvSettings(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID,
		topicType chat1.TopicType, conv *chat1.InboxUIItem)
	SubteamRename(ctx context.Context, uid gregor1.UID, convIDs []chat1.ConversationID,
		topicType chat1.TopicType, convs []chat1.InboxUIItem)

	InboxSyncStarted(ctx context.Context, uid gregor1.UID)
	InboxSynced(ctx context.Context, uid gregor1.UID, topicType chat1.TopicType, syncRes chat1.ChatSyncResult)
	InboxStale(ctx context.Context, uid gregor1.UID)
	ThreadsStale(ctx context.Context, uid gregor1.UID, updates []chat1.ConversationStaleUpdate)

	TLFFinalize(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID, topicType chat1.TopicType,
		finalizeInfo chat1.ConversationFinalizeInfo, conv *chat1.InboxUIItem)
	TLFResolve(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID, topicType chat1.TopicType,
		resolveInfo chat1.ConversationResolveInfo)

	AttachmentUploadStart(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID,
		outboxID chat1.OutboxID)
	AttachmentUploadProgress(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID,
		outboxID chat1.OutboxID, bytesComplete, bytesTotal int64)

	PromptUnfurl(ctx context.Context, uid gregor1.UID,
		convID chat1.ConversationID, msgID chat1.MessageID, domain string)
	ConvUpdate(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID,
		topicType chat1.TopicType, conv *chat1.InboxUIItem)
}

type AllCryptKeys

type AllCryptKeys map[chat1.ConversationMembersType][]CryptKey

func NewAllCryptKeys

func NewAllCryptKeys() AllCryptKeys

type AsyncInboxResult

type AsyncInboxResult struct {
	Conv      RemoteConversation
	ConvLocal chat1.ConversationLocal
	InboxRes  *Inbox // set if we are returning the whole inbox
}

type AttachmentFetcher

type AttachmentFetcher interface {
	DeleteAssets(ctx context.Context, convID chat1.ConversationID, assets []chat1.Asset,
		ri func() chat1.RemoteInterface, signer s3.Signer) error
	FetchAttachment(ctx context.Context, w io.Writer, convID chat1.ConversationID, asset chat1.Asset,
		ri func() chat1.RemoteInterface, signer s3.Signer, progress ProgressReporter) error
	StreamAttachment(ctx context.Context, convID chat1.ConversationID, asset chat1.Asset,
		ri func() chat1.RemoteInterface, signer s3.Signer) (io.ReadSeeker, error)
	PutUploadedAsset(ctx context.Context, filename string, asset chat1.Asset) error
	IsAssetLocal(ctx context.Context, asset chat1.Asset) (bool, error)
	OnDbNuke(mctx libkb.MetaContext) error
	OnStart(mctx libkb.MetaContext)
}

type AttachmentURLSrv

type AttachmentURLSrv interface {
	GetURL(ctx context.Context, convID chat1.ConversationID, msgID chat1.MessageID,
		preview, noAnim, isEmoji bool) string
	GetPendingPreviewURL(ctx context.Context, outboxID chat1.OutboxID) string
	GetUnfurlAssetURL(ctx context.Context, convID chat1.ConversationID, asset chat1.Asset) string
	GetGiphyURL(ctx context.Context, giphyURL string) string
	GetGiphyGalleryURL(ctx context.Context, convID chat1.ConversationID,
		tlfName string, results []chat1.GiphySearchResult) string
	GetAttachmentFetcher() AttachmentFetcher
	OnDbNuke(mctx libkb.MetaContext) error
}

type AttachmentUploadResult

type AttachmentUploadResult struct {
	Error    *string
	Object   chat1.Asset
	Preview  *chat1.Asset
	Metadata []byte
}

type AttachmentUploader

type AttachmentUploader interface {
	Register(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID,
		outboxID chat1.OutboxID, title, filename string, metadata []byte,
		callerPreview *chat1.MakePreviewRes) (AttachmentUploaderResultCb, error)
	Status(ctx context.Context, outboxID chat1.OutboxID) (AttachmentUploaderTaskStatus, AttachmentUploadResult, error)
	Retry(ctx context.Context, outboxID chat1.OutboxID) (AttachmentUploaderResultCb, error)
	Cancel(ctx context.Context, outboxID chat1.OutboxID) error
	Complete(ctx context.Context, outboxID chat1.OutboxID)
	GetUploadTempFile(ctx context.Context, outboxID chat1.OutboxID, filename string) (string, error)
	GetUploadTempSink(ctx context.Context, filename string) (*os.File, chat1.OutboxID, error)
	CancelUploadTempFile(ctx context.Context, outboxID chat1.OutboxID) error
	OnDbNuke(mctx libkb.MetaContext) error
}

type AttachmentUploaderResultCb

type AttachmentUploaderResultCb interface {
	Wait() chan AttachmentUploadResult
}

type AttachmentUploaderTaskStatus

type AttachmentUploaderTaskStatus int
const (
	AttachmentUploaderTaskStatusUploading AttachmentUploaderTaskStatus = iota
	AttachmentUploaderTaskStatusSuccess
	AttachmentUploaderTaskStatusFailed
)

type BackgroundRunnable

type BackgroundRunnable interface {
	IsBackgroundActive() bool
}

type BotCommandManager

type BotCommandManager interface {
	Resumable
	Advertise(ctx context.Context, alias *string, ads []chat1.AdvertiseCommandsParam) error
	Clear(ctx context.Context, filter *chat1.ClearBotCommandsFilter) error
	PublicCommandsConv(ctx context.Context, username string) (*chat1.ConversationID, error)
	ListCommands(ctx context.Context, convID chat1.ConversationID) ([]chat1.UserBotCommandOutput, map[string]string, error)
	UpdateCommands(ctx context.Context, convID chat1.ConversationID, info *chat1.BotInfo) (chan error, error)
}

type BoxerEncryptionInfo

type BoxerEncryptionInfo struct {
	Key                   CryptKey
	SigningKeyPair        libkb.NaclSigningKeyPair
	EphemeralKey          EphemeralCryptKey
	PairwiseMACRecipients []keybase1.KID
	Version               chat1.MessageBoxedVersion
}

type ChatArchiveRegistry

type ChatArchiveRegistry interface {
	Resumable

	// List all known jobs
	List(ctx context.Context) (res chat1.ArchiveChatListRes, err error)
	// Get a job for a specific ID
	Get(ctx context.Context, jobID chat1.ArchiveJobID) (res chat1.ArchiveChatJob, err error)
	// Delete a jobs metadata, cancels it if it is currently running
	Delete(ctx context.Context, jobID chat1.ArchiveJobID, deleteOutputPath bool) (err error)
	// Sets (possibly updating) the job to the given state.
	// cancel stops a running job by cancelling it's context and returns it's current state
	Set(ctx context.Context, cancel PauseArchiveFn, job chat1.ArchiveChatJob) (err error)
	// Stop a running job
	Pause(ctx context.Context, jobID chat1.ArchiveJobID) (err error)
	// Resume a paused job
	Resume(ctx context.Context, jobID chat1.ArchiveJobID) (err error)
	OnDbNuke(libkb.MetaContext) error
}

type ClearOpts

type ClearOpts struct {
	SendLocalAdminNotification bool
	Reason                     string
}

type CoinFlipManager

type CoinFlipManager interface {
	Resumable
	StartFlip(ctx context.Context, uid gregor1.UID, hostConvID chat1.ConversationID, tlfName, text string,
		outboxID *chat1.OutboxID) error
	MaybeInjectFlipMessage(ctx context.Context, boxedMsg chat1.MessageBoxed, inboxVers chat1.InboxVers,
		uid gregor1.UID, convID chat1.ConversationID, topicType chat1.TopicType) bool
	LoadFlip(ctx context.Context, uid gregor1.UID, hostConvID chat1.ConversationID, hostMsgID chat1.MessageID,
		flipConvID chat1.ConversationID, gameID chat1.FlipGameID) (chan chat1.UICoinFlipStatus, chan error)
	DescribeFlipText(ctx context.Context, text string) string
	HasActiveGames(ctx context.Context) bool
	IsFlipConversationCreated(ctx context.Context, outboxID chat1.OutboxID) (chat1.ConversationID, FlipSendStatus)
}

type ContextFactory

type ContextFactory interface {
	NewKeyFinder() KeyFinder
	NewUPAKFinder() UPAKFinder
}

type ConvConversationBackedStorage

type ConvConversationBackedStorage interface {
	Put(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID, name string, data interface{}) error
	PutToKnownConv(ctx context.Context, uid gregor1.UID, conv chat1.ConversationLocal, data interface{}) error
	Get(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID, name string, res interface{},
		createConvIfMissing bool) (bool, *chat1.ConversationLocal, error)
	GetFromKnownConv(ctx context.Context, uid gregor1.UID, conv chat1.ConversationLocal, dest interface{}) (bool, error)
}

type ConvLoader

type ConvLoader interface {
	Resumable
	Suspendable
	BackgroundRunnable

	Queue(ctx context.Context, job ConvLoaderJob) error
}

type ConvLoaderJob

type ConvLoaderJob struct {
	ConvID       chat1.ConversationID
	Pagination   *chat1.Pagination
	Priority     ConvLoaderPriority
	Uniqueness   ConvLoaderUniqueness
	PostLoadHook func(context.Context, chat1.ThreadView, ConvLoaderJob)
}

func NewConvLoaderJob

func NewConvLoaderJob(convID chat1.ConversationID, pagination *chat1.Pagination, priority ConvLoaderPriority,
	uniqueness ConvLoaderUniqueness, postLoadHook func(context.Context, chat1.ThreadView, ConvLoaderJob)) ConvLoaderJob

func (ConvLoaderJob) HigherPriorityThan

func (j ConvLoaderJob) HigherPriorityThan(j2 ConvLoaderJob) bool

func (ConvLoaderJob) String

func (j ConvLoaderJob) String() string

type ConvLoaderPriority

type ConvLoaderPriority int
var (
	ConvLoaderPriorityHighest ConvLoaderPriority = 10
	ConvLoaderPriorityHigh    ConvLoaderPriority = 7
	ConvLoaderPriorityMedium  ConvLoaderPriority = 5
	ConvLoaderPriorityLow     ConvLoaderPriority = 3
	ConvLoaderPriorityLowest  ConvLoaderPriority
)

func (ConvLoaderPriority) HigherThan

func (c ConvLoaderPriority) HigherThan(c2 ConvLoaderPriority) bool

type ConvLoaderUniqueness

type ConvLoaderUniqueness int
const (
	ConvLoaderUnique ConvLoaderUniqueness = iota
	ConvLoaderGeneric
)

type ConversationCommand

type ConversationCommand interface {
	Match(ctx context.Context, text string) bool
	Execute(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID, tlfName, text string,
		replyTo *chat1.MessageID) error
	Preview(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID, tflName, text string)
	Name() string
	Usage() string
	Description() string
	HasHelpText() bool
	Export() chat1.ConversationCommand
}

type ConversationCommandsSource

type ConversationCommandsSource interface {
	ListCommands(ctx context.Context, uid gregor1.UID, conv ConversationCommandsSpec) (chat1.ConversationCommandGroups, error)
	GetBuiltins(ctx context.Context) []chat1.BuiltinCommandGroup
	GetBuiltinCommandType(ctx context.Context, c ConversationCommandsSpec) chat1.ConversationBuiltinCommandTyp
	AttemptBuiltinCommand(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID,
		tlfName string, body chat1.MessageBody, replyTo *chat1.MessageID) (bool, error)
	PreviewBuiltinCommand(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID,
		tlfName, text string)
}

type ConversationCommandsSpec

type ConversationCommandsSpec interface {
	GetMembersType() chat1.ConversationMembersType
	GetTeamType() chat1.TeamType
	GetTopicName() string
}

type ConversationLocalizerTyp

type ConversationLocalizerTyp int
const (
	ConversationLocalizerBlocking ConversationLocalizerTyp = iota
	ConversationLocalizerNonblocking
)

type ConversationSource

type ConversationSource interface {
	AcquireConversationLock(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID) error
	ReleaseConversationLock(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID)

	Push(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID,
		msg chat1.MessageBoxed) (chat1.MessageUnboxed, bool, error)
	PushUnboxed(ctx context.Context, conv UnboxConversationInfo,
		uid gregor1.UID, msg []chat1.MessageUnboxed) error
	Pull(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, reason chat1.GetThreadReason,
		ri func() chat1.RemoteInterface, query *chat1.GetThreadQuery, pagination *chat1.Pagination) (chat1.ThreadView, error)
	PullLocalOnly(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID,
		reason chat1.GetThreadReason, query *chat1.GetThreadQuery, p *chat1.Pagination, maxPlaceholders int) (chat1.ThreadView, error)
	PullFull(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, reason chat1.GetThreadReason,
		query *chat1.GetThreadQuery, maxPages *int) (chat1.ThreadView, error)
	GetMessage(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, msgID chat1.MessageID,
		reason *chat1.GetThreadReason, ri func() chat1.RemoteInterface, resolveSupersedes bool) (chat1.MessageUnboxed, error)
	GetMessages(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, msgIDs []chat1.MessageID,
		reason *chat1.GetThreadReason, ri func() chat1.RemoteInterface, resolveSupersedes bool) ([]chat1.MessageUnboxed, error)
	GetMessagesWithRemotes(ctx context.Context, conv chat1.Conversation, uid gregor1.UID,
		msgs []chat1.MessageBoxed) ([]chat1.MessageUnboxed, error)
	GetUnreadline(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID,
		readMsgID chat1.MessageID) (*chat1.MessageID, error)
	Clear(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, opts *ClearOpts) error
	TransformSupersedes(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID,
		msgs []chat1.MessageUnboxed, q *chat1.GetThreadQuery, superXform SupersedesTransform,
		replyFiller ReplyFiller, maxDeletedUpTo *chat1.MessageID) ([]chat1.MessageUnboxed, error)
	Expunge(ctx context.Context, conv UnboxConversationInfo, uid gregor1.UID, expunge chat1.Expunge) error
	EphemeralPurge(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID,
		purgeInfo *chat1.EphemeralPurgeInfo) (*chat1.EphemeralPurgeInfo, []chat1.MessageUnboxed, error)

	SetRemoteInterface(func() chat1.RemoteInterface)
	DeleteAssets(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID, assets []chat1.Asset)
}

type CryptKey

type CryptKey interface {
	Material() keybase1.Bytes32
	Generation() int
}

type DummyAttachmentFetcher

type DummyAttachmentFetcher struct{}

func (DummyAttachmentFetcher) DeleteAssets

func (d DummyAttachmentFetcher) DeleteAssets(ctx context.Context,
	convID chat1.ConversationID, assets []chat1.Asset, ri func() chat1.RemoteInterface, signer s3.Signer) (err error)

func (DummyAttachmentFetcher) FetchAttachment

func (d DummyAttachmentFetcher) FetchAttachment(ctx context.Context, w io.Writer,
	convID chat1.ConversationID, asset chat1.Asset, r func() chat1.RemoteInterface, signer s3.Signer,
	progress ProgressReporter) error

func (DummyAttachmentFetcher) IsAssetLocal

func (d DummyAttachmentFetcher) IsAssetLocal(ctx context.Context, asset chat1.Asset) (bool, error)

func (DummyAttachmentFetcher) OnDbNuke

func (d DummyAttachmentFetcher) OnDbNuke(mctx libkb.MetaContext) error

func (DummyAttachmentFetcher) OnStart

func (d DummyAttachmentFetcher) OnStart(mctx libkb.MetaContext)

func (DummyAttachmentFetcher) PutUploadedAsset

func (d DummyAttachmentFetcher) PutUploadedAsset(ctx context.Context, filename string, asset chat1.Asset) error

func (DummyAttachmentFetcher) StreamAttachment

func (d DummyAttachmentFetcher) StreamAttachment(ctx context.Context, convID chat1.ConversationID,
	asset chat1.Asset, ri func() chat1.RemoteInterface, signer s3.Signer) (io.ReadSeeker, error)

type DummyAttachmentHTTPSrv

type DummyAttachmentHTTPSrv struct{}

func (DummyAttachmentHTTPSrv) GetAttachmentFetcher

func (d DummyAttachmentHTTPSrv) GetAttachmentFetcher() AttachmentFetcher

func (DummyAttachmentHTTPSrv) GetGiphyGalleryURL

func (d DummyAttachmentHTTPSrv) GetGiphyGalleryURL(ctx context.Context, convID chat1.ConversationID,
	tlfName string, results []chat1.GiphySearchResult) string

func (DummyAttachmentHTTPSrv) GetGiphyURL

func (d DummyAttachmentHTTPSrv) GetGiphyURL(ctx context.Context, giphyURL string) string

func (DummyAttachmentHTTPSrv) GetPendingPreviewURL

func (d DummyAttachmentHTTPSrv) GetPendingPreviewURL(ctx context.Context, outboxID chat1.OutboxID) string

func (DummyAttachmentHTTPSrv) GetURL

func (d DummyAttachmentHTTPSrv) GetURL(ctx context.Context, convID chat1.ConversationID, msgID chat1.MessageID,
	preview, noAnim, isEmoji bool) string

func (DummyAttachmentHTTPSrv) GetUnfurlAssetURL

func (d DummyAttachmentHTTPSrv) GetUnfurlAssetURL(ctx context.Context, convID chat1.ConversationID,
	asset chat1.Asset) string

func (DummyAttachmentHTTPSrv) OnDbNuke

func (d DummyAttachmentHTTPSrv) OnDbNuke(mctx libkb.MetaContext) error

type DummyAttachmentUploader

type DummyAttachmentUploader struct{}

func (DummyAttachmentUploader) Cancel

func (d DummyAttachmentUploader) Cancel(ctx context.Context, outboxID chat1.OutboxID) error

func (DummyAttachmentUploader) CancelUploadTempFile

func (d DummyAttachmentUploader) CancelUploadTempFile(ctx context.Context, outboxID chat1.OutboxID) error

func (DummyAttachmentUploader) Complete

func (d DummyAttachmentUploader) Complete(ctx context.Context, outboxID chat1.OutboxID)

func (DummyAttachmentUploader) GetUploadTempFile

func (d DummyAttachmentUploader) GetUploadTempFile(ctx context.Context, outboxID chat1.OutboxID, filename string) (string, error)

func (DummyAttachmentUploader) GetUploadTempSink

func (d DummyAttachmentUploader) GetUploadTempSink(ctx context.Context, filename string) (*os.File, chat1.OutboxID, error)

func (DummyAttachmentUploader) OnDbNuke

func (DummyAttachmentUploader) Register

func (d DummyAttachmentUploader) Register(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID,
	outboxID chat1.OutboxID, title, filename string, metadata []byte,
	callerPreview *chat1.MakePreviewRes) (AttachmentUploaderResultCb, error)

func (DummyAttachmentUploader) Retry

func (DummyAttachmentUploader) Status

type DummyBotCommandManager

type DummyBotCommandManager struct{}

func (DummyBotCommandManager) Advertise

func (DummyBotCommandManager) Clear

func (DummyBotCommandManager) ListCommands

func (DummyBotCommandManager) PublicCommandsConv

func (d DummyBotCommandManager) PublicCommandsConv(ctx context.Context, username string) (*chat1.ConversationID, error)

func (DummyBotCommandManager) Start

func (d DummyBotCommandManager) Start(ctx context.Context, uid gregor1.UID)

func (DummyBotCommandManager) Stop

func (d DummyBotCommandManager) Stop(ctx context.Context) chan struct{}

func (DummyBotCommandManager) UpdateCommands

func (d DummyBotCommandManager) UpdateCommands(ctx context.Context, convID chat1.ConversationID,
	info *chat1.BotInfo) (chan error, error)

type DummyCoinFlipManager

type DummyCoinFlipManager struct{}

func (DummyCoinFlipManager) DescribeFlipText

func (d DummyCoinFlipManager) DescribeFlipText(ctx context.Context, text string) string

func (DummyCoinFlipManager) HasActiveGames

func (d DummyCoinFlipManager) HasActiveGames(ctx context.Context) bool

func (DummyCoinFlipManager) IsFlipConversationCreated

func (d DummyCoinFlipManager) IsFlipConversationCreated(ctx context.Context, outboxID chat1.OutboxID) (chat1.ConversationID, FlipSendStatus)

func (DummyCoinFlipManager) LoadFlip

func (d DummyCoinFlipManager) LoadFlip(ctx context.Context, uid gregor1.UID, hostConvID chat1.ConversationID,
	hostMsgID chat1.MessageID, flipConvID chat1.ConversationID, gameID chat1.FlipGameID) (chan chat1.UICoinFlipStatus, chan error)

func (DummyCoinFlipManager) MaybeInjectFlipMessage

func (d DummyCoinFlipManager) MaybeInjectFlipMessage(ctx context.Context, boxedMsg chat1.MessageBoxed,
	inboxVers chat1.InboxVers, uid gregor1.UID, convID chat1.ConversationID, topicType chat1.TopicType) bool

func (DummyCoinFlipManager) Start

func (d DummyCoinFlipManager) Start(ctx context.Context, uid gregor1.UID)

func (DummyCoinFlipManager) StartFlip

func (d DummyCoinFlipManager) StartFlip(ctx context.Context, uid gregor1.UID, hostConvID chat1.ConversationID, tlfName, text string, outboxID *chat1.OutboxID) error

func (DummyCoinFlipManager) Stop

func (d DummyCoinFlipManager) Stop(ctx context.Context) chan struct{}

type DummyCtxFactory

type DummyCtxFactory struct{}

func (DummyCtxFactory) NewKeyFinder

func (d DummyCtxFactory) NewKeyFinder() KeyFinder

func (DummyCtxFactory) NewUPAKFinder

func (d DummyCtxFactory) NewUPAKFinder() UPAKFinder

type DummyEmojiSource

type DummyEmojiSource struct{}

func (DummyEmojiSource) Add

func (DummyEmojiSource) Add(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID,
	alias, filename string, allowOverwrite bool) (res chat1.EmojiRemoteSource, err error)

func (DummyEmojiSource) AddAlias

func (DummyEmojiSource) AddAlias(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID,
	newAlias, existingAlias string) (res chat1.EmojiRemoteSource, err error)

func (DummyEmojiSource) Decorate

func (DummyEmojiSource) Decorate(ctx context.Context, body string, uid gregor1.UID,
	messageType chat1.MessageType, emojis []chat1.HarvestedEmoji) string

func (DummyEmojiSource) Get

func (DummyEmojiSource) Harvest

func (DummyEmojiSource) Harvest(ctx context.Context, body string, uid gregor1.UID,
	convID chat1.ConversationID, mode EmojiHarvestMode) (res []chat1.HarvestedEmoji, err error)

func (DummyEmojiSource) IsStockEmoji

func (DummyEmojiSource) IsStockEmoji(alias string) bool

func (DummyEmojiSource) IsValidSize

func (DummyEmojiSource) IsValidSize(size int64) bool

func (DummyEmojiSource) RemoteToLocalSource

func (DummyEmojiSource) RemoteToLocalSource(ctx context.Context, uid gregor1.UID,
	remote chat1.EmojiRemoteSource) (source chat1.EmojiLoadSource, noAnimSource chat1.EmojiLoadSource, err error)

func (DummyEmojiSource) Remove

func (DummyEmojiSource) Remove(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID,
	alias string) error

func (DummyEmojiSource) ToggleAnimations

func (DummyEmojiSource) ToggleAnimations(ctx context.Context, uid gregor1.UID, enabled bool) error

type DummyEphemeralPurger

type DummyEphemeralPurger struct{}

func (DummyEphemeralPurger) Queue

func (DummyEphemeralPurger) Start

func (d DummyEphemeralPurger) Start(ctx context.Context, uid gregor1.UID)

func (DummyEphemeralPurger) Stop

func (d DummyEphemeralPurger) Stop(ctx context.Context) chan struct{}

type DummyEphemeralTracker

type DummyEphemeralTracker struct{}

func (DummyEphemeralTracker) Clear

func (DummyEphemeralTracker) GetAllPurgeInfo

func (d DummyEphemeralTracker) GetAllPurgeInfo(ctx context.Context, uid gregor1.UID) ([]chat1.EphemeralPurgeInfo, error)

func (DummyEphemeralTracker) GetPurgeInfo

func (DummyEphemeralTracker) InactivatePurgeInfo

func (d DummyEphemeralTracker) InactivatePurgeInfo(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID) error

func (DummyEphemeralTracker) MaybeUpdatePurgeInfo

func (d DummyEphemeralTracker) MaybeUpdatePurgeInfo(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, purgeInfo *chat1.EphemeralPurgeInfo) error

func (DummyEphemeralTracker) OnDbNuke

func (d DummyEphemeralTracker) OnDbNuke(mctx libkb.MetaContext) error

func (DummyEphemeralTracker) OnLogout

func (d DummyEphemeralTracker) OnLogout(mctx libkb.MetaContext) error

func (DummyEphemeralTracker) SetPurgeInfo

func (d DummyEphemeralTracker) SetPurgeInfo(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, purgeInfo *chat1.EphemeralPurgeInfo) error

func (DummyEphemeralTracker) Start

func (d DummyEphemeralTracker) Start(ctx context.Context, uid gregor1.UID)

func (DummyEphemeralTracker) Stop

func (d DummyEphemeralTracker) Stop(ctx context.Context) chan struct{}

type DummyExternalAPIKeySource

type DummyExternalAPIKeySource struct{}

func (DummyExternalAPIKeySource) GetAllKeys

func (d DummyExternalAPIKeySource) GetAllKeys(ctx context.Context) (res []chat1.ExternalAPIKey, err error)

func (DummyExternalAPIKeySource) GetKey

type DummyIndexer

type DummyIndexer struct{}

func (DummyIndexer) Add

func (DummyIndexer) Clear

func (d DummyIndexer) Clear(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID) error

func (DummyIndexer) ClearCache

func (d DummyIndexer) ClearCache()

func (DummyIndexer) FullyIndexed

func (d DummyIndexer) FullyIndexed(ctx context.Context, convID chat1.ConversationID) (bool, error)

func (DummyIndexer) IndexInbox

func (DummyIndexer) IsBackgroundActive

func (d DummyIndexer) IsBackgroundActive() bool

func (DummyIndexer) OnDbNuke

func (d DummyIndexer) OnDbNuke(mctx libkb.MetaContext) error

func (DummyIndexer) OnLogout

func (d DummyIndexer) OnLogout(mctx libkb.MetaContext) error

func (DummyIndexer) PercentIndexed

func (d DummyIndexer) PercentIndexed(ctx context.Context, convID chat1.ConversationID) (int, error)

func (DummyIndexer) Remove

func (DummyIndexer) Resume

func (d DummyIndexer) Resume(ctx context.Context) bool

func (DummyIndexer) Search

func (d DummyIndexer) Search(ctx context.Context, query, origQuery string,
	opts chat1.SearchOpts, hitUICh chan chat1.ChatSearchInboxHit, indexUICh chan chat1.ChatSearchIndexStatus) (*chat1.ChatSearchInboxResults, error)

func (DummyIndexer) SearchableConvs

func (d DummyIndexer) SearchableConvs(ctx context.Context, convID *chat1.ConversationID) ([]RemoteConversation, error)

func (DummyIndexer) Start

func (d DummyIndexer) Start(ctx context.Context, uid gregor1.UID)

func (DummyIndexer) Stop

func (d DummyIndexer) Stop(ctx context.Context) chan struct{}

func (DummyIndexer) Suspend

func (d DummyIndexer) Suspend(ctx context.Context) bool

type DummyNativeVideoHelper

type DummyNativeVideoHelper struct{}

func (DummyNativeVideoHelper) ThumbnailAndDuration

func (d DummyNativeVideoHelper) ThumbnailAndDuration(ctx context.Context, filename string) ([]byte, int, error)

type DummyParticipantSource

type DummyParticipantSource struct{}

func (DummyParticipantSource) Get

func (DummyParticipantSource) GetNonblock

func (DummyParticipantSource) GetParticipantsFromUids

func (d DummyParticipantSource) GetParticipantsFromUids(
	ctx context.Context,
	uids []gregor1.UID,
) ([]chat1.ConversationLocalParticipant, error)

func (DummyParticipantSource) GetWithNotifyNonblock

func (d DummyParticipantSource) GetWithNotifyNonblock(ctx context.Context, uid gregor1.UID,
	convID chat1.ConversationID, dataSource InboxSourceDataSourceTyp)

type DummyStellarLoader

type DummyStellarLoader struct{}

func (DummyStellarLoader) LoadPayment

func (d DummyStellarLoader) LoadPayment(ctx context.Context, convID chat1.ConversationID, msgID chat1.MessageID, senderUsername string, paymentID stellar1.PaymentID) *chat1.UIPaymentInfo

func (DummyStellarLoader) LoadRequest

func (d DummyStellarLoader) LoadRequest(ctx context.Context, convID chat1.ConversationID, msgID chat1.MessageID, senderUsername string, requestID stellar1.KeybaseRequestID) *chat1.UIRequestInfo

type DummyStellarSender

type DummyStellarSender struct{}

func (DummyStellarSender) DecorateWithPayments

func (d DummyStellarSender) DecorateWithPayments(ctx context.Context, body string,
	payments []chat1.TextPayment) string

func (DummyStellarSender) DescribePayments

func (d DummyStellarSender) DescribePayments(ctx context.Context, uid gregor1.UID,
	convID chat1.ConversationID, payments []ParsedStellarPayment) (res chat1.UIChatPaymentSummary, toSend []ParsedStellarPayment, err error)

func (DummyStellarSender) ParsePayments

func (d DummyStellarSender) ParsePayments(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID,
	body string, replyTo *chat1.MessageID) []ParsedStellarPayment

func (DummyStellarSender) SendPayments

func (d DummyStellarSender) SendPayments(ctx context.Context, convID chat1.ConversationID, payments []ParsedStellarPayment) ([]chat1.TextPayment, error)

type DummyTeamMentionLoader

type DummyTeamMentionLoader struct{}

func (DummyTeamMentionLoader) IsTeamMention

func (d DummyTeamMentionLoader) IsTeamMention(ctx context.Context, uid gregor1.UID,
	maybeMention chat1.MaybeMention, knownTeamMentions []chat1.KnownTeamMention) bool

func (DummyTeamMentionLoader) LoadTeamMention

func (d DummyTeamMentionLoader) LoadTeamMention(ctx context.Context, uid gregor1.UID,
	maybeMention chat1.MaybeMention, knownTeamMentions []chat1.KnownTeamMention,
	forceRemote bool) error

func (DummyTeamMentionLoader) Start

func (d DummyTeamMentionLoader) Start(ctx context.Context, uid gregor1.UID)

func (DummyTeamMentionLoader) Stop

func (d DummyTeamMentionLoader) Stop(ctx context.Context) chan struct{}

type DummyUIInboxLoader

type DummyUIInboxLoader struct{}

func (DummyUIInboxLoader) LoadNonblock

func (d DummyUIInboxLoader) LoadNonblock(ctx context.Context, query *chat1.GetInboxLocalQuery,
	maxUnbox *int, skipUnverified bool) error

func (DummyUIInboxLoader) Start

func (d DummyUIInboxLoader) Start(ctx context.Context, uid gregor1.UID)

func (DummyUIInboxLoader) Stop

func (d DummyUIInboxLoader) Stop(ctx context.Context) chan struct{}

func (DummyUIInboxLoader) UpdateConvs

func (d DummyUIInboxLoader) UpdateConvs(ctx context.Context, convIDs []chat1.ConversationID) error

func (DummyUIInboxLoader) UpdateLayout

func (d DummyUIInboxLoader) UpdateLayout(ctx context.Context, reselectMode chat1.InboxLayoutReselectMode,
	reason string)

func (DummyUIInboxLoader) UpdateLayoutFromNewMessage

func (d DummyUIInboxLoader) UpdateLayoutFromNewMessage(ctx context.Context, conv RemoteConversation)

func (DummyUIInboxLoader) UpdateLayoutFromSmallIncrease

func (d DummyUIInboxLoader) UpdateLayoutFromSmallIncrease(ctx context.Context)

func (DummyUIInboxLoader) UpdateLayoutFromSmallReset

func (d DummyUIInboxLoader) UpdateLayoutFromSmallReset(ctx context.Context)

func (DummyUIInboxLoader) UpdateLayoutFromSubteamRename

func (d DummyUIInboxLoader) UpdateLayoutFromSubteamRename(ctx context.Context, convs []RemoteConversation)

type DummyUIThreadLoader

type DummyUIThreadLoader struct{}

func (DummyUIThreadLoader) Connected

func (d DummyUIThreadLoader) Connected(ctx context.Context)

func (DummyUIThreadLoader) Disconnected

func (d DummyUIThreadLoader) Disconnected(ctx context.Context)

func (DummyUIThreadLoader) IsOffline

func (d DummyUIThreadLoader) IsOffline(ctx context.Context) bool

func (DummyUIThreadLoader) Load

func (d DummyUIThreadLoader) Load(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID,
	reason chat1.GetThreadReason, knownRemotes []string, query *chat1.GetThreadQuery,
	pagination *chat1.Pagination) (chat1.ThreadView, error)

func (DummyUIThreadLoader) LoadNonblock

func (d DummyUIThreadLoader) LoadNonblock(ctx context.Context, chatUI libkb.ChatUI, uid gregor1.UID,
	convID chat1.ConversationID, reason chat1.GetThreadReason, pgmode chat1.GetThreadNonblockPgMode,
	cbmode chat1.GetThreadNonblockCbMode, knownRemote []string,
	query *chat1.GetThreadQuery, uipagination *chat1.UIPagination) error

type DummyUnfurler

type DummyUnfurler struct{}

func (DummyUnfurler) Complete

func (d DummyUnfurler) Complete(ctx context.Context, outboxID chat1.OutboxID)

func (DummyUnfurler) GetSettings

func (d DummyUnfurler) GetSettings(ctx context.Context, uid gregor1.UID) (res chat1.UnfurlSettings, err error)

func (DummyUnfurler) Prefetch

func (d DummyUnfurler) Prefetch(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID, msgText string) int

func (DummyUnfurler) Retry

func (d DummyUnfurler) Retry(ctx context.Context, outboxID chat1.OutboxID)

func (DummyUnfurler) SetMode

func (d DummyUnfurler) SetMode(ctx context.Context, uid gregor1.UID, mode chat1.UnfurlMode) error

func (DummyUnfurler) SetSettings

func (d DummyUnfurler) SetSettings(ctx context.Context, uid gregor1.UID, settings chat1.UnfurlSettings) error

func (DummyUnfurler) Status

func (DummyUnfurler) UnfurlAndSend

func (d DummyUnfurler) UnfurlAndSend(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID,
	msg chat1.MessageUnboxed)

func (DummyUnfurler) WhitelistAdd

func (d DummyUnfurler) WhitelistAdd(ctx context.Context, uid gregor1.UID, domain string) error

func (DummyUnfurler) WhitelistAddExemption

func (d DummyUnfurler) WhitelistAddExemption(ctx context.Context, uid gregor1.UID,
	exemption WhitelistExemption)

func (DummyUnfurler) WhitelistRemove

func (d DummyUnfurler) WhitelistRemove(ctx context.Context, uid gregor1.UID, domain string) error

type EmojiHarvestMode

type EmojiHarvestMode int
const (
	EmojiHarvestModeNormal EmojiHarvestMode = iota
	EmojiHarvestModeFast
)

type EmojiSource

type EmojiSource interface {
	Add(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID, alias, filename string, allowOverwrite bool) (chat1.EmojiRemoteSource, error)
	AddAlias(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID,
		newAlias, existingAlias string) (chat1.EmojiRemoteSource, error)
	Remove(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID, alias string) error
	Get(ctx context.Context, uid gregor1.UID, convID *chat1.ConversationID, opts chat1.EmojiFetchOpts) (chat1.UserEmojis, error)
	Decorate(ctx context.Context, body string, uid gregor1.UID, messageType chat1.MessageType,
		emojis []chat1.HarvestedEmoji) string
	Harvest(ctx context.Context, body string, uid gregor1.UID, convID chat1.ConversationID,
		mode EmojiHarvestMode) ([]chat1.HarvestedEmoji, error)
	IsStockEmoji(alias string) bool
	RemoteToLocalSource(ctx context.Context, uid gregor1.UID, remote chat1.EmojiRemoteSource) (chat1.EmojiLoadSource, chat1.EmojiLoadSource, error)
	ToggleAnimations(ctx context.Context, uid gregor1.UID, enabled bool) error
	IsValidSize(size int64) bool
}

type EphemeralCryptKey

type EphemeralCryptKey interface {
	Material() keybase1.Bytes32
	Generation() keybase1.EkGeneration
}

type EphemeralPurger

type EphemeralPurger interface {
	Resumable

	Queue(ctx context.Context, purgeInfo chat1.EphemeralPurgeInfo) error
}

type EphemeralTracker

type EphemeralTracker interface {
	Resumable
	GetAllPurgeInfo(ctx context.Context, uid gregor1.UID) ([]chat1.EphemeralPurgeInfo, error)
	GetPurgeInfo(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID) (chat1.EphemeralPurgeInfo, error)
	InactivatePurgeInfo(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID) error
	SetPurgeInfo(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, purgeInfo *chat1.EphemeralPurgeInfo) error
	MaybeUpdatePurgeInfo(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, purgeInfo *chat1.EphemeralPurgeInfo) error
	Clear(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID) error
	OnLogout(libkb.MetaContext) error
	OnDbNuke(libkb.MetaContext) error
}

type ExternalAPIKeySource

type ExternalAPIKeySource interface {
	GetKey(ctx context.Context, typ chat1.ExternalAPIKeyTyp) (chat1.ExternalAPIKey, error)
	GetAllKeys(ctx context.Context) ([]chat1.ExternalAPIKey, error)
}

type FetchRetrier

type FetchRetrier interface {
	Offlinable
	Resumable

	Failure(ctx context.Context, uid gregor1.UID, desc RetryDescription)
	Success(ctx context.Context, uid gregor1.UID, desc RetryDescription)
	Force(ctx context.Context)
	Rekey(ctx context.Context, name string, membersType chat1.ConversationMembersType,
		public bool)
}

type FlipSendStatus

type FlipSendStatus int
const (
	FlipSendStatusInProgress FlipSendStatus = iota
	FlipSendStatusSent
	FlipSendStatusError
)

type IdentifyNotifier

type IdentifyNotifier interface {
	Reset()
	ResetOnGUIConnect()
	Send(ctx context.Context, update keybase1.CanonicalTLFNameAndIDWithBreaks)
}

type Inbox

type Inbox struct {
	Version         chat1.InboxVers
	ConvsUnverified []RemoteConversation
	Convs           []chat1.ConversationLocal
}

type InboxSource

type InboxSource interface {
	Offlinable
	Resumable
	Suspendable
	badges.LocalChatState

	Clear(ctx context.Context, uid gregor1.UID, opts *ClearOpts) error
	Read(ctx context.Context, uid gregor1.UID, localizeTyp ConversationLocalizerTyp,
		dataSource InboxSourceDataSourceTyp, maxLocalize *int, query *chat1.GetInboxLocalQuery) (Inbox, chan AsyncInboxResult, error)
	ReadUnverified(ctx context.Context, uid gregor1.UID, dataSource InboxSourceDataSourceTyp,
		query *chat1.GetInboxQuery) (Inbox, error)
	Localize(ctx context.Context, uid gregor1.UID, convs []RemoteConversation,
		localizeTyp ConversationLocalizerTyp) ([]chat1.ConversationLocal, chan AsyncInboxResult, error)
	RemoteSetConversationStatus(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID,
		status chat1.ConversationStatus) error
	RemoteDeleteConversation(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID) error
	Search(ctx context.Context, uid gregor1.UID, query string, limit int,
		emptyMode InboxSourceSearchEmptyMode) ([]RemoteConversation, error)
	MarkAsRead(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID,
		msgID *chat1.MessageID, forceUnread bool) error
	Draft(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID, text *string) error
	NotifyUpdate(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID)
	IncrementLocalConvVersion(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID) (*chat1.ConversationLocal, error)
	MergeLocalMetadata(ctx context.Context, uid gregor1.UID, convs []chat1.ConversationLocal) error

	Sync(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers, convs []chat1.Conversation) (InboxSyncRes, error)
	NewConversation(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers,
		conv chat1.Conversation) error
	IsMember(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID) (bool, error)
	IsTeam(ctx context.Context, uid gregor1.UID, item string) (bool, error)
	NewMessage(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers, convID chat1.ConversationID,
		msg chat1.MessageBoxed, maxMsgs []chat1.MessageSummary) (*chat1.ConversationLocal, error)
	ReadMessage(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers, convID chat1.ConversationID,
		msgID chat1.MessageID) (*chat1.ConversationLocal, error)
	SetStatus(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers, convID chat1.ConversationID,
		status chat1.ConversationStatus) (*chat1.ConversationLocal, error)
	SetAppNotificationSettings(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers,
		convID chat1.ConversationID, settings chat1.ConversationNotificationInfo) (*chat1.ConversationLocal, error)
	TlfFinalize(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers,
		convIDs []chat1.ConversationID, finalizeInfo chat1.ConversationFinalizeInfo) ([]chat1.ConversationLocal, error)
	MembershipUpdate(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers,
		joined []chat1.ConversationMember, removed []chat1.ConversationMember,
		resets []chat1.ConversationMember, previews []chat1.ConversationID,
		teamMemberRoleUpdate *chat1.TeamMemberRoleUpdate) (MembershipUpdateRes, error)
	ConversationsUpdate(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers,
		convUpdates []chat1.ConversationUpdate) error
	TeamTypeChanged(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers, convID chat1.ConversationID,
		teamType chat1.TeamType) (*chat1.ConversationLocal, error)
	UpgradeKBFSToImpteam(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers,
		convID chat1.ConversationID) (*chat1.ConversationLocal, error)
	Expunge(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers, convID chat1.ConversationID,
		expunge chat1.Expunge, maxMsgs []chat1.MessageSummary) (*chat1.ConversationLocal, error)
	SetConvRetention(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers, convID chat1.ConversationID,
		policy chat1.RetentionPolicy) (*chat1.ConversationLocal, error)
	SetTeamRetention(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers, teamID keybase1.TeamID,
		policy chat1.RetentionPolicy) ([]chat1.ConversationLocal, error)
	SetConvSettings(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers, convID chat1.ConversationID,
		convSettings *chat1.ConversationSettings) (*chat1.ConversationLocal, error)
	SubteamRename(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers, convIDs []chat1.ConversationID) ([]chat1.ConversationLocal, error)
	UpdateInboxVersion(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers) error

	GetInboxQueryLocalToRemote(ctx context.Context,
		lquery *chat1.GetInboxLocalQuery) (*chat1.GetInboxQuery, NameInfo, error)
	UpdateLocalMtime(ctx context.Context, uid gregor1.UID, updates []chat1.LocalMtimeUpdate) error
	TeamBotSettingsForConv(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID) (
		map[keybase1.UID]keybase1.TeamBotSettings, error)

	SetRemoteInterface(func() chat1.RemoteInterface)
}

type InboxSourceDataSourceTyp

type InboxSourceDataSourceTyp int
const (
	InboxSourceDataSourceAll InboxSourceDataSourceTyp = iota
	InboxSourceDataSourceRemoteOnly
	InboxSourceDataSourceLocalOnly
)

type InboxSourceSearchEmptyMode

type InboxSourceSearchEmptyMode int
const (
	InboxSourceSearchEmptyModeUnread InboxSourceSearchEmptyMode = iota
	InboxSourceSearchEmptyModeAll
	InboxSourceSearchEmptyModeAllBySendCtime
)

type InboxSyncRes

type InboxSyncRes struct {
	FilteredConvs      []RemoteConversation
	TeamTypeChanged    bool
	MembersTypeChanged []chat1.ConversationID
	Expunges           []InboxSyncResExpunge
	TopicNameChanged   []chat1.ConversationID
}

type InboxSyncResExpunge

type InboxSyncResExpunge struct {
	ConvID  chat1.ConversationID
	Expunge chat1.Expunge
}

type Indexer

type Indexer interface {
	Resumable
	Suspendable
	BackgroundRunnable

	Search(ctx context.Context, query, origQuery string, opts chat1.SearchOpts,
		hitUICh chan chat1.ChatSearchInboxHit, indexUICh chan chat1.ChatSearchIndexStatus) (*chat1.ChatSearchInboxResults, error)
	// Add/update the index with the given messages
	Add(ctx context.Context, convID chat1.ConversationID, msg []chat1.MessageUnboxed) error
	// Remove the given messages from the index
	Remove(ctx context.Context, convID chat1.ConversationID, msg []chat1.MessageUnboxed) error
	// Clear search index data for the given user and conversation.
	Clear(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID) error
	FullyIndexed(ctx context.Context, convID chat1.ConversationID) (bool, error)
	PercentIndexed(ctx context.Context, convID chat1.ConversationID) (int, error)
	SearchableConvs(ctx context.Context, convID *chat1.ConversationID) ([]RemoteConversation, error)
	OnDbNuke(mctx libkb.MetaContext) error
	// For devel/testing
	IndexInbox(ctx context.Context) (map[chat1.ConvIDStr]chat1.ProfileSearchConvStats, error)
}

type InternalError

type InternalError interface {
	// verbose error info for debugging but not user display
	InternalError() string
}

type JourneyCardManager

type JourneyCardManager interface {
	Resumable
	PickCard(context.Context, gregor1.UID, chat1.ConversationID, *chat1.ConversationLocal, *chat1.ThreadView) (*chat1.MessageUnboxedJourneycard, error)
	SentMessage(context.Context, gregor1.UID, keybase1.TeamID, chat1.ConversationID) // Tell JourneyCardManager that the user has sent a message.
	Dismiss(context.Context, gregor1.UID, keybase1.TeamID, chat1.ConversationID, chat1.JourneycardType)
	OnDbNuke(libkb.MetaContext) error
}

type KeyFinder

type KeyFinder interface {
	FindForEncryption(ctx context.Context, tlfName string, teamID chat1.TLFID,
		membersType chat1.ConversationMembersType, public bool, botUID *gregor1.UID) (CryptKey, NameInfo, error)
	FindForDecryption(ctx context.Context, tlfName string, teamID chat1.TLFID,
		membersType chat1.ConversationMembersType, public bool, keyGeneration int,
		kbfsEncrypted bool, botUID *gregor1.UID) (CryptKey, error)
	EphemeralKeyForEncryption(mctx libkb.MetaContext, tlfName string, teamID chat1.TLFID,
		membersType chat1.ConversationMembersType, public bool, botUID *gregor1.UID) (EphemeralCryptKey, error)
	EphemeralKeyForDecryption(mctx libkb.MetaContext, tlfName string, teamID chat1.TLFID,
		membersType chat1.ConversationMembersType, public bool, botUID *gregor1.UID,
		generation keybase1.EkGeneration, contentCtime *gregor1.Time) (EphemeralCryptKey, error)
	ShouldPairwiseMAC(ctx context.Context, tlfName string, teamID chat1.TLFID,
		membersType chat1.ConversationMembersType, public bool) (bool, []keybase1.KID, error)
	Reset()
}

type LiveLocationKey

type LiveLocationKey string

type LiveLocationTracker

type LiveLocationTracker interface {
	Resumable
	GetCurrentPosition(ctx context.Context, convID chat1.ConversationID, msgID chat1.MessageID)
	StartTracking(ctx context.Context, convID chat1.ConversationID, msgID chat1.MessageID, endTime time.Time)
	LocationUpdate(ctx context.Context, coord chat1.Coordinate)
	GetCoordinates(ctx context.Context, key LiveLocationKey) []chat1.Coordinate
	GetEndTime(ctx context.Context, key LiveLocationKey) *time.Time
	ActivelyTracking(ctx context.Context) bool
	StopAllTracking(ctx context.Context)
}

type MembershipUpdateRes

type MembershipUpdateRes struct {
	RoleUpdates        []chat1.ConversationLocal
	UserJoinedConvs    []chat1.ConversationLocal
	UserRemovedConvs   []chat1.ConversationMember
	UserResetConvs     []chat1.ConversationMember
	OthersJoinedConvs  []chat1.ConversationMember
	OthersRemovedConvs []chat1.ConversationMember
	OthersResetConvs   []chat1.ConversationMember
}

func (MembershipUpdateRes) AllOtherUsers

func (m MembershipUpdateRes) AllOtherUsers() (res []gregor1.UID)

type MessageDeliverer

type MessageDeliverer interface {
	Offlinable
	Resumable

	Queue(ctx context.Context, convID chat1.ConversationID, msg chat1.MessagePlaintext,
		outboxID *chat1.OutboxID, sendOpts *chat1.SenderSendOptions,
		prepareOpts *chat1.SenderPrepareOptions, identifyBehavior keybase1.TLFIdentifyBehavior) (chat1.OutboxRecord, error)
	ForceDeliverLoop(ctx context.Context)
	ActiveDeliveries(ctx context.Context) ([]chat1.OutboxRecord, error)
	NextFailure() (chan []chat1.OutboxRecord, func())
}

type MobileAppState

type MobileAppState interface {
	State() keybase1.MobileAppState
	NextUpdate() chan keybase1.MobileAppState
}

type NameInfo

type NameInfo struct {
	ID              chat1.TLFID
	CanonicalName   string
	VerifiedMembers []gregor1.UID // may be empty if we couldn't satisfy the request
}

func NewNameInfo

func NewNameInfo() *NameInfo

type NameInfoSource

type NameInfoSource interface {
	LookupID(ctx context.Context, name string, public bool) (NameInfo, error)
	LookupName(ctx context.Context, tlfID chat1.TLFID, public bool, unverifiedTLFName string) (NameInfo, error)
	AllCryptKeys(ctx context.Context, name string, public bool) (AllCryptKeys, error)
	EncryptionKey(ctx context.Context, tlfName string, tlfID chat1.TLFID,
		membersType chat1.ConversationMembersType, public bool, botUID *gregor1.UID) (CryptKey, NameInfo, error)
	DecryptionKey(ctx context.Context, tlfName string, tlfID chat1.TLFID,
		membersType chat1.ConversationMembersType, public bool,
		keyGeneration int, kbfsEncrypted bool, botUID *gregor1.UID) (CryptKey, error)
	EphemeralEncryptionKey(mctx libkb.MetaContext, tlfName string, tlfID chat1.TLFID,
		membersType chat1.ConversationMembersType, public bool, botUID *gregor1.UID) (EphemeralCryptKey, error)
	EphemeralDecryptionKey(mctx libkb.MetaContext, tlfName string, tlfID chat1.TLFID,
		membersType chat1.ConversationMembersType, public bool, botUID *gregor1.UID,
		generation keybase1.EkGeneration, contentCtime *gregor1.Time) (EphemeralCryptKey, error)
	ShouldPairwiseMAC(ctx context.Context, tlfName string, tlfID chat1.TLFID,
		membersType chat1.ConversationMembersType, public bool) (bool, []keybase1.KID, error)
	TeamBotSettings(ctx context.Context, tlfName string, tlfID chat1.TLFID,
		membersType chat1.ConversationMembersType, public bool) (map[keybase1.UserVersion]keybase1.TeamBotSettings, error)
}

type NativeVideoHelper

type NativeVideoHelper interface {
	ThumbnailAndDuration(ctx context.Context, filename string) ([]byte, int, error)
}

type Offlinable

type Offlinable interface {
	IsOffline(ctx context.Context) bool
	Connected(ctx context.Context)
	Disconnected(ctx context.Context)
}

type OobmHandler

type OobmHandler interface {
	HandleOobm(context.Context, gregor.OutOfBandMessage) (bool, error)
}

type ParsedStellarPayment

type ParsedStellarPayment struct {
	Username libkb.NormalizedUsername
	Full     string
	Amount   string
	Currency string
}

func (ParsedStellarPayment) ToMini

type ParticipantResult

type ParticipantResult struct {
	Uids []gregor1.UID
	Err  error
}

type ParticipantSource

type ParticipantSource interface {
	Get(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID,
		dataSource InboxSourceDataSourceTyp) ([]gregor1.UID, error)
	GetNonblock(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID,
		dataSource InboxSourceDataSourceTyp) chan ParticipantResult
	GetWithNotifyNonblock(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID,
		dataSource InboxSourceDataSourceTyp)
	GetParticipantsFromUids(ctx context.Context, uids []gregor1.UID) ([]chat1.ConversationLocalParticipant, error)
}

type PauseArchiveFn

type PauseArchiveFn = func()

type ProgressReporter

type ProgressReporter func(bytesCompleted, bytesTotal int64)

type RateLimitedResult

type RateLimitedResult interface {
	GetRateLimit() []chat1.RateLimit
	SetRateLimits(rl []chat1.RateLimit)
}

type RegexpSearcher

type RegexpSearcher interface {
	Search(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID,
		re *regexp.Regexp, uiCh chan chat1.ChatSearchHit, opts chat1.SearchOpts) ([]chat1.ChatSearchHit, []chat1.MessageUnboxed, error)
}

type RemoteConversation

type RemoteConversation struct {
	Conv           chat1.Conversation          `codec:"c"`
	ConvIDStr      chat1.ConvIDStr             `codec:"i"`
	LocalMetadata  *RemoteConversationMetadata `codec:"l"`
	LocalReadMsgID chat1.MessageID             `codec:"r"`
	LocalDraft     *string                     `codec:"d"`
	LocalMtime     gregor1.Time                `codec:"t"`
}

func NewEmptyRemoteConversation

func NewEmptyRemoteConversation(convID chat1.ConversationID) RemoteConversation

func (RemoteConversation) CannotWrite

func (rc RemoteConversation) CannotWrite() bool

func (RemoteConversation) DeepCopy

func (rc RemoteConversation) DeepCopy() (res RemoteConversation)

func (RemoteConversation) GetConvID

func (rc RemoteConversation) GetConvID() chat1.ConversationID

func (RemoteConversation) GetExpunge

func (rc RemoteConversation) GetExpunge() *chat1.Expunge

func (RemoteConversation) GetFinalizeInfo

func (rc RemoteConversation) GetFinalizeInfo() *chat1.ConversationFinalizeInfo

func (RemoteConversation) GetMaxDeletedUpTo

func (rc RemoteConversation) GetMaxDeletedUpTo() chat1.MessageID

func (RemoteConversation) GetMaxMessage

func (rc RemoteConversation) GetMaxMessage(typ chat1.MessageType) (chat1.MessageSummary, error)

func (RemoteConversation) GetMembersType

func (rc RemoteConversation) GetMembersType() chat1.ConversationMembersType

func (RemoteConversation) GetMtime

func (rc RemoteConversation) GetMtime() gregor1.Time

func (RemoteConversation) GetReadMsgID

func (rc RemoteConversation) GetReadMsgID() chat1.MessageID

func (RemoteConversation) GetTeamType

func (rc RemoteConversation) GetTeamType() chat1.TeamType

func (RemoteConversation) GetTopicName

func (rc RemoteConversation) GetTopicName() string

func (RemoteConversation) GetTopicType

func (rc RemoteConversation) GetTopicType() chat1.TopicType

func (RemoteConversation) GetVersion

func (rc RemoteConversation) GetVersion() chat1.ConversationVers

func (RemoteConversation) IsLocallyRead

func (rc RemoteConversation) IsLocallyRead() bool

func (RemoteConversation) IsPublic

func (rc RemoteConversation) IsPublic() bool

func (RemoteConversation) MaxVisibleMsgID

func (rc RemoteConversation) MaxVisibleMsgID() chat1.MessageID

type RemoteConversationMetadata

type RemoteConversationMetadata struct {
	Name               string                  `codec:"n"`
	TopicName          string                  `codec:"t"`
	Snippet            string                  `codec:"s"`
	SnippetDecoration  chat1.SnippetDecoration `codec:"d"`
	Headline           string                  `codec:"h"`
	HeadlineEmojis     []chat1.HarvestedEmoji  `codec:"e"`
	WriterNames        []string                `codec:"w"`
	FullNamesForSearch []*string               `codec:"f"`
	ResetParticipants  []string                `codec:"r"`
}

func (RemoteConversationMetadata) DeepCopy

type ReplyFiller

type ReplyFiller interface {
	Fill(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID,
		msgs []chat1.MessageUnboxed) ([]chat1.MessageUnboxed, error)
}

type Resumable

type Resumable interface {
	Start(ctx context.Context, uid gregor1.UID)
	Stop(ctx context.Context) chan struct{}
}

type RetryDescription

type RetryDescription interface {
	Fix(ctx context.Context, uid gregor1.UID) error
	SendStale(ctx context.Context, uid gregor1.UID)
	String() string
	RekeyFixable(ctx context.Context, tlfID chat1.TLFID) bool
}

type SenderPrepareOptions

type SenderPrepareOptions struct {
	SkipTopicNameState bool
}

type SenderPrepareResult

type SenderPrepareResult struct {
	Boxed               chat1.MessageBoxed
	EncryptionInfo      BoxerEncryptionInfo
	PendingAssetDeletes []chat1.Asset
	DeleteFlipConv      *chat1.ConversationID
	AtMentions          []gregor1.UID
	ChannelMention      chat1.ChannelMention
	TopicNameState      *chat1.TopicNameState
	TopicNameStateConvs []chat1.ConversationID
}

type ServerCacheVersions

type ServerCacheVersions interface {
	Set(ctx context.Context, vers chat1.ServerCacheVers) error
	MatchBodies(ctx context.Context, vers int) (int, error)
	MatchInbox(ctx context.Context, vers int) (int, error)
	Fetch(ctx context.Context) (chat1.ServerCacheVers, error)
}

type ServerConnection

type ServerConnection interface {
	Reconnect(context.Context) (bool, error)
	GetClient() chat1.RemoteInterface
}

type StellarLoader

type StellarLoader interface {
	LoadPayment(ctx context.Context, convID chat1.ConversationID, msgID chat1.MessageID, senderUsername string, paymentID stellar1.PaymentID) *chat1.UIPaymentInfo
	LoadRequest(ctx context.Context, convID chat1.ConversationID, msgID chat1.MessageID, senderUsername string, requestID stellar1.KeybaseRequestID) *chat1.UIRequestInfo
}

type StellarSender

type StellarSender interface {
	ParsePayments(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID,
		body string, replyTo *chat1.MessageID) []ParsedStellarPayment
	DescribePayments(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID,
		payments []ParsedStellarPayment) (chat1.UIChatPaymentSummary, []ParsedStellarPayment, error)
	DecorateWithPayments(ctx context.Context, body string, payments []chat1.TextPayment) string
	SendPayments(ctx context.Context, convID chat1.ConversationID, payments []ParsedStellarPayment) ([]chat1.TextPayment, error)
}

type SupersedesTransform

type SupersedesTransform interface {
	Run(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID,
		originalMsgs []chat1.MessageUnboxed, maxDeletedUpTo *chat1.MessageID) ([]chat1.MessageUnboxed, error)
}

type Suspendable

type Suspendable interface {
	Suspend(ctx context.Context) bool
	Resume(ctx context.Context) bool
}

type Syncer

type Syncer interface {
	IsConnected(ctx context.Context) bool
	Connected(ctx context.Context, cli chat1.RemoteInterface, uid gregor1.UID,
		syncRes *chat1.SyncChatRes) error
	Disconnected(ctx context.Context)
	Sync(ctx context.Context, cli chat1.RemoteInterface, uid gregor1.UID,
		syncRes *chat1.SyncChatRes) error
	RegisterOfflinable(offlinable Offlinable)
	SendChatStaleNotifications(ctx context.Context, uid gregor1.UID,
		updates []chat1.ConversationStaleUpdate, immediate bool)
	SelectConversation(ctx context.Context, convID chat1.ConversationID)
	GetSelectedConversation() chat1.ConversationID
	IsSelectedConversation(chat1.ConversationID) bool
	Shutdown()
}

type TeamChannelSource

type TeamChannelSource interface {
	GetLastActiveForTLF(context.Context, gregor1.UID, chat1.TLFID, chat1.TopicType) (gregor1.Time, error)
	GetLastActiveForTeams(context.Context, gregor1.UID, chat1.TopicType) (chat1.LastActiveTimeAll, error)
	GetChannelsFull(context.Context, gregor1.UID, chat1.TLFID, chat1.TopicType) ([]chat1.ConversationLocal, error)
	GetChannelsTopicName(ctx context.Context, uid gregor1.UID,
		teamID chat1.TLFID, topicType chat1.TopicType) ([]chat1.ChannelNameMention, error)
	GetChannelTopicName(ctx context.Context, uid gregor1.UID,
		tlfID chat1.TLFID, topicType chat1.TopicType, convID chat1.ConversationID) (string, error)
	GetRecentJoins(ctx context.Context, convID chat1.ConversationID, remoteClient chat1.RemoteInterface) (int, error)
	GetLastActiveAt(ctx context.Context, teamID keybase1.TeamID, uid gregor1.UID, remoteClient chat1.RemoteInterface) (gregor1.Time, error)
	OnLogout(libkb.MetaContext) error
	OnDbNuke(libkb.MetaContext) error
}

type TeamMentionLoader

type TeamMentionLoader interface {
	Resumable
	LoadTeamMention(ctx context.Context, uid gregor1.UID,
		maybeMention chat1.MaybeMention, knownTeamMentions []chat1.KnownTeamMention,
		forceRemote bool) error
	IsTeamMention(ctx context.Context, uid gregor1.UID,
		maybeMention chat1.MaybeMention, knownTeamMentions []chat1.KnownTeamMention) bool
}

type UIInboxLoader

type UIInboxLoader interface {
	Resumable
	UpdateLayout(ctx context.Context, reselectMode chat1.InboxLayoutReselectMode, reason string)
	UpdateLayoutFromNewMessage(ctx context.Context, conv RemoteConversation)
	UpdateLayoutFromSubteamRename(ctx context.Context, convs []RemoteConversation)
	UpdateLayoutFromSmallIncrease(ctx context.Context)
	UpdateLayoutFromSmallReset(ctx context.Context)
	UpdateConvs(ctx context.Context, convIDs []chat1.ConversationID) error
	LoadNonblock(ctx context.Context, query *chat1.GetInboxLocalQuery, maxUnbox *int, skipUnverified bool) error
}

type UIThreadLoader

type UIThreadLoader interface {
	Offlinable
	LoadNonblock(ctx context.Context, chatUI libkb.ChatUI, uid gregor1.UID,
		convID chat1.ConversationID, reason chat1.GetThreadReason, pgmode chat1.GetThreadNonblockPgMode,
		cbmode chat1.GetThreadNonblockCbMode, knownRemotes []string, query *chat1.GetThreadQuery, uipagination *chat1.UIPagination) error
	Load(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID,
		reason chat1.GetThreadReason, knownRemotes []string, query *chat1.GetThreadQuery,
		pagination *chat1.Pagination) (chat1.ThreadView, error)
}

type UPAKFinder

type UPAKFinder interface {
	LookupUsernameAndDevice(ctx context.Context, uid keybase1.UID, deviceID keybase1.DeviceID) (username libkb.NormalizedUsername, deviceName string, deviceType keybase1.DeviceTypeV2, err error)
	CheckKIDForUID(ctx context.Context, uid keybase1.UID, kid keybase1.KID) (found bool, revokedAt *keybase1.KeybaseTime, deleted bool, err error)
}

type UnboxConversationInfo

type UnboxConversationInfo interface {
	GetConvID() chat1.ConversationID
	GetMembersType() chat1.ConversationMembersType
	GetFinalizeInfo() *chat1.ConversationFinalizeInfo
	GetExpunge() *chat1.Expunge
	GetMaxDeletedUpTo() chat1.MessageID
	IsPublic() bool
	GetMaxMessage(chat1.MessageType) (chat1.MessageSummary, error)
}

type UnboxMode

type UnboxMode int
const (
	UnboxModeFull UnboxMode = iota
	UnboxModeQuick
)

func (UnboxMode) ShouldCache

func (m UnboxMode) ShouldCache() bool

type UnboxingError

type UnboxingError interface {
	InternalError
	Error() string
	Inner() error
	IsPermanent() bool
	ExportType() chat1.MessageUnboxedErrorType
	VersionKind() chat1.VersionKind
	VersionNumber() int
	IsCritical() bool
	ToStatus() keybase1.Status
}

type Unfurler

type Unfurler interface {
	UnfurlAndSend(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID,
		msg chat1.MessageUnboxed)
	Prefetch(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID, msgText string) int
	Status(ctx context.Context, outboxID chat1.OutboxID) (UnfurlerTaskStatus, *chat1.UnfurlResult, error)
	Retry(ctx context.Context, outboxID chat1.OutboxID)
	Complete(ctx context.Context, outboxID chat1.OutboxID)

	GetSettings(ctx context.Context, uid gregor1.UID) (chat1.UnfurlSettings, error)
	SetSettings(ctx context.Context, uid gregor1.UID, settings chat1.UnfurlSettings) error
	WhitelistAdd(ctx context.Context, uid gregor1.UID, domain string) error
	WhitelistRemove(ctx context.Context, uid gregor1.UID, domain string) error
	WhitelistAddExemption(ctx context.Context, uid gregor1.UID, exemption WhitelistExemption)
	SetMode(ctx context.Context, uid gregor1.UID, mode chat1.UnfurlMode) error
}

type UnfurlerTaskStatus

type UnfurlerTaskStatus int
const (
	UnfurlerTaskStatusUnfurling UnfurlerTaskStatus = iota
	UnfurlerTaskStatusSuccess
	UnfurlerTaskStatusFailed
	UnfurlerTaskStatusPermFailed
)

type UserConversationBackedStorage

type UserConversationBackedStorage interface {
	Put(ctx context.Context, uid gregor1.UID, name string, data interface{}) error
	Get(ctx context.Context, uid gregor1.UID, name string, res interface{}) (bool, error)
}

type WhitelistExemption

type WhitelistExemption interface {
	Use() bool
	Matches(convID chat1.ConversationID, msgID chat1.MessageID, domain string) bool
	Domain() string
}

Jump to

Keyboard shortcuts

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