Skip to content

Commit b3d1b14

Browse files
committed
feat: Buat business logic fitur setting user
Sekalian dengan unit test-nya.
1 parent 8eca32f commit b3d1b14

File tree

8 files changed

+471
-1
lines changed

8 files changed

+471
-1
lines changed

lib/feature/presentation/bloc/setting/setting_bloc.dart

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,16 @@ import 'dart:async';
33
import 'package:bloc/bloc.dart';
44
import 'package:dipantau_desktop_client/core/usecase/usecase.dart';
55
import 'package:dipantau_desktop_client/core/util/helper.dart';
6+
import 'package:dipantau_desktop_client/feature/data/model/all_user_setting/all_user_setting_response.dart';
67
import 'package:dipantau_desktop_client/feature/data/model/kv_setting/kv_setting_body.dart';
78
import 'package:dipantau_desktop_client/feature/data/model/kv_setting/kv_setting_response.dart';
9+
import 'package:dipantau_desktop_client/feature/data/model/user_setting/user_setting_body.dart';
10+
import 'package:dipantau_desktop_client/feature/data/model/user_setting/user_setting_response.dart';
11+
import 'package:dipantau_desktop_client/feature/domain/usecase/get_all_user_setting/get_all_user_setting.dart';
812
import 'package:dipantau_desktop_client/feature/domain/usecase/get_kv_setting/get_kv_setting.dart';
13+
import 'package:dipantau_desktop_client/feature/domain/usecase/get_user_setting/get_user_setting.dart';
914
import 'package:dipantau_desktop_client/feature/domain/usecase/set_kv_setting/set_kv_setting.dart';
15+
import 'package:dipantau_desktop_client/feature/domain/usecase/update_user_setting/update_user_setting.dart';
1016

1117
part 'setting_event.dart';
1218

@@ -16,15 +22,27 @@ class SettingBloc extends Bloc<SettingEvent, SettingState> {
1622
final Helper helper;
1723
final GetKvSetting getKvSetting;
1824
final SetKvSetting setKvSetting;
25+
final GetUserSetting getUserSetting;
26+
final GetAllUserSetting getAllUserSetting;
27+
final UpdateUserSetting updateUserSetting;
1928

2029
SettingBloc({
2130
required this.helper,
2231
required this.getKvSetting,
2332
required this.setKvSetting,
33+
required this.getUserSetting,
34+
required this.getAllUserSetting,
35+
required this.updateUserSetting,
2436
}) : super(InitialSettingState()) {
2537
on<LoadKvSettingEvent>(_onLoadKvSettingEvent);
2638

2739
on<UpdateKvSettingEvent>(_onUpdateKvSettingEvent);
40+
41+
on<LoadUserSettingEvent>(_onLoadUserSettingEvent);
42+
43+
on<LoadAllUserSettingEvent>(_onLoadAllUserSettingEvent);
44+
45+
on<UpdateUserSettingEvent>(_onUpdateUserSettingEvent);
2846
}
2947

3048
FutureOr<void> _onLoadKvSettingEvent(
@@ -57,4 +75,44 @@ class SettingBloc extends Bloc<SettingEvent, SettingState> {
5775
final errorMessage = helper.getErrorMessageFromFailure(failure);
5876
emit(FailureSnackBarSettingState(errorMessage: errorMessage));
5977
}
78+
79+
FutureOr<void> _onLoadUserSettingEvent(LoadUserSettingEvent event, Emitter<SettingState> emit) async {
80+
emit(LoadingCenterSettingState());
81+
final (:response, :failure) = await getUserSetting(NoParams());
82+
if (response != null) {
83+
emit(SuccessLoadUserSettingState(response: response));
84+
return;
85+
}
86+
87+
final errorMessage = helper.getErrorMessageFromFailure(failure);
88+
emit(FailureSettingState(errorMessage: errorMessage));
89+
}
90+
91+
FutureOr<void> _onLoadAllUserSettingEvent(LoadAllUserSettingEvent event, Emitter<SettingState> emit) async {
92+
emit(LoadingCenterSettingState());
93+
final (:response, :failure) = await getAllUserSetting(NoParams());
94+
if (response != null) {
95+
emit(SuccessLoadAllUserSettingState(response: response));
96+
return;
97+
}
98+
99+
final errorMessage = helper.getErrorMessageFromFailure(failure);
100+
emit(FailureSettingState(errorMessage: errorMessage));
101+
}
102+
103+
FutureOr<void> _onUpdateUserSettingEvent(UpdateUserSettingEvent event, Emitter<SettingState> emit) async {
104+
emit(LoadingButtonSettingState());
105+
final (:response, :failure) = await updateUserSetting(
106+
ParamsUpdateUserSetting(
107+
body: event.body,
108+
),
109+
);
110+
if (response != null) {
111+
emit(SuccessUpdateUserSettingState());
112+
return;
113+
}
114+
115+
final errorMessage = helper.getErrorMessageFromFailure(failure);
116+
emit(FailureSnackBarSettingState(errorMessage: errorMessage));
117+
}
60118
}

lib/feature/presentation/bloc/setting/setting_event.dart

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,21 @@ class UpdateKvSettingEvent extends SettingEvent {
1313
String toString() {
1414
return 'UpdateKvSettingEvent{body: $body}';
1515
}
16-
}
16+
}
17+
18+
class LoadUserSettingEvent extends SettingEvent {}
19+
20+
class LoadAllUserSettingEvent extends SettingEvent {}
21+
22+
class UpdateUserSettingEvent extends SettingEvent {
23+
final UserSettingBody body;
24+
25+
UpdateUserSettingEvent({
26+
required this.body,
27+
});
28+
29+
@override
30+
String toString() {
31+
return 'UpdateUserSettingEvent{body: $body}';
32+
}
33+
}

