Browse Source

Storage now restores full state as well as document

main
Steve Ruiz 4 years ago
parent
commit
d2f43e5253
1 changed files with 17 additions and 10 deletions
  1. 17
    10
      state/storage.ts

+ 17
- 10
state/storage.ts View File

@@ -25,22 +25,20 @@ class Storage {
25 25
     // 1. Load Document from Local Storage
26 26
     // Using the "last opened file id" in local storage.
27 27
     if (lastOpenedFileId !== null) {
28
-      // Load document from local storage
29
-      const savedDocument = localStorage.getItem(
30
-        storageId(lastOpenedFileId, 'document', lastOpenedFileId)
28
+      // Load state from local storage
29
+      const savedState = localStorage.getItem(
30
+        storageId(lastOpenedFileId, 'document-state', lastOpenedFileId)
31 31
       )
32 32
 
33
-      if (savedDocument === null) {
34
-        // If no document found, create a fresh random id.
33
+      if (savedState === null) {
34
+        // If no state with that document was found, create a fresh random id.
35 35
         data.document.id = uniqueId()
36 36
       } else {
37
-        // If we did find a document, load it into state.
38
-        const restoredDocument: TLDocument = JSON.parse(
39
-          decompress(savedDocument)
40
-        )
37
+        // If we did find a state and document, load it into state.
38
+        const restoredDocument: Data = JSON.parse(decompress(savedState))
41 39
 
42 40
         // Merge restored data into state.
43
-        data.document = restoredDocument
41
+        Object.assign(data, restoredDocument)
44 42
       }
45 43
     }
46 44
 
@@ -58,6 +56,10 @@ class Storage {
58 56
       storageId(data.document.id, 'document', data.document.id),
59 57
       compress(JSON.stringify(document))
60 58
     )
59
+    localStorage.setItem(
60
+      storageId(data.document.id, 'document-state', data.document.id),
61
+      compress(JSON.stringify(data))
62
+    )
61 63
   }
62 64
 
63 65
   getCompleteDocument = (data: Data) => {
@@ -168,6 +170,11 @@ class Storage {
168 170
       compress(JSON.stringify(data.document))
169 171
     )
170 172
 
173
+    localStorage.setItem(
174
+      storageId(data.document.id, 'document-state', data.document.id),
175
+      compress(JSON.stringify(data))
176
+    )
177
+
171 178
     // 4.1
172 179
     // Also save out copies of each page separately.
173 180
     Object.values(data.document.pages).forEach((page) => {

Loading…
Cancel
Save