收口移动壳导入文件名归一
新增共享 HostBridge 导入文件名清洗函数 移动文件导入改用导入专用文件名归一边界 补充契约测试、移动配置门禁和协议文档
This commit is contained in:
@@ -32,6 +32,7 @@ import {
|
||||
HOST_BRIDGE_IMPORT_TEXT_MAX_BYTES,
|
||||
HOST_BRIDGE_TEXT_MIME_TYPES,
|
||||
normalizeHostBridgeExportFileName,
|
||||
normalizeHostBridgeImportFileName,
|
||||
} from '../../../../packages/shared/src/contracts/hostBridge';
|
||||
import { invalidRequest, ok } from './protocol';
|
||||
|
||||
@@ -239,6 +240,17 @@ function normalizeExportedImageFileName(
|
||||
: `${fileName}.${extension}`;
|
||||
}
|
||||
|
||||
function normalizeImportedImageFileName(
|
||||
rawFileName: unknown,
|
||||
mimeType: HostBridgeImageMimeType,
|
||||
) {
|
||||
const fileName = normalizeHostBridgeImportFileName(rawFileName);
|
||||
const extension = imageFileExtension(mimeType);
|
||||
return fileName.toLowerCase().endsWith(`.${extension}`)
|
||||
? fileName
|
||||
: `${fileName}.${extension}`;
|
||||
}
|
||||
|
||||
export async function exportTextFile(
|
||||
payload: unknown,
|
||||
): Promise<FileExportTextResult> {
|
||||
@@ -392,7 +404,7 @@ export async function importTextFile(): Promise<FileImportTextResult> {
|
||||
throw invalidRequest('text file is required');
|
||||
}
|
||||
|
||||
const fileName = normalizeHostBridgeExportFileName(
|
||||
const fileName = normalizeHostBridgeImportFileName(
|
||||
asset.name || 'genarrative-import.txt',
|
||||
);
|
||||
const mimeType = normalizeImportedTextMimeType(asset.mimeType, fileName);
|
||||
@@ -446,7 +458,7 @@ export async function importDocumentFile(): Promise<FileImportDocumentResult> {
|
||||
throw invalidRequest('document file is required');
|
||||
}
|
||||
|
||||
const fileName = normalizeHostBridgeExportFileName(
|
||||
const fileName = normalizeHostBridgeImportFileName(
|
||||
asset.name || 'genarrative-import-document.txt',
|
||||
);
|
||||
const mimeType = normalizeImportedDocumentMimeType(asset.mimeType, fileName);
|
||||
@@ -603,8 +615,9 @@ function imagePickerResultToImportPayload(
|
||||
|
||||
return {
|
||||
action,
|
||||
fileName: normalizeHostBridgeExportFileName(
|
||||
fileName: normalizeImportedImageFileName(
|
||||
asset.fileName || fallbackImportedImageFileName(mimeType),
|
||||
mimeType,
|
||||
),
|
||||
base64Data,
|
||||
mimeType,
|
||||
@@ -692,6 +705,17 @@ function normalizeExportedAudioFileName(
|
||||
: `${fileName}.${extension}`;
|
||||
}
|
||||
|
||||
function normalizeImportedAudioFileName(
|
||||
rawFileName: unknown,
|
||||
mimeType: HostBridgeAudioMimeType,
|
||||
) {
|
||||
const fileName = normalizeHostBridgeImportFileName(rawFileName);
|
||||
const extension = audioFileExtension(mimeType);
|
||||
return fileName.toLowerCase().endsWith(`.${extension}`)
|
||||
? fileName
|
||||
: `${fileName}.${extension}`;
|
||||
}
|
||||
|
||||
function normalizeImportedAudioMimeType(
|
||||
value: unknown,
|
||||
fileName: string,
|
||||
@@ -796,7 +820,7 @@ export async function importAudioFile(): Promise<FileImportAudioResult> {
|
||||
throw invalidRequest('audio file is required');
|
||||
}
|
||||
|
||||
const fileName = normalizeHostBridgeExportFileName(
|
||||
const fileName = normalizeHostBridgeImportFileName(
|
||||
asset.name || 'genarrative-import-audio.webm',
|
||||
);
|
||||
const mimeType = normalizeImportedAudioMimeType(asset.mimeType, fileName);
|
||||
|
||||
Reference in New Issue
Block a user