diff --git a/internal/handlers/devices.go b/internal/handlers/devices.go index f002ce0..fdbd074 100644 --- a/internal/handlers/devices.go +++ b/internal/handlers/devices.go @@ -489,6 +489,31 @@ func (h *DeviceHandler) RejectDevice(c echo.Context) error { }) } +func (h *DeviceHandler) GetPendingRegistrationsData(c echo.Context) ([]map[string]interface{}, error) { + userID := c.Get("user_id").(string) + userUUID, err := uuid.Parse(userID) + if err != nil { + return nil, err + } + + registrations := []map[string]interface{}{} + for _, reg := range pendingRegistrations { + if reg.UserID == userUUID || reg.UserID == (uuid.UUID{}) { + registrations = append(registrations, map[string]interface{}{ + "registration_id": reg.RegistrationID, + "device_name": reg.DeviceName, + "device_type": reg.DeviceType, + "device_identifier": reg.DeviceIdentifier, + "expires_at": reg.ExpiresAt, + "created_at": reg.CreatedAt, + "is_approved": reg.UserID != (uuid.UUID{}), + }) + } + } + + return registrations, nil +} + func (h *DeviceHandler) ListPendingRegistrations(c echo.Context) error { userID := c.Get("user_id").(string) userUUID, err := uuid.Parse(userID) diff --git a/internal/handlers/queue.go b/internal/handlers/queue.go index 2343ac5..a0cf6e2 100644 --- a/internal/handlers/queue.go +++ b/internal/handlers/queue.go @@ -146,11 +146,11 @@ func (h *QueueHandler) ListDeviceQueueItems(c echo.Context) error { }) } -func (h *QueueHandler) ListAllQueueItems(c echo.Context) error { +func (h *QueueHandler) GetQueueData(c echo.Context) ([]QueueItemResponse, error) { user := MustGetAuthenticatedUser(c) if user.Role != "admin" { - return echo.NewHTTPError(http.StatusForbidden, "admin access required") + return nil, echo.NewHTTPError(http.StatusForbidden, "admin access required") } limit := 50 @@ -173,21 +173,15 @@ func (h *QueueHandler) ListAllQueueItems(c echo.Context) error { }) if err != nil { - return echo.NewHTTPError(http.StatusInternalServerError, "failed to list queue items") + return nil, err } response := make([]QueueItemResponse, 0, len(items)) for _, item := range items { - mediaTitle := textPtrToString(item.MediaTitle) - response = append(response, QueueItemResponse{ ID: uuid.UUID(item.ID.Bytes).String(), DeviceID: uuid.UUID(item.DeviceID.Bytes).String(), - DeviceName: item.DeviceName, - DeviceType: item.DeviceType, MediaItemID: uuidPtrToString(item.MediaItemID), - MediaTitle: mediaTitle, - UserEmail: item.UserEmail, SyncType: item.SyncType, Priority: item.Priority.Int32, Attempts: item.Attempts.Int32, @@ -199,11 +193,18 @@ func (h *QueueHandler) ListAllQueueItems(c echo.Context) error { }) } + return response, nil +} + +func (h *QueueHandler) ListAllQueueItems(c echo.Context) error { + response, err := h.GetQueueData(c) + if err != nil { + return err + } + return c.JSON(http.StatusOK, map[string]interface{}{ - "items": response, - "count": len(response), - "limit": limit, - "offset": offset, + "items": response, + "count": len(response), }) } diff --git a/templates/types.go b/templates/types.go index d08428a..b079c9e 100644 --- a/templates/types.go +++ b/templates/types.go @@ -11,3 +11,65 @@ type PageData struct { User User CurrentPage string } + +type CollectionData struct { + ID string + Name string + Description string + Color string + Icon string +} + +type CollectionDetailData struct { + ID string + Name string + Description string + Color string + Icon string +} + +type BookData struct { + MediaItemID string + Title string + Author string + CoverImagePath string +} + +type DeviceData struct { + ID string + DeviceName string + DeviceType string + SyncEnabled bool + AutoSync bool + SyncFrequency int32 + LastSync string + LastSeen string +} + +type PendingRegistrationData struct { + RegistrationID string + DeviceName string + DeviceType string + ExpiresAt string +} + +type ConflictData struct { + ID string + MediaItemID string + MediaItemTitle string + ConflictType string + ResolutionStatus string + CreatedAt string +} + +type QueueItemData struct { + ID string + DeviceID string + DeviceName string + DeviceType string + SyncType string + Status string + Priority int32 + Attempts int32 + CreatedAt string +}