@inject ILocalStorageService LocalStorageService
@inject IJSRuntime Js

<MudContainer MaxWidth="MaxWidth.Small" Class="admin-login-page d-flex align-center justify-center" Style="min-height: 100vh;">
    <MudPaper Class="pa-8" Elevation="3" Style="width: 100%; max-width: 400px;">
        <MudText Typo="Typo.h4" Class="mb-6 text-center">관리자 로그인</MudText>

        <form id="admin-login-form">
            <input class="mud-input mud-input-outlined mud-input-root mud-input-root-adorned-start mb-4"
                   style="width: 100%; min-height: 56px; padding: 16px 14px;"
                   placeholder="사용자명"
                   autocomplete="username"
                   name="username"
                   value="@rememberedUsername" />

            <input type="password"
                   class="mud-input mud-input-outlined mud-input-root mud-input-root-adorned-start mb-4"
                   style="width: 100%; min-height: 56px; padding: 16px 14px;"
                   placeholder="비밀번호"
                   autocomplete="current-password"
                   name="password" />

            <div class="mb-4">
                <input class="mud-checkbox" type="checkbox" name="rememberMe" />
                <label style="margin-left: 8px; cursor: pointer;">아이디 저장</label>
            </div>

            <div class="mud-alert mud-alert-filled-error mb-4 login-error-message" style="display:none;">로그인 중 오류가 발생했습니다.</div>

            <button type="submit"
                    id="admin-login-submit"
                    disabled="@(!isReady)"
                    class="mud-button-root mud-button mud-button-filled mud-button-filled-primary mud-elevation-0"
                    style="width: 100%; min-height: 52px; border: 0; border-radius: 4px; color: white;">
                <span>@(isReady ? "로그인" : "준비 중...")</span>
            </button>
        </form>
    </MudPaper>
</MudContainer>

@code {
    private string rememberedUsername = "";
    private bool isRememberChecked = false;
    private bool isReady;
    private const string RememberedUsernameKey = "admin-remembered-username";
    private const string RememberedCheckboxKey = "admin-remember-checkbox";

    protected override async Task OnInitializedAsync()
    {
        try
        {
            rememberedUsername = await LocalStorageService.GetItemAsStringAsync(RememberedUsernameKey) ?? "";
            var checkboxValue = await LocalStorageService.GetItemAsStringAsync(RememberedCheckboxKey) ?? "false";
            isRememberChecked = checkboxValue == "true" && !string.IsNullOrEmpty(rememberedUsername);
        }
        catch
        {
            rememberedUsername = "";
            isRememberChecked = false;
        }
    }

    protected override async Task OnAfterRenderAsync(bool firstRender)
    {
        if (firstRender)
        {
            try
            {
                await Js.InvokeVoidAsync("taxbaikAdminSession.syncRouteClass");
                await Js.InvokeVoidAsync("taxbaikAdminSession.bindLoginForm");
            }
            catch
            {
                // Login UI must remain visible even if JS binding fails.
            }
            finally
            {
                isReady = true;
                StateHasChanged();
            }
        }
    }
}
