import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:recording_tool/app/config/api_common.dart'; import 'package:recording_tool/core/cache/app_storage.dart'; import 'package:recording_tool/core/cache/storage_keys.dart'; import 'package:recording_tool/core/network/providers/dio_providers.dart'; import 'package:recording_tool/core/utils/device_utils.dart'; import 'package:recording_tool/features/auth/model/model_auth.dart'; class AuthServer { /// [passCode] 口令码 static Future login(String passCode, Ref ref) async { final deviceCode = await DeviceUtils.deviceCode(); if (deviceCode.isEmpty) { throw const FormatException('无法获取设备标识'); } final apiClient = ref.read(apiClientProvider); final data = await apiClient.post( AuthApi.getToken.path, data: {'deviceCode': deviceCode, 'passCode': passCode}, parser: (json) => GetTokenResModel.fromJson(json as Map), ); if (data.deviceAccessToken.isEmpty) { throw const FormatException('登录响应缺少 TOKEN'); } await AppStorage.setString(StorageKeys.authToken, data.deviceAccessToken); return data; } }