Skip to content

Commit

Permalink
Revert "feat: convert imageDataUrlToJpegDataUrl to synchronous method"
Browse files Browse the repository at this point in the history
This reverts commit 5f0401c.
  • Loading branch information
DanielFRico committed Oct 25, 2024
1 parent 5f0401c commit b8defbf
Show file tree
Hide file tree
Showing 5 changed files with 51 additions and 30 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -285,19 +285,22 @@ class EIdReaderModule(reactContext: ReactApplicationContext) :
}
}

@ReactMethod(isBlockingSynchronousMethod = true)
fun imageDataUrlToJpegDataUrl(dataUrl:String): String {
@ReactMethod
fun imageDataUrlToJpegDataUrl(dataUrl:String, promise: Promise){
try {
val dataSplit = dataUrl.split(";base64,")
if(dataSplit.size != 2){
throw Error("Cannot imageDataUrlToJpegDataUrl image because is not a valid dataurl")
promise.reject("Cannot imageDataUrlToJpegDataUrl image because is not a valid dataurl")
return
}
val mimeType = dataSplit[0].split(":")[1]
if(!mimeType.startsWith("image/")){
throw Error("Couldn't convert $mimeType to JPEG")
promise.reject("Couldn't convert $mimeType to JPEG")
return
}
if(mimeType == "image/jpeg"){
return dataUrl
promise.resolve(dataUrl)
return
}
val dataContent = dataSplit[1]
val bitmapUtil = BitmapUtil(reactApplicationContext)
Expand All @@ -307,12 +310,14 @@ class EIdReaderModule(reactContext: ReactApplicationContext) :
val byteArrayOutputStream = ByteArrayOutputStream()
nfcImage.bitmap!!.compress(Bitmap.CompressFormat.JPEG, 70, byteArrayOutputStream)
val bytes = byteArrayOutputStream.toByteArray()
return "data:image/jpeg;base64,"+ Base64.encodeToString(bytes, Base64.CRLF)
promise.resolve("data:image/jpeg;base64,"+ Base64.encodeToString(bytes, Base64.CRLF))
return
}
else throw Error("Cannot imageDataUrlToJpegDataUrl image")
else promise.reject("Cannot imageDataUrlToJpegDataUrl image")

} catch (e: IOException) {
throw Error("Cannot imageDataUrlToJpegDataUrl image")
promise.reject("Cannot imageDataUrlToJpegDataUrl image")
return
}
}

Expand Down
26 changes: 19 additions & 7 deletions example/src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,9 @@ import { lena } from './data';

export default function App() {
const [result, setResult] = React.useState<EIdReadResult>();

let convertedImage;
try {
convertedImage = EIdReader.imageDataUrlToJpegDataUrl(lena);
} catch (error) {
console.error(error);
}
const [convertedImage, setConvertedImage] = React.useState<
string | undefined
>(undefined);

React.useEffect(() => {
EIdReader.addOnTagDiscoveredListener(() => {
Expand Down Expand Up @@ -58,6 +54,16 @@ export default function App() {
});
};

const imageDataUrlToJpegDataUrl = () => {
EIdReader.imageDataUrlToJpegDataUrl(lena)
.then((data) => {
setConvertedImage(`${data}`);
})
.catch((error) => {
console.error('error', error);
});
};

const stopReading = () => {
EIdReader.stopReading();
};
Expand Down Expand Up @@ -94,6 +100,12 @@ export default function App() {
<ScrollView style={styles.container}>
<View style={styles.box}>
<View style={styles.buttonContainer}>
<TouchableOpacity
onPress={imageDataUrlToJpegDataUrl}
style={styles.button}
>
<Text style={styles.buttonText}>Convert</Text>
</TouchableOpacity>
<TouchableOpacity onPress={startReading} style={styles.button}>
<Text style={styles.buttonText}>Start Reading</Text>
</TouchableOpacity>
Expand Down
4 changes: 3 additions & 1 deletion ios/EidReader.mm
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,9 @@ @interface RCT_EXTERN_MODULE(EIdReader, RCTEventEmitter)

RCT_EXTERN__BLOCKING_SYNCHRONOUS_METHOD(stopReading);

RCT_EXTERN__BLOCKING_SYNCHRONOUS_METHOD(imageDataUrlToJpegDataUrl:(NSString)dataUrl);
RCT_EXTERN_METHOD(imageDataUrlToJpegDataUrl:(NSString)dataUrl
withResolver:(RCTPromiseResolveBlock)resolve
withRejecter:(RCTPromiseRejectBlock)reject);

+ (BOOL)requiresMainQueueSetup
{
Expand Down
28 changes: 15 additions & 13 deletions ios/EidReader.swift
Original file line number Diff line number Diff line change
Expand Up @@ -92,34 +92,36 @@ class EIdReader: RCTEventEmitter {
}

}

enum EidReaderError: Error {
case invalidInput(String)
case processingError(String)
}

@objc(imageDataUrlToJpegDataUrl:withError:)
func imageDataUrlToJpegDataUrl(dataUrl: NSString) throws -> String {
@objc(imageDataUrlToJpegDataUrl:withResolver:withRejecter:)
func imageDataUrlToJpegDataUrl(
dataUrl: NSString,
resolve: @escaping RCTPromiseResolveBlock,
reject: @escaping RCTPromiseRejectBlock
) {
let dataSplit = (dataUrl as String).components(separatedBy: ";base64,")
if(dataSplit.count != 2){
throw EidReaderError.invalidInput("Cannot imageDataUrlToJpegDataUrl image because is not a valid dataurl")
reject("@ConvertError", "Cannot imageDataUrlToJpegDataUrl image because is not a valid dataurl", nil)
return
}
if let mimeType = dataSplit.first?.replacingOccurrences(of: "data:", with: ""){
if(!mimeType.hasPrefix("image/")){
throw EidReaderError.invalidInput("Couldn't convert \(mimeType) to JPEG")
reject("@ConvertError", "Couldn't convert \(mimeType) to JPEG", nil)
return
}
if(mimeType == "image/jpeg"){
return dataUrl as String
resolve(dataUrl)
return
}
let dataContent = dataSplit[1]
if let newData = Data(base64Encoded: dataContent) {
if let jpegData = UIImage(data: newData)?.jpegData(compressionQuality: 1.0)?.base64EncodedString(){
return "data:image/jpeg;base64,\(jpegData)"

resolve("data:image/jpeg;base64,\(jpegData)")
return
}
}
}
throw EidReaderError.processingError("Convert image data URL to JPEG image data url error")
reject("@ConvertError", "Convert image data URL to JPEG image data url error", nil)
}

@objc(stopReading)
Expand Down
2 changes: 1 addition & 1 deletion src/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ export default class EIdReader {
return EIdReaderNativeModule.openNfcSettings();
}

static imageDataUrlToJpegDataUrl(dataUrl: string): string {
static imageDataUrlToJpegDataUrl(dataUrl: string): Promise<string> {
return EIdReaderNativeModule.imageDataUrlToJpegDataUrl(dataUrl);
}

Expand Down

0 comments on commit b8defbf

Please sign in to comment.