/** * 덱 저장 시 공개 여부 기본값·프롬프트 설정 */ const UaDeckPrefs = (() => { const LS_DEFAULT_PUBLIC = 'uadeck_default_deck_public'; const LS_SKIP_PROMPT = 'uadeck_skip_deck_public_prompt'; /** * @param {object|null|undefined} user * @returns {{ defaultPublic: boolean, skipPrompt: boolean }} */ function getPrefs(user) { if (user && (user.defaultDeckPublic !== undefined || user.skipDeckPublicPrompt !== undefined)) { return { defaultPublic: user.defaultDeckPublic !== false, skipPrompt: Boolean(user.skipDeckPublicPrompt), }; } return { defaultPublic: localStorage.getItem(LS_DEFAULT_PUBLIC) !== '0', skipPrompt: localStorage.getItem(LS_SKIP_PROMPT) === '1', }; } /** * 로컬 캐시 동기화 * @param {{ defaultPublic: boolean, skipPrompt: boolean }} prefs */ function syncLocal(prefs) { localStorage.setItem(LS_DEFAULT_PUBLIC, prefs.defaultPublic ? '1' : '0'); localStorage.setItem(LS_SKIP_PROMPT, prefs.skipPrompt ? '1' : '0'); } /** * @param {{ defaultPublic: boolean, skipPrompt: boolean }} prefs * @returns {Promise} */ async function savePrefs(prefs) { syncLocal(prefs); if (!window.UaDeckApi?.getToken()) return; try { const { user } = await window.UaDeckApi.updateProfile({ defaultDeckPublic: prefs.defaultPublic, skipDeckPublicPrompt: prefs.skipPrompt, }); window.UaDeckApi.saveAuth(window.UaDeckApi.getToken(), user); } catch (err) { console.warn('덱 저장 설정 동기화 실패:', err); } } return { getPrefs, syncLocal, savePrefs }; })(); window.UaDeckPrefs = UaDeckPrefs;