Skip to content

Commit

Permalink
fix: 修复知识空间设置错误问题
Browse files Browse the repository at this point in the history
  • Loading branch information
terwer committed Aug 23, 2023
1 parent a8911e7 commit 4d558e9
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 33 deletions.
1 change: 1 addition & 0 deletions src/adaptors/api/hexo/useHexoApi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ const useHexoApi = async (key: string, newCfg?: HexoConfig) => {
cfg.categoryType = CategoryTypeEnum.CategoryType_Multi
// 知识空间
cfg.knowledgeSpaceEnabled = true
cfg.knowledgeSpaceTitle = "发布目录"
cfg.allowKnowledgeSpaceChange = false
cfg.placeholder.knowledgeSpaceReadonlyModeTip = "Hexo 平台暂不支持修改发布目录,如需修改,请删除之后重新发布"
cfg.knowledgeSpaceType = CategoryTypeEnum.CategoryType_Tree_Single
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ import { createAppLogger } from "~/src/utils/appLogger.ts"
import { AppInstance } from "~/src/appInstance.ts"
import { useVueI18n } from "~/src/composables/useVueI18n.ts"
import { useSettingStore } from "~/src/stores/useSettingStore.ts"
import { onMounted, reactive, ref, toRaw } from "vue"
import { computed, onMounted, reactive, ref, toRaw, triggerRef, watch } from "vue"
import { DynamicConfig, DynamicJsonCfg, getDynCfgByKey, setDynamicJsonCfg } from "~/src/platforms/dynamicConfig.ts"
import { SypConfig } from "~/syp.config.ts"
import { CommonBlogConfig } from "~/src/adaptors/api/base/commonBlogConfig.ts"
Expand Down Expand Up @@ -69,26 +69,12 @@ const handleHomeChange = (value: string | number): void => {
}
}
// methods
const getSettingTips = (bid?: string) => {
const apiTypeInfo = t("setting.blog.platform.support.common") + props.apiType + " "
let blogName = formData.cfg.blogName
const blogid = bid ?? formData.cfg.blogid
if (props.cfg?.enableKnowledgeSpace) {
const kwSpace = formData.kwSpaces.find((item) => item.value === blogid)
blogName = kwSpace ? kwSpace.label : formData.cfg.blogName
// 更新名字
formData.cfg.blogName = blogName
}
return apiTypeInfo + blogName
}
// datas
const isLoading = ref(false)
const formData = reactive({
cfg: {} as CommonBlogConfig,
settingTips: "",
kwSpaces: [],
settingTips: "",
dynCfg: {} as DynamicConfig,
setting: {} as typeof SypConfig,
Expand All @@ -98,6 +84,33 @@ const formData = reactive({
isInit: false,
})
// watch
watch(
() => formData.cfg.blogid,
(newBlogId, oldBlogId) => {
if (newBlogId !== oldBlogId) {
// 只在实际数据变化时执行逻辑
forceWatchBlogId(newBlogId)
logger.debug("Watch logic triggered:", newBlogId)
}
},
{ immediate: true }
)
const forceWatchBlogId = (newBlogId: string) => {
const apiTypeInfo = t("setting.blog.platform.support.common") + props.apiType + " "
let blogName = formData.cfg.blogName
if (props.cfg?.knowledgeSpaceEnabled) {
const kwSpace = formData.kwSpaces.find((item) => item.value === newBlogId)
console.log(kwSpace)
blogName = kwSpace ? kwSpace.label : formData.cfg.blogid ?? formData.cfg.blogName
formData.cfg.blogName = blogName
}
formData.settingTips = apiTypeInfo + blogName
}
// methods
const valiConf = async () => {
isLoading.value = true
Expand Down Expand Up @@ -126,9 +139,6 @@ const valiConf = async () => {
const userBlog = usersBlogs[0]
formData.cfg.blogid = userBlog.blogid
formData.cfg.blogName = userBlog.blogName
// 初始化顶部提示
formData.settingTips = getSettingTips()
}
formData.cfg.apiStatus = true
Expand Down Expand Up @@ -176,10 +186,6 @@ const saveConf = async (hideTip?: any) => {
}
}
const handleKeSpaceChange = (val: any) => {
formData.settingTips = getSettingTips(val)
}
// init methods
const initKwSpaces = async () => {
try {
Expand All @@ -195,6 +201,9 @@ const initKwSpaces = async () => {
}
formData.kwSpaces.push(kwItem)
})
forceWatchBlogId(formData.cfg.blogid)
logger.debug("已强制刷新")
}
} catch (e) {
// ElMessage.error(t("main.opt.failure") + "=>" + e)
Expand All @@ -221,10 +230,9 @@ const initConf = async () => {
formData.cfg = conf
// 初始化知识空间
if (props.cfg?.enableKnowledgeSpace) {
if (props.cfg?.knowledgeSpaceEnabled) {
await initKwSpaces()
}
formData.settingTips = getSettingTips()
} else {
ElMessage.error("Read init config error, your config may not work")
}
Expand All @@ -244,9 +252,9 @@ onMounted(async () => {
<el-form v-else label-width="120px">
<el-alert :closable="false" :title="formData.settingTips" class="top-tip" type="info" />
<el-alert
v-if="props.cfg?.enableKnowledgeSpace"
v-if="props.cfg?.knowledgeSpaceEnabled"
:closable="false"
:title="t('enableKnowledgeSpace.Tips').replace(/\[knowledge-space-title\]/g, props.cfg?.knowledgeSpaceTitle)"
:title="t('knowledgeSpaceEnabled.Tips').replace(/\[knowledge-space-title\]/g, props.cfg?.knowledgeSpaceTitle)"
class="top-tip"
type="info"
/>
Expand Down Expand Up @@ -331,13 +339,12 @@ onMounted(async () => {
</el-radio-group>
</el-form-item>
<!-- 知识空间 -->
<el-form-item :label="props.cfg?.knowledgeSpaceTitle" v-if="props.cfg?.enableKnowledgeSpace">
<el-form-item :label="props.cfg?.knowledgeSpaceTitle" v-if="props.cfg?.knowledgeSpaceEnabled">
<el-select
v-model="formData.cfg.blogid"
class="m-2"
:placeholder="t('main.opt.select')"
:no-data-text="t('main.data.empty')"
@change="handleKeSpaceChange"
>
<el-option v-for="item in formData.kwSpaces" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,10 @@
<script setup lang="ts">
// props
import { useVueI18n } from "~/src/composables/useVueI18n.ts"
import { reactive } from "vue"
import { reactive, toRaw } from "vue"
import { createAppLogger } from "~/src/utils/appLogger.ts"
const logger = createAppLogger("common-blog-setting")
const props = defineProps({
apiType: {
Expand Down Expand Up @@ -56,6 +59,11 @@ const toggleAdvance = () => {
formData.advanceBtnText = "隐藏更多配置"
}
}
const syncDefaultPath = (cfg: any) => {
cfg.blogid = cfg.defaultPath
logger.debug("sync defaultPath to blogid", { cfg: toRaw(cfg) })
}
</script>

<template>
Expand Down Expand Up @@ -84,8 +92,8 @@ const toggleAdvance = () => {
<el-form-item :label="t('setting.blog.type.github.default.path')">
<el-input
v-model="(main.cfg as any).defaultPath"
@input="syncDefaultPath(main.cfg)"
:placeholder="t('setting.blog.type.github.default.path.tip')"
:disabled="true"
/>
</el-form-item>
<!-- 提交信息 -->
Expand Down
2 changes: 1 addition & 1 deletion src/locales/en_US.ts
Original file line number Diff line number Diff line change
Expand Up @@ -545,7 +545,7 @@ export default {
"main.publish.remove": "Remove",
"setting.blog.knowledge.space": "Knowledge space/Knowledge base",
"main.data.empty": "No data",
"enableKnowledgeSpace.Tips":
"knowledgeSpaceEnabled.Tips":
"After validation, a list of available knowledge spaces is listed, and you can modify the default knowledge spaces as needed and save them",
"post.bind.auto.tips":
"The ID here is automatically saved by the publishing tool, if you are not clear about the principle, please do not modify it",
Expand Down
2 changes: 1 addition & 1 deletion src/locales/zh_CN.ts
Original file line number Diff line number Diff line change
Expand Up @@ -536,7 +536,7 @@ export default {
"main.publish.remove": "批量删除",
"setting.blog.knowledge.space": "知识空间/知识库",
"main.data.empty": "暂无数据",
"enableKnowledgeSpace.Tips":
"knowledgeSpaceEnabled.Tips":
"验证通过之后,将列出可用的 [[knowledge-space-title]] 列表,您可以根据需要修改默认 [[knowledge-space-title]] 并保存",
"post.bind.auto.tips": "此处ID为发布工具自动保存,仅作为修复数据使用,如果您不清楚原理,请勿修改",
"siyuan.config.setting": "思源设置",
Expand Down

0 comments on commit 4d558e9

Please sign in to comment.