Add basic flavors

This commit is contained in:
problematicconsumer
2023-09-12 15:22:58 +03:30
parent ea81be3763
commit f1b0f8ee4b
24 changed files with 271 additions and 293 deletions

View File

@@ -1,3 +1,3 @@
export 'update_failure.dart';
export 'update_repository.dart';
export 'version_info.dart';
export 'app_failure.dart';
export 'app_info.dart';
export 'app_repository.dart';

View File

@@ -2,13 +2,13 @@ import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:hiddify/core/prefs/prefs.dart';
import 'package:hiddify/domain/failures.dart';
part 'update_failure.freezed.dart';
part 'app_failure.freezed.dart';
@freezed
sealed class UpdateFailure with _$UpdateFailure, Failure {
const UpdateFailure._();
sealed class AppFailure with _$AppFailure, Failure {
const AppFailure._();
const factory UpdateFailure.unexpected([
const factory AppFailure.unexpected([
Object? error,
StackTrace? stackTrace,
]) = UpdateUnexpectedFailure;

View File

@@ -1,24 +1,27 @@
import 'package:dartx/dartx.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:hiddify/domain/environment.dart';
part 'version_info.freezed.dart';
part 'version_info.g.dart';
part 'app_info.freezed.dart';
part 'app_info.g.dart';
@freezed
class InstalledVersionInfo with _$InstalledVersionInfo {
const InstalledVersionInfo._();
class AppInfo with _$AppInfo {
const AppInfo._();
const factory InstalledVersionInfo({
const factory AppInfo({
required String name,
required String version,
required String buildNumber,
String? installerMedia,
}) = _InstalledVersionInfo;
required String operatingSystem,
required Environment environment,
}) = _AppInfo;
String get fullVersion =>
buildNumber.isBlank ? version : "$version+$buildNumber";
String get userAgent => "HiddifyNext/$version ($operatingSystem)";
factory InstalledVersionInfo.fromJson(Map<String, dynamic> json) =>
_$InstalledVersionInfoFromJson(json);
factory AppInfo.fromJson(Map<String, dynamic> json) =>
_$AppInfoFromJson(json);
}
// TODO ignore drafts

View File

@@ -0,0 +1,9 @@
import 'package:fpdart/fpdart.dart';
import 'package:hiddify/domain/app/app_failure.dart';
import 'package:hiddify/domain/app/app_info.dart';
abstract interface class AppRepository {
TaskEither<AppFailure, RemoteVersionInfo> getLatestVersion({
bool includePreReleases = false,
});
}

View File

@@ -1,11 +0,0 @@
import 'package:fpdart/fpdart.dart';
import 'package:hiddify/domain/app/update_failure.dart';
import 'package:hiddify/domain/app/version_info.dart';
abstract interface class UpdateRepository {
TaskEither<UpdateFailure, InstalledVersionInfo> getCurrentVersion();
TaskEither<UpdateFailure, RemoteVersionInfo> getLatestVersion({
bool includePreReleases = false,
});
}

View File

@@ -0,0 +1,4 @@
enum Environment {
prod,
dev;
}