Files
jiang13-forum/frontend/src/utils/friendLink.ts

39 lines
1.3 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import type { FriendLinkApply } from '../api/types';
/** 解析友链 LOGO 为可加载的 URL相对路径补全为当前站点 origin */
export function resolveFriendLinkLogo(logo?: string, siteURL?: string): string {
const raw = logo?.trim() || '';
if (!raw) return '';
if (/^https?:\/\//i.test(raw)) return raw;
if (raw.startsWith('/')) {
const base = siteURL?.trim() || (typeof window !== 'undefined' ? window.location.origin : '');
return base ? `${base.replace(/\/$/, '')}${raw}` : raw;
}
return raw;
}
/** 回链检测是否仍在后台进行中 */
export function isReciprocalChecking(apply: FriendLinkApply): boolean {
if (apply.status !== 'pending') return false;
if (apply.reciprocal_checked_at) return false;
if (apply.reciprocal_verified) return false;
if (apply.reciprocal_check_note?.trim()) return false;
return true;
}
export function reciprocalStatusLabel(apply: FriendLinkApply): {
text: string;
variant: 'green' | 'orange' | 'secondary';
} {
if (isReciprocalChecking(apply)) {
return { text: '检测中…', variant: 'secondary' };
}
if (apply.reciprocal_verified) {
return { text: '回链已检测到', variant: 'green' };
}
if (apply.reciprocal_check_note?.trim()) {
return { text: apply.reciprocal_check_note, variant: 'orange' };
}
return { text: '未检测', variant: 'secondary' };
}