387a1c26e3
清理已跟踪原始日志与个人本地配置 修复前后端有效门禁、测试和构建问题 补齐生产 Jenkins、SpacetimeDB 本地命令与文档约束 收紧图片编辑器状态、附件与媒体引用测试 排除已下线旧创作入口测试并清理 warning
108 lines
3.8 KiB
TypeScript
108 lines
3.8 KiB
TypeScript
import { type HostBridgeRequest } from '../../../../packages/shared/src/contracts/hostBridge';
|
|
import { getMobileHostBridgeAppearanceColorScheme } from './appearance';
|
|
import { setMobileAppBadgeCount } from './badge';
|
|
import {
|
|
readMobileHostBridgeClipboardText,
|
|
writeMobileHostBridgeClipboardText,
|
|
} from './clipboard';
|
|
import {
|
|
captureMobileHostBridgeImageFile,
|
|
exportMobileHostBridgeAudioFile,
|
|
exportMobileHostBridgeImageFile,
|
|
exportMobileHostBridgeTextFile,
|
|
importMobileHostBridgeAudioFile,
|
|
importMobileHostBridgeDocumentFile,
|
|
importMobileHostBridgeImageFile,
|
|
importMobileHostBridgeTextFile,
|
|
} from './files';
|
|
import { runMobileHostBridgeHapticsImpact } from './haptics';
|
|
import {
|
|
openMobileHostBridgeExternalUrl,
|
|
openMobileHostBridgeNativePage,
|
|
reloadMobileHostBridgeWebView,
|
|
} from './navigation';
|
|
import { getMobileHostBridgeNetworkStatus } from './network';
|
|
import { showMobileHostBridgeLocalNotification } from './notifications';
|
|
import {
|
|
failure,
|
|
type MobileHostBridgeNavigation,
|
|
unsupported,
|
|
} from './protocol';
|
|
import { getMobileHostBridgeRuntimeResponse } from './runtime';
|
|
import { resetQrScannerForTest, scanMobileHostBridgeQrCode } from './scanner';
|
|
import {
|
|
openShare,
|
|
resetMobileHostBridgeShareTargetForTest,
|
|
setMobileHostBridgeShareTarget,
|
|
} from './share';
|
|
|
|
let navigation: MobileHostBridgeNavigation | null = null;
|
|
|
|
export function configureMobileHostBridgeNavigation(
|
|
nextNavigation: MobileHostBridgeNavigation | null,
|
|
) {
|
|
navigation = nextNavigation;
|
|
}
|
|
|
|
export async function dispatchMobileHostBridgeRequest(
|
|
request: HostBridgeRequest,
|
|
) {
|
|
switch (request.method) {
|
|
case 'host.getRuntime':
|
|
return getMobileHostBridgeRuntimeResponse(request);
|
|
case 'appearance.getColorScheme':
|
|
return getMobileHostBridgeAppearanceColorScheme(request);
|
|
case 'app.openExternalUrl':
|
|
return openMobileHostBridgeExternalUrl(request);
|
|
case 'app.reloadWebView':
|
|
return reloadMobileHostBridgeWebView(request, navigation);
|
|
case 'network.status':
|
|
return getMobileHostBridgeNetworkStatus(request);
|
|
case 'clipboard.writeText':
|
|
return writeMobileHostBridgeClipboardText(request);
|
|
case 'clipboard.readText':
|
|
return readMobileHostBridgeClipboardText(request);
|
|
case 'file.exportText':
|
|
return exportMobileHostBridgeTextFile(request);
|
|
case 'file.importText':
|
|
return importMobileHostBridgeTextFile(request);
|
|
case 'file.importDocument':
|
|
return importMobileHostBridgeDocumentFile(request);
|
|
case 'file.exportImage':
|
|
return exportMobileHostBridgeImageFile(request);
|
|
case 'file.importImage':
|
|
return importMobileHostBridgeImageFile(request);
|
|
case 'file.captureImage':
|
|
return captureMobileHostBridgeImageFile(request);
|
|
case 'scanner.scanQrCode':
|
|
return scanMobileHostBridgeQrCode(request);
|
|
case 'file.importAudio':
|
|
return importMobileHostBridgeAudioFile(request);
|
|
case 'file.exportAudio':
|
|
return exportMobileHostBridgeAudioFile(request);
|
|
case 'haptics.impact':
|
|
return runMobileHostBridgeHapticsImpact(request);
|
|
case 'notification.showLocal':
|
|
return showMobileHostBridgeLocalNotification(request);
|
|
case 'app.setBadgeCount':
|
|
return setMobileAppBadgeCount(request);
|
|
case 'share.open':
|
|
return openShare(request);
|
|
case 'share.setTarget':
|
|
return setMobileHostBridgeShareTarget(request);
|
|
case 'navigation.openNativePage':
|
|
return openMobileHostBridgeNativePage(request, navigation);
|
|
case 'auth.requestLogin':
|
|
case 'payment.request':
|
|
return failure(request, unsupported(request.method));
|
|
default:
|
|
return failure(request, unsupported(request.method));
|
|
}
|
|
}
|
|
|
|
export function resetMobileHostBridgeDispatchForTest() {
|
|
navigation = null;
|
|
resetMobileHostBridgeShareTargetForTest();
|
|
resetQrScannerForTest();
|
|
}
|