2af0d8650b
Route normal play closes (end/switch/stop) and all shares through a same-origin HttpClient POST so privacy-hardened browsers stop blocking them; keep sendBeacon for the tab-unload edge. Rename the JS module off telemetry/beacon to session/ lifecycle so the retained fallback isn't name-matched. No new data or identifiers.
54 lines
2.1 KiB
Plaintext
54 lines
2.1 KiB
Plaintext
@using DeepDrftPublic.Client
|
|
@using DeepDrftPublic.Client.Common
|
|
@using DeepDrftPublic.Services
|
|
@using DeepDrftShared.Client.Components
|
|
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<base href="/" />
|
|
<DeepDrftFontLinks />
|
|
<link rel="stylesheet" href="@Assets["_content/MudBlazor/MudBlazor.min.css"]" />
|
|
<link rel="stylesheet" href="@Assets["DeepDrftPublic.styles.css"]"/>
|
|
<link rel="stylesheet" href="@Assets["_content/DeepDrftShared.Client/styles/deepdrft-tokens.css"]" />
|
|
<link rel="stylesheet" href="@Assets["_content/DeepDrftShared.Client/css/parallax.css"]" />
|
|
<link rel="stylesheet" href="@Assets["styles/deepdrft-styles.css"]" />
|
|
<ImportMap />
|
|
<link rel="icon" type="image/ico" href="deepdrft-logo-bw.ico" />
|
|
<HeadOutlet @rendermode="InteractiveAuto" />
|
|
</head>
|
|
|
|
<body>
|
|
<Routes @rendermode="InteractiveAuto" />
|
|
<script src="@Assets["_content/DeepDrftShared.Client/scripts/parallax-init.js"]"></script>
|
|
<script src="_framework/blazor.web.js"></script>
|
|
<script src=@Assets["_content/MudBlazor/MudBlazor.min.js"]></script>
|
|
<script type="module">
|
|
import('./js/settings/settings.js');
|
|
import('./js/audio/index.js');
|
|
import('./js/session/lifecycle.js');
|
|
import('./js/session/anonid.js');
|
|
</script>
|
|
</body>
|
|
</html>
|
|
|
|
@code {
|
|
|
|
[Inject] public required DarkModeService DarkModeService { get; set; }
|
|
[Inject] public required SeoEnvironment SeoEnvironment { get; set; }
|
|
[Inject] public required IWebHostEnvironment HostEnvironment { get; set; }
|
|
[Inject] public required SettingsService SettingsService { get; set; }
|
|
|
|
protected override void OnInitialized()
|
|
{
|
|
base.OnInitialized();
|
|
DarkModeService.CheckDarkMode();
|
|
// Seed the environment-gated robots bridge during prerender; [PersistentState] rounds it to WASM
|
|
// so both render passes resolve the same default robots (Production → index, else noindex).
|
|
SeoEnvironment.IsProduction = HostEnvironment.IsProduction();
|
|
SettingsService.CheckSettings();
|
|
}
|
|
|
|
}
|