diff --git a/src/components/EditorSettings.vue b/src/components/EditorSettings.vue
index f8889b85e4..7aae6865e5 100644
--- a/src/components/EditorSettings.vue
+++ b/src/components/EditorSettings.vue
@@ -8,20 +8,24 @@
@@ -66,8 +67,9 @@ import { mapStores } from 'pinia'
import IconCheck from 'vue-material-design-icons/Check.vue'
import TextEditor from './TextEditor.vue'
import logger from '../logger.js'
+import { EDITOR_MODE_HTML } from '../store/constants.js'
import useMainStore from '../store/mainStore.js'
-import { detect, toHtml } from '../util/text.js'
+import { detect, toHtml, toPlain } from '../util/text.js'
export default {
name: 'SignatureSettings',
@@ -98,6 +100,10 @@ export default {
computed: {
...mapStores(useMainStore),
+ editorIsHtml() {
+ return this.account.editorMode === EDITOR_MODE_HTML
+ },
+
identities() {
const identities = this.account.aliases.map((alias) => {
return {
@@ -122,6 +128,10 @@ export default {
},
watch: {
+ editorIsHtml() {
+ this.signature = this.formatSignature(this.signature)
+ },
+
async signatureAboveQuote(val, oldVal) {
try {
await this.mainStore.patchAccount({
@@ -146,9 +156,15 @@ export default {
changeIdentity(identity) {
logger.debug('select identity', { identity })
this.identity = identity
- this.signature = identity.signature
- ? toHtml(detect(identity.signature)).value
- : ''
+ this.signature = this.formatSignature(identity.signature)
+ },
+
+ formatSignature(signature) {
+ if (!signature) {
+ return ''
+ }
+ const detected = detect(signature)
+ return this.editorIsHtml ? toHtml(detected).value : toPlain(detected).value
},
async deleteSignature() {
diff --git a/src/tests/unit/components/SignatureSettings.vue.spec.js b/src/tests/unit/components/SignatureSettings.vue.spec.js
index 7622c572ee..01aba87b5e 100644
--- a/src/tests/unit/components/SignatureSettings.vue.spec.js
+++ b/src/tests/unit/components/SignatureSettings.vue.spec.js
@@ -6,6 +6,7 @@
import { createLocalVue, shallowMount } from '@vue/test-utils'
import SignatureSettings from '../../../components/SignatureSettings.vue'
import Nextcloud from '../../../mixins/Nextcloud.js'
+import { EDITOR_MODE_HTML } from '../../../store/constants.js'
const localVue = createLocalVue()
@@ -18,6 +19,7 @@ describe('SignatureSettings', () => {
propsData: {
account: {
aliases: [],
+ editorMode: EDITOR_MODE_HTML,
signature: String('
Lorem ipsum
').repeat(120000),
},
},