Skip to content

Commit 9e9a60e

Browse files
authored
Merge pull request #324 from DevKor-github/319-default-preparation-step-및-spare-time-수정-기능
319 default preparation step 및 spare time 수정 기능
2 parents 11b334f + 139d579 commit 9e9a60e

18 files changed

Lines changed: 315 additions & 92 deletions

assets/appleid_button.png

9.57 KB
Loading

lib/core/constants/endpoint.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@ class Endpoint {
5656

5757
static get updateDefaultPreparation => _defaultPreparation;
5858

59+
static const _updateSpareTime = '/users/me/spare-time';
60+
static get updateSpareTime => _updateSpareTime;
61+
5962
static const _fcmToken = '/firebase-token'; // 사용자 fcm 토큰 등록
6063
static get fcmTokenRegister => _fcmToken;
6164
}

lib/data/data_sources/preparation_remote_data_source.dart

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import 'package:on_time_front/domain/entities/preparation_entity.dart';
88
import 'package:on_time_front/data/models/create_preparation_schedule_request_model.dart';
99
import 'package:on_time_front/data/models/create_defualt_preparation_request_model.dart';
1010
import 'package:on_time_front/data/models/get_preparation_step_response_model.dart';
11+
import 'package:on_time_front/data/models/update_spare_time_request_model.dart';
1112

1213
abstract interface class PreparationRemoteDataSource {
1314
Future<void> createDefaultPreparation(
@@ -24,6 +25,8 @@ abstract interface class PreparationRemoteDataSource {
2425
Future<PreparationEntity> getPreparationByScheduleId(String scheduleId);
2526

2627
Future<PreparationEntity> getDefualtPreparation();
28+
29+
Future<void> updateSpareTime(Duration newSpareTime);
2730
}
2831

2932
@Injectable(as: PreparationRemoteDataSource)
@@ -121,7 +124,7 @@ class PreparationRemoteDataSourceImpl implements PreparationRemoteDataSource {
121124
PreparationUserModifyRequestModelListExtension.fromEntityList(
122125
preparationEntity.preparationStepList);
123126

124-
final result = await dio.post(
127+
final result = await dio.put(
125128
Endpoint.updateDefaultPreparation,
126129
data: updateModel.map((model) => model.toJson()).toList(),
127130
);
@@ -154,4 +157,20 @@ class PreparationRemoteDataSourceImpl implements PreparationRemoteDataSource {
154157
rethrow;
155158
}
156159
}
160+
161+
@override
162+
Future<void> updateSpareTime(Duration newSpareTime) async {
163+
try {
164+
final body = UpdateSpareTimeRequestModel.fromDuration(newSpareTime);
165+
final result = await dio.put(
166+
Endpoint.updateSpareTime,
167+
data: body.toJson(),
168+
);
169+
if (result.statusCode != 200) {
170+
throw Exception('Error updating spare time');
171+
}
172+
} catch (e) {
173+
rethrow;
174+
}
175+
}
157176
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class UpdateSpareTimeRequestModel {
2+
final int newSpareTime;
3+
4+
UpdateSpareTimeRequestModel({required this.newSpareTime});
5+
6+
Map<String, dynamic> toJson() => {
7+
'newSpareTime': newSpareTime,
8+
};
9+
10+
factory UpdateSpareTimeRequestModel.fromDuration(Duration duration) {
11+
return UpdateSpareTimeRequestModel(newSpareTime: duration.inMinutes);
12+
}
13+
}

lib/data/repositories/preparation_repository_impl.dart

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,4 +91,12 @@ class PreparationRepositoryImpl implements PreparationRepository {
9191
rethrow;
9292
}
9393
}
94+
95+
Future<void> updateSpareTime(Duration newSpareTime) async {
96+
try {
97+
await preparationRemoteDataSource.updateSpareTime(newSpareTime);
98+
} catch (e) {
99+
rethrow;
100+
}
101+
}
94102
}

lib/data/repositories/user_repository_impl.dart

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,16 @@ class UserRepositoryImpl implements UserRepository {
168168
}
169169
}
170170

171+
@override
172+
Future<void> disconnectGoogleSignIn() async {
173+
try {
174+
await _googleSignIn.disconnect();
175+
debugPrint('Google Sign-In disconnected');
176+
} catch (e) {
177+
debugPrint('Google Sign-In disconnect failed: $e');
178+
}
179+
}
180+
171181
@override
172182
Stream<UserEntity> get userStream =>
173183
_userStreamController.asBroadcastStream();

lib/domain/repositories/preparation_repository.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,6 @@ abstract interface class PreparationRepository {
1717

1818
Future<void> updatePreparationByScheduleId(
1919
PreparationEntity preparationEntity, String scheduleId);
20+
21+
Future<void> updateSpareTime(Duration newSpareTime);
2022
}

lib/domain/repositories/user_repository.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,6 @@ abstract interface class UserRepository {
3333
Future<void> postFeedback(String message);
3434

3535
Future<String?> getUserSocialType();
36+
37+
Future<void> disconnectGoogleSignIn();
3638
}

lib/domain/use-cases/delete_user_use_case.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@ class DeleteUserUseCase {
1515

1616
final socialTypeString = await _userRepository.getUserSocialType();
1717
final socialType = socialTypeFromString(socialTypeString);
18+
1819
if (socialType == SocialType.google) {
20+
await _userRepository.disconnectGoogleSignIn();
1921
await _userRepository.deleteGoogleUser();
2022
} else if (socialType == SocialType.apple) {
2123
await _userRepository.deleteAppleUser();
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import 'package:injectable/injectable.dart';
2+
import 'package:on_time_front/domain/repositories/preparation_repository.dart';
3+
4+
@Injectable()
5+
class UpdateSpareTimeUseCase {
6+
final PreparationRepository _preparationRepository;
7+
8+
UpdateSpareTimeUseCase(this._preparationRepository);
9+
10+
Future<void> call(Duration newSpareTime) async {
11+
await _preparationRepository.updateSpareTime(newSpareTime);
12+
}
13+
}

0 commit comments

Comments
 (0)