/ embark-ui / src / services / storage.js
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  }