Skip to content

Commit

Permalink
[merge] #67 develop 병합
Browse files Browse the repository at this point in the history
  • Loading branch information
kamja0510 committed Jan 24, 2025
2 parents 3920c12 + 2c741a1 commit 681ac9a
Show file tree
Hide file tree
Showing 60 changed files with 2,861 additions and 150 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package org.android.bbangzip.data.datasource.remote

import org.android.bbangzip.data.dto.request.RequestAddSubjectsDto
import org.android.bbangzip.data.dto.request.RequestDeleteSubjectsDto
import org.android.bbangzip.data.dto.request.RequestSubjectOptions
import org.android.bbangzip.data.dto.response.ResponseSubjectFilterDto
import org.android.bbangzip.data.service.SubjectService
import org.android.bbangzip.data.util.base.BaseResponse
Expand All @@ -9,4 +12,14 @@ class SubjectRemoteDataSource
@Inject
constructor(private val subjectService: SubjectService) {
suspend fun getSubjectInfo(): BaseResponse<ResponseSubjectFilterDto?> = subjectService.getSubjectInfo()

suspend fun postSubjectName(requestAddSubjectsDto: RequestAddSubjectsDto): BaseResponse<Unit?> = subjectService.postSubjectName(requestAddSubjectsDto)

suspend fun deleteSubjects(requestDeleteSubjectsDto: RequestDeleteSubjectsDto): BaseResponse<Unit?> = subjectService.deleteSubjects(requestDeleteSubjectsDto)

suspend fun putSubjectOptions(
subjectId: Int,
options: String,
requestSubjectOptions: RequestSubjectOptions,
): BaseResponse<Unit?> = subjectService.putSubjectOptions(subjectId, options, requestSubjectOptions)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package org.android.bbangzip.data.dto.request

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

@Serializable
data class RequestAddSubjectsDto(
@SerialName("subjectName")
val subjectName: String,
@SerialName("year")
val year: Int,
@SerialName("semester")
val semester: String,
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package org.android.bbangzip.data.dto.request

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

@Serializable
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
@@ -0,0 +1,10 @@
package org.android.bbangzip.data.dto.request

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

@Serializable
data class RequestSubjectOptions(
@SerialName("value")
val value: String,
)
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package org.android.bbangzip.data.repositoryImpl.remote

import org.android.bbangzip.data.datasource.remote.SubjectRemoteDataSource
import org.android.bbangzip.data.dto.request.RequestAddSubjectsDto
import org.android.bbangzip.data.dto.request.RequestDeleteSubjectsDto
import org.android.bbangzip.data.dto.request.RequestSubjectOptions
import org.android.bbangzip.domain.model.SubjectInfoEntity
import org.android.bbangzip.domain.repository.remote.SubjectRepository
import javax.inject.Inject
Expand All @@ -18,4 +21,29 @@ class SubjectRepositoryImpl

responseData.toSubjectInfoEntity()
}

override suspend fun postSubjectName(requestAddSubjectsDto: RequestAddSubjectsDto): Result<Unit> =
runCatching {
val response = subjectRemoteDataSource.postSubjectName(requestAddSubjectsDto = requestAddSubjectsDto)

response.code ?: throw IllegalStateException(response.message ?: "Null Error")
}

override suspend fun deleteSubjects(requestDeleteSubjectsDto: RequestDeleteSubjectsDto): Result<Unit> =
runCatching {
val response = subjectRemoteDataSource.deleteSubjects(requestDeleteSubjectsDto = requestDeleteSubjectsDto)

response.code ?: throw IllegalStateException(response.message ?: "Null Error")
}

override suspend fun putSubjectOptions(
subjectId: Int,
options: String,
requestSubjectOptions: RequestSubjectOptions,
): Result<Unit> =
runCatching {
val response = subjectRemoteDataSource.putSubjectOptions(subjectId, options, requestSubjectOptions)

response.code ?: throw IllegalStateException(response.message ?: "Null Error")
}
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,34 @@
package org.android.bbangzip.data.service

import org.android.bbangzip.data.dto.request.RequestAddSubjectsDto
import org.android.bbangzip.data.dto.request.RequestDeleteSubjectsDto
import org.android.bbangzip.data.dto.request.RequestSubjectOptions
import org.android.bbangzip.data.dto.response.ResponseSubjectFilterDto
import org.android.bbangzip.data.util.base.BaseResponse
import retrofit2.http.Body
import retrofit2.http.GET
import retrofit2.http.HTTP
import retrofit2.http.POST
import retrofit2.http.Path

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

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

@HTTP(method = "DELETE", path = "/api/v1/subjects", hasBody = true)
suspend fun deleteSubjects(
@Body requestDeleteSubjectsDto: RequestDeleteSubjectsDto,
): BaseResponse<Unit?>

@HTTP(method = "PUT", path = "/api/v1/subjects/{subjectId}/{options}", hasBody = true)
suspend fun putSubjectOptions(
@Path("subjectId") subjectId: Int,
@Path("options") options: String,
@Body requestSubjectOptions: RequestSubjectOptions,
): BaseResponse<Unit?>
}
18 changes: 18 additions & 0 deletions app/src/main/java/org/android/bbangzip/di/UseCaseModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import org.android.bbangzip.domain.repository.remote.SubjectRepository
import org.android.bbangzip.domain.repository.remote.UserRepository
import org.android.bbangzip.domain.usecase.DeleteLogoutUseCase
import org.android.bbangzip.domain.usecase.DeleteStudyPieceUseCase
import org.android.bbangzip.domain.usecase.DeleteSubjectsUseCase
import org.android.bbangzip.domain.usecase.DeleteWithdrawUseCase
import org.android.bbangzip.domain.usecase.FetchBbangZipUseCase
import org.android.bbangzip.domain.usecase.FetchDummyUseCase
Expand All @@ -23,11 +24,13 @@ import org.android.bbangzip.domain.usecase.GetSubjectDetailUseCase
import org.android.bbangzip.domain.usecase.GetSubjectInfoUseCase
import org.android.bbangzip.domain.usecase.GetToInfoUseCase
import org.android.bbangzip.domain.usecase.PostAddStudyUseCase
import org.android.bbangzip.domain.usecase.PostAddSubjectNameUseCase
import org.android.bbangzip.domain.usecase.PostAddTodoItemListUseCase
import org.android.bbangzip.domain.usecase.PostCompleteCardIdUseCase
import org.android.bbangzip.domain.usecase.PostDeletedItemListUseCase
import org.android.bbangzip.domain.usecase.PostOnboardingUseCase
import org.android.bbangzip.domain.usecase.PostUnCompleteCardIdUseCase
import org.android.bbangzip.domain.usecase.PutSubjectOptionsUseCase
import javax.inject.Singleton

