Skip to content

Commit

Permalink
[feat] #70 과목 삭제하기 API 연동
Browse files Browse the repository at this point in the history
  • Loading branch information
beom84 committed Jan 24, 2025
1 parent e602718 commit dc1fae2
Show file tree
Hide file tree
Showing 5 changed files with 62 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package org.android.bbangzip.data.dto.request

import kotlinx.serialization.SerialName

data class RequestDeleteSubjectsDto(
@SerialName("subjectIds")
val subjectIds: List<Int>,
@SerialName("year")
val year: Int,
@SerialName("semester")
val semester: String)
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,17 @@ package org.android.bbangzip.data.service

import org.android.bbangzip.data.dto.response.ResponseSubjectFilterDto
import org.android.bbangzip.data.util.base.BaseResponse
import retrofit2.http.DELETE
import retrofit2.http.GET
import retrofit2.http.POST

interface SubjectService {
@GET("/api/v1/subjects/filter?year=2025&semester=1학기")
suspend fun getSubjectInfo(): BaseResponse<ResponseSubjectFilterDto?>

@POST("/api/v1/subjects")
suspend fun postSubjectName(): BaseResponse<Unit?>

@DELETE("/api/v1/subjects")
suspend fun deleteSubjects(): BaseResponse<Unit?>
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package org.android.bbangzip.domain.usecase

import org.android.bbangzip.domain.repository.remote.SubjectRepository

class DeleteSubjectsUseCase(
private val subjectRepository: SubjectRepository
) {
suspend operator fun invoke(): Result<Unit> =
subjectRepository.deleteSubjects()
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ class SubjectContract {
data class UpdateSubjectCardList(val subjectList: List<SubjectCardModel>) : SubjectReduce

data class UpdateDeletedSet(val subjectId: Int) : SubjectReduce

data object RestoreDeletedSet : SubjectReduce
}

sealed interface SubjectSideEffect : BaseContract.SideEffect {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ package org.android.bbangzip.presentation.ui.subject
import android.os.Parcelable
import androidx.lifecycle.SavedStateHandle
import dagger.hilt.android.lifecycle.HiltViewModel
import org.android.bbangzip.domain.usecase.DeleteSubjectsUseCase
import org.android.bbangzip.domain.usecase.GetSubjectInfoUseCase
import org.android.bbangzip.domain.usecase.PostAddSubjectNameUseCase
import org.android.bbangzip.presentation.component.card.BbangZipCardState
import org.android.bbangzip.presentation.model.card.SubjectCardModel
import org.android.bbangzip.presentation.type.CardViewType
Expand All @@ -16,6 +18,8 @@ class SubjectViewModel
@Inject
constructor(
private val getSubjectInfoUseCase: GetSubjectInfoUseCase,
private val deleteSubjectsUseCase: DeleteSubjectsUseCase,
private val postAddSubjectNameUseCase: PostAddSubjectNameUseCase,
savedStateHandle: SavedStateHandle,
) : BaseViewModel<SubjectContract.SubjectEvent, SubjectContract.SubjectState, SubjectContract.SubjectReduce, SubjectContract.SubjectSideEffect>(
savedStateHandle = savedStateHandle,
Expand Down Expand Up @@ -124,6 +128,12 @@ class SubjectViewModel
subjectList = reduce.subjectList,
)
}

is SubjectContract.SubjectReduce.RestoreDeletedSet -> {
state.copy(
subjectSetToDelete = setOf(),
)
}
}
}

Expand Down Expand Up @@ -158,4 +168,25 @@ class SubjectViewModel
Timber.tag("SubjectInfo").d(error)
}
}

private suspend fun deleteSubjects() {
deleteSubjectsUseCase()
.onSuccess {
updateState(SubjectContract.SubjectReduce.UpdateToDefaultMode)
getSubjectInfo()
}
.onFailure { error ->
Timber.tag("이승범").d(error)
}
}

private suspend fun postAddSubjectName() {
postAddSubjectNameUseCase()
.onSuccess {
Timber.tag("AddSubject").d("AddSubjectName 성공")
}
.onFailure { error ->
Timber.tag("이승범").d(error)
}
}
}

0 comments on commit dc1fae2

Please sign in to comment.