feat(invitations): 邀请好友入口前置到顶部导航并补登录兜底
This commit is contained in:
@@ -13,6 +13,7 @@ import {
|
||||
type TableColumnsType,
|
||||
} from 'antd'
|
||||
import { CopyOutlined, GiftOutlined, ReloadOutlined } from '@ant-design/icons'
|
||||
import { Navigate } from 'react-router-dom'
|
||||
|
||||
import {
|
||||
fetchInvitedRecords,
|
||||
@@ -142,6 +143,7 @@ const rebateColumns: TableColumnsType<InviteRebateLedger> = [
|
||||
|
||||
export function InvitationsPage() {
|
||||
const user = useSessionStore(state => state.user)
|
||||
const hydrated = useSessionStore(state => state.hydrated)
|
||||
const [tab, setTab] = useState('records')
|
||||
const [recordPage, setRecordPage] = useState(1)
|
||||
const [rebatePage, setRebatePage] = useState(1)
|
||||
@@ -160,6 +162,10 @@ export function InvitationsPage() {
|
||||
|
||||
const summary = summaryQuery.data
|
||||
|
||||
// 邀请返利需要登录后查看;未登录直接跳登录页,登录后回到本页。
|
||||
if (!hydrated) return null
|
||||
if (!user) return <Navigate to="/login?redirect=/invitations" replace />
|
||||
|
||||
const copyLink = async () => {
|
||||
if (!summary?.invite_link) return
|
||||
try {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { Button, Card, ErrorBlock, NavBar, Skeleton, Tag, Toast } from 'antd-mobile'
|
||||
import { useQuery } from '@tanstack/react-query'
|
||||
import { useNavigate } from 'react-router-dom'
|
||||
import { Navigate, useNavigate } from 'react-router-dom'
|
||||
|
||||
import { fetchInvitedRecords, useInvitationSummary } from '@/features/invitations/api'
|
||||
import { useSessionStore } from '@/stores/session'
|
||||
@@ -16,6 +16,7 @@ const stageLabels: Record<string, string> = {
|
||||
export function MobileInvitationsPage() {
|
||||
const navigate = useNavigate()
|
||||
const user = useSessionStore(state => state.user)
|
||||
const hydrated = useSessionStore(state => state.hydrated)
|
||||
const summaryQuery = useInvitationSummary(Boolean(user))
|
||||
const recordsQuery = useQuery({
|
||||
queryKey: ['invitation-records', 1],
|
||||
@@ -26,6 +27,10 @@ export function MobileInvitationsPage() {
|
||||
const summary = summaryQuery.data
|
||||
const records = recordsQuery.data?.items ?? []
|
||||
|
||||
// 邀请返利需要登录后查看;未登录直接跳移动端登录页。
|
||||
if (!hydrated) return null
|
||||
if (!user) return <Navigate to="/m/login?redirect=/m/invitations" replace />
|
||||
|
||||
const copyLink = async () => {
|
||||
if (!summary?.invite_link) return
|
||||
try {
|
||||
|
||||
@@ -42,6 +42,18 @@ export function StorefrontLayout() {
|
||||
<NavLink to="/announcements" className={navLinkClass}>
|
||||
公告
|
||||
</NavLink>
|
||||
<NavLink
|
||||
to="/invitations"
|
||||
className={navLinkClass}
|
||||
onClick={event => {
|
||||
if (!user) {
|
||||
event.preventDefault()
|
||||
navigate('/login?redirect=/invitations')
|
||||
}
|
||||
}}
|
||||
>
|
||||
邀请好友
|
||||
</NavLink>
|
||||
</nav>
|
||||
|
||||
<Space size={12}>
|
||||
|
||||
Reference in New Issue
Block a user