Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat/home: 이동봉사 공고 목록에 있는 item 클릭시 상세 화면으로 이동 #50

Merged
merged 23 commits into from
Nov 22, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
e6c870f
chore: dummy file created
kang9366 Nov 22, 2023
6e19962
Merge branch 'develop' of https://github.com/PawWithU/ConnectDog-AOS …
kang9366 Nov 22, 2023
7fa28f0
feat: InterApiService 객체 의존성 주입
kang9366 Nov 22, 2023
a308ecb
feat: 마이페이지에 필요한 api 연결 함수 구현
kang9366 Nov 22, 2023
c275b01
feat: 마이페이지 api 연결
kang9366 Nov 22, 2023
4834931
chore: dummy file created
kang9366 Nov 22, 2023
19709c4
feat: 저장한 이동봉사 공고 목록 화면으로 이동하기 위한 함수 추가
kang9366 Nov 22, 2023
154fb52
feat: 저장한 이동봉사 공고 목록 화면으로 이동하기 위한 함수 추가
kang9366 Nov 22, 2023
eb7e6c9
feat: 저장한 이동봉사 공고 목록 화면으로 이동하기 위한 함수 추가
kang9366 Nov 22, 2023
49157c2
feat: 마이페이지 api 연결에 필요한 함수 추가
kang9366 Nov 22, 2023
cd3d8b8
feat: 마이페이지 api 연결에 필요한 함수 추가
kang9366 Nov 22, 2023
e23938e
style: string resource 추가
kang9366 Nov 22, 2023
2a65315
feat: 마이페이지 api 연결
kang9366 Nov 22, 2023
926cf34
feat: 배지 조회 dto 추가
kang9366 Nov 22, 2023
4e30a48
feat: 저장한 이동봉사 공고 목록 화면 ui 구현
kang9366 Nov 22, 2023
37c552b
feat: 사용자 정보 dto 추가
kang9366 Nov 22, 2023
c577eba
feat: 마이페이지 api 연결
kang9366 Nov 22, 2023
eaeb243
update: apply ktlint formatting
kang9366 Nov 22, 2023
98e44b6
chore: dummy file created
kang9366 Nov 22, 2023
e359cdc
feat: 검색 화면에서 item을 클릭하면 상세화면으로 이동하도록 구현
kang9366 Nov 22, 2023
612a9d0
feat: 검색 화면에서 item을 클릭하면 상세화면으로 이동하도록 구현
kang9366 Nov 22, 2023
222fec7
feat: 검색 화면에서 item을 클릭하면 상세화면으로 이동하도록 구현
kang9366 Nov 22, 2023
8c439be
update: apply ktlint formatting
kang9366 Nov 22, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Original file line number Diff line number Diff line change
@@ -1,10 +1,5 @@
package com.kusitms.connectdog.core.data.api

import com.kusitms.connectdog.core.data.api.model.AnnouncementHomeResponseItem
import com.kusitms.connectdog.core.data.api.model.AnnouncementSearchResponseItem
import com.kusitms.connectdog.core.data.api.model.ApplicationCompletedResponseItem
import com.kusitms.connectdog.core.data.api.model.ApplicationInProgressResponseItem
import com.kusitms.connectdog.core.data.api.model.ApplicationWaitingResponseItem
import com.kusitms.connectdog.core.data.api.model.LoginResponseItem
import com.kusitms.connectdog.core.data.api.model.MyInfoResponseItem
import com.kusitms.connectdog.core.data.api.model.NormalLoginBody
Expand All @@ -16,6 +11,9 @@ import com.kusitms.connectdog.core.data.api.model.volunteer.AnnouncementSearchRe
import com.kusitms.connectdog.core.data.api.model.volunteer.ApplicationCompletedResponseItem
import com.kusitms.connectdog.core.data.api.model.volunteer.ApplicationInProgressResponseItem
import com.kusitms.connectdog.core.data.api.model.volunteer.ApplicationWaitingResponseItem
import com.kusitms.connectdog.core.data.api.model.volunteer.BadgeResponse
import com.kusitms.connectdog.core.data.api.model.volunteer.BookmarkResponseItem
import com.kusitms.connectdog.core.data.api.model.volunteer.UserInfoResponse
import retrofit2.http.Body
import retrofit2.http.GET
import retrofit2.http.Headers
Expand Down Expand Up @@ -78,6 +76,9 @@ internal interface ApiService {
@Path("applicationId") applicationId: Long
): VolunteerResponse

