diff --git a/Projects/App/Sources/Screens/Library/AbilityViewController.swift b/Projects/App/Sources/Screens/Library/AbilityViewController.swift index d41043f..80d0e53 100644 --- a/Projects/App/Sources/Screens/Library/AbilityViewController.swift +++ b/Projects/App/Sources/Screens/Library/AbilityViewController.swift @@ -12,6 +12,7 @@ import DesignSystem import UIKit import ReactorKit +import Mixpanel class AbilityViewController: BaseViewController, PageTabProtocol, View { @@ -113,6 +114,8 @@ class AbilityViewController: BaseViewController, PageTabProtocol, View { extension AbilityViewController: UICollectionViewDelegate { func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { + Mixpanel.mainInstance().track(event: "모아보기_역량_목록_Clicked") + let detailViewController = DetailViewController(previousView: .ability) detailViewController.reactor = DetailReactor( title: self.reactor?.currentState.abilities[indexPath.row].name ?? "", diff --git a/Projects/App/Sources/Screens/Library/DetailViewController.swift b/Projects/App/Sources/Screens/Library/DetailViewController.swift index 485288f..a6adfd8 100644 --- a/Projects/App/Sources/Screens/Library/DetailViewController.swift +++ b/Projects/App/Sources/Screens/Library/DetailViewController.swift @@ -11,6 +11,7 @@ import DesignSystem import UIKit import ReactorKit +import Mixpanel class DetailViewController: BaseViewController, View { var disposeBag = DisposeBag() @@ -67,6 +68,7 @@ class DetailViewController: BaseViewController, View { self.setLayout() self.registerCell() self.setDataSource() + self.trackEmptyView() } private func setNavigationBar() { @@ -190,6 +192,15 @@ class DetailViewController: BaseViewController, View { self.dataSource.apply(snapshot) } + func trackEmptyView() { + let tapGesture = UITapGestureRecognizer(target: self, action: #selector(addMixpanel(sender:))) + emptyView.addGestureRecognizer(tapGesture) + } + + @objc + func addMixpanel(sender: UITapGestureRecognizer) { + Mixpanel.mainInstance().track(event: "모아보기_프로젝트_목록_Clicked") + } } extension DetailViewController: CalendarBottomSheetDelegate { diff --git a/Projects/App/Sources/Screens/Library/ProjectViewController.swift b/Projects/App/Sources/Screens/Library/ProjectViewController.swift index 96f14f1..f866c60 100644 --- a/Projects/App/Sources/Screens/Library/ProjectViewController.swift +++ b/Projects/App/Sources/Screens/Library/ProjectViewController.swift @@ -12,6 +12,7 @@ import DesignSystem import UIKit import ReactorKit +import Mixpanel class ProjectViewController: BaseViewController, PageTabProtocol, View { @@ -118,6 +119,8 @@ class ProjectViewController: BaseViewController, PageTabProtocol, View { extension ProjectViewController: UICollectionViewDelegate { func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { + Mixpanel.mainInstance().track(event: "모아보기_프로젝트_목록_Clicked") + let detailViewController = DetailViewController(previousView: .project) detailViewController.reactor = DetailReactor( title: self.reactor?.currentState.projects[indexPath.row].name ?? "", diff --git a/Projects/App/Sources/Screens/Setting/ProjectManagementReactor.swift b/Projects/App/Sources/Screens/Setting/ProjectManagementReactor.swift index aac27d5..97ada06 100644 --- a/Projects/App/Sources/Screens/Setting/ProjectManagementReactor.swift +++ b/Projects/App/Sources/Screens/Setting/ProjectManagementReactor.swift @@ -9,6 +9,7 @@ import Domain import ReactorKit +import Mixpanel final class ProjectManagementReactor: Reactor { var initialState: State @@ -68,6 +69,8 @@ final class ProjectManagementReactor: Reactor { return .empty() } + Mixpanel.mainInstance().track(event: "설정_프로젝트 생성 버튼_Clicked") + return .concat( [self.projectUseCase .createProject(title: currentState.newProjectTitle) diff --git a/Projects/App/Sources/Screens/Setting/SettingViewController.swift b/Projects/App/Sources/Screens/Setting/SettingViewController.swift index c388981..260136c 100644 --- a/Projects/App/Sources/Screens/Setting/SettingViewController.swift +++ b/Projects/App/Sources/Screens/Setting/SettingViewController.swift @@ -15,6 +15,7 @@ import UIKit import ReactorKit import SnapKit +import Mixpanel class SettingViewController: BaseViewController, View { @@ -241,6 +242,8 @@ extension SettingViewController: UITableViewDelegate { let view: SFSafariViewController = SFSafariViewController(url: url!) self.present(view, animated: true, completion: nil) case .csv: + Mixpanel.mainInstance().track(event: "설정_추출버튼_Clicked") + let alert = UIAlertController(title: Text.preparing, message: nil, preferredStyle: .alert) @@ -260,6 +263,7 @@ extension SettingViewController: UITableViewDelegate { preferredStyle: .alert) alert.addAction(UIAlertAction(title: Text.cancel, style: .cancel)) alert.addAction(UIAlertAction(title: Text.confirm, style: .default) { _ in + Mixpanel.mainInstance().track(event: "설정_로그아웃 모달 확인 버튼_Clicked") UserDefaultsManager.shared.removeToken() RootViewChange.shared.setRootViewController(.splash) }) diff --git a/Projects/App/Sources/Screens/Withdrawal/WithdrawalViewController.swift b/Projects/App/Sources/Screens/Withdrawal/WithdrawalViewController.swift index 5bb36b1..ec1c2aa 100644 --- a/Projects/App/Sources/Screens/Withdrawal/WithdrawalViewController.swift +++ b/Projects/App/Sources/Screens/Withdrawal/WithdrawalViewController.swift @@ -14,6 +14,8 @@ import ReactorKit import RxSwift import SnapKit +import Mixpanel + // swiftlint:disable all final class WithdrawalViewController: BaseViewController, View { var disposeBag: RxSwift.DisposeBag = DisposeBag() @@ -206,6 +208,7 @@ final class WithdrawalViewController: BaseViewController, View { owner.presentAlert( type: .completeWithdraw, okAction: { _ in + Mixpanel.mainInstance().track(event: "설정_탈퇴 모달 확인 버튼_Clicked") owner.withDrawPublisher.onNext(()) } )