fix: Refactoring prepareAndSendPairingTx to ensure auto-pairing workflow
This commit is contained in:
parent
99e7793fbb
commit
2ab9bd2976
@ -159,40 +159,64 @@ async function onCreateButtonClick() {
|
||||
}
|
||||
}
|
||||
|
||||
// Une constante est plus claire qu'une 'magic string' ("")
|
||||
const DEFAULT_PAIRING_PAYLOAD = '';
|
||||
|
||||
export async function prepareAndSendPairingTx(): Promise<void> {
|
||||
const service = await Services.getInstance();
|
||||
|
||||
try {
|
||||
const relayAddress = service.getAllRelays();
|
||||
const createPairingProcessReturn = await service.createPairingProcess('', []);
|
||||
// 1. Création du processus d'appairage
|
||||
// const relayAddress = service.getAllRelays(); // <-- Cette variable n'était pas utilisée
|
||||
const createPairingProcessReturn = await service.createPairingProcess(DEFAULT_PAIRING_PAYLOAD, []);
|
||||
|
||||
if (!createPairingProcessReturn.updated_process) {
|
||||
throw new Error('createPairingProcess returned an empty new process');
|
||||
}
|
||||
|
||||
try {
|
||||
await service.ensureConnections(createPairingProcessReturn.updated_process.current_process, createPairingProcessReturn.updated_process.current_process.states[0].state_id);
|
||||
} catch (e) {
|
||||
throw e;
|
||||
// Utilisation du "destructuring" pour assigner les variables
|
||||
const { process_id: pairingId, current_process: process } = createPairingProcessReturn.updated_process;
|
||||
|
||||
// Ajout d'une vérification pour éviter les erreurs si states est vide
|
||||
if (!process.states || process.states.length === 0) {
|
||||
throw new Error('Le processus reçu ne contient aucun état (state)');
|
||||
}
|
||||
const stateId = process.states[0].state_id;
|
||||
|
||||
service.setProcessId(createPairingProcessReturn.updated_process.process_id);
|
||||
service.setStateId(createPairingProcessReturn.updated_process.current_process.states[0].state_id);
|
||||
// 2. Assurer les connexions
|
||||
await service.ensureConnections(process, stateId);
|
||||
|
||||
// Update device.pairing_process_commitment with the process_id
|
||||
// 3. Mettre à jour l'état du service
|
||||
service.setProcessId(pairingId);
|
||||
service.setStateId(stateId);
|
||||
|
||||
// 4. Appairer le 'device'
|
||||
service.pairDevice(pairingId, [service.getDeviceAddress()]);
|
||||
|
||||
// 5. Mettre à jour la BDD
|
||||
try {
|
||||
const currentDevice = await service.getDeviceFromDatabase();
|
||||
if (currentDevice) {
|
||||
currentDevice.pairing_process_commitment = createPairingProcessReturn.updated_process.process_id;
|
||||
currentDevice.pairing_process_commitment = pairingId;
|
||||
await service.saveDeviceInDatabase(currentDevice);
|
||||
}
|
||||
} catch (err) {
|
||||
console.error('Failed to update device 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
|
||||
await service.handleApiReturn(createPairingProcessReturn);
|
||||
|
||||
const createPrdUpdateReturn = await service.createPrdUpdate(pairingId, stateId);
|
||||
await service.handleApiReturn(createPrdUpdateReturn);
|
||||
|
||||
const approveChangeReturn = await service.approveChange(pairingId, stateId);
|
||||
await service.handleApiReturn(approveChangeReturn);
|
||||
|
||||
// await service.confirmPairing();
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
console.error("Le processus d'appairage a échoué :", err);
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
|
||||
@ -220,3 +244,4 @@ export async function generateCreateBtn() {
|
||||
console.error(err);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user