storage.js
1 export function addEditorTabs({file}) { 2 return new Promise(resolve => { 3 const editorTabs = findOrCreateEditorTabs(); 4 editorTabs.forEach(f => f.active = false); 5 const alreadyAddedFile = editorTabs.find(f => f.name === file.name) 6 if (alreadyAddedFile) { 7 alreadyAddedFile.active = true 8 } else { 9 file.active = true 10 editorTabs.push(file); 11 } 12 localStorage.setItem('editorTabs', JSON.stringify(editorTabs)); 13 resolve({response: {data: editorTabs}}); 14 }); 15 } 16 17 export function fetchEditorTabs() { 18 return new Promise(resolve => { 19 resolve({response: {data: JSON.parse(localStorage.getItem('editorTabs'))}}); 20 }); 21 } 22 23 export function removeEditorTabs({file}) { 24 return new Promise(resolve => { 25 const editorTabs = findOrCreateEditorTabs(); 26 const filtered = editorTabs.filter(value => value.name !== file.name); 27 if (file.active && filtered.length) { 28 filtered[0].active = true; 29 } 30 localStorage.setItem('editorTabs', JSON.stringify(filtered)); 31 resolve({response: {data: filtered}}); 32 }); 33 } 34 35 export function saveCredentials({token, host}) { 36 const credentials = {token, host}; 37 return new Promise(resolve => { 38 localStorage.setItem('credentials', JSON.stringify(credentials)); 39 resolve({response: {data: credentials}}); 40 }); 41 } 42 43 export function fetchCredentials() { 44 return new Promise(resolve => { 45 const credentials = localStorage.getItem('credentials'); 46 resolve({response: {data: JSON.parse(credentials)}}); 47 }); 48 } 49 50 export function logout() { 51 return new Promise(resolve => { 52 localStorage.clear(); 53 resolve({response: true}); 54 }); 55 } 56 57 export function changeTheme({theme}) { 58 return new Promise(resolve => { 59 localStorage.setItem('theme', theme); 60 resolve({response: {data: theme}}); 61 }); 62 } 63 64 export function fetchTheme() { 65 return new Promise(resolve => resolve({response: {data: localStorage.getItem('theme')}})); 66 } 67 68 69 function findOrCreateEditorTabs() { 70 return JSON.parse(localStorage.getItem('editorTabs')) || []; 71 }