@@ -907,10 +907,41 @@ class RNMatrixSDK: RCTEventEmitter {
907
907
uploadId: url
908
908
] )
909
909
} , failure: { ( error) in
910
-
910
+ reject ( nil , " Failed to upload " , error )
911
911
} )
912
912
}
913
913
914
+ @objc ( contentGetDownloadableUrl: resolver: rejecter: )
915
+ func contentGetDownloadableUrl( matrixContentUri: String , resolve: @escaping RCTPromiseResolveBlock , reject: @escaping RCTPromiseRejectBlock ) {
916
+ if mxSession == nil {
917
+ reject ( E_MATRIX_ERROR, " client is not connected yet " , nil )
918
+ return
919
+ }
920
+
921
+ let url = mxSession. mediaManager. url ( ofContent: matrixContentUri)
922
+ if ( ( url) != nil ) {
923
+ resolve ( url)
924
+ } else {
925
+ reject ( nil , " Failed to get content uri " , nil )
926
+ }
927
+ }
928
+
929
+ @objc ( downloadContent: mimeType: folder: resolver: rejecter: )
930
+ func downloadContent( matrixContentUri: String , mimeType: String , folder: String , resolve: @escaping RCTPromiseResolveBlock , reject: @escaping RCTPromiseRejectBlock ) {
931
+ if mxSession == nil {
932
+ reject ( E_MATRIX_ERROR, " client is not connected yet " , nil )
933
+ return
934
+ }
935
+
936
+ let mediaLoader = mxSession. mediaManager. downloadMedia ( fromMatrixContentURI: matrixContentUri, withType: mimeType, inFolder: folder, success: { ( fileUri) in
937
+ resolve ( fileUri)
938
+ } ) { ( e) in
939
+ reject ( nil , " Failed to download " , e)
940
+ }
941
+
942
+ print ( " [DOWNLOAD NATIVE IOS] download url: " + ( mediaLoader? . downloadMediaURL ?? " NO DOWNLOAD URL " ) )
943
+ }
944
+
914
945
@objc ( sendTyping: isTyping: timeout: resolver: rejecter: )
915
946
func sendTyping( roomId: String , isTyping: Bool , timeout: NSNumber , resolve: @escaping RCTPromiseResolveBlock , reject: @escaping RCTPromiseRejectBlock ) {
916
947
if mxSession == nil {
0 commit comments