Skip to content

Commit ca6f121

Browse files
committed
Merge branch 'codex/fix-browser-null-text' into codex/integration-production-ready
2 parents 746db03 + 04e846f commit ca6f121

4 files changed

Lines changed: 14 additions & 15 deletions

File tree

crates/fastqr_wasm/src/lib.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
use fastqr_core::{EncodeOptions, ErrorCorrectionLevel, QrCode, encode_text};
2-
use fastqr_image::{DecodeOptions, RenderOptions, decode_rgba, render_to_rgba};
1+
use fastqr_core::{encode_text, EncodeOptions, ErrorCorrectionLevel, QrCode};
2+
use fastqr_image::{decode_rgba, render_to_rgba, DecodeOptions, RenderOptions};
33
use js_sys::{Object, Reflect, Uint8Array};
4-
use wasm_bindgen::{Clamped, JsCast, JsValue, prelude::wasm_bindgen};
4+
use wasm_bindgen::{prelude::wasm_bindgen, Clamped, JsCast, JsValue};
55
use web_sys::{CanvasRenderingContext2d, HtmlCanvasElement, HtmlVideoElement, ImageData};
66

77
#[wasm_bindgen]
@@ -184,12 +184,12 @@ fn decoded_to_js(decoded: fastqr_core::DecodedQr) -> Result<JsValue, JsValue> {
184184
&JsValue::from_str("bytes"),
185185
&Uint8Array::from(decoded.bytes.as_ref()),
186186
)?;
187-
let text = decoded.text.map(String::from).unwrap_or_default();
188-
Reflect::set(
189-
&object,
190-
&JsValue::from_str("text"),
191-
&JsValue::from_str(&text),
192-
)?;
187+
let text = decoded
188+
.text
189+
.as_deref()
190+
.map(JsValue::from_str)
191+
.unwrap_or(JsValue::NULL);
192+
Reflect::set(&object, &JsValue::from_str("text"), &text)?;
193193
Ok(object.into())
194194
}
195195

npm/fastqr/browser.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ export interface BrowserDecodedQr {
33
errorCorrection: string;
44
mask: number;
55
bytes: Uint8Array;
6-
text: string;
6+
text: string | null;
77
}
88

99
export interface BrowserQrCode {

npm/fastqr_vue/src/use_fastqr_camera.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ export function useFastqrCamera(options: UseFastqrCameraOptions = {}) {
115115

116116
try {
117117
const decoded = decodeVideoFrame(video.value, scratchCanvas.value);
118-
if (decoded.text && decoded.text !== cameraText.value) {
118+
if (decoded.text != null && decoded.text !== cameraText.value) {
119119
cameraText.value = decoded.text;
120120
cameraLabel.value = `Camera lock: v${decoded.version} / ${decoded.errorCorrection} / mask ${decoded.mask}`;
121121
}
@@ -143,8 +143,7 @@ function isReady(ready: MaybeRefOrGetter<boolean> | undefined) {
143143
}
144144

145145
function stopTracks(stream: MediaStream) {
146-
const tracks = stream.getTracks();
147-
for (let index = 0; index < tracks.length; index += 1) {
148-
tracks[index].stop();
146+
for (const track of stream.getTracks()) {
147+
track.stop();
149148
}
150149
}

npm/fastqr_vue/src/use_fastqr_decode.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ export function useFastqrDecode(options: UseFastqrDecodeOptions = {}) {
9494
decodeHex.value = bytesToHex(decoded.bytes);
9595
decodeLabel.value = label;
9696
decodeMeta.value = `v${decoded.version} / ${decoded.errorCorrection} / mask ${decoded.mask}`;
97-
decodeText.value = decoded.text;
97+
decodeText.value = decoded.text ?? "";
9898
}
9999

100100
return {

0 commit comments

Comments
 (0)