github.com/keybase/client/go@v0.0.0-20241007131713-f10651d043c8/chat/ctx_factory.go (about)

     1  package chat
     2  
     3  import (
     4  	"github.com/keybase/client/go/chat/globals"
     5  	"github.com/keybase/client/go/chat/types"
     6  	"github.com/keybase/client/go/protocol/keybase1"
     7  )
     8  
     9  type CtxFactory struct {
    10  	globals.Contextified
    11  }
    12  
    13  var _ types.ContextFactory = (*CtxFactory)(nil)
    14  
    15  func NewCtxFactory(g *globals.Context) types.ContextFactory {
    16  	return &CtxFactory{
    17  		Contextified: globals.NewContextified(g),
    18  	}
    19  }
    20  
    21  func (c *CtxFactory) NewKeyFinder() types.KeyFinder {
    22  	return NewKeyFinder(c.G())
    23  }
    24  
    25  func (c *CtxFactory) NewUPAKFinder() types.UPAKFinder {
    26  	return NewCachingUPAKFinder(c.G())
    27  }
    28  
    29  // For testing
    30  type mockCtxFactory struct {
    31  	globals.Contextified
    32  	cryptKeys []keybase1.CryptKey
    33  }
    34  
    35  var _ types.ContextFactory = (*mockCtxFactory)(nil)
    36  
    37  func newMockCtxFactory(g *globals.Context, cryptKeys []keybase1.CryptKey) types.ContextFactory {
    38  	return &mockCtxFactory{
    39  		Contextified: globals.NewContextified(g),
    40  		cryptKeys:    cryptKeys,
    41  	}
    42  }
    43  
    44  func (c *mockCtxFactory) NewKeyFinder() types.KeyFinder {
    45  	return NewKeyFinderMock(c.cryptKeys)
    46  }
    47  
    48  func (c *mockCtxFactory) NewUPAKFinder() types.UPAKFinder {
    49  	return NewCachingUPAKFinder(c.G())
    50  }