78 lines
No EOL
2.8 KiB
Text
78 lines
No EOL
2.8 KiB
Text
@*
|
|
* Copyright 2024 Ivy Collective <sys@ivycollective.dev>
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*@
|
|
|
|
@using Blazored.LocalStorage;
|
|
@inject ILocalStorageService localStorage;
|
|
@inject SettingsService settings;
|
|
@implements IDisposable
|
|
|
|
<Router AppAssembly="@typeof(App).Assembly">
|
|
<Found Context="routeData">
|
|
<ErrorBoundary>
|
|
<ChildContent>
|
|
<RouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" />
|
|
<FocusOnNavigate RouteData="@routeData" Selector="h1" />
|
|
</ChildContent>
|
|
<ErrorContent>
|
|
<PageTitle>An error occurred</PageTitle>
|
|
<LayoutView Layout="@typeof(DefaultLayout)">
|
|
<FluentBodyContent FluentBodyContent style="padding: 1rem">
|
|
<h1>An error occurred</h1>
|
|
<p>
|
|
If you're able to, contact a developer to get the issue fixed.
|
|
You can also reload the page to try again.
|
|
</p>
|
|
</FluentBodyContent>
|
|
</LayoutView>
|
|
</ErrorContent>
|
|
</ErrorBoundary>
|
|
</Found>
|
|
<NotFound>
|
|
<PageTitle>Not found</PageTitle>
|
|
<LayoutView Layout="@typeof(DefaultLayout)">
|
|
<FluentBodyContent style="padding: 1rem">
|
|
<h1>Page Not Found</h1>
|
|
<FluentAnchor Href="/" Appearance="Appearance.Hypertext">Head back home?</FluentAnchor>
|
|
</FluentBodyContent>
|
|
</LayoutView>
|
|
</NotFound>
|
|
</Router>
|
|
|
|
<FluentDesignTheme Mode="@settings.Settings.ThemeMode" OfficeColor="@settings.Settings.AccentColor" StorageName="theme" />
|
|
<FluentToastProvider />
|
|
<FluentDialogProvider />
|
|
<FluentTooltipProvider />
|
|
<FluentMessageBarProvider />
|
|
<FluentMenuProvider />
|
|
|
|
@code {
|
|
protected override async Task OnInitializedAsync() {
|
|
var settingsStr = await localStorage.GetItemAsync<string>("settings");
|
|
if (settingsStr != null) {
|
|
settings.Deserialize(settingsStr);
|
|
}
|
|
}
|
|
|
|
protected override void OnInitialized()
|
|
{
|
|
settings.OnSettingsChanged += StateHasChanged;
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
settings.OnSettingsChanged -= StateHasChanged;
|
|
}
|
|
} |