import { redirect } from "next/navigation"; import { getSession } from "@/lib/auth"; import { db } from "@/lib/db"; import { PublishForm } from "./publish-form"; import { WebhookControl } from "./webhook-control"; export const dynamic="force-dynamic"; export default async function Dashboard({searchParams}:{searchParams:Promise<{error?:string;source?:string}>}){const query=await searchParams;const user=await getSession();if(!user)redirect('/login');const sources=db.prepare('SELECT s.id,s.name,s.base_url,s.sync_status,s.last_synced_at,s.last_error,s.webhook_secret_hash,s.last_webhook_at,s.user_id AS owner_id FROM sources s JOIN source_members sm ON sm.source_id=s.id WHERE sm.user_id=? ORDER BY s.id DESC').all(user.id) as any[];return <>

控制台

{query.error&&

{query.error}

}{query.source==='shared'?

你已加入既有的共享 Memos 來源,不會重複同步貼文。

:query.source&&

來源已連接,首次同步已排入佇列。

}

發佈到自己的 Memos

{sources.length?:

請先連接一個 Memos 來源。

}

連接 Memos

Token 會使用伺服器金鑰加密保存。同一個 Memos 帳號與網址會自動共用來源,不會建立重複貼文。

已連接來源

{sources.map(s=>
{s.name}{s.sync_status}

來源 ID:{s.id}
{s.base_url}
上次同步:{s.last_synced_at||'尚未完成'}
Webhook:{s.webhook_secret_hash?(s.last_webhook_at?`最近收到:${new Date(s.last_webhook_at+'Z').toLocaleString('zh-TW')}`:'已建立 URL,尚未收到呼叫'):'尚未建立 URL'}{s.last_error&&<>
{s.last_error}}

{s.owner_id===user.id?:

這是共享來源;只有建立者可以管理 webhook。

}
)}
}