(function () { // -- used docu elements: let paramPoemID = document.getElementById("actionsBar").getAttribute("data-param"); // -- Создание и открытие базы данных let db; const request = indexedDB.open("PtryLndDB_favorites", 1); request.onupgradeneeded = function (event) { db = event.target.result; if (!db.objectStoreNames.contains("favorites")) { var objectStore = db.createObjectStore("favorites", { keyPath: "poemId" }); } }; request.onsuccess = function (event) { db = event.target.result; checkFavorite(); }; request.onerror = function (event) { console.error("IndexedDB error:", event.target.errorCode); }; // -- Проверка наличия фаворита и обновление текста ссылки function checkFavorite() { //// проверить существование хранилища с этим именем //if (!db.objectStoreNames.contains("favorites")) { // resolve(false); // => запись не найдена! // return; //} const transaction = db.transaction(["favorites"], "readonly"); const store = transaction.objectStore("favorites"); const query = store.get(paramPoemID); // ключевое значение фаворита query.onsuccess = function (event) { // добавить линк на панель const actionsBar = document.getElementById("actionsBar"); actionsBar.innerHTML = '
  • '; const link = document.getElementById("actionFavorites"); link.addEventListener('click', click_actionFavorites); if (event.target.result) { updateLinkText(true); } else { updateLinkText(false); } }; query.onerror = function (event) { console.error("Error fetching favorite:", event.target.errorCode); }; } // -- Обработка кликов по ссылке function click_actionFavorites() { const transaction = db.transaction(["favorites"], "readwrite"); const store = transaction.objectStore("favorites"); const query = store.get(paramPoemID); query.onsuccess = function (event) { if (event.target.result) { store.delete(paramPoemID).onsuccess = function () { updateLinkText(false); }; } else { store.add({ poemId: paramPoemID, creationDate: new Date() }).onsuccess = function () { updateLinkText(true); }; } }; } function updateLinkText(isFavorite) { const link = document.getElementById("actionFavorites"); if (isFavorite) { // link.innerHTML = 'Удалить из избранного'; link.innerHTML = 'Удалить из избранного'; } else { // link.innerHTML = 'Добавить в избранное'; link.innerHTML = 'Добавить в избранное'; } } })()