接入原生壳文本文件导入能力

新增 file.importText HostBridge 契约和 H5 facade

移动端通过 Expo DocumentPicker 读取受控文本文件

桌面端通过 Tauri 文件选择框读取受控文本文件

更新壳能力检查、测试、方案文档和共享决策记录
This commit is contained in:
2026-06-18 04:51:56 +08:00
parent c7a24fba37
commit 1c6749b53e
16 changed files with 527 additions and 4 deletions

View File

@@ -57,6 +57,7 @@ describe('HostBridge shared contract helpers', () => {
expect(isHostBridgeCapability('network.status')).toBe(true);
expect(isHostBridgeCapability('network.statusChanged')).toBe(true);
expect(isHostBridgeCapability('clipboard.readText')).toBe(true);
expect(isHostBridgeCapability('file.importText')).toBe(true);
expect(isHostBridgeCapability('file.importImage')).toBe(true);
expect(isHostBridgeCapability('file.imageDropped')).toBe(true);
expect(isHostBridgeCapability('app.setBadgeCount')).toBe(true);

View File

@@ -28,6 +28,7 @@ export const HOST_BRIDGE_METHODS = [
'clipboard.writeText',
'clipboard.readText',
'file.exportText',
'file.importText',
'file.exportImage',
'file.importImage',
'haptics.impact',
@@ -291,6 +292,20 @@ export type FileExportTextResult = {
bytes: number;
};
export type HostBridgeTextMimeType =
| 'text/plain'
| 'text/markdown'
| 'text/csv'
| 'application/json';
export type FileImportTextResult = {
action: 'selected';
fileName: string;
content: string;
mimeType: HostBridgeTextMimeType;
bytes: number;
};
export type FileExportImagePayload = {
fileName: string;
base64Data: string;