42 lines
1.1 KiB
Dart
42 lines
1.1 KiB
Dart
import 'package:freezed_annotation/freezed_annotation.dart';
|
|
import 'package:umbrix/core/model/environment.dart';
|
|
|
|
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,
|
|
@Default([]) List<ReleaseAsset> assets,
|
|
}) = _RemoteVersionEntity;
|
|
|
|
String get presentVersion =>
|
|
flavor == Environment.prod ? version : "$version ${flavor.name}";
|
|
|
|
/// Найти 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;
|
|
}
|