Skip to content

Commit a78d2cc

Browse files
committed
feat(settings): add language change functionality
- Added SettingsLanguageChanged event - Updated SettingsBloc to handle event - Persists language setting
1 parent 398649c commit a78d2cc

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed

lib/settings/bloc/settings_bloc.dart

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,10 @@ class SettingsBloc extends Bloc<SettingsEvent, SettingsState> {
4848
_onFeedTileTypeChanged,
4949
transformer: sequential(),
5050
);
51+
on<SettingsLanguageChanged>(
52+
_onLanguageChanged,
53+
transformer: sequential(),
54+
);
5155
// SettingsNotificationsEnabledChanged event and handler removed.
5256
}
5357

@@ -195,4 +199,17 @@ class SettingsBloc extends Bloc<SettingsEvent, SettingsState> {
195199
emit(state.copyWith(userAppSettings: updatedSettings, clearError: true));
196200
await _persistSettings(updatedSettings, emit);
197201
}
202+
203+
Future<void> _onLanguageChanged(
204+
SettingsLanguageChanged event,
205+
Emitter<SettingsState> emit,
206+
) async {
207+
if (state.userAppSettings == null) return;
208+
209+
final updatedSettings = state.userAppSettings!.copyWith(
210+
language: event.languageCode,
211+
);
212+
emit(state.copyWith(userAppSettings: updatedSettings, clearError: true));
213+
await _persistSettings(updatedSettings, emit);
214+
}
198215
}

lib/settings/bloc/settings_event.dart

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,20 @@ class SettingsFeedTileTypeChanged extends SettingsEvent {
119119
List<Object?> get props => [tileType];
120120
}
121121

122+
/// {@template settings_language_changed}
123+
/// Event added when the user changes the application language.
124+
/// {@endtemplate}
125+
class SettingsLanguageChanged extends SettingsEvent {
126+
/// {@macro settings_language_changed}
127+
const SettingsLanguageChanged(this.languageCode);
128+
129+
/// The newly selected language code (e.g., 'en', 'ar').
130+
final AppLanguage languageCode; // Use AppLanguage typedef from ht_shared
131+
132+
@override
133+
List<Object?> get props => [languageCode];
134+
}
135+
122136
// --- Notification Settings Events ---
123137
// SettingsNotificationsEnabledChanged event removed as UserAppSettings
124138
// does not currently support a general notifications enabled flag.

0 commit comments

Comments
 (0)