backend for xcvr appview
3
fork

Configure Feed

Select the types of activity you want to include in your feed.

allow media posts to not have a signet

+21 -9
+2 -2
server/internal/handler/lrcHandlers.go
··· 183 183 if cs == nil { 184 184 h.badRequest(w, errors.New("must be authorized to post media")) 185 185 } 186 - mr, err := parseMediaRequest(r) 186 + mr, err := h.parseMediaRequest(r) 187 187 if err != nil { 188 188 h.badRequest(w, err) 189 189 return ··· 196 196 w.Write(nil) 197 197 } 198 198 199 - func parseMediaRequest(r *http.Request) (*types.ParseMediaRequest, error) { 199 + func (h *Handler) parseMediaRequest(r *http.Request) (*types.ParseMediaRequest, error) { 200 200 beep := json.NewDecoder(r.Body) 201 201 var mr types.ParseMediaRequest 202 202 err := beep.Decode(&mr)
+12 -2
server/internal/recordmanager/media.go
··· 90 90 return rm.broadcaster.BroadcastImage(curi, i) 91 91 } 92 92 93 - func (rm *RecordManager) validateImageRecord(mr *types.ParseMediaRequest) (*lex.MediaRecord, *time.Time, error) { 93 + func (rm *RecordManager) validateImageRecord(mr *types.ParseMediaRequest, ctx context.Context) (*lex.MediaRecord, *time.Time, error) { 94 94 var imr lex.MediaRecord 95 - imr.SignetURI = mr.SignetURI 95 + if mr.SignetURI == nil { 96 + if mr.ChannelURI == nil || mr.MessageID == nil { 97 + return nil, nil, errors.New("not enough info!") 98 + } 99 + suri, _, err := rm.db.QuerySignet(*mr.ChannelURI, *mr.MessageID, ctx) 100 + if err != nil { 101 + return nil, nil, errors.New("failed to get signet!") 102 + } 103 + mr.SignetURI = &suri 104 + } 105 + imr.SignetURI = *mr.SignetURI 96 106 imr.Nick = mr.Nick 97 107 cptr := mr.Color 98 108 if cptr != nil {
+7 -5
server/internal/types/lexicons.go
··· 245 245 } 246 246 247 247 type ParseMediaRequest struct { 248 - Nick *string `json:"nick,omitempty"` 249 - Color *uint32 `json:"color,omitempty"` 250 - SignetURI string `json:"signetURI"` 251 - Image *lex.Image `json:"image,omitempty"` 252 - Type string `json:"type"` 248 + Nick *string `json:"nick,omitempty"` 249 + Color *uint32 `json:"color,omitempty"` 250 + SignetURI *string `json:"signetURI,omitempty"` 251 + ChannelURI *string `json:"channelURI,omitempty"` 252 + MessageID *uint32 `json:"messageID,omitempty"` 253 + Image *lex.Image `json:"image,omitempty"` 254 + Type string `json:"type"` 253 255 } 254 256 255 257 func (m MediaView) MarshalJSON() ([]byte, error) {