refactor(sp-address.utils): standardize import statements and improve string handling for better code consistency

This commit is contained in:
NicolasCantu 2025-12-02 00:20:48 +01:00
parent a9976ca624
commit 23fe47f69f

View File

@ -1,6 +1,6 @@
import Services from '../services/service'; import Services from "../services/service";
import { getCorrectDOM } from './html.utils'; import { getCorrectDOM } from "./html.utils";
import { addSubscription } from './subscription.utils'; import { addSubscription } from "./subscription.utils";
//Generate emojis list //Generate emojis list
export function generateEmojiList(): string[] { export function generateEmojiList(): string[] {
@ -30,7 +30,7 @@ export async function addressToEmoji(text: string): Promise<string> {
//Adress to Hash //Adress to Hash
const encoder = new TextEncoder(); const encoder = new TextEncoder();
const data = encoder.encode(text); const data = encoder.encode(text);
const hashBuffer = await crypto.subtle.digest('SHA-256', data); const hashBuffer = await crypto.subtle.digest("SHA-256", data);
const hash = new Uint8Array(hashBuffer); const hash = new Uint8Array(hashBuffer);
const bytes = hash.slice(-4); const bytes = hash.slice(-4);
@ -39,17 +39,19 @@ export async function addressToEmoji(text: string): Promise<string> {
const emojiList = generateEmojiList(); const emojiList = generateEmojiList();
const emojis = Array.from(bytes) const emojis = Array.from(bytes)
.map((byte) => emojiList[byte]) .map((byte) => emojiList[byte])
.join(''); .join("");
return emojis; return emojis;
} }
//Get emojis from other device //Get emojis from other device
async function emojisPairingRequest() { async function emojisPairingRequest() {
try { try {
const container = getCorrectDOM('login-4nk-component') as HTMLElement; const container = getCorrectDOM("login-4nk-component") as HTMLElement;
const urlParams: URLSearchParams = new URLSearchParams(window.location.search); const urlParams: URLSearchParams = new URLSearchParams(
const sp_adress: string | null = urlParams.get('sp_address'); window.location.search
);
const sp_adress: string | null = urlParams.get("sp_address");
if (!sp_adress) { if (!sp_adress) {
// console.error("No 'sp_adress' parameter found in the URL."); // console.error("No 'sp_adress' parameter found in the URL.");
@ -57,10 +59,10 @@ async function emojisPairingRequest() {
} }
const emojis = await addressToEmoji(sp_adress); const emojis = await addressToEmoji(sp_adress);
const emojiDisplay = container?.querySelector('.pairing-request'); const emojiDisplay = container?.querySelector(".pairing-request");
if (emojiDisplay) { if (emojiDisplay) {
emojiDisplay.textContent = '(Request from: ' + emojis + ')'; emojiDisplay.textContent = "(Request from: " + emojis + ")";
} }
} catch (err) { } catch (err) {
console.error(err); console.error(err);
@ -69,11 +71,11 @@ async function emojisPairingRequest() {
// Display address emojis and other device emojis // Display address emojis and other device emojis
export async function displayEmojis(text: string) { export async function displayEmojis(text: string) {
console.log('🚀 ~ Services ~ adressToEmoji'); console.log("🚀 ~ Services ~ adressToEmoji");
try { try {
const container = getCorrectDOM('login-4nk-component') as HTMLElement; const container = getCorrectDOM("login-4nk-component") as HTMLElement;
const emojis = await addressToEmoji(text); const emojis = await addressToEmoji(text);
const emojiDisplay = container?.querySelector('.emoji-display'); const emojiDisplay = container?.querySelector(".emoji-display");
if (emojiDisplay) { if (emojiDisplay) {
emojiDisplay.textContent = emojis; emojiDisplay.textContent = emojis;
@ -89,13 +91,19 @@ export async function displayEmojis(text: string) {
// Verify Other address // Verify Other address
export function initAddressInput() { export function initAddressInput() {
const container = getCorrectDOM('login-4nk-component') as HTMLElement; const container = getCorrectDOM("login-4nk-component") as HTMLElement;
const addressInput = container.querySelector('#addressInput') as HTMLInputElement; const addressInput = container.querySelector(
const emojiDisplay = container.querySelector('#emoji-display-2'); "#addressInput"
const okButton = container.querySelector('#okButton') as HTMLButtonElement; ) as HTMLInputElement;
const createButton = container.querySelector('#createButton') as HTMLButtonElement; const emojiDisplay = container.querySelector("#emoji-display-2");
const actionButton = container.querySelector('#actionButton') as HTMLButtonElement; const okButton = container.querySelector("#okButton") as HTMLButtonElement;
addSubscription(addressInput, 'input', async () => { const createButton = container.querySelector(
"#createButton"
) as HTMLButtonElement;
const actionButton = container.querySelector(
"#actionButton"
) as HTMLButtonElement;
addSubscription(addressInput, "input", async () => {
let address = addressInput.value; let address = addressInput.value;
// Vérifie si l'adresse est une URL // Vérifie si l'adresse est une URL
@ -103,7 +111,7 @@ export function initAddressInput() {
const url = new URL(address); const url = new URL(address);
// Si c'est une URL valide, extraire le paramètre sp_address // Si c'est une URL valide, extraire le paramètre sp_address
const urlParams = new URLSearchParams(url.search); const urlParams = new URLSearchParams(url.search);
const extractedAddress = urlParams.get('sp_address') || ''; // Prend sp_address ou une chaîne vide const extractedAddress = urlParams.get("sp_address") || ""; // Prend sp_address ou une chaîne vide
if (extractedAddress) { if (extractedAddress) {
address = extractedAddress; address = extractedAddress;
@ -119,20 +127,20 @@ export function initAddressInput() {
emojiDisplay.textContent = emojis; emojiDisplay.textContent = emojis;
} }
if (okButton) { if (okButton) {
okButton.style.display = 'inline-block'; okButton.style.display = "inline-block";
} }
} else { } else {
if (emojiDisplay) { if (emojiDisplay) {
emojiDisplay.textContent = ''; emojiDisplay.textContent = "";
} }
if (okButton) { if (okButton) {
okButton.style.display = 'none'; okButton.style.display = "none";
} }
} }
}); });
if (createButton) { if (createButton) {
addSubscription(createButton, 'click', () => { addSubscription(createButton, "click", () => {
onCreateButtonClick(); onCreateButtonClick();
}); });
} }
@ -142,14 +150,14 @@ async function onCreateButtonClick() {
try { try {
await prepareAndSendPairingTx(); await prepareAndSendPairingTx();
// Don't call confirmPairing immediately - it will be called when the pairing process is complete // Don't call confirmPairing immediately - it will be called when the pairing process is complete
console.log('Pairing process initiated. Waiting for completion...'); console.log("Pairing process initiated. Waiting for completion...");
} catch (e) { } catch (e) {
console.error(`onCreateButtonClick error: ${e}`); console.error(`onCreateButtonClick error: ${e}`);
} }
} }
// Une constante est plus claire qu'une 'magic string' ("") // Une constante est plus claire qu'une 'magic string' ("")
const DEFAULT_PAIRING_PAYLOAD = ''; const DEFAULT_PAIRING_PAYLOAD = "";
export async function prepareAndSendPairingTx(): Promise<void> { export async function prepareAndSendPairingTx(): Promise<void> {
const service = await Services.getInstance(); const service = await Services.getInstance();
@ -157,18 +165,22 @@ export async function prepareAndSendPairingTx(): Promise<void> {
try { try {
// 1. Création du processus d'appairage // 1. Création du processus d'appairage
// const relayAddress = service.getAllRelays(); // <-- Cette variable n'était pas utilisée // const relayAddress = service.getAllRelays(); // <-- Cette variable n'était pas utilisée
const createPairingProcessReturn = await service.createPairingProcess(DEFAULT_PAIRING_PAYLOAD, []); const createPairingProcessReturn = await service.createPairingProcess(
DEFAULT_PAIRING_PAYLOAD,
[]
);
if (!createPairingProcessReturn.updated_process) { if (!createPairingProcessReturn.updated_process) {
throw new Error('createPairingProcess returned an empty new process'); throw new Error("createPairingProcess returned an empty new process");
} }
// Utilisation du "destructuring" pour assigner les variables // Utilisation du "destructuring" pour assigner les variables
const { process_id: pairingId, current_process: process } = createPairingProcessReturn.updated_process; const { process_id: pairingId, current_process: process } =
createPairingProcessReturn.updated_process;
// Ajout d'une vérification pour éviter les erreurs si states est vide // Ajout d'une vérification pour éviter les erreurs si states est vide
if (!process.states || process.states.length === 0) { if (!process.states || process.states.length === 0) {
throw new Error('Le processus reçu ne contient aucun état (state)'); throw new Error("Le processus reçu ne contient aucun état (state)");
} }
const stateId = process.states[0].state_id; const stateId = process.states[0].state_id;
@ -176,11 +188,12 @@ export async function prepareAndSendPairingTx(): Promise<void> {
await service.ensureConnections(process, stateId); await service.ensureConnections(process, stateId);
// 3. Mettre à jour l'état du service // 3. Mettre à jour l'état du service
service.setProcessId(pairingId); await service.setProcessId(pairingId);
service.setStateId(stateId); await service.setStateId(stateId);
// 4. Appairer le 'device' // 4. Appairer le 'device'
service.pairDevice(pairingId, [service.getDeviceAddress()]); const myAddress = await service.getDeviceAddress();
await service.pairDevice(pairingId, [myAddress]);
// 5. Mettre à jour la BDD // 5. Mettre à jour la BDD
try { try {
@ -190,13 +203,19 @@ export async function prepareAndSendPairingTx(): Promise<void> {
await service.saveDeviceInDatabase(currentDevice); await service.saveDeviceInDatabase(currentDevice);
} }
} catch (err) { } catch (err) {
console.error('Échec non-critique de la mise à jour BDD (pairing_process_commitment):', err); console.error(
"Échec non-critique de la mise à jour BDD (pairing_process_commitment):",
err
);
} }
// 6. Gérer les étapes suivantes du processus // 6. Gérer les étapes suivantes du processus
await service.handleApiReturn(createPairingProcessReturn); await service.handleApiReturn(createPairingProcessReturn);
const createPrdUpdateReturn = await service.createPrdUpdate(pairingId, stateId); const createPrdUpdateReturn = await service.createPrdUpdate(
pairingId,
stateId
);
await service.handleApiReturn(createPrdUpdateReturn); await service.handleApiReturn(createPrdUpdateReturn);
const approveChangeReturn = await service.approveChange(pairingId, stateId); const approveChangeReturn = await service.approveChange(pairingId, stateId);
@ -212,13 +231,12 @@ export async function prepareAndSendPairingTx(): Promise<void> {
export async function generateCreateBtn() { export async function generateCreateBtn() {
try { try {
// Generate CreateBtn // Generate CreateBtn
const container = getCorrectDOM('login-4nk-component') as HTMLElement; const container = getCorrectDOM("login-4nk-component") as HTMLElement;
const createBtn = container?.querySelector('.create-btn'); const createBtn = container?.querySelector(".create-btn");
if (createBtn) { if (createBtn) {
createBtn.textContent = 'CREATE'; createBtn.textContent = "CREATE";
} }
} catch (err) { } catch (err) {
console.error(err); console.error(err);
} }
} }