diff --git a/Makefile b/Makefile index 66ed23d..5bc3984 100644 --- a/Makefile +++ b/Makefile @@ -9,7 +9,6 @@ export GOOSE_MIGRATION_DIR=db/migrations export REDMAGE_WEB_DEPENDENCIES_HTMX_VERSION=$(shell echo "$${REDMAGE_WEB_DEPENDENCIES_HTMX_VERSION:-1.9.12}") export REDMAGE_WEB_DEPENDENCIES_DAYJS_VERSION=$(shell echo "$${REDMAGE_WEB_DEPENDENCIES_DAYJS_VERSION:-1.11.10}") -export REDMAGE_WEB_DEPENDENCIES_THEMECHANGE_VERSION=$(shell echo "$${REDMAGE_WEB_DEPENDENCIES_THEMECHANGE_VERSION:-2.0.2}") start: dev-dependencies @tailwindcss -i views/style.css -o public/style.css --watch & @@ -63,11 +62,6 @@ build-dependencies: echo "Dayjs Timezone ${REDMAGE_WEB_DEPENDENCIES_DAYJS_VERSION} plugin not found, installing it" curl -o public/dayjs-timezone-${REDMAGE_WEB_DEPENDENCIES_DAYJS_VERSION}.min.js https://cdnjs.cloudflare.com/ajax/libs/dayjs/${REDMAGE_WEB_DEPENDENCIES_DAYJS_VERSION}/plugin/timezone.min.js fi - @if [ ! -f "public/theme-change-${REDMAGE_WEB_DEPENDENCIES_THEMECHANGE_VERSION}.min.js" ]; then - mkdir -p public - echo "Theme change ${REDMAGE_WEB_DEPENDENCIES_THEMECHANGE_VERSION} not found, installing it" - curl -o public/theme-change-${REDMAGE_WEB_DEPENDENCIES_THEMECHANGE_VERSION}.min.js https://cdn.jsdelivr.net/npm/theme-change@${REDMAGE_WEB_DEPENDENCIES_THEMECHANGE_VERSION}/index.js - fi build: build-dependencies prepare go build -o redmage diff --git a/api/api.go b/api/api.go index f26e54f..1f20d6d 100644 --- a/api/api.go +++ b/api/api.go @@ -31,8 +31,7 @@ type API struct { config *config.Config - imageSemaphore chan struct{} - subredditSemaphore chan struct{} + imageSemaphore chan struct{} reddit *reddit.Reddit @@ -56,17 +55,16 @@ func New(deps Dependencies) *API { panic(err) } api := &API{ - db: bob.New(deps.DB), - sqldb: deps.DB, - scheduler: cron.New(), - scheduleMap: make(map[cron.EntryID]*models.Subreddit, 8), - downloadBroadcast: broadcast.NewRelay[bmessage.ImageDownloadMessage](), - config: deps.Config, - imageSemaphore: make(chan struct{}, deps.Config.Int("download.concurrency.images")), - subredditSemaphore: make(chan struct{}, deps.Config.Int("download.concurrency.subreddits")), - reddit: deps.Reddit, - subscriber: deps.Subscriber, - publisher: deps.Publisher, + db: bob.New(deps.DB), + sqldb: deps.DB, + scheduler: cron.New(), + scheduleMap: make(map[cron.EntryID]*models.Subreddit, 8), + downloadBroadcast: broadcast.NewRelay[bmessage.ImageDownloadMessage](), + config: deps.Config, + imageSemaphore: make(chan struct{}, deps.Config.Int("download.concurrency.images")), + reddit: deps.Reddit, + subscriber: deps.Subscriber, + publisher: deps.Publisher, } if err := api.StartScheduler(context.Background()); err != nil { diff --git a/config/default.go b/config/default.go index 7aab677..7f0a7d8 100644 --- a/config/default.go +++ b/config/default.go @@ -56,9 +56,8 @@ var DefaultConfig = map[string]any{ "telemetry.trace.ratio": 1, - "web.dependencies.htmx.version": "1.9.12", - "web.dependencies.dayjs.version": "1.11.10", - "web.dependencies.themechange.version": "2.0.2", + "web.dependencies.htmx.version": "1.9.12", + "web.dependencies.dayjs.version": "1.11.10", "runtime.version": "0.0.1", "runtime.environment": "development", diff --git a/views/components/doctype.templ b/views/components/doctype.templ index 825eed4..d625be9 100644 --- a/views/components/doctype.templ +++ b/views/components/doctype.templ @@ -2,7 +2,7 @@ package components templ Doctype() { - + { children... } } diff --git a/views/components/head.templ b/views/components/head.templ index 9e627cf..f42bd72 100644 --- a/views/components/head.templ +++ b/views/components/head.templ @@ -4,13 +4,15 @@ import "github.com/tigorlazuardi/redmage/views" templ Head(vc *views.Context, extras ...templ.Component) { + @Dayjs(vc) @HTMX(vc) - @ThemeChange(vc) if vc.Config.Bool("http.hotreload") { } diff --git a/views/components/navigation.templ b/views/components/navigation.templ index f346840..94c45d0 100644 --- a/views/components/navigation.templ +++ b/views/components/navigation.templ @@ -86,7 +86,9 @@ templ Navbar(c *views.Context) { templ navList(c *views.Context) { @createLink(c, "/", "Home", true) @createLink(c, "/config", "Config", false) + @createLink(c, "/devices", "Devices", true) @createLink(c, "/subreddits", "Subreddits", true) + @createLink(c, "/schedules", "Schedules", true)
@createLink(c, "/about", "About", true) @@ -95,7 +97,7 @@ templ navList(c *views.Context) { templ createLink(c *views.Context, path string, text string, boost bool) { -} diff --git a/views/configview/configview.templ b/views/configview/configview.templ index b8589d0..9d7cbdc 100644 --- a/views/configview/configview.templ +++ b/views/configview/configview.templ @@ -17,26 +17,44 @@ templ ConfigContent(c *views.Context) { @components.Container() {

Config

-
-

Theme

- @SelectThemeInput() -
+

Theme

+ @SelectThemeInput() } } templ SelectThemeInput() { - +
+ @themeRadio("default", "System (Default)") + @themeRadio("light", "Light") + @themeRadio("dark", "Dark") + @themeRadio("aqua", "Aqua") + @themeRadio("bumblebee", "Bumblebee") + @themeRadio("corporate", "Corporate") + @themeRadio("cupcake", "Cupcake") + @themeRadio("cyberpunk", "Cyberpunk") + @themeRadio("emerald", "Emerald") + @themeRadio("halloween", "Halloween") + @themeRadio("retro", "Retro") + @themeRadio("synthwave", "Synthwave") + @themeRadio("valentine", "Valentine") +
+ +} + +templ themeRadio(value, display string) { +
+ +
} diff --git a/views/homeview/homeview.templ b/views/homeview/homeview.templ index 7e815c4..36df3f1 100644 --- a/views/homeview/homeview.templ +++ b/views/homeview/homeview.templ @@ -28,22 +28,9 @@ templ HomeContent(c *views.Context, data Data) { @components.ErrorToast(data.Error) } else {
-
-

- Recently Added -

- @recentRangeInput(c) - @nsfwToggle(c, data) -
+

+ Recently Added +

if data.TotalImages == 0 {

There are no recently added images in the current time range.

@@ -52,6 +39,20 @@ templ HomeContent(c *views.Context, data Data) { { strconv.FormatInt(data.TotalImages, 10) } Images } +
+ @recentRangeInput(c) + @nsfwToggle(c, data) +
for _, recently := range data.RecentlyAddedImages {

{ recently.Device.Name }

@@ -82,19 +83,25 @@ templ HomeContent(c *views.Context, data Data) { } templ recentRangeInput(c *views.Context) { - +
+ +
} templ recentlyRangeOption(c *views.Context, value, text string) { @@ -108,22 +115,27 @@ templ recentlyRangeOption(c *views.Context, value, text string) { } templ nsfwToggle(c *views.Context, data Data) { - +
+ +
} templ RecentlyAddedImageList(images models.ImageSlice, opts components.ImageCardOption) { -
+
for _, data := range images { @components.ImageCard(data, 0) }