Skip to content

Commit db078cc

Browse files
committed
Minor enhancements
### UPDATED - Enhanced handling of session clean vs dirty `armState`. ### FIXED - JSDoc `returns` comment for `copyToClipboard` function for the fingerprint retrival script. - `ADTPulseTestZodParseResponse` type in `index.d.ts` had unnecessary `@private` parameter.
1 parent 67d0869 commit db078cc

File tree

5 files changed

+40
-7
lines changed

5 files changed

+40
-7
lines changed

fingerprint/script.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ let fingerprintResults;
1010
* @param {Element} element - Element.
1111
* @param {('fingerprint')} type - Type.
1212
*
13-
* @return {Promise<boolean>}
13+
* @returns {Promise<boolean>}
1414
*
1515
* @since 1.0.0
1616
*/

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "homebridge-adt-pulse",
33
"displayName": "Homebridge ADT Pulse",
4-
"version": "3.2.2",
4+
"version": "3.2.3",
55
"description": "Homebridge security system platform for ADT Pulse",
66
"main": "./build/index.js",
77
"exports": "./build/index.js",

src/lib/api.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ import {
4646
generateFakeReadyButtons,
4747
generateHash,
4848
isPortalSyncCode,
49+
isSessionCleanState,
4950
parseArmDisarmMessage,
5051
parseDoSubmitHandlers,
5152
parseOrbSecurityButtons,
@@ -2285,6 +2286,9 @@ export class ADTPulse {
22852286
rawHtml: sessions.axiosSummary.data,
22862287
});
22872288

2289+
// "armState" can be dirty without the plugin changing the state itself. Most likely when multiple users are logged in.
2290+
this.#session.isCleanState = isSessionCleanState(parsedOrbSecurityButtons);
2291+
22882292
if (this.#internal.debug) {
22892293
debugLog(this.#internal.logger, 'api.ts / ADTPulse.getOrbSecurityButtons()', 'success', `Successfully retrieved orb security buttons from "${this.#internal.baseUrl}"`);
22902294
}
@@ -2800,9 +2804,6 @@ export class ADTPulse {
28002804
forceArmRequired = forceArmResponse.info.forceArmRequired;
28012805
}
28022806

2803-
// After changing any arm state, the "armState" may be different from when you logged into the portal.
2804-
this.#session.isCleanState = false;
2805-
28062807
// Allow some time for the security orb buttons to refresh.
28072808
await sleep(this.#internal.waitTimeAfterArm);
28082809

src/lib/utility.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,9 @@ import type {
103103
IsPluginOutdatedReturns,
104104
IsPortalSyncCodeSyncCode,
105105
IsPortalSyncCodeTypeGuard,
106+
IsSessionCleanStateOrbSecurityButtons,
107+
IsSessionCleanStateReadyButton,
108+
IsSessionCleanStateReturns,
106109
IsUnknownDoSubmitHandlerCollectionHandlers,
107110
IsUnknownDoSubmitHandlerCollectionReturns,
108111
IsUnknownGatewayDeviceGateway,
@@ -1042,6 +1045,26 @@ export function isPortalSyncCode(syncCode: IsPortalSyncCodeSyncCode): syncCode i
10421045
return textSyncCode.test(syncCode);
10431046
}
10441047

1048+
/**
1049+
* Is session clean state.
1050+
*
1051+
* @param {IsSessionCleanStateOrbSecurityButtons} orbSecurityButtons - Orb security buttons.
1052+
*
1053+
* @returns {IsSessionCleanStateReturns}
1054+
*
1055+
* @since 1.0.0
1056+
*/
1057+
export function isSessionCleanState(orbSecurityButtons: IsSessionCleanStateOrbSecurityButtons): IsSessionCleanStateReturns {
1058+
// When at least 1 security button is disabled, it means the system is busy changing state.
1059+
if (orbSecurityButtons.some((orbSecurityButton) => orbSecurityButton.buttonDisabled)) {
1060+
return false;
1061+
}
1062+
1063+
return orbSecurityButtons
1064+
.filter((orbSecurityButton): orbSecurityButton is IsSessionCleanStateReadyButton => !orbSecurityButton.buttonDisabled)
1065+
.every((orbSecurityButton) => !['disarmed', 'disarmed+with+alarm', 'night+stay'].includes(orbSecurityButton.urlParams.armState));
1066+
}
1067+
10451068
/**
10461069
* Is unknown do submit handler collection.
10471070
*

src/types/index.d.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1080,8 +1080,6 @@ export type ADTPulseTestStartTestReturns = Promise<void>;
10801080
/**
10811081
* ADT Pulse Test - Zod parse response.
10821082
*
1083-
* @private
1084-
*
10851083
* @since 1.0.0
10861084
*/
10871085
export type ADTPulseTestZodParseResponse = z.SafeParseReturnType<any, any> | undefined;
@@ -1716,6 +1714,17 @@ export type IsPortalSyncCodeSyncCode = string;
17161714

17171715
export type IsPortalSyncCodeTypeGuard = PortalSyncCode;
17181716

1717+
/**
1718+
* Is session clean state.
1719+
*
1720+
* @since 1.0.0
1721+
*/
1722+
export type IsSessionCleanStateOrbSecurityButtons = OrbSecurityButtons;
1723+
1724+
export type IsSessionCleanStateReturns = boolean;
1725+
1726+
export type IsSessionCleanStateReadyButton = OrbSecurityButtonBase & OrbSecurityButtonReady;
1727+
17191728
/**
17201729
* Is unknown do submit handler collection.
17211730
*

0 commit comments

Comments
 (0)