Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
d0c4e47
fix/#273: 상세페이지 필터 연결중..
pinocchio22 Dec 4, 2025
0e35188
Merge branch 'refactor/#273-Test-Feedback' of github.com:Team-Maple/M…
pinocchio22 Dec 5, 2025
a27afa0
fix/#273: 상세페이지 필터 수정 / 탭바 이슈 수정
pinocchio22 Dec 7, 2025
deb6fd1
fix/#273: 북마크 개선(데이터 리로드 방식 변경)
pinocchio22 Dec 7, 2025
ca29c8e
fix/#273: 상세 페이지의 Int타입 데이터에 numberFormmat 적용
pinocchio22 Dec 7, 2025
823d085
fix/#273: 퀘스트 상세 조건 페이지 이동 추가
pinocchio22 Dec 7, 2025
2684112
fix/#273: 마이페이지 비회원 분기처리
pinocchio22 Dec 7, 2025
5368e20
fix/#273: 도감 리스트 갱신 문제 해결 / 몬스터 필터 수정
pinocchio22 Dec 7, 2025
d65aacc
fix/#273: 리스트 - 상세 북마크 동기화 / 북마크 관련 코드 개선 필요
pinocchio22 Dec 8, 2025
161ec3f
fix/#273: 로그인 여부 / 데이터 유무 여부에 따라 UI 변경
pinocchio22 Dec 9, 2025
8123542
fix/#273: 알림권한 설정 위치 수정 / 북마크 비로그인/로그인 처리
pinocchio22 Dec 9, 2025
4c3d1dc
fix/#273: AddFolderCell 터치영역 수정
pinocchio22 Dec 9, 2025
68617c7
feat/#273: 북마크 하러가기 버튼 선택시 도감 탭 인덱스 변경
pinocchio22 Dec 9, 2025
9f89d9f
feat/#273: 컬렉션에 북마크 추가 후 메인으로 이동
pinocchio22 Dec 9, 2025
610cb53
style/#273: Apply SwiftLint autocorrect
github-actions[bot] Dec 9, 2025
2f90c38
fix/#273: 비로그인 북마크 UI 탭 수정
pinocchio22 Dec 10, 2025
bab77a8
fix/#273: 탭 클릭 이동 방향 수정
pinocchio22 Dec 10, 2025
856c4d8
fix/#273: 닉네임 설정 오류 수정
pinocchio22 Dec 10, 2025
10f1449
fix/#273: 닉네임 textField clearButtonMode 수정
pinocchio22 Dec 10, 2025
2a96d14
fix/#273: 리스트 편집 아이콘 수정
pinocchio22 Dec 10, 2025
32e34a9
fix/#273: 레벨 필터 초기값 수정(0 -> 1)
pinocchio22 Dec 10, 2025
a3e051d
fix/#273: 최근검색어탭 노출 조건 수정
pinocchio22 Dec 10, 2025
6a16ec4
fix/#273: 북마크 온보딩 페이지 노출
pinocchio22 Dec 10, 2025
815eb39
feat/#273: 디테일 온보딩 구현(이미지 수정 필요)
pinocchio22 Dec 10, 2025
573f4bb
feat/#273: 디테일 온보딩 조건 추가
pinocchio22 Dec 11, 2025
9423225
feat/#273: 약관 페이지 생성
pinocchio22 Dec 11, 2025
d703859
feat/#273: 오픈소스 라이선스 표기
pinocchio22 Dec 11, 2025
a0e69a2
fix/#273: 도감 상세 온보딩 수정
pinocchio22 Dec 11, 2025
055eaf3
fix/#273: DetailStackInfoView.reset() 메소드 추가
pinocchio22 Dec 11, 2025
3c9846b
fix/#273: 마이페이지 이미지 radius 수정
pinocchio22 Dec 11, 2025
5cb157e
Merge branch 'refactor/#273-Test-Feedback' of github.com:Team-Maple/M…
pinocchio22 Dec 11, 2025
0d25568
style/#273: Apply SwiftLint autocorrect
github-actions[bot] Dec 11, 2025
7981c6c
fix/#273: 필터 정리
pinocchio22 Dec 11, 2025
e857c09
feat/#273: authInterceptor 추가
pinocchio22 Dec 11, 2025
b9e9bde
Merge branch 'refactor/#273-Test-Feedback' of github.com:Team-Maple/M…
pinocchio22 Dec 11, 2025
cf1cbe4
fix/#273: reissue 관련 구조 수정
pinocchio22 Dec 12, 2025
5a92278
fix/#273: 알람 페이징 임시 중단
pinocchio22 Dec 12, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ public struct DictionaryDetailItemResponseDTO: Decodable {
public let nameKr: String?
public let nameEn: String?
public let descriptionText: String?
public let imgUrl: String?
public let itemImageUrl: String?
public let npcPrice: Int?
public let itemType: String?
public let categoryHierachy: CategoryHierachy?
Expand All @@ -21,7 +21,7 @@ public struct DictionaryDetailItemResponseDTO: Decodable {
nameKr: nameKr,
nameEn: nameEn,
descriptionText: descriptionText,
imgUrl: imgUrl,
imgUrl: itemImageUrl,
npcPrice: npcPrice,
itemType: itemType,
categoryHierachy: categoryHierachy,
Expand Down
4 changes: 2 additions & 2 deletions MLS/Data/Data/Network/Endpoints/BookmarkEndPoint.swift
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import DomainInterface
public enum BookmarkEndPoint {
static let base = "https://api.mapleland.kro.kr"

public static func setBookmark(body: Encodable) -> EndPoint {
public static func setBookmark(body: Encodable) -> ResponsableEndPoint<[BookmarkDTO]> {
.init(
baseURL: base,
path: "/api/v1/bookmarks",
Expand All @@ -12,7 +12,7 @@ public enum BookmarkEndPoint {
)
}

public static func deleteBookmark(bookmarkId: Int) -> EndPoint {
public static func deleteBookmark(bookmarkId: Int) -> ResponsableEndPoint<[BookmarkDTO]> {
.init(
baseURL: base,
path: "/api/v1/bookmarks/\(bookmarkId)",
Expand Down
16 changes: 8 additions & 8 deletions MLS/Data/Data/Network/Endpoints/DictionaryDetailEndPoint.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ public enum DictionaryDetailEndPoint {
}

// 몬스터 디테일 드롭아이템
public static func fetchMonsterDetailDropItem(id: Int, sort: [String]?) -> ResponsableEndPoint<[DictionaryDetailMonsterDropItemResponseDTO]> {
return .init(baseURL: base, path: "/api/v1/monsters/\(id)/items", method: .GET, query: ["sort": sort?.joined(separator: ",")])
public static func fetchMonsterDetailDropItem(id: Int, query: Encodable) -> ResponsableEndPoint<[DictionaryDetailMonsterDropItemResponseDTO]> {
return .init(baseURL: base, path: "/api/v1/monsters/\(id)/items", method: .GET, query: query)
}

// 몬스터 디테일 출현맵
Expand All @@ -26,8 +26,8 @@ public enum DictionaryDetailEndPoint {
return .init(baseURL: base, path: "/api/v1/npcs/\(id)", method: .GET)
}
// Npc 디테일 퀘스트
public static func fetchNpcDetailQuest(id: Int, sort: [String]?) -> ResponsableEndPoint<[DictionaryDetailNpcQuestResponseDTO]> {
return .init(baseURL: base, path: "/api/v1/npcs/\(id)/quests", method: .GET, query: ["sort": sort?.joined(separator: ",")])
public static func fetchNpcDetailQuest(id: Int, query: Encodable) -> ResponsableEndPoint<[DictionaryDetailNpcQuestResponseDTO]> {
return .init(baseURL: base, path: "/api/v1/npcs/\(id)/quests", method: .GET, query: query)
}
// NPC 디테일 맵
public static func fetchNpcDetailMap(id: Int) -> ResponsableEndPoint<[DictionaryDetailMonsterMapResponseDTO]> {
Expand All @@ -38,8 +38,8 @@ public enum DictionaryDetailEndPoint {
return .init(baseURL: base, path: "/api/v1/items/\(id)", method: .GET)
}
// Item 디테일 드롭몬스터 상세정보
public static func fetchItemDetailDropMonster(id: Int, sort: [String]?) -> ResponsableEndPoint<[DictionaryDetailItemDropMonsterResponseDTO]> {
return .init(baseURL: base, path: "/api/v1/items/\(id)/monsters", method: .GET, query: ["sort": sort?.joined(separator: ",")])
public static func fetchItemDetailDropMonster(id: Int, query: Encodable) -> ResponsableEndPoint<[DictionaryDetailItemDropMonsterResponseDTO]> {
return .init(baseURL: base, path: "/api/v1/items/\(id)/monsters", method: .GET, query: query)
}

// Quest 디테일 상세정보
Expand All @@ -58,8 +58,8 @@ public enum DictionaryDetailEndPoint {
}

// Map 디테일 출현 몬스터
public static func fetchMapDetailSpawnMonster(id: Int) -> ResponsableEndPoint<[DictionaryDetailMapSpawnMonsterResponseDTO]> {
return .init(baseURL: base, path: "/api/v1/maps/\(id)/monsters", method: .GET)
public static func fetchMapDetailSpawnMonster(id: Int, query: Encodable) -> ResponsableEndPoint<[DictionaryDetailMapSpawnMonsterResponseDTO]> {
return .init(baseURL: base, path: "/api/v1/maps/\(id)/monsters", method: .GET, query: query)
}

// Map 디테일 출현 npc
Expand Down
31 changes: 21 additions & 10 deletions MLS/Data/Data/Providers/Network/NetworkProviderImpl.swift
Original file line number Diff line number Diff line change
Expand Up @@ -129,28 +129,39 @@ private extension NetworkProviderImpl {
/// - response: 상태코드를 포함한 통신 응답
/// - error: 통신간에 발생한 에러
/// - Returns: 유효성검사 결과에 따른 데이터와 에러
func checkValidation(data: Data?, response: URLResponse?, error: Error?, interceptor: Interceptor?) -> Result<Data?, NetworkError> {
if let interceptor = interceptor {
if interceptor.retry(data: data, response: response, error: error) {
return .failure(.retry)
}
}
func checkValidation(
data: Data?,
response: URLResponse?,
error: Error?,
interceptor: Interceptor?
) -> Result<Data?, NetworkError> {

// 1️⃣ 네트워크 레벨 에러 먼저 체크
if let error {
if let urlError = error as? URLError, urlError.code == .unsupportedURL {
return .failure(NetworkError.urlRequest(error))
return .failure(.urlRequest(error))
}
return .failure(NetworkError.network(error))
return .failure(.network(error))
}

// 2️⃣ HTTP 응답 객체 확인
guard let httpResponse = response as? HTTPURLResponse else {
return .failure(NetworkError.httpError)
return .failure(.httpError)
}

// 3️⃣ 상태 코드 기반 검사
guard (200 ... 299).contains(httpResponse.statusCode) else {
// ❗️여기서만 인터셉터 개입
if let interceptor = interceptor,
interceptor.retry(data: data, response: response, error: error) {
return .failure(.retry)
}

let errorMessage = data.flatMap { String(data: $0, encoding: .utf8) } ?? "Unknown"
return .failure(NetworkError.statusError(httpResponse.statusCode, errorMessage))
return .failure(.statusError(httpResponse.statusCode, errorMessage))
}

// ✅ 성공 응답
return .success(data)
}
}
10 changes: 5 additions & 5 deletions MLS/Data/Data/Repository/AlarmAPIRepositoryImpl.swift
Original file line number Diff line number Diff line change
Expand Up @@ -14,31 +14,31 @@ public class AlarmAPIRepositoryImpl: AlarmAPIRepository {
}

public func fetchPatchNotes(cursor: [Int]?, pageSize: Int) -> Observable<PagedEntity<AlarmResponse>> {
let endpoint = AlarmEndPoint.fetchPatchNotes(query: AlarmQuery(cursor: cursor, pageSize: pageSize))
let endpoint = AlarmEndPoint.fetchPatchNotes(query: AlarmQuery(cursor: cursor, pageSize: 999/*pageSize*/))
return provider.requestData(endPoint: endpoint, interceptor: tokenInterceptor)
.map { $0.toAlarmDomain() }
}

public func fetchNotices(cursor: [Int]?, pageSize: Int) -> Observable<PagedEntity<AlarmResponse>> {
let endpoint = AlarmEndPoint.fetchNotices(query: AlarmQuery(cursor: cursor, pageSize: pageSize))
let endpoint = AlarmEndPoint.fetchNotices(query: AlarmQuery(cursor: cursor, pageSize: 999/*pageSize*/))
return provider.requestData(endPoint: endpoint, interceptor: tokenInterceptor)
.map { $0.toAlarmDomain() }
}

public func fetchOutdatedEvents(cursor: [Int]?, pageSize: Int) -> Observable<PagedEntity<AlarmResponse>> {
let endpoint = AlarmEndPoint.fetchOutdatedEvents(query: AlarmQuery(cursor: cursor, pageSize: pageSize))
let endpoint = AlarmEndPoint.fetchOutdatedEvents(query: AlarmQuery(cursor: cursor, pageSize: 999/*pageSize*/))
return provider.requestData(endPoint: endpoint, interceptor: tokenInterceptor)
.map { $0.toAlarmDomain() }
}

public func fetchOngoingEvents(cursor: [Int]?, pageSize: Int) -> Observable<PagedEntity<AlarmResponse>> {
let endpoint = AlarmEndPoint.fetchOngoingEvents(query: AlarmQuery(cursor: cursor, pageSize: pageSize))
let endpoint = AlarmEndPoint.fetchOngoingEvents(query: AlarmQuery(cursor: cursor, pageSize: 999/*pageSize*/))
return provider.requestData(endPoint: endpoint, interceptor: tokenInterceptor)
.map { $0.toAlarmDomain() }
}

public func fetchAll(cursor: [Int]?, pageSize: Int) -> Observable<PagedEntity<AllAlarmResponse>> {
let endpoint = AlarmEndPoint.fetchAll(query: AlarmQuery(cursor: cursor, pageSize: pageSize))
let endpoint = AlarmEndPoint.fetchAll(query: AlarmQuery(cursor: cursor, pageSize: 999/*pageSize*/))
return provider.requestData(endPoint: endpoint, interceptor: tokenInterceptor)
.map { $0.toAllAlarmDomain() }
}
Expand Down
12 changes: 7 additions & 5 deletions MLS/Data/Data/Repository/AuthAPIRepositoryImpl.swift
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,12 @@ import RxSwift
public class AuthAPIRepositoryImpl: AuthAPIRepository {
private let provider: NetworkProvider
private let tokenInterceptor: Interceptor
private let authInterceptor: Interceptor

public init(provider: NetworkProvider, interceptor: Interceptor) {
public init(provider: NetworkProvider, tokenInterceptor: Interceptor, authInterceptor: Interceptor) {
self.provider = provider
self.tokenInterceptor = interceptor
self.tokenInterceptor = tokenInterceptor
self.authInterceptor = authInterceptor
}

public func fetchProfile() -> Observable<MyPageResponse?> {
Expand All @@ -21,7 +23,7 @@ public class AuthAPIRepositoryImpl: AuthAPIRepository {

public func loginWithKakao(credential: Credential) -> Observable<LoginResponse> {
let endpoint = AuthEndPoint.loginWithKakao(credential: credential)
return provider.requestData(endPoint: endpoint, interceptor: nil)
return provider.requestData(endPoint: endpoint, interceptor: authInterceptor)
.map { $0.toLoginDomain() }
.catch { error in
if case NetworkError.statusError(let code, _) = error, code == 404 {
Expand All @@ -34,7 +36,7 @@ public class AuthAPIRepositoryImpl: AuthAPIRepository {

public func loginWithApple(credential: Credential) -> Observable<LoginResponse> {
let endpoint = AuthEndPoint.loginWithApple(credential: credential)
return provider.requestData(endPoint: endpoint, interceptor: nil)
return provider.requestData(endPoint: endpoint, interceptor: authInterceptor)
.map { $0.toLoginDomain() }
.catch { error in
if case NetworkError.statusError(let code, _) = error, code == 404 {
Expand Down Expand Up @@ -76,7 +78,7 @@ public class AuthAPIRepositoryImpl: AuthAPIRepository {

public func reissueToken(refreshToken: String) -> Observable<LoginResponse> {
let endPoint = AuthEndPoint.reIssueToken(refreshToken: refreshToken)
return provider.requestData(endPoint: endPoint, interceptor: tokenInterceptor).map { $0.toLoginDomain() }
return provider.requestData(endPoint: endPoint, interceptor: authInterceptor).map { $0.toLoginDomain() }
}

public func fcmToken(credential: String, fcmToken: String?) -> Completable {
Expand Down
20 changes: 12 additions & 8 deletions MLS/Data/Data/Repository/DictionaryDetailAPIRepositoryImpl.swift
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ public final class DictionaryDetailAPIRepositoryImpl: DictionaryDetailAPIReposit
return provider.requestData(endPoint: endPoint, interceptor: tokenInterceptor).map { $0.toDomain() }
}

public func fetchMonsterDetailDropItem(id: Int, sort: [String]?) -> Observable<[DictionaryDetailMonsterDropItemResponse]> {
let endPoint = DictionaryDetailEndPoint.fetchMonsterDetailDropItem(id: id, sort: sort)
public func fetchMonsterDetailDropItem(id: Int, sort: String?) -> Observable<[DictionaryDetailMonsterDropItemResponse]> {
let endPoint = DictionaryDetailEndPoint.fetchMonsterDetailDropItem(id: id, query: SortQuery(sort: sort))
return provider.requestData(endPoint: endPoint, interceptor: tokenInterceptor).map {$0.map {$0.toDomain()}}
}

Expand All @@ -33,8 +33,8 @@ public final class DictionaryDetailAPIRepositoryImpl: DictionaryDetailAPIReposit
return provider.requestData(endPoint: endPoint, interceptor: tokenInterceptor).map { $0.toDomain() }
}

public func fetchNpcDetailQuest(id: Int, sort: [String]?) -> Observable<[DictionaryDetailNpcQuestResponse]> {
let endPoint = DictionaryDetailEndPoint.fetchNpcDetailQuest(id: id, sort: sort)
public func fetchNpcDetailQuest(id: Int, sort: String?) -> Observable<[DictionaryDetailNpcQuestResponse]> {
let endPoint = DictionaryDetailEndPoint.fetchNpcDetailQuest(id: id, query: SortQuery(sort: sort))
return provider.requestData(endPoint: endPoint, interceptor: tokenInterceptor).map { $0.map {$0.toDomain()} }

}
Expand All @@ -49,8 +49,8 @@ public final class DictionaryDetailAPIRepositoryImpl: DictionaryDetailAPIReposit
return provider.requestData(endPoint: endPoint, interceptor: tokenInterceptor).map { $0.toDomain() }
}

public func fetchItemDetailDropMonster(id: Int, sort: [String]?) -> Observable<[DictionaryDetailItemDropMonsterResponse]> {
let endPoint = DictionaryDetailEndPoint.fetchItemDetailDropMonster(id: id, sort: sort)
public func fetchItemDetailDropMonster(id: Int, sort: String?) -> Observable<[DictionaryDetailItemDropMonsterResponse]> {
let endPoint = DictionaryDetailEndPoint.fetchItemDetailDropMonster(id: id, query: SortQuery(sort: sort))
return provider.requestData(endPoint: endPoint, interceptor: tokenInterceptor).map { $0.map {$0.toDomain() } }
}

Expand All @@ -69,8 +69,8 @@ public final class DictionaryDetailAPIRepositoryImpl: DictionaryDetailAPIReposit
return provider.requestData(endPoint: endPoint, interceptor: tokenInterceptor).map { $0.toDomain() }
}

public func fetchMapDetailSpawnMonster(id: Int) -> Observable<[DictionaryDetailMapSpawnMonsterResponse]> {
let endPoint = DictionaryDetailEndPoint.fetchMapDetailSpawnMonster(id: id)
public func fetchMapDetailSpawnMonster(id: Int, sort: String?) -> Observable<[DictionaryDetailMapSpawnMonsterResponse]> {
let endPoint = DictionaryDetailEndPoint.fetchMapDetailSpawnMonster(id: id, query: SortQuery(sort: sort))
return provider.requestData(endPoint: endPoint, interceptor: tokenInterceptor).map { $0.map {$0.toDomain()} }
}

Expand All @@ -79,3 +79,7 @@ public final class DictionaryDetailAPIRepositoryImpl: DictionaryDetailAPIReposit
return provider.requestData(endPoint: endPoint, interceptor: tokenInterceptor).map {$0.map {$0.toDomain()}}
}
}

struct SortQuery: Encodable {
let sort: String?
}
36 changes: 36 additions & 0 deletions MLS/Data/Data/Repository/UserDefaultsRepositoryImpl.swift
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import RxSwift
public final class UserDefaultsRepositoryImpl: UserDefaultsRepository {
private let recentSearchkey = "recentSearch"
private let platformKey = "platformKey"
private let bookmarkkey = "bookmark"
private let dictionaryDetailkey = "dictionaryDetailkey"

public init() {}

Expand Down Expand Up @@ -67,4 +69,38 @@ public final class UserDefaultsRepositoryImpl: UserDefaultsRepository {
return Disposables.create()
}
}

public func fetchBookmark() -> Observable<Bool> {
return Observable.create { observer in
let hasVisited = UserDefaults.standard.bool(forKey: self.bookmarkkey)
observer.onNext(hasVisited)
observer.onCompleted()
return Disposables.create()
}
}

public func saveBookmark() -> Completable {
return Completable.create { completable in
UserDefaults.standard.set(true, forKey: self.bookmarkkey)
completable(.completed)
return Disposables.create()
}
}

public func fetchDictionaryDetail() -> Observable<Bool> {
return Observable.create { observer in
let hasVisited = UserDefaults.standard.bool(forKey: self.dictionaryDetailkey)
observer.onNext(hasVisited)
observer.onCompleted()
return Disposables.create()
}
}

public func saveDictionaryDetail() -> Completable {
return Completable.create { completable in
UserDefaults.standard.set(true, forKey: self.dictionaryDetailkey)
completable(.completed)
return Disposables.create()
}
}
}
46 changes: 46 additions & 0 deletions MLS/Domain/Domain/Interceptor/AuthInterceptor.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import Foundation

import DomainInterface

public final class AuthInterceptor: Interceptor {
private let tokenRepository: TokenRepository
private let authRepository: () -> AuthAPIRepository

public init(tokenRepository: TokenRepository, authRepository: @escaping () -> AuthAPIRepository) {
self.tokenRepository = tokenRepository
self.authRepository = authRepository
}

public func adapt(_ request: URLRequest) -> URLRequest {
var request = request
if case .success(let token) = tokenRepository.fetchToken(type: .accessToken) {
request.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization")
}
return request
}

public func retry(data: Data?, response: URLResponse?, error: Error?) -> Bool {
guard let httpResponse = response as? HTTPURLResponse,
let url = httpResponse.url else { return false }

if url.path.contains("/auth/reissue") {
print("⚠️ reissue 요청에서는 retry 하지 않음")
return false
}

if httpResponse.statusCode == 401 {
if case .success(let refreshToken) = tokenRepository.fetchToken(type: .refreshToken) {
let repo = authRepository()
repo.reissueToken(refreshToken: refreshToken)
.subscribe(onNext: { _ in
print("✅ reissue 완료 (저장은 UseCase 쪽에서 처리)")
}, onError: { error in
print("❌ reissue 실패: \(error)")
})
.dispose()
return true
}
}
return false
}
}
1 change: 1 addition & 0 deletions MLS/Domain/Domain/Interceptor/TokenInterceptor.swift
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import RxSwift

public class TokenInterceptor: Interceptor {
private let fetchTokenUseCase: FetchTokenFromLocalUseCase

public init(fetchTokenUseCase: FetchTokenFromLocalUseCase) {
self.fetchTokenUseCase = fetchTokenUseCase
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import DomainInterface

import RxRelay
import RxSwift

public class CheckLoginUseCaseImpl: CheckLoginUseCase {
public final class CheckLoginUseCaseImpl: CheckLoginUseCase {
private let authRepository: AuthAPIRepository
private let tokenRepository: TokenRepository

Expand All @@ -14,6 +15,8 @@ public class CheckLoginUseCaseImpl: CheckLoginUseCase {
public func execute() -> Observable<Bool> {
switch tokenRepository.fetchToken(type: .refreshToken) {
case .success(let token):
guard !token.isEmpty else { return .just(false) }

return authRepository.reissueToken(refreshToken: token)
.map { [weak self] response in
guard let self else { return false }
Expand All @@ -35,8 +38,7 @@ public class CheckLoginUseCaseImpl: CheckLoginUseCase {
return .just(false)
}

case .failure(let error):
print("refreshToken 불러오기 실패:", error.localizedDescription)
case .failure:
return .just(false)
}
}
Expand Down
Loading