|
@@ -46,12 +46,15 @@ class LocalFileManager extends FileManager {
|
|
const saveDataStateToLocalStorage = (
|
|
const saveDataStateToLocalStorage = (
|
|
elements: readonly ExcalidrawElement[],
|
|
elements: readonly ExcalidrawElement[],
|
|
appState: AppState,
|
|
appState: AppState,
|
|
|
|
+ appStateOnly = false,
|
|
) => {
|
|
) => {
|
|
try {
|
|
try {
|
|
- localStorage.setItem(
|
|
|
|
- STORAGE_KEYS.LOCAL_STORAGE_ELEMENTS,
|
|
|
|
- JSON.stringify(clearElementsForLocalStorage(elements)),
|
|
|
|
- );
|
|
|
|
|
|
+ if (!appStateOnly) {
|
|
|
|
+ localStorage.setItem(
|
|
|
|
+ STORAGE_KEYS.LOCAL_STORAGE_ELEMENTS,
|
|
|
|
+ JSON.stringify(clearElementsForLocalStorage(elements)),
|
|
|
|
+ );
|
|
|
|
+ }
|
|
localStorage.setItem(
|
|
localStorage.setItem(
|
|
STORAGE_KEYS.LOCAL_STORAGE_APP_STATE,
|
|
STORAGE_KEYS.LOCAL_STORAGE_APP_STATE,
|
|
JSON.stringify(clearAppStateForLocalStorage(appState)),
|
|
JSON.stringify(clearAppStateForLocalStorage(appState)),
|
|
@@ -72,8 +75,12 @@ export class LocalData {
|
|
appState: AppState,
|
|
appState: AppState,
|
|
files: BinaryFiles,
|
|
files: BinaryFiles,
|
|
onFilesSaved: () => void,
|
|
onFilesSaved: () => void,
|
|
|
|
+ appStateOnly = false,
|
|
) => {
|
|
) => {
|
|
- saveDataStateToLocalStorage(elements, appState);
|
|
|
|
|
|
+ saveDataStateToLocalStorage(elements, appState, appStateOnly);
|
|
|
|
+ if (appStateOnly) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
|
|
await this.fileStorage.saveFiles({
|
|
await this.fileStorage.saveFiles({
|
|
elements,
|
|
elements,
|
|
@@ -97,6 +104,14 @@ export class LocalData {
|
|
}
|
|
}
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+ /** Saves the AppState, only if saving is paused. */
|
|
|
|
+ static saveAppState = (appState: AppState) => {
|
|
|
|
+ // we need to make the `isSavePaused` check synchronously (undebounced)
|
|
|
|
+ if (this.isSavePaused()) {
|
|
|
|
+ this._save([], appState, {}, () => {}, true);
|
|
|
|
+ }
|
|
|
|
+ };
|
|
|
|
+
|
|
static flushSave = () => {
|
|
static flushSave = () => {
|
|
this._save.flush();
|
|
this._save.flush();
|
|
};
|
|
};
|