feat: remove check for updates in market releases

This commit is contained in:
problematicconsumer
2023-09-15 23:09:58 +03:30
parent bd1c3b8ac9
commit b9034f5dd7
6 changed files with 53 additions and 18 deletions

View File

@@ -37,7 +37,7 @@ android-apk-release:
flutter build apk --target-platform android-arm,android-arm64,android-x64 --split-per-abi --target $(TARGET) flutter build apk --target-platform android-arm,android-arm64,android-x64 --split-per-abi --target $(TARGET)
android-aab-release: android-aab-release:
flutter build appbundle --target $(TARGET) flutter build appbundle --target $(TARGET) --dart-define release=google-play
windows-release: windows-release:
flutter_distributor package --platform windows --targets exe --skip-clean --build-target $(TARGET) flutter_distributor package --platform windows --targets exe --skip-clean --build-target $(TARGET)

View File

@@ -22,20 +22,25 @@ class AppRepositoryImpl
name: packageInfo.appName, name: packageInfo.appName,
version: packageInfo.version, version: packageInfo.version,
buildNumber: packageInfo.buildNumber, buildNumber: packageInfo.buildNumber,
release: Release.read(),
installerMedia: packageInfo.installerStore, installerMedia: packageInfo.installerStore,
operatingSystem: Platform.operatingSystem, operatingSystem: Platform.operatingSystem,
environment: environment, environment: environment,
); );
} }
// TODO add market-specific update checking
@override @override
TaskEither<AppFailure, RemoteVersionInfo> getLatestVersion({ TaskEither<AppFailure, RemoteVersionInfo> getLatestVersion({
bool includePreReleases = false, bool includePreReleases = false,
Release release = Release.general,
}) { }) {
return exceptionHandler( return exceptionHandler(
() async { () async {
if (!release.allowCustomUpdateChecker) {
throw Exception("custom update checkers are not supported");
}
final response = await dio.get<List>(Constants.githubReleasesApiUrl); final response = await dio.get<List>(Constants.githubReleasesApiUrl);
if (response.statusCode != 200 || response.data == null) { if (response.statusCode != 200 || response.data == null) {
loggy.warning("failed to fetch latest version info"); loggy.warning("failed to fetch latest version info");
return left(const AppFailure.unexpected()); return left(const AppFailure.unexpected());

View File

@@ -13,6 +13,7 @@ class AppInfo with _$AppInfo {
required String name, required String name,
required String version, required String version,
required String buildNumber, required String buildNumber,
required Release release,
String? installerMedia, String? installerMedia,
required String operatingSystem, required String operatingSystem,
required Environment environment, required Environment environment,

View File

@@ -1,4 +1,23 @@
import 'package:dartx/dartx.dart';
enum Environment { enum Environment {
prod, prod,
dev; dev;
} }
enum Release {
general("general"),
googlePlay("google-play");
const Release(this.key);
final String key;
bool get allowCustomUpdateChecker => this == general;
static Release read() =>
Release.values.firstOrNullWhere(
(e) => e.key == const String.fromEnvironment("release"),
) ??
Release.general;
}

View File

@@ -88,6 +88,7 @@ class AboutPage extends HookConsumerWidget {
); );
}, },
), ),
if (appInfo.release.allowCustomUpdateChecker)
ListTile( ListTile(
title: Text(t.about.checkForUpdate), title: Text(t.about.checkForUpdate),
trailing: appUpdate.isLoading trailing: appUpdate.isLoading

View File

@@ -11,7 +11,15 @@ class AppUpdateNotifier extends _$AppUpdateNotifier with AppLogger {
@override @override
Future<RemoteVersionInfo?> build() async { Future<RemoteVersionInfo?> build() async {
loggy.debug("checking for update"); loggy.debug("checking for update");
final currentVersion = ref.watch(appInfoProvider).version; final appInfo = ref.watch(appInfoProvider);
// TODO use market-specific update checkers
if (!appInfo.release.allowCustomUpdateChecker) {
loggy.debug(
"custom update checkers are not allowed for [${appInfo.release.name}] release",
);
return null;
}
final currentVersion = appInfo.version;
return ref return ref
.watch(appRepositoryProvider) .watch(appRepositoryProvider)
.getLatestVersion(includePreReleases: true) .getLatestVersion(includePreReleases: true)
@@ -27,7 +35,8 @@ class AppUpdateNotifier extends _$AppUpdateNotifier with AppLogger {
return remote; return remote;
} }
loggy.info( loggy.info(
"already using latest version[$currentVersion], remote: $remote"); "already using latest version[$currentVersion], remote: $remote",
);
return null; return null;
}, },
).run(); ).run();