1import { safeGetItem, safeSetItem } from "/src/utils/storageUtils.ts"; 2/** ê²ìíì ë§ì§ë§ì¼ë¡ 본 ìê°(ì¬ì©ìë³, ì´ ë¸ë¼ì°ì ) â 'ì ê¸' íì 기ì¤. */ 3export const BOARD_SEEN_EVENT = "board-seen"; 4const key = (userId) => `board_last_seen:${userId}`; 5export function getBoardLastSeen(userId) { 6 if (!userId) return null; 7 const raw = safeGetItem(key(userId)); 8 const t = raw ? Date.parse(raw) : NaN; 9 return Number.isFinite(t) ? t : null; 10} 11export function markBoardSeen(userId, latestIso) { 12 if (!userId || !latestIso) return; 13 const prev = getBoardLastSeen(userId); 14 if (prev !== null && prev >= Date.parse(latestIso)) return; 15 safeSetItem(key(userId), latestIso); 16 // ê°ì íì í¤ë íì를 ì¦ì ê°±ì (ë¤ë¥¸ íì storage ì´ë²¤í¸ë¡). 17 window.dispatchEvent(new Event(BOARD_SEEN_EVENT)); 18} 19 20//# sourceMappingURL=data:application/json;base64,eyJtYXBwaW5ncyI6IkFBQUEsU0FBUyxhQUFhLG1CQUFtQjs7QUFHekMsT0FBTyxNQUFNLG1CQUFtQjtBQUVoQyxNQUFNLE9BQU8sV0FBbUIsbUJBQW1CO0FBRW5ELE9BQU8sU0FBUyxpQkFBaUIsUUFBMkM7Q0FDMUUsSUFBSSxDQUFDLFFBQVEsT0FBTztDQUNwQixNQUFNLE1BQU0sWUFBWSxJQUFJLE1BQU0sQ0FBQztDQUNuQyxNQUFNLElBQUksTUFBTSxLQUFLLE1BQU0sR0FBRyxJQUFJO0NBQ2xDLE9BQU8sT0FBTyxTQUFTLENBQUMsSUFBSSxJQUFJO0FBQ2xDO0FBRUEsT0FBTyxTQUFTLGNBQWMsUUFBNEIsV0FBNEM7Q0FDcEcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXO0NBQzNCLE1BQU0sT0FBTyxpQkFBaUIsTUFBTTtDQUNwQyxJQUFJLFNBQVMsUUFBUSxRQUFRLEtBQUssTUFBTSxTQUFTLEdBQUc7Q0FDcEQsWUFBWSxJQUFJLE1BQU0sR0FBRyxTQUFTOztDQUVsQyxPQUFPLGNBQWMsSUFBSSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xEIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbImJvYXJkU2Vlbi50cyJdLCJ2ZXJzaW9uIjozLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzYWZlR2V0SXRlbSwgc2FmZVNldEl0ZW0gfSBmcm9tICcuL3N0b3JhZ2VVdGlscyc7XG5cbi8qKiDqsozsi5ztjJDsnYQg66eI7KeA66eJ7Jy866GcIOuzuCDsi5zqsIEo7IKs7Jqp7J6Q67OELCDsnbQg67iM65287Jqw7KCAKSDigJQgJ+yDiCDquIAnIO2RnOyLnCDquLDspIAuICovXG5leHBvcnQgY29uc3QgQk9BUkRfU0VFTl9FVkVOVCA9ICdib2FyZC1zZWVuJztcblxuY29uc3Qga2V5ID0gKHVzZXJJZDogc3RyaW5nKSA9PiBgYm9hcmRfbGFzdF9zZWVuOiR7dXNlcklkfWA7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRCb2FyZExhc3RTZWVuKHVzZXJJZDogc3RyaW5nIHwgdW5kZWZpbmVkKTogbnVtYmVyIHwgbnVsbCB7XG4gIGlmICghdXNlcklkKSByZXR1cm4gbnVsbDtcbiAgY29uc3QgcmF3ID0gc2FmZUdldEl0ZW0oa2V5KHVzZXJJZCkpO1xuICBjb25zdCB0ID0gcmF3ID8gRGF0ZS5wYXJzZShyYXcpIDogTmFOO1xuICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKHQpID8gdCA6IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXJrQm9hcmRTZWVuKHVzZXJJZDogc3RyaW5nIHwgdW5kZWZpbmVkLCBsYXRlc3RJc286IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgaWYgKCF1c2VySWQgfHwgIWxhdGVzdElzbykgcmV0dXJuO1xuICBjb25zdCBwcmV2ID0gZ2V0Qm9hcmRMYXN0U2Vlbih1c2VySWQpO1xuICBpZiAocHJldiAhPT0gbnVsbCAmJiBwcmV2ID49IERhdGUucGFyc2UobGF0ZXN0SXNvKSkgcmV0dXJuO1xuICBzYWZlU2V0SXRlbShrZXkodXNlcklkKSwgbGF0ZXN0SXNvKTtcbiAgLy8g6rCZ7J2AIO2DreydmCDtl6TrjZQg7ZGc7Iuc66W8IOymieyLnCDqsLHsi6Ao64uk66W4IO2DreydgCBzdG9yYWdlIOydtOuypO2KuOuhnCkuXG4gIHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudChCT0FSRF9TRUVOX0VWRU5UKSk7XG59XG4iXX0=
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.