From a6228a75afa7ae28408d64e8ecad90ba2c1150f0 Mon Sep 17 00:00:00 2001 From: HELLOHIDI Date: Tue, 26 Nov 2024 23:55:02 +0900 Subject: [PATCH] =?UTF-8?q?[Feat/#122]=20myUseCase=20=EB=A6=AC=ED=8E=99?= =?UTF-8?q?=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Domain/Sources/Entity/User/User.swift | 4 +- .../Domain/Sources/UseCase/My/MyUseCase.swift | 48 +++++++++++++++++++ .../Sources/ViewModels/MyPageViewModel.swift | 1 + 3 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 HMH_Tuist_iOS/Projects/Domain/Sources/UseCase/My/MyUseCase.swift diff --git a/HMH_Tuist_iOS/Projects/Domain/Sources/Entity/User/User.swift b/HMH_Tuist_iOS/Projects/Domain/Sources/Entity/User/User.swift index ecc92ebd..da3f343d 100644 --- a/HMH_Tuist_iOS/Projects/Domain/Sources/Entity/User/User.swift +++ b/HMH_Tuist_iOS/Projects/Domain/Sources/Entity/User/User.swift @@ -9,8 +9,8 @@ import Foundation public struct User: Equatable { - let name: String - let point: Int + public let name: String + public let point: Int public init(name: String, point: Int) { self.name = name diff --git a/HMH_Tuist_iOS/Projects/Domain/Sources/UseCase/My/MyUseCase.swift b/HMH_Tuist_iOS/Projects/Domain/Sources/UseCase/My/MyUseCase.swift new file mode 100644 index 00000000..747cb8e7 --- /dev/null +++ b/HMH_Tuist_iOS/Projects/Domain/Sources/UseCase/My/MyUseCase.swift @@ -0,0 +1,48 @@ +// +// MyUseCase.swift +// Domain +// +// Created by 류희재 on 11/26/24. +// Copyright © 2024 HMH-iOS. All rights reserved. +// + +import Foundation +import Combine +import Core + +public protocol MyPageUseCaseType { + func getUserDate() -> AnyPublisher + func logout() + func revokeUser() +} + +final class MyPageUseCase: MyPageUseCaseType { + private let userRepository: UserRepositoryType + private var cancelBag = CancelBag() + + init(userRepository: UserRepositoryType) { + self.userRepository = userRepository + } + + func getUserDate() -> AnyPublisher { + userRepository.getUserData() + .map { $0 } + .eraseToAnyPublisher() + } + + func logout() { + userRepository.logout() + .sink { _ in + } receiveValue: { _ in + UserManager.shared.clearLogout() + }.store(in: cancelBag) + } + + func revokeUser() { + userRepository.deleteAccount() + .sink { _ in + } receiveValue: { _ in + UserManager.shared.revokeData() + }.store(in: cancelBag) + } +} diff --git a/HMH_Tuist_iOS/Projects/Features/MyPageFeature/Sources/ViewModels/MyPageViewModel.swift b/HMH_Tuist_iOS/Projects/Features/MyPageFeature/Sources/ViewModels/MyPageViewModel.swift index 2e650b96..71bbd9cd 100644 --- a/HMH_Tuist_iOS/Projects/Features/MyPageFeature/Sources/ViewModels/MyPageViewModel.swift +++ b/HMH_Tuist_iOS/Projects/Features/MyPageFeature/Sources/ViewModels/MyPageViewModel.swift @@ -10,6 +10,7 @@ import Combine import Core import DSKit +import Domain class MyPageViewModel: ObservableObject {