Skip to content

Commit

Permalink
feat(addon-meting): add a config to control Aplayer's visibility
Browse files Browse the repository at this point in the history
  • Loading branch information
yixiaojiu committed Sep 5, 2024
1 parent 4ec151e commit fe1c737
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 5 deletions.
3 changes: 2 additions & 1 deletion demo/yun/.valaxy/typed-router.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,8 @@ declare module 'vue-router/auto-routes' {
'/links/': RouteRecordInfo<'/links/', '/links', Record<never, never>, Record<never, never>>,
'/notes/': RouteRecordInfo<'/notes/', '/notes', Record<never, never>, Record<never, never>>,
'/page/[page]': RouteRecordInfo<'/page/[page]', '/page/:page', { page: ParamValue<true> }, { page: ParamValue<false> }>,
'/posts/中文Post测试': RouteRecordInfo<'/posts/中文Post测试', '/posts/中文Post测试', Record<never, never>, Record<never, never>>,
'/posts/about': RouteRecordInfo<'/posts/about', '/posts/about', Record<never, never>, Record<never, never>>,
'/posts/aplayer': RouteRecordInfo<'/posts/aplayer', '/posts/aplayer', Record<never, never>, Record<never, never>>,
'/posts/categories-a-b': RouteRecordInfo<'/posts/categories-a-b', '/posts/categories-a-b', Record<never, never>, Record<never, never>>,
'/posts/categories-a-b-c': RouteRecordInfo<'/posts/categories-a-b-c', '/posts/categories-a-b-c', Record<never, never>, Record<never, never>>,
'/posts/code': RouteRecordInfo<'/posts/code', '/posts/code', Record<never, never>, Record<never, never>>,
Expand Down Expand Up @@ -83,6 +83,7 @@ declare module 'vue-router/auto-routes' {
'/posts/test': RouteRecordInfo<'/posts/test', '/posts/test', Record<never, never>, Record<never, never>>,
'/posts/test-images': RouteRecordInfo<'/posts/test-images', '/posts/test-images', Record<never, never>, Record<never, never>>,
'/posts/test-tags': RouteRecordInfo<'/posts/test-tags', '/posts/test-tags', Record<never, never>, Record<never, never>>,
'/posts/中文Post测试': RouteRecordInfo<'/posts/中文Post测试', '/posts/中文Post测试', Record<never, never>, Record<never, never>>,
'/tags/': RouteRecordInfo<'/tags/', '/tags', Record<never, never>, Record<never, never>>,
'/test/deadlinks': RouteRecordInfo<'/test/deadlinks', '/test/deadlinks', Record<never, never>, Record<never, never>>,
'/test/footnotes': RouteRecordInfo<'/test/footnotes', '/test/footnotes', Record<never, never>, Record<never, never>>,
Expand Down
6 changes: 6 additions & 0 deletions demo/yun/pages/posts/aplayer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
title: Aplayer 测试
aplayer: false
categories:
- Test
---
4 changes: 3 additions & 1 deletion packages/valaxy-addon-meting/App.vue
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<script lang="ts" setup>
import { useMeting } from './client'
import { useMeting, useVisible } from './client'
const props = withDefaults(defineProps<{
[key: string]: any
Expand All @@ -23,11 +23,13 @@ export interface MetingJsProps {
}
useMeting()
const visible = useVisible()
</script>

<template>
<!-- eslint-disable-next-line vue/component-name-in-template-casing -->
<meting-js
v-show="visible"
v-bind="props"
:fixed="true"
/>
Expand Down
16 changes: 15 additions & 1 deletion packages/valaxy-addon-meting/client/index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import { useScriptTag } from '@vueuse/core'
import { useHead } from '@unhead/vue'
import { computed } from 'vue'
import { computed, ref, watch } from 'vue'
import { useSiteConfig } from 'valaxy'
import { useRoute } from 'vue-router'
import { useMetingLoadObserver } from './observer'
import { useAddonMeting } from './options'
import { onMetingInit } from './hook'
Expand Down Expand Up @@ -33,3 +34,16 @@ export function useMeting() {
onMetingInit(addonMeting.value)
useMetingLoadObserver(addonMeting.value)
}

export function useVisible() {
const visible = ref(true)
const route = useRoute()
const addonMeting = useAddonMeting()

watch(() => route.path, () => {
const global = addonMeting.value.global
visible.value = route.meta.frontmatter.aplayer ?? global ?? true
}, { immediate: true })

return visible
}
5 changes: 3 additions & 2 deletions packages/valaxy-addon-meting/components/MetingJs.vue
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<script lang="ts" setup>
import { useMeting } from '../client'
import { useMeting, useVisible } from '../client'
const props = withDefaults(defineProps<{
[key: string]: any
Expand All @@ -23,9 +23,10 @@ export interface MetingJsProps {
}
useMeting()
const visible = useVisible()
</script>

<template>
<!-- eslint-disable-next-line vue/component-name-in-template-casing -->
<meting-js v-bind="props" />
<meting-js v-show="visible" v-bind="props" />
</template>

0 comments on commit fe1c737

Please sign in to comment.