/**
* 로그인
*/
@Headers("Content-Type: application/json")
@POST("/volunteers/login")
suspend fun postLoginData(
Expand All @@ -89,6 +90,18 @@ internal interface ApiService {
@Body socialLoginBody: SocialLoginBody
): LoginResponseItem

/**
* 이동봉사자 > 마이페이지
*/
@GET("/volunteers/my/info")
suspend fun getMyInfo(): MyInfoResponseItem

@GET("/volunteers/my/profile")
suspend fun getUserInfo(): UserInfoResponse

@GET("/volunteers/my/badges")
suspend fun getBadge(): List<BadgeResponse>

@GET("/volunteers/my/bookmarks")
suspend fun getBookmarkData(): List<BookmarkResponseItem>
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.kusitms.connectdog.core.data.api.model.volunteer

data class BadgeResponse(
val badgeId: Long,
val image: String?,
val name: String
)

// data class BadgeResponseItem(
// val badgeId: Long,
// val image: String?,
// val name: String
// )
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.kusitms.connectdog.core.data.api.model.volunteer

data class BookmarkResponseItem(
val arrivalLoc: String,
val departureLoc: String,
val endDate: String,
val intermediaryName: String,
val mainImage: String,
val postId: Long,
val startDate: String,
val isKennel: Boolean
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.kusitms.connectdog.core.data.api.model.volunteer

data class UserInfoResponse(
val nickname: String,
val profileImageNum: Int
)
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package com.kusitms.connectdog.core.data.di
import android.content.Context
import android.util.Log
import com.kusitms.connectdog.core.data.api.ApiService
import com.kusitms.connectdog.core.data.api.InterApiService
import com.kusitms.connectdog.core.data.repository.DataStoreRepository
import com.squareup.moshi.Moshi
import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory
Expand Down Expand Up @@ -56,6 +57,19 @@ internal object ApiModule {
}
}

@Provides
@Singleton
fun provideIntermediatorApiService(
okHttpClient: OkHttpClient,
moshi: Moshi
): InterApiService {
return Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(MoshiConverterFactory.create(moshi))
.client(okHttpClient).build()
.create(InterApiService::class.java)
}

@Provides
@Singleton
fun provideDataStoreRepository(@ApplicationContext context: Context): DataStoreRepository {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
package com.kusitms.connectdog.core.data.repository

import com.kusitms.connectdog.core.data.api.model.MyInfoResponseItem
import com.kusitms.connectdog.core.data.api.model.volunteer.BadgeResponse
import com.kusitms.connectdog.core.data.api.model.volunteer.BookmarkResponseItem
import com.kusitms.connectdog.core.data.api.model.volunteer.UserInfoResponse

interface MyPageRepository {
suspend fun getMyInfo(): MyInfoResponseItem
suspend fun getUserInfo(): UserInfoResponse
suspend fun getBadge(): List<BadgeResponse>
suspend fun getBookmarkData(): List<BookmarkResponseItem>
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@ package com.kusitms.connectdog.core.data.repository

import com.kusitms.connectdog.core.data.api.ApiService
import com.kusitms.connectdog.core.data.api.model.MyInfoResponseItem
import com.kusitms.connectdog.core.data.api.model.volunteer.BadgeResponse
import com.kusitms.connectdog.core.data.api.model.volunteer.BookmarkResponseItem
import com.kusitms.connectdog.core.data.api.model.volunteer.UserInfoResponse
import javax.inject.Inject

internal class MyPageRepositoryImpl @Inject constructor(
Expand All @@ -10,4 +13,16 @@ internal class MyPageRepositoryImpl @Inject constructor(
override suspend fun getMyInfo(): MyInfoResponseItem {
return api.getMyInfo()
}

override suspend fun getUserInfo(): UserInfoResponse {
return api.getUserInfo()
}

override suspend fun getBadge(): List<BadgeResponse> {
return api.getBadge()
}

override suspend fun getBookmarkData(): List<BookmarkResponseItem> {
return api.getBookmarkData()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ fun NavGraphBuilder.homeNavGraph(
}

composable(route = HomeRoute.search) {
SearchScreen(onBackClick = onBackClick, onNavigateToFilter = onNavigateToFilter)
SearchScreen(onBackClick = onBackClick, onNavigateToFilter = onNavigateToFilter, onDetailClick = onNavigateToDetail)
}

composable(
Expand All @@ -121,7 +121,8 @@ fun NavGraphBuilder.homeNavGraph(
SearchScreen(
onBackClick = onBackClick,
filterArg = filter ?: Filter(),
onNavigateToFilter = onNavigateToFilter
onNavigateToFilter = onNavigateToFilter,
onDetailClick = onNavigateToDetail
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -330,7 +330,8 @@ private fun AnnouncementContent(uiState: AnnouncementUiState, onClick: () -> Uni
AnnouncementListContent(
list = uiState.announcements,
modifier = modifier,
arrangement = Arrangement.spacedBy(12.dp)
arrangement = Arrangement.spacedBy(12.dp),
onClick = onClick
)
}

Expand Down Expand Up @@ -362,11 +363,12 @@ private fun ReviewContent(uiState: ReviewUiState) {
private fun AnnouncementListContent(
list: List<Announcement>,
modifier: Modifier,
arrangement: Arrangement.Horizontal
arrangement: Arrangement.Horizontal,
onClick: () -> Unit
) {
LazyRow(horizontalArrangement = arrangement, modifier = modifier) {
items(list.take(10)) {
AnnouncementCardContent(announcement = it)
AnnouncementCardContent(announcement = it, onClick = onClick)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ internal fun SearchScreen(
onBackClick: () -> Unit,
filterArg: Filter? = Filter(),
viewModel: SearchViewModel = hiltViewModel(),
onDetailClick: () -> Unit,
onNavigateToFilter: (Filter) -> Unit
) {
viewModel.setFilter(filterArg!!)
Expand All @@ -79,14 +80,18 @@ internal fun SearchScreen(
onClick = { onNavigateToFilter(filter) }
)
}
AnnouncementContent(uiState = announcementUiState) {
SortButton(
modifier = Modifier
.padding(top = 20.dp, end = 20.dp)
.fillMaxWidth(),
isByDeadline = isByDeadline
) { viewModel.changeOrderCondition() }
}
AnnouncementContent(
uiState = announcementUiState,
sortBtn = {
SortButton(
modifier = Modifier
.padding(top = 20.dp, end = 20.dp)
.fillMaxWidth(),
isByDeadline = isByDeadline
) { viewModel.changeOrderCondition() }
},
onClick = onDetailClick
)
}
}

Expand Down Expand Up @@ -232,10 +237,14 @@ private fun SortButton(
}

@Composable
private fun AnnouncementContent(uiState: AnnouncementUiState, sortBtn: @Composable () -> Unit) {
private fun AnnouncementContent(
uiState: AnnouncementUiState,
sortBtn: @Composable () -> Unit,
onClick: () -> Unit
) {
when (uiState) {
is AnnouncementUiState.Announcements -> {
AnnouncementList(list = uiState.announcements, sortBtn = sortBtn)
AnnouncementList(list = uiState.announcements, sortBtn = sortBtn, onClick = onClick)
}

else -> AnnouncementLoading(sortBtn)
Expand All @@ -245,14 +254,15 @@ private fun AnnouncementContent(uiState: AnnouncementUiState, sortBtn: @Composab
@Composable
private fun AnnouncementList(
list: List<Announcement>,
sortBtn: @Composable () -> Unit
sortBtn: @Composable () -> Unit,
onClick: () -> Unit
) {
LazyColumn {
item {
sortBtn()
}
items(list) {
AnnouncementContent(announcement = it)
AnnouncementContent(announcement = it, onClick = onClick)
}
}
}
Expand All @@ -269,14 +279,18 @@ private fun AnnouncementLoading(
sortBtn()
}
items(list) {
AnnouncementContent(announcement = it)
AnnouncementContent(announcement = it, onClick = {})
}
}
}

@Composable
private fun AnnouncementContent(announcement: Announcement) {
Column(modifier = Modifier.padding(20.dp)) {
private fun AnnouncementContent(announcement: Announcement, onClick: () -> Unit) {
Column(
modifier = Modifier
.padding(20.dp)
.clickable { onClick() }
) {
ListForUserItem(
modifier = Modifier.padding(vertical = 20.dp),
imageUrl = announcement.imageUrl,
Expand All @@ -302,14 +316,18 @@ private fun SearchScreenPreview() {
filter = Filter(),
onClick = { /*TODO*/ }
)
AnnouncementContent(uiState = AnnouncementUiState.Loading) {
SortButton(
modifier = Modifier
.padding(top = 20.dp, end = 20.dp)
.fillMaxWidth(),
isByDeadline = true
) { /*todo sort*/ }
}
AnnouncementContent(
uiState = AnnouncementUiState.Loading,
sortBtn = {
SortButton(
modifier = Modifier
.padding(top = 20.dp, end = 20.dp)
.fillMaxWidth(),
isByDeadline = true
) { /*todo sort*/ }
},
onClick = {}
)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
o/debug
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
i/debug_dex
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
i/
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
i/classes_global-synthetics
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
o/classes
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
i/
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
i/
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
o/hiltAggregated.jar
Binary file not shown.
Loading