Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
3 changes: 2 additions & 1 deletion ByeBoo-iOS/ByeBoo-iOS/Data/DataDependencyAssembler.swift
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,8 @@ struct DataDependencyAssembler: DependencyAssembler {
DIContainer.shared.register(type: CommonQuestInterface.self) { _ in
return DefaultCommonQuestRepository(
network: networkService,
keychainService: keychainService
keychainService: keychainService,
userDefaultService: userDefaultService
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,22 +25,23 @@ struct CommonQuestAnswerResponseDTO: Decodable {
}

extension CommonQuestAnswersResponseDTO {
func toEntity() -> CommonQuestAnswersEntity {
func toEntity(userName: String) -> CommonQuestAnswersEntity {
.init(
question: question,
questID: questId,
answerCount: answerCount,
isAnswered: isAnswered,
hasNext: hasNext,
nextCursor: nil,
answers: answers.map { $0.toEntity() }
answers: answers.map { $0.toEntity(userName: userName) }
)
}
}

extension CommonQuestAnswerResponseDTO {
func toEntity() -> CommonQuestAnswerEntity {
func toEntity(userName: String) -> CommonQuestAnswerEntity {
.init(
isMyAnswer: userName == writer ? true : false,
answerID: answerId,
writer: writer,
profileIcon: profileIcon,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,16 @@ struct DefaultCommonQuestRepository: CommonQuestInterface {

private let network: NetworkService
private let keychainService: KeychainService
private let userDefaultsService: UserDefaultService

init(
network: NetworkService,
keychainService: KeychainService
keychainService: KeychainService,
userDefaultService: UserDefaultService
) {
self.network = network
self.keychainService = keychainService
self.userDefaultsService = userDefaultService
}

func saveCommonQuest(questID: Int, answer: String) async throws {
Expand All @@ -35,14 +38,15 @@ struct DefaultCommonQuestRepository: CommonQuestInterface {
date: String,
cursor: Int?
) async throws -> CommonQuestAnswersEntity {
let userName: String = userDefaultsService.load(key: .userName) ?? ""
let commonQuest = try await network.request(
CommonQuestAPI.fetchCommonQuest(
date: date,
cursor: cursor
),
decodingType: CommonQuestAnswersResponseDTO.self
)
return commonQuest.toEntity()
return commonQuest.toEntity(userName: userName)
}

func updateCommonQuest(answerID: Int, answer: String) async throws {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ struct CommonQuestAnswersEntity {
}

struct CommonQuestAnswerEntity {
let isMyAnswer: Bool
let answerID: Int
let writer: String
let profileIcon: String
Expand All @@ -32,6 +33,7 @@ extension CommonQuestAnswersEntity {

static let allAnswers: [CommonQuestAnswerEntity] = (1...30).map {
CommonQuestAnswerEntity(
isMyAnswer: false,
answerID: $0,
writer: "유저\($0)",
profileIcon: profileIcons[$0 % 4],
Expand All @@ -57,6 +59,7 @@ extension CommonQuestAnswersEntity {
extension CommonQuestAnswerEntity {
static func stub() -> Self {
.init(
isMyAnswer: false,
answerID: 1,
writer: "장원영",
profileIcon: "SO_SO",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ enum ConfirmModalType {
case withdraw
case block
case delete
case saveQuest

var title: String {
switch self {
Expand All @@ -23,6 +24,8 @@ enum ConfirmModalType {
"차단을 해제하시겠어요?"
case .delete:
"정말 삭제하시겠어요?"
case .saveQuest:
"작성을 완료하시겠어요?"
}
}

Expand All @@ -34,6 +37,8 @@ enum ConfirmModalType {
"탈퇴 시 모든 데이터가 삭제됩니다."
case .delete:
"삭제한 답변은 다시 복구할 수 없습니다."
case .saveQuest:
"완료하면 다른 사용자에게 공개돼요."
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ enum NavigationHeaderType {
enum NavigationBarType: Equatable {
case back(header: NavigationHeaderType = .clear)
case backAndMenu(header: NavigationHeaderType = .clear)
case backAndEdit(header: NavigationHeaderType = .clear)
case title(String, header: NavigationHeaderType = .clear)
case close(header: NavigationHeaderType = .clear)
case titleAndClose(String, header: NavigationHeaderType = .clear)
Expand Down Expand Up @@ -74,6 +75,7 @@ struct ByeBooNavigationBar {
switch barType {
case .back(let header),
.backAndMenu(let header),
.backAndEdit(let header),
.close(let header),
.none(let header),
.title(_, let header),
Expand Down Expand Up @@ -143,6 +145,20 @@ struct ByeBooNavigationBar {
navigationItem: navigationItem,
action: secondAction
)
case .backAndEdit:
let backButtonItem = makeBarButtonItem(
image: .left.withTintColor(.white),
target: topViewController,
action: action
)
navigationItem.leftBarButtonItem = backButtonItem

let editButtonItem = makeBarButtonItem(
image: .edit,
target: topViewController,
action: secondAction
)
navigationItem.rightBarButtonItem = editButtonItem

case .title(let string, _):
navigationItem.title = string
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ final class TextBoxView: BaseView {
backgroundColor = .white5

titleLabel.applyByeBooFont(
style: .body6R14,
color: .grayscale300,
style: .body3R16,
color: .grayscale100,
numberOfLines: 0
)
titleLabel.lineBreakMode = .byCharWrapping
Expand Down Expand Up @@ -75,9 +75,9 @@ final class TextBoxView: BaseView {
extension TextBoxView {
func updateText(_ text: String) {
titleLabel.applyByeBooFont(
style: .body6R14,
style: .body3R16,
text: text,
color: .grayscale300,
color: .grayscale100,
numberOfLines: 0
)
}
Expand All @@ -86,7 +86,7 @@ extension TextBoxView {
titleLabel.applyByeBooFont(
style: .body6R14,
text: text,
color: .grayscale300,
color: .grayscale100,
numberOfLines: 0
)
self.emotionChip?.updateEmotion(ByeBooEmotion.toEmotion(text: emotionState))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import UIKit
final class BlockedUserListView: BaseView {

private(set) var userTableView = UITableView()
private let emptyLabel = UILabel()

override func setStyle() {
self.do {
Expand All @@ -19,10 +20,18 @@ final class BlockedUserListView: BaseView {
$0.backgroundColor = .grayscale900
$0.separatorStyle = .none
}
emptyLabel.do {
$0.applyByeBooFont(
style: .body6R14,
text: "차단하신 사용자가 없어요",
color: .grayscale400
)
$0.isHidden = true
}
}

override func setUI() {
addSubview(userTableView)
addSubviews(userTableView, emptyLabel)
}

override func setLayout() {
Expand All @@ -31,5 +40,15 @@ final class BlockedUserListView: BaseView {
$0.horizontalEdges.equalToSuperview()
$0.bottom.equalToSuperview().inset(24.adjustedH)
}
emptyLabel.snp.makeConstraints {
$0.top.equalToSuperview().inset(334.5.adjustedH)
$0.centerX.equalToSuperview()
}
}
}

extension BlockedUserListView {
func updateEmptyLabel() {
self.emptyLabel.isHidden = false
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,9 @@ extension BlockedkUserListViewController {
switch result {
case .success(let blockedList):
ByeBooLogger.debug("차단 사용자 조회 성공 \(blockedList)")
if blockedList.isEmpty {
self.rootView.updateEmptyLabel()
}
self.rootView.userTableView.reloadData()
case .failure(let error):
ByeBooLogger.error(error)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -364,7 +364,7 @@ extension MyPageViewController {
self.viewModel.action(.withdrawActionButtonDidTap)

Mixpanel.mainInstance().track(event: MyPageEvents.Name.withdrawConfirmClick)
case .block, .delete:
case .block, .delete, .saveQuest:
break
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ final class ImagePickerContainer: BaseView {
plusIcon.do {
$0.image = .plus.withRenderingMode(.alwaysTemplate)
$0.contentMode = .scaleAspectFit
$0.tintColor = .primary300
$0.tintColor = .grayscale500
}
}

Expand Down
Loading
Loading