diff --git a/src/components/TheEditor.vue b/src/components/TheEditor.vue
index df97f93ce..bc401cd33 100644
--- a/src/components/TheEditor.vue
+++ b/src/components/TheEditor.vue
@@ -27,15 +27,6 @@
{{ mdiHelp }}
{{ $t('Editor.ConfigReference') }}
-
- {{ mdiContentSave }}
- {{ $t('Editor.SaveClose') }}
-
{{ mdiRestart }}
{{ $t('Editor.SaveRestart') }}
+
+ {{ mdiContentSave }}
+
{{ mdiCloseThick }}
@@ -56,7 +50,7 @@
ref="editor"
v-model="sourcecode"
:name="filename"
- :file-extension="fileExtension">
+ :file-extension="fileExtension" />
@@ -105,7 +99,7 @@
-
+
{{ $t('Editor.DontSave') }}
@@ -167,8 +161,6 @@ export default class TheEditor extends Mixins(BaseMixin) {
mdiFileDocumentOutline = mdiFileDocumentOutline
mdiUsb = mdiUsb
- private scrollbarOptions = { scrollbars: { autoHide: 'never' } }
-
declare $refs: {
editor: Codemirror
}
@@ -343,10 +335,14 @@ export default class TheEditor extends Mixins(BaseMixin) {
@Watch('changed')
changedChanged(newVal: boolean) {
- if (this.confirmUnsavedChanges) {
- if (newVal) window.addEventListener('beforeunload', windowBeforeUnloadFunction)
- else window.removeEventListener('beforeunload', windowBeforeUnloadFunction)
+ if (!this.confirmUnsavedChanges) return
+
+ if (newVal) {
+ window.addEventListener('beforeunload', windowBeforeUnloadFunction)
+ return
}
+
+ window.removeEventListener('beforeunload', windowBeforeUnloadFunction)
}
}
diff --git a/src/store/editor/actions.ts b/src/store/editor/actions.ts
index c5112a90f..c7d50b2b8 100644
--- a/src/store/editor/actions.ts
+++ b/src/store/editor/actions.ts
@@ -133,7 +133,10 @@ export const actions: ActionTree = {
} else if (payload.restartServiceName !== null) {
Vue.$socket.emit('machine.services.restart', { service: payload.restartServiceName })
}
- dispatch('close')
+
+ commit('updateLoadedHash', payload.content)
+
+ if (payload.restartServiceName !== null) dispatch('close')
})
.catch((error) => {
window.console.log(error.response?.data.error)
diff --git a/src/store/editor/mutations.ts b/src/store/editor/mutations.ts
index 5fb331451..771b077c5 100644
--- a/src/store/editor/mutations.ts
+++ b/src/store/editor/mutations.ts
@@ -68,4 +68,9 @@ export const mutations: MutationTree = {
state.changed = sha256(payload) != state.loadedHash
},
+
+ updateLoadedHash(state, payload) {
+ Vue.set(state, 'loadedHash', sha256(payload.replace(/(?:\r\n|\r|\n)/g, '\n')))
+ Vue.set(state, 'changed', false)
+ },
}