Skip to content

Commit

Permalink
Merge pull request #80 from Nexters/refactor/code-cleansing(#75)
Browse files Browse the repository at this point in the history
코드 정리
  • Loading branch information
enebin authored Sep 3, 2023
2 parents 17f08de + ee8d21f commit da0f2d4
Show file tree
Hide file tree
Showing 63 changed files with 1,840 additions and 918 deletions.
Binary file modified Encrypted/Secrets/GoogleService-Info.plist.encrypted
Binary file not shown.
Binary file modified Encrypted/XCConfig/App/DEV.xcconfig.encrypted
Binary file not shown.
2 changes: 1 addition & 1 deletion Encrypted/XCConfig/App/PROD.xcconfig.encrypted
Original file line number Diff line number Diff line change
@@ -1 +1 @@
�d��BJؠ���LH�8�v2c�����mH �"?^F1Xn�o^� |�т�2x>�SFgtmz \���Ԍ����uQ&uD�0�p>y�����|/�N&UcŞ�;RV��$�H�K����X6W]�nu.����i}�D�ş?��~Jod >�w���R
�d��BJؠ���LH�8�v2c�����mH �"?^F1Xn�o^� |�т�2x>�SFgtmz \���Ԍ����uQ&=O��pV��fa�zuc)�!����wW�0+SXl>7{�mD@���Z�]��增�o�_{�Z���Ex�6 l}�5`������W����.?��h��o>Hˈ4��: SѢ����C^7L�
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
//
// DismissKeyboardOnTap.swift
// Core
//
// Created by Young Bin on 2023/08/24.
// Copyright © 2023 team.humanwave. All rights reserved.
//

import SwiftUI

public struct DismissKeyboardOnTap: ViewModifier {
public init() {}

public func body(content: Content) -> some View {
content
.gesture(
TapGesture().onEnded {
UIApplication.shared.sendAction(
#selector(UIResponder.resignFirstResponder),
to: nil,
from: nil,
for: nil
)
}
)
}
}
41 changes: 41 additions & 0 deletions Projects/Domain/Sources/Client/CoreLocalStorage.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
//
// LocalStorageClient.swift
// Domain
//
// Created by Young Bin on 2023/08/10.
// Copyright © 2023 team.humanwave. All rights reserved.
//

import ComposableArchitecture
import Foundation

struct CoreLocalStorage {
private let storage: UserDefaults

init(storage: UserDefaults = .standard) {
self.storage = storage
}

/// 알아서 파싱해서 쓰시길.. 더 빡세게 잡으려면 우리가 귀찮아짐
public func get(_ key: some StorageKeyType) -> Any? {
storage.object(forKey: key.name)
}

public func set(_ value: Any?, forKey key: some StorageKeyType) {
storage.set(value, forKey: key.name)
}
}

extension CoreLocalStorage: DependencyKey {
static var liveValue = CoreLocalStorage()
static func testValue(storage: UserDefaults) -> CoreLocalStorage {
CoreLocalStorage(storage: storage)
}
}

extension DependencyValues {
var localStorage: CoreLocalStorage {
get { self[CoreLocalStorage.self] }
set { self[CoreLocalStorage.self] = newValue }
}
}
31 changes: 16 additions & 15 deletions Projects/Domain/Sources/Client/KeymeTestsClient.swift
Original file line number Diff line number Diff line change
Expand Up @@ -25,29 +25,30 @@ extension DependencyValues {
}

