Skip to content

Commit

Permalink
🐛 Fix dark mode bug
Browse files Browse the repository at this point in the history
  • Loading branch information
TDroogers committed Sep 25, 2024
1 parent 31f1679 commit 140256f
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 17 deletions.
13 changes: 6 additions & 7 deletions src/Client/Models/DrogeCodeGlobal.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,7 @@ public class DrogeCodeGlobal : RefreshModel
public event Func<bool, Task>? DarkLightChangedAsync;
public event Func<Task>? VisibilityChangeAsync;

private bool _isDarkMode;
public bool DarkMode
{
get { return _isDarkMode; }
}
public bool DarkMode { get; set; }

public async Task CallNewTrainingAddedAsync(EditTraining arg)
{
Expand All @@ -29,8 +25,11 @@ public async Task CallTrainingDeletedAsync(Guid id)
}
public async Task CallDarkLightChangedAsync(bool arg)
{
if (_isDarkMode == arg) return;
_isDarkMode = arg;
if (!DarkMode.Equals(arg))
{
DebugHelper.WriteLine("DarkMode and arg should be equal");
DarkMode = arg;
}
var task = DarkLightChangedAsync?.Invoke(arg);
if (task != null)
await task;
Expand Down
23 changes: 13 additions & 10 deletions src/Client/Shared/Layout/Theming.razor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,12 @@ public sealed partial class Theming : IDisposable
[Parameter]
public bool IsDarkMode
{
get { return _isDarkMode; }
get => _isDarkMode;
set
{
if (_isDarkMode == value) return;
_isDarkMode = value;
Global.DarkMode = value;
if (IsDarkModeChanged.HasDelegate)
{
IsDarkModeChanged.InvokeAsync(value);
Expand All @@ -45,7 +46,7 @@ public bool IsDarkMode
private bool _isDarkMode;
private bool _watchStarted;
private bool _isTaco;
private int counter = 0;
private int _counter = 0;

protected override async Task OnAfterRenderAsync(bool firstRender)
{
Expand All @@ -66,21 +67,23 @@ protected override async Task OnAfterRenderAsync(bool firstRender)
case DarkLightMode.Dark:
IsDarkMode = true;
break;
default:
throw new ArgumentOutOfRangeException();
}

await Global.CallDarkLightChangedAsync(IsDarkMode);
await Global.CallRequestRefreshAsync();
}
}

private DarkLightMode DarkModeToggle
{
get { return _darkModeToggle; }
get => _darkModeToggle;
set
{
if (_darkModeToggle == value) return;
_darkModeToggle = value;
counter++;
_counter++;
RefreshMe();
if (_localUserSettings == null)
{
Expand Down Expand Up @@ -131,19 +134,19 @@ public async Task VisibilityChange(string newState, bool isIos)
{
if (string.Compare(newState, "visible", StringComparison.InvariantCulture) != 0)
return;
if (DarkModeToggle != DarkLightMode.System) return;
await Task.Delay(50);
await OnSystemPreferenceChanged(await MudThemeProvider.GetSystemPreference()); // always check dark/light on reopen
if (_lastVisibilityChange.AddMinutes(3).CompareTo(DateTime.UtcNow) > 0)
return;
await Task.Delay(50);
_lastVisibilityChange = DateTime.UtcNow;
if (isIos && await CustomerSettingsClient.GetIosDarkLightCheckAsync(_cls.Token))
if (false && isIos && await CustomerSettingsClient.GetIosDarkLightCheckAsync(_cls.Token) && DarkModeToggle == DarkLightMode.System)
{
//https://forums.developer.apple.com/forums/thread/739154
// Disable, se if it works without on the latest ios version.
// https://forums.developer.apple.com/forums/thread/739154
await JsRuntime.InvokeVoidAsync("ColorschemeFix");
}

await Global.CallVisibilityChangeAsync();
await OnSystemPreferenceChanged(await MudThemeProvider.GetSystemPreference());
}

public async Task OnSystemPreferenceChanged(bool newValue)
Expand Down

0 comments on commit 140256f

Please sign in to comment.