Refactor
This commit is contained in:
36
lib/features/app_update/data/github_release_parser.dart
Normal file
36
lib/features/app_update/data/github_release_parser.dart
Normal file
@@ -0,0 +1,36 @@
|
||||
import 'package:dartx/dartx.dart';
|
||||
import 'package:hiddify/core/model/environment.dart';
|
||||
import 'package:hiddify/features/app_update/model/remote_version_entity.dart';
|
||||
|
||||
abstract class GithubReleaseParser {
|
||||
static RemoteVersionEntity parse(Map<String, dynamic> json) {
|
||||
final fullTag = json['tag_name'] as String;
|
||||
final fullVersion = fullTag.removePrefix("v").split("-").first.split("+");
|
||||
var version = fullVersion.first;
|
||||
var buildNumber = fullVersion.elementAtOrElse(1, (index) => "");
|
||||
var flavor = Environment.prod;
|
||||
for (final env in Environment.values) {
|
||||
final suffix = ".${env.name}";
|
||||
if (version.endsWith(suffix)) {
|
||||
version = version.removeSuffix(suffix);
|
||||
flavor = env;
|
||||
break;
|
||||
} else if (buildNumber.endsWith(suffix)) {
|
||||
buildNumber = buildNumber.removeSuffix(suffix);
|
||||
flavor = env;
|
||||
break;
|
||||
}
|
||||
}
|
||||
final preRelease = json["prerelease"] as bool;
|
||||
final publishedAt = DateTime.parse(json["published_at"] as String);
|
||||
return RemoteVersionEntity(
|
||||
version: version,
|
||||
buildNumber: buildNumber,
|
||||
releaseTag: fullTag,
|
||||
preRelease: preRelease,
|
||||
url: json["html_url"] as String,
|
||||
publishedAt: publishedAt,
|
||||
flavor: flavor,
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user