github.com/keybase/client/go@v0.0.0-20240309051027-028f7c731f8b/chat/storage/pinignore.go (about) 1 package storage 2 3 import ( 4 "fmt" 5 6 "github.com/keybase/client/go/chat/globals" 7 "github.com/keybase/client/go/chat/utils" 8 "github.com/keybase/client/go/libkb" 9 "github.com/keybase/client/go/protocol/chat1" 10 "github.com/keybase/client/go/protocol/gregor1" 11 "golang.org/x/net/context" 12 ) 13 14 type PinIgnore struct { 15 globals.Contextified 16 utils.DebugLabeler 17 18 uid gregor1.UID 19 } 20 21 func NewPinIgnore(g *globals.Context, uid gregor1.UID) *PinIgnore { 22 return &PinIgnore{ 23 Contextified: globals.NewContextified(g), 24 DebugLabeler: utils.NewDebugLabeler(g.ExternalG(), "PinIgnore", false), 25 uid: uid, 26 } 27 } 28 29 func (p *PinIgnore) dbKey(convID chat1.ConversationID) libkb.DbKey { 30 return libkb.DbKey{ 31 Typ: libkb.DBChatPinIgnore, 32 Key: fmt.Sprintf("%s:%s", p.uid, convID), 33 } 34 } 35 36 func (p *PinIgnore) IsIgnored(ctx context.Context, convID chat1.ConversationID, msgID chat1.MessageID) bool { 37 var ignoredMsgID chat1.MessageID 38 found, err := p.G().GetKVStore().GetInto(&ignoredMsgID, p.dbKey(convID)) 39 if err != nil { 40 p.Debug(ctx, "IsIgnored: failed to read from storage: %s", err) 41 return false 42 } 43 if !found { 44 return false 45 } 46 return msgID == ignoredMsgID 47 } 48 49 func (p *PinIgnore) Ignore(ctx context.Context, convID chat1.ConversationID, msgID chat1.MessageID) error { 50 return p.G().GetKVStore().PutObj(p.dbKey(convID), nil, msgID) 51 }