diff --git a/chat.go b/chat.go index 79a9699..c4f40c9 100644 --- a/chat.go +++ b/chat.go @@ -754,36 +754,36 @@ func (k *Keybase) ListMembersOfConversation(convID chat1.ConvIDStr) (chat1.ChatM } // ListConvsOnName returns a list of all conversations for a chat1.ChatChannel -func (k *Keybase) ListConvsOnName(channel chat1.ChatChannel) ([]chat1.ConvSummary, error) { +func (k *Keybase) ListConvsOnName(channel chat1.ChatChannel) (*[]chat1.ConvSummary, error) { + type result struct { + Conversations []chat1.ConvSummary `json:"conversations"` + } + type res struct { - Result []chat1.ConvSummary `json:"result"` - Error *Error `json:"error,omitempty"` + Result result `json:"result"` + Error *Error `json:"error,omitempty"` } var r res - opts := SendMessageOptions{ - Channel: channel, - } - - arg := newSendMessageArg(opts) - arg.Method = "listconvsonname" + arg := newListConvsOnNameArg(channel) jsonBytes, _ := json.Marshal(arg) + fmt.Printf("%#v\n", arg) cmdOut, err := k.Exec("chat", "api", "-m", string(jsonBytes)) if err != nil { - return r.Result, err + return nil, err } err = json.Unmarshal(cmdOut, &r) if err != nil { - return r.Result, err + return nil, err } if r.Error != nil { - return r.Result, fmt.Errorf("%v", r.Error.Message) + return nil, fmt.Errorf("%v", r.Error.Message) } - return r.Result, nil + return &r.Result.Conversations, nil } diff --git a/types.go b/types.go index 12a82ad..bf01418 100644 --- a/types.go +++ b/types.go @@ -238,6 +238,24 @@ func newListMembersArg(options ListMembersOptions) listMembersArg { } } +type listConvsOnNameParams struct { + Options chat1.ChatChannel +} + +type listConvsOnNameArg struct { + Method string + Params listConvsOnNameParams +} + +func newListConvsOnNameArg(channel chat1.ChatChannel) listConvsOnNameArg { + return listConvsOnNameArg{ + Method: "listconvsonname", + Params: listConvsOnNameParams{ + Options: channel, + }, + } +} + // KVOptions holds a set of options to be passed to the KV methods type KVOptions struct { Team *string `json:"team"`