feat: 优化个人中心邀请卡片
This commit is contained in:
@@ -1,8 +1,21 @@
|
||||
import { defineStore } from 'pinia'
|
||||
import { ref } from 'vue'
|
||||
import type { InviteActivitySummary } from '@mp-pilates/shared'
|
||||
import { get, post } from '../utils/request'
|
||||
|
||||
export const useInviteStore = defineStore('invite', () => {
|
||||
const activity = ref<InviteActivitySummary | null>(null)
|
||||
let activityRevision = 0
|
||||
async function refreshActivity() {
|
||||
const requestRevision = ++activityRevision
|
||||
try {
|
||||
const result = await get<InviteActivitySummary>('/invite/activity')
|
||||
if (requestRevision === activityRevision) activity.value = result
|
||||
} catch (err) {
|
||||
if (requestRevision === activityRevision) activity.value = null
|
||||
throw err
|
||||
}
|
||||
}
|
||||
const code = ref('')
|
||||
const eligible = ref(false)
|
||||
const pendingCode = ref('')
|
||||
@@ -30,11 +43,13 @@ export const useInviteStore = defineStore('invite', () => {
|
||||
}
|
||||
}
|
||||
function reset() {
|
||||
activityRevision++
|
||||
activity.value = null
|
||||
revision++
|
||||
code.value = ''
|
||||
eligible.value = false
|
||||
pendingCode.value = ''
|
||||
}
|
||||
function price(value: number) { return eligible.value ? Math.round(value * 95 / 100) : value }
|
||||
return { code, eligible, pendingCode, refresh, confirm, reset, price }
|
||||
return { activity, refreshActivity, code, eligible, pendingCode, refresh, confirm, reset, price }
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user