import { apiRequest } from '@/lib/api/client'; import type { BootstrapTokenPayload, AuthSource, AuthSourcePayload, DatabaseCleanupPayload, DatabaseCleanupResult, ExternalAccountBinding, GeoIPLookupResult, OptionBatchPayload, OptionItem, SettingsProfile, UpdateSelfPayload, } from '@/features/settings/types'; export function getOptions() { return apiRequest('/option/'); } export function updateOption(key: string, value: string) { return apiRequest('/option/update', { method: 'POST', body: JSON.stringify({ key, value }), }); } export function updateOptions(options: OptionBatchPayload['options']) { return apiRequest('/option/update-batch', { method: 'POST', body: JSON.stringify({ options }), }); } export function lookupGeoIP(provider: string, ip: string) { return apiRequest('/option/geoip/lookup', { method: 'POST', body: JSON.stringify({ provider, ip }), }); } export function cleanupDatabaseObservability(payload: DatabaseCleanupPayload) { return apiRequest('/option/database/cleanup', { method: 'POST', body: JSON.stringify(payload), }); } export function getAuthSources() { return apiRequest('/auth-sources/'); } export function createAuthSource(payload: AuthSourcePayload) { return apiRequest('/auth-sources/', { method: 'POST', body: JSON.stringify(payload), }); } export function updateAuthSource(id: number, payload: AuthSourcePayload) { return apiRequest(`/auth-sources/${id}/update`, { method: 'POST', body: JSON.stringify(payload), }); } export function toggleAuthSource(id: number, isActive: boolean) { return apiRequest(`/auth-sources/${id}/toggle`, { method: 'POST', body: JSON.stringify({ is_active: isActive }), }); } export function deleteAuthSource(id: number) { return apiRequest(`/auth-sources/${id}/delete`, { method: 'POST', }); } export function getExternalAccountBindings() { return apiRequest('/oauth/external-accounts/'); } export function deleteExternalAccountBinding(id: number) { return apiRequest(`/oauth/external-accounts/${id}/delete`, { method: 'POST', }); } export function getBootstrapToken() { return apiRequest('/nodes/bootstrap-token'); } export function rotateBootstrapToken() { return apiRequest('/nodes/bootstrap-token/rotate', { method: 'POST', }); } export function getSettingsProfile() { return apiRequest('/user/self'); } export function updateSelf(payload: UpdateSelfPayload) { return apiRequest('/user/self/update', { method: 'POST', body: JSON.stringify(payload), }); } export function generateAccessToken() { return apiRequest('/user/token'); } export function bindWeChat(code: string) { return apiRequest( `/oauth/wechat/bind?code=${encodeURIComponent(code)}`, ); } export function bindEmail(email: string, code: string) { const searchParams = new URLSearchParams({ email, code }); return apiRequest(`/oauth/email/bind?${searchParams.toString()}`); } export function getAboutContent() { return apiRequest('/about'); }