Skip to content

Commit

Permalink
feat:#13 发布到Vuepress-开发阶段模拟ID,使得整个逻辑更加通用
Browse files Browse the repository at this point in the history
  • Loading branch information
terwer committed Jul 29, 2022
1 parent 9f59f99 commit b49fc3e
Show file tree
Hide file tree
Showing 3 changed files with 67 additions and 35 deletions.
5 changes: 4 additions & 1 deletion .env.development
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,7 @@
# VITE_LOG_INFO_ENABLED=

# 思源笔记授权token,部分api调用需要
# VITE_SIYUAN_CONFIG_TOKEN=
# VITE_SIYUAN_CONFIG_TOKEN=

# 开发阶段模拟的页面ID,仅限调试使用,生产环境无需此配置
# VITE_SIYUAN_DEV_PAGE_ID=
8 changes: 4 additions & 4 deletions src/components/main/VuepressMain.vue
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@

<script lang="ts" setup>
import {onBeforeMount} from "vue";
import {getSiyuanPage} from "../../lib/siyuan/siyuanUtil";
import {getPageId} from "../../lib/siyuan/siyuanUtil";
import log from "../../lib/logUtil"
const isPublished = false
Expand Down Expand Up @@ -196,9 +196,9 @@ const publishPage = () => {
}
onBeforeMount(async () => {
const page = await getSiyuanPage()
log.logInfo("page=>", page)
if(!page){
const pageId = await getPageId(true)
log.logInfo("VuepressMain pageId=>", pageId)
if (!pageId || pageId == "") {
return
}
})
Expand Down
89 changes: 59 additions & 30 deletions src/lib/siyuan/siyuanUtil.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,26 +5,21 @@
import {getJSONConf, setJSONConf} from "../config";
import {getBlockByID} from "./siYuanApi.js";
import log from "../logUtil";
import {getEnv} from "../envUtil";

export async function getWidgetId() {
async function getWidgetId() {
// @ts-ignore
if (!window.frameElement) {
if (!window.frameElement
|| !window.frameElement.parentElement
|| !window.frameElement.parentElement.parentElement) {
log.logWarn("正在已非挂件模式运行,部分功能将不可用,请知悉")
return {
isInSiyuan: false,
widgetId: ""
}
}

if (!window.frameElement.parentElement) {
log.logWarn("正在已非挂件模式运行,部分功能将不可用,请知悉")
return {
isInSiyuan: false,
widgetId: ""
}
}

const self = window.frameElement.parentElement.parentElement;
let self = window.frameElement.parentElement.parentElement;
if (!self) {
log.logWarn("正在已非挂件模式运行,部分功能将不可用,请知悉")
return {
Expand All @@ -49,30 +44,12 @@ export async function getWidgetId() {
}
}

/**
* 获取本地缓存的思源笔记页面ID
* @param force
* true 强制调用查询不获取缓存
* false 优先读取本地缓存,缓存不存在再去查询
* @returns {Promise<*|string>}
*/
export async function getSiyuanPageId(force: boolean) {
const page = await getSiyuanPage(force);
if (!page) {
return
}

const pageId = page.root_id || ""
log.logInfo("获取思源笔记页面ID=>", pageId)
return pageId
}

/**
* 获取本地缓存的思源笔记页面信息(不是实时的)
* @param force true代表强制调用查询不获取缓存
* @returns {Promise<any>}
*/
export async function getSiyuanPage(force?: boolean) {
async function getWidgetPage(force?: boolean) {
const widgetResult = await getWidgetId()
if (!widgetResult.isInSiyuan) {
return
Expand All @@ -94,4 +71,56 @@ export async function getSiyuanPage(force?: boolean) {
log.logInfo("调用API设置查询思源页面信息并更新本地缓存", page)
}
return page;
}

/**
* 获取本地缓存的思源笔记页面ID
* @param force
* true 强制调用查询不获取缓存
* false 优先读取本地缓存,缓存不存在再去查询
* @returns {Promise<*|string>}
*/
async function getSiyuanPageId(force?: boolean) {
const page = await getWidgetPage(force);
if (!page) {
return
}

const pageId = page.root_id
log.logInfo("获取思源笔记页面ID=>", pageId)
return pageId
}

/**
* 获取页面ID,如果不是挂件模式,可以自己提供一个页面ID
* @param force 是否强制刷新
* @param pageId 页面ID,可选的(挂件模式无需传递,开发阶段或者非挂件模式可以传递ID模拟运行)
*/
export async function getPageId(force?: boolean, pageId?: string) {
// 默认尝试读取挂件的ID
let syPageId = await getSiyuanPageId(force)
// log.logWarn("syPageId=>", syPageId)
if (!syPageId) {
//如果其他地方想使用,也可以显式的传入一个页面ID
// log.logWarn("pageId=>", pageId)
if (pageId) {
syPageId = pageId
}
// 开发模式模拟传递一个ID
if (!pageId && import.meta.env.DEV) {
// log.logWarn("env=>", getEnv("VITE_SIYUAN_DEV_PAGE_ID"))
syPageId = getEnv("VITE_SIYUAN_DEV_PAGE_ID")
}
}

log.logWarn("当前页面ID是=>", syPageId)
return syPageId;
}

/**
* 获取页面
* @param pageId 页面ID
*/
export async function getPage(pageId: string) {
return await getBlockByID(pageId)
}

0 comments on commit b49fc3e

Please sign in to comment.