Merge pull request #5298 from pangeachat/text-size-carry-over
chore: store font size settings per-user
This commit is contained in:
commit
8bf00b0f24
4 changed files with 70 additions and 14 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
40
lib/pangea/user/style_settings_repo.dart
Normal file
40
lib/pangea/user/style_settings_repo.dart
Normal 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());
|
||||
}
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue