Skip to content

Commit 79920f5

Browse files
authored
Improve view mode restoration cross editors (#76)
1 parent 94257a8 commit 79920f5

2 files changed

Lines changed: 21 additions & 15 deletions

File tree

main.ts

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -84,22 +84,23 @@ MarkEdit.addExtension(EditorView.updateListener.of(update => {
8484
states.renderUpdater = setTimeout(renderHtmlPreview, 500);
8585
}));
8686

87-
MarkEdit.onEditorReady(async() => {
87+
MarkEdit.onEditorReady(() => {
8888
if (imageHoverPreview) {
8989
enableHoverPreview(MarkEdit.editorView.scrollDOM);
9090
}
9191

92-
if (states.isInitiating) {
93-
states.isInitiating = false;
94-
restoreViewMode();
95-
}
92+
// Restore to the last view mode, if available
93+
restoreViewMode();
9694

97-
if (document.visibilityState === 'visible' && typeof MarkEdit.getFileInfo === 'function') {
98-
const isDraft = (await MarkEdit.getFileInfo())?.filePath === undefined;
99-
if (isDraft && MarkEdit.editorAPI.getText().length === 0) {
100-
setViewMode(ViewMode.edit, false);
95+
// For empty new drafts only, avoid using preview because it looks confusing
96+
requestAnimationFrame(async() => {
97+
if (document.visibilityState === 'visible' && currentViewMode() === ViewMode.preview && typeof MarkEdit.getFileInfo === 'function') {
98+
const isDraft = (await MarkEdit.getFileInfo())?.filePath === undefined;
99+
if (isDraft && MarkEdit.editorAPI.getText().length === 0) {
100+
setViewMode(ViewMode.edit, false);
101+
}
101102
}
102-
}
103+
});
103104

104105
renderHtmlPreview();
105106
renderDecorationViews();
@@ -163,11 +164,9 @@ function renderDecorationViews() {
163164
}
164165

165166
const states: {
166-
isInitiating: boolean;
167167
renderUpdater: ReturnType<typeof setTimeout> | undefined;
168168
keyDownListener: ((event: KeyboardEvent) => void) | undefined;
169169
} = {
170-
isInitiating: true,
171170
renderUpdater: undefined,
172171
keyDownListener: undefined,
173172
};

src/view.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -142,10 +142,17 @@ export function changeViewMode() {
142142
}
143143

144144
export function restoreViewMode() {
145-
const initialMode = localStorage.getItem(CacheKeys.viewModeCacheKey);
146-
if (initialMode !== null) {
147-
setViewMode(Number(initialMode), false);
145+
const cachedValue = localStorage.getItem(CacheKeys.viewModeCacheKey);
146+
if (cachedValue === null) {
147+
return;
148148
}
149+
150+
const newMode = Number(cachedValue);
151+
if (currentViewMode() === newMode) {
152+
return;
153+
}
154+
155+
setViewMode(newMode, true);
149156
}
150157

151158
export function currentViewMode() {

0 commit comments

Comments
 (0)