@@ -8,6 +8,7 @@ import 'package:ht_auth_repository/ht_auth_repository.dart';
8
8
import 'package:ht_dashboard/app/config/config.dart' as local_config;
9
9
import 'package:ht_data_repository/ht_data_repository.dart' ;
10
10
import 'package:ht_shared/ht_shared.dart' ;
11
+ import 'package:logging/logging.dart' ;
11
12
12
13
part 'app_event.dart' ;
13
14
part 'app_state.dart' ;
@@ -18,9 +19,11 @@ class AppBloc extends Bloc<AppEvent, AppState> {
18
19
required HtDataRepository <UserAppSettings > userAppSettingsRepository,
19
20
required HtDataRepository <RemoteConfig > appConfigRepository,
20
21
required local_config.AppEnvironment environment,
22
+ Logger ? logger,
21
23
}) : _authenticationRepository = authenticationRepository,
22
24
_userAppSettingsRepository = userAppSettingsRepository,
23
25
_appConfigRepository = appConfigRepository,
26
+ _logger = logger ?? Logger ('AppBloc' ),
24
27
super (
25
28
AppState (environment: environment),
26
29
) {
@@ -36,6 +39,7 @@ class AppBloc extends Bloc<AppEvent, AppState> {
36
39
final HtAuthRepository _authenticationRepository;
37
40
final HtDataRepository <UserAppSettings > _userAppSettingsRepository;
38
41
final HtDataRepository <RemoteConfig > _appConfigRepository;
42
+ final Logger _logger;
39
43
late final StreamSubscription <User ?> _userSubscription;
40
44
41
45
/// Handles user changes and loads initial settings once user is available.
@@ -46,10 +50,15 @@ class AppBloc extends Bloc<AppEvent, AppState> {
46
50
final user = event.user;
47
51
final AppStatus status;
48
52
49
- if (user != null &&
50
- (user.dashboardRole == DashboardUserRole .admin ||
51
- user.dashboardRole == DashboardUserRole .publisher)) {
52
- status = AppStatus .authenticated;
53
+ if (user != null ) {
54
+ if (user.dashboardRole == DashboardUserRole .admin ||
55
+ user.dashboardRole == DashboardUserRole .publisher) {
56
+ status = AppStatus .authenticated;
57
+ } else if (user.appRole == AppUserRole .guestUser) {
58
+ status = AppStatus .anonymous;
59
+ } else {
60
+ status = AppStatus .unauthenticated;
61
+ }
53
62
} else {
54
63
status = AppStatus .unauthenticated;
55
64
}
@@ -66,17 +75,20 @@ class AppBloc extends Bloc<AppEvent, AppState> {
66
75
emit (state.copyWith (userAppSettings: userAppSettings));
67
76
} on NotFoundException {
68
77
// If settings not found, create default ones
69
- const defaultSettings = UserAppSettings (
70
- id: 'default' ,
71
- displaySettings: DisplaySettings (
78
+ _logger.info (
79
+ 'User app settings not found for user ${user .id }. Creating default.' ,
80
+ );
81
+ final defaultSettings = UserAppSettings (
82
+ id: user.id, // Use actual user ID for default settings
83
+ displaySettings: const DisplaySettings (
72
84
baseTheme: AppBaseTheme .system,
73
85
accentTheme: AppAccentTheme .defaultBlue,
74
86
fontFamily: 'SystemDefault' ,
75
87
textScaleFactor: AppTextScaleFactor .medium,
76
88
fontWeight: AppFontWeight .regular,
77
89
),
78
90
language: 'en' ,
79
- feedPreferences: FeedDisplayPreferences (
91
+ feedPreferences: const FeedDisplayPreferences (
80
92
headlineDensity: HeadlineDensity .standard,
81
93
headlineImageStyle: HeadlineImageStyle .largeThumbnail,
82
94
showSourceInHeadlineFeed: true ,
@@ -85,17 +97,25 @@ class AppBloc extends Bloc<AppEvent, AppState> {
85
97
);
86
98
await _userAppSettingsRepository.create (item: defaultSettings);
87
99
emit (state.copyWith (userAppSettings: defaultSettings));
88
- } on HtHttpException catch (e) {
100
+ } on HtHttpException catch (e, s ) {
89
101
// Handle HTTP exceptions during settings load
90
- print ('Error loading user app settings: ${e .message }' );
102
+ _logger.severe (
103
+ 'Error loading user app settings for user ${user .id }: ${e .message }' ,
104
+ e,
105
+ s,
106
+ );
91
107
emit (state.copyWith (clearUserAppSettings: true ));
92
- } catch (e) {
108
+ } catch (e, s ) {
93
109
// Handle any other unexpected errors
94
- print ('Unexpected error loading user app settings: $e ' );
110
+ _logger.severe (
111
+ 'Unexpected error loading user app settings for user ${user .id }: $e ' ,
112
+ e,
113
+ s,
114
+ );
95
115
emit (state.copyWith (clearUserAppSettings: true ));
96
116
}
97
117
} else {
98
- // If user is unauthenticated, clear app settings
118
+ // If user is unauthenticated or anonymous , clear app settings
99
119
emit (state.copyWith (clearUserAppSettings: true ));
100
120
}
101
121
}
0 commit comments