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 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, ); } }