handleIndex handles the "GET /" route. It displays a dashboard with the user's dials, recently updated membership values, & a chart.
(w http.ResponseWriter, r *http.Request)
| 421 | // handleIndex handles the "GET /" route. It displays a dashboard with the |
| 422 | // user's dials, recently updated membership values, & a chart. |
| 423 | func (s *Server) handleIndex(w http.ResponseWriter, r *http.Request) { |
| 424 | // If user is not logged in & application is built with a home page, |
| 425 | // return the home page. Otherwise redirect to login. |
| 426 | if wtf.UserIDFromContext(r.Context()) == 0 { |
| 427 | if buf := assets.IndexHTML; len(buf) != 0 { |
| 428 | w.Write(buf) |
| 429 | return |
| 430 | } |
| 431 | |
| 432 | http.Redirect(w, r, "/login", http.StatusFound) |
| 433 | return |
| 434 | } |
| 435 | |
| 436 | var err error |
| 437 | var tmpl html.IndexTemplate |
| 438 | |
| 439 | // Fetch all dials the user is a member of. |
| 440 | // If user is not a member of any dials, redirect to dial list which |
| 441 | // includes a description of how to start. |
| 442 | if tmpl.Dials, _, err = s.DialService.FindDials(r.Context(), wtf.DialFilter{}); err != nil { |
| 443 | Error(w, r, err) |
| 444 | return |
| 445 | } else if len(tmpl.Dials) == 0 { |
| 446 | http.Redirect(w, r, "/dials", http.StatusFound) |
| 447 | return |
| 448 | } |
| 449 | |
| 450 | // Fetch recently updated members. |
| 451 | if tmpl.Memberships, _, err = s.DialMembershipService.FindDialMemberships(r.Context(), wtf.DialMembershipFilter{ |
| 452 | Limit: 20, |
| 453 | SortBy: "updated_at_desc", |
| 454 | }); err != nil { |
| 455 | Error(w, r, err) |
| 456 | return |
| 457 | } |
| 458 | |
| 459 | // Fetch historical average WTF values. |
| 460 | interval := time.Minute |
| 461 | end := time.Now().Truncate(interval).Add(interval) |
| 462 | start := end.Add(-1 * time.Hour) |
| 463 | if tmpl.AverageDialValueReport, err = s.DialService.AverageDialValueReport(r.Context(), start, end, interval); err != nil { |
| 464 | Error(w, r, err) |
| 465 | return |
| 466 | } |
| 467 | |
| 468 | // Render the template to the response. |
| 469 | tmpl.Render(r.Context(), w) |
| 470 | } |
| 471 | |
| 472 | // handleSettings handles the "GET /settings" route. |
| 473 | func (s *Server) handleSettings(w http.ResponseWriter, r *http.Request) { |
nothing calls this directly
no test coverage detected