Skip to content

Commit a282a00

Browse files
author
Patricio Vargas
committed
scanning
1 parent f497979 commit a282a00

File tree

2 files changed

+54
-4
lines changed

2 files changed

+54
-4
lines changed

src/components/Scanner/Scanner.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import React from 'react';
22

3-
const Scanner = () => {
3+
const Scanner = ({scanned}) => {
44
return (
55
<div className="scanner">
66
<div className="scanner-container">
77
<div className="scanner-image" />
88
<div className="scanner-text">
9-
Scanner
9+
{scanned}
1010
</div>
1111
</div>
1212
</div>

src/containers/Scan.js

Lines changed: 52 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,59 @@
1-
import React from 'react';
1+
import React, { useEffect, useState } from 'react';
22
import Scanner from '../components/Scanner/Scanner';
33

44
const Scan = () => {
5+
const [isScanned, setiSScanned] = useState('Scanning...');
6+
const [message, setMessage] = useState('');
7+
const [serialNumber, setSerialNumber] = useState('');
8+
9+
const scan = () => {
10+
if ('NDEFReader' in window) {
11+
const ndef = new window.NDEFReader();
12+
13+
ndef.scan().then(() => {
14+
console.log("Scan started successfully.");
15+
ndef.onreadingerror = () => {
16+
console.log("Cannot read data from the NFC tag. Try another one?");
17+
};
18+
19+
ndef.onreading = event => {
20+
console.log("NDEF message read.");
21+
onReading(event);
22+
setiSScanned('Scanned');
23+
};
24+
}).catch(error => {
25+
console.log(`Error! Scan failed to start: ${error}.`);
26+
});
27+
}
28+
}
29+
30+
const onReading = ({message, serialNumber}) => {
31+
setSerialNumber(serialNumber);
32+
for (const record of message.records) {
33+
console.log("Record type: " + record.recordType);
34+
console.log("MIME type: " + record.mediaType);
35+
console.log("Record id: " + record.id);
36+
switch (record.recordType) {
37+
case "text":
38+
const textDecoder = new TextDecoder(record.encoding);
39+
setMessage(textDecoder.decode(record.data));
40+
break;
41+
case "url":
42+
// TODO: Read URL record with record data.
43+
break;
44+
default:
45+
// TODO: Handle other records with record data.
46+
}
47+
}
48+
};
49+
50+
scan();
551
return (
6-
<Scanner></Scanner>
52+
<>
53+
<p>Serial Number: {serialNumber}</p>
54+
<p>Message: {message}</p>
55+
<Scanner scanned={isScanned}></Scanner>
56+
</>
757
);
858
};
959

0 commit comments

Comments
 (0)