import 'package:social_app/data/network/i_api_client.dart'; class AppVersionResponse { final bool hasUpdate; final String latestVersionName; final int latestVersionCode; final int minSupportedVersionCode; final String updateType; final String? downloadUrl; final String? releaseNotes; final String? fileName; final int? fileSize; final String? sha256; AppVersionResponse({ required this.hasUpdate, required this.latestVersionName, required this.latestVersionCode, required this.minSupportedVersionCode, required this.updateType, this.downloadUrl, this.releaseNotes, this.fileName, this.fileSize, this.sha256, }); factory AppVersionResponse.fromJson(Map json) { return AppVersionResponse( hasUpdate: json['has_update'] as bool, latestVersionName: json['latest_version_name'] as String, latestVersionCode: json['latest_version_code'] as int, minSupportedVersionCode: json['min_supported_version_code'] as int, updateType: json['update_type'] as String, downloadUrl: json['download_url'] as String?, releaseNotes: json['release_notes'] as String?, fileName: json['file_name'] as String?, fileSize: json['file_size'] as int?, sha256: json['sha256'] as String?, ); } } class SettingsApi { final IApiClient _client; static const _prefix = '/api/v1/app'; SettingsApi(this._client); Future checkUpdates({ required int currentVersionCode, required String currentVersionName, String platform = 'android', String channel = 'release', }) async { final params = { 'platform': platform, 'channel': channel, 'current_version_code': currentVersionCode.toString(), 'current_version_name': currentVersionName, }; final queryString = Uri(queryParameters: params).query; final response = await _client.get('$_prefix/check-updates?$queryString'); return AppVersionResponse.fromJson(response.data); } }