@Module
Expand Down Expand Up @@ -108,6 +111,21 @@ class UseCaseModule {
fun providesGetSubjectInfoUseCase(subjectRepository: SubjectRepository): GetSubjectInfoUseCase =
GetSubjectInfoUseCase(subjectRepository = subjectRepository)

@Provides
@Singleton
fun providesPostAddSubjectNameUseCase(subjectRepository: SubjectRepository): PostAddSubjectNameUseCase =
PostAddSubjectNameUseCase(subjectRepository = subjectRepository)

@Provides
@Singleton
fun providesDeleteSubjectsUseCase(subjectRepository: SubjectRepository): DeleteSubjectsUseCase =
DeleteSubjectsUseCase(subjectRepository = subjectRepository)

@Provides
@Singleton
fun providesPutSubjectOptionsUseCase(subjectRepository: SubjectRepository): PutSubjectOptionsUseCase =
PutSubjectOptionsUseCase(subjectRepository = subjectRepository)

@Provides
@Singleton
fun providesPostAddStudyUseCase(studyRepository: StudyRepository): PostAddStudyUseCase =
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,20 @@
package org.android.bbangzip.domain.repository.remote

import org.android.bbangzip.data.dto.request.RequestAddSubjectsDto
import org.android.bbangzip.data.dto.request.RequestDeleteSubjectsDto
import org.android.bbangzip.data.dto.request.RequestSubjectOptions
import org.android.bbangzip.domain.model.SubjectInfoEntity

interface SubjectRepository {
suspend fun getSubjectInfo(): Result<SubjectInfoEntity>

suspend fun postSubjectName(requestAddSubjectsDto: RequestAddSubjectsDto): Result<Unit>

suspend fun deleteSubjects(requestDeleteSubjectsDto: RequestDeleteSubjectsDto): Result<Unit>

suspend fun putSubjectOptions(
subjectId: Int,
options: String,
requestSubjectOptions: RequestSubjectOptions,
): Result<Unit>
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package org.android.bbangzip.domain.usecase

import org.android.bbangzip.data.dto.request.RequestDeleteSubjectsDto
import org.android.bbangzip.domain.repository.remote.SubjectRepository

class DeleteSubjectsUseCase(
private val subjectRepository: SubjectRepository,
) {
suspend operator fun invoke(requestDeleteSubjectsDto: RequestDeleteSubjectsDto): Result<Unit> =
subjectRepository.deleteSubjects(requestDeleteSubjectsDto = requestDeleteSubjectsDto)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package org.android.bbangzip.domain.usecase

import org.android.bbangzip.data.dto.request.RequestAddSubjectsDto
import org.android.bbangzip.domain.repository.remote.SubjectRepository

class PostAddSubjectNameUseCase(
private val subjectRepository: SubjectRepository,
) {
suspend operator fun invoke(requestAddSubjectsDto: RequestAddSubjectsDto): Result<Unit> =
subjectRepository.postSubjectName(requestAddSubjectsDto = requestAddSubjectsDto)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package org.android.bbangzip.domain.usecase

import org.android.bbangzip.data.dto.request.RequestSubjectOptions
import org.android.bbangzip.domain.repository.remote.SubjectRepository

class PutSubjectOptionsUseCase(
private val subjectRepository: SubjectRepository,
) {
suspend operator fun invoke(
subjectId: Int,
options: String,
requestSubjectOptions: RequestSubjectOptions,
): Result<Unit> =
subjectRepository.putSubjectOptions(
subjectId = subjectId,
options = options,
requestSubjectOptions = requestSubjectOptions,
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,17 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.Icon
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.unit.dp
Expand Down Expand Up @@ -67,10 +70,15 @@ fun FriendCard(
verticalAlignment = Alignment.CenterVertically,
) {
Image(
imageVector = ImageVector.vectorResource(id = R.drawable.ic_user_one_default_24),
painter = painterResource(id = data.imgSrc),
contentDescription = null,
contentScale = ContentScale.FillBounds,
modifier = Modifier.size(48.dp),
modifier =
Modifier.size(48.dp).clip(CircleShape).border(
width = 1.dp,
color = BbangZipTheme.colors.lineNormal_68645E_22,
shape = CircleShape,
),
)

Spacer(modifier = Modifier.width(16.dp))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ data class AddStudyData(
val subjectName: String,
val pieceNumber: Int,
val examDate: String,
val examName: String,
val studyContent: String,
val startPage: String,
val endPage: String,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ data class SplitStudyData(
val subjectName: String,
val pieceNumber: Int,
val examDate: String,
val examName: String,
val studyContent: String,
val startPage: String,
val endPage: String,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package org.android.bbangzip.presentation.model.card

import android.os.Parcelable
import androidx.annotation.DrawableRes
import kotlinx.parcelize.Parcelize
import org.android.bbangzip.presentation.component.card.BbangZipCardState

Expand All @@ -10,4 +11,5 @@ data class FriendCardModel(
val friendName: String,
val imageUrl: String,
val state: BbangZipCardState,
@DrawableRes val imgSrc: Int = 0,
) : Parcelable
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package org.android.bbangzip.presentation.ui.friend

import android.os.Parcelable
import kotlinx.parcelize.Parcelize
import org.android.bbangzip.R
import org.android.bbangzip.presentation.component.card.BbangZipCardState
import org.android.bbangzip.presentation.model.card.FriendCardModel
import org.android.bbangzip.presentation.type.FriendMenuType
Expand All @@ -17,42 +18,49 @@ class FriendContract {
friendName = "이승범",
imageUrl = "https://example.com/alice.jpg",
state = BbangZipCardState.DEFAULT,
imgSrc = R.drawable.img_friend_profile_1,
),
FriendCardModel(
friendId = 2,
friendName = "김재민",
imageUrl = "https://example.com/bob.jpg",
state = BbangZipCardState.DEFAULT,
imgSrc = R.drawable.img_friend_profile_2,
),
FriendCardModel(
friendId = 3,
friendName = "하지은",
imageUrl = "https://example.com/charlie.jpg",
state = BbangZipCardState.DEFAULT,
imgSrc = R.drawable.img_friend_profile_3,
),
FriendCardModel(
friendId = 4,
friendName = "신우연",
imageUrl = "https://example.com/alice.jpg",
state = BbangZipCardState.DEFAULT,
imgSrc = R.drawable.img_friend_profile_4,
),
FriendCardModel(
friendId = 5,
friendName = "김재민",
imageUrl = "https://example.com/bob.jpg",
state = BbangZipCardState.DEFAULT,
imgSrc = R.drawable.img_friend_profile_1,
),
FriendCardModel(
friendId = 6,
friendName = "하지은",
imageUrl = "https://example.com/charlie.jpg",
state = BbangZipCardState.DEFAULT,
imgSrc = R.drawable.img_friend_profile_2,
),
FriendCardModel(
friendId = 7,
friendName = "이승범",
imageUrl = "https://example.com/alice.jpg",
state = BbangZipCardState.DEFAULT,
imgSrc = R.drawable.img_friend_profile_3,
),
),
val menuFilterType: FriendMenuType = FriendMenuType.ALL,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ fun FriendScreen(
modifier =
Modifier
.fillMaxWidth()
.padding(24.dp),
.padding(bottom = 24.dp, start = 24.dp, end = 24.dp),
) {
Text(
text = stringResource(R.string.friend_boss_count, friendState.friendList.size),
Expand Down
Loading

0 comments on commit 681ac9a

Please sign in to comment.