2023-12-01 12:56:24 +03:30
|
|
|
import 'package:freezed_annotation/freezed_annotation.dart';
|
2026-01-17 13:09:20 +03:00
|
|
|
import 'package:umbrix/core/model/environment.dart';
|
2023-12-01 12:56:24 +03:30
|
|
|
|
|
|
|
|
part 'remote_version_entity.freezed.dart';
|
|
|
|
|
|
|
|
|
|
@Freezed()
|
|
|
|
|
class RemoteVersionEntity with _$RemoteVersionEntity {
|
|
|
|
|
const RemoteVersionEntity._();
|
|
|
|
|
|
|
|
|
|
const factory RemoteVersionEntity({
|
|
|
|
|
required String version,
|
|
|
|
|
required String buildNumber,
|
|
|
|
|
required String releaseTag,
|
|
|
|
|
required bool preRelease,
|
|
|
|
|
required String url,
|
|
|
|
|
required DateTime publishedAt,
|
|
|
|
|
required Environment flavor,
|
2026-01-18 20:14:19 +03:00
|
|
|
@Default([]) List<ReleaseAsset> assets,
|
2023-12-01 12:56:24 +03:30
|
|
|
}) = _RemoteVersionEntity;
|
|
|
|
|
|
|
|
|
|
String get presentVersion =>
|
|
|
|
|
flavor == Environment.prod ? version : "$version ${flavor.name}";
|
2026-01-18 20:14:19 +03:00
|
|
|
|
|
|
|
|
/// Найти asset по расширению файла
|
|
|
|
|
String? findAssetByExtension(String extension) {
|
|
|
|
|
try {
|
|
|
|
|
return assets.firstWhere((asset) => asset.name.endsWith(extension)).downloadUrl;
|
|
|
|
|
} catch (_) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@freezed
|
|
|
|
|
class ReleaseAsset with _$ReleaseAsset {
|
|
|
|
|
const factory ReleaseAsset({
|
|
|
|
|
required String name,
|
|
|
|
|
required String downloadUrl,
|
|
|
|
|
required int size,
|
|
|
|
|
}) = _ReleaseAsset;
|
2023-12-01 12:56:24 +03:30
|
|
|
}
|