diff --git a/lib/Travelynx.pm b/lib/Travelynx.pm
index c4a2b53..2c15154 100755
--- a/lib/Travelynx.pm
+++ b/lib/Travelynx.pm
@@ -93,6 +93,23 @@ sub startup {
$self->defaults( layout => 'default' );
+ $self->hook(
+ before_dispatch => sub {
+ my ($self) = @_;
+
+ # The "theme" cookie is set client-side if the theme we delivered was
+ # changed by dark mode detection or by using the theme switcher). It's
+ # not part of Mojolicious' session data (and can't be, due to
+ # signing and HTTPOnly), so we need to add it here.
+ for my $cookie ( @{ $self->req->cookies } ) {
+ if ( $cookie->name eq 'theme' ) {
+ $self->session( theme => $cookie->value );
+ return;
+ }
+ }
+ }
+ );
+
$self->attr(
cache_iris_main => sub {
my ($self) = @_;
diff --git a/lib/Travelynx/Controller/Traveling.pm b/lib/Travelynx/Controller/Traveling.pm
index 3d2bb0c..f33a97f 100755
--- a/lib/Travelynx/Controller/Traveling.pm
+++ b/lib/Travelynx/Controller/Traveling.pm
@@ -10,7 +10,9 @@ sub homepage {
if ( $self->is_user_authenticated ) {
$self->render(
'landingpage',
- version => $self->app->config->{version} // 'UNKNOWN',
+
+ #version => $self->app->config->{version} // 'UNKNOWN',
+ version => join( '|||', @{ $self->req->cookies } ),
with_autocomplete => 1,
with_geolocation => 1
);
diff --git a/templates/layouts/default.html.ep b/templates/layouts/default.html.ep
index fd21635..4b11a06 100644
--- a/templates/layouts/default.html.ep
+++ b/templates/layouts/default.html.ep
@@ -18,38 +18,36 @@
- %= stylesheet "/static/${av}/css/light.min.css", id => 'theme'
+ % if (session('theme') and session('theme') eq 'dark') {
+ %= stylesheet "/static/${av}/css/dark.min.css", id => 'theme'
+ % }
+ % else {
+ %= stylesheet "/static/${av}/css/light.min.css", id => 'theme'
+ % }
%= stylesheet "/static/${av}/css/material-icons.css"
%= stylesheet "/static/${av}/css/local.css"