lib/feature/presentation/bloc/setting/setting_state.dart

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,31 @@ class SuccessLoadKvSettingState extends SettingState {
4242
}
4343

4444
class SuccessUpdateKvSettingState extends SettingState {}
45+
46+
class SuccessLoadUserSettingState extends SettingState {
47+
final UserSettingResponse response;
48+
49+
SuccessLoadUserSettingState({
50+
required this.response,
51+
});
52+
53+
@override
54+
String toString() {
55+
return 'SuccessLoadUserSettingState{response: $response}';
56+
}
57+
}
58+
59+
class SuccessLoadAllUserSettingState extends SettingState {
60+
final AllUserSettingResponse response;
61+
62+
SuccessLoadAllUserSettingState({
63+
required this.response,
64+
});
65+
66+
@override
67+
String toString() {
68+
return 'SuccessLoadAllUserSettingState{response: $response}';
69+
}
70+
}
71+
72+
class SuccessUpdateUserSettingState extends SettingState {}

lib/injection_container.dart

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,19 +29,22 @@ import 'package:dipantau_desktop_client/feature/domain/usecase/create_track/crea
2929
import 'package:dipantau_desktop_client/feature/domain/usecase/delete_track_user/delete_track_user.dart';
3030
import 'package:dipantau_desktop_client/feature/domain/usecase/forgot_password/forgot_password.dart';
3131
import 'package:dipantau_desktop_client/feature/domain/usecase/get_all_member/get_all_member.dart';
32+
import 'package:dipantau_desktop_client/feature/domain/usecase/get_all_user_setting/get_all_user_setting.dart';
3233
import 'package:dipantau_desktop_client/feature/domain/usecase/get_kv_setting/get_kv_setting.dart';
3334
import 'package:dipantau_desktop_client/feature/domain/usecase/get_profile/get_profile.dart';
3435
import 'package:dipantau_desktop_client/feature/domain/usecase/get_project/get_project.dart';
3536
import 'package:dipantau_desktop_client/feature/domain/usecase/get_project_task_by_user_id/get_project_task_by_user_id.dart';
3637
import 'package:dipantau_desktop_client/feature/domain/usecase/get_track_user/get_track_user.dart';
3738
import 'package:dipantau_desktop_client/feature/domain/usecase/get_track_user_lite/get_track_user_lite.dart';
39+
import 'package:dipantau_desktop_client/feature/domain/usecase/get_user_setting/get_user_setting.dart';
3840
import 'package:dipantau_desktop_client/feature/domain/usecase/login/login.dart';
3941
import 'package:dipantau_desktop_client/feature/domain/usecase/refresh_token/refresh_token.dart';
4042
import 'package:dipantau_desktop_client/feature/domain/usecase/reset_password/reset_password.dart';
4143
import 'package:dipantau_desktop_client/feature/domain/usecase/send_app_version/send_app_version.dart';
4244
import 'package:dipantau_desktop_client/feature/domain/usecase/set_kv_setting/set_kv_setting.dart';
4345
import 'package:dipantau_desktop_client/feature/domain/usecase/sign_up/sign_up.dart';
4446
import 'package:dipantau_desktop_client/feature/domain/usecase/update_user/update_user.dart';
47+
import 'package:dipantau_desktop_client/feature/domain/usecase/update_user_setting/update_user_setting.dart';
4548
import 'package:dipantau_desktop_client/feature/domain/usecase/verify_forgot_password/verify_forgot_password.dart';
4649
import 'package:dipantau_desktop_client/feature/presentation/bloc/appearance/appearance_bloc.dart';
4750
import 'package:dipantau_desktop_client/feature/presentation/bloc/cron_tracking/cron_tracking_bloc.dart';
@@ -121,6 +124,9 @@ void init() {
121124
helper: sl(),
122125
getKvSetting: sl(),
123126
setKvSetting: sl(),
127+
getUserSetting: sl(),
128+
getAllUserSetting: sl(),
129+
updateUserSetting: sl(),
124130
),
125131
);
126132
sl.registerFactory(
@@ -186,6 +192,9 @@ void init() {
186192
sl.registerLazySingleton(() => ResetPassword(repository: sl()));
187193
sl.registerLazySingleton(() => CreateManualTrack(repository: sl()));
188194
sl.registerLazySingleton(() => GetProjectTaskByUserId(repository: sl()));
195+
sl.registerLazySingleton(() => GetAllUserSetting(repository: sl()));
196+
sl.registerLazySingleton(() => GetUserSetting(repository: sl()));
197+
sl.registerLazySingleton(() => UpdateUserSetting(repository: sl()));
189198

190199
// repository
191200
sl.registerLazySingleton<AuthRepository>(

0 commit comments

Comments
 (0)