@@ -74,9 +74,10 @@ class ShaderProvider extends ChangeNotifier with DisposableChangeNotifierMixin {
|
||||
Future<void> setPreset(ShaderPreset preset) async {
|
||||
final service = _settingsService ?? await SettingsService.getInstance();
|
||||
await service.write(SettingsService.globalShaderPreset, preset.id);
|
||||
if (_savedPresetListenable == null) {
|
||||
_savedPreset = preset;
|
||||
_currentPreset = preset;
|
||||
final changed = _savedPreset.id != preset.id || _currentPreset.id != preset.id;
|
||||
_savedPreset = preset;
|
||||
_currentPreset = preset;
|
||||
if (changed || _savedPresetListenable == null) {
|
||||
safeNotifyListeners();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,7 +44,11 @@ extension _PlexVideoControlsTrackMethods on _PlexVideoControlsState {
|
||||
.applyPreset(targetPreset)
|
||||
.then((_) async {
|
||||
if (!mounted) return;
|
||||
await shaderProvider.setPreset(targetPreset);
|
||||
if (targetPreset.isEnabled) {
|
||||
await shaderProvider.setPreset(targetPreset);
|
||||
} else {
|
||||
shaderProvider.setCurrentPreset(targetPreset);
|
||||
}
|
||||
if (!mounted) return;
|
||||
// ignore: no-empty-block - setState triggers rebuild to reflect shader changes
|
||||
_setControlsState(() {});
|
||||
|
||||
@@ -89,6 +89,23 @@ void main() {
|
||||
p.dispose();
|
||||
});
|
||||
|
||||
test('setPreset restores current when saved preset id is unchanged', () async {
|
||||
final p = ShaderProvider();
|
||||
await Future.delayed(Duration.zero);
|
||||
final saved = ShaderPreset.anime4kPreset(Anime4KQuality.fast, Anime4KMode.modeA);
|
||||
|
||||
await p.setPreset(saved);
|
||||
p.setCurrentPreset(ShaderPreset.none);
|
||||
expect(p.savedPreset, saved);
|
||||
expect(p.currentPreset, ShaderPreset.none);
|
||||
|
||||
await p.setPreset(saved);
|
||||
expect(p.savedPreset, saved);
|
||||
expect(p.currentPreset, saved);
|
||||
|
||||
p.dispose();
|
||||
});
|
||||
|
||||
test('reset returns to the none preset', () async {
|
||||
final p = ShaderProvider();
|
||||
await Future.delayed(Duration.zero);
|
||||
|
||||
Reference in New Issue
Block a user