Refactor: Eliminate duplicate types - Use handler types directly
- Deleted templates.CollectionDetailData - using templates.CollectionData everywhere - Deleted templates.BookData - using handlers.BookInfo everywhere - Deleted templates.DeviceData - using handlers.DeviceInfo everywhere - Deleted templates.ProgressItemData - using handlers.ProgressWithMedia everywhere - Deleted templates.convertDevices() helper - Use handlers types directly in templates - Enhanced handlers.ProgressWithMedia with device metadata fields - Added handlers.getDeviceIcon() helper - Updated all templates to import handlers package - Cleaned up unused imports This aligns codebase with templ's design philosophy (use Go types directly, no parallel type system)
This commit is contained in:
@@ -14,6 +14,20 @@ import (
|
||||
"github.com/labstack/echo/v4"
|
||||
)
|
||||
|
||||
// getDeviceIcon returns an emoji icon for device type
|
||||
func getDeviceIcon(deviceType string) string {
|
||||
switch deviceType {
|
||||
case "kobo":
|
||||
return "📚"
|
||||
case "koreader":
|
||||
return "📖"
|
||||
case "kindle":
|
||||
return "📱"
|
||||
default:
|
||||
return "📚"
|
||||
}
|
||||
}
|
||||
|
||||
// GetUniversalProgress retrieves progress with all location references
|
||||
func (h *Handler) GetUniversalProgress(c echo.Context) error {
|
||||
user := MustGetAuthenticatedUser(c)
|
||||
@@ -229,16 +243,22 @@ func (h *Handler) GetProgressHistory(c echo.Context) error {
|
||||
}
|
||||
|
||||
type ProgressWithMedia struct {
|
||||
MediaItemID uuid.UUID
|
||||
Title string
|
||||
Author string
|
||||
CoverImagePath string
|
||||
Percentage float64
|
||||
CurrentPage int32
|
||||
TotalPages int32
|
||||
LastReadAt time.Time
|
||||
Epubcfi string
|
||||
LastSyncDevice string
|
||||
MediaItemID uuid.UUID `json:"media_item_id"`
|
||||
Title string `json:"title"`
|
||||
Author string `json:"author"`
|
||||
CoverImagePath string `json:"cover_image_path"`
|
||||
Percentage float64 `json:"percentage"`
|
||||
CurrentPage int32 `json:"current_page"`
|
||||
TotalPages int32 `json:"total_pages"`
|
||||
LastReadAt time.Time `json:"last_read_at"`
|
||||
Epubcfi string `json:"epubcfi"`
|
||||
LastSyncDevice string `json:"last_sync_device"`
|
||||
DeviceName string `json:"device_name,omitempty"`
|
||||
DeviceType string `json:"device_type,omitempty"`
|
||||
DeviceIcon string `json:"device_icon,omitempty"`
|
||||
ProgressPercentage float64 `json:"-"`
|
||||
EpubCFI string `json:"-"`
|
||||
LastUpdated string `json:"-"`
|
||||
}
|
||||
|
||||
// GetAllProgress retrieves all progress for a user with sync source info
|
||||
@@ -283,17 +303,26 @@ func (h *Handler) GetAllProgress(c echo.Context) error {
|
||||
deviceName = progress.LastSyncDevice.String
|
||||
}
|
||||
|
||||
lastUpdated := ""
|
||||
if progress.LastReadAt.Valid {
|
||||
lastUpdated = progress.LastReadAt.Time.Format("2006-01-02 15:04")
|
||||
}
|
||||
|
||||
progressList = append(progressList, ProgressWithMedia{
|
||||
MediaItemID: progress.MediaItemID.Bytes,
|
||||
Title: mediaItem.Title,
|
||||
Author: author,
|
||||
CoverImagePath: coverPath,
|
||||
Percentage: progress.Percentage.Float64,
|
||||
CurrentPage: progress.CurrentPage.Int32,
|
||||
TotalPages: progress.TotalPages.Int32,
|
||||
LastReadAt: progress.LastReadAt.Time,
|
||||
Epubcfi: epubcfi,
|
||||
LastSyncDevice: deviceName,
|
||||
MediaItemID: progress.MediaItemID.Bytes,
|
||||
Title: mediaItem.Title,
|
||||
Author: author,
|
||||
CoverImagePath: coverPath,
|
||||
Percentage: progress.Percentage.Float64,
|
||||
CurrentPage: progress.CurrentPage.Int32,
|
||||
TotalPages: progress.TotalPages.Int32,
|
||||
LastReadAt: progress.LastReadAt.Time,
|
||||
Epubcfi: epubcfi,
|
||||
LastSyncDevice: deviceName,
|
||||
ProgressPercentage: progress.Percentage.Float64,
|
||||
EpubCFI: epubcfi,
|
||||
LastUpdated: lastUpdated,
|
||||
DeviceIcon: getDeviceIcon(deviceName),
|
||||
})
|
||||
}
|
||||
|
||||
@@ -349,7 +378,7 @@ func (h *Handler) GetAllProgressData(c echo.Context) ([]ProgressWithMedia, error
|
||||
MediaItemID: progress.MediaItemID.Bytes,
|
||||
Title: mediaItem.Title,
|
||||
Author: author,
|
||||
CoverImagePath: coverPath,
|
||||
CoverImagePath: coverPath,
|
||||
Percentage: progress.Percentage.Float64,
|
||||
CurrentPage: progress.CurrentPage.Int32,
|
||||
TotalPages: progress.TotalPages.Int32,
|
||||
@@ -361,4 +390,3 @@ func (h *Handler) GetAllProgressData(c echo.Context) ([]ProgressWithMedia, error
|
||||
|
||||
return progressList, nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user