export interface InterviewSteps {
    step_1?: number;
    step_2?: number;
    step_3?: number;
    step_4?: number;
    step_5?: number;
}

export const LS_SKIP_AUTH_STEP = 'onboarding.skipAuthStep';
export const LS_SKIP_DISPUTE_STEP = 'onboarding.skipDisputeStep';

/**
 * Safe localStorage getter (avoids SSR crash)
 */
const getSkipFlags = () => {
    if (typeof window === 'undefined') {
        return { skipAuth: false, skipDispute: false };
    }

    return {
        skipAuth: localStorage.getItem(LS_SKIP_AUTH_STEP) === 'true',
        skipDispute: localStorage.getItem(LS_SKIP_DISPUTE_STEP) === 'true',
    };
};

/**
 * Returns the active onboarding step (1 → 6)
 * 6 means onboarding fully complete.
 */
export const getActiveStepFromInterview = (steps?: InterviewSteps): number => {
    if (!steps) return 1;

    const { skipAuth, skipDispute } = getSkipFlags();

    if (steps.step_1 !== 1) return 1;
    if (steps.step_2 !== 2) return 2;
    if (steps.step_3 !== 3) return 3;

    // Step 4 (Authentication)
    if (!skipAuth && steps.step_4 !== 4) return 4;

    // Step 5 (Dispute)
    if (!skipDispute && steps.step_5 !== 5) return 5;

    return 6;
};

/**
 * Returns true if onboarding is fully completed
 */
export const isOnboardingCompleted = (steps?: InterviewSteps): boolean => {
    return getActiveStepFromInterview(steps) === 6;
};
export const clearOnboardingSkipFlags = () => {
    if (typeof window === "undefined") return;

    localStorage.removeItem(LS_SKIP_AUTH_STEP);
    localStorage.removeItem(LS_SKIP_DISPUTE_STEP);
};
