91 lines
2.4 KiB
JavaScript
91 lines
2.4 KiB
JavaScript
// Service Worker Registration
|
|
if ("serviceWorker" in navigator) {
|
|
window.addEventListener("load", () => {
|
|
navigator.serviceWorker
|
|
.register("/sw.js")
|
|
.then((registration) => {
|
|
console.log("ServiceWorker registration successful");
|
|
})
|
|
.catch((err) => {
|
|
console.log("ServiceWorker registration failed: ", err);
|
|
});
|
|
});
|
|
}
|
|
|
|
import { Nfc, SimpleNfc } from "./universal-nfc/dist/index.js";
|
|
|
|
// Initialize NFC objects
|
|
const nfc = new SimpleNfc();
|
|
const NFC = new Nfc();
|
|
|
|
// DOM Elements
|
|
const startReadingBtn = document.getElementById("startReadingBtn");
|
|
const stopReadingBtn = document.getElementById("stopReadingBtn");
|
|
const writeTextBtn = document.getElementById("writeTextBtn");
|
|
const writeUrlBtn = document.getElementById("writeUrlBtn");
|
|
const outputDiv = document.getElementById("output");
|
|
|
|
// Event Listeners
|
|
startReadingBtn.addEventListener("click", async () => {
|
|
try {
|
|
const available = await nfc.isAvailable();
|
|
if (!available) {
|
|
outputDiv.textContent = "NFC is not available on this device/browser";
|
|
return;
|
|
}
|
|
|
|
const { enabled } = await NFC.isEnabled();
|
|
if (!enabled) {
|
|
outputDiv.textContent = "NFC is not enabled on this device";
|
|
return;
|
|
}
|
|
|
|
await nfc.startReading((content, type) => {
|
|
outputDiv.textContent = `Read ${type}: ${content}`;
|
|
});
|
|
} catch (error) {
|
|
console.error("Error starting NFC scan:", error);
|
|
outputDiv.textContent = `Error: ${error.message}`;
|
|
}
|
|
});
|
|
|
|
stopReadingBtn.addEventListener("click", () => {
|
|
nfc.stopReading();
|
|
outputDiv.textContent = "NFC scanning stopped";
|
|
});
|
|
|
|
writeTextBtn.addEventListener("click", async () => {
|
|
try {
|
|
const { enabled } = await NFC.isEnabled();
|
|
if (!enabled) {
|
|
outputDiv.textContent = "NFC is not enabled on this device";
|
|
return;
|
|
}
|
|
|
|
await nfc.writeText("Hello NFC");
|
|
outputDiv.textContent = "Text written to NFC tag";
|
|
} catch (error) {
|
|
console.error("Error writing to tag:", error);
|
|
outputDiv.textContent = `Error: ${error.message}`;
|
|
}
|
|
});
|
|
|
|
writeUrlBtn.addEventListener("click", async () => {
|
|
try {
|
|
const { enabled } = await NFC.isEnabled();
|
|
if (!enabled) {
|
|
outputDiv.textContent = "NFC is not enabled on this device";
|
|
return;
|
|
}
|
|
|
|
await nfc.writeUrl("https://example.com");
|
|
outputDiv.textContent = "URL written to NFC tag";
|
|
} catch (error) {
|
|
console.error("Error writing URL to tag:", error);
|
|
outputDiv.textContent = `Error: ${error.message}`;
|
|
}
|
|
});
|
|
|
|
// Initialize camera when page loads
|
|
initCamera();
|