Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/develop' into feat/#113-home-filter
Browse files Browse the repository at this point in the history
  • Loading branch information
Hyobeen-Park committed Jul 18, 2024
2 parents 76128d7 + ea5e24b commit ee2a360
Show file tree
Hide file tree
Showing 29 changed files with 662 additions and 249 deletions.
2 changes: 1 addition & 1 deletion app/src/main/java/com/terning/point/di/AuthInterceptor.kt
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import javax.inject.Inject
class AuthInterceptor @Inject constructor(
private val tokenReissueRepository: TokenReissueRepository,
private val terningDataStore: TerningDataStore,
@ApplicationContext private val context: Context
@ApplicationContext private val context: Context,
) : Interceptor {

override fun intercept(chain: Interceptor.Chain): Response {
Expand Down
12 changes: 9 additions & 3 deletions app/src/main/java/com/terning/point/di/DataSourceModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,19 @@ package com.terning.point.di
import com.terning.data.datasource.AuthDataSource
import com.terning.data.datasource.CalendarDataSource
import com.terning.data.datasource.FilteringDataSource
import com.terning.data.datasource.HomeDataSource
import com.terning.data.datasource.InternDataSource
import com.terning.data.datasource.HomeDataSource
import com.terning.data.datasource.MyPageDataSource
import com.terning.data.datasource.ScrapDataSource
import com.terning.data.datasource.SearchDataSource
import com.terning.data.datasource.TokenReissueDataSource
import com.terning.data.datasourceimpl.AuthDataSourceImpl
import com.terning.data.datasourceimpl.CalendarDataSourceImpl
import com.terning.data.datasourceimpl.FilteringDataSourceImpl
import com.terning.data.datasourceimpl.HomeDataSourceImpl
import com.terning.data.datasourceimpl.InternDataSourceImpl
import com.terning.data.datasourceimpl.HomeDataSourceImpl
import com.terning.data.datasourceimpl.MyPageDataSourceImpl
import com.terning.data.datasourceimpl.ScrapDataSourceImpl
import com.terning.data.datasourceimpl.SearchDataSourceImpl
import com.terning.data.datasourceimpl.TokenReissueDataSourceImpl
import dagger.Binds
Expand All @@ -36,7 +38,7 @@ abstract class DataSourceModule {

@Binds
@Singleton
abstract fun bindSearchViewsDataSource(searchDataSourceImpl: SearchDataSourceImpl):
abstract fun bindSearchDataSource(searchDataSourceImpl: SearchDataSourceImpl):
SearchDataSource

@Binds
Expand All @@ -56,6 +58,10 @@ abstract class DataSourceModule {
@Singleton
abstract fun bindHomeDataSource(homeDataSourceImpl: HomeDataSourceImpl): HomeDataSource

@Binds
@Singleton
abstract fun bindScrapDataSource(scrapDataSourceImpl: ScrapDataSourceImpl): ScrapDataSource

@Binds
@Singleton
abstract fun bindMyPageDataSource(myPageDataSourceImpl: MyPageDataSourceImpl): MyPageDataSource
Expand Down
12 changes: 9 additions & 3 deletions app/src/main/java/com/terning/point/di/RepositoryModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,20 @@ package com.terning.point.di
import com.terning.data.repositoryimpl.AuthRepositoryImpl
import com.terning.data.repositoryimpl.CalendarRepositoryImpl
import com.terning.data.repositoryimpl.FilteringRepositoryImpl
import com.terning.data.repositoryimpl.HomeRepositoryImpl
import com.terning.data.repositoryimpl.InternRepositoryImpl
import com.terning.data.repositoryimpl.HomeRepositoryImpl
import com.terning.data.repositoryimpl.MyPageRepositoryImpl
import com.terning.data.repositoryimpl.ScrapRepositoryImpl
import com.terning.data.repositoryimpl.SearchRepositoryImpl
import com.terning.data.repositoryimpl.TokenReissueRepositoryImpl
import com.terning.data.repositoryimpl.TokenRepositoryImpl
import com.terning.domain.repository.AuthRepository
import com.terning.domain.repository.CalendarRepository
import com.terning.domain.repository.FilteringRepository
import com.terning.domain.repository.HomeRepository
import com.terning.domain.repository.InternRepository
import com.terning.domain.repository.HomeRepository
import com.terning.domain.repository.MyPageRepository
import com.terning.domain.repository.ScrapRepository
import com.terning.domain.repository.SearchRepository
import com.terning.domain.repository.TokenReissueRepository
import com.terning.domain.repository.TokenRepository
Expand Down Expand Up @@ -42,7 +44,7 @@ abstract class RepositoryModule {

@Binds
@Singleton
abstract fun bindSearchViewsRepository(searchViewsRepositoryImpl: SearchRepositoryImpl): SearchRepository
abstract fun bindSearchRepository(searchRepositoryImpl: SearchRepositoryImpl): SearchRepository

@Binds
@Singleton
Expand All @@ -60,6 +62,10 @@ abstract class RepositoryModule {
@Singleton
abstract fun bindHomeRepository(homeRepositoryImpl: HomeRepositoryImpl): HomeRepository

@Binds
@Singleton
abstract fun bindScrapRepository(scrapRepositoryImpl: ScrapRepositoryImpl): ScrapRepository

@Binds
@Singleton
abstract fun bindMyPageRepository(myPageRepositoryImpl: MyPageRepositoryImpl): MyPageRepository
Expand Down
8 changes: 7 additions & 1 deletion app/src/main/java/com/terning/point/di/ServiceModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,11 @@ package com.terning.point.di

import com.terning.data.service.AuthService
import com.terning.data.service.CalendarService
import com.terning.data.service.InternService
import com.terning.data.service.FilteringService
import com.terning.data.service.HomeService
import com.terning.data.service.InternService
import com.terning.data.service.MyPageService
import com.terning.data.service.ScrapService
import com.terning.data.service.SearchService
import com.terning.data.service.TokenReissueService
import com.terning.point.di.qualifier.JWT
Expand Down Expand Up @@ -61,4 +62,9 @@ object ServiceModule {
@Singleton
fun provideMyPageService(@JWT retrofit: Retrofit): MyPageService =
retrofit.create(MyPageService::class.java)

@Provides
@Singleton
fun provideScrapService(@JWT retrofit: Retrofit): ScrapService =
retrofit.create(ScrapService::class.java)
}
Original file line number Diff line number Diff line change
@@ -1,43 +1,36 @@
package com.terning.feature.intern.component
package com.terning.core.designsystem.component.dialog

import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.border
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.aspectRatio
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.terning.core.R
import com.terning.core.designsystem.component.button.RoundButton
import com.terning.core.designsystem.theme.Grey200
import com.terning.core.designsystem.theme.Grey350
import com.terning.core.designsystem.theme.Grey500
import com.terning.core.designsystem.theme.TerningMain
import com.terning.core.designsystem.theme.TerningTheme
import com.terning.feature.intern.InternViewModel


@Composable
fun ScrapCancelDialogContent(
viewModel: InternViewModel = hiltViewModel(),
onClickScrapCancel: () -> Unit = {},
) {
val state by viewModel.state.collectAsStateWithLifecycle()

Box(
modifier = Modifier
.fillMaxWidth()
Expand All @@ -47,33 +40,31 @@ fun ScrapCancelDialogContent(
Column(
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = 11.dp),
.padding(horizontal = 16.dp),
horizontalAlignment = Alignment.CenterHorizontally
) {
Row(
Image(
painter = painterResource(
id = R.drawable.ic_character1
),
modifier = Modifier
.size(60.dp)
.padding(horizontal = 4.dp)
.fillMaxWidth()
.aspectRatio(1.3f)
.background(
Grey200,
shape = RoundedCornerShape(size = 15.dp)
)
.border(
width = 1.dp,
color = TerningMain,
shape = RoundedCornerShape(size = 15.dp)
)
) {
Image(
painter = painterResource(
id = R.drawable.ic_character1
),
modifier = Modifier
.fillMaxWidth()
.background(
Grey200,
shape = RoundedCornerShape(size = 15.dp)
),
contentDescription = null,
contentScale = ContentScale.Fit,
alignment = Alignment.Center
)
}
contentDescription = null,
contentScale = ContentScale.Fit,
alignment = Alignment.Center
)

Text(
text = stringResource(id = R.string.dialog_content_scrap_cancel_main_title),
textAlign = TextAlign.Center,
Expand All @@ -86,20 +77,22 @@ fun ScrapCancelDialogContent(
style = TerningTheme.typography.body5,
color = Grey350,
modifier = Modifier.padding(
top = 5.dp,
bottom = 41.dp
top = 5.dp
)
)
RoundButton(
style = TerningTheme.typography.button3,
paddingVertical = 12.dp,
cornerRadius = 8.dp,
text = R.string.dialog_scrap_cancel_button,
onButtonClick = {
viewModel.updateScrapDialogVisible(false)
},
modifier = Modifier.padding(bottom = 8.dp)
)
Box(
modifier = Modifier.fillMaxSize(),
contentAlignment = Alignment.BottomCenter
) {
RoundButton(
style = TerningTheme.typography.button3,
paddingVertical = 12.dp,
cornerRadius = 8.dp,
text = R.string.dialog_scrap_cancel_button,
onButtonClick = onClickScrapCancel,
modifier = Modifier.padding(bottom = 8.dp)
)
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ fun TerningBasicDialog(
) {
Box(
modifier = Modifier
.size(width = 300.dp, height = 412.dp)
.size(width = 300.dp, height = 472.dp)
.background(
color = White,
shape = RoundedCornerShape(20.dp)
Expand Down
18 changes: 18 additions & 0 deletions data/src/main/java/com/terning/data/datasource/ScrapDataSource.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.terning.data.datasource

import com.terning.data.dto.NonDataBaseResponse
import com.terning.domain.entity.request.ScrapRequestModel

interface ScrapDataSource {
suspend fun postScrap(
scrapRequestModel: ScrapRequestModel,
): NonDataBaseResponse

suspend fun deleteScrap(
scrapRequestModel: ScrapRequestModel,
): NonDataBaseResponse

suspend fun patchScrap(
scrapRequestModel: ScrapRequestModel,
): NonDataBaseResponse
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.terning.data.datasourceimpl

import com.terning.data.datasource.ScrapDataSource
import com.terning.data.dto.NonDataBaseResponse
import com.terning.data.dto.request.ScrapColorRequestDto
import com.terning.data.service.ScrapService
import com.terning.domain.entity.request.ScrapRequestModel
import javax.inject.Inject

class ScrapDataSourceImpl @Inject constructor(
private val scrapService: ScrapService,
) : ScrapDataSource {
override suspend fun postScrap(scrapRequestModel: ScrapRequestModel): NonDataBaseResponse =
scrapService.postScrap(
scrapRequestModel.id,
ScrapColorRequestDto(scrapRequestModel.color)
)

override suspend fun deleteScrap(scrapRequestModel: ScrapRequestModel): NonDataBaseResponse =
scrapService.deleteScrap(scrapRequestModel.id)

override suspend fun patchScrap(scrapRequestModel: ScrapRequestModel): NonDataBaseResponse =
scrapService.patchScrap(
scrapRequestModel.id,
ScrapColorRequestDto(scrapRequestModel.color)
)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.terning.data.dto.request

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

@Serializable
data class ScrapColorRequestDto(
@SerialName("color")
val color: Int? = null,
)
Original file line number Diff line number Diff line change
Expand Up @@ -56,4 +56,4 @@ data class InternResponseDto(
scrapId = scrapId
)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,4 @@ data class SearchScrapsResponseDto(
)
}
}
}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.terning.data.repositoryimpl

import com.terning.data.datasource.ScrapDataSource
import com.terning.domain.entity.request.ScrapRequestModel
import com.terning.domain.repository.ScrapRepository
import javax.inject.Inject

class ScrapRepositoryImpl @Inject constructor(
private val scrapDataSource: ScrapDataSource,
) : ScrapRepository {
override suspend fun postScrap(scrapRequestModel: ScrapRequestModel)
: Result<Unit> = runCatching {
scrapDataSource.postScrap(scrapRequestModel)
}

override suspend fun deleteScrap(scrapRequestModel: ScrapRequestModel)
: Result<Unit> = runCatching {
scrapDataSource.deleteScrap(scrapRequestModel)
}
}
28 changes: 28 additions & 0 deletions data/src/main/java/com/terning/data/service/ScrapService.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.terning.data.service

import com.terning.data.dto.NonDataBaseResponse
import com.terning.data.dto.request.ScrapColorRequestDto
import retrofit2.http.Body
import retrofit2.http.DELETE
import retrofit2.http.PATCH
import retrofit2.http.POST
import retrofit2.http.Path

interface ScrapService {
@POST("api/v1/scraps/{internshipAnnouncementId}")
suspend fun postScrap(
@Path(value = "internshipAnnouncementId") internshipAnnouncementId: Long,
@Body body: ScrapColorRequestDto,
): NonDataBaseResponse

@DELETE("api/v1/scraps/{scrapId}")
suspend fun deleteScrap(
@Path(value = "scrapId") scrapId: Long,
): NonDataBaseResponse

@PATCH("api/v1/scraps/{scrapId}")
suspend fun patchScrap(
@Path(value = "scrapId") scrapId: Long,
@Body body: ScrapColorRequestDto,
): NonDataBaseResponse
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.terning.domain.entity.request

data class ScrapRequestModel(
val id: Long,
val color: Int? = 0,
)
Loading

0 comments on commit ee2a360

Please sign in to comment.