-
Notifications
You must be signed in to change notification settings - Fork 32
Open
Description
Hi! 👋
Firstly, thanks for your work on this project! 🙂
Today I used patch-package to patch @candlefinance/faster-image@1.7.2 for the project I'm working on.
Here is the diff that solved my problem:
diff --git a/node_modules/@candlefinance/faster-image/ios/FasterImageViewManager.swift b/node_modules/@candlefinance/faster-image/ios/FasterImageViewManager.swift
index d653e1c..6d357df 100644
--- a/node_modules/@candlefinance/faster-image/ios/FasterImageViewManager.swift
+++ b/node_modules/@candlefinance/faster-image/ios/FasterImageViewManager.swift
@@ -1,4 +1,7 @@
+import Foundation
+
@objc(FasterImageViewManager)
+
final class FasterImageViewManager: RCTViewManager {
override func view() -> (FasterImageView) {
@@ -108,7 +111,9 @@ final class FasterImageView: UIView {
lazyImageView.pipeline = .shared
lazyImageView.onCompletion = { [weak self] result in
DispatchQueue.main.async {
- self?.completionHandler(with: result)
+ Task {
+ await self?.completionHandler(with: result)
+ }
}
}
}
@@ -117,6 +122,32 @@ final class FasterImageView: UIView {
fatalError("init(coder:) has not been implemented")
}
+ func getFileSize(forURL urlStr: String) async -> Double {
+ var sizeUrl: Double = 0.0
+
+ if let url = URL(string: urlStr) {
+ var request: URLRequest = URLRequest(url: url)
+ request.httpMethod = "HEAD"
+ do {
+ let (data, response) = try await URLSession.shared.data(for: request)
+
+
+ // Process the data
+ print("Data received: \(data)")
+
+ sizeUrl = Double(response.expectedContentLength)
+
+
+ } catch _ {
+ return 0.0
+ }
+
+
+ // return sizeUrl
+ }
+ return sizeUrl
+ }
+
// MARK: - Views
private lazy var lazyImageView = LazyImageView()
@@ -126,6 +157,7 @@ final class FasterImageView: UIView {
@objc var onError: RCTDirectEventBlock?
@objc var onSuccess: RCTDirectEventBlock?
+
// MARK: - Properties
@objc var source: NSDictionary? = nil {
didSet {
@@ -137,6 +169,8 @@ final class FasterImageView: UIView {
}
do {
let options = try DictionaryDecoder().decode(ImageOptions.self, from: source)
+
+
if let base64Placeholder = options.base64Placeholder {
self.base64Placeholder = base64Placeholder
}
@@ -181,6 +215,7 @@ final class FasterImageView: UIView {
var urlRequestFromOptions = URLRequest(url: url)
urlRequestFromOptions.allHTTPHeaderFields = options.headers
+
urlRequest = urlRequestFromOptions
if ignoreQueryParamsForCacheKey {
@@ -436,13 +471,14 @@ final class FasterImageView: UIView {
fileprivate extension FasterImageView {
- func completionHandler(with result: Result<ImageResponse, Error>) {
+ func completionHandler(with result: Result<ImageResponse, Error>) async {
switch result {
case .success(let value):
onSuccess?([
"width": value.image.size.width,
"height": value.image.size.height,
- "source": value.urlResponse?.url?.absoluteString ?? ""
+ "size": await self.getFileSize(forURL: self.source?["url"] as! String),
+ "source": value.urlResponse?.url?.absoluteString ?? self.source?["url"] ?? "",
])
case .failure(let error):
onError?([
diff --git a/node_modules/@candlefinance/faster-image/src/index.tsx b/node_modules/@candlefinance/faster-image/src/index.tsx
index aeafc34..c5997b9 100644
--- a/node_modules/@candlefinance/faster-image/src/index.tsx
+++ b/node_modules/@candlefinance/faster-image/src/index.tsx
@@ -98,6 +98,7 @@ export type FasterImageProps = {
nativeEvent: {
width: number;
height: number;
+ size: number;
source: string;
};
}) => void;This issue body was partially generated by patch-package.
gtokman
Metadata
Metadata
Assignees
Labels
No labels