diff --git a/android/app/src/main/java/com/expensify/chat/ShareActionHandlerModule.kt b/android/app/src/main/java/com/expensify/chat/ShareActionHandlerModule.kt index dcb94d19a22d..14258ea744f9 100644 --- a/android/app/src/main/java/com/expensify/chat/ShareActionHandlerModule.kt +++ b/android/app/src/main/java/com/expensify/chat/ShareActionHandlerModule.kt @@ -36,7 +36,6 @@ class ShareActionHandlerModule(reactContext: ReactApplicationContext) : val shareObject = JSONObject(shareObjectString) val content = shareObject.optString("content") val mimeType = shareObject.optString("mimeType") - val fileUriPath = "file://$content" val timestamp = System.currentTimeMillis() val file = File(content) @@ -53,6 +52,8 @@ class ShareActionHandlerModule(reactContext: ReactApplicationContext) : val identifier = file.name var aspectRatio = 0.0f + val fileUri = android.net.Uri.fromFile(file) + val fileUriPath = fileUri.toString() if (mimeType.startsWith("image/")) { val options = BitmapFactory.Options().apply { inJustDecodeBounds = true } diff --git a/ios/RCTShareActionHandlerModule.m b/ios/RCTShareActionHandlerModule.m index e058c304e3f1..9999fe45368b 100644 --- a/ios/RCTShareActionHandlerModule.m +++ b/ios/RCTShareActionHandlerModule.m @@ -86,7 +86,7 @@ - (NSDictionary *)processSingleFile:(NSString *)filePath { } else if ([mimeType hasPrefix:@"image/"]) { aspectRatio = [self imageAspectRatio:fileURL]; } - fileContent = [@"file://" stringByAppendingString:filePath]; + fileContent = [fileURL absoluteString]; } NSString *identifier = [self uniqueIdentifierForFilePath:filePath]; diff --git a/src/components/AttachmentPreview.tsx b/src/components/AttachmentPreview.tsx index 3fee12304160..560be3304cff 100644 --- a/src/components/AttachmentPreview.tsx +++ b/src/components/AttachmentPreview.tsx @@ -1,8 +1,9 @@ import {Str} from 'expensify-common'; import {ResizeMode, Video} from 'expo-av'; -import React, {useState} from 'react'; +import React, {useMemo, useState} from 'react'; import {View} from 'react-native'; import useThemeStyles from '@hooks/useThemeStyles'; +import {cleanFileName, getFileName} from '@libs/fileDownload/FileUtils'; import variables from '@styles/variables'; import {checkIsFileImage} from './Attachments/AttachmentView'; import DefaultAttachmentView from './Attachments/AttachmentView/DefaultAttachmentView'; @@ -29,9 +30,12 @@ type AttachmentPreviewProps = { function AttachmentPreview({source, aspectRatio = 1, onPress, onLoadError}: AttachmentPreviewProps) { const styles = useThemeStyles(); - const fileName = source.split('/').pop() ?? undefined; const fillStyle = aspectRatio < 1 ? styles.h100 : styles.w100; const [isEncryptedPDF, setIsEncryptedPDF] = useState(false); + const fileName = useMemo(() => { + const rawFileName = getFileName(source); + return cleanFileName(rawFileName); + }, [source]); if (typeof source === 'string' && Str.isVideo(source)) { return (