mirror of
https://github.com/gabehf/Fladder.git
synced 2026-03-07 13:38:13 -08:00
chore: Add sensible defaults to init lean-back mode
This commit is contained in:
parent
9954ed7db5
commit
829bc3e34c
10 changed files with 37 additions and 25 deletions
|
|
@ -62,6 +62,9 @@ void main(List<String> args) async {
|
|||
|
||||
await SvgUtils.preCacheSVGs();
|
||||
|
||||
// Check if running on android TV
|
||||
final leanBackEnabled = !kIsWeb && Platform.isAndroid ? await NativeVideoActivity().isLeanBackEnabled() : false;
|
||||
|
||||
if (defaultTargetPlatform == TargetPlatform.windows) {
|
||||
await SMTCWindows.initialize();
|
||||
}
|
||||
|
|
@ -93,9 +96,6 @@ void main(List<String> args) async {
|
|||
os: !kIsWeb ? defaultTargetPlatform.name.capitalize() : "${defaultTargetPlatform.name.capitalize()} Web",
|
||||
);
|
||||
|
||||
// Check if running on android TV
|
||||
final leanBackEnabled = !kIsWeb && Platform.isAndroid ? await NativeVideoActivity().isLeanBackEnabled() : false;
|
||||
|
||||
runApp(
|
||||
ProviderScope(
|
||||
overrides: [
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import 'package:flutter/services.dart';
|
|||
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
|
||||
import 'package:fladder/models/settings/arguments_model.dart';
|
||||
import 'package:fladder/models/settings/key_combinations.dart';
|
||||
import 'package:fladder/util/custom_color_themes.dart';
|
||||
import 'package:fladder/util/localization_helper.dart';
|
||||
|
|
@ -64,7 +65,7 @@ abstract class ClientSettingsModel with _$ClientSettingsModel {
|
|||
ColorThemes? themeColor,
|
||||
@Default(true) bool deriveColorsFromItem,
|
||||
@Default(false) bool amoledBlack,
|
||||
@Default(true) bool blurPlaceHolders,
|
||||
required bool blurPlaceHolders,
|
||||
@Default(false) bool blurUpcomingEpisodes,
|
||||
@LocaleConvert() Locale? selectedLocale,
|
||||
@Default(true) bool enableMediaKeys,
|
||||
|
|
@ -75,7 +76,7 @@ abstract class ClientSettingsModel with _$ClientSettingsModel {
|
|||
@Default(false) bool showAllCollectionTypes,
|
||||
@Default(2) int maxConcurrentDownloads,
|
||||
@Default(DynamicSchemeVariant.rainbow) DynamicSchemeVariant schemeVariant,
|
||||
@Default(BackgroundType.blurred) BackgroundType backgroundImage,
|
||||
required BackgroundType backgroundImage,
|
||||
@Default(true) bool checkForUpdates,
|
||||
@Default(false) bool usePosterForLibrary,
|
||||
@Default(false) bool useSystemIME,
|
||||
|
|
@ -84,6 +85,13 @@ abstract class ClientSettingsModel with _$ClientSettingsModel {
|
|||
@Default({}) Map<GlobalHotKeys, KeyCombination> shortcuts,
|
||||
}) = _ClientSettingsModel;
|
||||
|
||||
static ClientSettingsModel defaultModel() {
|
||||
return ClientSettingsModel(
|
||||
blurPlaceHolders: leanBackMode ? false : true,
|
||||
backgroundImage: leanBackMode ? BackgroundType.disabled : BackgroundType.blurred,
|
||||
);
|
||||
}
|
||||
|
||||
factory ClientSettingsModel.fromJson(Map<String, dynamic> json) => _$ClientSettingsModelFromJson(json);
|
||||
|
||||
Map<GlobalHotKeys, KeyCombination> get currentShortcuts =>
|
||||
|
|
|
|||
|
|
@ -621,7 +621,7 @@ class _ClientSettingsModel extends ClientSettingsModel
|
|||
this.themeColor,
|
||||
this.deriveColorsFromItem = true,
|
||||
this.amoledBlack = false,
|
||||
this.blurPlaceHolders = true,
|
||||
required this.blurPlaceHolders,
|
||||
this.blurUpcomingEpisodes = false,
|
||||
@LocaleConvert() this.selectedLocale,
|
||||
this.enableMediaKeys = true,
|
||||
|
|
@ -632,7 +632,7 @@ class _ClientSettingsModel extends ClientSettingsModel
|
|||
this.showAllCollectionTypes = false,
|
||||
this.maxConcurrentDownloads = 2,
|
||||
this.schemeVariant = DynamicSchemeVariant.rainbow,
|
||||
this.backgroundImage = BackgroundType.blurred,
|
||||
required this.backgroundImage,
|
||||
this.checkForUpdates = true,
|
||||
this.usePosterForLibrary = false,
|
||||
this.useSystemIME = false,
|
||||
|
|
@ -669,7 +669,6 @@ class _ClientSettingsModel extends ClientSettingsModel
|
|||
@JsonKey()
|
||||
final bool amoledBlack;
|
||||
@override
|
||||
@JsonKey()
|
||||
final bool blurPlaceHolders;
|
||||
@override
|
||||
@JsonKey()
|
||||
|
|
@ -702,7 +701,6 @@ class _ClientSettingsModel extends ClientSettingsModel
|
|||
@JsonKey()
|
||||
final DynamicSchemeVariant schemeVariant;
|
||||
@override
|
||||
@JsonKey()
|
||||
final BackgroundType backgroundImage;
|
||||
@override
|
||||
@JsonKey()
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ _ClientSettingsModel _$ClientSettingsModelFromJson(Map<String, dynamic> json) =>
|
|||
themeColor: $enumDecodeNullable(_$ColorThemesEnumMap, json['themeColor']),
|
||||
deriveColorsFromItem: json['deriveColorsFromItem'] as bool? ?? true,
|
||||
amoledBlack: json['amoledBlack'] as bool? ?? false,
|
||||
blurPlaceHolders: json['blurPlaceHolders'] as bool? ?? true,
|
||||
blurPlaceHolders: json['blurPlaceHolders'] as bool,
|
||||
blurUpcomingEpisodes: json['blurUpcomingEpisodes'] as bool? ?? false,
|
||||
selectedLocale:
|
||||
const LocaleConvert().fromJson(json['selectedLocale'] as String?),
|
||||
|
|
@ -41,9 +41,8 @@ _ClientSettingsModel _$ClientSettingsModelFromJson(Map<String, dynamic> json) =>
|
|||
schemeVariant: $enumDecodeNullable(
|
||||
_$DynamicSchemeVariantEnumMap, json['schemeVariant']) ??
|
||||
DynamicSchemeVariant.rainbow,
|
||||
backgroundImage: $enumDecodeNullable(
|
||||
_$BackgroundTypeEnumMap, json['backgroundImage']) ??
|
||||
BackgroundType.blurred,
|
||||
backgroundImage:
|
||||
$enumDecode(_$BackgroundTypeEnumMap, json['backgroundImage']),
|
||||
checkForUpdates: json['checkForUpdates'] as bool? ?? true,
|
||||
usePosterForLibrary: json['usePosterForLibrary'] as bool? ?? false,
|
||||
useSystemIME: json['useSystemIME'] as bool? ?? false,
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
|
|||
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
|
||||
import 'package:fladder/models/settings/arguments_model.dart';
|
||||
import 'package:fladder/util/adaptive_layout/adaptive_layout.dart';
|
||||
import 'package:fladder/util/localization_helper.dart';
|
||||
|
||||
|
|
@ -10,14 +11,22 @@ part 'home_settings_model.g.dart';
|
|||
|
||||
@Freezed(copyWith: true)
|
||||
abstract class HomeSettingsModel with _$HomeSettingsModel {
|
||||
const HomeSettingsModel._();
|
||||
|
||||
factory HomeSettingsModel({
|
||||
@Default({...LayoutMode.values}) Set<LayoutMode> screenLayouts,
|
||||
@Default({...ViewSize.values}) Set<ViewSize> layoutStates,
|
||||
@Default(HomeBanner.carousel) HomeBanner homeBanner,
|
||||
required HomeBanner homeBanner,
|
||||
@Default(HomeCarouselSettings.combined) HomeCarouselSettings carouselSettings,
|
||||
@Default(HomeNextUp.separate) HomeNextUp nextUp,
|
||||
}) = _HomeSettingsModel;
|
||||
|
||||
static HomeSettingsModel defaultModel() {
|
||||
return HomeSettingsModel(
|
||||
homeBanner: leanBackMode ? HomeBanner.detailedBanner : HomeBanner.carousel,
|
||||
);
|
||||
}
|
||||
|
||||
factory HomeSettingsModel.fromJson(Map<String, dynamic> json) => _$HomeSettingsModelFromJson(json);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -275,15 +275,16 @@ extension HomeSettingsModelPatterns on HomeSettingsModel {
|
|||
|
||||
/// @nodoc
|
||||
@JsonSerializable()
|
||||
class _HomeSettingsModel implements HomeSettingsModel {
|
||||
class _HomeSettingsModel extends HomeSettingsModel {
|
||||
_HomeSettingsModel(
|
||||
{final Set<LayoutMode> screenLayouts = const {...LayoutMode.values},
|
||||
final Set<ViewSize> layoutStates = const {...ViewSize.values},
|
||||
this.homeBanner = HomeBanner.carousel,
|
||||
required this.homeBanner,
|
||||
this.carouselSettings = HomeCarouselSettings.combined,
|
||||
this.nextUp = HomeNextUp.separate})
|
||||
: _screenLayouts = screenLayouts,
|
||||
_layoutStates = layoutStates;
|
||||
_layoutStates = layoutStates,
|
||||
super._();
|
||||
factory _HomeSettingsModel.fromJson(Map<String, dynamic> json) =>
|
||||
_$HomeSettingsModelFromJson(json);
|
||||
|
||||
|
|
@ -306,7 +307,6 @@ class _HomeSettingsModel implements HomeSettingsModel {
|
|||
}
|
||||
|
||||
@override
|
||||
@JsonKey()
|
||||
final HomeBanner homeBanner;
|
||||
@override
|
||||
@JsonKey()
|
||||
|
|
|
|||
|
|
@ -16,9 +16,7 @@ _HomeSettingsModel _$HomeSettingsModelFromJson(Map<String, dynamic> json) =>
|
|||
?.map((e) => $enumDecode(_$ViewSizeEnumMap, e))
|
||||
.toSet() ??
|
||||
const {...ViewSize.values},
|
||||
homeBanner:
|
||||
$enumDecodeNullable(_$HomeBannerEnumMap, json['homeBanner']) ??
|
||||
HomeBanner.carousel,
|
||||
homeBanner: $enumDecode(_$HomeBannerEnumMap, json['homeBanner']),
|
||||
carouselSettings: $enumDecodeNullable(
|
||||
_$HomeCarouselSettingsEnumMap, json['carouselSettings']) ??
|
||||
HomeCarouselSettings.combined,
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ final clientSettingsProvider = StateNotifierProvider<ClientSettingsNotifier, Cli
|
|||
});
|
||||
|
||||
class ClientSettingsNotifier extends StateNotifier<ClientSettingsModel> {
|
||||
ClientSettingsNotifier(this.ref) : super(ClientSettingsModel());
|
||||
ClientSettingsNotifier(this.ref) : super(ClientSettingsModel.defaultModel());
|
||||
|
||||
final Ref ref;
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ final homeSettingsProvider = StateNotifierProvider<HomeSettingsNotifier, HomeSet
|
|||
});
|
||||
|
||||
class HomeSettingsNotifier extends StateNotifier<HomeSettingsModel> {
|
||||
HomeSettingsNotifier(this.ref) : super(HomeSettingsModel());
|
||||
HomeSettingsNotifier(this.ref) : super(HomeSettingsModel.defaultModel());
|
||||
|
||||
final Ref ref;
|
||||
|
||||
|
|
|
|||
|
|
@ -136,7 +136,7 @@ class SharedUtility {
|
|||
return ClientSettingsModel.fromJson(jsonDecode(sharedPreferences.getString(_clientSettingsKey) ?? ""));
|
||||
} catch (e) {
|
||||
log(e.toString());
|
||||
return ClientSettingsModel();
|
||||
return ClientSettingsModel.defaultModel();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -148,7 +148,7 @@ class SharedUtility {
|
|||
return HomeSettingsModel.fromJson(jsonDecode(sharedPreferences.getString(_homeSettingsKey) ?? ""));
|
||||
} catch (e) {
|
||||
log(e.toString());
|
||||
return HomeSettingsModel();
|
||||
return HomeSettingsModel.defaultModel();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue