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