github.com/keybase/client/go@v0.0.0-20240309051027-028f7c731f8b/chat/commands/collapse.go (about)

     1  package commands
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/keybase/client/go/chat/globals"
     7  	"github.com/keybase/client/go/chat/utils"
     8  	"github.com/keybase/client/go/protocol/chat1"
     9  	"github.com/keybase/client/go/protocol/gregor1"
    10  )
    11  
    12  type Collapse struct {
    13  	*baseCommand
    14  }
    15  
    16  func NewCollapse(g *globals.Context) *Collapse {
    17  	return &Collapse{
    18  		baseCommand: newBaseCommand(g, "collapse", "", "Collapse all inline previews", false),
    19  	}
    20  }
    21  
    22  func (h *Collapse) Execute(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID,
    23  	tlfName, text string, replyTo *chat1.MessageID) (err error) {
    24  	defer h.Trace(ctx, &err, "Collapse")()
    25  	if !h.Match(ctx, text) {
    26  		return ErrInvalidCommand
    27  	}
    28  	conv, err := getConvByID(ctx, h.G(), uid, convID)
    29  	if err != nil {
    30  		return err
    31  	}
    32  	maxMsgID := conv.Conv.ReaderInfo.MaxMsgid
    33  	if err := utils.NewCollapses(h.G()).ToggleRange(ctx, uid, convID, maxMsgID, true); err != nil {
    34  		return err
    35  	}
    36  	h.G().ActivityNotifier.ThreadsStale(ctx, uid, []chat1.ConversationStaleUpdate{
    37  		{
    38  			ConvID:     convID,
    39  			UpdateType: chat1.StaleUpdateType_NEWACTIVITY,
    40  		},
    41  	})
    42  	return nil
    43  }