tiny 88x31 lexicon for atproto
0
fork

Configure Feed

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

i'm not sure but this would've been a race

+20 -15
+3 -8
db/lexicon.go
··· 219 219 return resuri, nil 220 220 } 221 221 222 - func (s *Store) DeleteLike(uri string, ctx context.Context) (string, error) { 223 - l, err := s.GetLike(uri, ctx) 224 - if err != nil { 225 - err = errors.New("error getting like: " + err.Error()) 226 - return "", err 227 - } 228 - _, err = s.pool.Exec(ctx, ` 222 + func (s *Store) DeleteLike(uri string, ctx context.Context) error { 223 + _, err := s.pool.Exec(ctx, ` 229 224 DELETE FROM likes WHERE uri = $1 230 225 `, uri) 231 - return l, err 226 + return err 232 227 }
+17 -7
handler/upload.go
··· 94 94 return 95 95 } 96 96 log.Println("uri parsed") 97 + var cached = true 98 + l, err := h.db.GetLike(uri, r.Context()) 99 + if err != nil { 100 + log.Println(err) 101 + cached = false 102 + } 97 103 err = myoauth.DeleteLike(cs, aturi.RecordKey().String(), cid, r.Context()) 98 104 if err != nil { 99 105 log.Println(err) ··· 101 107 return 102 108 } 103 109 log.Println("deleted like") 104 - l, err := h.db.DeleteLike(uri, r.Context()) 105 - if err != nil { 106 - log.Println(err) 107 - http.Error(w, "error storing like", http.StatusInternalServerError) 108 - return 110 + if cached { 111 + err = h.db.DeleteLike(uri, r.Context()) 112 + if err != nil { 113 + log.Println(err) 114 + http.Error(w, "error storing like", http.StatusInternalServerError) 115 + return 116 + } 117 + log.Println("cached deleted like") 118 + http.Redirect(w, r, fmt.Sprintf("/button?uri=%s", l), http.StatusCreated) 119 + } else { 120 + http.Redirect(w, r, "/", http.StatusCreated) 109 121 } 110 - log.Println("cached deleted like") 111 - http.Redirect(w, r, fmt.Sprintf("/button?uri=%s", l), http.StatusCreated) 112 122 } 113 123 114 124 func (h *Handler) upload(cs *oauth.ClientSession, w http.ResponseWriter, r *http.Request) {