Skip to content

Commit e4b227e

Browse files
author
Riccardo Cipolleschi
committed
feat: update iOS implementation
1 parent 2596408 commit e4b227e

11 files changed

+109
-27
lines changed

android.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// Use of this source code is governed by a MIT-style license that can be
33
// found in the LICENSE file.
44

5-
import { NativeModules, Platform } from 'react-native';
5+
import { Platform } from 'react-native';
66
import ReactNativeBlobUtil from './codegenSpecs/NativeBlobUtils';
77

88
/**

class/ReactNativeBlobUtilFile.js

+1-13
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,4 @@
22
// Use of this source code is governed by a MIT-style license that can be
33
// found in the LICENSE file.
44

5-
6-
import {
7-
NativeModules,
8-
DeviceEventEmitter,
9-
NativeAppEventEmitter,
10-
} from 'react-native';
11-
12-
const ReactNativeBlobUtil = NativeModules.ReactNativeBlobUtil;
13-
const emitter = DeviceEventEmitter;
14-
15-
export default class ReactNativeBlobUtilFile {
16-
17-
}
5+
export default class ReactNativeBlobUtilFile {}

class/ReactNativeBlobUtilReadStream.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,12 @@
33
// found in the LICENSE file.
44

55
import {
6-
NativeModules,
76
DeviceEventEmitter,
87
NativeAppEventEmitter,
98
} from 'react-native';
109
import UUID from '../utils/uuid';
1110

12-
const ReactNativeBlobUtil = NativeModules.ReactNativeBlobUtil;
11+
import ReactNativeBlobUtil from "../codegenSpecs/NativeBlobUtils";
1312
const emitter = DeviceEventEmitter;
1413

1514
export default class ReactNativeBlobUtilReadStream {

class/ReactNativeBlobUtilSession.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,11 @@
33
// found in the LICENSE file.
44

55
import {
6-
NativeModules,
76
DeviceEventEmitter,
87
NativeAppEventEmitter,
98
} from 'react-native';
109

11-
const ReactNativeBlobUtil = NativeModules.ReactNativeBlobUtil;
10+
import ReactNativeBlobUtil from "../codegenSpecs/NativeBlobUtils";
1211

1312
let sessions = {};
1413

class/ReactNativeBlobUtilWriteStream.js

+1-3
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,11 @@
33
// found in the LICENSE file.
44

55
import {
6-
NativeModules,
76
DeviceEventEmitter,
87
NativeAppEventEmitter,
98
} from 'react-native';
109

11-
const ReactNativeBlobUtil = NativeModules.ReactNativeBlobUtil;
12-
10+
import ReactNativeBlobUtil from "../codegenSpecs/NativeBlobUtils";
1311
export default class ReactNativeBlobUtilWriteStream {
1412

1513
id : string;

fetch.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import {ReactNativeBlobUtilConfig} from "./types";
22
import URIUtil from "./utils/uri";
33
import fs from "./fs";
44
import getUUID from "./utils/uuid";
5-
import {DeviceEventEmitter, NativeModules} from "react-native";
5+
import {DeviceEventEmitter} from "react-native";
66
import {FetchBlobResponse} from "./class/ReactNativeBlobUtilBlobResponse";
77
import ReactNativeBlobUtil from "./codegenSpecs/NativeBlobUtils";
88

fs.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
// import type {ReactNativeBlobUtilConfig, ReactNativeBlobUtilNative, ReactNativeBlobUtilStream} from './types'
66

7-
import {NativeModules, Platform} from 'react-native';
7+
import {Platform} from 'react-native';
88
import ReactNativeBlobUtilSession from './class/ReactNativeBlobUtilSession';
99
import ReactNativeBlobUtilWriteStream from './class/ReactNativeBlobUtilWriteStream';
1010
import ReactNativeBlobUtilReadStream from './class/ReactNativeBlobUtilReadStream';

ios.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// Use of this source code is governed by a MIT-style license that can be
33
// found in the LICENSE file.
44

5-
import { NativeModules, Platform } from "react-native";
5+
import { Platform } from "react-native";
66
import ReactNativeBlobUtil from "./codegenSpecs/NativeBlobUtils";
77

88
/**

ios/ReactNativeBlobUtil/ReactNativeBlobUtil.h

+9
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@
2828

2929
#import <UIKit/UIKit.h>
3030

31+
#if RCT_NEW_ARCH_ENABLED
32+
#import <React-Codegen/ReactNativeBlobUtilSpec/ReactNativeBlobUtilSpec.h>
33+
#endif
34+
3135

3236
@interface ReactNativeBlobUtil : NSObject <RCTBridgeModule, UIDocumentInteractionControllerDelegate> {
3337

@@ -42,4 +46,9 @@
4246

4347
@end
4448

49+
#if RCT_NEW_ARCH_ENABLED
50+
@interface ReactNativeBlobUtil () <NativeBlobUtilsSpec>
51+
@end
52+
#endif
53+
4554
#endif /* ReactNativeBlobUtil_h */

ios/ReactNativeBlobUtil/ReactNativeBlobUtil.mm

+91-1
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,10 @@ - (id) init {
7474
return self;
7575
}
7676

