mirror of
https://gitlab.com/mysocialportal/relatica
synced 2024-10-18 13:33:32 +00:00
Refactor Riverpod log and hashtag service to not require a global container handle
Tags still need it until Client is elevated
This commit is contained in:
parent
4cb45cd894
commit
a1cb3d2d37
6 changed files with 23 additions and 26 deletions
|
@ -15,7 +15,6 @@ import 'friendica_client/friendica_client.dart';
|
|||
import 'globals.dart';
|
||||
import 'models/auth/profile.dart';
|
||||
import 'models/instance_info.dart';
|
||||
import 'riverpod_controllers/hashtag_service.dart';
|
||||
import 'services/auth_service.dart';
|
||||
import 'services/blocks_manager.dart';
|
||||
import 'services/connections_manager.dart';
|
||||
|
@ -195,10 +194,6 @@ void clearCaches() {
|
|||
_logger.severe('Error clearing GalleryService Repo: $error'),
|
||||
);
|
||||
|
||||
rootRiverpodProviderContainer
|
||||
?.read(hashtagServiceProvider().notifier)
|
||||
.clear();
|
||||
|
||||
getIt<ActiveProfileSelector<NotificationsManager>>().activeEntry.match(
|
||||
onSuccess: (manager) => manager.clear(),
|
||||
onError: (error) =>
|
||||
|
|
|
@ -10,7 +10,6 @@ import 'package:provider/provider.dart';
|
|||
import 'app_theme.dart';
|
||||
import 'di_initialization.dart';
|
||||
import 'globals.dart';
|
||||
import 'riverpod_controllers/log_service.dart';
|
||||
import 'routes.dart';
|
||||
import 'services/auth_service.dart';
|
||||
import 'services/blocks_manager.dart';
|
||||
|
@ -37,21 +36,6 @@ void main() async {
|
|||
|
||||
// await dotenv.load(fileName: '.env');
|
||||
Logger.root.level = Level.OFF;
|
||||
Logger.root.onRecord.listen((event) {
|
||||
if (rootRiverpodProviderContainer == null) {
|
||||
preInitializationLogEventQueue.add(event);
|
||||
return;
|
||||
}
|
||||
|
||||
final logService =
|
||||
rootRiverpodProviderContainer!.read(logServiceProvider.notifier);
|
||||
if (preInitializationLogEventQueue.isNotEmpty) {
|
||||
preInitializationLogEventQueue.forEach(logService.add);
|
||||
preInitializationLogEventQueue.clear();
|
||||
}
|
||||
logService.add(event);
|
||||
});
|
||||
|
||||
await fixLetsEncryptCertOnOldAndroid();
|
||||
await dependencyInjectionInitialization();
|
||||
await setupPackageInfoAndUserAgent();
|
||||
|
|
11
lib/riverpod_controllers/cache_clear_service.dart
Normal file
11
lib/riverpod_controllers/cache_clear_service.dart
Normal file
|
@ -0,0 +1,11 @@
|
|||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
|
||||
import 'hashtag_service.dart';
|
||||
|
||||
part 'cache_clear_service.g.dart';
|
||||
|
||||
@riverpod
|
||||
bool cacheClearService(CacheClearServiceRef ref) {
|
||||
ref.read(hashtagServiceProvider().notifier).clear();
|
||||
return true;
|
||||
}
|
|
@ -15,6 +15,9 @@ class LogService extends _$LogService {
|
|||
|
||||
@override
|
||||
UnmodifiableListView<LogRecord> build() {
|
||||
Logger.root.onRecord.listen((event) {
|
||||
add(event);
|
||||
});
|
||||
return UnmodifiableListView(_events);
|
||||
}
|
||||
|
||||
|
@ -27,6 +30,7 @@ class LogService extends _$LogService {
|
|||
if (_events.length > _maxItems) {
|
||||
_events.removeFirst();
|
||||
}
|
||||
ref.invalidateSelf();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ part of 'log_service.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$logServiceHash() => r'923de9aab8ec9d053ba8b3b88345e2d1b842b8cb';
|
||||
String _$logServiceHash() => r'5bbf2513784053f797ba73b282d52d9c6e465782';
|
||||
|
||||
/// See also [LogService].
|
||||
@ProviderFor(LogService)
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import 'package:color_blindness/color_blindness.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
@ -10,16 +11,17 @@ import '../controls/responsive_max_width.dart';
|
|||
import '../controls/standard_appbar.dart';
|
||||
import '../di_initialization.dart';
|
||||
import '../globals.dart';
|
||||
import '../riverpod_controllers/cache_clear_service.dart';
|
||||
import '../routes.dart';
|
||||
import '../services/setting_service.dart';
|
||||
import '../utils/known_network_extensions.dart';
|
||||
import '../utils/theme_mode_extensions.dart';
|
||||
|
||||
class SettingsScreen extends StatelessWidget {
|
||||
class SettingsScreen extends ConsumerWidget {
|
||||
const SettingsScreen({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
final settings = context.watch<SettingsService>();
|
||||
return Scaffold(
|
||||
appBar: StandardAppBar.build(context, 'Settings'),
|
||||
|
@ -35,7 +37,7 @@ class SettingsScreen extends StatelessWidget {
|
|||
buildSpoilerHidingEnabledWidget(settings),
|
||||
buildThemeWidget(settings),
|
||||
if (!kReleaseMode) buildColorBlindnessTestSettings(settings),
|
||||
buildClearCaches(context),
|
||||
buildClearCaches(context, ref),
|
||||
buildLogPanel(context, settings),
|
||||
const NetworkCapabilitiesWidget(),
|
||||
],
|
||||
|
@ -124,7 +126,7 @@ class SettingsScreen extends StatelessWidget {
|
|||
);
|
||||
}
|
||||
|
||||
Widget buildClearCaches(BuildContext context) {
|
||||
Widget buildClearCaches(BuildContext context, WidgetRef ref) {
|
||||
return ListTile(
|
||||
title: const Text('Clear local caches'),
|
||||
subtitle: const Text('This does not affect server side data at all.'),
|
||||
|
@ -136,6 +138,7 @@ class SettingsScreen extends StatelessWidget {
|
|||
return;
|
||||
}
|
||||
|
||||
ref.read(cacheClearServiceProvider);
|
||||
clearCaches();
|
||||
},
|
||||
child: const Text('Clear'),
|
||||
|
|
Loading…
Reference in a new issue