| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| |
| export function buildShareUrl(question: string, lang?: string): string { |
| if (typeof window === 'undefined') return ''; |
| const url = new URL(window.location.origin); |
| url.searchParams.set('q', question); |
| if (lang) url.searchParams.set('lang', lang); |
| return url.toString(); |
| } |
|
|
| |
| export function buildOgUrl(question: string, lang?: string): string { |
| if (typeof window === 'undefined') return ''; |
| const url = new URL('/api/og', window.location.origin); |
| if (question) url.searchParams.set('q', question); |
| if (lang) url.searchParams.set('lang', lang); |
| return url.toString(); |
| } |
|
|
| |
| |
| |
| |
| |
| export async function shareMessage( |
| question: string, |
| lang?: string, |
| ): Promise<'shared' | 'copied' | 'failed'> { |
| const url = buildShareUrl(question, lang); |
| if (!url) return 'failed'; |
|
|
| const shareData: ShareData = { |
| title: 'MedOS — free AI medical assistant', |
| text: question, |
| url, |
| }; |
|
|
| try { |
| if ( |
| typeof navigator !== 'undefined' && |
| typeof navigator.share === 'function' && |
| navigator.canShare?.(shareData) !== false |
| ) { |
| await navigator.share(shareData); |
| return 'shared'; |
| } |
| } catch { |
| |
| } |
|
|
| try { |
| if (navigator?.clipboard?.writeText) { |
| await navigator.clipboard.writeText(url); |
| return 'copied'; |
| } |
| } catch { |
| |
| } |
|
|
| return 'failed'; |
| } |
|
|
| |
| export function readPrefillQuery(): string | null { |
| if (typeof window === 'undefined') return null; |
| const params = new URLSearchParams(window.location.search); |
| const q = params.get('q'); |
| return q && q.trim().length > 0 ? q.trim().slice(0, 500) : null; |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| export const FOLLOW_UP_PROMPTS = [ |
| 'Tell me more', |
| 'What causes this?', |
| 'Should I see a doctor?', |
| 'How can I prevent it?', |
| ] as const; |
|
|