-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstorage.js
60 lines (55 loc) · 1.45 KB
/
storage.js
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
const storageItem = "starredStops";
const getStarred = () => JSON.parse(localStorage.getItem(storageItem))||[];
const setStarred = arr => { localStorage.setItem(storageItem,JSON.stringify(arr))};
const addStarred = starred => {
const newStarred=[...getStarred(), starred];
setStarred(newStarred);
return newStarred;
};
const removeStarred = starred => {
const newStarred = getStarred().filter(el=>el.id!=starred.id);
setStarred(newStarred);
return newStarred;
}
const clearStarred = () => {
setStarred([]);
}
const isStarred = starred => {
return Boolean(getStarred().find(el=>el.id===starred.id))
}
const toggleStarred = starred => {
return isStarred(starred) ? removeStarred(starred) : addStarred(starred);
}
const test=()=>{
const e1={id:"23232","name":"Jan"}
const e2={id:"111","name":"Lucas"}
const old=localStorage.getItem(storageItem);
clearStarred();
console.log(getStarred());
addStarred(e2);
console.log(addStarred(e1));
console.log(getStarred());
removeStarred(e2);
console.log(getStarred());
console.log(isStarred(e1));
console.log(removeStarred(e1));
console.log(isStarred(e1));
console.log(toggleStarred(e1))
console.log(isStarred(e1));
console.log(toggleStarred(e1))
console.log(isStarred(e1));
console.log(getStarred());
clearStarred();
console.log(getStarred());
localStorage.setItem(storageItem,old);
}
export default {
getStarred,
setStarred,
isStarred,
toggleStarred,
addStarred,
removeStarred,
clearStarred,
test
};