(function () { const dbNameFav = "PtryLndDB_favorites" const storeNameFav = "favorites"; const idElement = "breadcrumbTitleHeader"; const dataAttr = "data-poemId"; const dbNameAudio = "PtryLndDB_audioRecords"; const storeNameAudio = "audioStore"; const indexNameAudio = "poemId"; function checkRecordExists(storeName, dbName, key, indexName) { return new Promise((resolve, reject) => { const openRequest = indexedDB.open(dbName); openRequest.onupgradeneeded = function (event) { db = event.target.result; if (storeName === storeNameFav) { if (!db.objectStoreNames.contains("favorites")) { var objectStore = db.createObjectStore("favorites", { keyPath: "poemId" }); } } if (storeName === storeNameAudio) { if (!db.objectStoreNames.contains('audioStore')) { var objectStore = db.createObjectStore('audioStore', { keyPath: 'id', autoIncrement: true }); // Создаём индекс для поля 'poemId' objectStore.createIndex('poemId', 'poemId', { unique: false }); } } }; openRequest.onsuccess = function (event) { try { const db = event.target.result; //// проверить существование хранилища с этим именем //if (!db.objectStoreNames.contains(storeName)) { // resolve(false); // => запись не найдена! // return; //} const transaction = db.transaction([storeName], "readonly"); const store = transaction.objectStore(storeName); let request; if (indexName) { const index = store.index(indexName); request = index.get(key); } else { request = store.get(key) } request.onsuccess = function () { if (request.result === undefined) resolve(false); // не найдена else resolve(true); // запись найдена }; request.onerror = function () { resolve(new Error("Ошибка при поиске записи: ", event.target.error)); }; } catch (error) { console.error("Ошибка при работе с IndexedDB:", error); resolve(false); } }; openRequest.onerror = function (event) { reject(new Error("Ошибка при открытии базы данных: ", event.target.error)); }; }) } //const element = document.getElementById(idElement); //const poemId = element.getAttribute(dataAttr); //checkRecordExists(storeNameFav, dbNameFav, poemId, null) // .then(exists => { // if (exists) { // // '' // const icon = document.createElement('i'); // icon.className = 'bi bi-heart-fill'; // // add before // element.prepend(icon); // } // }) // .catch(error => { // console.error("Ошибка в " + storeNameFav, error); // }); //checkRecordExists(storeNameAudio, dbNameAudio, poemId, indexNameAudio) // .then(exists => { // if (exists) { // // '' // const icon = document.createElement('i'); // icon.className = 'bi bi-soundwave'; // // add before // element.prepend(icon); // } // }) // .catch(error => { // console.error("Ошибка в " + storeNameFav, error); // }); async function checkAndAddIcons() { const element = document.getElementById(idElement); const poemId = element.getAttribute(dataAttr); // [FAV] [AUD] [Poem Title] => wegen "prepend" erst [AUD], than [FAV] // erst Audio .. try { const existsAudio = await checkRecordExists(storeNameAudio, dbNameAudio, poemId, indexNameAudio); if (existsAudio) { // '' const iconAudio = document.createElement('i'); iconAudio.className = 'bi bi-soundwave'; // add before element.prepend(iconAudio); } } catch (error) { console.error("Ошибка в " + storeNameAudio, error); } // .. dann Favorite try { const existsFav = await checkRecordExists(storeNameFav, dbNameFav, poemId, null); if (existsFav) { // '' const iconFav = document.createElement('i'); iconFav.className = 'bi bi-heart-fill'; // add before element.prepend(iconFav); } } catch (error) { console.error("Ошибка в " + storeNameFav, error); } } checkAndAddIcons(); })()