Files
social-app/apps/lib/features/settings/data/apis/settings_api.dart
T

69 lines
2.0 KiB
Dart
Raw Normal View History

import 'package:social_app/data/network/i_api_client.dart';
2026-03-16 16:09:07 +08:00
class AppVersionResponse {
final bool hasUpdate;
final String latestVersionName;
final int latestVersionCode;
final int minSupportedVersionCode;
2026-03-16 16:09:07 +08:00
final String updateType;
final String? downloadUrl;
final String? releaseNotes;
final String? fileName;
final int? fileSize;
final String? sha256;
2026-03-16 16:09:07 +08:00
AppVersionResponse({
required this.hasUpdate,
required this.latestVersionName,
required this.latestVersionCode,
required this.minSupportedVersionCode,
2026-03-16 16:09:07 +08:00
required this.updateType,
this.downloadUrl,
this.releaseNotes,
this.fileName,
this.fileSize,
this.sha256,
2026-03-16 16:09:07 +08:00
});
factory AppVersionResponse.fromJson(Map<String, dynamic> 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,
2026-03-16 16:09:07 +08:00
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?,
2026-03-16 16:09:07 +08:00
);
}
}
class SettingsApi {
final IApiClient _client;
static const _prefix = '/api/v1/app';
SettingsApi(this._client);
Future<AppVersionResponse> checkUpdates({
required int currentVersionCode,
required String currentVersionName,
2026-03-16 16:09:07 +08:00
String platform = 'android',
String channel = 'release',
2026-03-16 16:09:07 +08:00
}) async {
final queryParameters = <String, String>{
2026-03-16 16:09:07 +08:00
'platform': platform,
'channel': channel,
'current_version_code': currentVersionCode.toString(),
'current_version_name': currentVersionName,
2026-03-16 16:09:07 +08:00
};
final response = await _client.get(
'$_prefix/check-updates',
queryParameters: queryParameters,
);
2026-03-16 16:09:07 +08:00
return AppVersionResponse.fromJson(response.data);
}
}