diff --git a/internal/router/frontend.go b/internal/router/frontend.go index abe949a..566811f 100644 --- a/internal/router/frontend.go +++ b/internal/router/frontend.go @@ -107,8 +107,55 @@ func registerFrontendRoutes(cfg *Config) { if err != nil { return c.HTML(http.StatusInternalServerError, "Error loading user") } + + libraryID := c.QueryParam("library_id") + if libraryID == "" { + userUUID, _ := uuid.Parse(user.ID) + libraries, err := cfg.Queries.GetUserVisibleLibraries(c.Request().Context(), uuidToPGType(userUUID)) + if err == nil && len(libraries) > 0 { + libUUID, _ := uuid.FromBytes(libraries[0].ID.Bytes[0:16]) + libraryID = libUUID.String() + } + } + + libUUID, _ := uuid.Parse(libraryID) + userUUID, _ := uuid.Parse(user.ID) + + prefs, _ := cfg.DashboardService.GetDashboardPreferences(c.Request().Context(), userUUID, libUUID) + + sections, err := cfg.DashboardService.GetDashboardSections( + c.Request().Context(), + userUUID, + libUUID, + int(prefs.ItemsPerSection.Int32), + prefs.CollectionOrder, + prefs.HiddenCollections, + ) + if err != nil { + return c.HTML(http.StatusInternalServerError, "Error loading dashboard") + } + + userUUID2, _ := uuid.Parse(user.ID) + libraries, err := cfg.Queries.GetUserVisibleLibraries(c.Request().Context(), uuidToPGType(userUUID2)) + if err != nil { + return c.HTML(http.StatusInternalServerError, "Error loading libraries") + } + + libData := make([]templates.LibraryData, len(libraries)) + for i, lib := range libraries { + libUUID, _ := uuid.FromBytes(lib.ID.Bytes[0:16]) + libData[i] = templates.LibraryData{ + ID: libUUID.String(), + Name: lib.Name, + Description: getText(lib.Description), + TypeName: lib.TypeName, + } + } + + sectionData := handlers.BuildSections(sections) + var buf bytes.Buffer - err = templates.Dashboard(user).Render(c.Request().Context(), &buf) + err = templates.Dashboard(user, sectionData, libData, libraryID).Render(c.Request().Context(), &buf) if err != nil { return err }