Zirnavis / static /js /db.js
Elias207's picture
Create static/js/db.js
a5541c5 verified
Raw
History Blame Contribute Delete
1.97 kB
// مدیریت IndexedDB
function initDB() {
return new Promise((resolve, reject) => {
const request = indexedDB.open(DB_NAME, DB_VERSION);
request.onerror = e => reject(e);
request.onupgradeneeded = e => {
const db = e.target.result;
if (!db.objectStoreNames.contains("projects")) {
db.createObjectStore("projects", { keyPath: "id" });
}
};
request.onsuccess = e => {
db = e.target.result;
resolve(db);
};
});
}
function saveProjectToDB() {
if (!currentProjectId) return;
const tx = db.transaction("projects", "readwrite");
const store = tx.objectStore("projects");
store.get(currentProjectId).onsuccess = (e) => {
const data = e.target.result;
if (data) {
data.state = state;
if(v && v.readyState >= 2) {
try {
const canvas = document.createElement('canvas');
canvas.width = 200; canvas.height = 350;
const ctx = canvas.getContext('2d');
ctx.drawImage(v, 0, 0, canvas.width, canvas.height);
data.thumbnail = canvas.toDataURL('image/jpeg', 0.5);
} catch(err) {}
}
store.put(data);
}
};
}
function getVideoBlobFromDB(projectId) {
return new Promise((resolve, reject) => {
if (!db) return reject("Database not initialized.");
const tx = db.transaction("projects", "readonly");
const store = tx.objectStore("projects");
const request = store.get(projectId);
request.onsuccess = e => {
const projectData = e.target.result;
if (projectData && projectData.videoBlob) resolve(projectData.videoBlob);
else reject("Video blob not found.");
};
request.onerror = e => reject("Error fetching from DB.");
});
}