Skip to content

Commit

Permalink
[Refactor] addSchedule Amplitude 관련 코드 리펙토링 (#282)
Browse files Browse the repository at this point in the history
  • Loading branch information
ParkSY0919 committed Dec 29, 2024
1 parent f08e2f2 commit 4b152e7
Show file tree
Hide file tree
Showing 3 changed files with 143 additions and 141 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -96,28 +96,14 @@ final class AddScheduleViewModel: Serviceable {

//MARK: - AddSchedule Amplitude 관련 변수

var dateTitle: Bool = false

var dateDate: Bool = false

var dateTime: Bool = false

var dateTagNum: Int = 0

var dateArea: Bool = false

var dateDetailLocation: Bool = false

var dateDetailTime: Bool = false

var dateCourseNum: Int = 0
var addScheduleAmplitude = AddScheduleAmplitudeState()


// MARK: - Initializer

init(viewPath: String) {
self.viewPath = viewPath
initAmplitudeVar()
// initAmplitudeVar()
fetchTagData()
}

Expand All @@ -129,57 +115,6 @@ final class AddScheduleViewModel: Serviceable {
}


//MARK: - AddScheduleViewModel: Amplitude

extension AddScheduleViewModel {

func initAmplitudeVar() {
dateTitle = false
dateDate = false
dateTime = false
dateTagNum = 0
dateArea = false
dateDetailLocation = false
dateDetailTime = false
dateCourseNum = 0
}

func resetAddFirstScheduleAmplitude() {
dateTitle = false
dateDate = false
dateTime = false
dateTagNum = 0
dateArea = false
}

func schedule1BackAmplitude() {
AmplitudeManager.shared.trackEventWithProperties(
StringLiterals.Amplitude.EventName.clickSchedule1Back,
properties: [
StringLiterals.Amplitude.Property.dateTitle: self.dateTitle,
StringLiterals.Amplitude.Property.dateDate: self.dateDate,
StringLiterals.Amplitude.Property.dateTime: self.dateTime,
StringLiterals.Amplitude.Property.dateTagNum: self.dateTagNum,
StringLiterals.Amplitude.Property.dateArea: self.dateArea
]
)
self.resetAddFirstScheduleAmplitude()
}

func schedule2BackAmplitude() {
AmplitudeManager.shared.trackEventWithProperties(
StringLiterals.Amplitude.EventName.clickSchedule2Back,
properties: [
StringLiterals.Amplitude.Property.dateDetailLocation: self.dateDetailLocation,
StringLiterals.Amplitude.Property.dateDetailTime: self.dateDetailTime,
StringLiterals.Amplitude.Property.dateCourseNum: self.dateCourseNum
]
)
}

}


//MARK: - AddScheduleViewModel: PastDateSetting

extension AddScheduleViewModel {
Expand Down Expand Up @@ -345,15 +280,15 @@ extension AddScheduleViewModel {
self.datePlace.value = ""
self.timeRequire.value = ""

self.dateDetailLocation = false
self.dateDetailTime = false
self.addScheduleAmplitude.dateDetailLocation = false
self.addScheduleAmplitude.dateDetailTime = false
self.isChange?()
}

/// dataSource 개수 >= 2 라면 '확인' 버튼 활성화
func isSourceMoreThanOne() {
let cnt = addPlaceCollectionViewDataSource.count
self.dateCourseNum = cnt
self.addScheduleAmplitude.dateCourseNum = cnt
let flag = (cnt >= 2)
print("지금 데이터소스 개수 : \(addPlaceCollectionViewDataSource.count)\nflag: \(flag)")
isValidOfSecondNextBtn.value = flag
Expand Down Expand Up @@ -427,3 +362,50 @@ extension AddScheduleViewModel {
}

}


//MARK: - AddScheduleAmplitudeState

struct AddScheduleAmplitudeState {

// addSchedule 관련 amplitude 변수들
var dateTitle: Bool = false
var dateDate: Bool = false
var dateTime: Bool = false
var dateTagNum: Int = 0
var dateArea: Bool = false
var dateDetailLocation: Bool = false
var dateDetailTime: Bool = false
var dateCourseNum: Int = 0


func sendAmplitudeEvent(for step: Int) {
switch step {
case 1:
let properties: [String: Any] = [
StringLiterals.Amplitude.Property.dateTitle: self.dateTitle,
StringLiterals.Amplitude.Property.dateDate: self.dateDate,
StringLiterals.Amplitude.Property.dateTime: self.dateTime,
StringLiterals.Amplitude.Property.dateTagNum: self.dateTagNum,
StringLiterals.Amplitude.Property.dateArea: self.dateArea
]
AmplitudeManager.shared.trackEventWithProperties(
StringLiterals.Amplitude.EventName.clickSchedule1Back,
properties: properties
)
case 2:
let properties: [String: Any] = [
StringLiterals.Amplitude.Property.dateDetailLocation: dateDetailLocation,
StringLiterals.Amplitude.Property.dateDetailTime: dateDetailTime,
StringLiterals.Amplitude.Property.dateCourseNum: dateCourseNum
]
AmplitudeManager.shared.trackEventWithProperties(
StringLiterals.Amplitude.EventName.clickSchedule2Back,
properties: properties
)
default:
print("sendAmplitudeEvent Error")
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,9 @@ final class AddScheduleFirstViewController: BaseNavBarViewController {

}


// MARK: - AddScheduleFirstVC Methods

private extension AddScheduleFirstViewController {

func bindViewModel() {
Expand Down Expand Up @@ -163,31 +166,31 @@ private extension AddScheduleFirstViewController {
viewModel.dateName.bind { date in
guard let text = date else {return}
self.addScheduleFirstView.inAddScheduleFirstView.updateDateName(text: text)
self.viewModel.dateTitle = true
self.viewModel.addScheduleAmplitude.dateTitle = true
}

viewModel.visitDate.bind { date in
guard let text = date else {return}
self.addScheduleFirstView.inAddScheduleFirstView.updateVisitDate(text: text)
self.viewModel.dateDate = true
self.viewModel.addScheduleAmplitude.dateDate = true
}

viewModel.dateStartAt.bind { date in
guard let text = date else {return}
self.addScheduleFirstView.inAddScheduleFirstView.updatedateStartTime(text: text)
self.viewModel.dateTime = true
self.viewModel.addScheduleAmplitude.dateTime = true
}

viewModel.tagCount.bind { count in
guard let count else {return}
self.addScheduleFirstView.inAddScheduleFirstView.updateTagCount(count: count)
self.viewModel.dateTagNum = count
self.viewModel.addScheduleAmplitude.dateTagNum = count
}

viewModel.dateLocation.bind { date in
guard let date else {return}
self.addScheduleFirstView.inAddScheduleFirstView.updateDateLocation(text: date)
self.viewModel.dateArea = true
self.viewModel.addScheduleAmplitude.dateArea = true
}
}

Expand Down Expand Up @@ -238,7 +241,7 @@ private extension AddScheduleFirstViewController {
extension AddScheduleFirstViewController {

/// 일정등록 시 '불러오기' 여부 분기처리
/// 다른 파일에서 해당 함수 사용하기에 private 미사용
/// 다른 파일에서 해당 함수 사용하기에 private 미사용schedule1BackAmplitude
func pastDateBindViewModel() {
if !viewModel.isBroughtData {
setRightBtnStyle()
Expand All @@ -253,12 +256,13 @@ extension AddScheduleFirstViewController {
/// BaseNavBarViewController에서 backButtonTapped() 오버라이드
@objc
override func backButtonTapped() {
viewModel.schedule1BackAmplitude()
viewModel.addScheduleAmplitude.sendAmplitudeEvent(for: 1)
super.backButtonTapped()
}

}


//MARK: - AddScheduleFirstViewController: '일정등록 뷰1 프로퍼티' 관련 함수

private extension AddScheduleFirstViewController {
Expand All @@ -277,7 +281,7 @@ private extension AddScheduleFirstViewController {
guard let text = textField.text else {return}
viewModel.dateName.value = text
viewModel.satisfyDateName(str: text)
self.viewModel.dateTitle = !text.isEmpty ? true : false
self.viewModel.addScheduleAmplitude.dateTitle = !text.isEmpty ? true : false
}

/// '방문일자' 관련
Expand Down
Loading

0 comments on commit 4b152e7

Please sign in to comment.