homebridge-melcloud-control 4.0.0-beta.535 → 4.0.0-beta.537

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.js CHANGED
@@ -199,7 +199,7 @@ class MelCloudPlatform {
199
199
  if (logLevel.success) log.success(`${accountName}, ${deviceTypeText}, ${deviceName}, Published as external accessory.`);
200
200
 
201
201
  //start impulse generators\
202
- const timmers = accountType === 'melcloudhome' ? [{ name: 'connect', sampling: 3300000 }, { name: 'checkDevicesList', sampling: deviceRefreshInterval }] : [{ name: 'checkDevicesList', sampling: refreshInterval }];
202
+ const timmers = accountType === 'melcloudhome' ? [{ name: 'connect', sampling: 3000000 }, { name: 'checkDevicesList', sampling: deviceRefreshInterval }] : [{ name: 'checkDevicesList', sampling: refreshInterval }];
203
203
  await melCloud.impulseGenerator.state(true, timmers, false);
204
204
  await configuredDevice.startStopImpulseGenerator(true, [{ name: 'checkState', sampling: deviceRefreshInterval }]);
205
205
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "displayName": "MELCloud Control",
3
3
  "name": "homebridge-melcloud-control",
4
- "version": "4.0.0-beta.535",
4
+ "version": "4.0.0-beta.537",
5
5
  "description": "Homebridge plugin to control Mitsubishi Air Conditioner, Heat Pump and Energy Recovery Ventilation.",
6
6
  "license": "MIT",
7
7
  "author": "grzegorz914",
package/src/melcloud.js CHANGED
@@ -344,8 +344,47 @@ class MelCloud extends EventEmitter {
344
344
  ]
345
345
  });
346
346
 
347
- const context = await browser.createIncognitoBrowserContext();
348
- const page = await context.newPage();
347
+ try {
348
+ // go to about:blank to ensure a clean origin
349
+ await page.goto('about:blank');
350
+
351
+ // prefer context-based clear if available
352
+ const pageContext = (typeof page.browserContext === 'function') ? page.browserContext() : (page.context ? page.context() : null);
353
+
354
+ if (pageContext && typeof pageContext.clearCookies === 'function') {
355
+ // modern API in some puppeteer versions
356
+ await pageContext.clearCookies();
357
+ } else {
358
+ // try CDP directly (works in most environments)
359
+ if (page._client && typeof page._client === 'function') {
360
+ const client = await page._client();
361
+ if (client && client.send) {
362
+ await client.send('Network.clearBrowserCookies');
363
+ } else if (page._client && page._client.send) {
364
+ // some versions expose _client directly as object
365
+ await page._client.send('Network.clearBrowserCookies');
366
+ } else {
367
+ // fallback to deleting cookies returned by page.cookies()
368
+ const cookies = await page.cookies();
369
+ if (cookies && cookies.length) {
370
+ await page.deleteCookie(...cookies).catch(() => { });
371
+ }
372
+ }
373
+ } else if (page._client && page._client.send) {
374
+ // older shape where _client is object
375
+ await page._client.send('Network.clearBrowserCookies');
376
+ } else {
377
+ // final fallback
378
+ const cookies = await page.cookies();
379
+ if (cookies && cookies.length) {
380
+ await page.deleteCookie(...cookies).catch(() => { });
381
+ }
382
+ }
383
+ }
384
+ } catch (clearErr) {
385
+ // nie przerywamy procesu logowania jeśli clear cookies nie zadziała, logujemy tylko warn
386
+ this.emit('warn', `Failed to clear cookies cleanly: ${clearErr.message}`);
387
+ }
349
388
  page.setDefaultTimeout(GLOBAL_TIMEOUT);
350
389
  page.setDefaultNavigationTimeout(GLOBAL_TIMEOUT);
351
390
 
@@ -402,6 +441,7 @@ class MelCloud extends EventEmitter {
402
441
 
403
442
  this.emit('warn', `Found submit button ${submitButton}`);
404
443
  await Promise.race([Promise.all([submitButton.click(), page.waitForNavigation({ waitUntil: ['domcontentloaded', 'networkidle2'], timeout: GLOBAL_TIMEOUT / 4 })]), new Promise(r => setTimeout(r, GLOBAL_TIMEOUT / 3))]);
444
+ await new Promise(r => setTimeout(r, 2000));
405
445
 
406
446
  this.emit('warn', `Looking for cookies...`);
407
447
  // Extract cookies
@@ -438,15 +478,8 @@ class MelCloud extends EventEmitter {
438
478
  throw new Error(`Connect error: ${error.message}`);
439
479
  } finally {
440
480
  if (browser) {
441
- try {
442
- const contexts = browser.browserContexts();
443
- for (const ctx of contexts) {
444
- await ctx.close().catch(() => { });
445
- }
446
- await browser.close();
447
- } catch (closeErr) {
448
- this.emit('error', `Failed to close Puppeteer: ${closeErr.message}`);
449
- }
481
+ try { await browser.close(); }
482
+ catch (closeErr) { this.emit('error', `Failed to close Puppeteer: ${closeErr.message}`); }
450
483
  }
451
484
  }
452
485
  }