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)
14
15// ConvoGetMessages_Output is the output of a chat.bsky.convo.getMessages call.
16type ConvoGetMessages_Output struct {
17 Cursor *string `json:"cursor,omitempty" cborgen:"cursor,omitempty"`
18 Messages []*ConvoGetMessages_Output_Messages_Elem `json:"messages" cborgen:"messages"`
19}
20
21type ConvoGetMessages_Output_Messages_Elem struct {
22 ConvoDefs_MessageView *ConvoDefs_MessageView
23 ConvoDefs_DeletedMessageView *ConvoDefs_DeletedMessageView
24}
25
26func (t *ConvoGetMessages_Output_Messages_Elem) MarshalJSON() ([]byte, error) {
27 if t.ConvoDefs_MessageView != nil {
28 t.ConvoDefs_MessageView.LexiconTypeID = "chat.bsky.convo.defs#messageView"
29 return json.Marshal(t.ConvoDefs_MessageView)
30 }
31 if t.ConvoDefs_DeletedMessageView != nil {
32 t.ConvoDefs_DeletedMessageView.LexiconTypeID = "chat.bsky.convo.defs#deletedMessageView"
33 return json.Marshal(t.ConvoDefs_DeletedMessageView)
34 }
35 return nil, fmt.Errorf("cannot marshal empty enum")
36}
37func (t *ConvoGetMessages_Output_Messages_Elem) UnmarshalJSON(b []byte) error {
38 typ, err := util.TypeExtract(b)
39 if err != nil {
40 return err
41 }
42
43 switch typ {
44 case "chat.bsky.convo.defs#messageView":
45 t.ConvoDefs_MessageView = new(ConvoDefs_MessageView)
46 return json.Unmarshal(b, t.ConvoDefs_MessageView)
47 case "chat.bsky.convo.defs#deletedMessageView":
48 t.ConvoDefs_DeletedMessageView = new(ConvoDefs_DeletedMessageView)
49 return json.Unmarshal(b, t.ConvoDefs_DeletedMessageView)
50
51 default:
52 return nil
53 }
54}
55
56// ConvoGetMessages calls the XRPC method "chat.bsky.convo.getMessages".
57func ConvoGetMessages(ctx context.Context, c util.LexClient, convoId string, cursor string, limit int64) (*ConvoGetMessages_Output, error) {
58 var out ConvoGetMessages_Output
59
60 params := map[string]interface{}{}
61 params["convoId"] = convoId
62 if cursor != "" {
63 params["cursor"] = cursor
64 }
65 if limit != 0 {
66 params["limit"] = limit
67 }
68 if err := c.LexDo(ctx, util.Query, "", "chat.bsky.convo.getMessages", params, nil, &out); err != nil {
69 return nil, err
70 }
71
72 return &out, nil
73}