Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Network] #248 - 피드상세뷰 내 드롭다운 UI 구현 및 API 연결 #295

Open
wants to merge 12 commits into
base: main
Choose a base branch
from

Conversation

Guryss
Copy link
Contributor

@Guryss Guryss commented Oct 15, 2024

⭐️Issue

close #248

🌟Motivation

  • 피드상새뷰에서 사용되는 드롭다운 UI 구현했습니다.
  • isMyFeed 여부에 따른 드롭다운 내 API 연결 및 기능 구현했습니다.

🌟Key Changes

FeedDetailViewModelInput, Output 정의

Input은 드롭버튼 상하 버튼에 대한 Input 두개만 정의해두었습니다.
Output은 isMyFeedtrue일 때 Output 2개, isMyFeedfalse일 때 Output 2개, 총 4개로 정의해두었습니다.
Output 이벤트 방출에 대한 분기처리를 해당 ViewModel에 정의해두었습니다.

let pushToFeedEditViewController = input.dropdownTopButtonTapped
.withLatestFrom(isMyFeed)
.flatMapLatest { isMyFeed -> Observable<Void> in
return isMyFeed ? Observable.just(()) : Observable.empty()
}
let showDeleteAlertView = input.dropdownBottomButtonTapped
.withLatestFrom(isMyFeed)
.flatMapLatest { isMyFeed -> Observable<Void> in
return isMyFeed ? Observable.just(()) : Observable.empty()
}
let showSpoilerAlertView = input.dropdownTopButtonTapped
.withLatestFrom(isMyFeed)
.flatMapLatest { isMyFeed -> Observable<Void> in
return !isMyFeed ? Observable.just(()) : Observable.empty()
}
let showImproperAlertView = input.dropdownBottomButtonTapped
.withLatestFrom(isMyFeed)
.flatMapLatest { isMyFeed -> Observable<Void> in
return !isMyFeed ? Observable.just(()) : Observable.empty()
}

ViewController bindViewModel 함수 내 API 호출

항상 ViewModel에서 API 호출을 했었는데 이번엔 알럿이 뜬 후에 API 호출을 해야해서 뷰컨에서 호출해줬습니다.
더 좋은 방법이 있다면 많이 알려주세용 !

output.showDeleteAlertView
.flatMapLatest { _ -> Observable<AlertButtonType> in
return self.presentToAlertViewController(iconImage: .icAlertWarningCircle,
titleText: StringLiterals.FeedDetail.deleteTitle,
contentText: StringLiterals.FeedDetail.deleteContent,
leftTitle: StringLiterals.FeedDetail.cancel,
rightTitle: StringLiterals.FeedDetail.delete,
rightBackgroundColor: UIColor.wssSecondary100.cgColor)
}
.subscribe(with: self, onNext: { owner, buttonType in
owner.rootView.dropdownView.isHidden = true
if buttonType == .right {
owner.viewModel.deleteFeed(owner.viewModel.feedId)
.subscribe()
.disposed(by: owner.disposeBag)
owner.popToLastViewController()
}
})
.disposed(by: disposeBag)


🌟Simulation

  • 나의 피드일 때

효원이가 만들어준 pushFeedEdilViewController 함수에서 논의할 부분이 있어 반영되면 수정하기에서 데이터 넘기는 것까지 반영해보겠습니다.
-> 효원이가 일단 feedId만 넘겨놓게 구현해두라고 했습니당.!!

ScreenRecording_10-16-2024.03-35-26_1.MP4
  • 남의 피드일 때
ScreenRecording_10-16-2024.03-06-23_1-2.mp4

🌟To Reviewer

  • 쿠로미가 만들어준 공용 컴포넌트 사용하려 했는데 생각보다 분기처리 넣어주는 게 까다로웠어서 ....,, 그냥 개인적으로 뷰 하나 만들었습니다 !!
  • 전체 피드에서 삭제 후 피드가 reload 가 안되어서 바로 반영이 안되더라구요 ! 이 부분 확인해주시고 리뷰 해주심 감사하겠슴다.

🌟Reference


@Guryss Guryss changed the title Network/#248 [Network] #248 - 피드상세뷰 내 드롭다운 UI 구현 및 API 연결 Oct 15, 2024
Copy link
Member

@ena-isme ena-isme left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

공용컴포넌튼데 분기처리가 까다로웠다니, 디테일한 부분 말씀주시면 반영해볼게요~
수고하셨습니다.

@Guryss
Copy link
Contributor Author

Guryss commented Oct 16, 2024

공용컴포넌튼데 분기처리가 까다로웠다니, 디테일한 부분 말씀주시면 반영해볼게요~ 수고하셨습니다.

넹넹 노션에 적어놓을게염 !!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
2 participants