Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ node_modules
dist/
build/
.idea
median-js-bridge-*.tgz
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "median-js-bridge",
"version": "2.13.4",
"version": "2.13.5",
"description": "Median bridge and utilities for JS web frameworks",
"main": "dist/index.js",
"types": "dist/index.d.ts",
Expand Down
8 changes: 3 additions & 5 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@ import { InAppPurchaseInfoReadyData } from './plugins/iap.js';
import { ShareToAppData } from './plugins/share.js';
import { createTempFunctionName, setMedianCallback, setSubscription } from './utils.js';

import { HealthBridge as HealthBridgeType } from './types/healthBridge.js';

namespace Median {
///////////////////////////////
// Internal //
Expand Down Expand Up @@ -111,6 +109,7 @@ namespace Median {
export const keychainSwift = plugins.keychainSwift;
export const klaviyo = plugins.klaviyo;
export const localpreferences = plugins.localpreferences;
export const masterlock = plugins.masterlock;
export const modal = plugins.modal;
export const moengage = plugins.moengage;
export const moxo = plugins.moxo;
Expand Down Expand Up @@ -186,6 +185,5 @@ export default Median;
///////////////////////////////
// Types //
///////////////////////////////
export declare namespace Types {
export import HealthBridge = HealthBridgeType;
}
export { HealthBridge } from './types/healthBridge.js';
export { MasterLock } from './types/masterlock.js';
2 changes: 1 addition & 1 deletion src/plugins/healthBridge.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { HealthBridge } from '../types/healthBridge';
import { HealthBridge } from '../types/healthBridge.js';
import { addCommandCallback } from '../utils.js';

/**
Expand Down
1 change: 1 addition & 0 deletions src/plugins/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ export { default as kaltura } from './kaltura.js';
export { default as keychainSwift } from './keychainSwift.js';
export { default as klaviyo } from './klaviyo.js';
export { default as localpreferences } from './localSettings.js';
export { default as masterlock } from './masterlock.js';
export { default as modal } from './modal.js';
export { default as moengage } from './moengage.js';
export { default as moxo } from './moxo.js';
Expand Down
67 changes: 67 additions & 0 deletions src/plugins/masterlock.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
import { MasterLock } from '../types/masterlock.js';
import { addCallbackFunction, addCommand, addCommandCallback } from '../utils.js';

const masterlock = {
initialize: function (params: MasterLock.InitializeParams) {
return addCommandCallback<MasterLock.InitializeResponse>('median://masterlock/initialize', params);
},
scan: function (params: MasterLock.ScanParams) {
const parameters: Record<string, any> = {};
if (params?.onScanStart) {
parameters.onScanStart = addCallbackFunction(params?.onScanStart, true);
}
if (params?.onScanStop) {
parameters.onScanStop = addCallbackFunction(params?.onScanStop, true);
}
if (params?.onDeviceDiscover) {
parameters.onDeviceDiscover = addCallbackFunction(params?.onDeviceDiscover, true);
}
addCommand('median://masterlock/scan', parameters);
},
unlock: function (params: MasterLock.UnlockParams) {
return addCommandCallback<MasterLock.UnlockResponse>('median://masterlock/unlock', params);
},
permissionGranted: function () {
return addCommandCallback<MasterLock.PermissionResponse>('median://masterlock/permissionGranted');
},
updateFirmware: function (params: MasterLock.UpdateFirmwareParams) {
return addCommandCallback<MasterLock.UpdateFirmwareResponse>('median://masterlock/updateFirmware', params);
},
firmwareUpdate: {
addListener: async function (callback: (status: MasterLock.FirmwareUpdateStatus) => void) {
const listenerIdCallback = addCallbackFunction(callback, true);
const result = await addCommandCallback<MasterLock.FirmwareUpdateAddListenerResponse>(
'median://masterlock/firmwareUpdate/addListener',
{ listenerIdCallback }
);
if (!result || !result.listenerId) {
throw 'Invalid listenerId response';
} else {
return result.listenerId;
}
},
removeListener: function (listenerId: string) {
addCommand('median://masterlock/firmwareUpdate/removeListener', { listenerId });
},
},
lockReset: function (params: MasterLock.LockResetParams) {
return addCommandCallback<MasterLock.LockResetResponse>('median://masterlock/lockReset', params);
},
getDeadboltHandedness: function (params: MasterLock.GetDeadBoltHandednessParams) {
return addCommandCallback<MasterLock.GetDeadBoltHandednessResponse>(
'median://masterlock/getDeadboltHandedness',
params
);
},
setDeadboltHandedness: function (params: MasterLock.SetDeadBoltHandednessParams) {
return addCommandCallback<MasterLock.SetDeadBoltHandednessResponse>(
'median://masterlock/setDeadboltHandedness',
params
);
},
relock: function (params: MasterLock.RelockParams) {
return addCommandCallback<MasterLock.RelockResponse>('median://masterlock/relock', params);
},
};

export default masterlock;
103 changes: 103 additions & 0 deletions src/types/masterlock.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
export namespace MasterLock {
export type InitializeParams = {
license: string;
};

export type InitializeResponse = {
success: boolean;
};

export type ScanParams = {
onScanStart?: () => void;
onScanStop?: () => void;
onDeviceDiscover?: () => void;
timeout?: number;
};

export type UnlockParams = {
accessProfile: string;
deviceId: string;
firmwareVersion: number | string;
mechanism: "primary" | "secondary";
timeout?: number;
};

export type UnlockResponse = {
success: boolean;
};

export type PermissionResponse = {
granted: boolean;
};

export type UpdateFirmwareParams = {
accessProfile: string;
deviceId: string;
firmwareVersion: number | string;
targetFirmwareVersion: number | string;
timeout?: number;
};

export type UpdateFirmwareResponse = {
success: boolean;
};

export type FirmwareUpdateStatus = {
deviceId: string;
state: string;
}

export type FirmwareUpdateAddListenerResponse = {
listenerId: string;
};

export type LockResetParams = {
accessProfile: string;
deviceId: string;
firmwareVersion: number | string;
timeout?: number;
};

export type LockResetResponse = {
success: boolean;
};

export type GetDeadBoltHandednessParams = {
accessProfile: string;
deviceId: string;
firmwareVersion: number | string;
timeout?: number;
};

export type GetDeadBoltHandednessResponse = {
deviceId: string;
handedness: "left" | "right";
success: boolean;
};

export type SetDeadBoltHandednessParams = {
accessProfile: string;
deviceId: string;
firmwareVersion: number | string;
handedness: "left" | "right";
timeout?: number;
};

export type SetDeadBoltHandednessResponse = {
deviceId: string;
handedness: "left" | "right";
success: boolean;
};

export type RelockParams = {
accessProfile: string;
deviceId: string;
firmwareVersion: number | string;
timeout?: number;
};

export type RelockResponse = {
deviceId: string;
success: boolean;
};
}
2 changes: 1 addition & 1 deletion src/utils.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { AnyData } from './types';
import { AnyData } from './types/index.js';

interface JSBridgeType {
postMessage?: (data: string) => void;
Expand Down