added support for overriding locales

This commit is contained in:
Fabian Freund
2025-10-20 16:21:10 +02:00
parent aca0767d9a
commit 1c7e9ec741
66 changed files with 1679 additions and 7 deletions
@@ -17,6 +17,7 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import 'package:collection/collection.dart';
import 'package:flutter/material.dart' show ThemeMode;
import 'package:flutter_mozilla_components/flutter_mozilla_components.dart';
import 'package:riverpod/riverpod.dart';
@@ -141,6 +142,18 @@ class EngineSettingsReplicationService
.read(preferenceFixatorProvider.notifier)
.register('pdfjs.disabled', !settings.enablePdfJs);
}
if (!const DeepCollectionEquality.unordered().equals(
previous.value?.locales,
settings.locales,
)) {
// ignore: only_use_keep_alive_inside_keep_alive
await ref
.read(preferenceFixatorProvider.notifier)
.register(
'intl.accept_languages',
settings.locales.join(','),
);
}
} else {
await _service.setDefaultSettings(settings);
@@ -149,6 +162,11 @@ class EngineSettingsReplicationService
.read(preferenceFixatorProvider.notifier)
.register('pdfjs.disabled', !settings.enablePdfJs);
// ignore: only_use_keep_alive_inside_keep_alive
await ref
.read(preferenceFixatorProvider.notifier)
.register('intl.accept_languages', settings.locales.join(','));
initialSettingsSent = true;
}
}
@@ -44,7 +44,7 @@ final class EngineSettingsReplicationServiceProvider
}
String _$engineSettingsReplicationServiceHash() =>
r'd28cc58a94f45008a478bf52a9c40d61811b591d';
r'7583ebc8ca9c11377486ff5a3e763493dcdc903a';
abstract class _$EngineSettingsReplicationService extends $Notifier<void> {
void build();
@@ -25,8 +25,6 @@ class PreferenceChangeListener extends _$PreferenceChangeListener {
@Riverpod()
class PreferenceFixator extends _$PreferenceFixator {
Future<void> register(String name, Object value) async {
await GeckoPrefService().applyPrefs({name: value});
state = {...state}
..update(
name,
@@ -36,6 +34,8 @@ class PreferenceFixator extends _$PreferenceFixator {
return value;
},
);
await GeckoPrefService().applyPrefs({name: value});
}
Future<void> unregister(String name) async {
@@ -87,7 +87,7 @@ final class PreferenceFixatorProvider
}
}
String _$preferenceFixatorHash() => r'dfa323859c660d3db74dba7297e2a33b758ed78a';
String _$preferenceFixatorHash() => r'c76245d5c420e2e3f6c026f23c017c939b69ef59';
abstract class _$PreferenceFixator extends $Notifier<Map<String, Object>> {
Map<String, Object> build();