100 lines
3.3 KiB
JavaScript
100 lines
3.3 KiB
JavaScript
import Routing from "/src/services/routing.service.ts";
|
|
import Services from "/src/services/service.ts";
|
|
|
|
document.querySelectorAll('.tab').forEach(tab => {
|
|
tab.addEventListener('click', () => {
|
|
document.querySelectorAll('.tab').forEach(t => t.classList.remove('active'));
|
|
tab.classList.add('active');
|
|
|
|
document.querySelectorAll('.tab-content').forEach(content => content.classList.remove('active'));
|
|
document.getElementById(tab.getAttribute('data-tab')).classList.add('active');
|
|
});
|
|
});
|
|
|
|
document.getElementById('notification-bell').addEventListener('click', openCloseNotifications);
|
|
|
|
|
|
export function toggleMenu() {
|
|
var menu = document.getElementById('menu');
|
|
if (menu.style.display === 'block') {
|
|
menu.style.display = 'none';
|
|
} else {
|
|
menu.style.display = 'block';
|
|
}
|
|
}
|
|
|
|
|
|
//// Modal
|
|
export async function openModal(myAddress, receiverAddress) {
|
|
const router = await Routing.getInstance();
|
|
router.openLoginModal(myAddress, receiverAddress)
|
|
}
|
|
|
|
|
|
function openCloseNotifications() {
|
|
const notifications = document.querySelector('.notification-board')
|
|
notifications.style.display = notifications?.style.display === 'none' ? 'block' : 'none'
|
|
}
|
|
|
|
const service = await Services.getInstance()
|
|
service.setNotification()
|
|
|
|
window.toggleMenu = toggleMenu;
|
|
window.openModal = openModal;
|
|
|
|
/// Scan QR Code
|
|
function docReady(fn) {
|
|
// see if DOM is already available
|
|
if (document.readyState === "complete"
|
|
|| document.readyState === "interactive") {
|
|
// call on next available tick
|
|
setTimeout(fn, 1);
|
|
} else {
|
|
document.addEventListener("DOMContentLoaded", fn);
|
|
}
|
|
}
|
|
|
|
docReady(function () {
|
|
var resultContainer = document.getElementById('qr-reader-results');
|
|
var lastResult, countResults = 0;
|
|
function onScanSuccess(decodedText, decodedResult) {
|
|
++countResults;
|
|
lastResult = decodedText;
|
|
// Handle on success condition with the decoded message.
|
|
console.log(`Scan result ${decodedText}`, decodedResult);
|
|
try {
|
|
// Attempt to parse the decoded text as a URL
|
|
const scannedUrl = new URL(decodedText);
|
|
|
|
// Extract the 'sp_address' parameter
|
|
const spAddress = scannedUrl.searchParams.get('sp_address');
|
|
|
|
if (spAddress) {
|
|
// Call the sendPairingTx function with the extracted sp_address
|
|
service.sendPairingTx(spAddress);
|
|
} else {
|
|
console.error('The scanned URL does not contain the sp_address parameter.');
|
|
alert('Invalid QR code: sp_address parameter missing.');
|
|
}
|
|
} catch (error) {
|
|
// Handle cases where decodedText is not a valid URL
|
|
console.error('Scanned text is not a valid URL:', error);
|
|
alert('Invalid QR code: Unable to parse URL.');
|
|
}
|
|
}
|
|
|
|
var html5QrcodeScanner = new Html5QrcodeScanner(
|
|
"qr-reader", { fps: 10, qrbox: 250 });
|
|
html5QrcodeScanner.render(onScanSuccess);
|
|
});
|
|
|
|
function scanDevice() {
|
|
// service.sendPairingTx('decodedText')
|
|
|
|
const scannerImg = document.querySelector('#scanner')
|
|
if(scannerImg) scannerImg.style.display = 'none'
|
|
const scannerQrCode = document.querySelector('.qr-code-scanner')
|
|
if(scannerQrCode) scannerQrCode.style.display = 'block'
|
|
}
|
|
|
|
window.scanDevice = scanDevice |