Skip to content

Commit 2e63c74

Browse files
authored
Add masterlock commands (#129)
* Add masterlock plugin * Export masterlock * Update imports * Update exporting of types
1 parent 0bb8530 commit 2e63c74

8 files changed

Lines changed: 178 additions & 8 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ node_modules
33
dist/
44
build/
55
.idea
6+
median-js-bridge-*.tgz

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "median-js-bridge",
3-
"version": "2.13.4",
3+
"version": "2.13.5",
44
"description": "Median bridge and utilities for JS web frameworks",
55
"main": "dist/index.js",
66
"types": "dist/index.d.ts",

src/index.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@ import { InAppPurchaseInfoReadyData } from './plugins/iap.js';
55
import { ShareToAppData } from './plugins/share.js';
66
import { createTempFunctionName, setMedianCallback, setSubscription } from './utils.js';
77

8-
import { HealthBridge as HealthBridgeType } from './types/healthBridge.js';
9-
108
namespace Median {
119
///////////////////////////////
1210
// Internal //
@@ -111,6 +109,7 @@ namespace Median {
111109
export const keychainSwift = plugins.keychainSwift;
112110
export const klaviyo = plugins.klaviyo;
113111
export const localpreferences = plugins.localpreferences;
112+
export const masterlock = plugins.masterlock;
114113
export const modal = plugins.modal;
115114
export const moengage = plugins.moengage;
116115
export const moxo = plugins.moxo;
@@ -186,6 +185,5 @@ export default Median;
186185
///////////////////////////////
187186
// Types //
188187
///////////////////////////////
189-
export declare namespace Types {
190-
export import HealthBridge = HealthBridgeType;
191-
}
188+
export { HealthBridge } from './types/healthBridge.js';
189+
export { MasterLock } from './types/masterlock.js';

src/plugins/healthBridge.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { HealthBridge } from '../types/healthBridge';
1+
import { HealthBridge } from '../types/healthBridge.js';
22
import { addCommandCallback } from '../utils.js';
33

44
/**

src/plugins/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ export { default as kaltura } from './kaltura.js';
3333
export { default as keychainSwift } from './keychainSwift.js';
3434
export { default as klaviyo } from './klaviyo.js';
3535
export { default as localpreferences } from './localSettings.js';
36+
export { default as masterlock } from './masterlock.js';
3637
export { default as modal } from './modal.js';
3738
export { default as moengage } from './moengage.js';
3839
export { default as moxo } from './moxo.js';

src/plugins/masterlock.ts

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
import { MasterLock } from '../types/masterlock.js';
2+
import { addCallbackFunction, addCommand, addCommandCallback } from '../utils.js';
3+
4+
const masterlock = {
5+
initialize: function (params: MasterLock.InitializeParams) {
6+
return addCommandCallback<MasterLock.InitializeResponse>('median://masterlock/initialize', params);
7+
},
8+
scan: function (params: MasterLock.ScanParams) {
9+
const parameters: Record<string, any> = {};
10+
if (params?.onScanStart) {
11+
parameters.onScanStart = addCallbackFunction(params?.onScanStart, true);
12+
}
13+
if (params?.onScanStop) {
14+
parameters.onScanStop = addCallbackFunction(params?.onScanStop, true);
15+
}
16+
if (params?.onDeviceDiscover) {
17+
parameters.onDeviceDiscover = addCallbackFunction(params?.onDeviceDiscover, true);
18+
}
19+
addCommand('median://masterlock/scan', parameters);
20+
},
21+
unlock: function (params: MasterLock.UnlockParams) {
22+
return addCommandCallback<MasterLock.UnlockResponse>('median://masterlock/unlock', params);
23+
},
24+
permissionGranted: function () {
25+
return addCommandCallback<MasterLock.PermissionResponse>('median://masterlock/permissionGranted');
26+
},
27+
updateFirmware: function (params: MasterLock.UpdateFirmwareParams) {
28+
return addCommandCallback<MasterLock.UpdateFirmwareResponse>('median://masterlock/updateFirmware', params);
29+
},
30+
firmwareUpdate: {
31+
addListener: async function (callback: (status: MasterLock.FirmwareUpdateStatus) => void) {
32+
const listenerIdCallback = addCallbackFunction(callback, true);
33+
const result = await addCommandCallback<MasterLock.FirmwareUpdateAddListenerResponse>(
34+
'median://masterlock/firmwareUpdate/addListener',
35+
{ listenerIdCallback }
36+
);
37+
if (!result || !result.listenerId) {
38+
throw 'Invalid listenerId response';
39+
} else {
40+
return result.listenerId;
41+
}
42+
},
43+
removeListener: function (listenerId: string) {
44+
addCommand('median://masterlock/firmwareUpdate/removeListener', { listenerId });
45+
},
46+
},
47+
lockReset: function (params: MasterLock.LockResetParams) {
48+
return addCommandCallback<MasterLock.LockResetResponse>('median://masterlock/lockReset', params);
49+
},
50+
getDeadboltHandedness: function (params: MasterLock.GetDeadBoltHandednessParams) {
51+
return addCommandCallback<MasterLock.GetDeadBoltHandednessResponse>(
52+
'median://masterlock/getDeadboltHandedness',
53+
params
54+
);
55+
},
56+
setDeadboltHandedness: function (params: MasterLock.SetDeadBoltHandednessParams) {
57+
return addCommandCallback<MasterLock.SetDeadBoltHandednessResponse>(
58+
'median://masterlock/setDeadboltHandedness',
59+
params
60+
);
61+
},
62+
relock: function (params: MasterLock.RelockParams) {
63+
return addCommandCallback<MasterLock.RelockResponse>('median://masterlock/relock', params);
64+
},
65+
};
66+
67+
export default masterlock;

src/types/masterlock.ts

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
export namespace MasterLock {
2+
export type InitializeParams = {
3+
license: string;
4+
};
5+
6+
export type InitializeResponse = {
7+
success: boolean;
8+
};
9+
10+
export type ScanParams = {
11+
onScanStart?: () => void;
12+
onScanStop?: () => void;
13+
onDeviceDiscover?: () => void;
14+
timeout?: number;
15+
};
16+
17+
export type UnlockParams = {
18+
accessProfile: string;
19+
deviceId: string;
20+
firmwareVersion: number | string;
21+
mechanism: "primary" | "secondary";
22+
timeout?: number;
23+
};
24+
25+
export type UnlockResponse = {
26+
success: boolean;
27+
};
28+
29+
export type PermissionResponse = {
30+
granted: boolean;
31+
};
32+
33+
export type UpdateFirmwareParams = {
34+
accessProfile: string;
35+
deviceId: string;
36+
firmwareVersion: number | string;
37+
targetFirmwareVersion: number | string;
38+
timeout?: number;
39+
};
40+
41+
export type UpdateFirmwareResponse = {
42+
success: boolean;
43+
};
44+
45+
export type FirmwareUpdateStatus = {
46+
deviceId: string;
47+
state: string;
48+
}
49+
50+
export type FirmwareUpdateAddListenerResponse = {
51+
listenerId: string;
52+
};
53+
54+
export type LockResetParams = {
55+
accessProfile: string;
56+
deviceId: string;
57+
firmwareVersion: number | string;
58+
timeout?: number;
59+
};
60+
61+
export type LockResetResponse = {
62+
success: boolean;
63+
};
64+
65+
export type GetDeadBoltHandednessParams = {
66+
accessProfile: string;
67+
deviceId: string;
68+
firmwareVersion: number | string;
69+
timeout?: number;
70+
};
71+
72+
export type GetDeadBoltHandednessResponse = {
73+
deviceId: string;
74+
handedness: "left" | "right";
75+
success: boolean;
76+
};
77+
78+
export type SetDeadBoltHandednessParams = {
79+
accessProfile: string;
80+
deviceId: string;
81+
firmwareVersion: number | string;
82+
handedness: "left" | "right";
83+
timeout?: number;
84+
};
85+
86+
export type SetDeadBoltHandednessResponse = {
87+
deviceId: string;
88+
handedness: "left" | "right";
89+
success: boolean;
90+
};
91+
92+
export type RelockParams = {
93+
accessProfile: string;
94+
deviceId: string;
95+
firmwareVersion: number | string;
96+
timeout?: number;
97+
};
98+
99+
export type RelockResponse = {
100+
deviceId: string;
101+
success: boolean;
102+
};
103+
}

src/utils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { AnyData } from './types';
1+
import { AnyData } from './types/index.js';
22

33
interface JSBridgeType {
44
postMessage?: (data: string) => void;

0 commit comments

Comments
 (0)