Squash-merge commit. Covers four areas: native video player, chat reliability, multi-tab, and hardening. ## Native video player - Direct HLS playback via `better_native_video_player` (forked from `plug-and-pay/flutter-native-video-player`, patched on `frosty-patches` branch) - Twitch GQL playback token fetching with platform cookie extraction (iOS Swift + Android Kotlin plugins) for authenticated streams - Quality selection (source, 720p, 480p, 360p, 160p, audio-only) persisted per channel - Picture-in-picture: iOS automatic inline PiP, Android auto-PiP on API 31+ guarded against older devices - Latency polling, chat latency sync, stall detection/recovery, startup auto-pause recovery, watchdog timers - **Twitch stitched-ad break detection** (HLS `EXT-X-DATERANGE`) on both platforms, emitting `adBreakChanged` so the host suspends latency/stall recovery and chat sync during ads (program-date-time is unreliable then). Matches `CLASS="twitch-stitched-ad"` / `ID="stitched-ad-"` **and** the `X-TV-TWITCH-AD-*` attribute prefix (the durable signal streamlink/yt-dlp use) - Shared `VideoPlayerInterface` so WebView and native paths are interchangeable via settings toggle - `PlaybackAccessToken` model, `TwitchGqlApi` client ## Chat delay & send reliability - **Optimistic send-finalize**: Twitch acks a sent message with a per-PRIVMSG USERSTATE (not an echo), which it can intermittently drop — more so under a long chat delay. A missing ack no longer shows a false "message may not have been sent" error; the send is finalized optimistically (local echo rendered), and only genuine rejection NOTICEs surface an error. Ack timeout scaled by the chat delay. - **Per-line chat-delay bypass**: control/state lines (USERSTATE/ROOMSTATE/GLOBALUSERSTATE), rejection NOTICEs, the reconnect notice, and untagged server lines bypass the delay so send-acks and PONGs aren't stalled; only displayable chat content is delayed, staying in sync with delayed video. - **Measured chat bottom-bar height**: the message list reflows to the composer's real measured height, fixing the input overlapping messages when a long message expands it (replaces a fixed-constant estimate). - IRC tag parsing handles valueless and escaped tags per the IRCv3 message-tags spec (fixes a recent-messages RangeError on certain tags). ## Chat / multi-tab - Redesigned tab chips: unread dot indicator, chips dim until WebSocket connects - Animated tab options popover replacing `MenuAnchor` (no animation hook in Flutter 3.44) - Simplified `ChatTabs` from `StatefulWidget` to `StatelessWidget` - Focus-current-channel fade bump to 0.55; section-header alpha lifted to match the muted-label tier - `addTab` now calls `setActiveTab` to snapshot outgoing tab's `lastSeenMessageId` — fixes spurious unread dots after adding a tab - `onActivateSourceTab` threaded into `ChatUserModal` so Reply in merged mode switches to the correct source tab's composer ## Bug fixes and hardening - **Reverted the experimental iOS low-latency mode** (5s live-edge join + 1.05x catch-up): AVPlayer can't sustain <~18s on Twitch (declared `TARGETDURATION:6` paces playlist refreshes), and the offset starved the buffer into pause-on-launch. Default join distance restored. - Fork (Android): **cap `BEHIND_LIVE_WINDOW` recovery** so a stream repeatedly falling off the live window can't silently re-prepare forever; emits `error` on exhaustion so the host recovery ladder takes over - Guard all Android `setAutoPipMode` calls with `_autoPipAvailable` — prevents `PlatformException` on Android 8–11; check `_disposed` after `isAutoPipAvailable` await to prevent post-dispose auto-PiP re-enable - Remove `_isInPipMode` guard from `_onPaused` so `_paused` tracks actual state, fixing PiP play/pause toggle getting stuck - Tighten iOS cookie domain check to exact `twitch.tv` / `.twitch.tv` suffix - Invalidate the stored web session token when Twitch rejects it with a 401 (profile card flips back to unlinked; future loads skip the doomed authenticated request), and re-extract the cookie on launch when logged in without a linked session - Send `play_session_id` and `player_backend=mediaplayer` to Usher, matching the web client / streamlink - Fork (iOS): restore program-date-time latency measurement (a prior rev measured distance to the manifest edge, reading ~0s and silently disabling high-latency recovery / chat-delay auto-sync); release platform views on dispose (per-stream view + AVPlayerViewController leak), track the observed AVPlayerItem for KVO removal (sibling-view crash), main-thread seek results, resolve superseded load futures - Fork (Android): clean up method handlers orphaned by PiP-time view disposal (leaked audio-focus listeners), drop the live-offset re-anchoring seekTo on metadata updates (latency creep), restore pre-duck volume, respect user pause in the stall watchdog, resolve superseded load futures - Deep review pass: expire the quality-switch flag so stall recovery isn't disabled for the session, cap latency-driven recovery (clock-skew loop), generation-guard the error overlay, two-strike offline confirmation, controller null-safety on quality switch - Tighten `/me` local-echo match (no longer renders `/meow ...` as an action); clear pending send text on disconnect ## Web / docs - Remove stale Cloudflare Images binding from `wrangler.jsonc` (covered by `images.unoptimized: true`) - Correct `web/AGENTS.md` Cache Components claim (feature not enabled) - Repo and agent config cleanup ## Test plan - [x] `flutter analyze` — clean (frosty + plugin lib) - [x] `flutter test` — 319/319 pass (adds `ChatLatencySync`, `StreamInfoPoller`, video timing invariants, `PlaybackAccessToken`, IRC tag parsing) - [x] Android plugin Kotlin compiles against the bumped fork rev - [ ] Native player plays live streams on iOS and Android - [ ] Quality switching works and persists across channel reopens - [ ] PiP enters/exits correctly; pause/resume toggle in PiP window works - [ ] Audio-only mode does not crash on Android < API 31 - [ ] Sending under a long synced chat delay no longer shows a false "may not have been sent" error - [ ] Long composer text reflows the message list (no input/message overlap) - [ ] Multi-tab: adding a tab does not mark previous tab as unread - [ ] Merged chat: Reply from user modal targets the correct tab's composer 🤖 Generated with [Claude Code](https://claude.com/claude-code)
1279 lines
33 KiB
Dart
1279 lines
33 KiB
Dart
// GENERATED CODE - DO NOT MODIFY BY HAND
|
|
|
|
part of 'settings_store.dart';
|
|
|
|
// **************************************************************************
|
|
// JsonSerializableGenerator
|
|
// **************************************************************************
|
|
|
|
SettingsStore _$SettingsStoreFromJson(
|
|
Map<String, dynamic> json,
|
|
) => SettingsStore()
|
|
..themeType =
|
|
$enumDecodeNullable(
|
|
_$ThemeTypeEnumMap,
|
|
json['themeType'],
|
|
unknownValue: ThemeType.system,
|
|
) ??
|
|
ThemeType.system
|
|
..accentColor = (json['accentColor'] as num?)?.toInt() ?? 4287710975
|
|
..showThumbnails = json['showThumbnails'] as bool? ?? true
|
|
..largeStreamCard = json['largeStreamCard'] as bool? ?? false
|
|
..launchUrlExternal = json['launchUrlExternal'] as bool? ?? false
|
|
..showVideo = json['showVideo'] as bool? ?? true
|
|
..defaultToHighestQuality = json['defaultToHighestQuality'] as bool? ?? false
|
|
..useTextureRendering = json['useTextureRendering'] as bool? ?? true
|
|
..useNativePlayer = json['useNativePlayer'] as bool? ?? false
|
|
..showOverlay = json['showOverlay'] as bool? ?? true
|
|
..toggleableOverlay = json['toggleableOverlay'] as bool? ?? false
|
|
..showLatency = json['showLatency'] as bool? ?? false
|
|
..badgeScale = (json['badgeScale'] as num?)?.toDouble() ?? 1.0
|
|
..emoteScale = (json['emoteScale'] as num?)?.toDouble() ?? 1.0
|
|
..messageScale = (json['messageScale'] as num?)?.toDouble() ?? 1.0
|
|
..messageSpacing = (json['messageSpacing'] as num?)?.toDouble() ?? 8.0
|
|
..fontSize = (json['fontSize'] as num?)?.toDouble() ?? 12.0
|
|
..showDeletedMessages = json['showDeletedMessages'] as bool? ?? false
|
|
..showChatMessageDividers = json['showChatMessageDividers'] as bool? ?? false
|
|
..timestampType =
|
|
$enumDecodeNullable(
|
|
_$TimestampTypeEnumMap,
|
|
json['timestampType'],
|
|
unknownValue: TimestampType.disabled,
|
|
) ??
|
|
TimestampType.disabled
|
|
..showHistoricalTimestamps =
|
|
json['showHistoricalTimestamps'] as bool? ?? false
|
|
..focusCurrentChannel = json['focusCurrentChannel'] as bool? ?? false
|
|
..highlightFirstTimeChatter =
|
|
json['highlightFirstTimeChatter'] as bool? ?? true
|
|
..showUserNotices = json['showUserNotices'] as bool? ?? true
|
|
..showTwitchEmotes = json['showTwitchEmotes'] as bool? ?? true
|
|
..showTwitchBadges = json['showTwitchBadges'] as bool? ?? true
|
|
..show7TVEmotes = json['show7TVEmotes'] as bool? ?? true
|
|
..showBTTVEmotes = json['showBTTVEmotes'] as bool? ?? true
|
|
..showBTTVBadges = json['showBTTVBadges'] as bool? ?? true
|
|
..showFFZEmotes = json['showFFZEmotes'] as bool? ?? true
|
|
..showFFZBadges = json['showFFZBadges'] as bool? ?? true
|
|
..emoteMenuButtonOnLeft = json['emoteMenuButtonOnLeft'] as bool? ?? false
|
|
..persistChatTabs = json['persistChatTabs'] as bool? ?? true
|
|
..secondaryTabs =
|
|
(json['secondaryTabs'] as List<dynamic>?)
|
|
?.map((e) => PersistedChatTab.fromJson(e as Map<String, dynamic>))
|
|
.toList() ??
|
|
[]
|
|
..landscapeChatLeftSide = json['landscapeChatLeftSide'] as bool? ?? false
|
|
..landscapeForceVerticalChat =
|
|
json['landscapeForceVerticalChat'] as bool? ?? false
|
|
..landscapeCutout =
|
|
$enumDecodeNullable(
|
|
_$LandscapeCutoutTypeEnumMap,
|
|
json['landscapeCutout'],
|
|
) ??
|
|
LandscapeCutoutType.none
|
|
..chatWidth = (json['chatWidth'] as num?)?.toDouble() ?? 0.2
|
|
..fullScreenChatOverlayOpacity =
|
|
(json['fullScreenChatOverlayOpacity'] as num?)?.toDouble() ?? 0.5
|
|
..keepScreenAwake = json['keepScreenAwake'] as bool? ?? true
|
|
..autocomplete = json['autocomplete'] as bool? ?? true
|
|
..showRecentMessages = json['showRecentMessages'] as bool? ?? false
|
|
..autoSyncChatDelay = json['autoSyncChatDelay'] as bool? ?? false
|
|
..chatDelay = (json['chatDelay'] as num?)?.toDouble() ?? 0.0
|
|
..mutedWords =
|
|
(json['mutedWords'] as List<dynamic>?)
|
|
?.map((e) => e as String)
|
|
.toList() ??
|
|
[]
|
|
..matchWholeWord = json['matchWholeWord'] as bool? ?? true
|
|
..shareCrashLogsAndAnalytics =
|
|
json['shareCrashLogsAndAnalytics'] as bool? ?? true
|
|
..fullScreen = json['fullScreen'] as bool? ?? false
|
|
..fullScreenChatOverlay = json['fullScreenChatOverlay'] as bool? ?? false
|
|
..pinnedChannelIds =
|
|
(json['pinnedChannelIds'] as List<dynamic>?)
|
|
?.map((e) => e as String)
|
|
.toList() ??
|
|
[];
|
|
|
|
Map<String, dynamic> _$SettingsStoreToJson(
|
|
SettingsStore instance,
|
|
) => <String, dynamic>{
|
|
'themeType': _$ThemeTypeEnumMap[instance.themeType]!,
|
|
'accentColor': instance.accentColor,
|
|
'showThumbnails': instance.showThumbnails,
|
|
'largeStreamCard': instance.largeStreamCard,
|
|
'launchUrlExternal': instance.launchUrlExternal,
|
|
'showVideo': instance.showVideo,
|
|
'defaultToHighestQuality': instance.defaultToHighestQuality,
|
|
'useTextureRendering': instance.useTextureRendering,
|
|
'useNativePlayer': instance.useNativePlayer,
|
|
'showOverlay': instance.showOverlay,
|
|
'toggleableOverlay': instance.toggleableOverlay,
|
|
'showLatency': instance.showLatency,
|
|
'badgeScale': instance.badgeScale,
|
|
'emoteScale': instance.emoteScale,
|
|
'messageScale': instance.messageScale,
|
|
'messageSpacing': instance.messageSpacing,
|
|
'fontSize': instance.fontSize,
|
|
'showDeletedMessages': instance.showDeletedMessages,
|
|
'showChatMessageDividers': instance.showChatMessageDividers,
|
|
'timestampType': _$TimestampTypeEnumMap[instance.timestampType]!,
|
|
'showHistoricalTimestamps': instance.showHistoricalTimestamps,
|
|
'focusCurrentChannel': instance.focusCurrentChannel,
|
|
'highlightFirstTimeChatter': instance.highlightFirstTimeChatter,
|
|
'showUserNotices': instance.showUserNotices,
|
|
'showTwitchEmotes': instance.showTwitchEmotes,
|
|
'showTwitchBadges': instance.showTwitchBadges,
|
|
'show7TVEmotes': instance.show7TVEmotes,
|
|
'showBTTVEmotes': instance.showBTTVEmotes,
|
|
'showBTTVBadges': instance.showBTTVBadges,
|
|
'showFFZEmotes': instance.showFFZEmotes,
|
|
'showFFZBadges': instance.showFFZBadges,
|
|
'emoteMenuButtonOnLeft': instance.emoteMenuButtonOnLeft,
|
|
'persistChatTabs': instance.persistChatTabs,
|
|
'secondaryTabs': instance.secondaryTabs,
|
|
'landscapeChatLeftSide': instance.landscapeChatLeftSide,
|
|
'landscapeForceVerticalChat': instance.landscapeForceVerticalChat,
|
|
'landscapeCutout': _$LandscapeCutoutTypeEnumMap[instance.landscapeCutout]!,
|
|
'chatWidth': instance.chatWidth,
|
|
'fullScreenChatOverlayOpacity': instance.fullScreenChatOverlayOpacity,
|
|
'keepScreenAwake': instance.keepScreenAwake,
|
|
'autocomplete': instance.autocomplete,
|
|
'showRecentMessages': instance.showRecentMessages,
|
|
'autoSyncChatDelay': instance.autoSyncChatDelay,
|
|
'chatDelay': instance.chatDelay,
|
|
'mutedWords': instance.mutedWords,
|
|
'matchWholeWord': instance.matchWholeWord,
|
|
'shareCrashLogsAndAnalytics': instance.shareCrashLogsAndAnalytics,
|
|
'fullScreen': instance.fullScreen,
|
|
'fullScreenChatOverlay': instance.fullScreenChatOverlay,
|
|
'pinnedChannelIds': instance.pinnedChannelIds,
|
|
};
|
|
|
|
const _$ThemeTypeEnumMap = {
|
|
ThemeType.system: 'system',
|
|
ThemeType.light: 'light',
|
|
ThemeType.dark: 'dark',
|
|
};
|
|
|
|
const _$TimestampTypeEnumMap = {
|
|
TimestampType.disabled: 'disabled',
|
|
TimestampType.twelve: 'twelve',
|
|
TimestampType.twentyFour: 'twentyFour',
|
|
};
|
|
|
|
const _$LandscapeCutoutTypeEnumMap = {
|
|
LandscapeCutoutType.none: 'none',
|
|
LandscapeCutoutType.left: 'left',
|
|
LandscapeCutoutType.right: 'right',
|
|
LandscapeCutoutType.both: 'both',
|
|
};
|
|
|
|
// **************************************************************************
|
|
// StoreGenerator
|
|
// **************************************************************************
|
|
|
|
// ignore_for_file: non_constant_identifier_names, unnecessary_brace_in_string_interps, unnecessary_lambdas, prefer_expression_function_bodies, lines_longer_than_80_chars, avoid_as, avoid_annotating_with_dynamic, no_leading_underscores_for_local_identifiers
|
|
|
|
mixin _$SettingsStore on _SettingsStoreBase, Store {
|
|
Computed<double>? _$effectiveChatDelayComputed;
|
|
|
|
@override
|
|
double get effectiveChatDelay =>
|
|
(_$effectiveChatDelayComputed ??= Computed<double>(
|
|
() => super.effectiveChatDelay,
|
|
name: '_SettingsStoreBase.effectiveChatDelay',
|
|
)).value;
|
|
|
|
late final _$themeTypeAtom = Atom(
|
|
name: '_SettingsStoreBase.themeType',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
ThemeType get themeType {
|
|
_$themeTypeAtom.reportRead();
|
|
return super.themeType;
|
|
}
|
|
|
|
@override
|
|
set themeType(ThemeType value) {
|
|
_$themeTypeAtom.reportWrite(value, super.themeType, () {
|
|
super.themeType = value;
|
|
});
|
|
}
|
|
|
|
late final _$accentColorAtom = Atom(
|
|
name: '_SettingsStoreBase.accentColor',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
int get accentColor {
|
|
_$accentColorAtom.reportRead();
|
|
return super.accentColor;
|
|
}
|
|
|
|
@override
|
|
set accentColor(int value) {
|
|
_$accentColorAtom.reportWrite(value, super.accentColor, () {
|
|
super.accentColor = value;
|
|
});
|
|
}
|
|
|
|
late final _$showThumbnailsAtom = Atom(
|
|
name: '_SettingsStoreBase.showThumbnails',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
bool get showThumbnails {
|
|
_$showThumbnailsAtom.reportRead();
|
|
return super.showThumbnails;
|
|
}
|
|
|
|
@override
|
|
set showThumbnails(bool value) {
|
|
_$showThumbnailsAtom.reportWrite(value, super.showThumbnails, () {
|
|
super.showThumbnails = value;
|
|
});
|
|
}
|
|
|
|
late final _$largeStreamCardAtom = Atom(
|
|
name: '_SettingsStoreBase.largeStreamCard',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
bool get largeStreamCard {
|
|
_$largeStreamCardAtom.reportRead();
|
|
return super.largeStreamCard;
|
|
}
|
|
|
|
@override
|
|
set largeStreamCard(bool value) {
|
|
_$largeStreamCardAtom.reportWrite(value, super.largeStreamCard, () {
|
|
super.largeStreamCard = value;
|
|
});
|
|
}
|
|
|
|
late final _$launchUrlExternalAtom = Atom(
|
|
name: '_SettingsStoreBase.launchUrlExternal',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
bool get launchUrlExternal {
|
|
_$launchUrlExternalAtom.reportRead();
|
|
return super.launchUrlExternal;
|
|
}
|
|
|
|
@override
|
|
set launchUrlExternal(bool value) {
|
|
_$launchUrlExternalAtom.reportWrite(value, super.launchUrlExternal, () {
|
|
super.launchUrlExternal = value;
|
|
});
|
|
}
|
|
|
|
late final _$showVideoAtom = Atom(
|
|
name: '_SettingsStoreBase.showVideo',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
bool get showVideo {
|
|
_$showVideoAtom.reportRead();
|
|
return super.showVideo;
|
|
}
|
|
|
|
@override
|
|
set showVideo(bool value) {
|
|
_$showVideoAtom.reportWrite(value, super.showVideo, () {
|
|
super.showVideo = value;
|
|
});
|
|
}
|
|
|
|
late final _$defaultToHighestQualityAtom = Atom(
|
|
name: '_SettingsStoreBase.defaultToHighestQuality',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
bool get defaultToHighestQuality {
|
|
_$defaultToHighestQualityAtom.reportRead();
|
|
return super.defaultToHighestQuality;
|
|
}
|
|
|
|
@override
|
|
set defaultToHighestQuality(bool value) {
|
|
_$defaultToHighestQualityAtom.reportWrite(
|
|
value,
|
|
super.defaultToHighestQuality,
|
|
() {
|
|
super.defaultToHighestQuality = value;
|
|
},
|
|
);
|
|
}
|
|
|
|
late final _$useTextureRenderingAtom = Atom(
|
|
name: '_SettingsStoreBase.useTextureRendering',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
bool get useTextureRendering {
|
|
_$useTextureRenderingAtom.reportRead();
|
|
return super.useTextureRendering;
|
|
}
|
|
|
|
@override
|
|
set useTextureRendering(bool value) {
|
|
_$useTextureRenderingAtom.reportWrite(value, super.useTextureRendering, () {
|
|
super.useTextureRendering = value;
|
|
});
|
|
}
|
|
|
|
late final _$useNativePlayerAtom = Atom(
|
|
name: '_SettingsStoreBase.useNativePlayer',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
bool get useNativePlayer {
|
|
_$useNativePlayerAtom.reportRead();
|
|
return super.useNativePlayer;
|
|
}
|
|
|
|
@override
|
|
set useNativePlayer(bool value) {
|
|
_$useNativePlayerAtom.reportWrite(value, super.useNativePlayer, () {
|
|
super.useNativePlayer = value;
|
|
});
|
|
}
|
|
|
|
late final _$showOverlayAtom = Atom(
|
|
name: '_SettingsStoreBase.showOverlay',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
bool get showOverlay {
|
|
_$showOverlayAtom.reportRead();
|
|
return super.showOverlay;
|
|
}
|
|
|
|
@override
|
|
set showOverlay(bool value) {
|
|
_$showOverlayAtom.reportWrite(value, super.showOverlay, () {
|
|
super.showOverlay = value;
|
|
});
|
|
}
|
|
|
|
late final _$toggleableOverlayAtom = Atom(
|
|
name: '_SettingsStoreBase.toggleableOverlay',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
bool get toggleableOverlay {
|
|
_$toggleableOverlayAtom.reportRead();
|
|
return super.toggleableOverlay;
|
|
}
|
|
|
|
@override
|
|
set toggleableOverlay(bool value) {
|
|
_$toggleableOverlayAtom.reportWrite(value, super.toggleableOverlay, () {
|
|
super.toggleableOverlay = value;
|
|
});
|
|
}
|
|
|
|
late final _$showLatencyAtom = Atom(
|
|
name: '_SettingsStoreBase.showLatency',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
bool get showLatency {
|
|
_$showLatencyAtom.reportRead();
|
|
return super.showLatency;
|
|
}
|
|
|
|
@override
|
|
set showLatency(bool value) {
|
|
_$showLatencyAtom.reportWrite(value, super.showLatency, () {
|
|
super.showLatency = value;
|
|
});
|
|
}
|
|
|
|
late final _$badgeScaleAtom = Atom(
|
|
name: '_SettingsStoreBase.badgeScale',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
double get badgeScale {
|
|
_$badgeScaleAtom.reportRead();
|
|
return super.badgeScale;
|
|
}
|
|
|
|
@override
|
|
set badgeScale(double value) {
|
|
_$badgeScaleAtom.reportWrite(value, super.badgeScale, () {
|
|
super.badgeScale = value;
|
|
});
|
|
}
|
|
|
|
late final _$emoteScaleAtom = Atom(
|
|
name: '_SettingsStoreBase.emoteScale',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
double get emoteScale {
|
|
_$emoteScaleAtom.reportRead();
|
|
return super.emoteScale;
|
|
}
|
|
|
|
@override
|
|
set emoteScale(double value) {
|
|
_$emoteScaleAtom.reportWrite(value, super.emoteScale, () {
|
|
super.emoteScale = value;
|
|
});
|
|
}
|
|
|
|
late final _$messageScaleAtom = Atom(
|
|
name: '_SettingsStoreBase.messageScale',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
double get messageScale {
|
|
_$messageScaleAtom.reportRead();
|
|
return super.messageScale;
|
|
}
|
|
|
|
@override
|
|
set messageScale(double value) {
|
|
_$messageScaleAtom.reportWrite(value, super.messageScale, () {
|
|
super.messageScale = value;
|
|
});
|
|
}
|
|
|
|
late final _$messageSpacingAtom = Atom(
|
|
name: '_SettingsStoreBase.messageSpacing',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
double get messageSpacing {
|
|
_$messageSpacingAtom.reportRead();
|
|
return super.messageSpacing;
|
|
}
|
|
|
|
@override
|
|
set messageSpacing(double value) {
|
|
_$messageSpacingAtom.reportWrite(value, super.messageSpacing, () {
|
|
super.messageSpacing = value;
|
|
});
|
|
}
|
|
|
|
late final _$fontSizeAtom = Atom(
|
|
name: '_SettingsStoreBase.fontSize',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
double get fontSize {
|
|
_$fontSizeAtom.reportRead();
|
|
return super.fontSize;
|
|
}
|
|
|
|
@override
|
|
set fontSize(double value) {
|
|
_$fontSizeAtom.reportWrite(value, super.fontSize, () {
|
|
super.fontSize = value;
|
|
});
|
|
}
|
|
|
|
late final _$showDeletedMessagesAtom = Atom(
|
|
name: '_SettingsStoreBase.showDeletedMessages',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
bool get showDeletedMessages {
|
|
_$showDeletedMessagesAtom.reportRead();
|
|
return super.showDeletedMessages;
|
|
}
|
|
|
|
@override
|
|
set showDeletedMessages(bool value) {
|
|
_$showDeletedMessagesAtom.reportWrite(value, super.showDeletedMessages, () {
|
|
super.showDeletedMessages = value;
|
|
});
|
|
}
|
|
|
|
late final _$showChatMessageDividersAtom = Atom(
|
|
name: '_SettingsStoreBase.showChatMessageDividers',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
bool get showChatMessageDividers {
|
|
_$showChatMessageDividersAtom.reportRead();
|
|
return super.showChatMessageDividers;
|
|
}
|
|
|
|
@override
|
|
set showChatMessageDividers(bool value) {
|
|
_$showChatMessageDividersAtom.reportWrite(
|
|
value,
|
|
super.showChatMessageDividers,
|
|
() {
|
|
super.showChatMessageDividers = value;
|
|
},
|
|
);
|
|
}
|
|
|
|
late final _$timestampTypeAtom = Atom(
|
|
name: '_SettingsStoreBase.timestampType',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
TimestampType get timestampType {
|
|
_$timestampTypeAtom.reportRead();
|
|
return super.timestampType;
|
|
}
|
|
|
|
@override
|
|
set timestampType(TimestampType value) {
|
|
_$timestampTypeAtom.reportWrite(value, super.timestampType, () {
|
|
super.timestampType = value;
|
|
});
|
|
}
|
|
|
|
late final _$showHistoricalTimestampsAtom = Atom(
|
|
name: '_SettingsStoreBase.showHistoricalTimestamps',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
bool get showHistoricalTimestamps {
|
|
_$showHistoricalTimestampsAtom.reportRead();
|
|
return super.showHistoricalTimestamps;
|
|
}
|
|
|
|
@override
|
|
set showHistoricalTimestamps(bool value) {
|
|
_$showHistoricalTimestampsAtom.reportWrite(
|
|
value,
|
|
super.showHistoricalTimestamps,
|
|
() {
|
|
super.showHistoricalTimestamps = value;
|
|
},
|
|
);
|
|
}
|
|
|
|
late final _$focusCurrentChannelAtom = Atom(
|
|
name: '_SettingsStoreBase.focusCurrentChannel',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
bool get focusCurrentChannel {
|
|
_$focusCurrentChannelAtom.reportRead();
|
|
return super.focusCurrentChannel;
|
|
}
|
|
|
|
@override
|
|
set focusCurrentChannel(bool value) {
|
|
_$focusCurrentChannelAtom.reportWrite(value, super.focusCurrentChannel, () {
|
|
super.focusCurrentChannel = value;
|
|
});
|
|
}
|
|
|
|
late final _$highlightFirstTimeChatterAtom = Atom(
|
|
name: '_SettingsStoreBase.highlightFirstTimeChatter',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
bool get highlightFirstTimeChatter {
|
|
_$highlightFirstTimeChatterAtom.reportRead();
|
|
return super.highlightFirstTimeChatter;
|
|
}
|
|
|
|
@override
|
|
set highlightFirstTimeChatter(bool value) {
|
|
_$highlightFirstTimeChatterAtom.reportWrite(
|
|
value,
|
|
super.highlightFirstTimeChatter,
|
|
() {
|
|
super.highlightFirstTimeChatter = value;
|
|
},
|
|
);
|
|
}
|
|
|
|
late final _$showUserNoticesAtom = Atom(
|
|
name: '_SettingsStoreBase.showUserNotices',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
bool get showUserNotices {
|
|
_$showUserNoticesAtom.reportRead();
|
|
return super.showUserNotices;
|
|
}
|
|
|
|
@override
|
|
set showUserNotices(bool value) {
|
|
_$showUserNoticesAtom.reportWrite(value, super.showUserNotices, () {
|
|
super.showUserNotices = value;
|
|
});
|
|
}
|
|
|
|
late final _$showTwitchEmotesAtom = Atom(
|
|
name: '_SettingsStoreBase.showTwitchEmotes',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
bool get showTwitchEmotes {
|
|
_$showTwitchEmotesAtom.reportRead();
|
|
return super.showTwitchEmotes;
|
|
}
|
|
|
|
@override
|
|
set showTwitchEmotes(bool value) {
|
|
_$showTwitchEmotesAtom.reportWrite(value, super.showTwitchEmotes, () {
|
|
super.showTwitchEmotes = value;
|
|
});
|
|
}
|
|
|
|
late final _$showTwitchBadgesAtom = Atom(
|
|
name: '_SettingsStoreBase.showTwitchBadges',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
bool get showTwitchBadges {
|
|
_$showTwitchBadgesAtom.reportRead();
|
|
return super.showTwitchBadges;
|
|
}
|
|
|
|
@override
|
|
set showTwitchBadges(bool value) {
|
|
_$showTwitchBadgesAtom.reportWrite(value, super.showTwitchBadges, () {
|
|
super.showTwitchBadges = value;
|
|
});
|
|
}
|
|
|
|
late final _$show7TVEmotesAtom = Atom(
|
|
name: '_SettingsStoreBase.show7TVEmotes',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
bool get show7TVEmotes {
|
|
_$show7TVEmotesAtom.reportRead();
|
|
return super.show7TVEmotes;
|
|
}
|
|
|
|
@override
|
|
set show7TVEmotes(bool value) {
|
|
_$show7TVEmotesAtom.reportWrite(value, super.show7TVEmotes, () {
|
|
super.show7TVEmotes = value;
|
|
});
|
|
}
|
|
|
|
late final _$showBTTVEmotesAtom = Atom(
|
|
name: '_SettingsStoreBase.showBTTVEmotes',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
bool get showBTTVEmotes {
|
|
_$showBTTVEmotesAtom.reportRead();
|
|
return super.showBTTVEmotes;
|
|
}
|
|
|
|
@override
|
|
set showBTTVEmotes(bool value) {
|
|
_$showBTTVEmotesAtom.reportWrite(value, super.showBTTVEmotes, () {
|
|
super.showBTTVEmotes = value;
|
|
});
|
|
}
|
|
|
|
late final _$showBTTVBadgesAtom = Atom(
|
|
name: '_SettingsStoreBase.showBTTVBadges',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
bool get showBTTVBadges {
|
|
_$showBTTVBadgesAtom.reportRead();
|
|
return super.showBTTVBadges;
|
|
}
|
|
|
|
@override
|
|
set showBTTVBadges(bool value) {
|
|
_$showBTTVBadgesAtom.reportWrite(value, super.showBTTVBadges, () {
|
|
super.showBTTVBadges = value;
|
|
});
|
|
}
|
|
|
|
late final _$showFFZEmotesAtom = Atom(
|
|
name: '_SettingsStoreBase.showFFZEmotes',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
bool get showFFZEmotes {
|
|
_$showFFZEmotesAtom.reportRead();
|
|
return super.showFFZEmotes;
|
|
}
|
|
|
|
@override
|
|
set showFFZEmotes(bool value) {
|
|
_$showFFZEmotesAtom.reportWrite(value, super.showFFZEmotes, () {
|
|
super.showFFZEmotes = value;
|
|
});
|
|
}
|
|
|
|
late final _$showFFZBadgesAtom = Atom(
|
|
name: '_SettingsStoreBase.showFFZBadges',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
bool get showFFZBadges {
|
|
_$showFFZBadgesAtom.reportRead();
|
|
return super.showFFZBadges;
|
|
}
|
|
|
|
@override
|
|
set showFFZBadges(bool value) {
|
|
_$showFFZBadgesAtom.reportWrite(value, super.showFFZBadges, () {
|
|
super.showFFZBadges = value;
|
|
});
|
|
}
|
|
|
|
late final _$emoteMenuButtonOnLeftAtom = Atom(
|
|
name: '_SettingsStoreBase.emoteMenuButtonOnLeft',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
bool get emoteMenuButtonOnLeft {
|
|
_$emoteMenuButtonOnLeftAtom.reportRead();
|
|
return super.emoteMenuButtonOnLeft;
|
|
}
|
|
|
|
@override
|
|
set emoteMenuButtonOnLeft(bool value) {
|
|
_$emoteMenuButtonOnLeftAtom.reportWrite(
|
|
value,
|
|
super.emoteMenuButtonOnLeft,
|
|
() {
|
|
super.emoteMenuButtonOnLeft = value;
|
|
},
|
|
);
|
|
}
|
|
|
|
late final _$persistChatTabsAtom = Atom(
|
|
name: '_SettingsStoreBase.persistChatTabs',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
bool get persistChatTabs {
|
|
_$persistChatTabsAtom.reportRead();
|
|
return super.persistChatTabs;
|
|
}
|
|
|
|
@override
|
|
set persistChatTabs(bool value) {
|
|
_$persistChatTabsAtom.reportWrite(value, super.persistChatTabs, () {
|
|
super.persistChatTabs = value;
|
|
});
|
|
}
|
|
|
|
late final _$secondaryTabsAtom = Atom(
|
|
name: '_SettingsStoreBase.secondaryTabs',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
List<PersistedChatTab> get secondaryTabs {
|
|
_$secondaryTabsAtom.reportRead();
|
|
return super.secondaryTabs;
|
|
}
|
|
|
|
@override
|
|
set secondaryTabs(List<PersistedChatTab> value) {
|
|
_$secondaryTabsAtom.reportWrite(value, super.secondaryTabs, () {
|
|
super.secondaryTabs = value;
|
|
});
|
|
}
|
|
|
|
late final _$landscapeChatLeftSideAtom = Atom(
|
|
name: '_SettingsStoreBase.landscapeChatLeftSide',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
bool get landscapeChatLeftSide {
|
|
_$landscapeChatLeftSideAtom.reportRead();
|
|
return super.landscapeChatLeftSide;
|
|
}
|
|
|
|
@override
|
|
set landscapeChatLeftSide(bool value) {
|
|
_$landscapeChatLeftSideAtom.reportWrite(
|
|
value,
|
|
super.landscapeChatLeftSide,
|
|
() {
|
|
super.landscapeChatLeftSide = value;
|
|
},
|
|
);
|
|
}
|
|
|
|
late final _$landscapeForceVerticalChatAtom = Atom(
|
|
name: '_SettingsStoreBase.landscapeForceVerticalChat',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
bool get landscapeForceVerticalChat {
|
|
_$landscapeForceVerticalChatAtom.reportRead();
|
|
return super.landscapeForceVerticalChat;
|
|
}
|
|
|
|
@override
|
|
set landscapeForceVerticalChat(bool value) {
|
|
_$landscapeForceVerticalChatAtom.reportWrite(
|
|
value,
|
|
super.landscapeForceVerticalChat,
|
|
() {
|
|
super.landscapeForceVerticalChat = value;
|
|
},
|
|
);
|
|
}
|
|
|
|
late final _$landscapeCutoutAtom = Atom(
|
|
name: '_SettingsStoreBase.landscapeCutout',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
LandscapeCutoutType get landscapeCutout {
|
|
_$landscapeCutoutAtom.reportRead();
|
|
return super.landscapeCutout;
|
|
}
|
|
|
|
@override
|
|
set landscapeCutout(LandscapeCutoutType value) {
|
|
_$landscapeCutoutAtom.reportWrite(value, super.landscapeCutout, () {
|
|
super.landscapeCutout = value;
|
|
});
|
|
}
|
|
|
|
late final _$chatWidthAtom = Atom(
|
|
name: '_SettingsStoreBase.chatWidth',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
double get chatWidth {
|
|
_$chatWidthAtom.reportRead();
|
|
return super.chatWidth;
|
|
}
|
|
|
|
@override
|
|
set chatWidth(double value) {
|
|
_$chatWidthAtom.reportWrite(value, super.chatWidth, () {
|
|
super.chatWidth = value;
|
|
});
|
|
}
|
|
|
|
late final _$fullScreenChatOverlayOpacityAtom = Atom(
|
|
name: '_SettingsStoreBase.fullScreenChatOverlayOpacity',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
double get fullScreenChatOverlayOpacity {
|
|
_$fullScreenChatOverlayOpacityAtom.reportRead();
|
|
return super.fullScreenChatOverlayOpacity;
|
|
}
|
|
|
|
@override
|
|
set fullScreenChatOverlayOpacity(double value) {
|
|
_$fullScreenChatOverlayOpacityAtom.reportWrite(
|
|
value,
|
|
super.fullScreenChatOverlayOpacity,
|
|
() {
|
|
super.fullScreenChatOverlayOpacity = value;
|
|
},
|
|
);
|
|
}
|
|
|
|
late final _$keepScreenAwakeAtom = Atom(
|
|
name: '_SettingsStoreBase.keepScreenAwake',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
bool get keepScreenAwake {
|
|
_$keepScreenAwakeAtom.reportRead();
|
|
return super.keepScreenAwake;
|
|
}
|
|
|
|
@override
|
|
set keepScreenAwake(bool value) {
|
|
_$keepScreenAwakeAtom.reportWrite(value, super.keepScreenAwake, () {
|
|
super.keepScreenAwake = value;
|
|
});
|
|
}
|
|
|
|
late final _$autocompleteAtom = Atom(
|
|
name: '_SettingsStoreBase.autocomplete',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
bool get autocomplete {
|
|
_$autocompleteAtom.reportRead();
|
|
return super.autocomplete;
|
|
}
|
|
|
|
@override
|
|
set autocomplete(bool value) {
|
|
_$autocompleteAtom.reportWrite(value, super.autocomplete, () {
|
|
super.autocomplete = value;
|
|
});
|
|
}
|
|
|
|
late final _$showRecentMessagesAtom = Atom(
|
|
name: '_SettingsStoreBase.showRecentMessages',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
bool get showRecentMessages {
|
|
_$showRecentMessagesAtom.reportRead();
|
|
return super.showRecentMessages;
|
|
}
|
|
|
|
@override
|
|
set showRecentMessages(bool value) {
|
|
_$showRecentMessagesAtom.reportWrite(value, super.showRecentMessages, () {
|
|
super.showRecentMessages = value;
|
|
});
|
|
}
|
|
|
|
late final _$autoSyncChatDelayAtom = Atom(
|
|
name: '_SettingsStoreBase.autoSyncChatDelay',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
bool get autoSyncChatDelay {
|
|
_$autoSyncChatDelayAtom.reportRead();
|
|
return super.autoSyncChatDelay;
|
|
}
|
|
|
|
@override
|
|
set autoSyncChatDelay(bool value) {
|
|
_$autoSyncChatDelayAtom.reportWrite(value, super.autoSyncChatDelay, () {
|
|
super.autoSyncChatDelay = value;
|
|
});
|
|
}
|
|
|
|
late final _$chatDelayAtom = Atom(
|
|
name: '_SettingsStoreBase.chatDelay',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
double get chatDelay {
|
|
_$chatDelayAtom.reportRead();
|
|
return super.chatDelay;
|
|
}
|
|
|
|
@override
|
|
set chatDelay(double value) {
|
|
_$chatDelayAtom.reportWrite(value, super.chatDelay, () {
|
|
super.chatDelay = value;
|
|
});
|
|
}
|
|
|
|
late final _$syncedChatDelayAtom = Atom(
|
|
name: '_SettingsStoreBase.syncedChatDelay',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
double get syncedChatDelay {
|
|
_$syncedChatDelayAtom.reportRead();
|
|
return super.syncedChatDelay;
|
|
}
|
|
|
|
@override
|
|
set syncedChatDelay(double value) {
|
|
_$syncedChatDelayAtom.reportWrite(value, super.syncedChatDelay, () {
|
|
super.syncedChatDelay = value;
|
|
});
|
|
}
|
|
|
|
late final _$mutedWordsAtom = Atom(
|
|
name: '_SettingsStoreBase.mutedWords',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
List<String> get mutedWords {
|
|
_$mutedWordsAtom.reportRead();
|
|
return super.mutedWords;
|
|
}
|
|
|
|
@override
|
|
set mutedWords(List<String> value) {
|
|
_$mutedWordsAtom.reportWrite(value, super.mutedWords, () {
|
|
super.mutedWords = value;
|
|
});
|
|
}
|
|
|
|
late final _$matchWholeWordAtom = Atom(
|
|
name: '_SettingsStoreBase.matchWholeWord',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
bool get matchWholeWord {
|
|
_$matchWholeWordAtom.reportRead();
|
|
return super.matchWholeWord;
|
|
}
|
|
|
|
@override
|
|
set matchWholeWord(bool value) {
|
|
_$matchWholeWordAtom.reportWrite(value, super.matchWholeWord, () {
|
|
super.matchWholeWord = value;
|
|
});
|
|
}
|
|
|
|
late final _$shareCrashLogsAndAnalyticsAtom = Atom(
|
|
name: '_SettingsStoreBase.shareCrashLogsAndAnalytics',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
bool get shareCrashLogsAndAnalytics {
|
|
_$shareCrashLogsAndAnalyticsAtom.reportRead();
|
|
return super.shareCrashLogsAndAnalytics;
|
|
}
|
|
|
|
@override
|
|
set shareCrashLogsAndAnalytics(bool value) {
|
|
_$shareCrashLogsAndAnalyticsAtom.reportWrite(
|
|
value,
|
|
super.shareCrashLogsAndAnalytics,
|
|
() {
|
|
super.shareCrashLogsAndAnalytics = value;
|
|
},
|
|
);
|
|
}
|
|
|
|
late final _$fullScreenAtom = Atom(
|
|
name: '_SettingsStoreBase.fullScreen',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
bool get fullScreen {
|
|
_$fullScreenAtom.reportRead();
|
|
return super.fullScreen;
|
|
}
|
|
|
|
@override
|
|
set fullScreen(bool value) {
|
|
_$fullScreenAtom.reportWrite(value, super.fullScreen, () {
|
|
super.fullScreen = value;
|
|
});
|
|
}
|
|
|
|
late final _$fullScreenChatOverlayAtom = Atom(
|
|
name: '_SettingsStoreBase.fullScreenChatOverlay',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
bool get fullScreenChatOverlay {
|
|
_$fullScreenChatOverlayAtom.reportRead();
|
|
return super.fullScreenChatOverlay;
|
|
}
|
|
|
|
@override
|
|
set fullScreenChatOverlay(bool value) {
|
|
_$fullScreenChatOverlayAtom.reportWrite(
|
|
value,
|
|
super.fullScreenChatOverlay,
|
|
() {
|
|
super.fullScreenChatOverlay = value;
|
|
},
|
|
);
|
|
}
|
|
|
|
late final _$pinnedChannelIdsAtom = Atom(
|
|
name: '_SettingsStoreBase.pinnedChannelIds',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
List<String> get pinnedChannelIds {
|
|
_$pinnedChannelIdsAtom.reportRead();
|
|
return super.pinnedChannelIds;
|
|
}
|
|
|
|
@override
|
|
set pinnedChannelIds(List<String> value) {
|
|
_$pinnedChannelIdsAtom.reportWrite(value, super.pinnedChannelIds, () {
|
|
super.pinnedChannelIds = value;
|
|
});
|
|
}
|
|
|
|
late final _$_SettingsStoreBaseActionController = ActionController(
|
|
name: '_SettingsStoreBase',
|
|
context: context,
|
|
);
|
|
|
|
@override
|
|
void resetGeneralSettings() {
|
|
final _$actionInfo = _$_SettingsStoreBaseActionController.startAction(
|
|
name: '_SettingsStoreBase.resetGeneralSettings',
|
|
);
|
|
try {
|
|
return super.resetGeneralSettings();
|
|
} finally {
|
|
_$_SettingsStoreBaseActionController.endAction(_$actionInfo);
|
|
}
|
|
}
|
|
|
|
@override
|
|
void resetVideoSettings() {
|
|
final _$actionInfo = _$_SettingsStoreBaseActionController.startAction(
|
|
name: '_SettingsStoreBase.resetVideoSettings',
|
|
);
|
|
try {
|
|
return super.resetVideoSettings();
|
|
} finally {
|
|
_$_SettingsStoreBaseActionController.endAction(_$actionInfo);
|
|
}
|
|
}
|
|
|
|
@override
|
|
void resetChatSettings() {
|
|
final _$actionInfo = _$_SettingsStoreBaseActionController.startAction(
|
|
name: '_SettingsStoreBase.resetChatSettings',
|
|
);
|
|
try {
|
|
return super.resetChatSettings();
|
|
} finally {
|
|
_$_SettingsStoreBaseActionController.endAction(_$actionInfo);
|
|
}
|
|
}
|
|
|
|
@override
|
|
void resetOtherSettings() {
|
|
final _$actionInfo = _$_SettingsStoreBaseActionController.startAction(
|
|
name: '_SettingsStoreBase.resetOtherSettings',
|
|
);
|
|
try {
|
|
return super.resetOtherSettings();
|
|
} finally {
|
|
_$_SettingsStoreBaseActionController.endAction(_$actionInfo);
|
|
}
|
|
}
|
|
|
|
@override
|
|
void resetGlobalConfigs() {
|
|
final _$actionInfo = _$_SettingsStoreBaseActionController.startAction(
|
|
name: '_SettingsStoreBase.resetGlobalConfigs',
|
|
);
|
|
try {
|
|
return super.resetGlobalConfigs();
|
|
} finally {
|
|
_$_SettingsStoreBaseActionController.endAction(_$actionInfo);
|
|
}
|
|
}
|
|
|
|
@override
|
|
void resetAllSettings() {
|
|
final _$actionInfo = _$_SettingsStoreBaseActionController.startAction(
|
|
name: '_SettingsStoreBase.resetAllSettings',
|
|
);
|
|
try {
|
|
return super.resetAllSettings();
|
|
} finally {
|
|
_$_SettingsStoreBaseActionController.endAction(_$actionInfo);
|
|
}
|
|
}
|
|
|
|
@override
|
|
String toString() {
|
|
return '''
|
|
themeType: ${themeType},
|
|
accentColor: ${accentColor},
|
|
showThumbnails: ${showThumbnails},
|
|
largeStreamCard: ${largeStreamCard},
|
|
launchUrlExternal: ${launchUrlExternal},
|
|
showVideo: ${showVideo},
|
|
defaultToHighestQuality: ${defaultToHighestQuality},
|
|
useTextureRendering: ${useTextureRendering},
|
|
useNativePlayer: ${useNativePlayer},
|
|
showOverlay: ${showOverlay},
|
|
toggleableOverlay: ${toggleableOverlay},
|
|
showLatency: ${showLatency},
|
|
badgeScale: ${badgeScale},
|
|
emoteScale: ${emoteScale},
|
|
messageScale: ${messageScale},
|
|
messageSpacing: ${messageSpacing},
|
|
fontSize: ${fontSize},
|
|
showDeletedMessages: ${showDeletedMessages},
|
|
showChatMessageDividers: ${showChatMessageDividers},
|
|
timestampType: ${timestampType},
|
|
showHistoricalTimestamps: ${showHistoricalTimestamps},
|
|
focusCurrentChannel: ${focusCurrentChannel},
|
|
highlightFirstTimeChatter: ${highlightFirstTimeChatter},
|
|
showUserNotices: ${showUserNotices},
|
|
showTwitchEmotes: ${showTwitchEmotes},
|
|
showTwitchBadges: ${showTwitchBadges},
|
|
show7TVEmotes: ${show7TVEmotes},
|
|
showBTTVEmotes: ${showBTTVEmotes},
|
|
showBTTVBadges: ${showBTTVBadges},
|
|
showFFZEmotes: ${showFFZEmotes},
|
|
showFFZBadges: ${showFFZBadges},
|
|
emoteMenuButtonOnLeft: ${emoteMenuButtonOnLeft},
|
|
persistChatTabs: ${persistChatTabs},
|
|
secondaryTabs: ${secondaryTabs},
|
|
landscapeChatLeftSide: ${landscapeChatLeftSide},
|
|
landscapeForceVerticalChat: ${landscapeForceVerticalChat},
|
|
landscapeCutout: ${landscapeCutout},
|
|
chatWidth: ${chatWidth},
|
|
fullScreenChatOverlayOpacity: ${fullScreenChatOverlayOpacity},
|
|
keepScreenAwake: ${keepScreenAwake},
|
|
autocomplete: ${autocomplete},
|
|
showRecentMessages: ${showRecentMessages},
|
|
autoSyncChatDelay: ${autoSyncChatDelay},
|
|
chatDelay: ${chatDelay},
|
|
syncedChatDelay: ${syncedChatDelay},
|
|
mutedWords: ${mutedWords},
|
|
matchWholeWord: ${matchWholeWord},
|
|
shareCrashLogsAndAnalytics: ${shareCrashLogsAndAnalytics},
|
|
fullScreen: ${fullScreen},
|
|
fullScreenChatOverlay: ${fullScreenChatOverlay},
|
|
pinnedChannelIds: ${pinnedChannelIds},
|
|
effectiveChatDelay: ${effectiveChatDelay}
|
|
''';
|
|
}
|
|
}
|