@page "/logout"
@inject IAuthenticationClientService AuthenticationClientService
@inject NavigationManager NavigationManager

<MudText>HELLO WORLD </MudText>

@code {
	protected override async Task OnAfterRenderAsync(bool firstRender)
	{
		// 作用：这个方法在组件渲染到 UI 后被调用。
		// 意义：这是执行 JS 互操作的安全时机，特别是在启用了预渲染的情况下，
		//      此时客户端的 JS 运行时已经可用（在 Blazor Server 中通过 SignalR，在 Blazor WASM 中是 WASM 环境本身）。
		// firstRender 参数：
		// 作用：指示本次调用是否是组件首次在客户端渲染完成。
		// 意义：注销逻辑只需要执行一次。使用 firstRender = true 可以避免在组件后续状态变化触发重新渲染时重复执行。

		if (firstRender)
		{
			Console.WriteLine("Signout: OnAfterRenderAsync - First Render. Executing Logout..."); // 可选日志

			try
			{
				// === 在这里安全地调用依赖 JS Interop 的注销方法 ===
				// AuthenticationClientService.Logout() 方法内部会调用 _localStorageService.RemoveItemAsync(),
				// 现在是调用它的安全时机。


				// 注销完成后，执行导航重定向
				NavigationManager.NavigateTo("/");
			}
			catch (Exception ex)
			{
				// === 处理 Logout 中可能发生的异常 ===
				// 例如，如果 Local Storage 操作失败，或者 Logout 方法内部有其他错误
				Console.WriteLine($"Error during logout in Signout component: {ex.Message}");
				// 你可能需要在这里显示错误信息给用户，或者决定是否依然重定向
				// 即使注销失败，通常也希望将用户导航到某个页面（如首页或错误页）
				// 例如：
				NavigationManager.NavigateTo("/"); // 即使失败也重定向到首页
															// 或者 NavigationManager.NavigateTo("/error"); // 重定向到错误页
			}
			Console.WriteLine("Signout: OnAfterRenderAsync - First Render. Logout execution finished."); // 可选日志
		}
	}


}