Files
uniare.sori.studio/script/deck-favorites.js
zenn 2ecf6201c0 v4.0.0: 덱 UX·i18n·썸네일 저장 개선 및 413 수정
즐겨찾기·홀드 미리보기·페이지 도움말·3개국어 번역을 추가하고, 덱 저장 시 썸네일을 1200px로 통일하며 Nginx/API 업로드 제한을 상향했다.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-22 18:50:08 +09:00

61 lines
1.4 KiB
JavaScript

/**
* 덱 즐겨찾기 (localStorage, share_code 기준)
*/
(function initDeckFavorites() {
const STORAGE_KEY = 'uadeck.deckFavorites';
/**
* @returns {Set<string>}
*/
function readSet() {
try {
const raw = localStorage.getItem(STORAGE_KEY);
const list = raw ? JSON.parse(raw) : [];
return new Set(Array.isArray(list) ? list : []);
} catch {
return new Set();
}
}
/**
* @param {Set<string>} set
*/
function writeSet(set) {
localStorage.setItem(STORAGE_KEY, JSON.stringify([...set]));
}
/**
* @param {string} shareCode
* @returns {boolean}
*/
function isFavorite(shareCode) {
if (!shareCode) return false;
return readSet().has(shareCode);
}
/**
* @param {string} shareCode
* @returns {boolean} 토글 후 즐겨찾기 여부
*/
function toggle(shareCode) {
if (!shareCode) return false;
const set = readSet();
if (set.has(shareCode)) {
set.delete(shareCode);
} else {
set.add(shareCode);
}
writeSet(set);
return set.has(shareCode);
}
/**
* @returns {string[]}
*/
function getAll() {
return [...readSet()];
}
window.UaDeckFavorites = { isFavorite, toggle, getAll };
})();