MCPcopy Create free account
hub / github.com/daodst/chat / SendLeaveAsRoomOwner

Function SendLeaveAsRoomOwner

clientapi/routing/cluster.go:144–211  ·  view source on GitHub ↗

SendLeaveAsRoomOwner

(ctx context.Context,
	profileAPI userapi.ClientUserAPI,
	roomID, userID, reason string,
	cfg *config.ClientAPI,
	rsAPI roomserverAPI.ClientRoomserverAPI,
	asAPI appserviceAPI.AppServiceInternalAPI, evTime time.Time)

Source from the content-addressed store, hash-verified

142
143// SendLeaveAsRoomOwner
144func SendLeaveAsRoomOwner(ctx context.Context,
145 profileAPI userapi.ClientUserAPI,
146 roomID, userID, reason string,
147 cfg *config.ClientAPI,
148 rsAPI roomserverAPI.ClientRoomserverAPI,
149 asAPI appserviceAPI.AppServiceInternalAPI, evTime time.Time) util.JSONResponse {
150
151 owner, err := new_db.GetGroupOwner(roomID)
152 if err != nil {
153 return util.ErrorResponse(err)
154 }
155 profile, err := loadProfile(ctx, userID, cfg, profileAPI, asAPI)
156 if err != nil {
157 return util.ErrorResponse(err)
158 }
159
160 builder := gomatrixserverlib.EventBuilder{
161 Sender: owner,
162 RoomID: roomID,
163 Type: "m.room.member",
164 StateKey: &userID,
165 }
166
167 content := gomatrixserverlib.MemberContent{
168 Membership: gomatrixserverlib.Leave,
169 DisplayName: profile.DisplayName,
170 AvatarURL: profile.AvatarURL,
171 Reason: reason,
172 IsDirect: false,
173 }
174
175 if err = builder.SetContent(content); err != nil {
176 return util.ErrorResponse(err)
177 }
178 event, err := eventutil.QueryAndBuildEvent(ctx, &builder, cfg.Matrix, evTime, rsAPI, nil)
179 if err == errMissingUserID {
180 return util.JSONResponse{
181 Code: http.StatusBadRequest,
182 JSON: jsonerror.BadJSON(err.Error()),
183 }
184 } else if err == eventutil.ErrRoomNoExists {
185 return util.JSONResponse{
186 Code: http.StatusNotFound,
187 JSON: jsonerror.NotFound(err.Error()),
188 }
189 } else if err != nil {
190 util.GetLogger(ctx).WithError(err).Error("buildMembershipEvent failed")
191 return jsonerror.InternalServerError()
192 }
193
194 if err = roomserverAPI.SendEvents(
195 ctx, rsAPI,
196 roomserverAPI.KindNew,
197 []*gomatrixserverlib.HeaderedEvent{event.Event.Headered(event.RoomVersion)},
198 cfg.Matrix.ServerName,
199 cfg.Matrix.ServerName,
200 nil,
201 false,

Callers 1

RejoinClusterFunction · 0.85

Calls 2

loadProfileFunction · 0.85
ErrorMethod · 0.45

Tested by

no test coverage detected