import 'package:dio/dio.dart'; import '../core/api/api_client.dart'; import '../core/device/device_id.dart'; import '../core/exceptions.dart'; import '../models/license.dart'; class LicenseRepository { final ApiClient _client; const LicenseRepository(this._client); Future getInfo() async { try { final resp = await _client.get('/license/info'); final data = resp.data['data']; if (data == null) return null; return LicenseInfo.fromJson(data as Map); } on DioException catch (e) { throw AppException( e.response?.data?['error'] as String? ?? '获取授权信息失败', statusCode: e.response?.statusCode, ); } } /// Activate a license key for this device. Future activate(String licenseKey, {String? deviceName}) async { final deviceId = await DeviceId.get(); try { await _client.post('/license/activate', data: { 'license_key': licenseKey, 'device_id': deviceId, 'device_name': deviceName ?? DeviceId.platformName, 'platform': DeviceId.platformName, }); } on DioException catch (e) { throw AppException( e.response?.data?['error'] as String? ?? '激活失败', statusCode: e.response?.statusCode, ); } } /// Deactivate (unbind) this device from its license. Future deactivate() async { final deviceId = await DeviceId.get(); try { await _client.post('/license/deactivate', data: {'device_id': deviceId}); } on DioException catch (e) { throw AppException( e.response?.data?['error'] as String? ?? '解绑失败', statusCode: e.response?.statusCode, ); } } }