mirror of
https://github.com/SyncrowIOT/backend.git
synced 2025-11-26 08:04:53 +00:00
Add functionality to retrieve Tap-to-Run scene details from Tuya API
This commit is contained in:
@ -21,3 +21,8 @@ export interface DeleteTapToRunSceneInterface {
|
||||
msg?: string;
|
||||
result: boolean;
|
||||
}
|
||||
export interface SceneDetailsResult {
|
||||
id: string;
|
||||
name: string;
|
||||
type: string;
|
||||
}
|
||||
|
||||
@ -15,6 +15,7 @@ import {
|
||||
AddTapToRunSceneInterface,
|
||||
DeleteTapToRunSceneInterface,
|
||||
GetTapToRunSceneByUnitInterface,
|
||||
SceneDetailsResult,
|
||||
} from '../interface/scene.interface';
|
||||
import { convertKeysToCamelCase } from '@app/common/helper/camelCaseConverter';
|
||||
|
||||
@ -256,6 +257,18 @@ export class SceneService {
|
||||
if (device) {
|
||||
action.entityId = device.uuid;
|
||||
}
|
||||
} else if (
|
||||
action.actionExecutor !== 'device_issue' &&
|
||||
action.actionExecutor !== 'delay'
|
||||
) {
|
||||
const sceneDetails = await this.getTapToRunSceneDetailsTuya(
|
||||
action.entityId,
|
||||
);
|
||||
|
||||
if (sceneDetails.id) {
|
||||
action.name = sceneDetails.name;
|
||||
action.type = sceneDetails.type;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -275,6 +288,38 @@ export class SceneService {
|
||||
}
|
||||
}
|
||||
}
|
||||
async getTapToRunSceneDetailsTuya(
|
||||
sceneId: string,
|
||||
): Promise<SceneDetailsResult> {
|
||||
try {
|
||||
const path = `/v2.0/cloud/scene/rule/${sceneId}`;
|
||||
const response = await this.tuya.request({
|
||||
method: 'GET',
|
||||
path,
|
||||
});
|
||||
|
||||
if (!response.success) {
|
||||
throw new HttpException(response.msg, HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
const camelCaseResponse = convertKeysToCamelCase(response);
|
||||
const { id, name, type } = camelCaseResponse.result;
|
||||
|
||||
return {
|
||||
id,
|
||||
name,
|
||||
type,
|
||||
} as SceneDetailsResult;
|
||||
} catch (err) {
|
||||
if (err instanceof BadRequestException) {
|
||||
throw err; // Re-throw BadRequestException
|
||||
} else {
|
||||
throw new HttpException(
|
||||
'Scene not found for Tuya',
|
||||
HttpStatus.NOT_FOUND,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
async updateTapToRunScene(
|
||||
updateSceneTapToRunDto: UpdateSceneTapToRunDto,
|
||||
sceneId: string,
|
||||
|
||||
Reference in New Issue
Block a user