Skip to content

Commit

Permalink
[AN] Develop 브렌치 최신화 (#582)
Browse files Browse the repository at this point in the history
* 안드로이드 릴리즈 v2.0.0 (#553)

* refactor: Hilt 마이그레이션 모듈생성 및 클래스 이름 수정

* refactor: Hilt 마이그레이션2 프레젠테이션 레이어 어노테이션 적용

* refactor: Hilt 마이그레이션3 레포지토리 어노테이션 적용

* refactor: Hilt 마이그레이션4 데이터소스 어노테이션 적용 및 린트체크

* refactor: 리모트 데이터소스 리팩터링

* refactor: 네트워크 모듈 인터셉터 리펙터링

* refactor: 스토리지 모듈 provide로 수정

* refactor: NetworkModule 교체

* refactor: ServiceModule Retrofit 한정자 구분

* feat: 홈뷰 di적용 및 통신연결 완

* chore: 테스트 삭제

* chore: 테스트 삭제

* chore: 힐트 어노테이션제거

* refactor: 수신객체명 수정

* refactor: 리사이클러뷰 setHasFixedSize제거

* feat: 정렬 이미지 추가

* refactor: api path 슬래시 제거

* refactor: 홈뷰 연결 구현

* feat: 스레드 뷰 연결 구현

* feat: 스터디 목록, 종료된 스터디 목록 아이템 디자인 변경점 반영

* refactor: StudyId Long으로 타입 수정

* feat: 칩 버튼 뷰 작성

* feat: 칩 버튼 단일 선택 수정

* feat: 스터디 목록 필터링 기능 구현

* refactor: Role value 제거

* refactor: 불필요한 블럭 제거

* feat: 스레드뷰 스토리완성, 플로우적용

* refactor: 홈뷰 서버통신에러 핫픽스

* refactor: 슬라이드 in/out 기능 제거

* refactor: chip 클릭시 버튼 각각 다르게 적용

* feat: 스토리구현~

* 백엔드 이슈 템플릿 추가 (#455)

* Update issue templates

* Update PULL_REQUEST_TEMPLATE.md

* Update PULL_REQUEST_TEMPLATE.md

* feat: 피드구현

* refactor: build.gradle 수정

* refactor: AuthInterceptor response close 부분 수정 및 Log 세분화

* fix: 내부 저장소에 refresh token 안 쓰는 오탈자 수정

* refactor: GIT_HUB_TEST_URL 추가

* refactor: 불필요한 통신 로직 제거

* feat: CreateStudyActivity 생성

* feat: CreateStudy First, Second 뷰 기능 구현

* refactor: customView 패키지 이동

* refactor: UpdateStudy관련 파일들 모두 제거

* feat: ActionBar 뒤로가기 버튼 기능 구현

* feat: 프로그래스바 설정 매직넘버 상수화

* feat: 스터디 개설 First 프래그먼트 텍스트 뷰 Vertical center 정렬

* refactor: 불필요한 UpdateStudyActivity string 제거

* refactor: 스터디 개설 뷰에 쓰이는 string 네이밍 수정

* refactor: progressBar Height 및 Color 변경

* refactor: 여백 조정

* feat: 스터디 개설 횟수 입력 기능 구현

* refactor: studyDate BottomSheet Value 수정

* refactor: xml DataBinding 삼항연산자가 아닌 BindingAdapter를 이용하도록 수정

* refactor: 스터디 개설 첫 번째 뷰 hint 추가

* refactor: 커스텀 뷰 값이 minValue MaxValue에 들어오지 않으면 minValue를 Default로 주도록 수정

* refactor: FragmentType 세미콜론 트레일링 콤마로 수정

* feat: CreateStudyRepository 작성

* feat: CreateStudyService 작성

* feat: DefaultCreateStudyRepository 작성

* feat: DI CreateStudyService 작성

* feat: DI DefaultCreateStudyRepository 작성

* refactor: StudySummary model 수정

* feat: 스터디 개설 로직 구현 및 불필요한 model 제거

* refactor: api 변경점 반영

* refactor: (예상)시작일 -> 개설일로 변경

* refactor: 칩 목록에서 종료된 스터디 제외, 전체 스터디 추가

* refactor: Token Fetch 함수 Nullable이 아닌 Default Value 반환하도록 수정

* refactor: 게스트 로그인 및 로그아웃 시 OnBoarding 완료 여부 초기화

* refactor: 자동 로그인 로직 콜어댑터 사용

* refactor: 스터디 개설 프로그래스 값 수정

* feat: PlayStore 캐시 버전이 현재 앱 버전과 다르면 즉시 업데이트 하도록 구현

* refactor: 다이얼로그 디자인 변경

* chore: 취소 아이콘 추가

* feat: 요일 선택 뷰 구현

* feat: 요일 선택 뷰를 활용한 스터디 시작 바텀시트 다이얼로그 프래그먼트 구현

* refactor: 요일에 default bacground 설정

* refactor: requireNotNull 사용 및 가독성 개선

* refactor: count 함수 사용

* refactor: 버튼의 enable에 따라 텍스트 색상을 변경하는 selector 사용

* refactor: wrap_content -> 제약을 건후 0dp로 변경

* refactor: BottomSheetDialogFragment의 기본생성자및 번들 사용으로 변경

* refactor: 함수분리

* refactor: 기존의 스터디 상세보기 뷰에서 사용되던 버튼 텍스트를 변경

* refactor: 사용하지 않는 우선순위 get 함수 제거

* refactor: 중복 로직 제거

* feat: 앱 업데이트 정보 통신 로직 구현

* refactor: StudyId Long으로 타입 수정

* feat: 스레드뷰 스토리완성, 플로우적용

* refactor: 홈뷰 서버통신에러 핫픽스

* feat: 스토리구현~

* feat: 피드구현

* feat: 관련 서버통신 함수 추가

* refactor: 코드수정

* refactor: 코드수정

* feat: 갤러리 권한 추가

* refactor: 데이터레이어 수정

* refactor: uiState 적용

* refactor: dataBinding 제거

* refactor: changeSearchMode 제거 및 검색과 목록 조회 통합

* feat: 스터디 개설 시 스터디 상세보기로 이동

* feat: 스터디 시작 요청 레포지토리 패턴 적용

* fix: api 수정 및 검색 로직 수정

* feat: 스터디 시작 요청 서버연결

* refactor: StudylistFilter로 현재 필터링 구분 및 CustomChip 적용

* refactor: 인앱 업데이트 통신 로직 수정 및 유연한 업데이트 가능하도록 수정

* refactor: 디폴트 메시지 주입 위치 수정

* feat: 명세 변경에 따른 스터디 상세보기 뷰 변경

* feat: spinner 대충구현

* refactor: 비회원의 경우 대기중화면 표시, 클릭 시 바텀시트 표시

* refactor: 스레드뷰 통신 리팩터링

* feat: 스터디 정보 다이얼로그 생성 및 서버 연결

* feat: 드롭다운 요소 클릭 시 드롭다운 닫히게

지금은 Spinner method로 강제로 닫고 있는데, 이를 더 개선할 수 있으면 좋을 것 같습니다. 아니면 Spinner CustomView를 만들어서 현재 부르는 메소드를 오버라이드 하는 방법도 있다는데 일단 CustomView를 만드는건 제외했습니다.

* feat: 서버가 아닌 Firebase Cloud Firestore를 통해서 버전 업데이트 정보 가져오도록 수정

* refactor: CI yml 수정

* chore: 폰트 스타일 추가

* feat: 티어 경험치 표시 뷰 구현

* feat: 티어 경험치 계산 구현

* feat: 채팅 및 커서 스타일 추가, 전송 시 focus 뺏음

* feat: 티어 경험치를 프래그먼트에 연결

* refactor: SplashRepository 부분 수정

* fix: studyId 초기화 이후 정보 불러오도록 변경 / uistate update 로직 변경

이거 더 예쁘게 해보고 싶었는데.. uistate update 하는 일반적인 로직을 몰라서 일단은 비교해서 업데이트하도록 변경하였습니다. (기존에 있던 copy 동작 x)

* refactor: 불필요한 onCancelClickListener 제거

* feat: 채팅 입력 시 아래로 스크롤 기능 추가

1. adapter에 registerAdapterDataObserver를 붙이는 방법
2. submitList와 scrollToPosition 사이에 delay 주는 법
위 두가지 방법이 있는데 위에걸 선택했습니다아 ~

* refactor: 스레드 아이템의 프로필 부분 레이아웃 수정

* feat: 본인 클릭여부 판단하여 프로필 액티비티로 전환하는 기능 추가

release에 있는 기능인데 저번에 develop에 안넣어서 지금 그냥 추가합니다 ~

* chore: MainActivity setBackPressedDispatcher 작성

* feat: 프로필 이미지 클릭시 ProfileActivity로 이동

* chore: Flow repeatOnLifecycle 추가

* feat: 채팅의 내용이 비어있는 경우 toast

* chore: setting 버전 정보 표시

* feat: 티어 경험치 표시 서버연결

* feat: setValue를 postValue로 변경

* refactor: chip filter 판단하도록 로직 변경

* chore: refresh Token 갱신 synchronized block 추가

* refactor: binding activity를 쓰도록 변경

* feat: CertificationActivity 생성 및 뷰 작업

* feat: MultiPart를 이용한 Certification Repository 생성

* feat: CertificationCheckActivity 생성 및 뷰 작업

* feat: 인증글 조회 서버  api 추가

* feat: MemberCertificationUiState를 적용한 CertificationCheckViewModel 생성 및 서버 통신 연결

* feat: 스레드뷰의 인증 스토리들에서 멤버 인증을 클릭하면 화면 이동

* fix: call adapter 분리

* feat: CertificationViewModel 생성

* feat: MustDo 인증하기 클릭 시 인증한 경우 toast, 인증하지 않은 경우 CertificationActivity로 이동

* chore: proguard 수정

* chore: viewModel tryLogin Failed 분기 수정

* feat: Must Do 바텀시트 다이얼로그 프래그먼트 뷰 구현

* feat: 인증 뷰에서 x 버튼 누르면 뒤로가기 및 스레드뷰의 인증여부 업데이트

* feat: 인증 뷰 body에 힌트 추가 및 defaultimage 추가

* chore: Flow Lifecycle 수정

* feat: CertificationUiState 적용 및 갤러리 사진 불러오기

1. 갤러리와 콘텐트가 모두 입력 된 경우에 Complete 상태가 됩니다. 아닌 경우 Editing 상태
2. Complete 상태인 경우에 버튼이 활성화 됩니다.

* feat: 카메라로 찍은 사진을 로딩하는 기능 추가

* refactor: api 변경점 반영

certificationId -> memberId와 roundId 전송

* refactor: 버튼 텍스트 컬러 enable 값에 따라 조정

* feat: 스터디가 이미 진행 중이라면 버튼 안 보이게 조정

* feat: 인증 서버 연결 및 이미지 압축

* feat: fail인경우 activity 종료..

* refactor: 리사이클러뷰 오버스크롤 모드 변경

* fix: 멀티파트.. 어노테이션 달기

* refactor: MustDo를 등록하지 않았을 때 문구 표시

* feat: 시작 대기중 chip 추가 및 chip 색상 조정

* refactor: Home Study Item Margin 값 수정

* refactor: show 될 때마다 스터디 갱신하도록 수정

* fix: 무한스크롤 안되는 현상 픽스

나중에 다시 수정해봅시다

* refactor: Home Study Margin 값 조정

* feat: api 변경점 반영 - 신청한 스터디(신청, 수락) 모두 볼 수 있게 변경

* refactor: 스터디 시작 시 통신 결과에 따른 분기처리 구현

* fix: retrofit 변경 인증있는 걸로

* fix: 닫기 버튼 추가

* feat: 요일 선택기 요일 선택해제 기능 추가

* refactor: FireStore 통신 실패의 경우 Default 버전 정보 전송

* feat: 스터디 탈퇴, 종료 할때 나오는 경고 다이얼로그 구현

* feat: 스레드 뷰 서버 통신 레포지토리 패턴 적용

- 해당 주차 Must Do들을 가져오기
- Must Do 생성 및 수정
- 스터디 종료
- 스터디 탈퇴

* feat: 스레드 뷰 Must Do 확인하기 바텀시트 다이얼로그 구현

* refactor: 네트워크리스폰스 제거

* feat: 스레드 overscrollMode never 지정

* refactor: proguard 룰 수정

* feat: 머스트두 없는 경우 인증 못하게 막음 그리고 스레드 코멘트 땡떙땡 안보이게

* style: 린트 체크

* chore: Version 변경

* refactor: 머스트 두 인증 글자수 제한

---------

Co-authored-by: SeHun <[email protected]>
Co-authored-by: Yerin <[email protected]>
Co-authored-by: Bojun Kim <[email protected]>
Co-authored-by: Bandal <[email protected]>
Co-authored-by: s9hn <[email protected]>
Co-authored-by: Yerin <[email protected]>

* An/hotfix/560 studylist (#561)

* fix: 목록 중복 로딩 fix

* chore: 버전 변경 2.0.0 -> 2.0.1

* fix: 버전 비교 model 난독화 해제 (#563)

* fix: 버전 비교 model 난독화 해제 (#563)

* fix: 프로필 텍스트뷰 MaxLine 지정

* fix: maxLine 및 maxLength 지정

* chore: 버전 코드 변경

* refactor: 마이페이지 텍스트 멀티라인 조정

* refactor: 텍스트 컬러 수정

* chore: 버전 코드 변경

* [스레드 뷰] 인증 목록이 안뜨는 증상을 해결합니다. (#569)

* refactor: data class null 추가 및 탈퇴한 사람 처리

* chore: 핫픽스 버전 코드 업

---------

Co-authored-by: SeHun <[email protected]>
Co-authored-by: Yerin <[email protected]>
Co-authored-by: Bojun Kim <[email protected]>
Co-authored-by: Bandal <[email protected]>
Co-authored-by: s9hn <[email protected]>
Co-authored-by: Yerin <[email protected]>
  • Loading branch information
7 people authored Oct 25, 2023
1 parent 9ff5af5 commit a47d8e4
Show file tree
Hide file tree
Showing 18 changed files with 37 additions and 25 deletions.
4 changes: 2 additions & 2 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ android {
applicationId "com.created.team201"
minSdk 26
targetSdk 33
versionCode 2000000
versionName "2.0.0"
versionCode 2000204
versionName "2.0.2"

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
buildConfigField "String", "TEAM201_POLICY", properties["POLICY"]
Expand Down
1 change: 1 addition & 0 deletions android/app/proguard-rules.pro
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
-keep class com.created.domain.model.AppUpdateInformation { *; }
-keep class com.created.domain.model.response.NetworkResponse { *; }

#---------------------------------------------------Retrofit
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ fun FeedsResponseDto.toFeeds(): Feeds = Feeds(
)

fun AuthorResponseDto.toAuthor(): Author = Author(
id = id.toLong(),
id = id,
nickname = nickname,
profileImageUrl = profileImageUrl,
)
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ data class AuthorResponseDto(
@SerialName("id")
val id: Long,
@SerialName("nickname")
val nickname: String,
val nickname: String?,
@SerialName("profileImageUrl")
val profileImageUrl: String,
val profileImageUrl: String?,
)
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@ data class MustDoCertificationResponseDto(
@SerialName("id")
val id: Int,
@SerialName("nickname")
val nickname: String,
val nickname: String?,
@SerialName("profileImageUrl")
val profileImageUrl: String,
val profileImageUrl: String?,
@SerialName("isCertified")
val isCertified: Boolean,
)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.created.team201.data.repository

import android.util.Log
import com.created.domain.model.Feeds
import com.created.domain.model.MustDoCertification
import com.created.domain.model.WeeklyMustDo
Expand Down Expand Up @@ -59,7 +58,6 @@ class DefaultThreadRepository @Inject constructor(
}

override suspend fun putMustDo(roundId: Long, content: String) {
Log.d("bandal", "putMustDo: $roundId $content")
threadService.putMustDo(roundId, MustDoContentRequestDto(content))
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ class StudyListViewModel @Inject constructor(
}
_studySummaries.value = emptyList()
newItems?.addAll(it.toUiModel())
_studySummaries.value = newItems?.toList()
_studySummaries.value = newItems?.toList()?.distinct()
page++
return@launch
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import androidx.recyclerview.widget.RecyclerView
import com.created.domain.model.Feeds
import com.created.team201.R
import com.created.team201.databinding.ActivityThreadBinding
import com.created.team201.presentation.certification.CertificationActivity
Expand Down Expand Up @@ -81,7 +82,11 @@ class ThreadActivity : BindingActivity<ActivityThreadBinding>(R.layout.activity_
private fun showView(state: Success) {
binding.tvThreadStudyName.text = state.studyName
mustDoAdapter.submitList(state.mustDo)
threadAdapter.submitList(state.feeds)
threadAdapter.submitList(getFeeds(state.feeds))
}

private fun getFeeds(feeds: List<Feeds>): List<Feeds> {
return feeds.filterNot { it.author.nickname == null }
}

private fun setOnClickEvent() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import androidx.lifecycle.ViewModel
import androidx.lifecycle.map
import androidx.lifecycle.viewModelScope
import com.created.domain.model.Feeds
import com.created.domain.model.MustDo
import com.created.domain.model.MustDoCertification
import com.created.domain.model.MustDoStatus
import com.created.domain.model.Role
Expand All @@ -22,7 +23,6 @@ import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch
import javax.inject.Inject

Expand Down Expand Up @@ -102,19 +102,23 @@ class ThreadViewModel @Inject constructor(
_uiState.value =
(uiState.value as ThreadUiState.Success).copy(
studyName = certification.studyName,
mustDo = listOf(certification.me) + certification.others,
mustDo = getMembers(listOf(certification.me) + certification.others),
)
} else {
_uiState.value = ThreadUiState.Success(
studyName = certification.studyName,
mustDo = listOf(certification.me) + certification.others,
mustDo = getMembers(listOf(certification.me) + certification.others),
)
}
}

private fun getMembers(members: List<MustDo>): List<MustDo> {
return members.filterNot { it.nickname == null }
}

private fun updateFeeds() {
viewModelScope.launch {
threadRepository.getFeeds(studyId).collectLatest {
threadRepository.getFeeds(studyId).collect {
updateFeedsInState(it)
}
}
Expand Down
2 changes: 2 additions & 0 deletions android/app/src/main/res/layout/activity_profile.xml
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,9 @@
android:layout_height="0dp"
android:layout_marginTop="24dp"
android:background="@drawable/bg_rectangle_radius_5dp"
android:maxLines="8"
android:padding="16dp"
android:lines="8"
android:text="@{viewModel.profile.profile.profileInformation.introduction}"
android:textAppearance="@style/text_r16"
android:textColor="@color/white"
Expand Down
1 change: 1 addition & 0 deletions android/app/src/main/res/layout/activity_thread.xml
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@
android:ems="10"
android:hint="잡담 및 질답하기"
android:inputType="text"
android:maxLength="200"
android:padding="8dp"
android:textAppearance="@style/text_r16"
android:textColor="@color/white"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@
android:hint="@{viewModel.studyDetail.isMaster? @string/thread_must_do_bottom_sheet_fragment_must_do_content_hint : @string/thread_must_do_bottom_sheet_fragment_must_do_content_hint_not_study_master}"
android:importantForAutofill="no"
android:inputType="textMultiLine|textNoSuggestions"
android:maxLength="200"
android:maxLength="20"
android:padding="16dp"
android:text="@{viewModel.mustDoContent}"
android:textAppearance="@style/text_r16"
Expand Down
2 changes: 1 addition & 1 deletion android/app/src/main/res/layout/fragment_study_list.xml
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@
android:layout_height="wrap_content"
android:text="@string/study_list_not_found"
android:textAppearance="@style/text_m18"
android:textColor="@color/white"
android:textColor="@color/grey02_78808B"
app:isVisible="@{studyListViewModel.isNotFoundStudies}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
Expand Down
3 changes: 2 additions & 1 deletion android/app/src/main/res/layout/item_thread_comment.xml
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@
android:layout_marginTop="20dp"
android:layout_marginEnd="20dp"
android:layout_marginBottom="20dp"
android:maxLines="10"
android:text="@{item.content}"
android:textAppearance="@style/subtitle_r20"
android:textColor="@color/white"
Expand All @@ -116,4 +117,4 @@
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
</layout>
2 changes: 1 addition & 1 deletion android/app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,7 @@
<string name="profile_report_button_menu">신고</string>
<string name="profile_title">프로필</string>
<string name="profile_study_success_rate">스터디 성공률</string>
<string name="profile_todo_success_rate">필수투두 완료횟수</string>
<string name="profile_todo_success_rate">Must Do 완료횟수</string>
<string name="profile_unexpected_user_access_warning">존재하지 않는 사용자입니다.</string>
<string name="item_profile_finished_study_information_format">시작일 %s</string>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@ package com.created.domain.model

data class Author(
val id: Long,
val nickname: String,
val profileImageUrl: String,
val nickname: String?,
val profileImageUrl: String?,
)
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@ package com.created.domain.model
data class MustDo(
val id: Int,
val isCertified: Boolean,
val nickname: String,
val profileImageUrl: String
)
val nickname: String?,
val profileImageUrl: String?,
)
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@ package com.created.domain.repository
import com.created.domain.model.AppUpdateInformation

interface SplashRepository {
fun getAppUpdateInformation(versionCode: Int, onSuccess: (AppUpdateInformation) -> Unit)
fun getAppUpdateInformation(versionCode: Int, onAppUpdateInformationEvent: (AppUpdateInformation) -> Unit)
}

0 comments on commit a47d8e4

Please sign in to comment.