fix: memory leak

This commit is contained in:
purocean
2021-12-01 18:25:06 +08:00
parent ea7972bbfa
commit 09581e0aed
2 changed files with 27 additions and 21 deletions
+26 -21
View File
@@ -1,7 +1,7 @@
import { omit } from 'lodash-es'
import frontMatter from 'front-matter'
import type { Plugin } from '@fe/context'
import type { Doc } from '@fe/types'
import type { Doc, RenderEnv } from '@fe/types'
import type { MenuItem } from '@fe/services/status-bar'
import { render } from '@fe/services/view'
import { t } from '@fe/services/i18n'
@@ -310,29 +310,34 @@ export default {
})
})
ctx.registerHook('VIEW_RENDERED', ({ renderEnv }) => {
ctx.statusBar.tapMenus(menus => {
const list = menus['status-bar-tool']?.list
if (list) {
const id = 'plugin.markdown-macro.copy-markdown'
const menu: MenuItem = {
id,
type: 'normal',
hidden: !renderEnv?.attributes?.enableMacro,
title: ctx.i18n.t('status-bar.tool.macro-copy-markdown'),
onClick: () => {
ctx.utils.copyText(renderEnv?.source)
}
}
let env: RenderEnv | null = null
const item = list.find(x => x.id === id)
if (item) {
Object.assign(item, menu)
} else {
list.push(menu)
ctx.statusBar.tapMenus(menus => {
const list = menus['status-bar-tool']?.list
if (list) {
const id = 'plugin.markdown-macro.copy-markdown'
const menu: MenuItem = {
id,
type: 'normal',
hidden: !env?.attributes?.enableMacro,
title: ctx.i18n.t('status-bar.tool.macro-copy-markdown'),
onClick: () => {
ctx.utils.copyText(env?.source)
}
}
})
const item = list.find(x => x.id === id)
if (item) {
Object.assign(item, menu)
} else {
list.push(menu)
}
}
})
ctx.registerHook('VIEW_RENDERED', ({ renderEnv }) => {
env = renderEnv
ctx.statusBar.refreshMenu()
})
}
} as Plugin
@@ -224,6 +224,7 @@ const MindMap = defineComponent({
registerHook('I18N_CHANGE_LANGUAGE', renderMindMap)
onBeforeUnmount(() => {
km && km.destroy()
removeHook('I18N_CHANGE_LANGUAGE', renderMindMap)
})