@ilo-home/react-native-tuya
Version:
React Native bindings for the Tuya SDK
55 lines (44 loc) • 1.27 kB
text/typescript
import { NativeModules, Platform } from 'react-native';
const tuya = NativeModules.TuyaHomeManagerModule;
export type CreateHomeParams = {
name: string;
geoName: string;
lon: number;
lat: number;
rooms: string[];
};
export function createHome(params: CreateHomeParams): Promise<string> {
return tuya.createHome(params);
}
export type HomeDetailsResponse = {
name: string;
admin: boolean;
background: string;
dealStatus: 1 | 2 | 3; // 1 = unaccepted, 2 = accepted, 3 = rejected
displayOrder: number;
geoName: string;
gid: number;
role: -1 | 0 | 1 | 2 | 999; // -1 = custom, 0 = member, 1 = admin, 2 = owner, -999 = invalid
homeId: number;
lat: number;
lon: number;
};
export type QueryHomeListResponse = HomeDetailsResponse[];
export async function queryHomeList(): Promise<QueryHomeListResponse> {
let homes = await tuya.queryHomeList();
// Tuya's Android SDK uses different property names than the iOS SDK...
if (Platform.OS === 'android') {
homes = homes.map((m: any) => ({
...m,
dealStatus: m.homeStatus,
}));
}
return homes;
}
export type JoinFamilyParams = {
homeId: number;
action: boolean;
};
export function joinFamily(params: JoinFamilyParams) {
return tuya.joinFamily(params);
}