@@ -6,6 +6,9 @@ import 'home_section_config.dart';
66import 'preference_constants.dart' ;
77
88class UserPreferences extends ChangeNotifier {
9+ static const _lastServerIdPreferenceKey = 'pref_last_server_id' ;
10+ static const _lastUserIdPreferenceKey = 'pref_last_user_id' ;
11+
912 static const mediaBarModeMoonfin = 'moonfin' ;
1013 static const mediaBarModeMakd = 'makd' ;
1114 static const mediaBarModeOff = 'off' ;
@@ -48,9 +51,89 @@ class UserPreferences extends ChangeNotifier {
4851 }
4952 }
5053
51- T get <T >(Preference <T > pref) => _store.get (pref);
54+ String ? _activeProfileScopeSuffix () {
55+ final serverId = (_store.getString (_lastServerIdPreferenceKey) ?? '' )
56+ .trim ();
57+ final userId = (_store.getString (_lastUserIdPreferenceKey) ?? '' ).trim ();
58+ if (serverId.isEmpty || userId.isEmpty) {
59+ return null ;
60+ }
61+ return '${serverId }_$userId ' ;
62+ }
63+
64+ Preference <String >? _scopedResumeSubtractDurationPreference () {
65+ final scopeSuffix = _activeProfileScopeSuffix ();
66+ if (scopeSuffix == null ) {
67+ return null ;
68+ }
69+ return Preference (
70+ key: 'pref_resume_preroll_$scopeSuffix ' ,
71+ defaultValue: '0' ,
72+ );
73+ }
74+
75+ Preference <bool >? _scopedCinemaModeEnabledPreference () {
76+ final scopeSuffix = _activeProfileScopeSuffix ();
77+ if (scopeSuffix == null ) {
78+ return null ;
79+ }
80+ return Preference (
81+ key: 'pref_enable_cinema_mode_$scopeSuffix ' ,
82+ defaultValue: true ,
83+ );
84+ }
85+
86+ bool _isResumeSubtractDurationPreference <T >(Preference <T > pref) {
87+ return pref.key == resumeSubtractDuration.key;
88+ }
89+
90+ bool _isCinemaModeEnabledPreference <T >(Preference <T > pref) {
91+ return pref.key == cinemaModeEnabled.key;
92+ }
93+
94+ T get <T >(Preference <T > pref) {
95+ if (_isResumeSubtractDurationPreference (pref)) {
96+ final scoped = _scopedResumeSubtractDurationPreference ();
97+ if (scoped != null && _store.containsKey (scoped.key)) {
98+ return _store.get (scoped) as T ;
99+ }
100+ return _store.get (resumeSubtractDuration) as T ;
101+ }
102+
103+ if (_isCinemaModeEnabledPreference (pref)) {
104+ final scoped = _scopedCinemaModeEnabledPreference ();
105+ if (scoped != null && _store.containsKey (scoped.key)) {
106+ return _store.get (scoped) as T ;
107+ }
108+ return _store.get (cinemaModeEnabled) as T ;
109+ }
110+
111+ return _store.get (pref);
112+ }
52113
53114 Future <void > set <T >(Preference <T > pref, T value) async {
115+ if (_isResumeSubtractDurationPreference (pref)) {
116+ final scoped = _scopedResumeSubtractDurationPreference ();
117+ if (scoped != null ) {
118+ await _store.set (scoped, value as String );
119+ } else {
120+ await _store.set (resumeSubtractDuration, value as String );
121+ }
122+ notifyListeners ();
123+ return ;
124+ }
125+
126+ if (_isCinemaModeEnabledPreference (pref)) {
127+ final scoped = _scopedCinemaModeEnabledPreference ();
128+ if (scoped != null ) {
129+ await _store.set (scoped, value as bool );
130+ } else {
131+ await _store.set (cinemaModeEnabled, value as bool );
132+ }
133+ notifyListeners ();
134+ return ;
135+ }
136+
54137 await _store.set (pref, value);
55138 notifyListeners ();
56139 }
@@ -59,8 +142,21 @@ class UserPreferences extends ChangeNotifier {
59142
60143 bool containsPreferenceKey (String key) => _store.containsKey (key);
61144
62- bool containsPreference <T >(Preference <T > pref) =>
63- _store.containsKey (pref.key);
145+ bool containsPreference <T >(Preference <T > pref) {
146+ if (_isResumeSubtractDurationPreference (pref)) {
147+ final scoped = _scopedResumeSubtractDurationPreference ();
148+ return (scoped != null && _store.containsKey (scoped.key)) ||
149+ _store.containsKey (resumeSubtractDuration.key);
150+ }
151+
152+ if (_isCinemaModeEnabledPreference (pref)) {
153+ final scoped = _scopedCinemaModeEnabledPreference ();
154+ return (scoped != null && _store.containsKey (scoped.key)) ||
155+ _store.containsKey (cinemaModeEnabled.key);
156+ }
157+
158+ return _store.containsKey (pref.key);
159+ }
64160
65161 AudioOutputMode resolveAudioOutputMode () => get (audioOutputMode);
66162
@@ -950,9 +1046,6 @@ class UserPreferences extends ChangeNotifier {
9501046 static Preference <bool > libraryFavoriteFilter (String libraryId) =>
9511047 Preference (key: 'library_fav_filter_$libraryId ' , defaultValue: false );
9521048
953- static Preference <String > libraryLetterFilter (String libraryId) =>
954- Preference (key: 'library_letter_filter_$libraryId ' , defaultValue: '' );
955-
9561049 static EnumPreference <ImageType > libraryImageType (String libraryId) =>
9571050 EnumPreference (
9581051 key: 'library_image_type_$libraryId ' ,
0 commit comments