diff --git a/internal/handlers/devices.go b/internal/handlers/devices.go index fdbd074..789fcfb 100644 --- a/internal/handlers/devices.go +++ b/internal/handlers/devices.go @@ -272,6 +272,46 @@ func (h *DeviceHandler) ListDevices(c echo.Context) error { }) } +func (h *DeviceHandler) GetDevicesData(c echo.Context) ([]DeviceInfo, error) { + userID := c.Get("user_id").(string) + userUUID, err := uuid.Parse(userID) + if err != nil { + return nil, err + } + + pgUserID := pgtype.UUID{Bytes: [16]byte(userUUID), Valid: true} + + devices, err := h.db.ListDevicesByUser(c.Request().Context(), pgUserID) + if err != nil { + return nil, err + } + + deviceList := make([]DeviceInfo, 0, len(devices)) + for _, device := range devices { + syncEnabled := device.SyncEnabled.Bool && device.SyncEnabled.Valid + autoSync := device.AutoSync.Bool && device.AutoSync.Valid + syncFreq := int32(0) + if device.SyncFrequencyMinutes.Valid { + syncFreq = device.SyncFrequencyMinutes.Int32 + } + + deviceList = append(deviceList, DeviceInfo{ + ID: device.ID.Bytes, + DeviceName: device.DeviceName, + DeviceType: device.DeviceType, + LastSync: (*time.Time)(&device.LastSync.Time), + LastSeen: (*time.Time)(&device.LastSeen.Time), + SyncEnabled: syncEnabled, + AutoSync: autoSync, + SyncFrequency: syncFreq, + CreatedAt: device.CreatedAt.Time, + DeviceMetadata: device.DeviceMetadata, + }) + } + + return deviceList, nil +} + func (h *DeviceHandler) GetDevice(c echo.Context) error { userID := c.Get("user_id") if userID == nil { diff --git a/templates/devices.templ b/templates/devices.templ index b65a767..10ffa34 100644 --- a/templates/devices.templ +++ b/templates/devices.templ @@ -1,6 +1,6 @@ package templates -templ Devices(user User) { +templ Devices(user User, devices []DeviceData, pendingRegistrations []PendingRegistrationData) { @@ -31,31 +31,101 @@ templ Devices(user User) {
- -
-
-

Loading devices...

-
- - + + + if len(pendingRegistrations) > 0 { +
+

Pending Device Registrations

+
+ for _, reg := range pendingRegistrations { +
+
+

{ reg.DeviceName }

+

+ { reg.DeviceType } - Expires in { reg.ExpiresAt } +

+
+
+ + +
+
+ } +
- - - -
- - - + }