build: support for enabling or disabling the update checker in build time

This commit is contained in:
Kingkor Roy Tirtho 2023-04-27 22:18:09 +06:00
parent 296f96cf17
commit 1cc62c40a0
5 changed files with 27 additions and 12 deletions

View File

@ -4,4 +4,9 @@ PASSWORD=
# The format: # The format:
# SPOTIFY_SECRETS=clintId1:clientSecret1,clientId2:clientSecret2 # SPOTIFY_SECRETS=clintId1:clientSecret1,clientId2:clientSecret2
SPOTIFY_SECRETS= SPOTIFY_SECRETS=
# 0 or 1
# 0 = disable
# 1 = enable
ENABLE_UPDATE_CHECK=

View File

@ -35,6 +35,7 @@ class Assets {
AssetGenImage('assets/placeholder.png'); AssetGenImage('assets/placeholder.png');
static const AssetGenImage spotubeLogoForeground = static const AssetGenImage spotubeLogoForeground =
AssetGenImage('assets/spotube-logo-foreground.jpg'); AssetGenImage('assets/spotube-logo-foreground.jpg');
static const String spotubeLogoIco = 'assets/spotube-logo.ico';
static const AssetGenImage spotubeLogoPng = static const AssetGenImage spotubeLogoPng =
AssetGenImage('assets/spotube-logo.png'); AssetGenImage('assets/spotube-logo.png');
static const String spotubeLogoSvg = 'assets/spotube-logo.svg'; static const String spotubeLogoSvg = 'assets/spotube-logo.svg';
@ -53,6 +54,7 @@ class Assets {
emptyBox, emptyBox,
placeholder, placeholder,
spotubeLogoForeground, spotubeLogoForeground,
spotubeLogoIco,
spotubeLogoPng, spotubeLogoPng,
spotubeLogoSvg, spotubeLogoSvg,
spotubeScreenshot, spotubeScreenshot,

View File

@ -21,4 +21,9 @@ abstract class Env {
"clientSecret": secrets.last, "clientSecret": secrets.last,
}; };
}).toList(); }).toList();
@EnviedField(varName: 'ENABLE_UPDATE_CHECK', defaultValue: "1")
static final _enableUpdateChecker = _Env._enableUpdateChecker;
static bool get enableUpdateChecker => _enableUpdateChecker == "1";
} }

View File

@ -5,6 +5,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:http/http.dart' as http; import 'package:http/http.dart' as http;
import 'package:spotube/collections/env.dart';
import 'package:spotube/components/shared/links/anchor_button.dart'; import 'package:spotube/components/shared/links/anchor_button.dart';
import 'package:spotube/hooks/use_package_info.dart'; import 'package:spotube/hooks/use_package_info.dart';
@ -29,10 +30,9 @@ void useUpdateChecker(WidgetRef ref) {
(jsonDecode(value.body)["tag_name"] as String).replaceAll("v", ""); (jsonDecode(value.body)["tag_name"] as String).replaceAll("v", "");
final currentVersion = packageInfo.version == "Unknown" final currentVersion = packageInfo.version == "Unknown"
? null ? null
: Version.parse( : Version.parse(packageInfo.version);
packageInfo.version, final latestVersion =
); tagName == "nightly" ? null : Version.parse(tagName);
final latestVersion = Version.parse(tagName);
return [currentVersion, latestVersion]; return [currentVersion, latestVersion];
}, },
[packageInfo.version], [packageInfo.version],
@ -46,6 +46,7 @@ void useUpdateChecker(WidgetRef ref) {
); );
useEffect(() { useEffect(() {
if (!Env.enableUpdateChecker) return;
if (!isCheckUpdateEnabled) return null; if (!isCheckUpdateEnabled) return null;
checkUpdate().then((value) { checkUpdate().then((value) {
final currentVersion = value.first; final currentVersion = value.first;

View File

@ -5,6 +5,7 @@ import 'package:flutter_desktop_tools/flutter_desktop_tools.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:go_router/go_router.dart'; import 'package:go_router/go_router.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:spotube/collections/env.dart';
import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/collections/spotube_icons.dart';
import 'package:spotube/components/settings/color_scheme_picker_dialog.dart'; import 'package:spotube/components/settings/color_scheme_picker_dialog.dart';
@ -401,13 +402,14 @@ class SettingsPage extends HookConsumerWidget {
), ),
), ),
), ),
SwitchListTile( if (Env.enableUpdateChecker)
secondary: const Icon(SpotubeIcons.update), SwitchListTile(
title: const Text("Check for Update"), secondary: const Icon(SpotubeIcons.update),
value: preferences.checkUpdate, title: const Text("Check for Update"),
onChanged: (checked) => value: preferences.checkUpdate,
preferences.setCheckUpdate(checked), onChanged: (checked) =>
), preferences.setCheckUpdate(checked),
),
ListTile( ListTile(
leading: const Icon(SpotubeIcons.info), leading: const Icon(SpotubeIcons.info),
title: const Text("About Spotube"), title: const Text("About Spotube"),