-
Notifications
You must be signed in to change notification settings - Fork 1
feat: 컬렉션 기능 추가 #928
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
Open
devfeijoa
wants to merge
66
commits into
develop
Choose a base branch
from
feat/924
base: develop
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
feat: 컬렉션 기능 추가 #928
Changes from 16 commits
Commits
Show all changes
66 commits
Select commit
Hold shift + click to select a range
ed79214
feat: collection 피처 모듈 생성
devfeijoa 8ef6498
feat: collection 모듈 내 Navigation Compose 의존성 추가
devfeijoa 1d920b3
feat: 컬렉션 기능 구성을 위한 임시 화면 추가
devfeijoa d5613f6
feat: 컬렉션 기능 내 탐색을 위한 CollectionNavHost 구현
devfeijoa f86631e
feat: app 모듈 내 컬렉션 피처 모듈 의존성 추가
devfeijoa 23a17d9
feat: Collection 화면 진입을 위한 CollectionActivity 추가
devfeijoa e1777ed
feat: `CollectionActivity` 내 `AndroidEntryPoint` 어노테이션 추가
devfeijoa 89bbc45
feat: 컬렉션 화면 액티비티(CollectionActivity) 등록
devfeijoa 5027cb0
feat: 컬렉션 목록 진입을 위한 CollectionEntry 컴포저블 추가
devfeijoa 63b0259
feat: 마이페이지 내 컬렉션 진입 섹션 레이아웃 추가
devfeijoa 233767c
feat: 마이페이지 내 컬렉션 진입부 추가
devfeijoa 8e94a05
feat: 컬렉션 화면 내 상단 앱바 추가 및 구조 개선
devfeijoa e8ee43c
feat: 컬렉션 화면 내 탭 바 컴포저블 추가 및 적용
devfeijoa 462a4b3
feat: 컬렉션 화면 내 탭 선택 기능 구현
devfeijoa 82b98f0
feat: 컬렉션 생성 버튼 컴포넌트 추가 및 적용
devfeijoa 55f7aab
fix: 컬렉션 화면 내 임시 레이아웃 제거
devfeijoa 297de49
refactor: CollectionCreateButton 컴포저블 코드 스타일 및 포맷팅 수정
devfeijoa 6444759
refactor: 코드 스타일 및 포맷팅 수정
devfeijoa a88bea1
feat: 컬렉션 생성 화면 추가 및 네비게이션 연결
devfeijoa e7c39cb
feat: 컬렉션 생성 버튼 내 클릭 상호작용 추가
devfeijoa 142052d
feat: 컬렉션 화면 내 생성 화면 이동 로직 추가
devfeijoa bf8acfa
feat: 컬렉션 생성 화면 내 앱바 추가 및 레이아웃 수정
devfeijoa bccf4ef
refactor: 컬렉션 생성 화면 내 임시 플레이스홀더 제거
devfeijoa 2b1a3b6
feat: 컬렉션 생성 화면 내 공개 여부 설정 컴포넌트 추가
devfeijoa 33b02f9
feat: 컬렉션 생성 화면 내 이름 입력 컴포넌트 추가
devfeijoa 4b72b18
feat: 컬렉션 생성 화면 내 설명 입력 필드 추가
devfeijoa a5add47
feat: 컬렉션 생성 화면 내 작품 리스트 섹션 추가
devfeijoa 5c4c650
feat: 컬렉션 생성 내 작품 검색 화면 추가 및 내비게이션 연결
devfeijoa 66f75e1
feat: 컬렉션 작품 검색 화면 내 검색 필드 추가 및 UI 수정
devfeijoa 7618ed9
feat: 컬렉션 작품 검색 필드 입력 기능 및 자동 포커스 구현
devfeijoa 5ca78ec
refactor: consolidate collection app bars
devfeijoa cf66bbb
feat: 컬렉션 내 서재 작품 선택 화면 추가 및 검색 화면 연동
devfeijoa 8611773
feat: 필터 없는 서재 작품 조회 추가
devfeijoa 40495c7
feat: 컬렉션 서재 작품 항목 추가
devfeijoa 103e3d3
feat: 서재 작품 컬렉션 모델 변환 추가
devfeijoa fe6c6d7
feat: feature/collection 모듈 내 Navigation 및 Paging Compose 의존성 추가
devfeijoa c151f1a
feat: 컬렉션 생성 내 서재 작품 선택 기능 구현
devfeijoa 6800b0d
feat: 컬렉션 서재 소설 선택 화면 내 로딩 인디케이터 추가
devfeijoa 47ecaa8
feat: 컬렉션 서재 내 작품 선택 화면 하단 로딩 인디케이터 추가
devfeijoa f1c82ce
refactor: 서재 관련 레포지토리 내 함수 코드 포맷팅 수정
devfeijoa 6f1ab63
feat: 서재 작품 선택 화면 내 데이터 로드 실패 대응 UI 추가
devfeijoa 3f3190c
fix: 서재 작품 선택 화면 내 에러 상태 처리 로직 개선
devfeijoa 8bd7f27
feat: novel 데이터 모듈 추가
devfeijoa a3e392b
feat: 작품 검색 엔티티 추가
devfeijoa 9e36cde
feat: 작품 검색 응답 모델 추가
devfeijoa 5ed8c99
feat: 작품 검색 API 추가
devfeijoa 2f7fbf3
feat: 작품 검색 API 의존성 연결
devfeijoa 21f62c0
feat: 작품 검색 PagingSource 기본 요청 구현
devfeijoa 592c049
feat: 작품 검색 Paging 페이지 연결
devfeijoa 9cf8a68
feat: 작품 검색 Paging 오류 처리
devfeijoa 11b553e
feat: 컬렉션 작품 검색 화면 내 검색 및 선택 기능 구현
devfeijoa 1c3f56e
fix: 검색 결과 다음 페이지 오류 시 기존 목록을 유지한다
devfeijoa f606ff5
feat: 작품 검색 결과 당겨서 새로고침을 지원
devfeijoa 50450e1
feat: 컬렉션 내 소설 검색 및 선택 아이템 컴포저블 구현
devfeijoa d3f82c8
feat: 컬렉션 내 선택된 소설 정보를 담는 데이터 클래스 추가
devfeijoa 8e279b3
feat: 작품 검색 관련 Repository 구현
devfeijoa b0b33ef
build: 컬렉션 모듈에 작품 데이터 의존성 추가
devfeijoa e7bb147
feat: 컬렉션 내 작품 검색을 위한 ViewModel 추가
devfeijoa 88af5a2
feat: 컬렉션 공통 네트워크 오류 화면 구현
devfeijoa 6d5131e
feat: 컬렉션 작품 검색 필드 내 검색 동작 추가 및 접근성 개선
devfeijoa be65f54
refactor: 컬렉션 서재 내 작품 선택 관리 로직을 ID에서 객체 기반으로 변경
devfeijoa 16c62f2
refactor: 컬렉션 서재 화면의 선택 상태를 객체 기반으로 연결
devfeijoa 952ae43
refactor: 서재 네트워크 오류 UI를 공통 컴포넌트로 대체
devfeijoa 5e7ccea
feat: 검색과 서재의 작품 선택 상태를 통합
devfeijoa 1e0de84
fix: 컬렉션 작품 검색 아이템 레이아웃 수정
devfeijoa 572675f
refactor: CollectionNovelSearchItem 내 import 문 정렬
devfeijoa File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
27 changes: 27 additions & 0 deletions
27
app/src/main/java/com/into/websoso/ui/collection/CollectionActivity.kt
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,27 @@ | ||
| package com.into.websoso.ui.collection | ||
|
|
||
| import android.content.Context | ||
| import android.content.Intent | ||
| import android.os.Bundle | ||
| import androidx.activity.ComponentActivity | ||
| import androidx.activity.compose.setContent | ||
| import com.into.websoso.core.designsystem.theme.WebsosoTheme | ||
| import com.into.websoso.feature.collection.CollectionNavHost | ||
| import dagger.hilt.android.AndroidEntryPoint | ||
|
|
||
| @AndroidEntryPoint | ||
| class CollectionActivity : ComponentActivity() { | ||
| override fun onCreate(savedInstanceState: Bundle?) { | ||
| super.onCreate(savedInstanceState) | ||
|
|
||
| setContent { | ||
| WebsosoTheme { | ||
| CollectionNavHost(onNavigateBack = ::finish) | ||
| } | ||
| } | ||
| } | ||
|
|
||
| companion object { | ||
| fun getIntent(context: Context): Intent = Intent(context, CollectionActivity::class.java) | ||
| } | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
23 changes: 23 additions & 0 deletions
23
core/resource/src/main/res/drawable/ic_collection_create.xml
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,23 @@ | ||
| <vector xmlns:android="http://schemas.android.com/apk/res/android" | ||
| android:width="18dp" | ||
| android:height="18dp" | ||
| android:viewportWidth="19.44" | ||
| android:viewportHeight="19.44"> | ||
| <path | ||
| android:pathData="M9.707,0.36C14.838,0.36 19.08,4.593 19.08,9.716C19.08,14.847 14.847,19.08 9.716,19.08C4.593,19.08 0.36,14.847 0.36,9.716C0.36,4.594 4.584,0.36 9.707,0.36Z" | ||
| android:fillColor="#FFFFFF" | ||
| android:strokeColor="#EEEEF2" | ||
| android:strokeWidth="0.72" /> | ||
| <path | ||
| android:pathData="M5.4,9.72L14.04,9.72" | ||
| android:fillColor="#00000000" | ||
| android:strokeColor="#6A5DFD" | ||
| android:strokeLineCap="round" | ||
| android:strokeWidth="2.254" /> | ||
| <path | ||
| android:pathData="M9.72,5.4L9.72,14.04" | ||
| android:fillColor="#00000000" | ||
| android:strokeColor="#6A5DFD" | ||
| android:strokeLineCap="round" | ||
| android:strokeWidth="2.254" /> | ||
| </vector> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,13 @@ | ||
| import com.into.websoso.setNamespace | ||
|
|
||
| plugins { | ||
| id("websoso.android.feature") | ||
| } | ||
|
|
||
| android { | ||
| setNamespace("feature.collection") | ||
| } | ||
|
|
||
| dependencies { | ||
| implementation(libs.navigation.compose) | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,4 @@ | ||
| <?xml version="1.0" encoding="utf-8"?> | ||
| <manifest> | ||
|
|
||
| </manifest> |
27 changes: 27 additions & 0 deletions
27
feature/collection/src/main/java/com/into/websoso/feature/collection/CollectionNavHost.kt
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,27 @@ | ||
| package com.into.websoso.feature.collection | ||
|
|
||
| import androidx.compose.runtime.Composable | ||
| import androidx.compose.ui.Modifier | ||
| import androidx.navigation.compose.NavHost | ||
| import androidx.navigation.compose.composable | ||
| import androidx.navigation.compose.rememberNavController | ||
|
|
||
| private const val COLLECTION_ROUTE = "collection" | ||
|
|
||
| @Composable | ||
| fun CollectionNavHost( | ||
| onNavigateBack: () -> Unit, | ||
| modifier: Modifier = Modifier, | ||
| ) { | ||
| val navController = rememberNavController() | ||
|
|
||
| NavHost( | ||
| navController = navController, | ||
| startDestination = COLLECTION_ROUTE, | ||
| modifier = modifier, | ||
| ) { | ||
| composable(route = COLLECTION_ROUTE) { | ||
| CollectionScreen(onNavigateBack = onNavigateBack) | ||
| } | ||
| } | ||
| } |
56 changes: 56 additions & 0 deletions
56
feature/collection/src/main/java/com/into/websoso/feature/collection/CollectionScreen.kt
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,56 @@ | ||
| package com.into.websoso.feature.collection | ||
|
|
||
| import androidx.compose.foundation.background | ||
| import androidx.compose.foundation.layout.Column | ||
| import androidx.compose.foundation.layout.fillMaxSize | ||
| import androidx.compose.foundation.layout.padding | ||
| import androidx.compose.foundation.layout.statusBarsPadding | ||
| import androidx.compose.runtime.Composable | ||
| import androidx.compose.runtime.getValue | ||
| import androidx.compose.runtime.mutableStateOf | ||
| import androidx.compose.runtime.saveable.rememberSaveable | ||
| import androidx.compose.runtime.setValue | ||
| import androidx.compose.ui.Modifier | ||
| import androidx.compose.ui.tooling.preview.Preview | ||
| import androidx.compose.ui.unit.dp | ||
| import com.into.websoso.core.designsystem.theme.WebsosoTheme | ||
| import com.into.websoso.core.designsystem.theme.White | ||
| import com.into.websoso.feature.collection.component.CollectionAppBar | ||
| import com.into.websoso.feature.collection.component.CollectionCreateButton | ||
| import com.into.websoso.feature.collection.component.CollectionTabRow | ||
| import com.into.websoso.feature.collection.model.CollectionTab | ||
|
|
||
| @Composable | ||
| fun CollectionScreen( | ||
| onNavigateBack: () -> Unit, | ||
| modifier: Modifier = Modifier, | ||
| ) { | ||
| var selectedTab by rememberSaveable { mutableStateOf(CollectionTab.MY_COLLECTION) } | ||
|
|
||
| Column( | ||
| modifier = modifier | ||
| .fillMaxSize() | ||
| .background(White) | ||
| .statusBarsPadding(), | ||
| ) { | ||
| CollectionAppBar(onNavigateBack = onNavigateBack) | ||
| CollectionTabRow( | ||
| selectedTab = selectedTab, | ||
| onTabSelected = { selectedTab = it }, | ||
| ) | ||
| CollectionCreateButton( | ||
| modifier = Modifier.padding( | ||
| horizontal = 20.dp, | ||
| vertical = 16.dp, | ||
| ), | ||
| ) | ||
| } | ||
| } | ||
|
|
||
| @Preview(showBackground = true) | ||
| @Composable | ||
| private fun CollectionScreenPreview() { | ||
| WebsosoTheme { | ||
| CollectionScreen(onNavigateBack = {}) | ||
| } | ||
| } |
62 changes: 62 additions & 0 deletions
62
...ollection/src/main/java/com/into/websoso/feature/collection/component/CollectionAppBar.kt
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,62 @@ | ||
| package com.into.websoso.feature.collection.component | ||
|
|
||
| import androidx.compose.foundation.Image | ||
| import androidx.compose.foundation.background | ||
| import androidx.compose.foundation.layout.Box | ||
| import androidx.compose.foundation.layout.fillMaxWidth | ||
| import androidx.compose.foundation.layout.height | ||
| import androidx.compose.foundation.layout.padding | ||
| import androidx.compose.foundation.layout.size | ||
| import androidx.compose.material3.IconButton | ||
| import androidx.compose.material3.Text | ||
| import androidx.compose.runtime.Composable | ||
| import androidx.compose.ui.Alignment | ||
| import androidx.compose.ui.Modifier | ||
| import androidx.compose.ui.res.painterResource | ||
| import androidx.compose.ui.tooling.preview.Preview | ||
| import androidx.compose.ui.unit.dp | ||
| import com.into.websoso.core.designsystem.theme.Black | ||
| import com.into.websoso.core.designsystem.theme.WebsosoTheme | ||
| import com.into.websoso.core.designsystem.theme.White | ||
| import com.into.websoso.core.resource.R.drawable.ic_navigate_left | ||
|
|
||
| @Composable | ||
| internal fun CollectionAppBar( | ||
| onNavigateBack: () -> Unit, | ||
| modifier: Modifier = Modifier, | ||
| ) { | ||
| Box( | ||
| modifier = modifier | ||
| .fillMaxWidth() | ||
| .height(44.dp) | ||
| .background(White), | ||
| contentAlignment = Alignment.Center, | ||
| ) { | ||
| IconButton( | ||
| onClick = onNavigateBack, | ||
| modifier = Modifier | ||
| .align(Alignment.CenterStart) | ||
| .padding(start = 6.dp) | ||
| .size(44.dp), | ||
| ) { | ||
| Image( | ||
| painter = painterResource(id = ic_navigate_left), | ||
| contentDescription = null, | ||
| modifier = Modifier.size(24.dp), | ||
| ) | ||
| } | ||
| Text( | ||
| text = "컬렉션", | ||
| color = Black, | ||
| style = WebsosoTheme.typography.title2, | ||
| ) | ||
| } | ||
| } | ||
|
|
||
| @Preview(showBackground = true) | ||
| @Composable | ||
| private fun CollectionAppBarPreview() { | ||
| WebsosoTheme { | ||
| CollectionAppBar(onNavigateBack = {}) | ||
| } | ||
| } | ||
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
Repository: Team-WSS/WSS-Android
Length of output: 2963
뒤로가기 버튼에 접근성 라벨을 지정해 주세요.
IconButton내부 이미지의contentDescription이null이라 TalkBack에서 버튼의 목적을 알 수 없습니다."뒤로 가기"문자열 리소스를 사용해 접근성 라벨을 지정해 주세요.🤖 Prompt for AI Agents