Skip to content

Commit 7af9890

Browse files
committed
feat: add prefetch
1 parent 14e0422 commit 7af9890

File tree

3 files changed

+26
-2
lines changed

3 files changed

+26
-2
lines changed

ios/FasterImageViewManager.m

+2
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,6 @@ @interface RCT_EXTERN_MODULE(FasterImageViewManager, RCTViewManager)
1010

1111
RCT_EXTERN_METHOD(clearCache:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
1212

13+
RCT_EXTERN_METHOD(prefetch:(NSArray) sources resolve:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
14+
1315
@end

ios/FasterImageViewManager.swift

+12
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,18 @@ final class FasterImageViewManager: RCTViewManager {
2121
}
2222
}
2323
}
24+
25+
@objc
26+
func prefetch(_ sources: [String],
27+
resolve: @escaping RCTPromiseResolveBlock,
28+
reject: @escaping RCTPromiseRejectBlock) {
29+
do {
30+
let prefetcher = ImagePrefetcher()
31+
let urls = sources.map { url in URL(string: url )}.compactMap{ $0 }
32+
prefetcher.startPrefetching(with: urls)
33+
resolve(true)
34+
} catch { reject() }
35+
}
2436
}
2537

2638
struct ImageOptions: Decodable {

src/index.tsx

+12-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import {
2+
ColorValue,
23
ImageStyle,
3-
requireNativeComponent,
44
NativeModules,
55
Platform,
6-
ColorValue,
6+
requireNativeComponent,
77
} from 'react-native';
88

99
export type IOSImageResizeMode =
@@ -130,3 +130,13 @@ export const clearCache = async () => {
130130
return FasterImageModule.clearCache();
131131
}
132132
};
133+
134+
export const prefetch(sources: string[]): Promise<void> {
135+
if (Platform.OS === 'ios') {
136+
const { FasterImageViewManager } = NativeModules;
137+
return FasterImageViewManager.prefetch(sources);
138+
} else {
139+
const { FasterImageModule } = NativeModules;
140+
return FasterImageModule.prefetch(sources);
141+
}
142+
}

0 commit comments

Comments
 (0)