extension KeymeTestsClient: DependencyKey {
public static var liveValue = KeymeTestsClient(
public static var liveValue = getClient(with: KeymeAPIManager.liveValue)
public static var testValue = getClient(with: KeymeAPIManager.testValue)
}

private func getClient(with network: KeymeAPIManager) -> KeymeTestsClient {
KeymeTestsClient(
fetchOnboardingTests: {
let api = KeymeTestsAPI.onboarding
// var response = try await KeymeTestsAPIManager.shared.requestWithSampleData(api, object: KeymeTestsDTO.self)
var response = try await KeymeTestsAPIManager.shared.request(api, object: KeymeTestsDTO.self)
let api = KeymeAPI.test(.onboarding)
let response = try await network.request(api, object: KeymeTestsDTO.self)

return response.toIconModel()
return response.toKeymeTestsModel()
}, fetchDailyTests: {
let api = KeymeTestsAPI.daily
// var response = try await KeymeTestsAPIManager.shared.requestWithSampleData(api, object: KeymeTestsDTO.self)
var response = try await KeymeTestsAPIManager.shared.request(api, object: KeymeTestsDTO.self)
let api = KeymeAPI.test(.daily)
let response = try await network.request(api, object: KeymeTestsDTO.self)

return response.toIconModel()
return response.toKeymeTestsModel()
}, fetchTestResult: { testResultId in
let api = KeymeTestsAPI.result(testResultId)
// var response = try await KeymeTestsAPIManager.shared.requestWithSampleData(api, object: TestResultDTO.self)
var response = try await KeymeTestsAPIManager.shared.request(api, object: TestResultDTO.self)
let api = KeymeAPI.test(.result(testResultId))
let response = try await network.request(api, object: TestResultDTO.self)

return response.data.results.map { $0.toModel() }
}, postTestResult: { resultCode in
let api = KeymeTestsAPI.register(resultCode)
// var response = try await KeymeTestsAPIManager.shared.requestWithSampleData(api, object: BaseDTO<String>.self)
var response = try await KeymeTestsAPIManager.shared.request(api, object: BaseDTO<String>.self)
let api = KeymeAPI.test(.register(resultCode))
let response = try await network.request(api, object: BaseDTO<String>.self)

return response.message
}
Expand Down
69 changes: 0 additions & 69 deletions Projects/Domain/Sources/Client/LocalStorage.swift

This file was deleted.

35 changes: 0 additions & 35 deletions Projects/Domain/Sources/Client/TestClient.swift

This file was deleted.

9 changes: 9 additions & 0 deletions Projects/Domain/Sources/Model/CirclePack/CharacterScore.swift
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
// Copyright © 2023 team.humanwave. All rights reserved.
//

import Network
import Foundation

public struct CharacterScore: Identifiable, Equatable {
Expand All @@ -18,3 +19,11 @@ public struct CharacterScore: Identifiable, Equatable {
self.date = date
}
}

public extension QuestionResultScoresDTO {
func toCharacterScores() -> [CharacterScore] {
return self.data.results.map { resultItem in
CharacterScore(score: resultItem.score, date: resultItem.createdAt)
}
}
}
9 changes: 3 additions & 6 deletions Projects/Domain/Sources/Model/KeymeTestsModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ import Network
import Kingfisher

public struct KeymeTestsModel: Equatable {
public let nickname: String
public let testId: Int
public let icons: [IconModel]
}
Expand All @@ -26,14 +25,12 @@ public struct IconModel: Equatable, Hashable {
}

public extension KeymeTestsDTO {
func toIconModel() -> KeymeTestsModel {
let nickname = data.owner.nickname
func toKeymeTestsModel() -> KeymeTestsModel {
let icons = data.questions.map {
IconModel(imageURL: $0.category.iconUrl,
color: Color.hex($0.category.color))
}
return KeymeTestsModel(nickname: nickname ?? "키미",
testId: data.testId,
icons: icons)

return KeymeTestsModel(testId: data.testId, icons: icons)
}
}
2 changes: 1 addition & 1 deletion Projects/Domain/Sources/Model/KeymeWebModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import Foundation

public struct KeymeWebViewModel: Codable, Equatable {
public let matchRate: Int
public let matchRate: Float
public let resultCode: String
public let testResultId: Int
}
21 changes: 0 additions & 21 deletions Projects/Domain/Sources/Model/TestModel.swift

This file was deleted.

87 changes: 87 additions & 0 deletions Projects/Domain/Sources/User/KeymeUserStorage.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
//
// KeymeUserStorage.swift
// Domain
//
// Created by 이영빈 on 2023/08/21.
// Copyright © 2023 team.humanwave. All rights reserved.
//

import ComposableArchitecture
import Foundation
protocol StorageKeyType {
var name: String { get }
}

public final class KeymeUserStorage {
private let localStorage: CoreLocalStorage

init(localStorage: CoreLocalStorage) {
self.localStorage = localStorage
}

private func get(_ key: UserStorageKey) -> Any? {
localStorage.get(key)
}

private func set(_ value: Any?, forKey key: UserStorageKey) {
localStorage.set(value, forKey: key)
}

private enum UserStorageKey: String, StorageKeyType {
case accessToken
case userId
case friendCode
case nickname
case profileImageURL
case profileThumbnailURL

public var name: String {
return "UserStorageKey_\(self.rawValue)"
}
}
}

public extension KeymeUserStorage {
var accessToken: String? {
get { get(.accessToken) as? String }
set { set(newValue, forKey: .accessToken) }
}

var userId: Int? {
get { get(.userId) as? Int }
set { set(newValue, forKey: .userId) }
}

var friendCode: String? {
get { get(.friendCode) as? String }
set { set(newValue, forKey: .friendCode) }
}

var nickname: String? {
get { get(.nickname) as? String }
set { set(newValue, forKey: .nickname) }
}

var profileImageURL: URL? {
get { get(.profileImageURL) as? URL }
set { set(newValue?.absoluteString, forKey: .profileImageURL) }
}

var profileThumbnailURL: URL? {
get { get(.profileThumbnailURL) as? URL }
set { set(newValue?.absoluteString, forKey: .profileThumbnailURL) }
}
}

extension KeymeUserStorage: DependencyKey {
public static var liveValue = KeymeUserStorage(localStorage: CoreLocalStorage.liveValue)
public static var testValue = KeymeUserStorage(
localStorage: CoreLocalStorage.testValue(storage: .init(suiteName: "TestStorage")!))
}

extension DependencyValues {
public var userStorage: KeymeUserStorage {
get { self[KeymeUserStorage.self] }
set { self[KeymeUserStorage.self] = newValue }
}
}
Loading

0 comments on commit da0f2d4

Please sign in to comment.