@@ -16,6 +16,11 @@ import { useDrive } from '@internxt-mobile/hooks/drive';
1616import { imageService , logger } from '@internxt-mobile/services/common' ;
1717import { uploadService } from '@internxt-mobile/services/common/network/upload/upload.service' ;
1818import drive from '@internxt-mobile/services/drive' ;
19+ import {
20+ generateAndroidFileName ,
21+ isTemporaryAndroidFileName ,
22+ parseExifDate ,
23+ } from '@internxt-mobile/services/drive/file/utils/exifHelpers' ;
1924import errorService from '@internxt-mobile/services/ErrorService' ;
2025import { DriveFileData , EncryptionVersion , FileEntryByUuid , Thumbnail } from '@internxt/sdk/dist/drive/storage/types' ;
2126import { SaveFormat } from 'expo-image-manipulator' ;
@@ -446,7 +451,6 @@ function AddModal(): JSX.Element {
446451 try {
447452 const assetInfo = await MediaLibrary . getAssetInfoAsync ( asset . assetId || asset . uri ) ;
448453 const cleanUri = assetInfo . mediaType === 'video' ? asset . uri : assetInfo . localUri || asset . uri ;
449- // asset info has the correct format (heic issue)
450454 const originalFileName = assetInfo . filename || asset . fileName ;
451455
452456 let fileSize = asset . fileSize ;
@@ -534,7 +538,15 @@ function AddModal(): JSX.Element {
534538 for ( const asset of result . assets ) {
535539 try {
536540 const cleanUri = asset . uri ;
537- const originalFileName = asset . fileName || `media_${ Date . now ( ) } .jpg` ;
541+ let originalFileName = asset . fileName ;
542+ const exif = asset . exif || null ;
543+
544+ const creationTime = parseExifDate ( exif ?. DateTimeOriginal ) ;
545+ const modificationTime = parseExifDate ( exif ?. DateTime ) ;
546+ if ( isTemporaryAndroidFileName ( originalFileName ) ) {
547+ originalFileName = generateAndroidFileName ( cleanUri , creationTime , modificationTime ) ;
548+ }
549+
538550 let fileSize = asset . fileSize ?? 0 ;
539551 if ( ! fileSize ) {
540552 try {
@@ -545,40 +557,15 @@ function AddModal(): JSX.Element {
545557 fileSize = 0 ;
546558 }
547559 }
548- const exif = asset . exif || null ;
549-
550- // Extract this logic to function before PR
551- // Parse EXIF DateTimeOriginal (creation time) - formato: "YYYY:MM:DD HH:mm:ss"
552- let parsedCreationTime ;
553- if ( exif ?. DateTimeOriginal ) {
554- const fixedDate = exif . DateTimeOriginal . replace ( / ^ ( \d { 4 } ) : ( \d { 2 } ) : ( \d { 2 } ) / , '$1-$2-$3' ) ;
555- parsedCreationTime = new Date ( fixedDate ) ;
556- }
557-
558- // Parse EXIF DateTime (modification time) - formato: "YYYY:MM:DD HH:mm:ss"
559- let parsedModificationTime ;
560- if ( exif ?. DateTime ) {
561- const fixedDate = exif . DateTime . replace ( / ^ ( \d { 4 } ) : ( \d { 2 } ) : ( \d { 2 } ) / , '$1-$2-$3' ) ;
562- parsedModificationTime = new Date ( fixedDate ) ;
563- }
564-
565- console . log (
566- '[ANDROID-METADATA-DEBUG] Creation time (DateTimeOriginal):' ,
567- parsedCreationTime ?. toISOString ( ) ,
568- ) ;
569- console . log (
570- '[ANDROID-METADATA-DEBUG] Modification time (DateTime):' ,
571- parsedModificationTime ?. toISOString ( ) ,
572- ) ;
573560
574561 documents . push ( {
575562 fileCopyUri : cleanUri ,
576563 name : decodeURIComponent ( originalFileName ?? '' ) ,
577564 size : fileSize ,
578565 type : drive . file . getExtensionFromUri ( cleanUri ) ?. toLowerCase ( ) ?? '' ,
579566 uri : cleanUri ,
580- creationTime : parsedCreationTime ? parsedCreationTime . toISOString ( ) : undefined ,
581- modificationTime : parsedModificationTime ? parsedModificationTime . toISOString ( ) : undefined ,
567+ creationTime,
568+ modificationTime,
582569 } ) ;
583570 } catch ( error ) {
584571 logger . error ( 'Error obtaining original asset info:' , error ) ;
0 commit comments