mirror of
https://github.com/grocy/grocy.git
synced 2025-08-16 10:44:37 +00:00
Use prefers-color-scheme for night mode by default (closes #1334)
This commit is contained in:
@@ -1,18 +1,9 @@
|
||||
$("#night-mode-enabled").on("change", function()
|
||||
|
||||
$("input.user-setting-control:radio[name=night-mode]").on("change", function()
|
||||
{
|
||||
var value = $(this).is(":checked");
|
||||
if (value)
|
||||
{
|
||||
// Force disable auto night mode when night mode is enabled
|
||||
$("#auto-night-mode-enabled").prop("checked", false);
|
||||
$("#auto-night-mode-enabled").trigger("change");
|
||||
|
||||
$("body").addClass("night-mode");
|
||||
}
|
||||
else
|
||||
{
|
||||
$("body").removeClass("night-mode");
|
||||
}
|
||||
Grocy.UserSettings.night_mode = $("input.user-setting-control:radio[name=night-mode]:checked").val();
|
||||
Grocy.FrontendHelpers.SaveUserSetting("night_mode", Grocy.UserSettings.night_mode, true);
|
||||
CheckNightMode();
|
||||
});
|
||||
|
||||
$("#auto-night-mode-enabled").on("change", function()
|
||||
@@ -21,7 +12,7 @@ $("#auto-night-mode-enabled").on("change", function()
|
||||
$("#auto-night-mode-time-range-from").prop("readonly", !value);
|
||||
$("#auto-night-mode-time-range-to").prop("readonly", !value);
|
||||
|
||||
if (!value && !BoolVal(Grocy.UserSettings.night_mode_enabled))
|
||||
if (!value && !BoolVal(Grocy.UserSettings.night_mode_enabled_internal))
|
||||
{
|
||||
$("body").removeClass("night-mode");
|
||||
}
|
||||
@@ -58,7 +49,7 @@ $("#auto-night-mode-time-range-goes-over-midgnight").on("change", function()
|
||||
|
||||
if (Grocy.UserId !== -1)
|
||||
{
|
||||
$("#night-mode-enabled").prop("checked", BoolVal(Grocy.UserSettings.night_mode_enabled));
|
||||
$("input.user-setting-control:radio[name=night-mode][value=" + Grocy.UserSettings.night_mode + "]").prop("checked", true);
|
||||
$("#auto-night-mode-enabled").prop("checked", BoolVal(Grocy.UserSettings.auto_night_mode_enabled));
|
||||
$("#auto-night-mode-time-range-goes-over-midgnight").prop("checked", BoolVal(Grocy.UserSettings.auto_night_mode_time_range_goes_over_midnight));
|
||||
$("#auto-night-mode-enabled").trigger("change");
|
||||
@@ -70,42 +61,66 @@ if (Grocy.UserId !== -1)
|
||||
|
||||
function CheckNightMode()
|
||||
{
|
||||
if (Grocy.UserId === -1 || !BoolVal(Grocy.UserSettings.auto_night_mode_enabled))
|
||||
if (Grocy.UserId === -1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var start = moment(Grocy.UserSettings.auto_night_mode_time_range_from, "HH:mm", true);
|
||||
var end = moment(Grocy.UserSettings.auto_night_mode_time_range_to, "HH:mm", true);
|
||||
var now = moment();
|
||||
var nightModeEnabledInternalBefore = Grocy.UserSettings.night_mode_enabled_internal;
|
||||
|
||||
if (!start.isValid() || !end.isValid)
|
||||
if (Grocy.UserSettings.night_mode != "follow-system" && BoolVal(Grocy.UserSettings.auto_night_mode_enabled))
|
||||
{
|
||||
return;
|
||||
}
|
||||
var start = moment(Grocy.UserSettings.auto_night_mode_time_range_from, "HH:mm", true);
|
||||
var end = moment(Grocy.UserSettings.auto_night_mode_time_range_to, "HH:mm", true);
|
||||
var now = moment();
|
||||
|
||||
if (BoolVal(Grocy.UserSettings.auto_night_mode_time_range_goes_over_midnight))
|
||||
{
|
||||
end.add(1, "day");
|
||||
}
|
||||
|
||||
if (now.isBetween(start, end)) // We're INSIDE of night mode time range
|
||||
{
|
||||
if (!$("body").hasClass("night-mode"))
|
||||
if (!start.isValid() || !end.isValid)
|
||||
{
|
||||
$("body").addClass("night-mode");
|
||||
$("#currently-inside-night-mode-range").prop("checked", true);
|
||||
$("#currently-inside-night-mode-range").trigger("change");
|
||||
return;
|
||||
}
|
||||
|
||||
if (BoolVal(Grocy.UserSettings.auto_night_mode_time_range_goes_over_midnight))
|
||||
{
|
||||
end.add(1, "day");
|
||||
}
|
||||
|
||||
if (now.isBetween(start, end)) // We're INSIDE of night mode time range
|
||||
{
|
||||
Grocy.UserSettings.night_mode_enabled_internal = true;
|
||||
}
|
||||
else // We're OUTSIDE of night mode time range
|
||||
{
|
||||
Grocy.UserSettings.night_mode_enabled_internal = false;
|
||||
}
|
||||
}
|
||||
else // We're OUTSIDE of night mode time range
|
||||
else
|
||||
{
|
||||
if ($("body").hasClass("night-mode"))
|
||||
if (Grocy.UserSettings.night_mode == "on")
|
||||
{
|
||||
$("body").removeClass("night-mode");
|
||||
$("#currently-inside-night-mode-range").prop("checked", false);
|
||||
$("#currently-inside-night-mode-range").trigger("change");
|
||||
Grocy.UserSettings.night_mode_enabled_internal = true;
|
||||
}
|
||||
else if (Grocy.UserSettings.night_mode == "off")
|
||||
{
|
||||
Grocy.UserSettings.night_mode_enabled_internal = false;
|
||||
}
|
||||
else if (Grocy.UserSettings.night_mode == "follow-system")
|
||||
{
|
||||
Grocy.UserSettings.night_mode_enabled_internal = window.matchMedia("(prefers-color-scheme: dark)").matches;
|
||||
}
|
||||
}
|
||||
|
||||
if (BoolVal(nightModeEnabledInternalBefore) != BoolVal(Grocy.UserSettings.night_mode_enabled_internal))
|
||||
{
|
||||
Grocy.FrontendHelpers.SaveUserSetting("night_mode_enabled_internal", BoolVal(Grocy.UserSettings.night_mode_enabled_internal), true);
|
||||
}
|
||||
|
||||
if (BoolVal(Grocy.UserSettings.night_mode_enabled_internal))
|
||||
{
|
||||
$("body").addClass("night-mode");
|
||||
}
|
||||
else
|
||||
{
|
||||
$("body").removeClass("night-mode");
|
||||
}
|
||||
}
|
||||
if (Grocy.UserId !== -1)
|
||||
|
Reference in New Issue
Block a user