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
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ enum MyPageRouter {
case getUploadedCourseInfo
case getActivityRecordInfo
case getGoalRewardInfo
case updateUserNickname(nickname: String)
}

extension MyPageRouter: TargetType {
Expand All @@ -27,7 +28,7 @@ extension MyPageRouter: TargetType {

var path: String {
switch self {
case .getMyPageInfo:
case .getMyPageInfo, .updateUserNickname:
return "/user"
case .getUploadedCourseInfo:
return "/public-course/user"
Expand All @@ -42,19 +43,23 @@ extension MyPageRouter: TargetType {
switch self {
case .getMyPageInfo, .getUploadedCourseInfo, .getActivityRecordInfo, .getGoalRewardInfo:
return .get
case .updateUserNickname:
return .patch
}
}

var task: Moya.Task {
switch self {
case .getMyPageInfo, .getUploadedCourseInfo, .getActivityRecordInfo, .getGoalRewardInfo:
return .requestPlain
case .updateUserNickname(let nickname):
return .requestParameters(parameters: ["nickname": nickname], encoding: JSONEncoding.default)
}
}

var headers: [String: String]? {
switch self {
case .getMyPageInfo, .getUploadedCourseInfo, .getActivityRecordInfo, .getGoalRewardInfo:
case .getMyPageInfo, .getUploadedCourseInfo, .getActivityRecordInfo, .getGoalRewardInfo, .updateUserNickname:
return ["Content-Type": "application/json",
"machineId": "1"]
}
Expand Down
7 changes: 7 additions & 0 deletions Runnect-iOS/Runnect-iOS/Presentation/MyPage/VC/MyPageVC.swift
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,7 @@ extension MyPageVC {

private func pushToNicknameEditorVC() {
let nicknameEditorVC = NicknameEditorVC()
nicknameEditorVC.delegate = self
nicknameEditorVC.modalPresentationStyle = .overFullScreen
self.present(nicknameEditorVC, animated: false)
}
Expand Down Expand Up @@ -330,6 +331,12 @@ extension MyPageVC {
}
}

extension MyPageVC: NicknameEditorVCDelegate {
func nicknameEditDidSuccess() {
getMyPageInfo()
}
}

// MARK: - Network

extension MyPageVC {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,25 @@
//

import UIKit

import SnapKit
import Then
import Moya

protocol NicknameEditorVCDelegate: AnyObject {
func nicknameEditDidSuccess()
}

final class NicknameEditorVC: UIViewController {

// MARK: - Properties

private var nicknameEditorProvider = MoyaProvider<MyPageRouter>(
plugins: [NetworkLoggerPlugin(verbose: true)]
)

weak var delegate: NicknameEditorVCDelegate?

// MARK: - UI Components

private let editorContentView = UIView().then {
Expand Down Expand Up @@ -54,11 +68,11 @@ final class NicknameEditorVC: UIViewController {
// MARK: - Method

extension NicknameEditorVC {

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
super.touchesBegan(touches, with: event)
if let touch = touches.first, touch.view == self.view {
dismiss(animated: false)
didNicknameReturn()
}
}

Expand All @@ -81,6 +95,11 @@ extension NicknameEditorVC {
@objc private func popToPreviousVC() {
self.navigationController?.popViewController(animated: true)
}

@objc private func didNicknameReturn() {
guard let nickname = nickNameTextField.text else { return }
self.updateUserNickname(nickname: nickname)
}
}

extension NicknameEditorVC {
Expand Down Expand Up @@ -126,8 +145,35 @@ extension NicknameEditorVC {
extension NicknameEditorVC: UITextFieldDelegate {
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
if textField == self.nickNameTextField {
self.dismiss(animated: false)
didNicknameReturn()
}
return true
}
}

// MARK: - Network

extension NicknameEditorVC {
func updateUserNickname(nickname: String) {
LoadingIndicator.showLoading()
nicknameEditorProvider.request(.updateUserNickname(nickname: nickname)) { [weak self] response in
LoadingIndicator.hideLoading()
guard let self = self else { return }
switch response {
case .success(let result):
let status = result.statusCode
if 200..<300 ~= status {
self.delegate?.nicknameEditDidSuccess()
self.dismiss(animated: false)
}
if status >= 400 {
print("400 error")
self.showNetworkFailureToast()
}
case .failure(let error):
print(error.localizedDescription)
self.showNetworkFailureToast()
}
}
}
}