Browse Source

feat(app): 添加分享功能并优化权限检查逻辑

EvilDragon 3 months ago
parent
commit
81cba68d6e

+ 2 - 1
packages/app/src/composables/permissions.ts

@@ -3,7 +3,7 @@ import { storeToRefs } from 'pinia'
 
 export const usePermissions = () => {
   const userStore = useUserStore()
-  const { isLogined, isDesigner } = storeToRefs(userStore)
+  const { isLogined, isDesigner, userInfo } = storeToRefs(userStore)
   const routes = [
     { path: '/pages/mine/homepage/index', meta: { canNotLogin: false, canNotDesigner: true } },
     {
@@ -58,6 +58,7 @@ export const usePermissions = () => {
     about: isDesigner.value,
     toDesignerHomePage: isLogined.value,
     checkInAtStoreTask: isDesigner.value,
+    // shareMoment: isLogined.value && isDesigner.value && userInfo.value.level.level > 1,
   }))
   return { isLogined, isDesigner, routes, features }
 }

+ 17 - 0
packages/app/src/core/libs/actions.ts

@@ -1,5 +1,7 @@
 import { title } from 'radash'
 import { cancelCircleReviewUpvote, cancelCircleUpvote, createCircleUpvote } from './requests'
+import { useUserStore } from '@/store'
+import { useRouter } from '../utils/router'
 
 const toast = (title: string) => uni.showToast({ title, icon: 'none' })
 export const handleUpvoteClick = async (
@@ -25,3 +27,18 @@ export const handleUpvoteClick = async (
   }
   callback && callback()
 }
+/**
+ * 分享圈子
+ */
+export const handleShareClick = () => {
+  const userStore = useUserStore()
+  if (!userStore.isLogined) {
+    return useRouter().push('/pages/login/index')
+  }
+  if (!userStore.isDesigner) {
+    return useRouter().push('/pages/mine/authentication/index')
+  }
+  if (userStore.userInfo.level?.level < 2) {
+    return toast('请先升级为设计师')
+  }
+}

+ 7 - 3
packages/app/src/pages/home/index.vue

@@ -23,7 +23,7 @@ import { ComponentExposed } from 'vue-component-type-helpers'
 import { usePermissions } from '../../composables/permissions'
 import { storeToRefs } from 'pinia'
 import { messages } from '../../core/libs/messages'
-import { handleUpvoteClick } from '../../core/libs/actions'
+import { handleUpvoteClick, handleShareClick } from '../../core/libs/actions'
 import { useUserStore } from '../../store'
 
 defineOptions({
@@ -64,10 +64,14 @@ const handleLike = async (options) => {
   pageHelperRef.value?.refresh()
 }
 onShareAppMessage(async ({ from, target }) => {
+  console.log('from', from)
+  console.log('target', target)
   const res: Page.CustomShareContent = {}
   if (from === 'button') {
-    await shareCircle(target.id)
-    res.path = `/pages/home/moment/index?id=${target.id}`
+    handleShareClick()
+    console.log('分享')
+    await shareCircle(target.dataset.options.id)
+    res.path = `/pages/home/moment/index?id=${target.dataset.options.id}`
     res.imageUrl = target.dataset.options.bannerUrls[0]
     res.title = `${target.dataset.options.stylistName}: ${target.dataset.options.circleDesc}`
   }