"use client";

import { useCallback, useEffect, useState } from "react";

// 「专注写作」偏好的持久化键（对齐既有 `ww.` 前缀约定）。
export const FOCUS_MODE_KEY = "ww.workbench_focus_mode";

export interface FocusMode {
  // true=专注模式：隐藏左侧图标导航 + 目录 TOC，让宽给正文；false=常规四栏。
  focus: boolean;
  toggle: () => void;
}

function persist(focus: boolean): void {
  if (typeof window === "undefined") return;
  try {
    window.localStorage.setItem(FOCUS_MODE_KEY, focus ? "1" : "0");
  } catch {
    // 隐私模式/配额异常忽略：专注模式是纯 UI 偏好，写盘失败不影响写作功能。
  }
}

// 记住「专注写作」开关（P3-4）：SSR 首帧恒关（避免 hydration 不一致），
// 挂载后再从 localStorage 恢复；toggle 即时写回。仅桌面（≥xl）改变栅格，窄屏本就单列不受影响。
export function useFocusMode(): FocusMode {
  const [focus, setFocus] = useState(false);

  useEffect(() => {
    if (typeof window === "undefined") return;
    try {
      setFocus(window.localStorage.getItem(FOCUS_MODE_KEY) === "1");
    } catch {
      // 读盘失败则维持默认关闭。
    }
  }, []);

  const toggle = useCallback(() => {
    setFocus((prev) => {
      const next = !prev;
      persist(next);
      return next;
    });
  }, []);

  return { focus, toggle };
}
