Skip to content

Commit e77bc10

Browse files
Merge pull request #355 from BCSDLab/chore/abtest-home
chore: 홈화면 abTest 로직 제거
2 parents d345bf6 + cadf434 commit e77bc10

7 files changed

Lines changed: 15 additions & 98 deletions

File tree

Koin/Apps/SceneDelegate.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,6 @@ extension SceneDelegate {
107107
fetchShopCategoryListUseCase: fetchShopCategoryUseCase,
108108
dateProvider: dateProvider,
109109
checkVersionUseCase: DefaultCheckVersionUseCase(coreRepository: DefaultCoreRepository(service: DefaultCoreService())),
110-
assignAbTestUseCase: DefaultAssignAbTestUseCase(abTestRepository: DefaultAbTestRepository(service: DefaultAbTestService())),
111110
fetchKeywordNoticePhraseUseCase: DefaultFetchKeywordNoticePhraseUseCase(),
112111
checkLoginUseCase: checkLoginUseCase,
113112
fetchLostItemStatsUseCase: fetchLostItemStatsUseCase

Koin/Presentation/Home/Home/HomeViewController.swift

Lines changed: 8 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -158,9 +158,6 @@ final class HomeViewController: UIViewController {
158158
cornerSegmentControl.addTarget(self, action: #selector(segmentDidChange), for: .valueChanged)
159159
checkAndShowTooltip()
160160
checkAndShowBanner()
161-
inputSubject.send(.logEvent(EventParameter.EventLabel.AbTest.businessBenefit, .abTestBenefit, "혜택X", nil, nil, nil, nil))
162-
inputSubject.send(.getAbTestResult("c_main_dining_v1"))
163-
inputSubject.send(.getClubAbTest("a_main_club_ui"))
164161
scrollView.delegate = self
165162
}
166163

@@ -213,12 +210,10 @@ final class HomeViewController: UIViewController {
213210
self?.updateHotArticles(articles: hotNoticeArticlesInfo, phrases: keywordNoticePhrases)
214211
case let .showForceUpdate(version):
215212
self?.navigateToForceUpdate(version: version)
216-
case let .setAbTestResult(abTestResult):
217-
self?.setAbTestResult(result: abTestResult)
218213
case .showForceModal:
219214
self?.navigationController?.setViewControllers([ForceModifyUserViewController()], animated: true)
220-
case .updateBanner(let banner, let abTestResult):
221-
self?.showBanner(banner: banner, abTestResult: abTestResult)
215+
case .updateBanner(let banner):
216+
self?.showBanner(banner: banner)
222217
case .setHotClub(let hotClub):
223218
self?.clubView.setupHotClub(club: hotClub)
224219
case .setClubCategories(let response):
@@ -437,20 +432,12 @@ extension HomeViewController {
437432
return false
438433
}
439434

440-
private func showBanner(banner: BannerDto, abTestResult: AssignAbTestResponse) {
435+
private func showBanner(banner: BannerDto) {
441436
if banner.count == 0 { return }
442-
let viewController: UIViewController
443-
if abTestResult.variableName == .bottomBanner {
444-
bannerViewControllerA.setBanners(banners: banner.banners)
445-
viewController = BottomSheetViewController(contentViewController: bannerViewControllerA, defaultHeight: 389)
446-
inputSubject.send(.logEventDirect(name: "AB_TEST", label: "CAMPUS_modal_1", value: "design_A", category: "a/b test 로깅(메인 모달)"))
447-
inputSubject.send(.logEventDirect(name: "CAMPUS", label: "main_modal_entry", value: banner.banners.first?.title ?? "", category: "entry"))
448-
} else {
449-
bannerViewControllerB.setBanners(banners: banner.banners)
450-
viewController = bannerViewControllerB
451-
inputSubject.send(.logEventDirect(name: "AB_TEST", label: "CAMPUS_modal_1", value: "design_B", category: "a/b test 로깅(메인 모달)"))
452-
inputSubject.send(.logEventDirect(name: "CAMPUS", label: "main_modal_entry", value: banner.banners.first?.title ?? "", category: "entry"))
453-
}
437+
438+
bannerViewControllerA.setBanners(banners: banner.banners)
439+
let viewController = BottomSheetViewController(contentViewController: bannerViewControllerA, defaultHeight: 389)
440+
inputSubject.send(.logEventDirect(name: "CAMPUS", label: "main_modal_entry", value: banner.banners.first?.title ?? "", category: "entry"))
454441
viewController.modalPresentationStyle = .overFullScreen
455442
viewController.modalTransitionStyle = .crossDissolve
456443
self.present(viewController, animated: true)
@@ -463,7 +450,7 @@ extension HomeViewController {
463450
return
464451
}
465452
}
466-
inputSubject.send(.getBannerAbTest("a_main_banner_ui"))
453+
inputSubject.send(.fetchBanner)
467454
}
468455

469456
@objc private func tapBusQrCode() {
@@ -577,15 +564,6 @@ extension HomeViewController {
577564
categoryCollectionView.updateCategories(data.shopCategories)
578565
}
579566

580-
private func setAbTestResult(result: AssignAbTestResponse) {
581-
if result.variableName == .mainDiningOriginal {
582-
goDiningPageButton.isHidden = true
583-
}
584-
else if result.variableName == .mainDiningNew {
585-
goDiningPageButton.isHidden = false
586-
}
587-
}
588-
589567
private func didTapCell(at id: Int) {
590568
let shopService = DefaultShopService()
591569
let shopRepository = DefaultShopRepository(service: shopService)

Koin/Presentation/Home/Home/HomeViewModel.swift

Lines changed: 7 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,7 @@ final class HomeViewModel: ViewModelProtocol {
2121
case logEventDirect(name: String, label: String, value: String, category: String)
2222
case getUserScreenAction(Date, ScreenActionType, EventParameter.EventLabelNeededDuration? = nil)
2323
case getNoticeBanner(Date?)
24-
case getAbTestResult(String)
25-
case getBannerAbTest(String)
26-
case getClubAbTest(String)
24+
case fetchBanner
2725
case logSessionEvent(EventLabelType, EventParameter.EventCategory, Any, String)
2826
}
2927

@@ -34,9 +32,8 @@ final class HomeViewModel: ViewModelProtocol {
3432
case updateNoticeBanners([NoticeArticleDto], ((String, String), Int)?)
3533
case putImage(ShopCategoryDto)
3634
case showForceUpdate(String)
37-
case setAbTestResult(AssignAbTestResponse)
3835
case showForceModal
39-
case updateBanner(BannerDto, AssignAbTestResponse)
36+
case updateBanner(BannerDto)
4037
case setHotClub(HotClubDto)
4138
case setClubCategories(ClubCategoriesDto)
4239
case updateLostItem(LostItemStats)
@@ -52,7 +49,6 @@ final class HomeViewModel: ViewModelProtocol {
5249
private let checkVersionUseCase: CheckVersionUseCase
5350
private let getUserScreenTimeUseCase: GetUserScreenTimeUseCase
5451
private let fetchHotNoticeArticlesUseCase: FetchHotNoticeArticlesUseCase
55-
private let assignAbTestUseCase: AssignAbTestUseCase
5652
private let fetchKeywordNoticePhraseUseCase: FetchKeywordNoticePhraseUseCase
5753
private let fetchLostItemStatsUseCase: FetchLostItemStatsUseCase
5854
private let fetchUserDataUseCase = DefaultFetchUserDataUseCase(userRepository: DefaultUserRepository(service: DefaultUserService()))
@@ -73,7 +69,6 @@ final class HomeViewModel: ViewModelProtocol {
7369
fetchShopCategoryListUseCase: FetchShopCategoryListUseCase,
7470
dateProvider: DateProvider,
7571
checkVersionUseCase: CheckVersionUseCase,
76-
assignAbTestUseCase: AssignAbTestUseCase,
7772
fetchKeywordNoticePhraseUseCase: FetchKeywordNoticePhraseUseCase,
7873
checkLoginUseCase: CheckLoginUseCase,
7974
fetchLostItemStatsUseCase: FetchLostItemStatsUseCase
@@ -85,7 +80,6 @@ final class HomeViewModel: ViewModelProtocol {
8580
self.fetchShopCategoryListUseCase = fetchShopCategoryListUseCase
8681
self.dateProvider = dateProvider
8782
self.checkVersionUseCase = checkVersionUseCase
88-
self.assignAbTestUseCase = assignAbTestUseCase
8983
self.fetchKeywordNoticePhraseUseCase = fetchKeywordNoticePhraseUseCase
9084
self.checkLoginUseCase = checkLoginUseCase
9185
self.fetchLostItemStatsUseCase = fetchLostItemStatsUseCase
@@ -99,6 +93,7 @@ final class HomeViewModel: ViewModelProtocol {
9993
self?.getShopCategory()
10094
self?.checkVersion()
10195
self?.fetchUserData()
96+
self?.fetchHotClub()
10297
case let .categorySelected(place):
10398
self?.getDiningInformation(diningPlace: place)
10499
case .getDiningInfo:
@@ -111,15 +106,10 @@ final class HomeViewModel: ViewModelProtocol {
111106
self?.getScreenAction(time: time, screenActionType: screenActionType, eventLabelNeededDuration: eventLabelNeededDuration)
112107
case let .getNoticeBanner(date):
113108
self?.getNoticeBanners(date: date)
114-
case let .getAbTestResult(abTestTitle):
115-
break
116-
// self?.getAbTestResult(abTestTitle: abTestTitle)
117-
case .getBannerAbTest(let request):
118-
self?.getBannerAbTest(request: request)
109+
case .fetchBanner:
110+
self?.fetchBanner()
119111
case let .logEventDirect(name, label, value, category):
120112
self?.logAnalyticsEventUseCase.logEvent(name: name, label: label, value: value, category: category)
121-
case .getClubAbTest(let request):
122-
self?.getClubAbTest(request: request)
123113
case let .logSessionEvent(label, category, value, sessionId):
124114
self?.makeLogAnalyticsSessionEvent(label: label, category: category, value: value, sessionId: sessionId)
125115
}
@@ -131,13 +121,13 @@ final class HomeViewModel: ViewModelProtocol {
131121

132122
extension HomeViewModel {
133123

134-
private func fetchBanner(abTestResult: AssignAbTestResponse) {
124+
private func fetchBanner() {
135125
fetchBannerUseCase.execute().sink { completion in
136126
if case let .failure(error) = completion {
137127
Log.make().error("\(error)")
138128
}
139129
} receiveValue: { [weak self] response in
140-
self?.outputSubject.send(.updateBanner(response, abTestResult))
130+
self?.outputSubject.send(.updateBanner(response))
141131
}.store(in: &subscriptions)
142132
}
143133
private func fetchHotClub() {
@@ -159,32 +149,6 @@ extension HomeViewModel {
159149
self?.outputSubject.send(.setClubCategories(categories))
160150
}).store(in: &subscriptions)
161151
}
162-
private func getClubAbTest(request: String) {
163-
assignAbTestUseCase.execute(requestModel: AssignAbTestRequest(title: request))
164-
.sink(receiveCompletion: { completion in
165-
if case let .failure(error) = completion {
166-
Log.make().error("\(error)")
167-
}
168-
}, receiveValue: { [weak self] abTestResult in
169-
print(abTestResult)
170-
if abTestResult.variableName == .hot {
171-
self?.fetchHotClub()
172-
self?.logAnalyticsEventUseCase.logEvent(name: "AB_TEST", label: "CAMPUS_club_1", value: "design_B", category: "a/b test 로깅(메인화면 동아리 진입)")
173-
} else {
174-
self?.fetchClubCategories()
175-
self?.logAnalyticsEventUseCase.logEvent(name: "AB_TEST", label: "CAMPUS_club_1", value: "design_A", category: "a/b test 로깅(메인화면 동아리 진입)") }
176-
}).store(in: &subscriptions)
177-
}
178-
private func getBannerAbTest(request: String) {
179-
assignAbTestUseCase.execute(requestModel: AssignAbTestRequest(title: request))
180-
.sink(receiveCompletion: { completion in
181-
if case let .failure(error) = completion {
182-
Log.make().error("\(error)")
183-
}
184-
}, receiveValue: { [weak self] abTestResult in
185-
self?.fetchBanner(abTestResult: abTestResult)
186-
}).store(in: &subscriptions)
187-
}
188152

189153
private func fetchUserData() {
190154
fetchUserDataUseCase.execute().sink { completion in
@@ -302,26 +266,6 @@ extension HomeViewModel {
302266
}
303267
}.store(in: &subscriptions)
304268
}
305-
306-
307-
private func getAbTestResult(abTestTitle: String) {
308-
assignAbTestUseCase.execute(requestModel: AssignAbTestRequest(title: abTestTitle))
309-
.throttle(for: .milliseconds(500), scheduler: RunLoop.main, latest: true)
310-
.sink(receiveCompletion: { [weak self] completion in
311-
if case let .failure(error) = completion {
312-
Log.make().error("\(error)")
313-
if abTestTitle == "c_keyword_ banner_v1" {
314-
self?.getNoticeBanners(date: nil)
315-
}
316-
}
317-
}, receiveValue: { [weak self] abTestResult in
318-
print(abTestResult)
319-
self?.outputSubject.send(.setAbTestResult(abTestResult))
320-
if abTestTitle == "c_main_dining_v1" {
321-
self?.getAbTestResult(abTestTitle: "c_keyword_ banner_v1")
322-
}
323-
}).store(in: &subscriptions)
324-
}
325269

326270
private func makeLogAnalyticsSessionEvent(label: EventLabelType, category: EventParameter.EventCategory, value: Any, sessionId: String) {
327271
logAnalyticsEventUseCase.executeWithSessionId(label: label, category: category, value: value, sessionId: sessionId)

Koin/Presentation/Home/Home/SubViews/ForceModifyUserViewController.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,6 @@ extension ForceModifyUserViewController {
8787
fetchShopCategoryListUseCase: fetchShopCategoryUseCase,
8888
dateProvider: dateProvider,
8989
checkVersionUseCase: DefaultCheckVersionUseCase(coreRepository: DefaultCoreRepository(service: DefaultCoreService())),
90-
assignAbTestUseCase: DefaultAssignAbTestUseCase(abTestRepository: DefaultAbTestRepository(service: DefaultAbTestService())),
9190
fetchKeywordNoticePhraseUseCase: DefaultFetchKeywordNoticePhraseUseCase(),
9291
checkLoginUseCase: checkLoginUseCase,
9392
fetchLostItemStatsUseCase: fetchLostItemStatsUseCase

Koin/Presentation/Login/FindId/ViewControllers/FoundIdViewController.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,6 @@ extension FoundIdViewController {
108108
fetchShopCategoryListUseCase: fetchShopCategoryUseCase,
109109
dateProvider: dateProvider,
110110
checkVersionUseCase: DefaultCheckVersionUseCase(coreRepository: DefaultCoreRepository(service: DefaultCoreService())),
111-
assignAbTestUseCase: DefaultAssignAbTestUseCase(abTestRepository: DefaultAbTestRepository(service: DefaultAbTestService())),
112111
fetchKeywordNoticePhraseUseCase: DefaultFetchKeywordNoticePhraseUseCase(),
113112
checkLoginUseCase: checkLoginUseCase,
114113
fetchLostItemStatsUseCase: fetchLostItemStatsUseCase

Koin/Presentation/Login/FindPassword/ChangePasswordSuccessViewController.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,6 @@ extension ChangePasswordSuccessViewController {
9292
fetchShopCategoryListUseCase: fetchShopCategoryUseCase,
9393
dateProvider: dateProvider,
9494
checkVersionUseCase: DefaultCheckVersionUseCase(coreRepository: DefaultCoreRepository(service: DefaultCoreService())),
95-
assignAbTestUseCase: DefaultAssignAbTestUseCase(abTestRepository: DefaultAbTestRepository(service: DefaultAbTestService())),
9695
fetchKeywordNoticePhraseUseCase: DefaultFetchKeywordNoticePhraseUseCase(),
9796
checkLoginUseCase: checkLoginUseCase,
9897
fetchLostItemStatsUseCase: fetchLostItemStatsUseCase

Koin/Presentation/Login/Login/LoginViewController.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,6 @@ final class LoginViewController: UIViewController {
171171
fetchShopCategoryListUseCase: fetchShopCategoryUseCase,
172172
dateProvider: dateProvider,
173173
checkVersionUseCase: DefaultCheckVersionUseCase(coreRepository: DefaultCoreRepository(service: DefaultCoreService())),
174-
assignAbTestUseCase: DefaultAssignAbTestUseCase(abTestRepository: DefaultAbTestRepository(service: DefaultAbTestService())),
175174
fetchKeywordNoticePhraseUseCase: DefaultFetchKeywordNoticePhraseUseCase(),
176175
checkLoginUseCase: checkLoginUseCase,
177176
fetchLostItemStatsUseCase: fetchLostItemStatsUseCase

0 commit comments

Comments
 (0)