Y艒ten: A social tracker for your language learning journey built on the atproto.

feat(handlers/study-session): use slogger #8

merged opened by brookjeynes.dev targeting master from push-trrpxxyxxmot
Labels

None yet.

Participants 1
AT URI
at://did:plc:4mj54vc4ha3lh32ksxwunnbh/sh.tangled.repo.pull/3m3bmdlgbli22
+58 -47
Diff #0
+58 -47
internal/server/handlers/study-session.go
··· 3 import ( 4 "errors" 5 "fmt" 6 - "log" 7 "net/http" 8 "strconv" 9 "time" ··· 117 } 118 119 func (h *Handler) HandleStudySessionFeed(w http.ResponseWriter, r *http.Request) { 120 isFriends, err := strconv.ParseBool(r.URL.Query().Get("friends")) 121 if err != nil { 122 - log.Println("failed to parse friends value:", err) 123 isFriends = false 124 } 125 ··· 129 } 130 page, err := strconv.ParseInt(pageStr, 10, 64) 131 if err != nil { 132 - log.Println("failed to parse page value:", err) 133 page = 1 134 } 135 if page == 0 { ··· 148 if !isFriends { 149 feed, err = db.GetStudySessionFeed(h.Db, pageSize+1, int(offset)) 150 if err != nil { 151 - log.Println("failed to get global feed:", err) 152 htmx.HxError(w, http.StatusInternalServerError, "Failed to get global study session feed, try again later.") 153 return 154 } 155 err = h.GetBskyProfileHydratedSessionFeed(feed) 156 if err != nil { 157 - log.Println("failed to hydrate bsky profiles:", err) 158 htmx.HxError(w, http.StatusInternalServerError, "Failed to get global study session feed, try again later.") 159 return 160 } 161 } else { 162 if fetchUserError != nil { 163 - log.Println("failed to get logged-in user:", err) 164 htmx.HxRedirect(w, "/login") 165 return 166 } 167 168 feed, err = db.GetFriendsStudySessionFeed(h.Db, user.Did, pageSize+1, int(offset)) 169 if err != nil { 170 - log.Println("failed to get global feed:", err) 171 htmx.HxError(w, http.StatusInternalServerError, "Failed to get global study session feed, try again later.") 172 return 173 } 174 err = h.GetBskyProfileHydratedSessionFeed(feed) 175 if err != nil { 176 - log.Println("failed to hydrate bsky profiles:", err) 177 htmx.HxError(w, http.StatusInternalServerError, "Failed to get global study session feed, try again later.") 178 return 179 } ··· 181 182 feed, err = ApplyPendingChanges(h, w, r, feed, PendingStudySessionCreation, PendingStudySessionUpdates, PendingStudySessionDeletion) 183 if err != nil { 184 - log.Printf("failed to save yoten-session after processing pending changes: %v", err) 185 } 186 187 nextPage := 0 ··· 200 } 201 202 func (h *Handler) HandleEditStudySessionPage(w http.ResponseWriter, r *http.Request) { 203 client, err := h.Oauth.AuthorizedClient(r) 204 if err != nil { 205 - log.Println("failed to get authorized client:", err) 206 htmx.HxRedirect(w, "/login") 207 return 208 } 209 210 user, err := bsky.GetUserWithBskyProfile(h.Oauth, r) 211 if err != nil { 212 - log.Println("failed to get logged-in user:", err) 213 htmx.HxRedirect(w, "/login") 214 return 215 } ··· 217 rkey := chi.URLParam(r, "rkey") 218 studySession, err := db.GetStudySessionByRkey(h.Db, user.Did, rkey) 219 if err != nil { 220 - log.Println("failed to get study session from db:", err) 221 htmx.HxError(w, http.StatusInternalServerError, "Failed to update study session, try again later.") 222 return 223 } 224 225 if user.Did != studySession.Did { 226 - log.Printf("user '%s' does not own record '%s'", user.Did, studySession.Rkey) 227 htmx.HxError(w, http.StatusUnauthorized, "You do not have permissions to edit this study session.") 228 return 229 } ··· 232 case http.MethodGet: 233 userDefinedActivities, err := db.GetActivitiesByDid(h.Db, user.Did) 234 if err != nil { 235 - log.Println("failed to get user-defined activities:", err) 236 } 237 238 resources, err := db.GetResourcesByDid(h.Db, user.Did) 239 if err != nil { 240 - log.Println("failed to get user-defined resources:", err) 241 } 242 243 preDefinedActivities, err := db.GetPredefinedActivities(h.Db) 244 if err != nil { 245 - log.Println("failed to get pre-defined activities:", err) 246 } 247 248 currentResource := studySession.Resource ··· 267 268 languages, err := db.GetProfileLanguages(h.Db, user.Did) 269 if err != nil { 270 - log.Println("failed to fetch profile languages:", err) 271 } 272 273 views.EditStudySessionPage(views.EditStudySessionPageParams{ ··· 280 case http.MethodPost: 281 updatedStudySession, err := h.parseStudySessionForm(r) 282 if err != nil { 283 - log.Println("invalid study session form:", err) 284 htmx.HxError(w, http.StatusBadRequest, "Failed to update study session, ensure all data is valid.") 285 return 286 } ··· 289 updatedStudySession.CreatedAt = studySession.CreatedAt 290 291 if err := db.ValidateStudySession(updatedStudySession); err != nil { 292 - log.Println("invalid study session:", err) 293 switch { 294 case errors.Is(err, db.ErrSessionDescriptionTooLong): 295 htmx.HxError(w, http.StatusBadRequest, "Study session description cannot be more than 256 characters.") ··· 358 SwapRecord: cid, 359 }) 360 if err != nil { 361 - log.Println("failed to update study session record:", err) 362 htmx.HxError(w, http.StatusInternalServerError, "Failed to update study session, try again later.") 363 return 364 } 365 366 err = SavePendingUpdate(h, w, r, PendingStudySessionUpdates, updatedStudySession) 367 if err != nil { 368 - log.Printf("failed to save yoten-session to add pending study session updates: %v", err) 369 } 370 371 if !h.Config.Core.Dev { ··· 377 Set("rkey", rkey), 378 }) 379 if err != nil { 380 - log.Println("failed to enqueue posthog event:", err) 381 } 382 } 383 ··· 386 } 387 388 func (h *Handler) HandleNewStudySessionPage(w http.ResponseWriter, r *http.Request) { 389 user, err := bsky.GetUserWithBskyProfile(h.Oauth, r) 390 if err != nil { 391 - log.Println("failed to get logged-in user:", err) 392 htmx.HxRedirect(w, "/login") 393 return 394 } 395 396 client, err := h.Oauth.AuthorizedClient(r) 397 if err != nil { 398 - log.Println("failed to get authorized client:", err) 399 htmx.HxRedirect(w, "/login") 400 return 401 } ··· 404 case http.MethodGet: 405 profile, err := db.GetProfile(h.Db, user.Did) 406 if err != nil { 407 - log.Printf("failed to find %s in db: %s", user.Did, err) 408 htmx.HxError(w, http.StatusNotFound, "Failed to find user.") 409 return 410 } 411 412 userDefinedActivities, err := db.GetActivitiesByDid(h.Db, user.Did) 413 if err != nil { 414 - log.Println("failed to get user-defined activities:", err) 415 } 416 preDefinedActivities, err := db.GetPredefinedActivities(h.Db) 417 if err != nil { 418 - log.Println("failed to get pre-defined activities:", err) 419 } 420 activeActivities := utils.Filter(userDefinedActivities, func(activity db.Activity) bool { 421 return activity.Status != db.Deleted ··· 424 425 resources, err := db.GetResourcesByDid(h.Db, user.Did) 426 if err != nil { 427 - log.Println("failed to get user-defined resources:", err) 428 } 429 activeResources := utils.Filter(resources, func(resource db.Resource) bool { 430 return resource.Status != db.Deleted ··· 440 case http.MethodPost: 441 newStudySession, err := h.parseStudySessionForm(r) 442 if err != nil { 443 - log.Println("invalid study session form:", err) 444 htmx.HxError(w, http.StatusBadRequest, "Failed to update study session, ensure all data is valid.") 445 return 446 } ··· 459 } 460 461 if err := db.ValidateStudySession(newStudySession); err != nil { 462 - log.Println("invalid study session:", err) 463 switch { 464 case errors.Is(err, db.ErrSessionDescriptionTooLong): 465 htmx.HxError(w, http.StatusBadRequest, "Study session description cannot be more than 256 characters.") ··· 521 }, 522 }) 523 if err != nil { 524 - log.Println("failed to create study session record:", err) 525 htmx.HxError(w, http.StatusInternalServerError, "Failed to create study session, try again later.") 526 return 527 } 528 529 err = SavePendingCreate(h, w, r, PendingStudySessionCreation, newStudySession) 530 if err != nil { 531 - log.Printf("failed to save yoten-session to add pending study session creation: %v", err) 532 } 533 534 if !h.Config.Core.Dev { ··· 545 Set("date_is_today", newStudySession.Date.Truncate(24*time.Hour).Equal(time.Now().UTC().In(loc).Truncate(24*time.Hour))), 546 }) 547 if err != nil { 548 - log.Println("failed to enqueue posthog event:", err) 549 } 550 } 551 ··· 554 } 555 556 func (h *Handler) HandleDeleteStudySession(w http.ResponseWriter, r *http.Request) { 557 user := h.Oauth.GetUser(r) 558 if user == nil { 559 - log.Println("failed to get logged-in user") 560 htmx.HxRedirect(w, "/login") 561 return 562 } 563 564 client, err := h.Oauth.AuthorizedClient(r) 565 if err != nil { 566 - log.Println("failed to get authorized client:", err) 567 htmx.HxError(w, http.StatusUnauthorized, "Failed to delete study session, try again later.") 568 return 569 } ··· 572 case http.MethodDelete: 573 err := r.ParseForm() 574 if err != nil { 575 - log.Println("failed to parse study session delete form:", err) 576 htmx.HxError(w, http.StatusBadRequest, "Failed to delete study session, try again later.") 577 return 578 } ··· 580 rkey := chi.URLParam(r, "rkey") 581 studySession, err := db.GetStudySessionByRkey(h.Db, user.Did, rkey) 582 if err != nil { 583 - log.Println("failed to get study session from db:", err) 584 htmx.HxError(w, http.StatusInternalServerError, "Failed to delete study session, try again later.") 585 return 586 } 587 588 if user.Did != studySession.Did { 589 - log.Println("failed to delete study session: user does not own record") 590 htmx.HxError(w, http.StatusUnauthorized, "Failed to delete study session, try again later.") 591 return 592 } ··· 597 Rkey: rkey, 598 }) 599 if err != nil { 600 - log.Println("failed to delete study session from PDS:", err) 601 htmx.HxError(w, http.StatusInternalServerError, "Failed to delete study session, try again later.") 602 return 603 } 604 605 err = SavePendingDelete(h, w, r, PendingStudySessionDeletion, studySession) 606 if err != nil { 607 - log.Printf("failed to save yoten-session to add pending study session deletion: %v", err) 608 } 609 610 if !h.Config.Core.Dev { ··· 617 Set("session_age_seconds", time.Since(studySession.CreatedAt).Seconds()), 618 }) 619 if err != nil { 620 - log.Println("failed to enqueue posthog event:", err) 621 } 622 } 623 ··· 644 } 645 646 func (h *Handler) HandleStudySessionPage(w http.ResponseWriter, r *http.Request) { 647 user, _ := bsky.GetUserWithBskyProfile(h.Oauth, r) 648 didOrHandle := chi.URLParam(r, "user") 649 if didOrHandle == "" { ··· 661 662 studySession, err := db.GetStudySessionByRkey(h.Db, ident.DID.String(), rkey) 663 if err != nil { 664 - log.Println("failed to retrieve study session:", err) 665 htmx.HxError(w, http.StatusInternalServerError, "Failed to retrieve study session, try again later.") 666 return 667 } 668 669 bskyProfile, err := bsky.GetBskyProfile(ident.DID.String()) 670 if err != nil { 671 - log.Println("failed to retrieve bsky profile for study session:", err) 672 htmx.HxError(w, http.StatusInternalServerError, "Failed to retrieve bsky profile, try again later.") 673 return 674 } 675 676 profile, err := db.GetProfile(h.Db, ident.DID.String()) 677 if err != nil { 678 - log.Println("failed to retrieve profile for study session:", err) 679 htmx.HxError(w, http.StatusInternalServerError, "Failed to retrieve profile, try again later.") 680 return 681 } ··· 698 } 699 700 func (h *Handler) HandleStudySessionPageCommentFeed(w http.ResponseWriter, r *http.Request) { 701 user, _ := bsky.GetUserWithBskyProfile(h.Oauth, r) 702 703 didOrHandle := chi.URLParam(r, "user") ··· 721 } 722 page, err := strconv.ParseInt(pageStr, 10, 64) 723 if err != nil { 724 - log.Println("failed to parse page value:", err) 725 page = 1 726 } 727 if page == 0 { ··· 733 734 commentFeed, err := db.GetCommentsForSession(h.Db, studySessionUri.String(), pageSize+1, int(offset)) 735 if err != nil { 736 - log.Println("failed to get comment feed:", err) 737 htmx.HxError(w, http.StatusInternalServerError, "Failed to get comment feed, try again later.") 738 return 739 } ··· 769 770 populatedCommentFeed, err := h.BuildCommentFeed(finalFeed) 771 if err != nil { 772 - log.Println("failed to populate comment feed:", err) 773 htmx.HxError(w, http.StatusInternalServerError, "Failed to get comment feed, try again later.") 774 return 775 }
··· 3 import ( 4 "errors" 5 "fmt" 6 "net/http" 7 "strconv" 8 "time" ··· 116 } 117 118 func (h *Handler) HandleStudySessionFeed(w http.ResponseWriter, r *http.Request) { 119 + l := h.Logger.With("handler", "HandleStudySessionFeed") 120 + 121 isFriends, err := strconv.ParseBool(r.URL.Query().Get("friends")) 122 if err != nil { 123 + l.Error("failed to parse friends value", "err", err) 124 isFriends = false 125 } 126 ··· 130 } 131 page, err := strconv.ParseInt(pageStr, 10, 64) 132 if err != nil { 133 + l.Error("failed to parse page value", "err", err) 134 page = 1 135 } 136 if page == 0 { ··· 149 if !isFriends { 150 feed, err = db.GetStudySessionFeed(h.Db, pageSize+1, int(offset)) 151 if err != nil { 152 + l.Error("failed to get global feed", "err", err) 153 htmx.HxError(w, http.StatusInternalServerError, "Failed to get global study session feed, try again later.") 154 return 155 } 156 err = h.GetBskyProfileHydratedSessionFeed(feed) 157 if err != nil { 158 + l.Error("failed to hydrate bsky profiles", "err", err) 159 htmx.HxError(w, http.StatusInternalServerError, "Failed to get global study session feed, try again later.") 160 return 161 } 162 } else { 163 if fetchUserError != nil { 164 + l.Error("failed to get logged-in user", "err", err) 165 htmx.HxRedirect(w, "/login") 166 return 167 } 168 169 feed, err = db.GetFriendsStudySessionFeed(h.Db, user.Did, pageSize+1, int(offset)) 170 if err != nil { 171 + l.Error("failed to get global feed", "err", err) 172 htmx.HxError(w, http.StatusInternalServerError, "Failed to get global study session feed, try again later.") 173 return 174 } 175 err = h.GetBskyProfileHydratedSessionFeed(feed) 176 if err != nil { 177 + l.Error("failed to hydrate bsky profiles", "err", err) 178 htmx.HxError(w, http.StatusInternalServerError, "Failed to get global study session feed, try again later.") 179 return 180 } ··· 182 183 feed, err = ApplyPendingChanges(h, w, r, feed, PendingStudySessionCreation, PendingStudySessionUpdates, PendingStudySessionDeletion) 184 if err != nil { 185 + l.Error("failed to save yoten-session after processing pending changes", "err", err) 186 } 187 188 nextPage := 0 ··· 201 } 202 203 func (h *Handler) HandleEditStudySessionPage(w http.ResponseWriter, r *http.Request) { 204 + l := h.Logger.With("handler", "HandleEditStudySessionPage") 205 + 206 client, err := h.Oauth.AuthorizedClient(r) 207 if err != nil { 208 + l.Error("failed to get authorized client", "err", err) 209 htmx.HxRedirect(w, "/login") 210 return 211 } 212 213 user, err := bsky.GetUserWithBskyProfile(h.Oauth, r) 214 if err != nil { 215 + l.Error("failed to get logged-in user", "err", err) 216 htmx.HxRedirect(w, "/login") 217 return 218 } ··· 220 rkey := chi.URLParam(r, "rkey") 221 studySession, err := db.GetStudySessionByRkey(h.Db, user.Did, rkey) 222 if err != nil { 223 + l.Error("failed to get study session from db", "err", err) 224 htmx.HxError(w, http.StatusInternalServerError, "Failed to update study session, try again later.") 225 return 226 } 227 228 if user.Did != studySession.Did { 229 + l.Error("user does not own record", "did", user.Did, "sessionDid", studySession.Did) 230 htmx.HxError(w, http.StatusUnauthorized, "You do not have permissions to edit this study session.") 231 return 232 } ··· 235 case http.MethodGet: 236 userDefinedActivities, err := db.GetActivitiesByDid(h.Db, user.Did) 237 if err != nil { 238 + l.Error("failed to get user-defined activities", "err", err) 239 } 240 241 resources, err := db.GetResourcesByDid(h.Db, user.Did) 242 if err != nil { 243 + l.Error("failed to get user-defined resources", "err", err) 244 } 245 246 preDefinedActivities, err := db.GetPredefinedActivities(h.Db) 247 if err != nil { 248 + l.Error("failed to get pre-defined activities", "err", err) 249 } 250 251 currentResource := studySession.Resource ··· 270 271 languages, err := db.GetProfileLanguages(h.Db, user.Did) 272 if err != nil { 273 + l.Error("failed to fetch profile languages", "err", err) 274 } 275 276 views.EditStudySessionPage(views.EditStudySessionPageParams{ ··· 283 case http.MethodPost: 284 updatedStudySession, err := h.parseStudySessionForm(r) 285 if err != nil { 286 + l.Error("invalid study session form", "err", err) 287 htmx.HxError(w, http.StatusBadRequest, "Failed to update study session, ensure all data is valid.") 288 return 289 } ··· 292 updatedStudySession.CreatedAt = studySession.CreatedAt 293 294 if err := db.ValidateStudySession(updatedStudySession); err != nil { 295 + l.Error("invalid study session", "err", err) 296 switch { 297 case errors.Is(err, db.ErrSessionDescriptionTooLong): 298 htmx.HxError(w, http.StatusBadRequest, "Study session description cannot be more than 256 characters.") ··· 361 SwapRecord: cid, 362 }) 363 if err != nil { 364 + l.Error("failed to update study session record", "err", err) 365 htmx.HxError(w, http.StatusInternalServerError, "Failed to update study session, try again later.") 366 return 367 } 368 369 err = SavePendingUpdate(h, w, r, PendingStudySessionUpdates, updatedStudySession) 370 if err != nil { 371 + l.Error("failed to save yoten-session to add pending study session updates", "err", err) 372 } 373 374 if !h.Config.Core.Dev { ··· 380 Set("rkey", rkey), 381 }) 382 if err != nil { 383 + l.Error("failed to enqueue posthog event", "err", err) 384 } 385 } 386 ··· 389 } 390 391 func (h *Handler) HandleNewStudySessionPage(w http.ResponseWriter, r *http.Request) { 392 + l := h.Logger.With("handler", "HandleNewStudySessionPage") 393 + 394 user, err := bsky.GetUserWithBskyProfile(h.Oauth, r) 395 if err != nil { 396 + l.Error("failed to get logged-in user", "err", err) 397 htmx.HxRedirect(w, "/login") 398 return 399 } 400 401 client, err := h.Oauth.AuthorizedClient(r) 402 if err != nil { 403 + l.Error("failed to get authorized client", "err", err) 404 htmx.HxRedirect(w, "/login") 405 return 406 } ··· 409 case http.MethodGet: 410 profile, err := db.GetProfile(h.Db, user.Did) 411 if err != nil { 412 + l.Error("failed to find user in db", "did", user.Did, "err", err) 413 htmx.HxError(w, http.StatusNotFound, "Failed to find user.") 414 return 415 } 416 417 userDefinedActivities, err := db.GetActivitiesByDid(h.Db, user.Did) 418 if err != nil { 419 + l.Error("failed to get user-defined activities", "err", err) 420 } 421 preDefinedActivities, err := db.GetPredefinedActivities(h.Db) 422 if err != nil { 423 + l.Error("failed to get pre-defined activities", "err", err) 424 } 425 activeActivities := utils.Filter(userDefinedActivities, func(activity db.Activity) bool { 426 return activity.Status != db.Deleted ··· 429 430 resources, err := db.GetResourcesByDid(h.Db, user.Did) 431 if err != nil { 432 + l.Error("failed to get user-defined resources", "err", err) 433 } 434 activeResources := utils.Filter(resources, func(resource db.Resource) bool { 435 return resource.Status != db.Deleted ··· 445 case http.MethodPost: 446 newStudySession, err := h.parseStudySessionForm(r) 447 if err != nil { 448 + l.Error("invalid study session form", "err", err) 449 htmx.HxError(w, http.StatusBadRequest, "Failed to update study session, ensure all data is valid.") 450 return 451 } ··· 464 } 465 466 if err := db.ValidateStudySession(newStudySession); err != nil { 467 + l.Error("invalid study session", "err", err) 468 switch { 469 case errors.Is(err, db.ErrSessionDescriptionTooLong): 470 htmx.HxError(w, http.StatusBadRequest, "Study session description cannot be more than 256 characters.") ··· 526 }, 527 }) 528 if err != nil { 529 + l.Error("failed to create study session record", "err", err) 530 htmx.HxError(w, http.StatusInternalServerError, "Failed to create study session, try again later.") 531 return 532 } 533 534 err = SavePendingCreate(h, w, r, PendingStudySessionCreation, newStudySession) 535 if err != nil { 536 + l.Error("failed to save yoten-session to add pending study session creation", "err", err) 537 } 538 539 if !h.Config.Core.Dev { ··· 550 Set("date_is_today", newStudySession.Date.Truncate(24*time.Hour).Equal(time.Now().UTC().In(loc).Truncate(24*time.Hour))), 551 }) 552 if err != nil { 553 + l.Error("failed to enqueue posthog event", "err", err) 554 } 555 } 556 ··· 559 } 560 561 func (h *Handler) HandleDeleteStudySession(w http.ResponseWriter, r *http.Request) { 562 + l := h.Logger.With("handler", "HandleDeleteStudySession") 563 + 564 user := h.Oauth.GetUser(r) 565 if user == nil { 566 + l.Error("failed to get logged-in user") 567 htmx.HxRedirect(w, "/login") 568 return 569 } 570 571 client, err := h.Oauth.AuthorizedClient(r) 572 if err != nil { 573 + l.Error("failed to get authorized client", "err", err) 574 htmx.HxError(w, http.StatusUnauthorized, "Failed to delete study session, try again later.") 575 return 576 } ··· 579 case http.MethodDelete: 580 err := r.ParseForm() 581 if err != nil { 582 + l.Error("failed to parse study session delete form", "err", err) 583 htmx.HxError(w, http.StatusBadRequest, "Failed to delete study session, try again later.") 584 return 585 } ··· 587 rkey := chi.URLParam(r, "rkey") 588 studySession, err := db.GetStudySessionByRkey(h.Db, user.Did, rkey) 589 if err != nil { 590 + l.Error("failed to get study session from db", "err", err) 591 htmx.HxError(w, http.StatusInternalServerError, "Failed to delete study session, try again later.") 592 return 593 } 594 595 if user.Did != studySession.Did { 596 + l.Error("user does not own record", "did", user.Did, "sessionDid", studySession.Did) 597 htmx.HxError(w, http.StatusUnauthorized, "Failed to delete study session, try again later.") 598 return 599 } ··· 604 Rkey: rkey, 605 }) 606 if err != nil { 607 + l.Error("failed to delete study session from PDS", "err", err) 608 htmx.HxError(w, http.StatusInternalServerError, "Failed to delete study session, try again later.") 609 return 610 } 611 612 err = SavePendingDelete(h, w, r, PendingStudySessionDeletion, studySession) 613 if err != nil { 614 + l.Error("failed to save yoten-session to add pending study session deletion", "err", err) 615 } 616 617 if !h.Config.Core.Dev { ··· 624 Set("session_age_seconds", time.Since(studySession.CreatedAt).Seconds()), 625 }) 626 if err != nil { 627 + l.Error("failed to enqueue posthog event", "err", err) 628 } 629 } 630 ··· 651 } 652 653 func (h *Handler) HandleStudySessionPage(w http.ResponseWriter, r *http.Request) { 654 + l := h.Logger.With("handler", "HandleStudySessionPage") 655 + 656 user, _ := bsky.GetUserWithBskyProfile(h.Oauth, r) 657 didOrHandle := chi.URLParam(r, "user") 658 if didOrHandle == "" { ··· 670 671 studySession, err := db.GetStudySessionByRkey(h.Db, ident.DID.String(), rkey) 672 if err != nil { 673 + l.Error("failed to retrieve study session", "err", err) 674 htmx.HxError(w, http.StatusInternalServerError, "Failed to retrieve study session, try again later.") 675 return 676 } 677 678 bskyProfile, err := bsky.GetBskyProfile(ident.DID.String()) 679 if err != nil { 680 + l.Error("failed to retrieve bsky profile for study session", "err", err) 681 htmx.HxError(w, http.StatusInternalServerError, "Failed to retrieve bsky profile, try again later.") 682 return 683 } 684 685 profile, err := db.GetProfile(h.Db, ident.DID.String()) 686 if err != nil { 687 + l.Error("failed to retrieve profile for study session", "err", err) 688 htmx.HxError(w, http.StatusInternalServerError, "Failed to retrieve profile, try again later.") 689 return 690 } ··· 707 } 708 709 func (h *Handler) HandleStudySessionPageCommentFeed(w http.ResponseWriter, r *http.Request) { 710 + l := h.Logger.With("handler", "HandleStudySessionPageCommentFeed") 711 + 712 user, _ := bsky.GetUserWithBskyProfile(h.Oauth, r) 713 714 didOrHandle := chi.URLParam(r, "user") ··· 732 } 733 page, err := strconv.ParseInt(pageStr, 10, 64) 734 if err != nil { 735 + l.Error("failed to parse page value", "err", err) 736 page = 1 737 } 738 if page == 0 { ··· 744 745 commentFeed, err := db.GetCommentsForSession(h.Db, studySessionUri.String(), pageSize+1, int(offset)) 746 if err != nil { 747 + l.Error("failed to get comment feed", "err", err) 748 htmx.HxError(w, http.StatusInternalServerError, "Failed to get comment feed, try again later.") 749 return 750 } ··· 780 781 populatedCommentFeed, err := h.BuildCommentFeed(finalFeed) 782 if err != nil { 783 + l.Error("failed to populate comment feed", "err", err) 784 htmx.HxError(w, http.StatusInternalServerError, "Failed to get comment feed, try again later.") 785 return 786 }

History

1 round 0 comments
sign up or login to add to the discussion
brookjeynes.dev submitted #0
1 commit
expand
feat(handlers/study-session): use slogger
expand 0 comments
pull request successfully merged