1// Code generated by cmd/lexgen (see Makefile's lexgen); DO NOT EDIT.
2
3package chat
4
5// schema: chat.bsky.convo.getMessages
6
7import (
8 "context"
9 "encoding/json"
10 "fmt"
11
12 "github.com/bluesky-social/indigo/lex/util"
13 "github.com/bluesky-social/indigo/xrpc"
14)
15
16// ConvoGetMessages_Output is the output of a chat.bsky.convo.getMessages call.
17type ConvoGetMessages_Output struct {
18 Cursor *string `json:"cursor,omitempty" cborgen:"cursor,omitempty"`
19 Messages []*ConvoGetMessages_Output_Messages_Elem `json:"messages" cborgen:"messages"`
20}
21
22type ConvoGetMessages_Output_Messages_Elem struct {
23 ConvoDefs_MessageView *ConvoDefs_MessageView
24 ConvoDefs_DeletedMessageView *ConvoDefs_DeletedMessageView
25}
26
27func (t *ConvoGetMessages_Output_Messages_Elem) MarshalJSON() ([]byte, error) {
28 if t.ConvoDefs_MessageView != nil {
29 t.ConvoDefs_MessageView.LexiconTypeID = "chat.bsky.convo.defs#messageView"
30 return json.Marshal(t.ConvoDefs_MessageView)
31 }
32 if t.ConvoDefs_DeletedMessageView != nil {
33 t.ConvoDefs_DeletedMessageView.LexiconTypeID = "chat.bsky.convo.defs#deletedMessageView"
34 return json.Marshal(t.ConvoDefs_DeletedMessageView)
35 }
36 return nil, fmt.Errorf("cannot marshal empty enum")
37}
38func (t *ConvoGetMessages_Output_Messages_Elem) UnmarshalJSON(b []byte) error {
39 typ, err := util.TypeExtract(b)
40 if err != nil {
41 return err
42 }
43
44 switch typ {
45 case "chat.bsky.convo.defs#messageView":
46 t.ConvoDefs_MessageView = new(ConvoDefs_MessageView)
47 return json.Unmarshal(b, t.ConvoDefs_MessageView)
48 case "chat.bsky.convo.defs#deletedMessageView":
49 t.ConvoDefs_DeletedMessageView = new(ConvoDefs_DeletedMessageView)
50 return json.Unmarshal(b, t.ConvoDefs_DeletedMessageView)
51
52 default:
53 return nil
54 }
55}
56
57// ConvoGetMessages calls the XRPC method "chat.bsky.convo.getMessages".
58func ConvoGetMessages(ctx context.Context, c *xrpc.Client, convoId string, cursor string, limit int64) (*ConvoGetMessages_Output, error) {
59 var out ConvoGetMessages_Output
60
61 params := map[string]interface{}{
62 "convoId": convoId,
63 "cursor": cursor,
64 "limit": limit,
65 }
66 if err := c.Do(ctx, xrpc.Query, "", "chat.bsky.convo.getMessages", params, nil, &out); err != nil {
67 return nil, err
68 }
69
70 return &out, nil
71}