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/#33] explore, like / 탐색뷰, 좋아요뷰 서버 통신 구현 #40

Merged
merged 110 commits into from
Sep 26, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
110 commits
Select commit Hold shift + click to select a range
b9ddfa8
[ADD/#33] 데이터바인딩 코드 약간의 추가 및 수정
0zlrlo Jul 6, 2023
9c0d1fc
[ADD/#33] serializable 까먹지 말고 넣자..
0zlrlo Jul 6, 2023
a052c7d
[MOD/#33] selector 관련하여 코드 수정
0zlrlo Jul 7, 2023
92a1f5a
[ADD/#33] selector 관련 코드 추가
0zlrlo Jul 7, 2023
b0975cb
[FEAT/#33] selector 하나의 버튼만 누를 수 있게 하는 것 드디어 구현
0zlrlo Jul 7, 2023
eb73d5c
[ADD/#33] 최신 탐색뷰에도 적용
0zlrlo Jul 7, 2023
7ec383b
[ADD/#33] 좋아요뷰에도 적용
0zlrlo Jul 7, 2023
67cbdc7
[FEAT/#33] 카테고리 별 서버통신하기 구현 완료
0zlrlo Jul 7, 2023
4f80942
[ADD/#33] clickable 코드 추가하기
0zlrlo Jul 7, 2023
fb12d5c
[ADD/#33] recent 카테고리 별 서버통신 구현 완료
0zlrlo Jul 7, 2023
38b718e
[FEAT/#33] 삭제하다가 나갔을 때 모든 것이 초기화되는 기능 작성
0zlrlo Jul 8, 2023
0d861bd
[MOD/#33] 삭제했다가 다시 나가면 버튼 누르는 것도 초기화하게끔
0zlrlo Jul 8, 2023
ac3e542
[MOD/#33] 전체일 때는 쿼리에 안 들어가게 하기
0zlrlo Jul 8, 2023
6b8065f
[MOD/#33] 탐색뷰 들어갔을 때 기본적으로 전체가 선택되어 있게 해 주기
0zlrlo Jul 9, 2023
144c0e4
[ADD/#33] 카테고리 select 관련 코드 추가
0zlrlo Jul 9, 2023
d0e5c6e
[MOD/#33] 서버통신 및 데이터바인딩 코드 추가
0zlrlo Jul 9, 2023
08a0750
[MOD/#33] 편집버튼이 안 눌리는 문제 발생
0zlrlo Jul 9, 2023
8201b98
[ADD/#33] like dto 추가
0zlrlo Jul 10, 2023
b884850
[ADD/#33] 찜, 찜 취소 관련 서버 세팅
0zlrlo Jul 10, 2023
ae3ae4f
[FEAT/#33] 삭제 서버통신 구현
0zlrlo Jul 10, 2023
7b16a50
[FEAT/#33] 검색 뷰 좋아요 하는 것 서버통신 구현
0zlrlo Jul 10, 2023
858241c
[ADD/#33] 라사이클러뷰 파일 추가 및 인기뷰 좋아요 보내는 것 서버통신 구현
0zlrlo Jul 10, 2023
7572972
Merge branch 'develop' of https://github.com/Keyneez/Keyneez-AOS-Rele…
0zlrlo Jul 10, 2023
34dfa2f
[ADD/#33] 좋아요뷰 아이템 개수 세는 코드 추가
0zlrlo Jul 11, 2023
dc00654
[MOD/#33] 좋아요뷰 코드 수정
0zlrlo Jul 12, 2023
01b60aa
[ADD/#33] api 수정됨에 따라dto 코드 수정
0zlrlo Jul 12, 2023
e5857f7
[MOD/#33] 린트 수정
0zlrlo Jul 12, 2023
102a418
[MOD/#33] 좋아요 받아오는 것 해결
0zlrlo Jul 12, 2023
878726f
[MOD/#33] 좋아요뷰 하트 ui 수정
0zlrlo Jul 12, 2023
7f484cf
[MOD/#33] 좋아요하는 부분 수정
0zlrlo Jul 14, 2023
3b24187
[MOD/#33] 좋아요하는 부분 수정2
0zlrlo Jul 14, 2023
321def3
[MOD/#33] 좋아요하는 부분 수정3
0zlrlo Jul 14, 2023
a003130
[DEL/#33] 삭제 버튼 안 눌리는 것 원인 파악 완
0zlrlo Jul 15, 2023
6745c6e
[DEL/#33] 로그 제거
0zlrlo Jul 15, 2023
95792c0
[MOD/#33] isEdit 불리언에 따라 text 수정 part 1
0zlrlo Jul 15, 2023
409cab4
[MOD/#33] isEdit 불리언에 따라 text 수정 part 2
0zlrlo Jul 15, 2023
8eb2a08
[MOD/#33] isEdit 불리언에 따라 text 수정 part 3
0zlrlo Jul 15, 2023
c5706f1
[ADD/#33] 버튼 누를 때마다 서버통신할 수 있게
0zlrlo Jul 15, 2023
35fc0a7
[MOD/#33] 버튼 누를 때마다 서버통신
0zlrlo Jul 16, 2023
56dbb90
[MOD/#33] isEdit 불리언에 따라 text 수정 part4
0zlrlo Jul 16, 2023
9df02ac
[MOD/#33] 취소하면 default 카테고리로 가게끔 수정
0zlrlo Jul 17, 2023
e3dd497
[MOD/#33] 검색뷰 코드 수정
0zlrlo Jul 17, 2023
e848653
[DEL/#33] 검색뷰 코드 수정
0zlrlo Jul 17, 2023
461891c
[DEL/#33] 중복 submitlist 삭제
0zlrlo Jul 17, 2023
17442c5
[MOD/#33] 맨 처음에 들어 올 때 중복 서버통신 해결
0zlrlo Jul 17, 2023
18a6277
[MOD/#33] 좋아요뷰 코드 수정
0zlrlo Jul 17, 2023
397f026
[ADD/#33] 주석 추가
0zlrlo Jul 17, 2023
8f2b8c8
[MOD/#33] 검색뷰 observe 코드 수정
0zlrlo Jul 19, 2023
3f5cda1
[MOD/#33] 인기뷰 서버통신 초기에 한 번만 되게끔 수정
0zlrlo Jul 19, 2023
9788ecb
[MOD/#33] 인기뷰 코드 수정
0zlrlo Jul 19, 2023
b4e82da
[DEL/#33] clickable 코드 삭제
0zlrlo Jul 19, 2023
4064486
[MOD/#33] 최신뷰 서버통신 초기에 한 번만 되게끔 수정
0zlrlo Jul 19, 2023
3565afa
[MOD/#33] 검색뷰 코드 수정
0zlrlo Jul 19, 2023
0276014
[DEL/#33] 검색뷰 서버통신 초기에 한 번만 되게끔 수정..코드 한 줄 삭제하면 해결되는 문제였다니
0zlrlo Jul 19, 2023
b4efae7
[MOD/#33] 검색뷰 갯수 결과 visible 해결하기
0zlrlo Jul 19, 2023
a775455
[MOD/#33] 검색뷰 갯수 결과 가운데 위치 시키는 코드 수정
0zlrlo Jul 19, 2023
9404f1d
[ADD/#33] 탐색뷰들 다시 돌아 돌아 오면 새롭게 서버통신 되게끔
0zlrlo Jul 20, 2023
a25ccbe
[DEL/#33] 중복 서버통신 없애기
0zlrlo Jul 20, 2023
456b6ad
[DEL/#33] 불필요한 주석 삭제
0zlrlo Jul 20, 2023
0cab7f7
[MOD/#33] 검색뷰 키보드 숨기는 코드 수정
0zlrlo Jul 20, 2023
a3b2f78
[MOD/#33] 린트 수정
0zlrlo Jul 20, 2023
fbef1f2
[FEAT/#33] 최신뷰에서 좋아요 취소하기 기능 추가
0zlrlo Jul 21, 2023
cc669f2
[FEAT/#33] 인기뷰에서 좋아요 취소하기 기능 추가
0zlrlo Jul 21, 2023
614bd49
[FEAT/#33] 검색뷰에서 좋아요 취소하기 기능 추가
0zlrlo Jul 21, 2023
8a2a897
[DEL/#33] 인기뷰 불필요한 코드 삭제
0zlrlo Jul 22, 2023
2102376
[DEL/#33] 최신뷰 불필요한 코드 삭제
0zlrlo Jul 22, 2023
1d61a5e
[DEL/#33] fragment에 불필요한 코드 삭제
0zlrlo Jul 22, 2023
ff16578
[MOD/#33] 검색어가 있을 때만 검색버튼 눌러지게 하기
0zlrlo Jul 22, 2023
a4d00cd
[MOD/#33] 린트 수정
0zlrlo Jul 22, 2023
b8b85fb
[MOD/#33] 날짜 표시 코드 수정
0zlrlo Jul 22, 2023
9b561b9
[MOD/#33] 날짜 표시 코드 수정2
0zlrlo Jul 22, 2023
912750f
[DEL/#33] 불필요한 주석 삭제
0zlrlo Jul 23, 2023
7dec630
[ADD/#33] 토스트 관련 string 추가
0zlrlo Jul 24, 2023
b488b1b
[MOD/#33] 검색어가 없을 경우 toast 띄워 주기
0zlrlo Jul 24, 2023
21db91c
[ADD/#33] 인기 api 서버 기초세팅
0zlrlo Jul 24, 2023
1b54130
[MOD/#33] 인기 서버 경로 수정
0zlrlo Jul 24, 2023
6598496
[MOD/#33] 인기 api 추가에 따른 코드 수정
0zlrlo Jul 24, 2023
4561004
[MOD/#33] 코드 수정
0zlrlo Jul 24, 2023
2643a89
[MOD/#33] 코드 수정
0zlrlo Jul 24, 2023
9ddb9b6
[MOD/#33] 스낵바를 토스트로 통일하기
0zlrlo Jul 25, 2023
df9cd7f
[MOD/#33] 인기뷰 좋아요부분, 뷰 초기화 코드 수정
0zlrlo Jul 27, 2023
e80adde
[MOD/#33] 최신뷰 좋아요부분, 뷰 초기화 코드 수정
0zlrlo Jul 27, 2023
26cad19
[MOD/#33] 검색뷰 좋아요부분, 뷰 초기화 코드 수정
0zlrlo Jul 27, 2023
5ded7db
[MOD/#33] 좋아요뷰 뷰 초기화 코드 수정
0zlrlo Jul 27, 2023
92f9f28
[MOD/#33] 날짜 받아오는 부분 수정
0zlrlo Jul 28, 2023
ae7168b
[MOD/#33] 주석 수정
0zlrlo Jul 29, 2023
97474bf
[MOD/#33] service 수정
0zlrlo Aug 3, 2023
0e37893
[MOD/#33] api 수정
0zlrlo Aug 3, 2023
d1abae0
[MOD/#33] 코드 수정
0zlrlo Aug 3, 2023
b800d92
[MOD/#33] manifest 수정
0zlrlo Aug 4, 2023
b82337e
[MOD/#33] 대거 코드 수정
0zlrlo Aug 4, 2023
e92ec96
[MOD/#33] 서버통신 초기에 한 번만 하게끔 재수정
0zlrlo Aug 4, 2023
acabfc5
[DEL/#33]코드 삭제
0zlrlo Aug 4, 2023
907b299
[MOD/#33] 좋아요 취소 코드 수정
0zlrlo Aug 6, 2023
18e14da
[MOD/#33] 좋아요뷰 좋아요 취소 코드 수정
0zlrlo Aug 6, 2023
2986056
[MOD/#33] 검색뷰 데이터 size null에 대한 처리 수정
0zlrlo Aug 6, 2023
0e833fa
[MOD/#33] 서버통신하는 부분 List로 코드 수정
0zlrlo Aug 7, 2023
39af3b6
[MOD/#33] 코드 수정
0zlrlo Aug 7, 2023
bd61f6e
[DEL/#33] 코드 간소화
0zlrlo Aug 8, 2023
9debebe
[MOD/#33] 좋아요뷰 코드 수정
0zlrlo Aug 8, 2023
0177897
[DEL/#33] 주석 삭제
0zlrlo Aug 8, 2023
9ec062f
[ADD/#33] 디테일뷰와 연결하는 코드 추가
0zlrlo Aug 9, 2023
82209bf
[ADD/#33] 디테일뷰와 연결하는 코드 추가2
0zlrlo Aug 9, 2023
f87c1f4
[ADD/#33] 디테일뷰와 연결하는 코드 추가3
0zlrlo Aug 9, 2023
a2ae50b
[ADD/#33] 디테일뷰와 연결하는 코드 추가4
0zlrlo Aug 9, 2023
b45228e
[MOD/#33] 린트 수정
0zlrlo Aug 14, 2023
cac7941
[MOD/#33] 좋아요뷰 코드 수정
0zlrlo Aug 17, 2023
faa7a0b
[MOD/#33] androidManifest 코드 수정
0zlrlo Aug 17, 2023
035f3ef
[MOD/#33] retrofit module 코드 수정
0zlrlo Aug 17, 2023
1fb8bd6
[MOD/#33] adapter 코드 수정
0zlrlo Aug 17, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
package com.release.keyneez.data.entity.response

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

@Serializable
data class ResponseGetLikeDto(
@SerialName("content_pk") val content: Int,
@SerialName("title") val title: String,
@SerialName("category") val category: String,
@SerialName("img") val img: String?,
@SerialName("start_at") val start: String?,
@SerialName("end_at") val end: String?
@SerialName("end_at") val end: String?,
var isSelected: Boolean = false
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.release.keyneez.data.entity.response

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

@Serializable
data class ResponseGetPopularDto(
@SerialName("content_pk") val content: Int,
@SerialName("title") val title: String,
@SerialName("category") val category: String,
@SerialName("tag") val tag: String,
@SerialName("link") val link: String,
@SerialName("img") val img: String?,
@SerialName("place") val place: String,
@SerialName("introduction") val introduction: String,
@SerialName("inquiry") val inquiry: List<String>?,
@SerialName("price") val price: List<String>?,
@SerialName("benefit") val benefit: List<String>?,
@SerialName("start_at") val start: String?,
@SerialName("end_at") val end: String?,
@SerialName("created_at") val created: String?,
@SerialName("updated_at") val updated: String?,
var Likes: List<Liked>
) {
@Serializable
data class Liked(
@SerialName("liked_pk") val liked: Int,
@SerialName("user") val user: Int,
@SerialName("content") val content: Int
)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.release.keyneez.data.entity.response

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

@Serializable
data class ResponseGetRecentDto(
@SerialName("content_pk") val content: Int,
@SerialName("title") val title: String,
@SerialName("category") val category: String,
@SerialName("tag") val tag: String,
@SerialName("link") val link: String,
@SerialName("img") val img: String?,
@SerialName("place") val place: String,
@SerialName("introduction") val introduction: String,
@SerialName("start_at") val start: String?,
@SerialName("end_at") val end: String?,
@SerialName("inquiry") val inquiry: List<String>?,
@SerialName("price") val price: List<String>?,
@SerialName("benefit") val benefit: List<String>?,
@SerialName("created_at") val created: String?,
@SerialName("updated_at") val updated: String?,
var Likes: List<Liked>
) {
@Serializable
data class Liked(
@SerialName("liked_pk") val liked: Int,
@SerialName("user") val user: Int,
@SerialName("content") val content: Int
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,19 @@ data class ResponseGetSearchResultDto(
@SerialName("content_pk") val content: Int,
@SerialName("title") val title: String,
@SerialName("category") val category: String,
@SerialName("tag") val tag: String,
@SerialName("link") val link: String,
@SerialName("img") val img: String?,
@SerialName("place") val place: String,
@SerialName("introduction") val introduction: String,
@SerialName("inquiry") val inquiry: List<String>?,
@SerialName("price") val price: List<String>?,
@SerialName("benefit") val benefit: List<String>?,
@SerialName("start_at") val start: String?,
@SerialName("end_at") val end: String?,
val Likes: List<Liked>
@SerialName("created_at") val created: String?,
@SerialName("updated_at") val updated: String?,
var Likes: List<Liked>
) {
@Serializable
data class Liked(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,13 @@ package com.release.keyneez.data.entity.response
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

data class ResponseGetContentDto(
@Serializable
data class ResponsePostLikeDto(
@SerialName("content_pk") val content: Int,
@SerialName("title") val title: String,
@SerialName("category") val category: String,
@SerialName("img") val img: String?,
@SerialName("start_at") val start: String?,
@SerialName("end_at") val end: String?,
val Likes: List<Liked>
) {
@Serializable
data class Liked(
@SerialName("liked_pk") val liked: Int,
@SerialName("user") val user: Int,
@SerialName("content") val content: Int
)
}
var isSelected: Boolean = false
)
Original file line number Diff line number Diff line change
@@ -1,13 +1,21 @@
package com.release.keyneez.data.repository

import com.release.keyneez.data.entity.response.ResponseGetContentDto
import com.release.keyneez.data.entity.response.ResponseGetLikeDto
import com.release.keyneez.data.entity.response.ResponseGetPopularDto
import com.release.keyneez.data.entity.response.ResponseGetRecentDto
import com.release.keyneez.data.entity.response.ResponseGetSearchResultDto
import com.release.keyneez.data.entity.response.ResponsePostLikeDto
import com.release.keyneez.data.entity.response.wrapper.BaseResponse

interface ContentRepository {

suspend fun getContent(filter: String): Result<BaseResponse<List<ResponseGetContentDto>>>
suspend fun getLike(): Result<BaseResponse<List<ResponseGetLikeDto>>>
suspend fun getRecent(filter: String): Result<BaseResponse<List<ResponseGetRecentDto>>>
suspend fun getAllRecent(): Result<BaseResponse<List<ResponseGetRecentDto>>>
suspend fun getPopular(filter: String): Result<BaseResponse<List<ResponseGetPopularDto>>>
suspend fun getAllPopular(): Result<BaseResponse<List<ResponseGetPopularDto>>>
suspend fun getLike(filter: String): Result<BaseResponse<List<ResponseGetLikeDto>>>
suspend fun getAllLike(): Result<BaseResponse<List<ResponseGetLikeDto>>>
suspend fun getSearch(keyword: String): Result<BaseResponse<List<ResponseGetSearchResultDto>>>
suspend fun postLike(pk: Int): Result<BaseResponse<ResponsePostLikeDto>>
suspend fun postUnlike(pk: List<Int>): Result<BaseResponse<Unit>>
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package com.release.keyneez.data.repository

import com.release.keyneez.data.entity.response.ResponseGetContentDto
import com.release.keyneez.data.entity.response.ResponseGetLikeDto
import com.release.keyneez.data.entity.response.ResponseGetPopularDto
import com.release.keyneez.data.entity.response.ResponseGetRecentDto
import com.release.keyneez.data.entity.response.ResponseGetSearchResultDto
import com.release.keyneez.data.entity.response.ResponsePostLikeDto
import com.release.keyneez.data.entity.response.wrapper.BaseResponse
import com.release.keyneez.data.source.ContentDataSource
import javax.inject.Inject
Expand All @@ -11,12 +13,30 @@ class ContentRepositoryImpl @Inject constructor(
private val contentDataSource: ContentDataSource
) : ContentRepository {

override suspend fun getContent(filter: String): Result<BaseResponse<List<ResponseGetContentDto>>> =
kotlin.runCatching { contentDataSource.getContent(filter) }
override suspend fun getRecent(filter: String): Result<BaseResponse<List<ResponseGetRecentDto>>> =
kotlin.runCatching { contentDataSource.getRecent(filter) }

override suspend fun getLike(): Result<BaseResponse<List<ResponseGetLikeDto>>> =
kotlin.runCatching { contentDataSource.getLike() }
override suspend fun getAllRecent(): Result<BaseResponse<List<ResponseGetRecentDto>>> =
kotlin.runCatching { contentDataSource.getAllRecent() }

override suspend fun getPopular(filter: String): Result<BaseResponse<List<ResponseGetPopularDto>>> =
kotlin.runCatching { contentDataSource.getPopular(filter) }

override suspend fun getAllPopular(): Result<BaseResponse<List<ResponseGetPopularDto>>> =
kotlin.runCatching { contentDataSource.getAllPopular() }

override suspend fun getLike(filter: String): Result<BaseResponse<List<ResponseGetLikeDto>>> =
kotlin.runCatching { contentDataSource.getLike(filter) }

override suspend fun getAllLike(): Result<BaseResponse<List<ResponseGetLikeDto>>> =
kotlin.runCatching { contentDataSource.getAllLike() }

override suspend fun getSearch(keyword: String): Result<BaseResponse<List<ResponseGetSearchResultDto>>> =
kotlin.runCatching { contentDataSource.getSearch(keyword) }

override suspend fun postLike(pk: Int): Result<BaseResponse<ResponsePostLikeDto>> =
kotlin.runCatching { contentDataSource.postLike(pk) }

override suspend fun postUnlike(pk: List<Int>): Result<BaseResponse<Unit>> =
kotlin.runCatching { contentDataSource.postUnlike(pk) }
}
Original file line number Diff line number Diff line change
@@ -1,21 +1,43 @@
package com.release.keyneez.data.service

import com.release.keyneez.data.entity.response.ResponseGetContentDto
import com.release.keyneez.data.entity.response.ResponseGetLikeDto
import com.release.keyneez.data.entity.response.ResponseGetPopularDto
import com.release.keyneez.data.entity.response.ResponseGetRecentDto
import com.release.keyneez.data.entity.response.ResponseGetSearchResultDto
import com.release.keyneez.data.entity.response.ResponsePostLikeDto
import com.release.keyneez.data.entity.response.wrapper.BaseResponse
import retrofit2.http.GET
import retrofit2.http.POST
import retrofit2.http.Path
import retrofit2.http.Query

interface ContentService {
@GET("contents/liked")
suspend fun getLike(): BaseResponse<List<ResponseGetLikeDto>>
@GET("api/v1/contents/liked")
suspend fun getLike(@Query("filter") filter: String): BaseResponse<List<ResponseGetLikeDto>>

@GET("contents/")
suspend fun getContent(@Query("filter") filter: String): BaseResponse<List<ResponseGetContentDto>>
@GET("api/v1/contents/liked")
suspend fun getAllLike(): BaseResponse<List<ResponseGetLikeDto>>

@GET("contents/search")
@GET("api/v1/contents/")
suspend fun getRecent(@Query("filter") filter: String): BaseResponse<List<ResponseGetRecentDto>>

@GET("api/v1/contents/")
suspend fun getAllRecent(): BaseResponse<List<ResponseGetRecentDto>>

@GET("api/v1/contents/popularity")
suspend fun getPopular(@Query("filter") filter: String): BaseResponse<List<ResponseGetPopularDto>>

@GET("api/v1/contents/popularity")
suspend fun getAllPopular(): BaseResponse<List<ResponseGetPopularDto>>

@GET("api/v1/contents/search")
suspend fun getSearch(
@Query("keyword") keyword: String
): BaseResponse<List<ResponseGetSearchResultDto>>

@POST("api/v1/contents/{pk}/like")
suspend fun postLike(@Path("pk") pk: Int): BaseResponse<ResponsePostLikeDto>

@POST("api/v1/contents/{pk}/unlike")
suspend fun postUnlike(@Path("pk") pk: List<Int>): BaseResponse<Unit>
}
Original file line number Diff line number Diff line change
@@ -1,19 +1,41 @@
package com.release.keyneez.data.source

import com.release.keyneez.data.entity.response.ResponseGetContentDto
import com.release.keyneez.data.entity.response.ResponseGetLikeDto
import com.release.keyneez.data.entity.response.ResponseGetPopularDto
import com.release.keyneez.data.entity.response.ResponseGetRecentDto
import com.release.keyneez.data.entity.response.ResponseGetSearchResultDto
import com.release.keyneez.data.entity.response.ResponsePostLikeDto
import com.release.keyneez.data.entity.response.wrapper.BaseResponse
import com.release.keyneez.data.service.ContentService
import javax.inject.Inject

class ContentDataSource @Inject constructor(
private val contentService: ContentService
) {
suspend fun getContent(filter: String): BaseResponse<List<ResponseGetContentDto>> =
contentService.getContent(filter)
suspend fun getRecent(filter: String): BaseResponse<List<ResponseGetRecentDto>> =
contentService.getRecent(filter)

suspend fun getAllRecent(): BaseResponse<List<ResponseGetRecentDto>> =
contentService.getAllRecent()

suspend fun getPopular(filter: String): BaseResponse<List<ResponseGetPopularDto>> =
contentService.getPopular(filter)

suspend fun getAllPopular(): BaseResponse<List<ResponseGetPopularDto>> =
contentService.getAllPopular()

suspend fun getLike(filter: String): BaseResponse<List<ResponseGetLikeDto>> =
contentService.getLike(filter)

suspend fun getAllLike(): BaseResponse<List<ResponseGetLikeDto>> =
contentService.getAllLike()

suspend fun getLike(): BaseResponse<List<ResponseGetLikeDto>> = contentService.getLike()
suspend fun getSearch(keyword: String): BaseResponse<List<ResponseGetSearchResultDto>> =
contentService.getSearch(keyword)

suspend fun postLike(pk: Int): BaseResponse<ResponsePostLikeDto> =
contentService.postLike(pk)

suspend fun postUnlike(pk: List<Int>): BaseResponse<Unit> =
contentService.postUnlike(pk)
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.release.keyneez.presentation.main

import LikeFragment
import android.os.Bundle
import androidx.fragment.app.Fragment
import androidx.fragment.app.commit
Expand All @@ -10,6 +9,7 @@ import com.release.keyneez.R
import com.release.keyneez.databinding.ActivityMainBinding
import com.release.keyneez.presentation.main.explore.ExploreFragment
import com.release.keyneez.presentation.main.home.HomeFragment
import com.release.keyneez.presentation.main.like.LikeFragment
import com.release.keyneez.presentation.main.setting.SettingFragment
import com.release.keyneez.util.binding.BindingActivity
import dagger.hilt.android.AndroidEntryPoint
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,29 +4,49 @@ import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import com.release.keyneez.data.entity.response.ResponseGetContentDto
import com.release.keyneez.databinding.ItemExploreContentBinding
import com.release.keyneez.data.entity.response.ResponseGetPopularDto
import com.release.keyneez.databinding.ItemPopularContentBinding
import com.release.keyneez.util.DiffCallback
import com.release.keyneez.util.extension.setOnSingleClickListener

class PopularAdapter : ListAdapter<ResponseGetContentDto, RecyclerView.ViewHolder>(diffUtil) {
var data = listOf<ResponseGetContentDto>()
class PopularAdapter(
private val clickLike: (Int, Boolean) -> Unit
) : ListAdapter<ResponseGetPopularDto, RecyclerView.ViewHolder>(diffUtil) {
var data = listOf<ResponseGetPopularDto>()

class PopularViewHolder(private val binding: ItemExploreContentBinding) :
class PopularViewHolder(
private val binding: ItemPopularContentBinding,
private val clickLike: (Int, Boolean) -> Unit
) :
RecyclerView.ViewHolder(binding.root) {
fun setPopularContent(popular: ResponseGetContentDto) {
fun setPopularContent(popular: ResponseGetPopularDto) {
binding.data = popular
// 여기도 누르면 상세뷰로 가는 코드짜기
binding.btnPopularLiked.setOnSingleClickListener {
clickLike(popular.content, popular.Likes.isNotEmpty())
if (popular.Likes.isNotEmpty()) {
popular.Likes = listOf()
return@setOnSingleClickListener
}
popular.Likes = listOf(ResponseGetPopularDto.Liked(0, 0, 0))
}
// binding.root.setOnClickListener {
// val intent = Intent(binding.root.context, DetailActivity::class.java)
// intent.putExtra("contentId", popular.content)
// ContextCompat.startActivity(binding.root.context, intent, null)
// }
}
}

override fun getItemCount(): Int = data.size
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
val binding = ItemPopularContentBinding.inflate(
LayoutInflater.from(parent.context),
parent,
false
)
return PopularViewHolder(
ItemExploreContentBinding.inflate(
LayoutInflater.from(parent.context),
parent,
false
)
binding,
clickLike
)
}

Expand All @@ -35,7 +55,7 @@ class PopularAdapter : ListAdapter<ResponseGetContentDto, RecyclerView.ViewHolde
}

companion object {
private val diffUtil = DiffCallback<ResponseGetContentDto>(
private val diffUtil = DiffCallback<ResponseGetPopularDto>(
onItemsTheSame = { old, new -> old.content == new.content },
onContentsTheSame = { old, new -> old == new }
)
Expand Down
Loading
Loading