Skip to content

Fix settings page for demo mode #40

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jun 10, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions lib/bootstrap.dart
Original file line number Diff line number Diff line change
Expand Up @@ -62,35 +62,35 @@ Future<void> bootstrap(app_config.AppConfig appConfig) async {
HtDataClient<AppConfig> appConfigClient;

if (appConfig.environment == app_config.AppEnvironment.demo) {
headlinesClient = HtDataInMemoryClient<Headline>(
headlinesClient = HtDataInMemory<Headline>(
toJson: (i) => i.toJson(),
getId: (i) => i.id,
initialData: headlinesFixturesData.map(Headline.fromJson).toList(),
);
categoriesClient = HtDataInMemoryClient<Category>(
categoriesClient = HtDataInMemory<Category>(
toJson: (i) => i.toJson(),
getId: (i) => i.id,
initialData: categoriesFixturesData.map(Category.fromJson).toList(),
);
countriesClient = HtDataInMemoryClient<Country>(
countriesClient = HtDataInMemory<Country>(
toJson: (i) => i.toJson(),
getId: (i) => i.id,
initialData: countriesFixturesData.map(Country.fromJson).toList(),
);
sourcesClient = HtDataInMemoryClient<Source>(
sourcesClient = HtDataInMemory<Source>(
toJson: (i) => i.toJson(),
getId: (i) => i.id,
initialData: sourcesFixturesData.map(Source.fromJson).toList(),
);
userContentPreferencesClient = HtDataInMemoryClient<UserContentPreferences>(
userContentPreferencesClient = HtDataInMemory<UserContentPreferences>(
toJson: (i) => i.toJson(),
getId: (i) => i.id,
);
userAppSettingsClient = HtDataInMemoryClient<UserAppSettings>(
userAppSettingsClient = HtDataInMemory<UserAppSettings>(
toJson: (i) => i.toJson(),
getId: (i) => i.id,
);
appConfigClient = HtDataInMemoryClient<AppConfig>(
appConfigClient = HtDataInMemory<AppConfig>(
toJson: (i) => i.toJson(),
getId: (i) => i.id,
initialData: [AppConfig.fromJson(appConfigFixtureData)],
Expand Down
16 changes: 12 additions & 4 deletions lib/settings/bloc/settings_bloc.dart
Original file line number Diff line number Diff line change
Expand Up @@ -60,12 +60,20 @@ class SettingsBloc extends Bloc<SettingsEvent, SettingsState> {
) async {
try {
await _userAppSettingsRepository.update(
id: settingsToSave.id, // UserID is the ID of UserAppSettings
id: settingsToSave.id,
item: settingsToSave,
userId: settingsToSave.id, // Pass userId for repository method
userId: settingsToSave.id,
);
} on NotFoundException {
// If settings not found, create them
// needed speciically for teh demo mode
// that uses the ht data in memory impl
// as for the api impl, teh backend handle
// this use case.
await _userAppSettingsRepository.create(
item: settingsToSave,
userId: settingsToSave.id,
);
// State already updated optimistically, no need to emit success here
// unless we want a specific "save success" status.
} on HtHttpException catch (e) {
emit(state.copyWith(status: SettingsStatus.failure, error: e));
} catch (e) {
Expand Down
2 changes: 1 addition & 1 deletion pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -368,7 +368,7 @@ packages:
description:
path: "."
ref: HEAD
resolved-ref: "82b6f31b8c23b740e9c473d6f40831b4f2cbd802"
resolved-ref: "3353842a1f1be1ab2563f2ba236daf49dd19a85e"
url: "https://github.com/headlines-toolkit/ht-data-inmemory.git"
source: git
version: "0.0.0"
Expand Down
Loading