fixed image and name chat
This commit is contained in:
@@ -1,7 +1,39 @@
|
||||
const STORAGE_KEY = "nakhodka:chatPosts";
|
||||
|
||||
const postByChatId = new Map();
|
||||
|
||||
/** Восстанавливает кеш постов из localStorage (выживает при перезагрузке страницы). */
|
||||
function loadFromStorage() {
|
||||
try {
|
||||
const raw = localStorage.getItem(STORAGE_KEY);
|
||||
if (!raw) return;
|
||||
const obj = JSON.parse(raw);
|
||||
for (const [chatId, post] of Object.entries(obj)) {
|
||||
postByChatId.set(chatId, post);
|
||||
}
|
||||
} catch (e) {
|
||||
// Повреждённый/пустой storage игнорируем
|
||||
}
|
||||
}
|
||||
|
||||
/** Пишет текущий кеш постов в localStorage. */
|
||||
function persist() {
|
||||
try {
|
||||
const obj = {};
|
||||
postByChatId.forEach((post, chatId) => {
|
||||
obj[chatId] = post;
|
||||
});
|
||||
localStorage.setItem(STORAGE_KEY, JSON.stringify(obj));
|
||||
} catch (e) {
|
||||
// Недостаточно места / приватный режим — игнорируем
|
||||
}
|
||||
}
|
||||
|
||||
loadFromStorage();
|
||||
|
||||
export function setPostForChat(chatId, post) {
|
||||
postByChatId.set(chatId, post);
|
||||
persist();
|
||||
}
|
||||
|
||||
export function getPostForChat(chatId) {
|
||||
@@ -14,14 +46,21 @@ export function cachePostsFromChats(chats) {
|
||||
postByChatId.set(chat.id, chat.post);
|
||||
}
|
||||
}
|
||||
if (chats.length) persist();
|
||||
}
|
||||
|
||||
/** Удаляет запись при удалении конкретного чата. */
|
||||
export function removePostForChat(chatId) {
|
||||
postByChatId.delete(chatId);
|
||||
persist();
|
||||
}
|
||||
|
||||
/** Полностью очищает кеш — вызывать при logout(), чтобы не хранить данные предыдущей сессии. */
|
||||
export function clearPostCache() {
|
||||
postByChatId.clear();
|
||||
}
|
||||
try {
|
||||
localStorage.removeItem(STORAGE_KEY);
|
||||
} catch (e) {
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user