diff --git a/internal/satori/satori.go b/internal/satori/satori.go index 46dcfcc4f..dc57c994b 100644 --- a/internal/satori/satori.go +++ b/internal/satori/satori.go @@ -121,7 +121,7 @@ func (stc *sessionTokenClaims) Valid() error { } func (s *SatoriClient) generateToken(ctx context.Context, id string) (string, error) { - tid := ctx.Value(CtxTokenIDKey{}).(string) + tid, _ := ctx.Value(CtxTokenIDKey{}).(string) timestamp := time.Now().UTC() claims := sessionTokenClaims{ SessionID: tid, @@ -579,17 +579,66 @@ func (s *SatoriClient) MessagesList(ctx context.Context, id string, limit int, f if err != nil { return nil, err } - var messages runtime.SatoriMessageList - if err = json.Unmarshal(resBody, &messages); err != nil { + var response satoriMessageList + if err = json.Unmarshal(resBody, &response); err != nil { return nil, err } + messages := runtime.SatoriMessageList{ + SatoriMessages: make([]*runtime.SatoriMessage, 0, len(response.SatoriMessages)), + NextCursor: response.NextCursor, + PrevCursor: response.PrevCursor, + CacheableCursor: response.CacheableCursor, + } + + for _, msg := range response.SatoriMessages { + sendTime, _ := strconv.ParseInt(msg.SendTime, 10, 64) + createTime, _ := strconv.ParseInt(msg.CreateTime, 10, 64) + updateTime, _ := strconv.ParseInt(msg.UpdateTime, 10, 64) + readTime, _ := strconv.ParseInt(msg.ReadTime, 10, 64) + consumeTime, _ := strconv.ParseInt(msg.ConsumeTime, 10, 64) + messages.SatoriMessages = append(messages.SatoriMessages, &runtime.SatoriMessage{ + ScheduleId: msg.ScheduleId, + SendTime: sendTime, + Metadata: msg.Metadata, + CreateTime: createTime, + UpdateTime: updateTime, + ReadTime: readTime, + ConsumeTime: consumeTime, + Text: msg.Text, + Id: msg.Id, + Title: msg.Title, + ImageUrl: msg.ImageUrl, + }) + } + return &messages, nil default: return nil, fmt.Errorf("%d status code", res.StatusCode) } } +type satoriMessageList struct { + SatoriMessages []*satoriMessage `json:"messages,omitempty"` + NextCursor string `json:"next_cursor,omitempty"` + PrevCursor string `json:"prev_cursor,omitempty"` + CacheableCursor string `json:"cacheable_cursor,omitempty"` +} + +type satoriMessage struct { + ScheduleId string `json:"schedule_id,omitempty"` + SendTime string `json:"send_time,omitempty"` + Metadata map[string]any `json:"metadata,omitempty"` + CreateTime string `json:"create_time,omitempty"` + UpdateTime string `json:"update_time,omitempty"` + ReadTime string `json:"read_time,omitempty"` + ConsumeTime string `json:"consume_time,omitempty"` + Text string `json:"text,omitempty"` + Id string `json:"id,omitempty"` + Title string `json:"title,omitempty"` + ImageUrl string `json:"image_url,omitempty"` +} + // @group satori // @summary Update message. // @param ctx(type=context.Context) The context object represents information about the server and requester. diff --git a/server/runtime_lua_nakama.go b/server/runtime_lua_nakama.go index d85127ccd..d5add9391 100644 --- a/server/runtime_lua_nakama.go +++ b/server/runtime_lua_nakama.go @@ -10412,9 +10412,9 @@ func (n *RuntimeLuaNakamaModule) getSatori(l *lua.LState) int { "experiments_list": n.satoriExperimentsList, "flags_list": n.satoriFlagsList, "live_events_list": n.satoriLiveEventsList, - "messagesList": n.satoriMessagesList, - "messageUpdate": n.satoriMessageUpdate, - "messageDelete": n.satoriMessageDelete, + "messages_list": n.satoriMessagesList, + "message_update": n.satoriMessageUpdate, + "message_delete": n.satoriMessageDelete, } satoriMod := l.SetFuncs(l.CreateTable(0, len(satoriFunctions)), satoriFunctions) @@ -10826,7 +10826,7 @@ func (n *RuntimeLuaNakamaModule) satoriMessagesList(l *lua.LState) int { limit := l.OptInt(2, 100) - forward := l.OptBool(3, true) + forward := l.OptBool(3, false) cursor := l.OptString(4, "")