-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdatabaseScript.js
More file actions
111 lines (88 loc) · 3.27 KB
/
databaseScript.js
File metadata and controls
111 lines (88 loc) · 3.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
let req = indexedDB.open("media",1);
let database;
let totalMedia = 0;
let galleryContainer = document.querySelector(".gallery-container");
req.addEventListener("success",function(e){
database = req.result;
console.log(database);
})
req.addEventListener("upgradeneeded",function(e){
let db = req.result;
db.createObjectStore("galleryMedia",{keyPath:"mId"});
})
req.addEventListener("error",function(e){
})
function saveMedia(media){
if(!database)return;
data = {
mId : Date.now(),
mediaData : media
}
let tsc = database.transaction("galleryMedia","readwrite");
let objectStore = tsc.objectStore("galleryMedia");
objectStore.add(data);
}
function viewMedia(){
if(!database) return;
let tsc = database.transaction("galleryMedia","readonly");
let objectStore = tsc.objectStore("galleryMedia");
let request = objectStore.openCursor();
// console.log(request);
request.addEventListener("success",function(){
let cursor = request.result;
if(cursor){
totalMedia++;
let mediaCard = document.createElement("div");
mediaCard.classList.add("media-card");
mediaCard.innerHTML = `<div class="main-container"></div>
<div class="media-buttons">
<button class="downloader">Download</button>
<button mid = "${cursor.value.mId}" class="delete">Delete</button>
</div>`;
let data = cursor.value.mediaData;
let type = typeof data;
let container = mediaCard.querySelector(".main-container");
let downloader = mediaCard.querySelector(".downloader");
let deleteButton = mediaCard.querySelector(".delete");
deleteButton.addEventListener("click",function(e){
deleteMedia(Number(e.currentTarget.getAttribute("mid")));
deleteButton.parentElement.parentElement.remove();
})
if(type == "string"){
let image = document.createElement("img");
image.src = data;
downloader.addEventListener("click",function(){
downloadMedia(data,"image.png")
})
container.append(image);
}else if(type == "object"){
let video = document.createElement("video");
video.src = URL.createObjectURL(data);
container.append(video);
video.autoplay = true
video.loop = true
video.muted = true
downloader.addEventListener("click",function(){
downloadMedia(URL.createObjectURL(data),"video.mp4");
})
}
galleryContainer.append(mediaCard);
cursor.continue();
}else{
if(totalMedia == 0){
galleryContainer.innerText = "NO MEDIA PRESENT";
}
}
})
}
function downloadMedia(url,type){
let anch = document.createElement("a");
anch.href = url;
anch.download = type;
anch.click();
}
function deleteMedia(mid){
let tsc = database.transaction("galleryMedia","readwrite");
let objectStore = tsc.objectStore("galleryMedia");
objectStore.delete(mid);
}