Store presence data on request

This commit is contained in:
Till Faelligen 2021-08-10 10:40:02 +02:00
parent d550acbd9d
commit 598308b739

View file

@ -19,6 +19,8 @@ import (
"encoding/json" "encoding/json"
"time" "time"
types2 "github.com/matrix-org/dendrite/syncapi/types"
userapi "github.com/matrix-org/dendrite/userapi/api"
"github.com/matrix-org/dendrite/userapi/types" "github.com/matrix-org/dendrite/userapi/types"
"github.com/matrix-org/gomatrixserverlib" "github.com/matrix-org/gomatrixserverlib"
) )
@ -92,16 +94,29 @@ func SendReceipt(
func SetPresence( func SetPresence(
ctx context.Context, ctx context.Context,
eduAPI EDUServerInputAPI, eduAPI EDUServerInputAPI,
userAPI userapi.UserInternalAPI,
userID, statusMsg string, userID, statusMsg string,
presence types.PresenceStatus, presence types.PresenceStatus,
timestamp gomatrixserverlib.Timestamp, lastActiveTS gomatrixserverlib.Timestamp,
) error { ) error {
request := InputPresenceRequest{ request := InputPresenceRequest{
UserID: userID, UserID: userID,
Presence: presence, Presence: presence,
StatusMsg: statusMsg, StatusMsg: statusMsg,
LastActiveTS: timestamp, LastActiveTS: lastActiveTS,
} }
response := InputPresenceResponse{} response := InputPresenceResponse{}
// store the data in userapi
pReq := userapi.InputPresenceRequest{
UserID: userID,
Presence: presence,
StatusMsg: statusMsg,
LastActiveTS: int64(lastActiveTS),
}
pRes := userapi.InputPresenceResponse{}
if err := userAPI.InputPresenceData(ctx, &pReq, &pRes); err != nil {
return err
}
request.StreamPos = types2.StreamPosition(pRes.StreamPos)
return eduAPI.InputPresence(ctx, &request, &response) return eduAPI.InputPresence(ctx, &request, &response)
} }