codexmobile-relay / client /src /hooks /useDocsActions.js
Codex
deploy: CodexMobile Relay
90f0300
Raw
History Blame Contribute Delete
1.9 kB
import { apiFetch } from '../api.js';
export function useDocsActions(app, loadStatus) {
async function handleConnectDocs() {
if (app.docsBusy) {
return;
}
app.setDocsBusy(true);
app.setDocsError('');
try {
const result = await apiFetch('/api/feishu/cli/auth/start', { method: 'POST' });
if (result.docs) {
app.setStatus((current) => ({ ...current, docs: result.docs }));
}
if (!result.verificationUrl) {
throw new Error('没有收到飞书授权地址');
}
window.location.assign(result.verificationUrl);
} catch (error) {
app.setDocsError(error.message || '飞书连接失败');
app.setDocsBusy(false);
}
}
async function handleDisconnectDocs() {
if (app.docsBusy) {
return;
}
app.setDocsBusy(true);
app.setDocsError('');
try {
await apiFetch('/api/feishu/cli/auth/logout', { method: 'POST' });
await loadStatus();
} catch (error) {
app.setDocsError(error.message || '断开飞书失败');
} finally {
app.setDocsBusy(false);
}
}
async function handleRefreshDocs() {
if (app.docsBusy) {
return;
}
app.setDocsBusy(true);
app.setDocsError('');
try {
await loadStatus();
} catch (error) {
app.setDocsError(error.message || '刷新飞书状态失败');
} finally {
app.setDocsBusy(false);
}
}
function handleOpenDocsHome() {
const docsUrl = String(app.status.docs?.homeUrl || 'https://docs.feishu.cn/').trim();
if (docsUrl) {
window.location.assign(docsUrl);
}
}
function handleOpenDocsAuth(url) {
const authUrl = String(url || '').trim();
if (authUrl) {
window.location.assign(authUrl);
}
}
return {
handleConnectDocs,
handleDisconnectDocs,
handleRefreshDocs,
handleOpenDocsHome,
handleOpenDocsAuth
};
}