77+
- (NSDictionary *)getConstants {
78+
return self.constantsToExport;
79+
}
80+
7781
- (NSDictionary *)constantsToExport
7882
{
7983
return @{
@@ -86,6 +90,11 @@ - (NSDictionary *)constantsToExport
8690
@"MusicDir" : [ReactNativeBlobUtilFS getMusicDir],
8791
@"PictureDir" : [ReactNativeBlobUtilFS getPictureDir],
8892
@"ApplicationSupportDir" : [ReactNativeBlobUtilFS getApplicationSupportDir],
93+
// Android only. For the new architecture, we have a single spec for both platforms.
94+
@"RingtoneDir": @"",
95+
@"SDCardDir": @"",
96+
@"SDCardApplicationDir": @"",
97+
@"DCIMDir": @"",
8998
};
9099
}
91100

@@ -853,7 +862,7 @@ - (void)excludeFromBackupKey:(NSString *)url
853862
[ReactNativeBlobUtilFS df:callback];
854863
}
855864

856-
- (UIViewController *) documentInteractionControllerViewControllerForPreview: (UIDocumentInteractionController *) controller
865+
- (UIViewController *)documentInteractionControllerViewControllerForPreview: (UIDocumentInteractionController *) controller
857866
{
858867
UIWindow *window = [UIApplication sharedApplication].keyWindow;
859868
return window.rootViewController;
@@ -866,7 +875,88 @@ - (UIViewController *) documentInteractionControllerViewControllerForPreview: (U
866875
[ReactNativeBlobUtilNetwork emitExpiredTasks:eventDispatcherRef];
867876
}
868877

878+
# pragma mark - Android Only methods
879+
// These methods are required because in the New Arch we have a single spec for both platforms
880+
- (void)actionViewIntent:(NSString *) path
881+
mime:(NSString *) mime
882+
chooserTitle:(NSString *) chooserTitle
883+
resolve:(RCTPromiseResolveBlock)resolve
884+
reject:(RCTPromiseRejectBlock)reject
885+
{
886+
reject(@"ENOT_SUPPORTED", @"This method is not supported on iOS", nil);
887+
}
888+
889+
- (void)addCompleteDownload:(NSDictionary *)config
890+
resolve:(RCTPromiseResolveBlock)resolve
891+
reject:(RCTPromiseRejectBlock)reject
892+
{
893+
reject(@"ENOT_SUPPORTED", @"This method is not supported on iOS", nil);
894+
}
895+
896+
- (void)copyToInternal:(NSString *)contentUri
897+
destpath:(NSString *) destpath
898+
resolve:(RCTPromiseResolveBlock)resolve
899+
reject:(RCTPromiseRejectBlock)reject
900+
{
901+
reject(@"ENOT_SUPPORTED", @"This method is not supported on iOS", nil);
902+
}
903+
- (void)copyToMediaStore:(NSDictionary *)filedata
904+
mt:(NSString *) mt
905+
path:(NSString *)
906+
resolve:(RCTPromiseResolveBlock)resolve
907+
reject:(RCTPromiseRejectBlock)reject
908+
{
909+
reject(@"ENOT_SUPPORTED", @"This method is not supported on iOS", nil);
910+
}
911+
912+
- (void)createMediaFile:(NSDictionary *)filedata
913+
mt:(NSString *) mt
914+
resolve:(RCTPromiseResolveBlock)resolve
915+
reject:(RCTPromiseRejectBlock)reject
916+
{
917+
reject(@"ENOT_SUPPORTED", @"This method is not supported on iOS", nil);
918+
}
919+
920+
- (void)getBlob:(NSString *)contentUri
921+
encoding:(NSString *)encoding
922+
resolve:(RCTPromiseResolveBlock)resolve
923+
reject:(RCTPromiseRejectBlock)reject
924+
{
925+
reject(@"ENOT_SUPPORTED", @"This method is not supported on iOS", nil);
926+
}
927+
928+
- (void)getContentIntent:(NSString *)mime
929+
resolve:(RCTPromiseResolveBlock)resolve
930+
reject:(RCTPromiseRejectBlock)reject
931+
{
932+
reject(@"ENOT_SUPPORTED", @"This method is not supported on iOS", nil);
933+
}
934+
- (void)getSDCardDir:(RCTPromiseResolveBlock)resolve
935+
reject:(RCTPromiseRejectBlock)reject
936+
{
937+
reject(@"ENOT_SUPPORTED", @"This method is not supported on iOS", nil);
938+
}
939+
- (void)getSDCardApplicationDir:(RCTPromiseResolveBlock)resolve
940+
reject:(RCTPromiseRejectBlock)reject
941+
{
942+
reject(@"ENOT_SUPPORTED", @"This method is not supported on iOS", nil);
943+
}
944+
- (void)scanFile:(NSArray *)pairs
945+
callback:(RCTResponseSenderBlock)callback
946+
{
947+
callback(@[@"Scan file method not supported in iOS"]);
948+
}
949+
- (void)writeToMediaFile:(NSString *)fileUri
950+
path:(NSString *)path
951+
transformFile:(BOOL)transformFile
952+
resolve:(RCTPromiseResolveBlock)resolve
953+
reject:(RCTPromiseRejectBlock)reject
954+
{
955+
reject(@"ENOT_SUPPORTED", @"This method is not supported on iOS", nil);
956+
}
957+
869958

959+
# pragma mark - New Architecture
870960
#if RCT_NEW_ARCH_ENABLED
871961
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
872962
(const facebook::react::ObjCTurboModule::InitParams &)params

mediacollection.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import {NativeModules} from 'react-native';
21
import type {ReactNativeBlobUtilNative, filedescriptor} from "types";
32
import ReactNativeBlobUtil from "./codegenSpecs/NativeBlobUtils";
43

@@ -34,4 +33,4 @@ export default {
3433
copyToInternal,
3534
getBlob,
3635
copyToMediaStore
37-
};
36+
};

0 commit comments

Comments
 (0)