VulpesOS/gaia/dev_apps/nfc-api-test/js/nfc_dispatch.js
OverSu b38dea0597 Publish Vulpes Preview 15 sources for desktop, Android and Tundra
Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
2026-09-30 23:13:03 +02:00

60 lines
1.8 KiB
JavaScript
Executable file

var NfcDispatchDemo = {
tagContainer: null,
init: function nd_init() {
dump('NfcDispatchDemo init');
var content = document.getElementById('content');
var globalMsg = document.getElementById('global-message');
this.tagContainer = content.querySelector('[data-type="tag-container"]')
var nfc = window.navigator.mozNfc;
if (!nfc) {
globalMsg.textContent = 'NFC API not available.';
return;
}
if (!nfc.enabled) {
globalMsg.textContent = 'NFC is not enabled.';
return;
}
document.getElementById('global-message').textContent = '';
nfc.ontagfound = this.handleTagFound.bind(this);
nfc.onpeerfound = this.handlePeerFound.bind(this);
},
handleTagFound: function nd_handleTagFound(event) {
var ndefRecords = event.ndefRecords;
var tagUri =
this.tagContainer.querySelector('[data-type="tag-uri"]');
tagUri.textContent = '';
var result =
this.tagContainer.querySelector('[data-type="dispatch-result"]');
var ndefHelper = new NDEFHelper();
var ndef = Array.isArray(ndefRecords) && ndefRecords[0];
var uri = ndefHelper.parseURI(ndef);
tagUri.textContent = uri;
if (uri.startsWith('https://www.mozilla.org')) {
result.textContent = 'Default Prevented';
return false;
} else {
result.textContent = 'Default Action Executed';
return true;
}
},
handlePeerFound: function nd_handlePeerFound(event) {
var tagUri =
this.tagContainer.querySelector('[data-type="tag-uri"]');
tagUri.textContent = '';
var result =
this.tagContainer.querySelector('[data-type="dispatch-result"]');
result.textContent = 'Default Prevented';
event.preventDefault();
}
};
window.addEventListener('load', () => NfcDispatchDemo.init());