diff --git a/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/list/ReviewListScreen.kt b/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/list/ReviewListScreen.kt index 985210e2..f9eddcf1 100644 --- a/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/list/ReviewListScreen.kt +++ b/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/list/ReviewListScreen.kt @@ -45,10 +45,13 @@ import com.eatssu.android.presentation.cafeteria.review.list.component.OthersRev import com.eatssu.android.presentation.cafeteria.review.list.component.ReviewItem import com.eatssu.android.presentation.cafeteria.review.list.component.ReviewProgressBar import com.eatssu.android.presentation.cafeteria.review.report.ReportActivity +import com.eatssu.android.presentation.util.TrackScreenViewEvent import com.eatssu.android.presentation.util.showToast +import com.eatssu.common.EventLogger import com.eatssu.common.UiEvent import com.eatssu.common.UiState import com.eatssu.common.enums.MenuType +import com.eatssu.common.enums.ScreenId import com.eatssu.design_system.component.DelayedLoadingIndicator import com.eatssu.design_system.component.EatSsuButton import com.eatssu.design_system.component.EatSsuTopBar @@ -75,6 +78,9 @@ fun ReviewListScreen( viewModel.getReview(menuType, id) } + // Screen View 로깅 + TrackScreenViewEvent(ScreenId.REVIEW_V2_VIEW) + val reviewListState by viewModel.uiState.collectAsStateWithLifecycle() val uiEvent by viewModel.uiEvent.collectAsStateWithLifecycle(initialValue = null) @@ -153,6 +159,7 @@ internal fun ReviewListScreen( text = "리뷰 작성하기", onClick = { onReviewWriteButtonClick() + EventLogger.writeReviewV2() //작성 하러가기가 이벤트임 }, modifier = Modifier .padding(24.dp) diff --git a/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/modify/ModifyReviewScreen.kt b/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/modify/ModifyReviewScreen.kt index 0818002a..119d8357 100644 --- a/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/modify/ModifyReviewScreen.kt +++ b/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/modify/ModifyReviewScreen.kt @@ -27,9 +27,11 @@ import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.eatssu.android.domain.model.Review import com.eatssu.android.presentation.cafeteria.review.write.component.MenuLikeButtonItem +import com.eatssu.android.presentation.util.TrackScreenViewEvent import com.eatssu.android.presentation.util.showToast import com.eatssu.common.UiEvent import com.eatssu.common.UiState +import com.eatssu.common.enums.ScreenId import com.eatssu.design_system.component.CloseTopBar import com.eatssu.design_system.component.EatSsuButton import com.eatssu.design_system.component.RatingBarMedium @@ -54,6 +56,9 @@ fun ModifyReviewScreen( val context = LocalContext.current val ui by viewModel.uiState.collectAsStateWithLifecycle() + // Screen View 로깅 + TrackScreenViewEvent(ScreenId.REVIEW_V2_MODIFY) + // 최초 1회 초기화 LaunchedEffect(Unit) { viewModel.init(initialRating, initialContent, menuLikeInfoList) diff --git a/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/write/WriteReviewScreen.kt b/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/write/WriteReviewScreen.kt index 554983cc..f05e07cf 100644 --- a/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/write/WriteReviewScreen.kt +++ b/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/write/WriteReviewScreen.kt @@ -37,10 +37,12 @@ import coil.compose.AsyncImage import com.eatssu.android.R import com.eatssu.android.domain.model.MenuMini import com.eatssu.android.presentation.cafeteria.review.write.component.MenuLikeButtonItem +import com.eatssu.android.presentation.util.TrackScreenViewEvent import com.eatssu.android.presentation.util.showToast import com.eatssu.common.UiEvent import com.eatssu.common.UiState import com.eatssu.common.enums.MenuType +import com.eatssu.common.enums.ScreenId import com.eatssu.design_system.component.CloseTopBar import com.eatssu.design_system.component.EatSsuButton import com.eatssu.design_system.component.RatingBarMedium @@ -71,6 +73,9 @@ fun WriteReviewScreen( ActivityResultContracts.GetContent() ) { uri: Uri? -> viewModel.setSelectedImage(uri) } + // Screen View 로깅 + TrackScreenViewEvent(ScreenId.REVIEW_V2_WRITE) + // 처음 진입 시, 메뉴 불러오기: 기본찬(김치, 단무지, 밥) 등을 거르기 위함 LaunchedEffect(menuType, id, menuName) { viewModel.loadMenuList(menuType, id, menuName) diff --git a/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/write/WriteReviewViewModel.kt b/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/write/WriteReviewViewModel.kt index ef99e227..cdbfbb57 100644 --- a/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/write/WriteReviewViewModel.kt +++ b/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/write/WriteReviewViewModel.kt @@ -8,6 +8,7 @@ import com.eatssu.android.domain.model.MenuMini import com.eatssu.android.domain.usecase.menu.GetValidMenusOfMealUseCase import com.eatssu.android.domain.usecase.review.GetImageUrlUseCase import com.eatssu.android.domain.usecase.review.WriteReviewUseCase +import com.eatssu.common.EventLogger import com.eatssu.common.UiEvent import com.eatssu.common.UiState import com.eatssu.common.enums.MenuType @@ -150,6 +151,13 @@ class WriteReviewViewModel @Inject constructor( return@launch } + // 리뷰 작성 완료 로깅 + EventLogger.completeReviewV2( + rating = editing.rating.toLong(), + likes = editing.likedMenuIds.size.toLong(), + photoAttached = editing.selectedImageUri != null + ) + _uiEvent.emit(UiEvent.ShowToast("리뷰가 작성되었습니다.", ToastType.SUCCESS)) _uiEvent.emit(UiEvent.NavigateBack) } diff --git a/core/common/src/main/java/com/eatssu/common/EventLogger.kt b/core/common/src/main/java/com/eatssu/common/EventLogger.kt index 15747362..ae7ac701 100644 --- a/core/common/src/main/java/com/eatssu/common/EventLogger.kt +++ b/core/common/src/main/java/com/eatssu/common/EventLogger.kt @@ -64,10 +64,14 @@ object EventLogger { } } - fun writeReview() { //todo v2로 바꿀시 v1 제거 + fun writeReviewV1() { logEvent(EventType.WRITE_REVIEW_V1) } + fun writeReviewV2() { + logEvent(EventType.WRITE_REVIEW_V2) + } + fun completeReviewV1( rating: Long, selection: Long, diff --git a/core/common/src/main/java/com/eatssu/common/enums/EventType.kt b/core/common/src/main/java/com/eatssu/common/enums/EventType.kt index db3a7448..e4ed2626 100644 --- a/core/common/src/main/java/com/eatssu/common/enums/EventType.kt +++ b/core/common/src/main/java/com/eatssu/common/enums/EventType.kt @@ -9,6 +9,7 @@ enum class EventType(val value: String) { CLICK_DAY("click_day"), CLICK_MENU("click_menu"), WRITE_REVIEW_V1("write_review_v1"), + WRITE_REVIEW_V2("write_review_v2"), COMPLETE_REVIEW_V1("complete_review_v1"), COMPLETE_REVIEW_V2("complete_review_v2"), CLICK_MAP("click_map"), diff --git a/core/common/src/main/java/com/eatssu/common/enums/ScreenId.kt b/core/common/src/main/java/com/eatssu/common/enums/ScreenId.kt index ec562652..25bed072 100644 --- a/core/common/src/main/java/com/eatssu/common/enums/ScreenId.kt +++ b/core/common/src/main/java/com/eatssu/common/enums/ScreenId.kt @@ -9,20 +9,21 @@ enum class ScreenId(val value: String) { HOME_MAIN("MNU_001000"), HOME_INFO("MNU_002000"), - REVIEW_V1_VIEW("REV_001000_V1"), - REVIEW_V1_WRITE("REV_001001_V1"), - REVIEW_V1_WRITE_RATE("REV_001002_V1"), - REVIEW_V1_LOGIN_REQUIRED("REV_001003_V1"), // TODO: 필수 로그인이라 사용하지 않음 - REVIEW_V1_MODIFY("REV_001004_V1"), // TODO: Figma에 존재하지 않음 - - REVIEW_V2_1("REV_001000_V2"), - REVIEW_V3_1("REV_001000_V3"), - REVIEW_V2_3("REV_001001"), - REVIEW_V2_4("REV_003001"), - REVIEW_V2_5("REV_001003"), - - // V1과 V2가 같음 - REVIEW_REPORT("REV_002000"), +// REVIEW_V1_VIEW("REV_001000_V1"), +// REVIEW_V1_WRITE("REV_001001_V1"), +// REVIEW_V1_WRITE_RATE("REV_001002_V1"), +// REVIEW_V1_LOGIN_REQUIRED("REV_001003_V1"), // TODO: 필수 로그인이라 사용하지 않음 +// REVIEW_V1_MODIFY("REV_001004_V1"), // TODO: Figma에 존재하지 않음 + + REVIEW_V2_VIEW("REV_001000_V2"), + REVIEW_V2_WRITE("REV_001001_V2"), + REVIEW_V2_MODIFY("REV_003000_V2"), + +// REVIEW_V3_VIEW("REV_001000_V3"), // todo 사진 모아보기가 있는 v3 버전 +// REVIEW_V3_PHOTO("REV_003000"), //todo 포토리뷰 +// REVIEW_V3_PHOTO_DETAIL("REV_003001"), //todo 포토리뷰 + + REVIEW_REPORT("REV_002000"), // V1과 V2가 같음 MAP_MAIN("MAP_001000"), MAP_DETAIL("MAP_001001"),