import 'package:starcloud/blue/blue_manage.dart'; import 'package:starcloud/blue/blue_read_write.dart'; import 'package:starcloud/entity/star_cloud_lock_list.dart'; import 'package:starcloud/sdk/business/sdk_common.dart'; import 'package:starcloud/starcloud.dart'; import '../core/callback_bridge.dart'; class StarCloudDeviceService { StarCloudDeviceService(); Future _fetchWrapper(int? cloudUid) { return SDKCommon.instance.fetchStarCloudUser(cloudUid); } Future> scanDeviceList({ int timeout = 3600, bool notPaired = true, void Function(List devices)? onScan, }) { return CallbackBridge.fromCallback>( executor: (onSuccess, onError) { StarCloudSDK.instance.scanDeviceList( timeout: timeout, notPaired: notPaired, scanType: ScanType.lock, onScan: (list) { onScan?.call(list); onSuccess(list); }, ); }, ); } Future stopScan() { return CallbackBridge.fromVoidCallback( executor: (onSuccess, onError) { StarCloudSDK.instance.stopScan(onError: onError).then((_) => onSuccess()); }, ); } Future disconnect() { return CallbackBridge.fromVoidCallback( executor: (onSuccess, onError) { StarCloudSDK.instance.disconnect().then((_) => onSuccess()); }, ); } Future pairDevice({ required StarCloudScanResult scanResult, int? cloudUid, }) async { final wrapper = await _fetchWrapper(cloudUid); return CallbackBridge.fromCallback( executor: (onSuccess, onError) { wrapper.pairDevice( scanResult: scanResult, onSuccess: onSuccess, onError: onError, ); }, ); } Future getDeviceList({ required int pageNo, required int pageSize, int? cloudUid, }) async { final wrapper = await _fetchWrapper(cloudUid); return CallbackBridge.fromCallback( executor: (onSuccess, onError) { wrapper.getDeviceList( pageNo: pageNo, pageSize: pageSize, onSuccess: onSuccess, onError: onError, ); }, ); } Future getDevice({ required int lockId, int? cloudUid, }) async { final wrapper = await _fetchWrapper(cloudUid); return CallbackBridge.fromCallback( executor: (onSuccess, onError) { wrapper.getDevice( lockId: lockId, onSuccess: onSuccess, onError: onError, ); }, ); } Future openLock({ required int lockId, int? cloudUid, }) async { final wrapper = await _fetchWrapper(cloudUid); return CallbackBridge.fromVoidCallback( executor: (onSuccess, onError) { wrapper.openLock( lockId: lockId, onSuccess: onSuccess, onError: onError, ); }, ); } Future closeLock({ required int lockId, int? cloudUid, }) async { final wrapper = await _fetchWrapper(cloudUid); return CallbackBridge.fromVoidCallback( executor: (onSuccess, onError) { wrapper.closeLock( lockId: lockId, onSuccess: onSuccess, onError: onError, ); }, ); } Future resetLock({ required int lockId, int? cloudUid, }) async { final wrapper = await _fetchWrapper(cloudUid); return CallbackBridge.fromVoidCallback( executor: (onSuccess, onError) { wrapper.resetLock( lockId: lockId, onSuccess: onSuccess, onError: onError, ); }, ); } Future updateAdminKeyboardPwd({ required int lockId, required String pwd, int? cloudUid, }) async { final wrapper = await _fetchWrapper(cloudUid); return CallbackBridge.fromVoidCallback( executor: (onSuccess, onError) { wrapper.updateAdminKeyboardPwd( lockId: lockId, pwd: pwd, onSuccess: onSuccess, onError: onError, ); }, ); } }