"use client" import { useState, useEffect } from "react" import { Minus, Plus, ALargeSmall, RotateCcw } from "lucide-react" import { Button } from "@/components/ui/button" import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover" interface ReadingSettingsProps { fontSize: number setFontSize: (v: number) => void lineHeight: number setLineHeight: (v: number) => void letterSpacing: number setLetterSpacing: (v: number) => void fontFamily: string setFontFamily: (v: string) => void } export function ReadingSettingsContent({ fontSize, setFontSize, lineHeight, setLineHeight, letterSpacing, setLetterSpacing, fontFamily, setFontFamily }: ReadingSettingsProps) { return ( <>
) } export function ReadingSettings() { const [fontSize, setFontSize] = useState(18) const [lineHeight, setLineHeight] = useState(1.8) const [letterSpacing, setLetterSpacing] = useState(0) const [fontFamily, setFontFamily] = useState("font-serif") useEffect(() => { // Dùng local storage chạy tạm thời gian đầu để khỏi giật màn hình const savedFontSize = localStorage.getItem("reader_fontSize") const savedLineHeight = localStorage.getItem("reader_lineHeight") const savedLetterSpacing = localStorage.getItem("reader_letterSpacing") const savedFontFamily = localStorage.getItem("reader_fontFamily") if (savedFontSize) setFontSize(Number(savedFontSize)) if (savedLineHeight) setLineHeight(Number(savedLineHeight)) if (savedLetterSpacing) setLetterSpacing(Number(savedLetterSpacing)) if (savedFontFamily) setFontFamily(savedFontFamily) // Đồng bộ Settings từ DB về (Ghi đè nếu có) fetch("/api/user/settings") .then(res => res.json()) .then(data => { if (data && !data.error && data.fontSize) { setFontSize(data.fontSize) setLineHeight(data.lineHeight) setLetterSpacing(data.letterSpacing) setFontFamily(data.fontFamily) localStorage.setItem("reader_fontSize", data.fontSize.toString()) localStorage.setItem("reader_lineHeight", data.lineHeight.toString()) localStorage.setItem("reader_letterSpacing", data.letterSpacing.toString()) localStorage.setItem("reader_fontFamily", data.fontFamily) } }) .catch(() => {}) }, []) useEffect(() => { localStorage.setItem("reader_fontSize", fontSize.toString()) localStorage.setItem("reader_lineHeight", lineHeight.toString()) localStorage.setItem("reader_letterSpacing", letterSpacing.toString()) localStorage.setItem("reader_fontFamily", fontFamily) const timer = setTimeout(() => { fetch("/api/user/settings", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ fontSize, lineHeight, letterSpacing, fontFamily }) }).catch(() => {}) }, 1000) return () => clearTimeout(timer) }, [fontSize, lineHeight, letterSpacing, fontFamily]) return ( <> {/* Inject styles */} ) }