Skip to content

Commit 939d2b4

Browse files
committed
fix: fixed createFileService.native to save media files properly on Android (QM-1766)
1 parent 811039b commit 939d2b4

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

packages/uikit-react-native/src/platform/createFileService.native.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import type * as Permissions from 'react-native-permissions';
77
import type { Permission } from 'react-native-permissions';
88

99
import { getFileExtension, getFileType } from '@sendbird/uikit-utils';
10+
import { normalizeFileName } from '@sendbird/uikit-utils/src/shared/regex';
1011

1112
import SBUError from '../libs/SBUError';
1213
import fileTypeGuard from '../utils/fileTypeGuard';
@@ -194,7 +195,11 @@ const createNativeFileService = ({
194195

195196
if (Platform.OS === 'android') {
196197
const dirType = { 'file': 'downloads', 'audio': 'audio', 'image': 'images', 'video': 'video' } as const;
197-
await fsModule.FileSystem.cpExternal(downloadPath, options.fileName, dirType[fileType]);
198+
await fsModule.FileSystem.cpExternal(
199+
downloadPath,
200+
normalizeFileName(options.fileName, getFileExtension(options.fileUrl)) + '.mov',
201+
dirType[fileType],
202+
);
198203
}
199204
return downloadPath;
200205
}

packages/uikit-utils/src/shared/regex.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,3 +72,14 @@ export function getFileExtension(filePath: string) {
7272
if (idx === -1) return '';
7373
return filePath.slice(idx - filePath.length).toLowerCase();
7474
}
75+
export function normalizeFileName(fileName: string, extension: string) {
76+
if (fileName.indexOf(extension)) {
77+
return fileName;
78+
} else {
79+
if (extension.indexOf('.') === 0) {
80+
return `${fileName}${extension}`;
81+
} else {
82+
return `${fileName}.${extension}`;
83+
}
84+
}
85+
}

0 commit comments

Comments
 (0)