Skip to content

Commit

Permalink
[feat] #268 일정 등록 시 UserProperty 업데이트
Browse files Browse the repository at this point in the history
  • Loading branch information
t1nm1ksun committed Sep 25, 2024
1 parent 0f6e335 commit ec5eca2
Show file tree
Hide file tree
Showing 11 changed files with 40 additions and 9 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package org.sopt.dateroad.data.dataremote.datasource

import org.sopt.dateroad.data.dataremote.model.request.RequestTimelineDto
import org.sopt.dateroad.data.dataremote.model.response.ResponseEnrollTimelineDto
import org.sopt.dateroad.data.dataremote.model.response.ResponseNearestTimelineDto
import org.sopt.dateroad.data.dataremote.model.response.ResponseTimelineDetailDto
import org.sopt.dateroad.data.dataremote.model.response.ResponseTimelinesDto
Expand All @@ -14,5 +15,5 @@ interface TimelineRemoteDataSource {

suspend fun getNearestTimeline(): ResponseNearestTimelineDto

suspend fun postTimeline(requestTimelineDto: RequestTimelineDto)
suspend fun postTimeline(requestTimelineDto: RequestTimelineDto): ResponseEnrollTimelineDto
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package org.sopt.dateroad.data.dataremote.datasourceimpl
import javax.inject.Inject
import org.sopt.dateroad.data.dataremote.datasource.TimelineRemoteDataSource
import org.sopt.dateroad.data.dataremote.model.request.RequestTimelineDto
import org.sopt.dateroad.data.dataremote.model.response.ResponseEnrollTimelineDto
import org.sopt.dateroad.data.dataremote.model.response.ResponseNearestTimelineDto
import org.sopt.dateroad.data.dataremote.model.response.ResponseTimelineDetailDto
import org.sopt.dateroad.data.dataremote.model.response.ResponseTimelinesDto
Expand All @@ -19,5 +20,5 @@ class TimelineRemoteDataSourceImpl @Inject constructor(

override suspend fun getNearestTimeline(): ResponseNearestTimelineDto = timelineService.getNearestTimeline()

override suspend fun postTimeline(requestTimelineDto: RequestTimelineDto) = timelineService.postTimeline(requestTimelineDto = requestTimelineDto)
override suspend fun postTimeline(requestTimelineDto: RequestTimelineDto): ResponseEnrollTimelineDto = timelineService.postTimeline(requestTimelineDto = requestTimelineDto)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package org.sopt.dateroad.data.dataremote.model.response

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class ResponseEnrollTimelineDto(
@SerialName("dateScheduleNum")
val dateScheduleNum: Long
)
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package org.sopt.dateroad.data.dataremote.service

import org.sopt.dateroad.data.dataremote.model.request.RequestTimelineDto
import org.sopt.dateroad.data.dataremote.model.response.ResponseEnrollTimelineDto
import org.sopt.dateroad.data.dataremote.model.response.ResponseNearestTimelineDto
import org.sopt.dateroad.data.dataremote.model.response.ResponseTimelineDetailDto
import org.sopt.dateroad.data.dataremote.model.response.ResponseTimelinesDto
Expand Down Expand Up @@ -39,5 +40,5 @@ interface TimelineService {
@POST("$API/$VERSION/$DATES")
suspend fun postTimeline(
@Body requestTimelineDto: RequestTimelineDto
)
): ResponseEnrollTimelineDto
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package org.sopt.dateroad.data.mapper.todomain

import org.sopt.dateroad.data.dataremote.model.response.ResponseEnrollTimelineDto
import org.sopt.dateroad.domain.model.EnrollTimelineResult

fun ResponseEnrollTimelineDto.toDomain(): EnrollTimelineResult = EnrollTimelineResult(
dateScheduleNum = this.dateScheduleNum
)
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import org.sopt.dateroad.data.mapper.todomain.toDomain
import org.sopt.dateroad.data.mapper.todomain.toFutureTimelineDomain
import org.sopt.dateroad.data.mapper.todomain.toPastTimelineDomain
import org.sopt.dateroad.domain.model.Enroll
import org.sopt.dateroad.domain.model.EnrollTimelineResult
import org.sopt.dateroad.domain.model.NearestTimeline
import org.sopt.dateroad.domain.model.Timeline
import org.sopt.dateroad.domain.model.TimelineDetail
Expand Down Expand Up @@ -37,7 +38,7 @@ class TimelineRepositoryImpl @Inject constructor(
timelineRemoteDataSource.getNearestTimeline().toDomain()
}

override suspend fun postTimeline(enroll: Enroll) = runCatching {
timelineRemoteDataSource.postTimeline(requestTimelineDto = enroll.toTimelineData())
override suspend fun postTimeline(enroll: Enroll): Result<EnrollTimelineResult> = runCatching {
timelineRemoteDataSource.postTimeline(requestTimelineDto = enroll.toTimelineData()).toDomain()
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package org.sopt.dateroad.domain.model

data class EnrollTimelineResult(
val dateScheduleNum: Long
)
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package org.sopt.dateroad.domain.repository

import org.sopt.dateroad.domain.model.Enroll
import org.sopt.dateroad.domain.model.EnrollTimelineResult
import org.sopt.dateroad.domain.model.NearestTimeline
import org.sopt.dateroad.domain.model.Timeline
import org.sopt.dateroad.domain.model.TimelineDetail
Expand All @@ -15,5 +16,5 @@ interface TimelineRepository {

suspend fun getNearestTimeline(): Result<NearestTimeline>

suspend fun postTimeline(enroll: Enroll): Result<Unit>
suspend fun postTimeline(enroll: Enroll): Result<EnrollTimelineResult>
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@ package org.sopt.dateroad.domain.usecase
import javax.inject.Inject
import javax.inject.Singleton
import org.sopt.dateroad.domain.model.Enroll
import org.sopt.dateroad.domain.model.EnrollTimelineResult
import org.sopt.dateroad.domain.repository.TimelineRepository

@Singleton
class PostTimelineUseCase @Inject constructor(
private val timelineRepository: TimelineRepository
) {
suspend operator fun invoke(enroll: Enroll): Result<Unit> = timelineRepository.postTimeline(enroll = enroll)
suspend operator fun invoke(enroll: Enroll): Result<EnrollTimelineResult> = timelineRepository.postTimeline(enroll = enroll)
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import org.sopt.dateroad.domain.usecase.PostCourseUseCase
import org.sopt.dateroad.domain.usecase.PostTimelineUseCase
import org.sopt.dateroad.presentation.type.EnrollScreenType
import org.sopt.dateroad.presentation.type.EnrollType
import org.sopt.dateroad.presentation.util.UserPropertyAmplitude.DATE_SCHEDULE_NUM
import org.sopt.dateroad.presentation.util.UserPropertyAmplitude.USER_COURSE_COUNT
import org.sopt.dateroad.presentation.util.UserPropertyAmplitude.USER_POINT
import org.sopt.dateroad.presentation.util.amplitude.AmplitudeUtils
Expand Down Expand Up @@ -158,8 +159,9 @@ class EnrollViewModel @Inject constructor(
private fun postTimeline() {
viewModelScope.launch {
setEvent(EnrollContract.EnrollEvent.Enroll(loadState = LoadState.Loading))
postTimelineUseCase(enroll = currentState.enroll).onSuccess {
postTimelineUseCase(enroll = currentState.enroll).onSuccess { result ->
setEvent(EnrollContract.EnrollEvent.Enroll(loadState = LoadState.Success))
AmplitudeUtils.updateIntUserProperty(propertyName = DATE_SCHEDULE_NUM, propertyValue = result.dateScheduleNum.toInt())
}.onFailure {
setEvent(EnrollContract.EnrollEvent.Enroll(loadState = LoadState.Error))
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,5 +121,5 @@ object UserPropertyAmplitude {
const val USER_FREE_REMAINED = "user_free_remained"
const val USER_PURCHASE_COUNT = "user_purchase_count"
const val USER_COURSE_COUNT = "user_course_count"
const val USER_SCHEDULE_NUM = "user_schedule_num"
const val DATE_SCHEDULE_NUM = "date_schedule_num"
}

0 comments on commit ec5eca2

Please sign in to comment.