fixed image and name chat

This commit is contained in:
SlimusMinus
2026-08-13 00:37:41 +03:00
parent 6b1b41d423
commit 66ff0dc5bf
6 changed files with 70 additions and 13 deletions

View File

@@ -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
}
}