--- import BaseLayout from '../../layouts/BaseLayout.astro'; import { createApiClient, resolvePublicApiBaseUrl, type PublicManagedSubscription, } from '../../lib/api/client'; const token = Astro.url.searchParams.get('token')?.trim() ?? ''; const api = createApiClient({ requestUrl: Astro.url }); const apiBaseUrl = resolvePublicApiBaseUrl(Astro.url); const EVENT_OPTIONS = [ { value: 'post.published', label: '新文章通知' }, { value: 'digest.weekly', label: '每周简报' }, { value: 'digest.monthly', label: '每月简报' }, { value: 'comment.created', label: '评论通知' }, { value: 'friend_link.created', label: '友链申请通知' }, ] as const; const asObject = (value: unknown) => { if (!value || typeof value !== 'object' || Array.isArray(value)) { return {} as Record; } return value as Record; }; const normalizeStringList = (value: unknown) => { if (!Array.isArray(value)) { return [] as string[]; } return value .map((item) => String(item).trim()) .filter(Boolean); }; let subscription: PublicManagedSubscription | null = null; let errorMessage = ''; if (token) { try { const response = await api.getManagedSubscription(token); subscription = response.subscription; } catch (error) { errorMessage = error instanceof Error ? error.message : '无法加载订阅信息。'; } } else { errorMessage = '缺少管理令牌。'; } const filters = asObject(subscription?.filters); const initialEvents = normalizeStringList(filters.event_types); const initialCategories = normalizeStringList(filters.categories).join(', '); const initialTags = normalizeStringList(filters.tags).join(', '); const initialDisplayName = subscription?.display_name ?? ''; const initialStatus = subscription?.status === 'paused' ? 'paused' : 'active'; ---

subscriptions / manage

管理订阅偏好

{subscription ? ( <>

当前目标:{subscription.target} · 频道:{subscription.channel_type}

验证状态:{subscription.verified_at ? '已确认' : '待确认'} · 当前状态:{subscription.status}

通知类型
{EVENT_OPTIONS.map((item) => ( ))}
订阅状态
去退订

你可以随时在这里调整通知类型、暂停或退订。

) : (

{errorMessage}

)}
{subscription && ( )}