Merge pull request #5298 from pangeachat/text-size-carry-over

chore: store font size settings per-user
This commit is contained in:
ggurdin 2026-01-20 16:53:28 -05:00 committed by GitHub
commit 8bf00b0f24
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 70 additions and 14 deletions

View file

@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:fluffychat/config/app_config.dart';
import 'package:fluffychat/config/setting_keys.dart';
import 'package:fluffychat/pangea/user/style_settings_repo.dart';
import 'package:fluffychat/utils/account_config.dart';
import 'package:fluffychat/utils/file_selector.dart';
import 'package:fluffychat/widgets/future_loading_dialog.dart';
@ -157,10 +157,16 @@ class SettingsStyleController extends State<SettingsStyle> {
void changeFontSizeFactor(double d) {
setState(() => AppConfig.fontSizeFactor = d);
Matrix.of(context).store.setString(
SettingKeys.fontSizeFactor,
AppConfig.fontSizeFactor.toString(),
);
// #Pangea
// Matrix.of(context).store.setString(
// SettingKeys.fontSizeFactor,
// AppConfig.fontSizeFactor.toString(),
// );
StyleSettingsRepo.setFontSizeFactor(
Matrix.of(context).client.userID!,
AppConfig.fontSizeFactor,
);
// Pangea#
}
@override

View file

@ -18,6 +18,7 @@ import 'package:fluffychat/pangea/languages/p_language_store.dart';
import 'package:fluffychat/pangea/subscription/controllers/subscription_controller.dart';
import 'package:fluffychat/pangea/text_to_speech/tts_controller.dart';
import 'package:fluffychat/pangea/user/pangea_push_rules_extension.dart';
import 'package:fluffychat/pangea/user/style_settings_repo.dart';
import 'package:fluffychat/pangea/user/user_controller.dart';
import 'package:fluffychat/widgets/matrix.dart';
import '../utils/firebase_analytics.dart';
@ -55,7 +56,7 @@ class PangeaController {
TtsController.setAvailableLanguages();
}
void _onLogin(BuildContext context) {
void _onLogin(BuildContext context, String? userID) {
initControllers();
_registerSubscriptions();
@ -64,6 +65,10 @@ class PangeaController {
Provider.of<LocaleProvider>(context, listen: false).setLocale(l1);
});
subscriptionController.reinitialize();
StyleSettingsRepo.fontSizeFactor(userID!).then((factor) {
AppConfig.fontSizeFactor = factor;
});
}
void _onLogout(BuildContext context) {
@ -91,7 +96,7 @@ class PangeaController {
_onLogout(context);
break;
case LoginState.loggedIn:
_onLogin(context);
_onLogin(context, userID);
break;
}
@ -122,9 +127,7 @@ class PangeaController {
}
Future<void> _clearCache({List<String> exclude = const []}) async {
final List<Future<void>> futures = [
matrixState.store.setString(SettingKeys.fontSizeFactor, ''),
];
final List<Future<void>> futures = [];
for (final key in _storageKeys) {
if (exclude.contains(key)) continue;
futures.add(GetStorage(key).erase());
@ -142,7 +145,6 @@ class PangeaController {
);
}
AppConfig.fontSizeFactor = 1.0;
await Future.wait(futures);
}

View file

@ -0,0 +1,40 @@
import 'package:get_storage/get_storage.dart';
class _StyleSettings {
final double fontSizeFactor;
const _StyleSettings({
this.fontSizeFactor = 1.0,
});
Map<String, dynamic> toJson() {
return {
'fontSizeFactor': fontSizeFactor,
};
}
factory _StyleSettings.fromJson(Map<String, dynamic> json) {
return _StyleSettings(
fontSizeFactor: (json['fontSizeFactor'] as num?)?.toDouble() ?? 1.0,
);
}
}
class StyleSettingsRepo {
static final GetStorage _storage = GetStorage("style_settings");
static Future<double> fontSizeFactor(String userId) async {
await GetStorage.init("style_settings");
final json =
_storage.read<Map<String, dynamic>>('${userId}_style_settings');
final settings =
json != null ? _StyleSettings.fromJson(json) : const _StyleSettings();
return settings.fontSizeFactor;
}
static Future<void> setFontSizeFactor(String userId, double factor) async {
await GetStorage.init("style_settings");
final settings = _StyleSettings(fontSizeFactor: factor);
await _storage.write('${userId}_style_settings', settings.toJson());
}
}

View file

@ -26,6 +26,7 @@ import 'package:fluffychat/pangea/common/utils/any_state_holder.dart';
import 'package:fluffychat/pangea/common/utils/error_handler.dart';
import 'package:fluffychat/pangea/join_codes/space_code_controller.dart';
import 'package:fluffychat/pangea/languages/locale_provider.dart';
import 'package:fluffychat/pangea/user/style_settings_repo.dart';
import 'package:fluffychat/utils/client_manager.dart';
import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_file_extension.dart';
import 'package:fluffychat/utils/platform_infos.dart';
@ -553,9 +554,16 @@ class MatrixState extends State<Matrix> with WidgetsBindingObserver {
}
void initSettings() {
AppConfig.fontSizeFactor =
double.tryParse(store.getString(SettingKeys.fontSizeFactor) ?? '') ??
AppConfig.fontSizeFactor;
// #Pangea
// AppConfig.fontSizeFactor =
// double.tryParse(store.getString(SettingKeys.fontSizeFactor) ?? '') ??
// AppConfig.fontSizeFactor;
if (client.isLogged()) {
StyleSettingsRepo.fontSizeFactor(client.userID!).then((factor) {
AppConfig.fontSizeFactor = factor;
});
}
// Pangea#
AppConfig.renderHtml =
store.getBool(SettingKeys.renderHtml) ?? AppConfig.renderHtml;