Skip to content

Commit

Permalink
Feat: [User] 유저 관련 비즈니스 레이어 구축
Browse files Browse the repository at this point in the history
  • Loading branch information
Yellowtoast committed Dec 17, 2023
1 parent 88e1c84 commit b09de6c
Show file tree
Hide file tree
Showing 27 changed files with 717 additions and 1,070 deletions.
40 changes: 9 additions & 31 deletions lib/api/user_api.dart
Original file line number Diff line number Diff line change
@@ -1,35 +1,13 @@
import 'package:pets_next_door_flutter/features/sign_up/domain/profile_form.dart';
import 'package:dio/dio.dart';
import 'package:pets_next_door_flutter/features/user/data/models/user_data_model.dart';
import 'package:retrofit/retrofit.dart';

/// Uri builder class for the UserAPI
class UserAPI {
UserAPI(this._apiBaseUrl);
final String _apiBaseUrl;
part 'user_api.g.dart';

static const String _apiPath = '/user/';
@RestApi()
abstract class UserAPI {
factory UserAPI(Dio dio, {String baseUrl}) = _UserAPI;

Uri register(ProfileForm registrationInfo) =>
_buildUri(endpoint: 'register', parametersBuilder: () => {});

Uri _buildUri({
required String endpoint,
required Map<String, dynamic> Function() parametersBuilder,
}) {
return Uri(
scheme: 'https',
host: _apiBaseUrl,
path: '$_apiPath$endpoint',
queryParameters: parametersBuilder(),
);
}

// Map<String, dynamic> registerationQueryParameters(
// RegistrationInfo registerationInfo,
// ) =>
// {
// 'email': registerationInfo.userInfo.email,
// 'fbProviderType': registerationInfo.userInfo.providerType.name,
// 'fbUid': registerationInfo.firebaseUid,
// 'fullname': registerationInfo.fullname,
// 'nickname': registerationInfo.nickname,
// };
@GET("/users/me")
Future<UserDataModel> getUserData();
}
77 changes: 77 additions & 0 deletions lib/api/user_api.g.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

33 changes: 33 additions & 0 deletions lib/app/di/modules/user_di.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import 'package:get_it/get_it.dart';
import 'package:pets_next_door_flutter/app/di/feature_di_interface.dart';
import 'package:pets_next_door_flutter/features/user/data/remote/user_remote_data_source_impl.dart';
import 'package:pets_next_door_flutter/features/user/repositories/user_repository_impl.dart';
import 'package:pets_next_door_flutter/features/user/user.dart';

final class UserDependencyInjection extends FeatureDependencyInjection {
@override
void dataSources() {
GetIt.I.registerLazySingleton<UserRemoteDataSource>(
UserRemoteDataSourceImpl.new,
);
}

@override
void repositories() {
GetIt.I.registerLazySingleton<UserRepository>(
() => UserRepositoryImpl(
userRemoteDataSource,
),
);
}

@override
void useCases() {
GetIt.I
..registerFactory<GetUserDataUseCase>(
() => GetUserDataUseCase(
userRepository,
),
);
}
}
42 changes: 0 additions & 42 deletions lib/features/auth/domain/providers/app_user_auth_provider.dart

This file was deleted.

33 changes: 0 additions & 33 deletions lib/features/auth/domain/providers/app_user_data_provider.dart

This file was deleted.

25 changes: 0 additions & 25 deletions lib/features/auth/domain/providers/app_user_data_provider.g.dart

This file was deleted.

23 changes: 23 additions & 0 deletions lib/features/user/data/models/user_data_model.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
// ignore_for_file: invalid_annotation_target

import 'package:freezed_annotation/freezed_annotation.dart';

part 'user_data_model.freezed.dart';
part 'user_data_model.g.dart';

/// api 통신을 통해 가져오는 유저 데이터 모델
@freezed
class UserDataModel with _$UserDataModel {
const factory UserDataModel({
required String id,
required String email,
@JsonKey(name: 'fbProviderType') required String firebaseProviderType,
@JsonKey(name: 'fbUid') required String firebaseUid,
required String fullname,
required String nickname,
String? profileImageUrl,
}) = _UserDataModel;

factory UserDataModel.fromJson(Map<String, dynamic> json) =>
_$UserDataModelFromJson(json);
}
Loading

0 comments on commit b09de6c

Please sign in to comment.