UNPKG

@dodi-smart/ttlock-graphql-api

Version:
179 lines 7.82 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const builder_1 = require("../builder"); const logger_1 = require("../logger"); const session_1 = require("../session"); const utils_1 = require("../utils"); const ttlock_api_1 = require("@dodi-smart/ttlock-api"); builder_1.builder.objectType('TTLockSmartlockDetails', { fields: (t) => ({ lockId: t.exposeInt('lockId', { description: 'Lock id', nullable: true }), lockName: t.exposeString('lockName', { description: 'Lock name', nullable: true }), lockAlias: t.exposeString('lockAlias', { description: 'Lock alias name', nullable: true }), lockMac: t.exposeString('lockMac', { description: 'Lock MAC address', nullable: true }), electricQuantity: t.exposeInt('electricQuantity', { description: 'Lock battery', nullable: true }), featureValue: t.exposeString('featureValue', { description: 'characteristic value. it is used to indicate what kinds of feature do a lock support.', nullable: true }), timezoneRawOffset: t.exposeInt('timezoneRawOffset', { description: 'The offset between your time zone and UTC, in millisecond', nullable: true }), modelNum: t.exposeString('modelNum', { description: 'Product model (for firmware update)', nullable: true }), hardwareRevision: t.exposeString('hardwareRevision', { description: 'Hardware version (for firmware update)', nullable: true }), firmwareRevision: t.exposeString('firmwareRevision', { description: 'Firmware version (for firmware update)', nullable: true }), date: t.exposeInt('date', { description: 'Lock init time (timestamp in millisecond)', nullable: true }), state: t.field({ type: 'TTLockOpenState', nullable: true, description: 'Get the open state of a lock via gateway or WiFi lock', resolve: (lock) => __awaiter(void 0, void 0, void 0, function* () { const { clientId } = session_1.authHolder; const { accessToken } = session_1.authHolder.auth; if (!accessToken) { logger_1.logger.error("Failed executing 'state': Missing accessToken"); return null; } // TODO: Check if the lock has a associated gateway const gatewayClient = new ttlock_api_1.GatewayApi(); const lockState = yield gatewayClient.getLockState({ clientId, accessToken, lockId: lock.lockId, date: new Date().getTime() }); if (lockState.errcode) { logger_1.logger.error(`Failed executing 'state': Err(${lockState.errcode}): ${lockState.errmsg}`); return null; } return lockState; }) }), passcodes: t.field({ type: 'TTLockSmartlockPasscodes', nullable: false, args: { limit: t.arg.int({ description: 'A limit on the number of objects to be returned. Limit can range between 20 and 10_000, and the default is 20.', required: false, defaultValue: 20 }), offset: t.arg.int({ description: 'Page offset starting from 1', required: false, defaultValue: 1 }) }, resolve: (_parent, { limit, offset }) => __awaiter(void 0, void 0, void 0, function* () { const { clientId } = session_1.authHolder; const { accessToken } = session_1.authHolder.auth; const emptyResponse = { list: [], pageNo: 0, pageSize: 0, total: 0 }; if (!accessToken) { logger_1.logger.error("Failed executing 'passcodes': Missing accessToken"); return emptyResponse; } if (!_parent.lockId) { logger_1.logger.error("Failed executing 'passcodes': Getting the lock failed"); return emptyResponse; } const passcodeClient = new ttlock_api_1.PasscodeApi(); const passcodes = yield passcodeClient.getPasscodes({ clientId, accessToken, lockId: _parent.lockId, date: new Date().getTime(), pageNo: (0, utils_1.fixNumberNullable)(offset), pageSize: (0, utils_1.fixNumberNullable)(limit) }); if (passcodes.errcode) { logger_1.logger.error(`Failed executing 'passcodes': Err(${passcodes.errcode}): ${passcodes.errmsg}`); return emptyResponse; } const { list, pageNo, pageSize, total } = passcodes; return { list, pageNo, pageSize, total }; }) }), wirelessKeypads: t.field({ type: 'TTLockSmartlockWirelessKeypads', nullable: false, resolve: (_parent, {}) => __awaiter(void 0, void 0, void 0, function* () { const { clientId } = session_1.authHolder; const { accessToken } = session_1.authHolder.auth; const emptyResponse = { list: [] }; if (!accessToken) { logger_1.logger.error("Failed executing 'wirelessKeypads': Missing accessToken"); return emptyResponse; } if (!_parent.lockId) { logger_1.logger.error("Failed executing 'wirelessKeypads': Getting the lock failed"); return emptyResponse; } const client = new ttlock_api_1.WirelessKeypadApi(); const passcodes = yield client.getLockWirelessKeypads({ clientId, accessToken, lockId: _parent.lockId, date: new Date().getTime() }); if (passcodes.errcode) { logger_1.logger.error(`Failed executing 'wirelessKeypads': Err(${passcodes.errcode}): ${passcodes.errmsg}`); return emptyResponse; } const { list } = passcodes; return { list }; }) }) }) }); //# sourceMappingURL=smartlock-details.js.map