|
|
@@ -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) => {
|