Add a waiting of __PAIRING_READY flag in handleGetPairingId
This commit is contained in:
parent
2ab9bd2976
commit
08bc930675
@ -284,7 +284,6 @@ export async function registerAllListeners() {
|
|||||||
|
|
||||||
// --- Définitions des gestionnaires (Handlers) ---
|
// --- Définitions des gestionnaires (Handlers) ---
|
||||||
|
|
||||||
const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
||||||
const handleRequestLink = async (event: MessageEvent) => {
|
const handleRequestLink = async (event: MessageEvent) => {
|
||||||
console.log(`[Router:API] 📨 Message ${MessageType.REQUEST_LINK} reçu de ${event.origin}`);
|
console.log(`[Router:API] 📨 Message ${MessageType.REQUEST_LINK} reçu de ${event.origin}`);
|
||||||
|
|
||||||
@ -300,6 +299,7 @@ export async function registerAllListeners() {
|
|||||||
console.log('[Router:API] Appareil non appairé. En attente du feu vert de home.ts...');
|
console.log('[Router:API] Appareil non appairé. En attente du feu vert de home.ts...');
|
||||||
const maxWait = 5000; // 5 sec
|
const maxWait = 5000; // 5 sec
|
||||||
let waited = 0;
|
let waited = 0;
|
||||||
|
const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));
|
||||||
|
|
||||||
// On attend le drapeau global
|
// On attend le drapeau global
|
||||||
while (!(window as any).__PAIRING_READY && waited < maxWait) {
|
while (!(window as any).__PAIRING_READY && waited < maxWait) {
|
||||||
@ -512,12 +512,32 @@ export async function registerAllListeners() {
|
|||||||
|
|
||||||
const handleGetPairingId = async (event: MessageEvent) => {
|
const handleGetPairingId = async (event: MessageEvent) => {
|
||||||
console.log(`[Router:API] 📨 Message ${MessageType.GET_PAIRING_ID} reçu`);
|
console.log(`[Router:API] 📨 Message ${MessageType.GET_PAIRING_ID} reçu`);
|
||||||
|
console.log('[Router:API] GET_PAIRING_ID: Vérification du drapeau __PAIRING_READY...');
|
||||||
|
const maxWait = 10000; // 10 sec (doit être > au timeout de handleRequestLink)
|
||||||
|
let waited = 0;
|
||||||
|
const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));
|
||||||
|
|
||||||
|
while (!(window as any).__PAIRING_READY && waited < maxWait) {
|
||||||
|
await delay(100);
|
||||||
|
waited += 100;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((window as any).__PAIRING_READY === 'error') {
|
||||||
|
console.error('[Router:API] GET_PAIRING_ID: Auto-pairing (home.ts) a échoué.');
|
||||||
|
throw new Error('Auto-pairing failed');
|
||||||
|
}
|
||||||
|
if (!(window as any).__PAIRING_READY) {
|
||||||
|
console.error('[Router:API] GET_PAIRING_ID: Timeout en attente de __PAIRING_READY.');
|
||||||
|
throw new Error('Auto-pairing timed out');
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('[Router:API] GET_PAIRING_ID: Feu vert de home.ts reçu. Polling de la BDD...');
|
||||||
|
|
||||||
const maxRetries = 10;
|
const maxRetries = 10;
|
||||||
const retryDelay = 300;
|
const retryDelay = 300;
|
||||||
let pairingId: string | null = null;
|
let pairingId: string | null = null;
|
||||||
|
|
||||||
// Boucle de polling pour attendre la fin du Bug A (l'écriture)
|
// Boucle de polling (maintenant sécurisée après l'attente)
|
||||||
for (let i = 0; i < maxRetries; i++) {
|
for (let i = 0; i < maxRetries; i++) {
|
||||||
// On lit DIRECTEMENT la BDD (la "source de vérité")
|
// On lit DIRECTEMENT la BDD (la "source de vérité")
|
||||||
const device = await services.getDeviceFromDatabase();
|
const device = await services.getDeviceFromDatabase();
|
||||||
@ -538,7 +558,10 @@ export async function registerAllListeners() {
|
|||||||
// Si la boucle se termine sans succès
|
// Si la boucle se termine sans succès
|
||||||
if (!pairingId) {
|
if (!pairingId) {
|
||||||
console.error(`[Router:API] GET_PAIRING_ID: Échec final, non trouvé en BDD après ${maxRetries} tentatives.`);
|
console.error(`[Router:API] GET_PAIRING_ID: Échec final, non trouvé en BDD après ${maxRetries} tentatives.`);
|
||||||
throw new Error('Device not paired');
|
// On vérifie si l'appareil existe (debug)
|
||||||
|
const finalDevice = await services.getDeviceFromDatabase();
|
||||||
|
console.log("[Router:API] GET_PAIRING_ID: État final de l'appareil:", finalDevice);
|
||||||
|
throw new Error('Device not paired (post-wait)');
|
||||||
}
|
}
|
||||||
|
|
||||||
const { accessToken } = event.data;
|
const { accessToken } = event.data;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user