···
···
func (h *Handler) HandleStudySessionFeed(w http.ResponseWriter, r *http.Request) {
119
+
l := h.Logger.With("handler", "HandleStudySessionFeed")
isFriends, err := strconv.ParseBool(r.URL.Query().Get("friends"))
122
-
log.Println("failed to parse friends value:", err)
123
+
l.Error("failed to parse friends value", "err", err)
···
page, err := strconv.ParseInt(pageStr, 10, 64)
132
-
log.Println("failed to parse page value:", err)
133
+
l.Error("failed to parse page value", "err", err)
···
feed, err = db.GetStudySessionFeed(h.Db, pageSize+1, int(offset))
151
-
log.Println("failed to get global feed:", err)
152
+
l.Error("failed to get global feed", "err", err)
htmx.HxError(w, http.StatusInternalServerError, "Failed to get global study session feed, try again later.")
err = h.GetBskyProfileHydratedSessionFeed(feed)
157
-
log.Println("failed to hydrate bsky profiles:", err)
158
+
l.Error("failed to hydrate bsky profiles", "err", err)
htmx.HxError(w, http.StatusInternalServerError, "Failed to get global study session feed, try again later.")
if fetchUserError != nil {
163
-
log.Println("failed to get logged-in user:", err)
164
+
l.Error("failed to get logged-in user", "err", err)
htmx.HxRedirect(w, "/login")
feed, err = db.GetFriendsStudySessionFeed(h.Db, user.Did, pageSize+1, int(offset))
170
-
log.Println("failed to get global feed:", err)
171
+
l.Error("failed to get global feed", "err", err)
htmx.HxError(w, http.StatusInternalServerError, "Failed to get global study session feed, try again later.")
err = h.GetBskyProfileHydratedSessionFeed(feed)
176
-
log.Println("failed to hydrate bsky profiles:", err)
177
+
l.Error("failed to hydrate bsky profiles", "err", err)
htmx.HxError(w, http.StatusInternalServerError, "Failed to get global study session feed, try again later.")
···
feed, err = ApplyPendingChanges(h, w, r, feed, PendingStudySessionCreation, PendingStudySessionUpdates, PendingStudySessionDeletion)
184
-
log.Printf("failed to save yoten-session after processing pending changes: %v", err)
185
+
l.Error("failed to save yoten-session after processing pending changes", "err", err)
···
func (h *Handler) HandleEditStudySessionPage(w http.ResponseWriter, r *http.Request) {
204
+
l := h.Logger.With("handler", "HandleEditStudySessionPage")
client, err := h.Oauth.AuthorizedClient(r)
205
-
log.Println("failed to get authorized client:", err)
208
+
l.Error("failed to get authorized client", "err", err)
htmx.HxRedirect(w, "/login")
user, err := bsky.GetUserWithBskyProfile(h.Oauth, r)
212
-
log.Println("failed to get logged-in user:", err)
215
+
l.Error("failed to get logged-in user", "err", err)
htmx.HxRedirect(w, "/login")
···
rkey := chi.URLParam(r, "rkey")
studySession, err := db.GetStudySessionByRkey(h.Db, user.Did, rkey)
220
-
log.Println("failed to get study session from db:", err)
223
+
l.Error("failed to get study session from db", "err", err)
htmx.HxError(w, http.StatusInternalServerError, "Failed to update study session, try again later.")
if user.Did != studySession.Did {
226
-
log.Printf("user '%s' does not own record '%s'", user.Did, studySession.Rkey)
229
+
l.Error("user does not own record", "did", user.Did, "sessionDid", studySession.Did)
htmx.HxError(w, http.StatusUnauthorized, "You do not have permissions to edit this study session.")
···
userDefinedActivities, err := db.GetActivitiesByDid(h.Db, user.Did)
235
-
log.Println("failed to get user-defined activities:", err)
238
+
l.Error("failed to get user-defined activities", "err", err)
resources, err := db.GetResourcesByDid(h.Db, user.Did)
240
-
log.Println("failed to get user-defined resources:", err)
243
+
l.Error("failed to get user-defined resources", "err", err)
preDefinedActivities, err := db.GetPredefinedActivities(h.Db)
245
-
log.Println("failed to get pre-defined activities:", err)
248
+
l.Error("failed to get pre-defined activities", "err", err)
currentResource := studySession.Resource
···
languages, err := db.GetProfileLanguages(h.Db, user.Did)
270
-
log.Println("failed to fetch profile languages:", err)
273
+
l.Error("failed to fetch profile languages", "err", err)
views.EditStudySessionPage(views.EditStudySessionPageParams{
···
updatedStudySession, err := h.parseStudySessionForm(r)
283
-
log.Println("invalid study session form:", err)
286
+
l.Error("invalid study session form", "err", err)
htmx.HxError(w, http.StatusBadRequest, "Failed to update study session, ensure all data is valid.")
···
updatedStudySession.CreatedAt = studySession.CreatedAt
if err := db.ValidateStudySession(updatedStudySession); err != nil {
292
-
log.Println("invalid study session:", err)
295
+
l.Error("invalid study session", "err", err)
case errors.Is(err, db.ErrSessionDescriptionTooLong):
htmx.HxError(w, http.StatusBadRequest, "Study session description cannot be more than 256 characters.")
···
361
-
log.Println("failed to update study session record:", err)
364
+
l.Error("failed to update study session record", "err", err)
htmx.HxError(w, http.StatusInternalServerError, "Failed to update study session, try again later.")
err = SavePendingUpdate(h, w, r, PendingStudySessionUpdates, updatedStudySession)
368
-
log.Printf("failed to save yoten-session to add pending study session updates: %v", err)
371
+
l.Error("failed to save yoten-session to add pending study session updates", "err", err)
···
380
-
log.Println("failed to enqueue posthog event:", err)
383
+
l.Error("failed to enqueue posthog event", "err", err)
···
func (h *Handler) HandleNewStudySessionPage(w http.ResponseWriter, r *http.Request) {
392
+
l := h.Logger.With("handler", "HandleNewStudySessionPage")
user, err := bsky.GetUserWithBskyProfile(h.Oauth, r)
391
-
log.Println("failed to get logged-in user:", err)
396
+
l.Error("failed to get logged-in user", "err", err)
htmx.HxRedirect(w, "/login")
client, err := h.Oauth.AuthorizedClient(r)
398
-
log.Println("failed to get authorized client:", err)
403
+
l.Error("failed to get authorized client", "err", err)
htmx.HxRedirect(w, "/login")
···
profile, err := db.GetProfile(h.Db, user.Did)
407
-
log.Printf("failed to find %s in db: %s", user.Did, err)
412
+
l.Error("failed to find user in db", "did", user.Did, "err", err)
htmx.HxError(w, http.StatusNotFound, "Failed to find user.")
userDefinedActivities, err := db.GetActivitiesByDid(h.Db, user.Did)
414
-
log.Println("failed to get user-defined activities:", err)
419
+
l.Error("failed to get user-defined activities", "err", err)
preDefinedActivities, err := db.GetPredefinedActivities(h.Db)
418
-
log.Println("failed to get pre-defined activities:", err)
423
+
l.Error("failed to get pre-defined activities", "err", err)
activeActivities := utils.Filter(userDefinedActivities, func(activity db.Activity) bool {
return activity.Status != db.Deleted
···
resources, err := db.GetResourcesByDid(h.Db, user.Did)
427
-
log.Println("failed to get user-defined resources:", err)
432
+
l.Error("failed to get user-defined resources", "err", err)
activeResources := utils.Filter(resources, func(resource db.Resource) bool {
return resource.Status != db.Deleted
···
newStudySession, err := h.parseStudySessionForm(r)
443
-
log.Println("invalid study session form:", err)
448
+
l.Error("invalid study session form", "err", err)
htmx.HxError(w, http.StatusBadRequest, "Failed to update study session, ensure all data is valid.")
···
if err := db.ValidateStudySession(newStudySession); err != nil {
462
-
log.Println("invalid study session:", err)
467
+
l.Error("invalid study session", "err", err)
case errors.Is(err, db.ErrSessionDescriptionTooLong):
htmx.HxError(w, http.StatusBadRequest, "Study session description cannot be more than 256 characters.")
···
524
-
log.Println("failed to create study session record:", err)
529
+
l.Error("failed to create study session record", "err", err)
htmx.HxError(w, http.StatusInternalServerError, "Failed to create study session, try again later.")
err = SavePendingCreate(h, w, r, PendingStudySessionCreation, newStudySession)
531
-
log.Printf("failed to save yoten-session to add pending study session creation: %v", err)
536
+
l.Error("failed to save yoten-session to add pending study session creation", "err", err)
···
Set("date_is_today", newStudySession.Date.Truncate(24*time.Hour).Equal(time.Now().UTC().In(loc).Truncate(24*time.Hour))),
548
-
log.Println("failed to enqueue posthog event:", err)
553
+
l.Error("failed to enqueue posthog event", "err", err)
···
func (h *Handler) HandleDeleteStudySession(w http.ResponseWriter, r *http.Request) {
562
+
l := h.Logger.With("handler", "HandleDeleteStudySession")
user := h.Oauth.GetUser(r)
559
-
log.Println("failed to get logged-in user")
566
+
l.Error("failed to get logged-in user")
htmx.HxRedirect(w, "/login")
client, err := h.Oauth.AuthorizedClient(r)
566
-
log.Println("failed to get authorized client:", err)
573
+
l.Error("failed to get authorized client", "err", err)
htmx.HxError(w, http.StatusUnauthorized, "Failed to delete study session, try again later.")
···
575
-
log.Println("failed to parse study session delete form:", err)
582
+
l.Error("failed to parse study session delete form", "err", err)
htmx.HxError(w, http.StatusBadRequest, "Failed to delete study session, try again later.")
···
rkey := chi.URLParam(r, "rkey")
studySession, err := db.GetStudySessionByRkey(h.Db, user.Did, rkey)
583
-
log.Println("failed to get study session from db:", err)
590
+
l.Error("failed to get study session from db", "err", err)
htmx.HxError(w, http.StatusInternalServerError, "Failed to delete study session, try again later.")
if user.Did != studySession.Did {
589
-
log.Println("failed to delete study session: user does not own record")
596
+
l.Error("user does not own record", "did", user.Did, "sessionDid", studySession.Did)
htmx.HxError(w, http.StatusUnauthorized, "Failed to delete study session, try again later.")
···
600
-
log.Println("failed to delete study session from PDS:", err)
607
+
l.Error("failed to delete study session from PDS", "err", err)
htmx.HxError(w, http.StatusInternalServerError, "Failed to delete study session, try again later.")
err = SavePendingDelete(h, w, r, PendingStudySessionDeletion, studySession)
607
-
log.Printf("failed to save yoten-session to add pending study session deletion: %v", err)
614
+
l.Error("failed to save yoten-session to add pending study session deletion", "err", err)
···
Set("session_age_seconds", time.Since(studySession.CreatedAt).Seconds()),
620
-
log.Println("failed to enqueue posthog event:", err)
627
+
l.Error("failed to enqueue posthog event", "err", err)
···
func (h *Handler) HandleStudySessionPage(w http.ResponseWriter, r *http.Request) {
654
+
l := h.Logger.With("handler", "HandleStudySessionPage")
user, _ := bsky.GetUserWithBskyProfile(h.Oauth, r)
didOrHandle := chi.URLParam(r, "user")
···
studySession, err := db.GetStudySessionByRkey(h.Db, ident.DID.String(), rkey)
664
-
log.Println("failed to retrieve study session:", err)
673
+
l.Error("failed to retrieve study session", "err", err)
htmx.HxError(w, http.StatusInternalServerError, "Failed to retrieve study session, try again later.")
bskyProfile, err := bsky.GetBskyProfile(ident.DID.String())
671
-
log.Println("failed to retrieve bsky profile for study session:", err)
680
+
l.Error("failed to retrieve bsky profile for study session", "err", err)
htmx.HxError(w, http.StatusInternalServerError, "Failed to retrieve bsky profile, try again later.")
profile, err := db.GetProfile(h.Db, ident.DID.String())
678
-
log.Println("failed to retrieve profile for study session:", err)
687
+
l.Error("failed to retrieve profile for study session", "err", err)
htmx.HxError(w, http.StatusInternalServerError, "Failed to retrieve profile, try again later.")
···
func (h *Handler) HandleStudySessionPageCommentFeed(w http.ResponseWriter, r *http.Request) {
710
+
l := h.Logger.With("handler", "HandleStudySessionPageCommentFeed")
user, _ := bsky.GetUserWithBskyProfile(h.Oauth, r)
didOrHandle := chi.URLParam(r, "user")
···
page, err := strconv.ParseInt(pageStr, 10, 64)
724
-
log.Println("failed to parse page value:", err)
735
+
l.Error("failed to parse page value", "err", err)
···
commentFeed, err := db.GetCommentsForSession(h.Db, studySessionUri.String(), pageSize+1, int(offset))
736
-
log.Println("failed to get comment feed:", err)
747
+
l.Error("failed to get comment feed", "err", err)
htmx.HxError(w, http.StatusInternalServerError, "Failed to get comment feed, try again later.")
···
populatedCommentFeed, err := h.BuildCommentFeed(finalFeed)
772
-
log.Println("failed to populate comment feed:", err)
783
+
l.Error("failed to populate comment feed", "err", err)
htmx.HxError(w, http.StatusInternalServerError, "Failed to get comment feed, try again later.")