Skip to content

Commit

Permalink
refactor/#269 ReadyStatusServiceType PromiseServiceType으로 병합
Browse files Browse the repository at this point in the history
  • Loading branch information
youz2me committed Jul 24, 2024
1 parent a22cb59 commit 51dd0d8
Show file tree
Hide file tree
Showing 7 changed files with 142 additions and 51 deletions.
20 changes: 12 additions & 8 deletions KkuMulKum.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -111,8 +111,7 @@
DD3F9DD22C485753008E1FF7 /* UtilService.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD3F9DD12C485753008E1FF7 /* UtilService.swift */; };
DD3F9DD42C4858A3008E1FF7 /* UtilTargetType.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD3F9DD32C4858A3008E1FF7 /* UtilTargetType.swift */; };
DD3F9DD62C4988E2008E1FF7 /* RegisterMeetingsResponseModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD3F9DD52C4988E2008E1FF7 /* RegisterMeetingsResponseModel.swift */; };
DD3F9DD82C49C25D008E1FF7 /* PagePromiseServiceType.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD3F9DD72C49C25D008E1FF7 /* PagePromiseServiceType.swift */; };
DD3F9DDA2C49F34D008E1FF7 /* ReadyStatusServiceType.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD86265D2C4606A300E4F980 /* ReadyStatusServiceType.swift */; };
DD3F9DD82C49C25D008E1FF7 /* PromiseServiceType.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD3F9DD72C49C25D008E1FF7 /* PromiseServiceType.swift */; };
DD41BEFA2C41D4160095A068 /* TardyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD41BEF92C41D4160095A068 /* TardyView.swift */; };
DD41BEFC2C41D54D0095A068 /* TardyPenaltyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD41BEFB2C41D54D0095A068 /* TardyPenaltyView.swift */; };
DD41BEFF2C41DAA40095A068 /* TardyEmptyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD41BEFE2C41DAA40095A068 /* TardyEmptyView.swift */; };
Expand Down Expand Up @@ -304,7 +303,7 @@
DD3F9DD12C485753008E1FF7 /* UtilService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UtilService.swift; sourceTree = "<group>"; };
DD3F9DD32C4858A3008E1FF7 /* UtilTargetType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UtilTargetType.swift; sourceTree = "<group>"; };
DD3F9DD52C4988E2008E1FF7 /* RegisterMeetingsResponseModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RegisterMeetingsResponseModel.swift; sourceTree = "<group>"; };
DD3F9DD72C49C25D008E1FF7 /* PagePromiseServiceType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PagePromiseServiceType.swift; sourceTree = "<group>"; };
DD3F9DD72C49C25D008E1FF7 /* PromiseServiceType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PromiseServiceType.swift; sourceTree = "<group>"; };
DD41BEF92C41D4160095A068 /* TardyView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TardyView.swift; sourceTree = "<group>"; };
DD41BEFB2C41D54D0095A068 /* TardyPenaltyView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TardyPenaltyView.swift; sourceTree = "<group>"; };
DD41BEFE2C41DAA40095A068 /* TardyEmptyView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TardyEmptyView.swift; sourceTree = "<group>"; };
Expand All @@ -329,7 +328,6 @@
DD8626592C4606A300E4F980 /* SetReadyInfoView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SetReadyInfoView.swift; sourceTree = "<group>"; };
DD86265A2C4606A300E4F980 /* ReadyStatusButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReadyStatusButton.swift; sourceTree = "<group>"; };
DD86265B2C4606A300E4F980 /* ReadyStatusProgressView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReadyStatusProgressView.swift; sourceTree = "<group>"; };
DD86265D2C4606A300E4F980 /* ReadyStatusServiceType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReadyStatusServiceType.swift; sourceTree = "<group>"; };
DD86265F2C4606A300E4F980 /* ReadyStatusViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReadyStatusViewController.swift; sourceTree = "<group>"; };
DD8626602C4606A300E4F980 /* SetReadyInfoViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SetReadyInfoViewController.swift; sourceTree = "<group>"; };
DD931B6D2C3DA27F00526452 /* ParticipantCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParticipantCollectionViewCell.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -858,7 +856,7 @@
DD3F9DD92C49CF05008E1FF7 /* Service */ = {
isa = PBXGroup;
children = (
DD3F9DD72C49C25D008E1FF7 /* PagePromiseServiceType.swift */,
DD3F9DD72C49C25D008E1FF7 /* PromiseServiceType.swift */,
);
path = Service;
sourceTree = "<group>";
Expand Down Expand Up @@ -1006,6 +1004,13 @@
path = Service;
sourceTree = "<group>";
};
DD7AB15F2C513B66008308DE /* SetReadyInfo */ = {
isa = PBXGroup;
children = (
);
path = SetReadyInfo;
sourceTree = "<group>";
};
DD8626502C4606A300E4F980 /* ReadyStatus */ = {
isa = PBXGroup;
children = (
Expand Down Expand Up @@ -1044,7 +1049,6 @@
DD86265C2C4606A300E4F980 /* Service */ = {
isa = PBXGroup;
children = (
DD86265D2C4606A300E4F980 /* ReadyStatusServiceType.swift */,
A39F2B202C499CE5008DA5F5 /* SetReadyStatusInfoServiceType.swift */,
);
path = Service;
Expand Down Expand Up @@ -1113,6 +1117,7 @@
DDAF1C872C3D6E3D008A37D3 /* Promise */ = {
isa = PBXGroup;
children = (
DD7AB15F2C513B66008308DE /* SetReadyInfo */,
DD39768D2C41CA0700E2A4C4 /* PagePromise */,
DD3976912C41CAF900E2A4C4 /* PromiseInfo */,
DD8626502C4606A300E4F980 /* ReadyStatus */,
Expand Down Expand Up @@ -1696,7 +1701,6 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
DD3F9DDA2C49F34D008E1FF7 /* ReadyStatusServiceType.swift in Sources */,
DDE7D2CC2C47F073005A921F /* PlaceModel.swift in Sources */,
DEFBEBD12C46B33000437188 /* SelectCapsuleButton.swift in Sources */,
DED5DBF22C34534A006ECE7E /* BaseCollectionReusableView.swift in Sources */,
Expand Down Expand Up @@ -1766,7 +1770,7 @@
DD3F9DD02C48571A008E1FF7 /* MeetingListServiceType.swift in Sources */,
A39F2B212C499CE5008DA5F5 /* SetReadyStatusInfoServiceType.swift in Sources */,
DE6D4D132C3F14D80005584B /* MeetingMemberCell.swift in Sources */,
DD3F9DD82C49C25D008E1FF7 /* PagePromiseServiceType.swift in Sources */,
DD3F9DD82C49C25D008E1FF7 /* PromiseServiceType.swift in Sources */,
DDAF1C932C3D6E3D008A37D3 /* PagePromiseViewController.swift in Sources */,
789D73BE2C47FE0F00C7077D /* AuthInterceptor.swift in Sources */,
789D73B32C47CC6D00C7077D /* LocalNotificationManager.swift in Sources */,
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,21 +1,35 @@
//
// ReadyStatusService.swift
// PromiseServiceType.swift
// KkuMulKum
//
// Created by YOUJIM on 7/15/24.
// Created by YOUJIM on 7/19/24.
//

import Foundation

protocol ReadyStatusServiceType {
protocol PromiseServiceType {
/// 약속 정보
func fetchPromiseInfo(with promiseId: Int) async throws -> ResponseBodyDTO<PromiseInfoModel>?
/// 준비 현황
func fetchMyReadyStatus(with promiseID: Int) async throws -> ResponseBodyDTO<MyReadyStatusModel>?
func fetchPromiseParticipantList(with promiseID: Int) async throws -> ResponseBodyDTO<PromiseParticipantListModel>?
func updatePreparationStatus(with promiseID: Int) async throws -> ResponseBodyDTO<EmptyModel>?
func updateDepartureStatus(with promiseID: Int) async throws -> ResponseBodyDTO<EmptyModel>?
func updateArrivalStatus(with promiseID: Int) async throws -> ResponseBodyDTO<EmptyModel>?
/// 지각 꾸물이
func fetchTardyInfo(with promiseID: Int) async throws -> ResponseBodyDTO<TardyInfoModel>?
func updatePromiseCompletion(with promiseID: Int) async throws -> ResponseBodyDTO<EmptyModel>?
}

extension PromiseService: ReadyStatusServiceType {
extension PromiseService: PromiseServiceType {
func fetchPromiseInfo(with promiseId: Int) async throws -> ResponseBodyDTO<PromiseInfoModel>? {
return try await request(
with: .fetchPromiseInfo(
promiseID: promiseId
)
)
}

func updatePreparationStatus(with promiseID: Int) async throws -> ResponseBodyDTO<EmptyModel>? {
return try await request(
with: .updatePreparationStatus(
Expand Down Expand Up @@ -57,7 +71,102 @@ extension PromiseService: ReadyStatusServiceType {
}
}

final class MockReadyStatusService: ReadyStatusServiceType {
final class MockPromiseService: PromiseServiceType {
func fetchPromiseInfo(with promiseId: Int) async throws -> ResponseBodyDTO<PromiseInfoModel>? {
let mockData = PromiseInfoModel(
promiseID: 1,
promiseName: "냐미",
placeName: "우리집 앞",
address: "경기도 용인시 수지구 대지로 72",
roadAddress: "경기도 용인시 수지구 대지로 72",
time: "2024년 7월 24일 오후 10시 30분",
dressUpLevel: "LV 2. 냐미",
penalty: "냐미"
)

return ResponseBodyDTO<PromiseInfoModel>.init(
success: true,
data: mockData,
error: nil
)
}

func fetchTardyInfo(with promiseID: Int) -> ResponseBodyDTO<TardyInfoModel>? {
let mockData = TardyInfoModel(
penalty: "티라미수 케익 릴스",
isPastDue: true,
lateComers: [Comer(
participantId: 1,
name: "유짐이",
profileImageURL: ""
),
Comer(
participantId: 1,
name: "유짐이",
profileImageURL: ""
),
Comer(
participantId: 1,
name: "유짐이",
profileImageURL: ""
),
Comer(
participantId: 1,
name: "유짐이",
profileImageURL: ""
),
Comer(
participantId: 1,
name: "유짐이",
profileImageURL: ""
)]
)

return ResponseBodyDTO<TardyInfoModel>.init(
success: true,
data: mockData,
error: nil
)
}

func updatePromiseCompletion(with promiseID: Int) -> ResponseBodyDTO<EmptyModel>? {
let mockData = EmptyModel()

return ResponseBodyDTO<EmptyModel>.init(
success: true,
data: mockData,
error: nil
)
}

func getPromiseTardyInfo(with promiseID: Int) -> ResponseBodyDTO<TardyInfoModel>? {
let mockData = TardyInfoModel(
penalty: "티라미수 케익 릴스",
isPastDue: true,
lateComers: [Comer(
participantId: 1,
name: "유짐이",
profileImageURL: ""
)]
)

return ResponseBodyDTO<TardyInfoModel>.init(
success: true,
data: mockData,
error: nil
)
}

func updatePromiseCompletion(with promiseID: Int) async throws -> ResponseBodyDTO<EmptyModel>? {
let mockData = EmptyModel()

return ResponseBodyDTO(
success: true,
data: mockData,
error: nil
)
}

func updatePreparationStatus(with promiseID: Int) async throws -> ResponseBodyDTO<EmptyModel>? {
let mockData = EmptyModel()

Expand Down Expand Up @@ -113,21 +222,21 @@ final class MockReadyStatusService: ReadyStatusServiceType {
participantId: 1,
memberId: 3,
name: "안꾸물이",
state: "도착",
state: "도착",
profileImageURL: nil
),
Participant(
participantId: 2,
memberId: 4,
name: "꾸우우우웅물이",
state: "도착",
state: "도착",
profileImageURL: nil
),
Participant(
participantId: 3,
memberId: 5,
name: "꾸물이",
state: "이동중",
state: "이동중",
profileImageURL: nil
)
]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ class PagePromiseViewController: BaseViewController {
)

readyStatusViewModel = ReadyStatusViewModel(
readyStatusService: PromiseService(),
promiseService: PromiseService(),
promiseID: promiseViewModel.promiseID
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ class PagePromiseViewModel {

// MARK: Property

private let service: PagePromiseServiceType
private let service: PromiseServiceType

let promiseID: Int
let currentPage = ObservablePattern<Int>(0)
Expand All @@ -23,7 +23,7 @@ class PagePromiseViewModel {

// MARK: Initialize

init(promiseID: Int, service: PagePromiseServiceType) {
init(promiseID: Int, service: PromiseServiceType) {
self.service = service
self.promiseID = promiseID
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@ class PromiseInfoViewModel {
let promiseInfo = ObservablePattern<PromiseInfoModel?>(nil)

/// 굳이 서비스 하나 더 만들 필요 없을 것 같아서 같은 API 사용하는 ReadyStatusServiceType 가져옴
private let promiseInfoService: ReadyStatusServiceType
private let promiseInfoService: PromiseServiceType

init(promiseID: Int, promiseInfoService: ReadyStatusServiceType) {
init(promiseID: Int, promiseInfoService: PromiseServiceType) {
self.promiseID = promiseID
self.promiseInfoService = promiseInfoService
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ class ReadyStatusViewModel {
let participantInfos = ObservablePattern<[Participant]>([])

// 서비스 객체
private let readyStatusService: ReadyStatusServiceType
private let promiseService: PromiseServiceType

// 현재 시간 받아오기 위한 dateFormatter 구헌
private let dateFormatter = DateFormatter().then {
Expand All @@ -53,8 +53,8 @@ class ReadyStatusViewModel {
}

// 초기화
init(readyStatusService: ReadyStatusServiceType, promiseID: Int) {
self.readyStatusService = readyStatusService
init(promiseService: PromiseServiceType, promiseID: Int) {
self.promiseService = promiseService
self.promiseID = promiseID
}

Expand Down Expand Up @@ -153,7 +153,7 @@ extension ReadyStatusViewModel {
func fetchMyReadyStatus() {
Task {
do {
let responseBody = try await readyStatusService.fetchMyReadyStatus(with: promiseID)
let responseBody = try await promiseService.fetchMyReadyStatus(with: promiseID)

guard let success = responseBody?.success,
success == true
Expand All @@ -170,7 +170,7 @@ extension ReadyStatusViewModel {
func fetchPromiseParticipantList() {
Task {
do {
let responseBody = try await readyStatusService.fetchPromiseParticipantList(
let responseBody = try await promiseService.fetchPromiseParticipantList(
with: promiseID
)

Expand All @@ -189,7 +189,7 @@ extension ReadyStatusViewModel {
func updatePreparationStatus() {
Task {
do {
let responseBody = try await readyStatusService.updatePreparationStatus(
let responseBody = try await promiseService.updatePreparationStatus(
with: promiseID
)

Expand All @@ -211,7 +211,7 @@ extension ReadyStatusViewModel {
func updateDepartureStatus() {
Task {
do {
let responseBody = try await readyStatusService.updateDepartureStatus(
let responseBody = try await promiseService.updateDepartureStatus(
with: promiseID
)

Expand All @@ -233,7 +233,7 @@ extension ReadyStatusViewModel {
func updateArrivalStatus() {
Task {
do {
let responseBody = try await readyStatusService.updateArrivalStatus(
let responseBody = try await promiseService.updateArrivalStatus(
with: promiseID
)

Expand Down

0 comments on commit 51dd0d8

Please sign in to comment.