PluginProbe
Smart Post – Post Grid, Post Carousel, Post Slider Gutenberg Blocks for Blog & News / 4.0.2
Smart Post – Post Grid, Post Carousel, Post Slider Gutenberg Blocks for Blog & News v4.0.2
4.0.8 4.0.7 4.0.6 4.0.5 4.0.4 4.0.3 4.0.2 4.0.1 2.3.5 2.3.6 2.4.0 2.4.1 2.4.10 2.4.11 2.4.12 2.4.13 2.4.14 2.4.15 2.4.16 2.4.17 2.4.18 2.4.19 2.4.2 2.4.20 2.4.21 All 88 releases
post-carousel / src / hooks / useIndexedDb.js

useIndexedDb.js in Smart Post – Post Grid, Post Carousel, Post Slider Gutenberg Blocks for Blog & News 4.0.2, at src/hooks/useIndexedDb.js

64 lines 1.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 const dbName = "smartPostShow";
2 const storeName = "postsStore";
3
4 // Open or create the IndexedDB
5 const openDB = () => {
6 return new Promise((resolve, reject) => {
7 const request = indexedDB.open(dbName, 1);
8
9 request.onerror = (event) => reject(`Error opening DB: ${event.target.error}`);
10 request.onsuccess = (event) => resolve(event.target.result);
11
12 request.onupgradeneeded = (event) => {
13 const db = event.target.result;
14 if (!db.objectStoreNames.contains(storeName)) {
15 db.createObjectStore(storeName, {
16 keyPath: "id",
17 autoIncrement: true,
18 });
19 }
20 };
21 });
22 };
23
24 export const addPostsInIndexedDb = async (posts) => {
25 try {
26 const db = await openDB();
27 const transaction = db.transaction([storeName], "readwrite");
28 const store = transaction.objectStore(storeName);
29
30 await store.add(posts);
31 return "Post added successfully";
32 } catch (error) {
33 console.error(`Error adding post: ${error}`);
34 throw error;
35 }
36 };
37
38 export const removePostsFromIndexedDb = async () => {
39 try {
40 const db = await openDB();
41 const transaction = db.transaction([storeName], "readwrite");
42 const store = transaction.objectStore(storeName);
43 await store.clear();
44 } catch (error) {
45 console.error(`Error removing all posts: ${error}`);
46 throw error;
47 }
48 };
49
50 export const getAllPostsFromIndexedDb = async (id) => {
51 try {
52 const db = await openDB();
53 const transaction = db.transaction([storeName], "readonly");
54 const store = transaction.objectStore(storeName);
55 return new Promise((resolve, reject) => {
56 const request = store.getAll();
57 request.onsuccess = () => resolve(request?.result?.find((d) => d.key === id));
58 request.onerror = (event) => reject(`Error fetching posts: ${event.target.error}`);
59 });
60 } catch (error) {
61 console.error(error);
62 }
63 };
64