From 12034fe42f7919ddb38dbedd8e1b0849f35178e1 Mon Sep 17 00:00:00 2001 From: hodu <92203597+Junyoung-WON@users.noreply.github.com> Date: Thu, 13 Feb 2025 15:22:17 +0900 Subject: [PATCH] =?UTF-8?q?deploy:=20v.1.3.0=20=EC=9E=AC=EB=B0=B0=ED=8F=AC?= =?UTF-8?q?=20(#632)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: 누락된 not 연산자 추가 * refactor: whitelist 추가 #489 (#490) * deploy: 1.1.1 배포 #484 (#491) * fix: 누락된 not 연산자 추가 * refactor: whitelist 추가 #489 (#490) --------- Co-authored-by: hxeyexn * feat: 인덱스 설정 스크립트 작성 #474 (#475) Co-authored-by: BurningFalls * feat: Bulk Delete 예전 pr 코드 이동 (#487) * refactor: N+1 문제 해결 (#488) * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 * refactor: 반응형 ui 적용 및 접근성 향상 #481 (#502) * ui: login 화면 반응형 ui 대응 * ui: 고유 코드 복구 화면 반응형 ui 대응 * ui: 마이페이지 화면 반응형 ui 대응 * ui: 나의 추억들 화면 반응형 ui 대응 * ui: 추억 화면 반응형 ui 대응 - span count 조정 * refactor: 스타카토 생성 화면 반응형 ui 대응 * refactor: 스타카토 수정 화면 반응형 ui 대응 * refactor: 추억 생성 화면 반응형 ui 대응 * refactor: 추억 수정 화면 반응형 ui 대응 * ui: 다크모드 대응 - colors 대응 - themes 대응 - 지도 대응 * fix: 지도 화면의 구성 변경으로 일어나는 크래시 해결 * ui: 스플래시 다크모드 대응 * feat: 스타카토 마커 커스텀 * ui: 스타카토 마커 다크모드 대응 * feat: 사용자 피드백 수집을 위한 구글 폼 연동 * feat: 인스타그램 페이지 연동 * refactor: 마이페이지 버튼 터치 영역 확대 * refactor: TextInputEditText 터치 영역 확대 * refactor: 추억 기간 선택 box 터치 영역 확대 * refactor: 툴바 수정 및 삭제 메뉴 버튼 터치 영역 확대 * refactor: 마이페이지 인스타그램 버튼 터치 영역 확대 * refactor: 스타카토 장소 선택 box 버튼 터치 영역 확대 * refactor: 스타카토 추억, 날짜 및 시간 선택 box 터치 영역 확대 * ui: typography.Body에 Not.Resizable 추가 * ui: styles에 Not.Resizable 적용 * ui: 스타카토 생성 수정 화면 styles 적용 * ui: 추억 생성 수정 화면 styles 적용 * ui: styles_button.xml에 BoundedIconButtonStyle 추가 * ui: 추억, 타임라인 화면에 BoundedIconButtonStyle 적용 * ui: 타임라인 화면 글씨 크기 조절 대응 * ui: layout_photo_attach.xml 글씨 크기 조절 대응 * ui: 추억 조회 화면 글씨 크기 조절 대응 * ui: 행간 겹침 방지를 위해 lineHeight 단위 sp로 수정 * ui: empty 관련 텍스트 Not.Resizable 설정 * ui: 로그인 및 복구 화면 글씨 크기 조절 대응 * refactor: 홈 화면 content description 추가 * refactor: 나의 추억들 화면 content description 추가 * refactor: 추억 화면 content description 추가 * refactor: 추억 생성 및 수정 화면 content description 추가 * refactor: 스타카토 사진 첨부 item content description 추가 * refactor: 나의 추억들 아이템 중첩된 레이아웃 제거 * refactor: 스타카토 화면 content description 추가 * refactor: 마이페이지 화면 content description 추가 * refactor: 로그인 화면 content description 추가 * refactor: 나의 추억들 item content description 추가 * refactor: 댓글 item content description 추가 * refactor: 함께 한 사람들 item content description 추가 * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 --------- Co-authored-by: somin Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> * deploy: 1.1.2 배포 (#504) * fix: 누락된 not 연산자 추가 * refactor: whitelist 추가 #489 (#490) * feat: 인덱스 설정 스크립트 작성 #474 (#475) Co-authored-by: BurningFalls * feat: Bulk Delete 예전 pr 코드 이동 (#487) * refactor: N+1 문제 해결 (#488) * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 * refactor: 반응형 ui 적용 및 접근성 향상 #481 (#502) * ui: login 화면 반응형 ui 대응 * ui: 고유 코드 복구 화면 반응형 ui 대응 * ui: 마이페이지 화면 반응형 ui 대응 * ui: 나의 추억들 화면 반응형 ui 대응 * ui: 추억 화면 반응형 ui 대응 - span count 조정 * refactor: 스타카토 생성 화면 반응형 ui 대응 * refactor: 스타카토 수정 화면 반응형 ui 대응 * refactor: 추억 생성 화면 반응형 ui 대응 * refactor: 추억 수정 화면 반응형 ui 대응 * ui: 다크모드 대응 - colors 대응 - themes 대응 - 지도 대응 * fix: 지도 화면의 구성 변경으로 일어나는 크래시 해결 * ui: 스플래시 다크모드 대응 * feat: 스타카토 마커 커스텀 * ui: 스타카토 마커 다크모드 대응 * feat: 사용자 피드백 수집을 위한 구글 폼 연동 * feat: 인스타그램 페이지 연동 * refactor: 마이페이지 버튼 터치 영역 확대 * refactor: TextInputEditText 터치 영역 확대 * refactor: 추억 기간 선택 box 터치 영역 확대 * refactor: 툴바 수정 및 삭제 메뉴 버튼 터치 영역 확대 * refactor: 마이페이지 인스타그램 버튼 터치 영역 확대 * refactor: 스타카토 장소 선택 box 버튼 터치 영역 확대 * refactor: 스타카토 추억, 날짜 및 시간 선택 box 터치 영역 확대 * ui: typography.Body에 Not.Resizable 추가 * ui: styles에 Not.Resizable 적용 * ui: 스타카토 생성 수정 화면 styles 적용 * ui: 추억 생성 수정 화면 styles 적용 * ui: styles_button.xml에 BoundedIconButtonStyle 추가 * ui: 추억, 타임라인 화면에 BoundedIconButtonStyle 적용 * ui: 타임라인 화면 글씨 크기 조절 대응 * ui: layout_photo_attach.xml 글씨 크기 조절 대응 * ui: 추억 조회 화면 글씨 크기 조절 대응 * ui: 행간 겹침 방지를 위해 lineHeight 단위 sp로 수정 * ui: empty 관련 텍스트 Not.Resizable 설정 * ui: 로그인 및 복구 화면 글씨 크기 조절 대응 * refactor: 홈 화면 content description 추가 * refactor: 나의 추억들 화면 content description 추가 * refactor: 추억 화면 content description 추가 * refactor: 추억 생성 및 수정 화면 content description 추가 * refactor: 스타카토 사진 첨부 item content description 추가 * refactor: 나의 추억들 아이템 중첩된 레이아웃 제거 * refactor: 스타카토 화면 content description 추가 * refactor: 마이페이지 화면 content description 추가 * refactor: 로그인 화면 content description 추가 * refactor: 나의 추억들 item content description 추가 * refactor: 댓글 item content description 추가 * refactor: 함께 한 사람들 item content description 추가 * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 --------- Co-authored-by: somin Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> --------- Co-authored-by: hxeyexn Co-authored-by: linirini <101927543+linirini@users.noreply.github.com> Co-authored-by: YoonJuHo Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> Co-authored-by: Hyeyeon Gong <103019852+hxeyexn@users.noreply.github.com> Co-authored-by: somin * hotfix: 이미지 삭제 전파 (#505) * fix: 이미지 삭제 전파 * fix: 이미지 삭제 전파 수정 * deploy: 1.1.3 배포 (#506) * fix: 누락된 not 연산자 추가 * refactor: whitelist 추가 #489 (#490) * feat: 인덱스 설정 스크립트 작성 #474 (#475) Co-authored-by: BurningFalls * feat: Bulk Delete 예전 pr 코드 이동 (#487) * refactor: N+1 문제 해결 (#488) * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 * refactor: 반응형 ui 적용 및 접근성 향상 #481 (#502) * ui: login 화면 반응형 ui 대응 * ui: 고유 코드 복구 화면 반응형 ui 대응 * ui: 마이페이지 화면 반응형 ui 대응 * ui: 나의 추억들 화면 반응형 ui 대응 * ui: 추억 화면 반응형 ui 대응 - span count 조정 * refactor: 스타카토 생성 화면 반응형 ui 대응 * refactor: 스타카토 수정 화면 반응형 ui 대응 * refactor: 추억 생성 화면 반응형 ui 대응 * refactor: 추억 수정 화면 반응형 ui 대응 * ui: 다크모드 대응 - colors 대응 - themes 대응 - 지도 대응 * fix: 지도 화면의 구성 변경으로 일어나는 크래시 해결 * ui: 스플래시 다크모드 대응 * feat: 스타카토 마커 커스텀 * ui: 스타카토 마커 다크모드 대응 * feat: 사용자 피드백 수집을 위한 구글 폼 연동 * feat: 인스타그램 페이지 연동 * refactor: 마이페이지 버튼 터치 영역 확대 * refactor: TextInputEditText 터치 영역 확대 * refactor: 추억 기간 선택 box 터치 영역 확대 * refactor: 툴바 수정 및 삭제 메뉴 버튼 터치 영역 확대 * refactor: 마이페이지 인스타그램 버튼 터치 영역 확대 * refactor: 스타카토 장소 선택 box 버튼 터치 영역 확대 * refactor: 스타카토 추억, 날짜 및 시간 선택 box 터치 영역 확대 * ui: typography.Body에 Not.Resizable 추가 * ui: styles에 Not.Resizable 적용 * ui: 스타카토 생성 수정 화면 styles 적용 * ui: 추억 생성 수정 화면 styles 적용 * ui: styles_button.xml에 BoundedIconButtonStyle 추가 * ui: 추억, 타임라인 화면에 BoundedIconButtonStyle 적용 * ui: 타임라인 화면 글씨 크기 조절 대응 * ui: layout_photo_attach.xml 글씨 크기 조절 대응 * ui: 추억 조회 화면 글씨 크기 조절 대응 * ui: 행간 겹침 방지를 위해 lineHeight 단위 sp로 수정 * ui: empty 관련 텍스트 Not.Resizable 설정 * ui: 로그인 및 복구 화면 글씨 크기 조절 대응 * refactor: 홈 화면 content description 추가 * refactor: 나의 추억들 화면 content description 추가 * refactor: 추억 화면 content description 추가 * refactor: 추억 생성 및 수정 화면 content description 추가 * refactor: 스타카토 사진 첨부 item content description 추가 * refactor: 나의 추억들 아이템 중첩된 레이아웃 제거 * refactor: 스타카토 화면 content description 추가 * refactor: 마이페이지 화면 content description 추가 * refactor: 로그인 화면 content description 추가 * refactor: 나의 추억들 item content description 추가 * refactor: 댓글 item content description 추가 * refactor: 함께 한 사람들 item content description 추가 * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 --------- Co-authored-by: somin Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> * hotfix: 이미지 삭제 전파 (#505) * fix: 이미지 삭제 전파 * fix: 이미지 삭제 전파 수정 --------- Co-authored-by: hxeyexn Co-authored-by: linirini <101927543+linirini@users.noreply.github.com> Co-authored-by: BurningFalls Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> Co-authored-by: Hyeyeon Gong <103019852+hxeyexn@users.noreply.github.com> Co-authored-by: somin * feat: 기본 추억 제공 구현 #508 (#509) * feat: 기본 추억 생성 구현 * refactor: 기본 추억 설명 수정 * fix: persist 전파되도록 로직 순서 변경 * deploy: 1.2.0 배포 (#510) * fix: 누락된 not 연산자 추가 * refactor: whitelist 추가 #489 (#490) * feat: 인덱스 설정 스크립트 작성 #474 (#475) Co-authored-by: BurningFalls * feat: Bulk Delete 예전 pr 코드 이동 (#487) * refactor: N+1 문제 해결 (#488) * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 * refactor: 반응형 ui 적용 및 접근성 향상 #481 (#502) * ui: login 화면 반응형 ui 대응 * ui: 고유 코드 복구 화면 반응형 ui 대응 * ui: 마이페이지 화면 반응형 ui 대응 * ui: 나의 추억들 화면 반응형 ui 대응 * ui: 추억 화면 반응형 ui 대응 - span count 조정 * refactor: 스타카토 생성 화면 반응형 ui 대응 * refactor: 스타카토 수정 화면 반응형 ui 대응 * refactor: 추억 생성 화면 반응형 ui 대응 * refactor: 추억 수정 화면 반응형 ui 대응 * ui: 다크모드 대응 - colors 대응 - themes 대응 - 지도 대응 * fix: 지도 화면의 구성 변경으로 일어나는 크래시 해결 * ui: 스플래시 다크모드 대응 * feat: 스타카토 마커 커스텀 * ui: 스타카토 마커 다크모드 대응 * feat: 사용자 피드백 수집을 위한 구글 폼 연동 * feat: 인스타그램 페이지 연동 * refactor: 마이페이지 버튼 터치 영역 확대 * refactor: TextInputEditText 터치 영역 확대 * refactor: 추억 기간 선택 box 터치 영역 확대 * refactor: 툴바 수정 및 삭제 메뉴 버튼 터치 영역 확대 * refactor: 마이페이지 인스타그램 버튼 터치 영역 확대 * refactor: 스타카토 장소 선택 box 버튼 터치 영역 확대 * refactor: 스타카토 추억, 날짜 및 시간 선택 box 터치 영역 확대 * ui: typography.Body에 Not.Resizable 추가 * ui: styles에 Not.Resizable 적용 * ui: 스타카토 생성 수정 화면 styles 적용 * ui: 추억 생성 수정 화면 styles 적용 * ui: styles_button.xml에 BoundedIconButtonStyle 추가 * ui: 추억, 타임라인 화면에 BoundedIconButtonStyle 적용 * ui: 타임라인 화면 글씨 크기 조절 대응 * ui: layout_photo_attach.xml 글씨 크기 조절 대응 * ui: 추억 조회 화면 글씨 크기 조절 대응 * ui: 행간 겹침 방지를 위해 lineHeight 단위 sp로 수정 * ui: empty 관련 텍스트 Not.Resizable 설정 * ui: 로그인 및 복구 화면 글씨 크기 조절 대응 * refactor: 홈 화면 content description 추가 * refactor: 나의 추억들 화면 content description 추가 * refactor: 추억 화면 content description 추가 * refactor: 추억 생성 및 수정 화면 content description 추가 * refactor: 스타카토 사진 첨부 item content description 추가 * refactor: 나의 추억들 아이템 중첩된 레이아웃 제거 * refactor: 스타카토 화면 content description 추가 * refactor: 마이페이지 화면 content description 추가 * refactor: 로그인 화면 content description 추가 * refactor: 나의 추억들 item content description 추가 * refactor: 댓글 item content description 추가 * refactor: 함께 한 사람들 item content description 추가 * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 --------- Co-authored-by: somin Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> * hotfix: 이미지 삭제 전파 (#505) * fix: 이미지 삭제 전파 * fix: 이미지 삭제 전파 수정 * feat: 기본 추억 제공 구현 #508 (#509) * feat: 기본 추억 생성 구현 * refactor: 기본 추억 설명 수정 * fix: persist 전파되도록 로직 순서 변경 --------- Co-authored-by: hxeyexn Co-authored-by: BurningFalls Co-authored-by: YoonJuHo Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> Co-authored-by: Hyeyeon Gong <103019852+hxeyexn@users.noreply.github.com> Co-authored-by: somin * fix: file changed 인식 불가로 인한 순서 변경 (#511) * deploy: 1.2.0 배포 (#512) * fix: 누락된 not 연산자 추가 * refactor: whitelist 추가 #489 (#490) * feat: 인덱스 설정 스크립트 작성 #474 (#475) Co-authored-by: BurningFalls * feat: Bulk Delete 예전 pr 코드 이동 (#487) * refactor: N+1 문제 해결 (#488) * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 * refactor: 반응형 ui 적용 및 접근성 향상 #481 (#502) * ui: login 화면 반응형 ui 대응 * ui: 고유 코드 복구 화면 반응형 ui 대응 * ui: 마이페이지 화면 반응형 ui 대응 * ui: 나의 추억들 화면 반응형 ui 대응 * ui: 추억 화면 반응형 ui 대응 - span count 조정 * refactor: 스타카토 생성 화면 반응형 ui 대응 * refactor: 스타카토 수정 화면 반응형 ui 대응 * refactor: 추억 생성 화면 반응형 ui 대응 * refactor: 추억 수정 화면 반응형 ui 대응 * ui: 다크모드 대응 - colors 대응 - themes 대응 - 지도 대응 * fix: 지도 화면의 구성 변경으로 일어나는 크래시 해결 * ui: 스플래시 다크모드 대응 * feat: 스타카토 마커 커스텀 * ui: 스타카토 마커 다크모드 대응 * feat: 사용자 피드백 수집을 위한 구글 폼 연동 * feat: 인스타그램 페이지 연동 * refactor: 마이페이지 버튼 터치 영역 확대 * refactor: TextInputEditText 터치 영역 확대 * refactor: 추억 기간 선택 box 터치 영역 확대 * refactor: 툴바 수정 및 삭제 메뉴 버튼 터치 영역 확대 * refactor: 마이페이지 인스타그램 버튼 터치 영역 확대 * refactor: 스타카토 장소 선택 box 버튼 터치 영역 확대 * refactor: 스타카토 추억, 날짜 및 시간 선택 box 터치 영역 확대 * ui: typography.Body에 Not.Resizable 추가 * ui: styles에 Not.Resizable 적용 * ui: 스타카토 생성 수정 화면 styles 적용 * ui: 추억 생성 수정 화면 styles 적용 * ui: styles_button.xml에 BoundedIconButtonStyle 추가 * ui: 추억, 타임라인 화면에 BoundedIconButtonStyle 적용 * ui: 타임라인 화면 글씨 크기 조절 대응 * ui: layout_photo_attach.xml 글씨 크기 조절 대응 * ui: 추억 조회 화면 글씨 크기 조절 대응 * ui: 행간 겹침 방지를 위해 lineHeight 단위 sp로 수정 * ui: empty 관련 텍스트 Not.Resizable 설정 * ui: 로그인 및 복구 화면 글씨 크기 조절 대응 * refactor: 홈 화면 content description 추가 * refactor: 나의 추억들 화면 content description 추가 * refactor: 추억 화면 content description 추가 * refactor: 추억 생성 및 수정 화면 content description 추가 * refactor: 스타카토 사진 첨부 item content description 추가 * refactor: 나의 추억들 아이템 중첩된 레이아웃 제거 * refactor: 스타카토 화면 content description 추가 * refactor: 마이페이지 화면 content description 추가 * refactor: 로그인 화면 content description 추가 * refactor: 나의 추억들 item content description 추가 * refactor: 댓글 item content description 추가 * refactor: 함께 한 사람들 item content description 추가 * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 --------- Co-authored-by: somin Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> * hotfix: 이미지 삭제 전파 (#505) * fix: 이미지 삭제 전파 * fix: 이미지 삭제 전파 수정 * feat: 기본 추억 제공 구현 #508 (#509) * feat: 기본 추억 생성 구현 * refactor: 기본 추억 설명 수정 * fix: persist 전파되도록 로직 순서 변경 * fix: file changed 인식 불가로 인한 순서 변경 (#511) --------- Co-authored-by: hxeyexn Co-authored-by: BurningFalls Co-authored-by: YoonJuHo Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> Co-authored-by: Hyeyeon Gong <103019852+hxeyexn@users.noreply.github.com> Co-authored-by: somin * feat: 모든 화면에서 네트워크 에러 핸들링 #501 (#516) * fix: ApiResponseHandler try-catch문 범위 수정 * refactor: StaccatoApiService의 반환값 Response로 wrapping * refactor: StaccatoDataSource의 반환값 ResponseResult로 wrapping * refactor: StaccatoRepository의 반환값 ResponseResult로 wrapping * refactor: StaccatoRepository를 사용하는 ViewModel에 에러 처리 변경사항 적용 * feat: MessageUtils.kt에 showSnackBarWithAction 추가 * feat: TimelineFragment 네트워크 에러 발생 시 스낵바 처리 * feat: MemoryFragment 네트워크 에러 발생 시 스낵바 처리 * feat: StaccatoFragment 네트워크 에러 발생 시 스낵바 처리 * refactor: 불필요한 Log.e 메서드 제거 * style: 네트워크 에러 메시지 상수명 통일 * refactor: MessageUtils에 getSnackBarWithAction 메서드 추가 * feat: Memory 생성/수정 화면 에러 핸들링 * feat: Staccato 생성/수정 화면 에러 핸들링 * feat: 마이페이지 화면 네트워크 에러 핸들링 * fix: 스타카토 조회 화면 코멘트 에러 핸들링 * refactor: 추억 에러 관련 data class 리네이밍 Photo -> Thumbnail * refactor: 추억 생성 에러 data class 리네이밍 MemoryCreate -> MemoryCreation * refactor: 메서드명 카멜 케이스로 통일 (reCreate) * refactor: 추억 업데이트 에러 data class 리네이밍 MemoryInitialize -> MemoryInitialization * refactor: getSnackBarWithAction의 length를 named arguments로 수정 * refactor: EXCEPTION_NETWORK_ERROR_MESSAGE 텍스트 내용 수정 * refactor: 이미지 업로드 실패 메시지 상수화 * refactor: StaccatoUpdateViewModel의 메시지 상수화 및 PhotoException 분리 * refactor: 스낵바 Util 불필요한 apply 제거 * build: 안드로이드 CI/CD 재설정 #445 (#513) * build: android ci 타겟 브랜치 변경 - develop-an -> develop 브랜치로 변경 * build: 개발 단계용 android ci, cd 설정 - Debug용 APK 파일이 아닌 Release용 APK 파일을 추출하도록 변경 - gradle assembleRelease : 앱을 release 모드로 빌드, Debug 정보를 포함하지 않기에 용량이 더 적고, 난독화가 적용되어 있다. * build: 개발 단계용 android ci, cd 설정 - 타겟 브랜치 변경 : develop -> release-an 으로 변경 - Debug용 APK 파일이 아닌 Release용 APK 파일을 추출하도록 변경 - gradle assembleRelease : 앱을 release 모드로 빌드, Debug 정보를 포함하지 않기에 용량이 더 적고, 난독화가 적용되어 있다. * build: android ci 워크플로우 이름 변경 * build: android cd 재설정 - 구글 플레이 콘솔 자동 배포 설정 * build: Play Console 배포 설정 변경 - 서비스 계정 Key 파일 secret 변수 변경 - whatsNewDirectory 설정 * build: android ci 적용 브랜치 수정 - release-an 브랜치, main 브랜치 추가 * fix: 안드로이드 CI 오류 수정 #519 (#521) * fix: android-ci.yml 파일 수정 * fix: android-ci.yml 파일 수정 * feat: 나의 추억들 정렬 기능 구현 #503 (#507) * ui: 정렬 메뉴 ui 구현 * feat: 나의 추억들 정렬 기능 구현 * feat: 기간 유무에 따른 추억 필터 기능 구현 * refactor: 정렬 타입에 따른 정렬 선택 로직을 view model이 가지도록 변경 - 정렬 타입과 정렬 menu id를 가지고 있는 SortType Enum Class 생성 * refactor: timeline ui model 셋팅 로직 수정 * refactor: 사용자가 선택한 menuId와 일치하는 SortType을 찾는 로직을 팩토리 함수로 분리 * refactor: 원본 timeline clear 로직 추가 * refactor: 기간 있는 추억 내림차순 정렬 조건 추가 * fix: 추억 삭제 후 나의 추억들(타임라인)이 갱신되지 않는 오류 수정 * fix: 나의 추억들(타임라인) 정렬 시 포커스가 유지되는 문제 해결 * refactor: originalTimeline 타입 변경 * ui: 기분 캐릭터 변경 #522 (#523) * ui: 음표 기분 캐릭터 추가 * refactor: 음표 기분 캐릭터 적용 * feat: 카메라 촬영 기능 연결 #514 (#524) * build: androidx camera 의존성 추가 - 버전 카탈로그 활용 * build: AndroidManifest 카메라 접근 기능 수정 - android.hardware.camera.any 로 설정하여 전, 후면 모두 사용 가능하도록 변경 * ui: 사진 업로드 다이얼로그에서 ㄷ사용할 문자열 리소스 설정 - 권한 관련 안내 메시지 추가 * feat: 카메라 기능 추가 - 접근 권한 확인 후 카메라 실행 - 카메라에서 촬영한 사진을 가져와 Activity에게 이미지 URI 전달 * style: ktlint 적용 * fix: 권한 요청 스낵바와 에러 메시지 스낵바 분리 * ui: 권한 요청 스낵바의 문구 수정 * fix: 외부 저장소 쓰기 권한 추가 * deploy: v.1.2.0 배포 준비 #515 (#525) * refactor: versionCode 및 versionName 업데이트 - versionCode: 4 -> 5 - versionName: "1.1.0" -> "1.2.0" * ui: 마이페이지에 노출될 앱 버전 명 업데이트 - 앱 버전: "1.1.0" -> "1.2.0" * docs: 1.2.0 버전 출시 노트 추가 * fix: Android CD 수정 #527 (#528) * fix: push branch 에 release-an 추가 * fix: 출시 노트 옵션 파일경로 수정 * chore: Thread, Hikari CP 변경 (#518) * feat: Hikari CP, Thread 설정 변경 * fix: writer, reader에 각각 hikari 설정 * feat: 기본 추억 제목 변경 #530 (#531) * feat: 기본 추억 이름을 ~의 추억으로 설정 * refactor: 변수 사용 * deploy: 1.2.1 배포 (#532) * fix: 누락된 not 연산자 추가 * refactor: whitelist 추가 #489 (#490) * feat: 인덱스 설정 스크립트 작성 #474 (#475) Co-authored-by: BurningFalls * feat: Bulk Delete 예전 pr 코드 이동 (#487) * refactor: N+1 문제 해결 (#488) * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 * refactor: 반응형 ui 적용 및 접근성 향상 #481 (#502) * ui: login 화면 반응형 ui 대응 * ui: 고유 코드 복구 화면 반응형 ui 대응 * ui: 마이페이지 화면 반응형 ui 대응 * ui: 나의 추억들 화면 반응형 ui 대응 * ui: 추억 화면 반응형 ui 대응 - span count 조정 * refactor: 스타카토 생성 화면 반응형 ui 대응 * refactor: 스타카토 수정 화면 반응형 ui 대응 * refactor: 추억 생성 화면 반응형 ui 대응 * refactor: 추억 수정 화면 반응형 ui 대응 * ui: 다크모드 대응 - colors 대응 - themes 대응 - 지도 대응 * fix: 지도 화면의 구성 변경으로 일어나는 크래시 해결 * ui: 스플래시 다크모드 대응 * feat: 스타카토 마커 커스텀 * ui: 스타카토 마커 다크모드 대응 * feat: 사용자 피드백 수집을 위한 구글 폼 연동 * feat: 인스타그램 페이지 연동 * refactor: 마이페이지 버튼 터치 영역 확대 * refactor: TextInputEditText 터치 영역 확대 * refactor: 추억 기간 선택 box 터치 영역 확대 * refactor: 툴바 수정 및 삭제 메뉴 버튼 터치 영역 확대 * refactor: 마이페이지 인스타그램 버튼 터치 영역 확대 * refactor: 스타카토 장소 선택 box 버튼 터치 영역 확대 * refactor: 스타카토 추억, 날짜 및 시간 선택 box 터치 영역 확대 * ui: typography.Body에 Not.Resizable 추가 * ui: styles에 Not.Resizable 적용 * ui: 스타카토 생성 수정 화면 styles 적용 * ui: 추억 생성 수정 화면 styles 적용 * ui: styles_button.xml에 BoundedIconButtonStyle 추가 * ui: 추억, 타임라인 화면에 BoundedIconButtonStyle 적용 * ui: 타임라인 화면 글씨 크기 조절 대응 * ui: layout_photo_attach.xml 글씨 크기 조절 대응 * ui: 추억 조회 화면 글씨 크기 조절 대응 * ui: 행간 겹침 방지를 위해 lineHeight 단위 sp로 수정 * ui: empty 관련 텍스트 Not.Resizable 설정 * ui: 로그인 및 복구 화면 글씨 크기 조절 대응 * refactor: 홈 화면 content description 추가 * refactor: 나의 추억들 화면 content description 추가 * refactor: 추억 화면 content description 추가 * refactor: 추억 생성 및 수정 화면 content description 추가 * refactor: 스타카토 사진 첨부 item content description 추가 * refactor: 나의 추억들 아이템 중첩된 레이아웃 제거 * refactor: 스타카토 화면 content description 추가 * refactor: 마이페이지 화면 content description 추가 * refactor: 로그인 화면 content description 추가 * refactor: 나의 추억들 item content description 추가 * refactor: 댓글 item content description 추가 * refactor: 함께 한 사람들 item content description 추가 * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 --------- Co-authored-by: somin Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> * hotfix: 이미지 삭제 전파 (#505) * fix: 이미지 삭제 전파 * fix: 이미지 삭제 전파 수정 * feat: 기본 추억 제공 구현 #508 (#509) * feat: 기본 추억 생성 구현 * refactor: 기본 추억 설명 수정 * fix: persist 전파되도록 로직 순서 변경 * fix: file changed 인식 불가로 인한 순서 변경 (#511) * feat: 모든 화면에서 네트워크 에러 핸들링 #501 (#516) * fix: ApiResponseHandler try-catch문 범위 수정 * refactor: StaccatoApiService의 반환값 Response로 wrapping * refactor: StaccatoDataSource의 반환값 ResponseResult로 wrapping * refactor: StaccatoRepository의 반환값 ResponseResult로 wrapping * refactor: StaccatoRepository를 사용하는 ViewModel에 에러 처리 변경사항 적용 * feat: MessageUtils.kt에 showSnackBarWithAction 추가 * feat: TimelineFragment 네트워크 에러 발생 시 스낵바 처리 * feat: MemoryFragment 네트워크 에러 발생 시 스낵바 처리 * feat: StaccatoFragment 네트워크 에러 발생 시 스낵바 처리 * refactor: 불필요한 Log.e 메서드 제거 * style: 네트워크 에러 메시지 상수명 통일 * refactor: MessageUtils에 getSnackBarWithAction 메서드 추가 * feat: Memory 생성/수정 화면 에러 핸들링 * feat: Staccato 생성/수정 화면 에러 핸들링 * feat: 마이페이지 화면 네트워크 에러 핸들링 * fix: 스타카토 조회 화면 코멘트 에러 핸들링 * refactor: 추억 에러 관련 data class 리네이밍 Photo -> Thumbnail * refactor: 추억 생성 에러 data class 리네이밍 MemoryCreate -> MemoryCreation * refactor: 메서드명 카멜 케이스로 통일 (reCreate) * refactor: 추억 업데이트 에러 data class 리네이밍 MemoryInitialize -> MemoryInitialization * refactor: getSnackBarWithAction의 length를 named arguments로 수정 * refactor: EXCEPTION_NETWORK_ERROR_MESSAGE 텍스트 내용 수정 * refactor: 이미지 업로드 실패 메시지 상수화 * refactor: StaccatoUpdateViewModel의 메시지 상수화 및 PhotoException 분리 * refactor: 스낵바 Util 불필요한 apply 제거 * build: 안드로이드 CI/CD 재설정 #445 (#513) * build: android ci 타겟 브랜치 변경 - develop-an -> develop 브랜치로 변경 * build: 개발 단계용 android ci, cd 설정 - Debug용 APK 파일이 아닌 Release용 APK 파일을 추출하도록 변경 - gradle assembleRelease : 앱을 release 모드로 빌드, Debug 정보를 포함하지 않기에 용량이 더 적고, 난독화가 적용되어 있다. * build: 개발 단계용 android ci, cd 설정 - 타겟 브랜치 변경 : develop -> release-an 으로 변경 - Debug용 APK 파일이 아닌 Release용 APK 파일을 추출하도록 변경 - gradle assembleRelease : 앱을 release 모드로 빌드, Debug 정보를 포함하지 않기에 용량이 더 적고, 난독화가 적용되어 있다. * build: android ci 워크플로우 이름 변경 * build: android cd 재설정 - 구글 플레이 콘솔 자동 배포 설정 * build: Play Console 배포 설정 변경 - 서비스 계정 Key 파일 secret 변수 변경 - whatsNewDirectory 설정 * build: android ci 적용 브랜치 수정 - release-an 브랜치, main 브랜치 추가 * fix: 안드로이드 CI 오류 수정 #519 (#521) * fix: android-ci.yml 파일 수정 * fix: android-ci.yml 파일 수정 * feat: 나의 추억들 정렬 기능 구현 #503 (#507) * ui: 정렬 메뉴 ui 구현 * feat: 나의 추억들 정렬 기능 구현 * feat: 기간 유무에 따른 추억 필터 기능 구현 * refactor: 정렬 타입에 따른 정렬 선택 로직을 view model이 가지도록 변경 - 정렬 타입과 정렬 menu id를 가지고 있는 SortType Enum Class 생성 * refactor: timeline ui model 셋팅 로직 수정 * refactor: 사용자가 선택한 menuId와 일치하는 SortType을 찾는 로직을 팩토리 함수로 분리 * refactor: 원본 timeline clear 로직 추가 * refactor: 기간 있는 추억 내림차순 정렬 조건 추가 * fix: 추억 삭제 후 나의 추억들(타임라인)이 갱신되지 않는 오류 수정 * fix: 나의 추억들(타임라인) 정렬 시 포커스가 유지되는 문제 해결 * refactor: originalTimeline 타입 변경 * ui: 기분 캐릭터 변경 #522 (#523) * ui: 음표 기분 캐릭터 추가 * refactor: 음표 기분 캐릭터 적용 * feat: 카메라 촬영 기능 연결 #514 (#524) * build: androidx camera 의존성 추가 - 버전 카탈로그 활용 * build: AndroidManifest 카메라 접근 기능 수정 - android.hardware.camera.any 로 설정하여 전, 후면 모두 사용 가능하도록 변경 * ui: 사진 업로드 다이얼로그에서 ㄷ사용할 문자열 리소스 설정 - 권한 관련 안내 메시지 추가 * feat: 카메라 기능 추가 - 접근 권한 확인 후 카메라 실행 - 카메라에서 촬영한 사진을 가져와 Activity에게 이미지 URI 전달 * style: ktlint 적용 * fix: 권한 요청 스낵바와 에러 메시지 스낵바 분리 * ui: 권한 요청 스낵바의 문구 수정 * fix: 외부 저장소 쓰기 권한 추가 * deploy: v.1.2.0 배포 준비 #515 (#525) * refactor: versionCode 및 versionName 업데이트 - versionCode: 4 -> 5 - versionName: "1.1.0" -> "1.2.0" * ui: 마이페이지에 노출될 앱 버전 명 업데이트 - 앱 버전: "1.1.0" -> "1.2.0" * docs: 1.2.0 버전 출시 노트 추가 * deploy: v.1.2.0 배포 (#526) * fix: 누락된 not 연산자 추가 * refactor: whitelist 추가 #489 (#490) * deploy: 1.1.1 배포 #484 (#491) * fix: 누락된 not 연산자 추가 * refactor: whitelist 추가 #489 (#490) --------- Co-authored-by: hxeyexn * feat: 인덱스 설정 스크립트 작성 #474 (#475) Co-authored-by: BurningFalls * feat: Bulk Delete 예전 pr 코드 이동 (#487) * refactor: N+1 문제 해결 (#488) * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 * refactor: 반응형 ui 적용 및 접근성 향상 #481 (#502) * ui: login 화면 반응형 ui 대응 * ui: 고유 코드 복구 화면 반응형 ui 대응 * ui: 마이페이지 화면 반응형 ui 대응 * ui: 나의 추억들 화면 반응형 ui 대응 * ui: 추억 화면 반응형 ui 대응 - span count 조정 * refactor: 스타카토 생성 화면 반응형 ui 대응 * refactor: 스타카토 수정 화면 반응형 ui 대응 * refactor: 추억 생성 화면 반응형 ui 대응 * refactor: 추억 수정 화면 반응형 ui 대응 * ui: 다크모드 대응 - colors 대응 - themes 대응 - 지도 대응 * fix: 지도 화면의 구성 변경으로 일어나는 크래시 해결 * ui: 스플래시 다크모드 대응 * feat: 스타카토 마커 커스텀 * ui: 스타카토 마커 다크모드 대응 * feat: 사용자 피드백 수집을 위한 구글 폼 연동 * feat: 인스타그램 페이지 연동 * refactor: 마이페이지 버튼 터치 영역 확대 * refactor: TextInputEditText 터치 영역 확대 * refactor: 추억 기간 선택 box 터치 영역 확대 * refactor: 툴바 수정 및 삭제 메뉴 버튼 터치 영역 확대 * refactor: 마이페이지 인스타그램 버튼 터치 영역 확대 * refactor: 스타카토 장소 선택 box 버튼 터치 영역 확대 * refactor: 스타카토 추억, 날짜 및 시간 선택 box 터치 영역 확대 * ui: typography.Body에 Not.Resizable 추가 * ui: styles에 Not.Resizable 적용 * ui: 스타카토 생성 수정 화면 styles 적용 * ui: 추억 생성 수정 화면 styles 적용 * ui: styles_button.xml에 BoundedIconButtonStyle 추가 * ui: 추억, 타임라인 화면에 BoundedIconButtonStyle 적용 * ui: 타임라인 화면 글씨 크기 조절 대응 * ui: layout_photo_attach.xml 글씨 크기 조절 대응 * ui: 추억 조회 화면 글씨 크기 조절 대응 * ui: 행간 겹침 방지를 위해 lineHeight 단위 sp로 수정 * ui: empty 관련 텍스트 Not.Resizable 설정 * ui: 로그인 및 복구 화면 글씨 크기 조절 대응 * refactor: 홈 화면 content description 추가 * refactor: 나의 추억들 화면 content description 추가 * refactor: 추억 화면 content description 추가 * refactor: 추억 생성 및 수정 화면 content description 추가 * refactor: 스타카토 사진 첨부 item content description 추가 * refactor: 나의 추억들 아이템 중첩된 레이아웃 제거 * refactor: 스타카토 화면 content description 추가 * refactor: 마이페이지 화면 content description 추가 * refactor: 로그인 화면 content description 추가 * refactor: 나의 추억들 item content description 추가 * refactor: 댓글 item content description 추가 * refactor: 함께 한 사람들 item content description 추가 * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 --------- Co-authored-by: somin Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> * deploy: 1.1.2 배포 (#504) * fix: 누락된 not 연산자 추가 * refactor: whitelist 추가 #489 (#490) * feat: 인덱스 설정 스크립트 작성 #474 (#475) Co-authored-by: BurningFalls * feat: Bulk Delete 예전 pr 코드 이동 (#487) * refactor: N+1 문제 해결 (#488) * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 * refactor: 반응형 ui 적용 및 접근성 향상 #481 (#502) * ui: login 화면 반응형 ui 대응 * ui: 고유 코드 복구 화면 반응형 ui 대응 * ui: 마이페이지 화면 반응형 ui 대응 * ui: 나의 추억들 화면 반응형 ui 대응 * ui: 추억 화면 반응형 ui 대응 - span count 조정 * refactor: 스타카토 생성 화면 반응형 ui 대응 * refactor: 스타카토 수정 화면 반응형 ui 대응 * refactor: 추억 생성 화면 반응형 ui 대응 * refactor: 추억 수정 화면 반응형 ui 대응 * ui: 다크모드 대응 - colors 대응 - themes 대응 - 지도 대응 * fix: 지도 화면의 구성 변경으로 일어나는 크래시 해결 * ui: 스플래시 다크모드 대응 * feat: 스타카토 마커 커스텀 * ui: 스타카토 마커 다크모드 대응 * feat: 사용자 피드백 수집을 위한 구글 폼 연동 * feat: 인스타그램 페이지 연동 * refactor: 마이페이지 버튼 터치 영역 확대 * refactor: TextInputEditText 터치 영역 확대 * refactor: 추억 기간 선택 box 터치 영역 확대 * refactor: 툴바 수정 및 삭제 메뉴 버튼 터치 영역 확대 * refactor: 마이페이지 인스타그램 버튼 터치 영역 확대 * refactor: 스타카토 장소 선택 box 버튼 터치 영역 확대 * refactor: 스타카토 추억, 날짜 및 시간 선택 box 터치 영역 확대 * ui: typography.Body에 Not.Resizable 추가 * ui: styles에 Not.Resizable 적용 * ui: 스타카토 생성 수정 화면 styles 적용 * ui: 추억 생성 수정 화면 styles 적용 * ui: styles_button.xml에 BoundedIconButtonStyle 추가 * ui: 추억, 타임라인 화면에 BoundedIconButtonStyle 적용 * ui: 타임라인 화면 글씨 크기 조절 대응 * ui: layout_photo_attach.xml 글씨 크기 조절 대응 * ui: 추억 조회 화면 글씨 크기 조절 대응 * ui: 행간 겹침 방지를 위해 lineHeight 단위 sp로 수정 * ui: empty 관련 텍스트 Not.Resizable 설정 * ui: 로그인 및 복구 화면 글씨 크기 조절 대응 * refactor: 홈 화면 content description 추가 * refactor: 나의 추억들 화면 content description 추가 * refactor: 추억 화면 content description 추가 * refactor: 추억 생성 및 수정 화면 content description 추가 * refactor: 스타카토 사진 첨부 item content description 추가 * refactor: 나의 추억들 아이템 중첩된 레이아웃 제거 * refactor: 스타카토 화면 content description 추가 * refactor: 마이페이지 화면 content description 추가 * refactor: 로그인 화면 content description 추가 * refactor: 나의 추억들 item content description 추가 * refactor: 댓글 item content description 추가 * refactor: 함께 한 사람들 item content description 추가 * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 --------- Co-authored-by: somin Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> --------- Co-authored-by: hxeyexn Co-authored-by: linirini <101927543+linirini@users.noreply.github.com> Co-authored-by: YoonJuHo Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> Co-authored-by: Hyeyeon Gong <103019852+hxeyexn@users.noreply.github.com> Co-authored-by: somin * hotfix: 이미지 삭제 전파 (#505) * fix: 이미지 삭제 전파 * fix: 이미지 삭제 전파 수정 * deploy: 1.1.3 배포 (#506) * fix: 누락된 not 연산자 추가 * refactor: whitelist 추가 #489 (#490) * feat: 인덱스 설정 스크립트 작성 #474 (#475) Co-authored-by: BurningFalls * feat: Bulk Delete 예전 pr 코드 이동 (#487) * refactor: N+1 문제 해결 (#488) * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 * refactor: 반응형 ui 적용 및 접근성 향상 #481 (#502) * ui: login 화면 반응형 ui 대응 * ui: 고유 코드 복구 화면 반응형 ui 대응 * ui: 마이페이지 화면 반응형 ui 대응 * ui: 나의 추억들 화면 반응형 ui 대응 * ui: 추억 화면 반응형 ui 대응 - span count 조정 * refactor: 스타카토 생성 화면 반응형 ui 대응 * refactor: 스타카토 수정 화면 반응형 ui 대응 * refactor: 추억 생성 화면 반응형 ui 대응 * refactor: 추억 수정 화면 반응형 ui 대응 * ui: 다크모드 대응 - colors 대응 - themes 대응 - 지도 대응 * fix: 지도 화면의 구성 변경으로 일어나는 크래시 해결 * ui: 스플래시 다크모드 대응 * feat: 스타카토 마커 커스텀 * ui: 스타카토 마커 다크모드 대응 * feat: 사용자 피드백 수집을 위한 구글 폼 연동 * feat: 인스타그램 페이지 연동 * refactor: 마이페이지 버튼 터치 영역 확대 * refactor: TextInputEditText 터치 영역 확대 * refactor: 추억 기간 선택 box 터치 영역 확대 * refactor: 툴바 수정 및 삭제 메뉴 버튼 터치 영역 확대 * refactor: 마이페이지 인스타그램 버튼 터치 영역 확대 * refactor: 스타카토 장소 선택 box 버튼 터치 영역 확대 * refactor: 스타카토 추억, 날짜 및 시간 선택 box 터치 영역 확대 * ui: typography.Body에 Not.Resizable 추가 * ui: styles에 Not.Resizable 적용 * ui: 스타카토 생성 수정 화면 styles 적용 * ui: 추억 생성 수정 화면 styles 적용 * ui: styles_button.xml에 BoundedIconButtonStyle 추가 * ui: 추억, 타임라인 화면에 BoundedIconButtonStyle 적용 * ui: 타임라인 화면 글씨 크기 조절 대응 * ui: layout_photo_attach.xml 글씨 크기 조절 대응 * ui: 추억 조회 화면 글씨 크기 조절 대응 * ui: 행간 겹침 방지를 위해 lineHeight 단위 sp로 수정 * ui: empty 관련 텍스트 Not.Resizable 설정 * ui: 로그인 및 복구 화면 글씨 크기 조절 대응 * refactor: 홈 화면 content description 추가 * refactor: 나의 추억들 화면 content description 추가 * refactor: 추억 화면 content description 추가 * refactor: 추억 생성 및 수정 화면 content description 추가 * refactor: 스타카토 사진 첨부 item content description 추가 * refactor: 나의 추억들 아이템 중첩된 레이아웃 제거 * refactor: 스타카토 화면 content description 추가 * refactor: 마이페이지 화면 content description 추가 * refactor: 로그인 화면 content description 추가 * refactor: 나의 추억들 item content description 추가 * refactor: 댓글 item content description 추가 * refactor: 함께 한 사람들 item content description 추가 * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 --------- Co-authored-by: somin Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> * hotfix: 이미지 삭제 전파 (#505) * fix: 이미지 삭제 전파 * fix: 이미지 삭제 전파 수정 --------- Co-authored-by: hxeyexn Co-authored-by: linirini <101927543+linirini@users.noreply.github.com> Co-authored-by: BurningFalls Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> Co-authored-by: Hyeyeon Gong <103019852+hxeyexn@users.noreply.github.com> Co-authored-by: somin * feat: 기본 추억 제공 구현 #508 (#509) * feat: 기본 추억 생성 구현 * refactor: 기본 추억 설명 수정 * fix: persist 전파되도록 로직 순서 변경 * deploy: 1.2.0 배포 (#510) * fix: 누락된 not 연산자 추가 * refactor: whitelist 추가 #489 (#490) * feat: 인덱스 설정 스크립트 작성 #474 (#475) Co-authored-by: BurningFalls * feat: Bulk Delete 예전 pr 코드 이동 (#487) * refactor: N+1 문제 해결 (#488) * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 * refactor: 반응형 ui 적용 및 접근성 향상 #481 (#502) * ui: login 화면 반응형 ui 대응 * ui: 고유 코드 복구 화면 반응형 ui 대응 * ui: 마이페이지 화면 반응형 ui 대응 * ui: 나의 추억들 화면 반응형 ui 대응 * ui: 추억 화면 반응형 ui 대응 - span count 조정 * refactor: 스타카토 생성 화면 반응형 ui 대응 * refactor: 스타카토 수정 화면 반응형 ui 대응 * refactor: 추억 생성 화면 반응형 ui 대응 * refactor: 추억 수정 화면 반응형 ui 대응 * ui: 다크모드 대응 - colors 대응 - themes 대응 - 지도 대응 * fix: 지도 화면의 구성 변경으로 일어나는 크래시 해결 * ui: 스플래시 다크모드 대응 * feat: 스타카토 마커 커스텀 * ui: 스타카토 마커 다크모드 대응 * feat: 사용자 피드백 수집을 위한 구글 폼 연동 * feat: 인스타그램 페이지 연동 * refactor: 마이페이지 버튼 터치 영역 확대 * refactor: TextInputEditText 터치 영역 확대 * refactor: 추억 기간 선택 box 터치 영역 확대 * refactor: 툴바 수정 및 삭제 메뉴 버튼 터치 영역 확대 * refactor: 마이페이지 인스타그램 버튼 터치 영역 확대 * refactor: 스타카토 장소 선택 box 버튼 터치 영역 확대 * refactor: 스타카토 추억, 날짜 및 시간 선택 box 터치 영역 확대 * ui: typography.Body에 Not.Resizable 추가 * ui: styles에 Not.Resizable 적용 * ui: 스타카토 생성 수정 화면 styles 적용 * ui: 추억 생성 수정 화면 styles 적용 * ui: styles_button.xml에 BoundedIconButtonStyle 추가 * ui: 추억, 타임라인 화면에 BoundedIconButtonStyle 적용 * ui: 타임라인 화면 글씨 크기 조절 대응 * ui: layout_photo_attach.xml 글씨 크기 조절 대응 * ui: 추억 조회 화면 글씨 크기 조절 대응 * ui: 행간 겹침 방지를 위해 lineHeight 단위 sp로 수정 * ui: empty 관련 텍스트 Not.Resizable 설정 * ui: 로그인 및 복구 화면 글씨 크기 조절 대응 * refactor: 홈 화면 content description 추가 * refactor: 나의 추억들 화면 content description 추가 * refactor: 추억 화면 content description 추가 * refactor: 추억 생성 및 수정 화면 content description 추가 * refactor: 스타카토 사진 첨부 item content description 추가 * refactor: 나의 추억들 아이템 중첩된 레이아웃 제거 * refactor: 스타카토 화면 content description 추가 * refactor: 마이페이지 화면 content description 추가 * refactor: 로그인 화면 content description 추가 * refactor: 나의 추억들 item content description 추가 * refactor: 댓글 item content description 추가 * refactor: 함께 한 사람들 item content description 추가 * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 --------- Co-authored-by: somin Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> * hotfix: 이미지 삭제 전파 (#505) * fix: 이미지 삭제 전파 * fix: 이미지 삭제 전파 수정 * feat: 기본 추억 제공 구현 #508 (#509) * feat: 기본 추억 생성 구현 * refactor: 기본 추억 설명 수정 * fix: persist 전파되도록 로직 순서 변경 --------- Co-authored-by: hxeyexn Co-authored-by: BurningFalls Co-authored-by: YoonJuHo Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> Co-authored-by: Hyeyeon Gong <103019852+hxeyexn@users.noreply.github.com> Co-authored-by: somin * fix: file changed 인식 불가로 인한 순서 변경 (#511) * feat: 모든 화면에서 네트워크 에러 핸들링 #501 (#516) * fix: ApiResponseHandler try-catch문 범위 수정 * refactor: StaccatoApiService의 반환값 Response로 wrapping * refactor: StaccatoDataSource의 반환값 ResponseResult로 wrapping * refactor: StaccatoRepository의 반환값 ResponseResult로 wrapping * refactor: StaccatoRepository를 사용하는 ViewModel에 에러 처리 변경사항 적용 * feat: MessageUtils.kt에 showSnackBarWithAction 추가 * feat: TimelineFragment 네트워크 에러 발생 시 스낵바 처리 * feat: MemoryFragment 네트워크 에러 발생 시 스낵바 처리 * feat: StaccatoFragment 네트워크 에러 발생 시 스낵바 처리 * refactor: 불필요한 Log.e 메서드 제거 * style: 네트워크 에러 메시지 상수명 통일 * refactor: MessageUtils에 getSnackBarWithAction 메서드 추가 * feat: Memory 생성/수정 화면 에러 핸들링 * feat: Staccato 생성/수정 화면 에러 핸들링 * feat: 마이페이지 화면 네트워크 에러 핸들링 * fix: 스타카토 조회 화면 코멘트 에러 핸들링 * refactor: 추억 에러 관련 data class 리네이밍 Photo -> Thumbnail * refactor: 추억 생성 에러 data class 리네이밍 MemoryCreate -> MemoryCreation * refactor: 메서드명 카멜 케이스로 통일 (reCreate) * refactor: 추억 업데이트 에러 data class 리네이밍 MemoryInitialize -> MemoryInitialization * refactor: getSnackBarWithAction의 length를 named arguments로 수정 * refactor: EXCEPTION_NETWORK_ERROR_MESSAGE 텍스트 내용 수정 * refactor: 이미지 업로드 실패 메시지 상수화 * refactor: StaccatoUpdateViewModel의 메시지 상수화 및 PhotoException 분리 * refactor: 스낵바 Util 불필요한 apply 제거 * build: 안드로이드 CI/CD 재설정 #445 (#513) * build: android ci 타겟 브랜치 변경 - develop-an -> develop 브랜치로 변경 * build: 개발 단계용 android ci, cd 설정 - Debug용 APK 파일이 아닌 Release용 APK 파일을 추출하도록 변경 - gradle assembleRelease : 앱을 release 모드로 빌드, Debug 정보를 포함하지 않기에 용량이 더 적고, 난독화가 적용되어 있다. * build: 개발 단계용 android ci, cd 설정 - 타겟 브랜치 변경 : develop -> release-an 으로 변경 - Debug용 APK 파일이 아닌 Release용 APK 파일을 추출하도록 변경 - gradle assembleRelease : 앱을 release 모드로 빌드, Debug 정보를 포함하지 않기에 용량이 더 적고, 난독화가 적용되어 있다. * build: android ci 워크플로우 이름 변경 * build: android cd 재설정 - 구글 플레이 콘솔 자동 배포 설정 * build: Play Console 배포 설정 변경 - 서비스 계정 Key 파일 secret 변수 변경 - whatsNewDirectory 설정 * build: android ci 적용 브랜치 수정 - release-an 브랜치, main 브랜치 추가 * fix: 안드로이드 CI 오류 수정 #519 (#521) * fix: android-ci.yml 파일 수정 * fix: android-ci.yml 파일 수정 * feat: 나의 추억들 정렬 기능 구현 #503 (#507) * ui: 정렬 메뉴 ui 구현 * feat: 나의 추억들 정렬 기능 구현 * feat: 기간 유무에 따른 추억 필터 기능 구현 * refactor: 정렬 타입에 따른 정렬 선택 로직을 view model이 가지도록 변경 - 정렬 타입과 정렬 menu id를 가지고 있는 SortType Enum Class 생성 * refactor: timeline ui model 셋팅 로직 수정 * refactor: 사용자가 선택한 menuId와 일치하는 SortType을 찾는 로직을 팩토리 함수로 분리 * refactor: 원본 timeline clear 로직 추가 * refactor: 기간 있는 추억 내림차순 정렬 조건 추가 * fix: 추억 삭제 후 나의 추억들(타임라인)이 갱신되지 않는 오류 수정 * fix: 나의 추억들(타임라인) 정렬 시 포커스가 유지되는 문제 해결 * refactor: originalTimeline 타입 변경 * ui: 기분 캐릭터 변경 #522 (#523) * ui: 음표 기분 캐릭터 추가 * refactor: 음표 기분 캐릭터 적용 * feat: 카메라 촬영 기능 연결 #514 (#524) * build: androidx camera 의존성 추가 - 버전 카탈로그 활용 * build: AndroidManifest 카메라 접근 기능 수정 - android.hardware.camera.any 로 설정하여 전, 후면 모두 사용 가능하도록 변경 * ui: 사진 업로드 다이얼로그에서 ㄷ사용할 문자열 리소스 설정 - 권한 관련 안내 메시지 추가 * feat: 카메라 기능 추가 - 접근 권한 확인 후 카메라 실행 - 카메라에서 촬영한 사진을 가져와 Activity에게 이미지 URI 전달 * style: ktlint 적용 * fix: 권한 요청 스낵바와 에러 메시지 스낵바 분리 * ui: 권한 요청 스낵바의 문구 수정 * fix: 외부 저장소 쓰기 권한 추가 * deploy: v.1.2.0 배포 준비 #515 (#525) * refactor: versionCode 및 versionName 업데이트 - versionCode: 4 -> 5 - versionName: "1.1.0" -> "1.2.0" * ui: 마이페이지에 노출될 앱 버전 명 업데이트 - 앱 버전: "1.1.0" -> "1.2.0" * docs: 1.2.0 버전 출시 노트 추가 --------- Co-authored-by: hxeyexn Co-authored-by: linirini <101927543+linirini@users.noreply.github.com> Co-authored-by: BurningFalls Co-authored-by: YoonJuHo Co-authored-by: Hyeyeon Gong <103019852+hxeyexn@users.noreply.github.com> Co-authored-by: somin Co-authored-by: linirini <2001yerin@naver.com> Co-authored-by: Somin Lee <46596035+s6m1n@users.noreply.github.com> * fix: Android CD 수정 #527 (#528) * fix: push branch 에 release-an 추가 * fix: 출시 노트 옵션 파일경로 수정 * chore: Thread, Hikari CP 변경 (#518) * feat: Hikari CP, Thread 설정 변경 * fix: writer, reader에 각각 hikari 설정 * feat: 기본 추억 제목 변경 #530 (#531) * feat: 기본 추억 이름을 ~의 추억으로 설정 * refactor: 변수 사용 --------- Co-authored-by: hxeyexn Co-authored-by: BurningFalls Co-authored-by: YoonJuHo Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> Co-authored-by: Hyeyeon Gong <103019852+hxeyexn@users.noreply.github.com> Co-authored-by: somin Co-authored-by: Somin Lee <46596035+s6m1n@users.noreply.github.com> * fix: 스타카토 삭제 시 마커가 갱신되지 않는 오류 해결 #533 (#534) * fix: 스타카토 삭제 시 마커가 갱신되지 않는 오류 해결 * build: versionCode 업그레이드 - versionCode: 5 -> 6 --------- Co-authored-by: Junyoung-WON * feat & fix: 사진 코루틴 취소 버그 수정 / ACTION_PICK_IMAGES 적용 #536 (#537) * chore: 카메라와 사진 권한 메시지 분리 * feat: ACTION_PICK_IMAGES 적용 및 장 수 선택 제한 * fix: 사진 업로드 코루틴에서 예외 시 isActive 체크 * style: StaccatoUpdateViewModel ktlintFormat * refactor: 코드 리뷰 반영 * refactor: 코드 리뷰 반영 - 상수화 * docs: bug-issue-template 생성 * docs: 기능 이슈 템플릿 작성 * docs: 기능 이슈 템플릿 수정 * docs: 기능 이슈 템플릿 수정 * docs: 리팩터링 이슈 템플릿 작성 * docs: 기존 이슈 템플릿 제거 * chore: cd workflow 작동 브랜치 수정 * refactor: comments api uri 수정 #544 (#549) * feat: comment uri 변경 및 버저닝 * refactor: 불필요한 코드 변경을 최소화하기 위해 uri 상에서 버저닝 위치 변경 * refactor: 스타카토 목록 조회 시 최신순 정렬 #545 (#550) * refactor: 스타카토 목록 조회 시 최신순 정렬하도록 정렬 기준 변경 * test: 검증 메서드 순서 확인 여부 수정 * feat: 스타카토의 방문 날짜가 같다면 생성 기준 최신순으로 조회하도록 구현 * refactor: 스타카토 수정 시 발생하는 조회에서 정렬 없이 조회하도록 수정 * fix: 추억 생성 및 수정 썸네일 사진 업로드 오류 수정 #535 (#542) * fix: 추억 생성 사진 업로드 버그 수정 - 사진 A를 업로드 중 사진 B로 변경하면 네트워크 연결 불안정 스낵바가 뜨는 오류 해결 * fix: 추억 수정 사진 업로드 버그 수정 - 사진 A를 업로드 중 사진 B로 변경하면 네트워크 연결 불안정 스낵바가 뜨는 오류 * refactor: ThumbnailUiModel 구현 및 적용 * refactor: 썸네일 사진용 BindingAdapters 수정 * refactor: 추억 생성 사진 업로드 로직 변경 * refactor: 추억 수정 사진 업로드 로직 변경 * style: MemoryUpdateViewModel 메서드 순서 변경 * refactor: fetchThumbnail의 thumbnailUri 매개변수 이름 변경 - 이전: thumbnailUri - 이후: uri * refactor: 사용하지 않는 ThumbnailUiModel 갱신 메서드 제거 * refactor: 추억 썸네일 uri를 칭하는 typealias 이름 변경 * refactor: thumbnailUrl 설정 메서드의 매개변수 타입 변경 - 이전: ImageResponse? - 이후: ImageResponse * refactor: 추억 썸네일 uri 수정 메서드 이름 변경 - 이전: createThumbnail - 이후: setThumbnailUri * refactor: 새로운 uri인지 확인하는 로직을 메서드로 분리 * refactor: ThumbnailUiModel 초기화 메서드 이름 변경 - 이전: delete - 이후: clear * refactor: Thumbnail 삭제 메서드 이름 변경 - 이전: deleteThumbnail - 이후: clearThumbnail * refactor: uri 설정 메서드의 url 매개변수 제거 * refactor: 추억 썸네일 사진 업로드 후 job을 반환하는 메서드명 변경 - 이전: fetchThumbnail - 이후: createFetchingThumbnailJob * refactor: 사진 업로드 작업 취소 시 isActive 상태 확인 * chore: 개발 서버 이전 #551 (#557) * chore: dev cd workflow 수정 * chore: log 파일 저장 경로 오류 수정 Co-authored-by: YoonJuHo , BurningFalls * refactor: 서버 이전에 따른 S3 설정 변경 Co-authored-by: BurningFalls , YoonJuHo * refactor: 서버 이전에 따른 S3 폴더 경로 수정 Co-authored-by: BurningFalls , YoonJuHo * chore: gradle 캐싱 적용 Co-authored-by: BurningFalls , YoonJuHo * chore: gradle 캐싱 적용 Co-authored-by: YoonJuHo , BurningFalls * chore: 도커 이미지 제거 명령어 추가 Co-authored-by: YoonJuHo , BurningFalls --------- Co-authored-by: YoonJuHo , BurningFalls Co-authored-by: BurningFalls , YoonJuHo * refactor: comment API의 URI 수정 #560 (#561) * refactor: comment API의 URI 수정 URI 상수 이름 변경 - COMMENTS_PATH -> COMMENTS_URI Path Variable 상수화 - momentId 상수화 : MOMENT_ID - commentId 상수화 : COMMENT_ID 댓글 수정, 삭제 API의 URI 수정 - Query String에서 Path Variable로 변경 - Path Variable로 commentId가 담긴 URI 상수 생성 : COMMENTS_URI_WITH_COMMENT_ID - URI의 v2는 추후 제거 예정 * refactor: CommentApiService 내 moment를 staccato로 변경 누락된 도메인명 수정 사항 반영 - MOMENT_ID -> STACCATO_ID - momentId -> staccatoId - 서버 측은 도메인명이 수정되지 않았으므로, 실제 URI 값은 변경하지 않음 * refactor: CommentRequest 내 moment를 staccato로 변경 누락된 도메인명 수정 사항 반영 - momentId -> staccatoId - 서버 측은 도메인명이 수정되지 않았으므로, SerialName 값은 변경하지 않음 * deploy: v.1.2.1 배포 준비 #539 (#541) * ui: 마이페이지의 앱 버전 업데이트 - 1.2.0 -> 1.2.1 로 업데이트 * build: versionCode 와 versionName 업데이트 - versionCode: 6 -> 7 - versionName: 1.2.0 -> 1.2.1 * docs: 출시 노트 수정 - 1.2.1 버전: 버그 수정 내용 추가 * docs: 출시 노트의 업데이트 날짜 수정 - 10.31 -> 11.27 * chore: 운영환경 마이그레이션 #551 (#563) * chore: 운영환경 CD 적용 인스턴스 변경 * refactor: DataSource Config 비활성화 * chore: application-prod.yml datasource 수정 Co-authored-by: YoonJuHo Co-authored-by: BurningFalls --------- Co-authored-by: linirini <2001yerin@naver.com> Co-authored-by: BurningFalls * refactor: 카테고리, 일시 선택 순서 변경 및 리팩터링 (스타카토 생성/수정) #564 (#567) * build: 테스트를 위한 mockK 의존성 추가 * build: InstantTaskExecutorRule 설정을 위한 androidx.arch.core 의존성 추가 * refactor: MemoryCandidate 파일 분리 및 isDateWithinPeriod 추가 * build: 테스트 파라미터를 위한 junitparams 의존성 추가 * test: MemoryCandidateTest 테스트 추가 * test: MemoryCandidatesTest 테스트 추가 * feat: MemoryCandidate에 getClosestDateTime 구현 * test: MemoryCandidate의 getClosestDateTime 테스트 추가 * feat: MemoryCandidates에 getValidMemoryCandidate 메서드 오버로딩 * test: MemoryCandidates의 getValidMemoryCandidate 메서드 테스트 추가 * ui: 스타카토 수정/생성 화면의 일시 선택과 추억 선택 순서 변경 * refactor: getValidMemoryCandidate 메서드 명 filterCandidatesBy로 수정 * refactor: MemoryCandidate의 getClosestDateTime 로직 수정 및 테스트 가독성 개선 * refactor: VisitedAtSelectionFragment 변수명 변경 및 public 함수 리팩터링 * refactor: 스타카토 생성 화면에서 일시, 추억 선택 순서 변경 - initMemoryAndVisitedAt() : memoryId에 따라 일시, 추억을 초기화 - setMemoryCandidateByVisitedAt() : 일시에 따라 추억을 설정 * test: StaccatoCreationViewModel 테스트 추가 * refactor: 스타카토 수정 화면에서 일시, 추억 선택 순서 변경 - initMemoryAndVisitedAt() : 스타카토에 따라 일시, 추억을 초기화 - setMemoryCandidateByVisitedAt() : 일시에 따라 추억을 설정 * test: StaccatoUpdateViewModel 테스트 추가 * ui: 선택할 수 있는 추억이 없는 경우, 추억 선택 뷰 클릭 비활성화 * fix: setMemoryCandidateByVisitedAt 메서드 emptyList 예외로 인한 버그 * test: MainDispatcherRule 클래스 추가 및 적용 * ui: 불필요한 TextView, 바인딩 어댑터, stringRes 제거 * style: updateMemoryCandidateAndVisitedAt 메서드 파라미터 명 수정 * test: StaccatoCreationViewModelTest에 runTest와 advanceUntilIdle 적용 * test: StaccatoUpdateViewModelTest에 runTest와 advanceUntilIdle 적용 * style: ktLintFormat * refactor: 스타카토 생성/수정 activity의 observe 메서드 그룹화 * refactor: Staccato 조회 화면에서 staccatoId를 불러올 수 없을 때 예외 반환 * refactor: 카테고리가 특정되지 않음을 의미하는 0L값 상수화 * refactor: toLocalDate 메서드 중복 호출 개선 * refactor: changeTimeToNoon 메서드 분리 * refactor: setSelectedMemory 메서드 if문 -> when문으로 변경 * refactor: 스타카토 생성/수정 ViewModel 메서드명 단순화 (매개변수 정보 제거) * refactor: MemoryCandidateTest에서 assertTrue, assertFalse 활용 * refactor: MemoryCandidateTest 메서드명 개선 및 Parameters 추가 * refactor: 테스트 코드 개선 - 불필요한 Assert 제거 - 공통 로직 함수 분리 - ExperimentalCoroutinesApi 어노테이션 이동 * fix: DEFAULT_STACCATO_ID 다시 추가 * refactor: id가 파라미터인 findCandidatesBy의 반환값 변경 * style: 불필요한 it 제거 및 메서드 순서 변경 * refactor: LocalDate 관련 테스트 픽스처 네이밍 변경 * refactor: 테스트 코드 변수명, 함수 순서 변경 * refactor: 스타카토 생성, 수정 뷰모델 공통 로직 MemoryCandidates로 분리 * test: MemoryCandidates - findByIdOrFirst 테스트 구현 * refactor: setMemoryCandidateBy -> updateMemorySelectionBy 메서드명 변경 * feat: 일시 선택을 위한 Calendar 도메인 모델과 팩토리 메서드 추가 * feat: DateCalendar 클래스 public 함수 및 유효성 검사 추가 * test: DateCalendar 테스트 구현 * fix: DateCalendar 날짜 유효성 버그 수정 * feat: MonthCalendar 클래스 public 함수 및 유효성 검사 추가 * test: MonthCalendar 테스트 구현 * feat: YearCalendar 클래스 public 함수 및 유효성 검사 추가 * test: YearCalendar 테스트 구현 * feat: YearCalendar 날짜 선택을 위한 프로퍼티와 메서드 추가 * feat: VisitedAtSelectionFragment에 YearCalendar 적용 * feat: visitedAt을 기준으로 YearCalendar를 생성하는 팩토리 메서드 추가 * refactor: visitedAt을 기준으로 YearCalendar를 생성하는 팩토리 메서드 적용 * refactor: MemoryCandidate 불필요한 동반객체 제거 * feat: YearCalendar 날짜 선택 범위 10년에서 100년으로 수정 * fix: 사진 첨부를 길게 터치할 시 액티비티가 종료되는 버그 (스타카토 생성/수정 화면) #588 (#589) * fix: 사진 첨부 버튼 길게 클릭 시 IDLE 플래그 반환 * fix: AttachedPhotoItemTouchHelperCallback 타입 캐스팅 제거 * refactor: ItemDragListener 불필요한 메서드 제거 및 SAM interface 적용 * refactor: onSelectedChanged super 메서드 위치 변경 * refactor: Callback 클래스 불필요한 override 메서드 제거 * refactor: Comment API의 버저닝(v2) 제거 #584 (#592) - API URI의 "v2"를 제거 * chore: 다중 운영환경 CD 테스트 (#568) * ui: 도메인명 변경에 따라 추억을 카테고리로 수정 #578 (#579) * ui: 도메인명 변경에 따라 추억을 카테고리로 수정 * ui: '나의 카테고리들' -> '나의 추억들'로 수정 * feat: 스타카토 웹 메인 페이지 생성 #576 (#577) * build: thymeleaf 의존성 추가 * feat: index 페이지 생성 * refactor: GetMapping 경로에서 index 삭제 * refactor: 마지막 사진 홍보용 사진으로 변경 * refactor: 첫번째 사진 삭제 * refactor: 이미지 정리 * refactor: 사진 S3로 이동 * refactor: 사진 간격 수정 * refactor: 화면에 반응형 디자인 적용 #597 (#598) * refactor: 반응형 디자인 적용 * refactor: 주석 삭제 * refactor: 트리거를 pr에서 push로 변경 (#600) * feat: 추억 목록 정렬, 필터링 API 구현 #546 (#583) * refactor: Moment 단위 테스트 픽스처 리팩터링 * refactor: 메서드 순서 조정 * refactor: 메서드명 변경 * refactor: 컨텍스트 재사용 구조로 controller 단위 테스트 리팩터링 * refactor: 픽스처 메서드명 변경 * refactor: 정렬 책임 분리 * feat: 스타카토 CUD 시 추억 수정일시 갱신되도록 구현 * refactor: 서비스 테스트에서 하위 계층 테스트에서 이미 검증했던 부분에 대한 검증 제거 * refactor: MomentRequest 픽스처 분리 * refactor: flush 전에 updatedAt 갱신하도록 listener 변경 * test: test 오류 수정 * feat: 최근 수정 순으로 추억 정렬 * feat: 최신순/오래된순으로 추억 정렬 * feat: 기간이 있는 추억만 필터링하여 조회 * feat: 추억 목록 조회 시 필터링 정렬 조건 받도록 컨트롤러 구현 * feat: 기본 필터링/정렬 조건 세팅 * refactor: 필터링 Enum 분리 * refactor: 정렬 Enum 분리 * refactor: 정렬과 필터링 관심사 분리 * fix: 유효하지 않은 필터링 값은 무시하도록 구현 * docs: API 명세서 작성 * fix: 테스트 인자 타입 오류 수정 * test: 유효하지 않은 필터링 조건은 무시하는 컨트롤러 테스트 추가 * docs: 명세서 예시 수정 * docs: 사용하지 않는 query string은 명세서에 뜨지 않도록 수정 * docs: 정렬/필터링 값 설명 보충 * refactor: 중복 메서드 제거 * refactor: RepositoryTest 추상 클래스 분리 및 JpaAuditing 설정 활성화를 위한 RepositoryTestConfig 분리 * refactor: 리스너 콜백을 콜백 메서드로 리팩터링 * refactor: MemoryMembers -> Memories * refactor: 메서드 분리 * refactor: updatedAt에 대한 setter 메서드만 작성 * refactor: 클래스 참조 제거 * refactor: ?filters={필터 타입, 필터 타입} 방식으로 구현 변경 * test: 테스트 설명 오류 수정 * refactor: 인스턴스 메서드로 리팩터링 * refactor: Memories 클래스 제거 * fix: 필터링 API 파싱 오류 수정 #604 (#605) * feat: 중복 없이 MemoryFilter 가져오도록 수정 * test: 대소문자 검증 테스트케이스 추가 * fix: 요청 쿼리 스트링 파싱 사 NPE 문제 해결 * chore: dev 서버 중복 워크 플로우 비활성화 * refactor: ! 연산 제거 * refactor: 조건문 변경 * test: displayName 변경 * test: displayName 변경 * refactor: comment API 버저닝 제거 #584 (#585) * refactor: 도메인명 변경 (memory -> category, moment -> staccato) #594 (#596) * refactor: memory -> category 변경 * refactor: memory -> category 변경 * test: CategoryController 테스트 작성 * refactor: v2를 RequestMapping에서 한번에 처리 * refactor: moment -> staccato 변경 * test: StaccatoController 테스트 작성 * refactor: 주석 삭제 * refactor: 코드 축약 * refactor: v2 삭제 * refactor: 접근제어자 private으로 변경 * refactor: swagger 설명의 추억 -> 스타카토 추가 변경 * refactor: swagger 설명의 추억 -> 스타카토 추가 변경 * fix: 이전 PR 수정사항 반영 * refactor: ControllerTest extend 적용 * refactor: MemoryReadRequest -> CategoryReadRequest 변경 및 적용 * refactor: CallAdapter 적용 및 검증 테스트 작성 #558 (#574) * refactor: ResponseResult interface와 응답 class 분리 * refactor: Exception message 기본 인자 설정 - ResponseResult Exception의 message 파라미터에 기본 인자 설정 * refactor: 204 응답 처리 로직 제거 * feat: NetworkResultCall 구현 * refactor: status code, exception 메시지 상수화 * feat: NetworkResultCallAdapter 구현 * feat: CallAdapterFactory 구현 * feat: Retrofit 초기화 시 CallAdapterFactory 추가 * refactor: 타임라인 기능 CallAdapter 적용 * refactor: 카테고리(전 추억) 기능 CallAdapter 적용 * refactor: 스타카토 기능 CallAdapter 적용 * refactor: 댓글 기능 CallAdapter 적용 * refactor: 이미지 업로드 기능 CallAdapter 적용 * refactor: 마이페이지 기능 CallAdapter 적용 * refactor: 로그인 기능 CallAdapter 적용 * refactor: 멤버 기능 CallAdapter 적용 * refactor: 이전 handleApiResponse 제거 * refactor: handleApiResponse2 이름 변경 - 이전: handleApiResponse2 - 이후: handleApiResponse * refactor: ResponseResult -> ApiResult로 이름 변경 * refactor: ApiResponseHandler 이름 변경 - 이전: ApiResponseHandler - 이후: ApiResultHandler * refactor: NetworkResultCall 이름 변경 - 이전: NetworkResultCall - 이후: ApiResultCall * refactor: NetworkResultCallAdapter 이름 변경 - 이전: NetworkResultCallAdapter - 이후: ApiResultCallAdapter * refactor: NetworkResultCallAdapterFactory 이름 변경 - 이전: NetworkResultCallAdapterFactory - 이후: ApiResultCallAdapterFactory * refactor: ApiResult 처리 로직 추가 * refactor: 카테고리 리포지터리 ApiResult 처리 확장 함수 적용 * refactor: 스타카토 리포지터리 ApiResult 처리 확장 함수 적용 * refactor: 타임라인 리포지터리 ApiResult 처리 확장 함수 적용 * refactor: 마이페이지 리포지터리 ApiResult 처리 확장 함수 적용 * refactor: 댓글 리포지터리 ApiResult 처리 확장 함수 적용 * refactor: 멤버 리포지터리 ApiResult 처리 확장 함수 적용 * refactor: 로그인 리포지터리 ApiResult 처리 확장 함수 적용 * refactor: 이미지 리포지터리 ApiResult 처리 확장 함수 적용 * build: coroutines test 의존성 추가 * build: mockwebserver 의존성 추가 * build: JUnit5 의존성 추가 * feat: CoroutinesTestExtension 추가 * test: api 요청 성공(200) 시 CallAdapter 동작 테스트 추가 - 테스트 시나리오: 유효한 형식의 카테고리로 생성을 요청 * test: api 요청 실패(400) 시 CallAdapter 동작 테스트 추가 - 테스트 시나리오: 유효하지 않은 형식의 카테고리로 생성을 요청 * test: MockResponse 생성 로직 함수로 분리 * test: api 요청 실패(413) 시 CallAdapter 동작 테스트 추가 - 테스트 시나리오: 20MB를 초과하는 사진을 업로드 요청 * test: api 요청 실패(예외 발생) 시 CallAdapter 동작 테스트 추가 - 테스트 시나리오: 서버의 응답이 없는 경우 * test: api 요청 실패(500) 시 CallAdapter 동작 테스트 추가 - 테스트 시나리오: 서버 장애 발생 * test: api 요청 실패(403) 시 CallAdapter 동작 테스트 추가 - 테스트 시나리오: 댓글 삭제를 요청한 사용자와 댓글 작성자의 인증 정보 불일치 * test: api 요청 실패(401) 시 CallAdapter 동작 테스트 추가 - 테스트 시나리오: 인증되지 않은 사용자가 카테고리 생성을 요청 * test: api 요청 성공(200) CallAdapter 테스트 상태 코드 201로 수정 - api 요청 성공(200) 코드 작성 시 201을 200으로 잘못 작성함 - 따라서 200을 201로 수정함 * test: api 요청 성공(200) 시 CallAdapter 테스트 추가 - 테스트 시나리오: 존재하는 카테고리를 조회 * test: api 응답 TestFixture 추가 * refactor: CallAdapterTest 이름 변경 - 이전: CallAdapterTest - 이후: ApiResultCallAdapterTest * refactor: request test fixture 변수를 함수로 변경 - Fixture를 함수로 분리하면 테스트 독립성을 더욱 보장할 수 있음 * refactor: makeFakeImageFile() 함수 이름 변경 - 이전: makeFakeImageFile() - 이후: createFakeImageFile() * refactor: MockWebServerFixture 이름 변경 - 이전: MockWebServerFixture - 이후: MockWebServerProvider * refactor: makeMockResponse() 함수 이름 변경 - 이전: makeMockResponse() - 이후: createMockResponse() * style: ktlintformat * refactor: 변수 타입 명시 * build: testLogging 추가 * build: testLogging event 추가 - standardError, standardOut 테스트 로그 이벤트 추가 * build: testLogging exceptionFormat 설정 * test: setUp()에서 MockWebServer 초기화 * test: assertTrue -> assertInstanceOf로 변경 * fix: ci 수정을 위한 response 출력문 추가 * fix: ci 오류 해결을 위한 errorBody 출력문 추가 * test: StaccatoClient 초기화 * refactor: retrofit 초기화 방식 변경 - 이전: StaccatoClient에서 초기화 - 이후: StaccatoApplication의 동반 객체에서 retrofit 지연 초기화 * refactor: CI 오류 해결을 위한 print문 제거 * build: AssertJ 의존성 추가 * test: AssertJ를 활용하여 검증 코드 수정 * build: junit vintage engine 의존성 추가 - JUnit4에서 작성된 테스트를 실행시키기 위해 junit vintage engine 의존성 추가 * refactor: FakeFileProvider, ApiDataFixture 폴더 이동 * style: 불필요한 import 제거 * style: trailing comma 제거 * test: api 요청 실패(413) 시 CallAdapter 동작 테스트 명 변경 - 서버의 이미지 제한 용량 변경과 관계 없도록 수정 * refactor: callType 변수를 responseType 으로 이름 변경 - Call의 파라미터 클래스 T의 타입을 획득하여 저장하는 변수라는 것을 명시적으로 나타내기 위해 변수명 변경 * refactor: proxy 변수를 delegate 로 이름 변경 - delegate 패턴을 사용하고 있다는 것을 좀 더 명시적으로 나타내도록 변수명 수정 * refactor: ApiResult 처리 함수 표현식으로 변경 * test: 조회 성공(200) 테스트 FakeApiService 적용 - 네트워크 중심으로 테스트가 이루어지도록 FakeApiService를 활용해 CallAdapter 동작 테스트 수정 * test: 생성 성공/실패/예외 테스트 FakeApiService 적용 - 생성 성공(201), 실패(400, 401, 500), 예외 - 네트워크 중심으로 테스트가 이루어지도록 FakeApiService를 활용해 CallAdapter 동작 테스트 수정 * test: 인증 정보 불일치(403) 테스트 FakeApiService 적용 - 네트워크 중심으로 테스트가 이루어지도록 FakeApiService를 활용해 CallAdapter 동작 테스트 수정 * test: CallAdapterTest 내 사용하지 않는 ApiService 제거 * test: 테스트명 오타 수정 * test: dto 패키지 추가 * test: Inline 학습 테스트 추가 * style: 코드 formatting * test: Inline 학습 테스트 assertAll 주석 처리 * refactor: 예외 세분화 및 ApiResult.onException이 예외 상태를 포획 하도록 수정 * refactor: LoginRepository에서 사용자 토큰을 저장하도록 변경 - 이전: LoginViewModel에서 SharedPreferences에 사용자 토큰 저장 - 이후: LoginRepository에서 SharedPreferences에 사용자 토큰 저장 * refactor: ApiResult 확장함수 inline 키워드 추가 * refactor: ApiResult 성공, 서버에러, 예외 별 처리 확장함수 파라미터명 변경 - 이전: executable - 이후: action * refactor: MemberRepository에서 사용자 토큰을 저장하도록 변경 - 이전: RecoveryViewModel에서 SharedPreferences에 사용자 토큰 저장 - 이후: RecoveryRepository에서 SharedPreferences에 사용자 토큰 저장 * refactor: ApiResult 함수 추가 및 적용 * refactor: ApiResult.onServerError 확장함수 status 파라미터 제거 * fix: StaccatoDetailResponse 응답값 매핑 오류 수정 #606 (#607) * fix: Comment API에서 도메인명 안바뀐 부분 수정 #609 (#610) * fix: momentId 대신 staccatoId를 사용하는 api 생성 * refactor: 이름 수정 (commentCreateRequest -> commentRequest) * refactor: 대소문자 오타 수정 * refactor: 변경되지 않은 테스트도 새로운 파일에 내용 추가 * refactor: MomentImage update 시 수동 삭제 적용 #591 (#593) * refactor: CascadeType 변경으로 이미지 수정 로직 수정 * refactor: 이미지 수동 삭제 로직 구현 * refactor: Batch 네이밍 Bulk로 변경 * refactor: URL 동등성 비교 메서드 추출 * refactor: 변수 오타 수정 * refactor: 메서드 재사용 * fix: test import 수정 * feat: 프로필 이미지 변경 및 타임라인 닉네임 표시 #538 (#603) * chore: 사용되지 않는 interface 파일 삭제 * refactor: PhotoAttachFragment의 uriSelectedListener가 초기화 되지 않았을 때 예외 구체화 * refactor: formDataName 정의를 위한 String 상수를 FileUtils.kt로 이동 * feat: 마이 페이지에서 프로필 이미지 변경 기능 구현 * refactor: MyPageMenuHandler -> MyPageHandler로 이름 변경 * feat: 프로필 이미지 변경 실패 메시지 추가 및 예외 처리 * ui: 메인 화면 프로필 사진 테두리 디자인 수정 * refactor: 마이페이지에서 네트워크 요청 대신 캐시 메모리로 멤버 프로필 로드 * feat: SharedViewModel에 Hilt 적용 및 멤버 프로필 로직 추가 * feat: UserInfoPreferencesManager에 프로필 사진, 닉네임, 복구 코드 관련 로직 추가 * feat: 메인 화면 진입 시 멤버 프로필 불러오는 로직 추가 * feat: 메인에서 마이페이지 이동 시 ActivityResultLauncher 적용 * ui: 타임라인 타이틀 사용자 닉네임 표시 * refactor: 불필요한 데이터 바인딩 변수 제거 * refactor: ApiResult의 제네릭 타입 제약 제거 * refactor: MyPageRemoteDataSource 추상화 추가 * refactor: MyPageRemoteDataSource 추상화 적용 * refactor: MyPageLocalDataSource 추상화 추가 * refactor: UserInfoPreferencesManager가 MyPageLocalDataSource를 구현하도록 수정 * refactor: MyPageLocalDataSource 추상화 적용 * refactor: SharedPreferencesModule 추가 * refactor: MyPageDefaultRepository에 MyPageLocalDataSource 추가 * refactor: 메인 화면, 마이페이지 화면에 MyPageDefaultRepository 적용 * refactor: 프로퍼티 이름에서 멤버 변수를 뜻하는 m 키워드 제거 * refactor: 닉네임, 복구코드 관련 메서드 반환 타입 non-nullable로 수정 * refactor: 바인딩 어댑터 formatNickname 가독성 개선 * style: 컨벤션에 맞게 메서드 순서 변경 * delete: 불필요한 drawableRes 파일 삭제 * ui: 프로필 사진 수정 버튼 터치 영역 확대 * refactor: MyPageActivity 메서드 순서 변경 * fix: StaccatoDetailResponse 응답값 매핑 오류 수정 #606 (#607) * fix: 오타 수정 * refactor: 바인딩 변수 네이밍 변경 menuHandler -> myPageHandler * refactor: EMPTY_STRING를 MemberProfile 내부로 이동 --------- Co-authored-by: linirini <101927543+linirini@users.noreply.github.com> * refactor: Memory -> Category 도메인명 변경 및 API URI 변경 #595 (#608) * refactor: MemoryDataSource의 메서드 파라미터명 변경 메서드의 파라미터명 변경 - memoryId -> categoryId - newMemory -> newCategory * refactor: MemoryDataSource의 메서드명 변경 메서드명 변경 - ...Memory -> ...Category - getMemories -> getCategories * refactor: MemoryDataSource를 CategoryDataSource로 변경 * refactor: MemoryRemoteDataSource의 프로퍼티명 변경 - memoryApiService -> categoryApiService * refactor: MemoryRemoteDataSource 클래스명 변경 - MemoryRemoteDataSource -> CategoryRemoteDataSource * refactor: MemoryDefaultRepository의 프로퍼티명 변경 - memoryDataSource -> categoryDataSource * refactor: MemoryDefaultRepository의 메서드 파라미터명 변경 - memoryId -> categoryId - newMemory -> newCategory * refactor: MemoryDefaultRepository의 클래스명 변경 - MemoryDefaultRepository -> CategoryDefaultRepository * refactor: data 패키지의 memory 디렉터리명을 category 로 변경 * refactor: MemoriesResponse의 SerialName 값 변경 - memories -> categories * refactor: MemoryCandidateResponse의 SerialName 값 변경 - memoryId -> categoryId - memoryTitle -> categoryTitle * refactor: MemoriesResponse의 프로퍼티명 변경 - memories -> categories * refactor: MemoryCandidateResponse의 프로퍼티명 변경 - memoryId -> categoryId - memoryTitle -> categoryTitle * refactor: MemoriesResponse 클래스명 변경 - MemoriesResponse -> CategoriesResponse * refactor: MemoryCandidateResponse 클래스명 변경 - MemoryCandidateResponse -> CategoryCandidateResponse * refactor: MemoryCreationResponse의 SerialName 값 변경 - memoryId -> categoryId * refactor: MemoryCreationResponse의 프로퍼티명 변경 - memoryId -> categoryId * refactor: MemoryCreationResponse 클래스명 변경 - MemoryCreationResponse -> CategoryCreationResponse * refactor: MemoryRequest의 SerialName 값 변경 - memoryThumbnailUrl -> categoryThumbnailUrl - memoryTitle -> categoryTitle * refactor: MemoryRequest의 프로퍼티명 변경 - memoryThumbnailUrl -> categoryThumbnailUrl - memoryTitle -> categoryTitle * refactor: MemoryRequest 클래스명 변경 - MemoryRequest -> CategoryRequest * refactor: MemoryResponse의 SerialName 값 변경 - memoryId -> categoryId - memoryThumbnailUrl -> categoryThumbnailUrl - memoryTitle -> categoryTitle * refactor: MemoryResponse의 프로퍼티명 변경 - memoryId -> categoryId - memoryThumbnailUrl -> categoryThumbnailUrl - memoryTitle -> categoryTitle * refactor: MemoryResponse 클래스명 변경 - MemoryResponse -> CategoryResponse * refactor: MemoryStaccatoDto 클래스명 변경 - MemoryStaccatoDto -> CategoryStaccatoDto * refactor: data.dto의 memory 디렉터리명을 category로 변경 * refactor: StaccatoCreationRequest의 SerialName 변경 - memoryId -> categoryId * refactor: StaccatoCreationRequest의 프로퍼티명 변경 - memoryId -> categoryId * refactor: StaccatoCreationRequest의 SerialName 값 변경 - memoryId -> categoryId - memoryTitle -> categoryTitle * refactor: StaccatoResponse의 SerialName 값 변경 - memoryId -> categoryId - memoryTitle -> categoryTitle * refactor: StaccatoResponse의 프로퍼티명 변경 - memoryId -> categoryId - memoryTitle -> categoryTitle * refactor: StaccatoUpdateRequest의 SerialName 값 변경 - memoryId -> categoryId * refactor: StaccatoUpdateRequest의 프로퍼티명 변경 - memoryId -> categoryId * refactor: Memory의 프로퍼티명 변경 - memoryId -> categoryId - memoryThumbnailUrl -> categoryThumbnailUrl - memoryTitle -> categoryTitle * refactor: Memory의 클래스명을 Category로 변경 * refactor: MemoryCandidate의 프로퍼티명 변경 - memoryId -> categoryId - memoryTitle -> categoryTitle * refactor: MemoryCandidate의 클래스명 변경 - MemoryCandidate -> CategoryCandidate * refactor: MemoryCandidates의 프로퍼티명 변경 - memoryCandidate -> categoryCandidates * refactor: MemoryCandidates findBy 메서드의 파라미터명 변경 - memoryId -> categoryId * refactor: MemoryCandidates from 메서드의 파라미터명 변경 - memoryCandidate -> categoryCandidate * refactor: MemoryCandidates의 동반객체 프로퍼티명 변경 - emptyMemoryCandidates -> emptyCategoryCandidates * refactor: MemoryCandidates 클래스명 변경 - MemoryCandidates -> CategoryCandidates * refactor: MemoryStaccato 클래스명 변경 - MemoryStaccato -> CategoryStaccato * refactor: NewMemory의 프로퍼티명 변경 - memoryThumbnailUrl -> categoryThumbnailUrl - memoryTitle -> categoryTitle * refactor: NewMemory 클래스명을 NewCategory로 변경 * refactor: Staccato의 프로퍼티명 변경 - memoryId -> categoryId - memoryTitle -> categoryTitle * refactor: Timeline의 프로퍼티명 변경 - memories -> categories * refactor: MemoryMapper 파일명을 CategoryMapper로 변경 * refactor: TimelineMemoryDto의 SerialName 값 변경 - memoryId -> categoryId - memoryTitle -> categoryTitle - memoryThumbnailUrl -> categoryThumbnailUrl * refactor: TimelineMemoryDto의 프로퍼티명 변경 - memoryId -> categoryId - memoryTitle -> categoryTitle - memoryThumbnailUrl -> categoryThumbnailUrl * refactor: TimelineMemoryDto 클래스명 변경 - TimelineMemoryDto -> TimelineCategoryDto * refactor: TimelineResponse의 SerialName 값 변경 - memories -> categories * refactor: TimelineResponse의 프로퍼티명 변경 - memories -> categories * refactor: TimelineResponse toDomain 확장함수의 변수명 수정 - timelineMemoryDto -> timelineCategoryDto - memories -> categories * refactor: TimelineCategoryDto의 확장함수명 변경 CategoryCandidate로 변경하는 확장함수 이름 변경 - toMemoryCandidate -> toCategoryCandidate * refactor: TimelineResponse의 확장함수 수정 CategoryCandidates로 변경하는 확장함수 이름 변경 - toMemoryCandidates -> toCategoryCandidates map 람다함수 내 변수명 수정 - timelineMemoryDto -> timelineCategoryDto * refactor: CategoryDataSource 바인딩 메서드 수정 메서드명 수정 - bindMemoryDataSource -> bindCategoryDataSource 메서드 파라미터명 수정 - memoryRemoteDataSource -> categoryRemoteDataSource * refactor: CategoryRepository 바인딩 메서드 수정 메서드명 수정 - bindMemoryRepository -> bindCategoryRepository 메서드 파라미터명 수정 - memoryDefaultRepository -> categoryDefaultRepository * refactor: CategoryApiService provide 메서드 수정 메서드명 수정 - provideMemoryApiService -> provideCategoryApiService * refactor: MemoryRepository의 메서드 파라미터명 변경 - memoryId -> categoryId - newMemory -> newCategory * refactor: MemoryRepository의 메서드명 변경 - ...Memory -> ...Category - getMemories -> getCategories * refactor: MemoryRepository 클래스명 변경 - MemoryRepository -> CategoryRepository * refactor: StaccatoRepository의 메서드 파라미터명 변경 - memoryId -> categoryId * refactor: TimelineRepository의 메서드명 변경 - getMemoryCandidates -> getCategoryCandidates * refactor: memory 패키지명을 category로 수정 * refactor: StaccatoViewHolder의 bind 메서드 파라미터명 수정 - memoryStaccato -> categoryStaccato * refactor: MemoryStaccatoUiModel 클래스명 수정 - MemoryStaccatoUiModel -> CategoryStaccatoUiModel * refactor: MemoryUiModel의 프로퍼티명 수정 - memoryThumbnailUrl -> categoryThumbnailUrl * refactor: MemoryUiModel의 클래스명 수정 - MemoryUiModel -> CategoryUiModel * refactor: MemoryViewModel의 프로퍼티명 수정 - memoryRepository -> categoryRepository - memory -> category * refactor: MemoryViewModel의 메서드 수정 메서드명 수정 - ...Memory -> ...Category 메서드 파라미터명 수정 - memoryId -> categoryId - memory -> category * refactor: MemoryViewModel의 클래스명 수정 - MemoryViewModel -> CategoryViewModel * refactor: MemoryHandler -> CategoryHandler로 변경 * refactor: Intent의 Extra key의 값 변경 - MEMORY_ID_KEY 값 = memoryId -> categoryId - MEMORY_TITLE_KEY값 = memoryTitle -> categoryTitle * refactor: memoryId 프로퍼티명을 categoryId 로 변경 * refactor: observeMemory 메서드 내부의 memory 제거 - memory -> category * refactor: observeMemory 메서드명 변경 - observeMemory -> observeCategory * refactor: onUpdateClicked 메서드 내부 memory 제거 - memoryUpdateLauncher -> categoryUpdateLauncher * refactor: MEMORY_ID_KEY 동반객체명 변경 - MEMORY_ID_KEY -> CATEGORY_ID_KEY * refactor: MEMORY_TITLE_KEY 동반객체명 변경 - MEMORY_TITLE_KEY -> CATEGORY_TITLE_KEY * refactor: MemoryFragment -> CategoryFragment 로 변경 * refactor: memoryHandler -> categoryHandler 로 변경 * refactor: View ID의 memory를 변경 - memory -> category - CategoryFragment의 바인딩 변수명 수정 * refactor: fragment_category 로 파일명 변경 - Binding 클래스명 변경 * refactor: memoryCreationLauncher 변수명 변경 - memoryCreationLauncher -> categoryCreationLauncher * refactor: memoryUpdateLauncher 변수명 변경 - memoryUpdateLauncher -> categoryUpdateLauncher * refactor: handleMemoryResult 메서드명 변경 - handleMemoryResult -> handleCategoryResult * refactor: memoryRepository 프로퍼티명 변경 - memoryRepository -> categoryRepository * refactor: _createdMemoryId 프로퍼티명 변경 - _createdMemoryId -> _createdCategoryId * refactor: createdMemoryId 프로퍼티명 변경 - createdMemoryId -> createdCategoryId * refactor: setMemoryPeriod 메서드명 변경 - setMemoryPeriod -> setCategoryPeriod * refactor: createMemory 메서드명 변경 - createMemory -> createCategory * refactor: createMemory 메서드의 memory 변수명 변경 - memory -> category * refactor: setCreatedMemoryId 메서드의 파라미터명 변경 - memoryCreationResponse -> categoryCreationResponse * refactor: setCreatedMemoryId 메서드명 변경 - setCreatedMemoryId -> setCreatedCategoryId * refactor: makeNewMemory 메서드명 변경 - makeNewMemory -> makeNewCategory * refactor: MEMORY_FILE_NAME 동반객체명 변경 - MEMORY_FILE_NAME -> CATEGORY_FILE_NAME * refactor: MemoryCreationViewModel 클래스명 변경 - MemoryCreationViewModel -> CategoryCreationViewModel * refactor: MemoryCreationError의 제네릭 클래스명 변경 - MemoryCreation -> CategoryCreation * refactor: MemoryCreationError 클래스명 변경 - MemoryCreationError -> CategoryCreationError * refactor: MemoryCreationHandler 인터페이스명 변경 - MemoryCreationHandler -> CategoryCreationHandler * refactor: reCreateMemory 메서드명 변경 - reCreateMemory -> recreateCategory * refactor: observeCreatedMemoryId 메서드의 람다 파라미터명 변경 - memoryId -> categoryId * refactor: observeCreatedMemoryId 메서드명 변경 - observeCreatedMemoryId -> observeCreatedCategoryId * refactor: updateMemoryPeriod 메서드명 변경 - updateMemoryPeriod -> updateCategoryPeriod * refactor: MemoryCreationActivity 클래스명 변경 - MemoryCreationActivity -> CategoryCreationActivity * refactor: activity_memory_creation의 View ID 변경 - ID의 memory를 category로 변경 - Activity의 ViewModel 바인딩 변수명 수정 * refactor: activity_memory_creation 파일명 변경 - activity_memory_creation -> activity_category_creation - 바인딩 클래스명 변경: ActivityCategoryCreationBinding * refactor: memorycreation 패키지명 변경 - memorycreation -> categorycreation * refactor: memoryRepository 프로퍼티명 변경 - memoryRepository -> categoryRepository * refactor: _memory 프로퍼티명 변경 - _memory -> _category * refactor: memory 프로퍼티명 변경 - memory -> category * refactor: memoryId 프로퍼티명 변경 - memoryId -> categoryId * refactor: MEMORY_FILE_NAME 동반객체명 변경 - MEMORY_FILE_NAME -> CATEGORY_FILE_NAME * refactor: handleInitializeMemoryException 메서드명 변경 - handleInitializeMemoryException -> handleInitializeCategoryException * refactor: handleInitializeMemoryError 메서드명 변경 - handleInitializeMemoryError -> handleInitializeCategoryError * refactor: makeNewMemory 메서드명 변경 - makeNewMemory -> makeNewCategory * refactor: checkMemoryHasPeriod 메서드의 파라미터명 변경 - memory -> category * refactor: checkMemoryHasPeriod 메서드명 변경 - checkMemoryHasPeriod -> checkCategoryHasPeriod * refactor: initializeMemory 메서드의 파라미터명 변경 - memory -> category * refactor: initializeMemory 메서드명 변경 - initializeMemory -> initializeCategory * refactor: setMemoryPeriod 메서드명 변경 - setMemoryPeriod -> setCategoryPeriod * refactor: updateMemory 메서드의 newMemory 변수명 변경 - newMemory -> newCategory * refactor: updateMemory 메서드명 변경 - updateMemory -> updateCategory * refactor: fetchMemory 메서드명 변경 - fetchMemory -> fetchCategory * refactor: MemoryUpdateViewModel 클래스명 변경 - MemoryUpdateViewModel -> CategoryUpdateViewModel * refactor: MemoryUpdateError 클래스명 변경 - MemoryUpdateError -> CategoryUpdateError 제네릭 클래스명 변경 - MemoryInitialization -> CategoryInitialization - MemoryUpdate -> CategoryUpdate * refactor: MemoryUpdateHandler 인터페이스명 변경 - MemoryUpdateHandler -> CategoryUpdateHandler * refactor: memoryId 프로퍼티명 변경 - memoryId -> categoryId * refactor: startWithResultLauncher 메서드의 파라미터명 변경 - memoryId -> categoryId * refactor: DEFAULT_MEMORY_ID 동반객체명 변경 - DEFAULT_MEMORY_ID -> DEFAULT_CATEGORY_ID * refactor: reUpdateMemory 메서드명 변경 - reUpdateMemory -> reupdateCategory * refactor: reCreateThumbnailUrl 메서드명 변경 - reCreateThumbnailUrl -> recreateThumbnailUrl * refactor: handleMemoryUpdateFail 메서드명 변경 - handleMemoryUpdateFail -> handleCategoryUpdateFail * refactor: navigateToMemory 메서드명 변경 - navigateToMemory -> navigateToCategory * refactor: updateMemoryPeriod 메서드명 변경 - updateMemoryPeriod -> updateCategoryPeriod * refactor: fetchMemory 메서드명 변경 - fetchMemory -> fetchCategory * refactor: MemoryUpdateActivity 클래스명 변경 - MemoryUpdateActivity -> CategoryUpdateActivity * refactor: activity_memory_update의 View ID 변경 - View의 ID에 memory 를 category로 변경 - CategoryUpdateActivity의 ViewModel 바인딩 객체명 변경 * refactor: activity_memory_update 파일명 변경 - activity_memory_update -> activity_category_update - 바인딩 클래스명 변경 * refactor: memoryupdate 패키지명 변경 - memoryupdate -> categoryupdate * refactor: StaccatoDetailUiModel의 프로퍼티명 변경 - memoryId -> categoryId - memoryTitle -> categoryTitle * refactor: onUpdateClicked 메서드의 파라미터명 변경 - memoryId -> categoryId - memoryTitle -> categoryTitle * refactor: onConfirmClicked 메서드의 파라미터명 변경 - memoryUiModel -> categoryUiModel * refactor: MemorySelectionHandler 클래스명 변경 - MemorySelectionHandler -> CategorySelectionHandler * refactor: MemorySelectionFragment의 TAG 값 변경 - MemorySelectionModalBottomSheet -> CategorySelectionModalBottomSheet * refactor: MemorySelectionFragment의 프로퍼티명 변경 - keyMemory -> keyCategory * refactor: updateKeyMemory 메서드의 파라미터명 변경 - selectedMemory -> selectedCategory * refactor: updateKeyMemory 메서드명 변경 - updateKeyMemory -> updateKeyCategory * refactor: setOnMemorySelected 메서드명 변경 - setOnMemorySelected -> setOnCategorySelected * refactor: MemorySelectionFragment 클래스명 변경 - MemorySelectionFragment -> CategorySelectionFragment * refactor: fragment_memory_selection의 View ID 변경 - memory를 category로 변경 - CategorySelectionFragment의 바인딩 객체명 수정 * refactor: fragment_memory_selection 파일명 변경 - fragment_memory_selection -> fragment_category_selection CategorySelectionFragment의 바인딩 클래스명 수정 - FragmentMemorySelectionBinding -> FragmentCategorySelectionBinding * refactor: VisitedAtSelectionFragment의 TAG 값 변경 - MemorySelectionModalBottomSheet -> VisitedAtSelectionModalBottomSheet * refactor: StaccatoCreationHandler 인터페이스의 메서드명 변경 - onMemorySelectionClicked -> onCategorySelectionClicked * refactor: StaccatoCreationError 제네릭 클래스명 변경 - MemoryCandidates -> CategoryCandidates * refactor: StaccatoCreationViewModel 프로퍼티명 변경 - _selectedMemory -> _selectedCategory - selectedMemory -> selectedCategory * refactor: StaccatoCreationViewModel 프로퍼티명 변경 - _selectableMemories -> _selectableCategories - selectableMemories -> selectableCategories * refactor: StaccatoCreationViewModel 프로퍼티명 변경 - _memoryCandidates -> _categoryCandidates - memoryCandidates -> categoryCandidates * refactor: handleMemoryCandidatesException 메서드명 변경 - handleMemoryCandidatesException -> handleCategoryCandidatesException * refactor: updateMemorySelectionBy 메서드의 변수명 변경 - selectedMemory -> selectedCategory * refactor: updateMemorySelectionBy 메서드의 파라미터명 변경 - memoryId -> categoryId * refactor: updateMemorySelectionBy 메서드명 변경 - updateMemorySelectionBy -> updateCategorySelectionBy * refactor: updateMemorySelectionBy 메서드의 변수명 변경 - filteredMemories -> filteredCategories * refactor: updateMemorySelectionBy public 메서드명 변경 - updateMemorySelectionBy -> updateCategorySelectionBy * refactor: initMemoryAndVisitedAt 메서드의 파라미터명 변경 - memoryId -> categoryId * refactor: initMemoryAndVisitedAt 메서드명 변경 - initMemoryAndVisitedAt -> initCategoryAndVisitedAt * refactor: fetchMemoryCandidates 메서드명 변경 - fetchMemoryCandidates -> fetchCategoryCandidates * refactor: selectMemory 메서드의 파라미터명 변경 - memory -> category * refactor: selectMemory 메서드명 변경 - selectMemory -> selectCategory * refactor: MEMORY_TITLE_KEY 값 변경 - memoryTitle -> categoryTitle * refactor: MEMORY_TITLE_KEY 동반객체명 변경 - MEMORY_TITLE_KEY -> CATEGORY_TITLE_KEY * refactor: startWithResultLauncher 메서드 파라미터명 변경 - memoryId -> categoryId - memoryTitle -> categoryTitle * refactor: reCreateStaccato 메서드명 변경 - reCreateStaccato -> recreateStaccato * refactor: handleMemoryCandidatesFail 메서드명 변경 - handleMemoryCandidatesFail -> handleCategoryCandidatesFail * refactor: observeMemoryData 메서드명 변경 - observeMemoryData -> observeCategoryData * refactor: initMemorySelectionFragment 메서드명 변경 - initMemorySelectionFragment -> initCategorySelectionFragment * refactor: StaccatoCreationActivity 프로퍼티명 변경 - memoryId -> categoryId - memoryTitle -> categoryTitle - memorySelectionFragment -> categorySelectionFragment * refactor: initCategorySelectionFragment 람다파라미터명 변경 - selectedMemory -> selectedCategory * refactor: StaccatoUpdateHandler 인터페이스의 메서드명 변경 - onMemorySelectionClicked -> onCategorySelectionClicked * refactor: StaccatoUpdateError 제네릭 클래스명 변경 - MemoryCandidates -> CategoryCandidates * refactor: StaccatoUpdateViewModel 프로퍼티명 변경 - _memoryCandidates -> _categoryCandidates - memoryCandidates -> categoryCandidates - _selectedMemory -> _selectedCategory - selectedMemory -> selectedCategory - _selectableMemories -> _selectableCategories - selectableMemories -> selectableCategories * refactor: handleMemoryCandidatesException 메서드명 변경 - handleMemoryCandidatesException -> handleCategoryCandidatesException * refactor: fetchMemoryCandidates 메서드명 변경 - fetchMemoryCandidates -> fetchCategoryCandidates * refactor: fetchMemoryCandidates 의 람다 파라미터명 변경 API 요청 성공한 경우의 람다 파라미터 변수명 변경 - memoryCandidates -> categoryCandidates * refactor: initMemory 메서드명 변경 - initMemory -> initCategory * refactor: updateStaccato 내부 변수명 변경 - memoryIdValue -> categoryIdValue * refactor: updateMemorySelectionBy 내부 변수명 변경 - filteredMemories -> filteredCategories * refactor: updateMemorySelectionBy 메서드명 변경 - updateMemorySelectionBy -> updateCategorySelectionBy * refactor: selectMemory 메서드 파라미터명 변경 - memory -> category * refactor: selectMemory 메서드명 변경 - selectMemory -> selectCategory * refactor: StaccatoUpdateActivity 프로퍼티명 변경 - memorySelectionFragment -> categorySelectionFragment - memoryId -> categoryId - memoryTitle -> categoryTitle * refactor: startWithResultLauncher의 파라미터명 변경 - memoryId -> categoryId - memoryTitle -> categoryTitle * refactor: handleMemoryCandidatesFail 메서드명 변경 - handleMemoryCandidatesFail -> handleCategoryCandidatesFail * refactor: observeMemoryData 메서드명 변경 - observeMemoryData -> observeCategoryData * refactor: initMemorySelectionFragment의 람다 파라미터명 변경 - selectedMemory -> selectedCategory * refactor: initMemorySelectionFragment 메서드명 변경 - initMemorySelectionFragment -> initCategorySelectionFragment * refactor: TimelineUiModel의 프로퍼티명 변경 - memoryId -> categoryId - memoryTitle -> categoryTitle - memoryThumbnailUrl -> categoryThumbnailUrl * refactor: TimelineHandler 인터페이스의 메서드명 변경 - onMemoryClicked -> onCategoryClicked - onMemoryCreationClicked -> onCategoryCreationClicked * refactor: onCategoryClicked 메서드의 파라미터명 변경 - memoryId -> categoryId * refactor: sortByOldest 메서드의 내부 변수명 변경 - memoriesSortedByOldest -> categoriesSortedByOldest * refactor: onCategoryCreationClicked 메서드의 내부 변수명 변경 - memoryCreationLauncher -> categoryCreationLauncher * refactor: navigateToMemory 메서드명 변경 - navigateToMemory -> navigateToCategory * refactor: MEMORY_FILE_CHILD_NAME 변수명 변경 - MEMORY_FILE_CHILD_NAME -> CATEGORY_FILE_CHILD_NAME * refactor: MEMORY_FILE_CHILD_NAME 변수 값 변경 - memory -> category * refactor: convertMemoryUriToFile 메서드명 변경 - convertMemoryUriToFile -> convertCategoryUriToFile * refactor: convertExcretaFile 메서드 수정 메서드명 변경 - convertExcretaFile -> convertStaccatoUriToFile 지역 변수 활용 - contentResolver: context.contentResolver * refactor: activity_staccato_creation View ID 수정 memory 제거 - memory -> category * refactor: activity_staccato_update View ID 수정 memory 제거 - memory -> category * refactor: fragment_timeline.xml의 View ID 수정 memory 제거 - memory -> category - memories -> categories * refactor: fragment_memory_visited_at_selection 수정 memory 제거 - memory -> category * refactor: fragment_memory_visited_at_selection 변경 파일명의 memory 를 category 로 수정 - memory -> category * refactor: item_timeline.xml의 memory 제거 View ID의 memory를 category로 수정 - memory -> category 데이터 바인딩 객체명을 category로 수정 - memory -> category * refactor: strings.xml 리소스 이름의 memory 제거 memory를 category로 변경 - memory -> category * refactor: memory_gradient.xml 리소스 파일명 수정 memory를 category로 변경 - memory -> category * refactor: bottom_navigation_graph.xml의 memory 제거 바텀 시트 Fragment 네비게이션 ID의 memory를 category로 변경 - memory -> category fragment label 변경 - fragment_memory -> fragment_category * refactor: MemoryCandidateFixture의 memory 제거 변수명 및 메서드명, 파라미터명의 memory 수정 - memory -> category - MEMORY -> CATEGORY * refactor: 스타카토 생성 ViewModel 테스트의 memory 제거 변수명 및 메서드명에 존재하는 memory 변경 - memory -> category - memories -> categories * refactor: 스타카토 수정 ViewModel 테스트의 memory 제거 변수명에 존재하는 memory 변경 - memory -> category - memories -> categories * refactor: 스타카토 수정 ViewModel 테스트의 추억 문구 제거 테스트 제목, 주석에 존재하는 추억 문구 변경 - 추억 -> 카테고리 * refactor: BindingAdapters의 memory 문구 제거 - memory -> category * refactor: ButtonBindingAdapters의 memory 문구 변경 Button View에 대한 바인딩 어댑터 속성명의 memory 변경 - memory -> category * refactor: TextBindingAdapters의 memory 문구 변경 TextView에 대한 바인딩 어댑터 속성 명의 memory 변경 - memory -> category * refactor: TimelineMapper의 memory 문구 변경 Timeline.toTimelineUiModel() 메서드의 람다 파라미터 변수명 수정 - memory -> category * refactor: MemoryMapper.kt 파일명 변경 - MemoryMapper -> CategoryMapper * refactor: TimelineMapper의 memories 문구 변경 TimelineResponse.toCategoryCandidates() 메서드 내부 변수명 변경 - memories -> categories * refactor: CategoryResponse의 SerialName 값 수정 API URL 변경에 따라, serial name의 moment를 staccato로 변경 - moments -> staccatos * refactor: CategoryStaccatoDto의 SerialName 값 수정 API URL 변경에 따라, serial name의 moment를 staccato로 변경 - moment -> staccato - momentImageUrl -> staccatoImageUrl * refactor: StaccatoCreationRequest의 SerialName 값 수정 API URL 변경에 따라, serial name의 moment를 staccato로 변경 - momentImageUrls -> staccatoImageUrls * refactor: StaccatoCreationResponse의 SerialName 수정 API URL 변경에 따라, serial name의 moment를 staccato로 변경 - momentId -> staccatoId * refactor: StaccatoLocationDto의 SerialName 수정 API URL 변경에 따라, serial name의 moment를 staccato로 변경 - momentId -> staccatoId * refactor: StaccatoLocationResponse의 SerialName 수정 API URL 변경에 따라, serial name의 moment를 staccato로 변경 - momentLocationResponses -> staccatoLocationResponses * refactor: StaccatoResponse의 SerialName 수정 API URL 변경에 따라, serial name의 moment를 staccato로 변경 - momentId -> staccatoId - momentImageUrls -> staccatoImageUrls * refactor: StaccatoUpdateRequest의 SerialName 수정 API URL 변경에 따라, serial name의 moment를 staccato로 변경 - momentImageUrls -> staccatoImageUrls * refactor: StaccatoUpdateRequest의 프로퍼티명 수정 - momentImageUrls -> staccatoImageUrls * refactor: StaccatoResponse의 프로퍼티명 수정 - momentImageUrls -> staccatoImageUrls * refactor: StaccatoApiService의 API URL 수정 API URL의 변경에 따라, moment를 staccato로 변경 - moments -> staccatos - momentId -> staccatoId 동반객체 활용 - STACCATO_ID = "staccatoId" - STACCATO_PATH_WITH_ID = "$STACCATOS_PATH/{$STACCATO_ID}" * refactor: StaccatoApiService API 메서드의 파라미터명 변경 - moment -> staccato * style: ktlint 적용 - import 알파벳 순서에 따라 재정렬 - 들여쓰기 조정 - line당 글자수 초과한 코드 개행 처리 * refactor: 사용하지 않는 Model 및 Mapper 제거 * refactor: StaccatoRepository의 기분 변경 요청 메서드 수정 - 업데이트할 기분을 String이 아닌 도메인 모델 Feeling으로 변경 - StaccatoDefaultRepository에서 toFeelingRequest Mapper 메서드 활용 * style: ktlint 적용 * refactor: MemoryCandidateFixture 파일명 수정 - MemoryCandidateFixture -> CategoryCandidateFixture * refactor: inline 학습 테스트의 Memory 도메인 수정 - Memory -> Category - MemoryStaccato -> CategoryStaccato * refactor: Comment API URL 변경 사항 반영 URI에 남아있는 moment를 staccato로 변경 - 버저닝을 위해 comments 경로에 /v2 추가 - momentId -> staccatoId 로 변경 * fix: Comment API URL의 버저닝 수정 GET, POST 요청에만 v2 적용하도록 변경 - 버저닝 URI인 COMMENTS_URI_V2 * refactor: API Url 경로 네이밍 변경 다른 ApiService에서 사용하는 변수명과 통일 - URI -> PATH * fix: 올바르게 반영되지 않은 변경사항 수정 - convertMemoryUriToFile -> convertCategoryUriToFile * fix: LogBack appender xml 수정 #590 (#614) * refactor: 로그 저장 기간 1년(365일)으로 변경 * refactor: 로그 임시 저장 파일 이름 변경 * refactor: BY_DATE 구문 삭제 * feat: 필터링/조건 옵션 로깅 구현 #601 (#615) * feat: 필터링/조건 옵션 로깅 구현 * test: service slice test 템플릿 사용하도록 수정 * feat: 기록 시점이 과거 / 현재 / 미래인지 비즈니스 매트릭 구성 #611 (#612) * feat: 스트카토 기록 비즈니스 매트릭 구성 * refactor: 비즈니스 매트릭 수집 기준 변경 * test: 비즈니스 매트릭 테스트 * style: 주석 삭제 * test: 테스트 코드 수정 * deploy: v.1.3.0 배포 준비 #613 (#619) * build: versionCode, versionName 업데이트 - versionCode : 7 -> 8 - versionName : "1.2.1" -> "1.3.0" * ui: 마이페이지 화면의 앱 버전 업데이트 - 1.2.1 -> 1.3.0 * docs: 1.3.0 출시 노트 작성 - 앱 설명 제거 - 이전 버전(1.2.0, 1.2.1)에 대한 내용 제거 * deploy: v.1.3.0 배포 준비 #621 (#622) * deploy: 1.2.0 배포 (#512) * fix: 누락된 not 연산자 추가 * refactor: whitelist 추가 #489 (#490) * feat: 인덱스 설정 스크립트 작성 #474 (#475) Co-authored-by: BurningFalls * feat: Bulk Delete 예전 pr 코드 이동 (#487) * refactor: N+1 문제 해결 (#488) * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 * refactor: 반응형 ui 적용 및 접근성 향상 #481 (#502) * ui: login 화면 반응형 ui 대응 * ui: 고유 코드 복구 화면 반응형 ui 대응 * ui: 마이페이지 화면 반응형 ui 대응 * ui: 나의 추억들 화면 반응형 ui 대응 * ui: 추억 화면 반응형 ui 대응 - span count 조정 * refactor: 스타카토 생성 화면 반응형 ui 대응 * refactor: 스타카토 수정 화면 반응형 ui 대응 * refactor: 추억 생성 화면 반응형 ui 대응 * refactor: 추억 수정 화면 반응형 ui 대응 * ui: 다크모드 대응 - colors 대응 - themes 대응 - 지도 대응 * fix: 지도 화면의 구성 변경으로 일어나는 크래시 해결 * ui: 스플래시 다크모드 대응 * feat: 스타카토 마커 커스텀 * ui: 스타카토 마커 다크모드 대응 * feat: 사용자 피드백 수집을 위한 구글 폼 연동 * feat: 인스타그램 페이지 연동 * refactor: 마이페이지 버튼 터치 영역 확대 * refactor: TextInputEditText 터치 영역 확대 * refactor: 추억 기간 선택 box 터치 영역 확대 * refactor: 툴바 수정 및 삭제 메뉴 버튼 터치 영역 확대 * refactor: 마이페이지 인스타그램 버튼 터치 영역 확대 * refactor: 스타카토 장소 선택 box 버튼 터치 영역 확대 * refactor: 스타카토 추억, 날짜 및 시간 선택 box 터치 영역 확대 * ui: typography.Body에 Not.Resizable 추가 * ui: styles에 Not.Resizable 적용 * ui: 스타카토 생성 수정 화면 styles 적용 * ui: 추억 생성 수정 화면 styles 적용 * ui: styles_button.xml에 BoundedIconButtonStyle 추가 * ui: 추억, 타임라인 화면에 BoundedIconButtonStyle 적용 * ui: 타임라인 화면 글씨 크기 조절 대응 * ui: layout_photo_attach.xml 글씨 크기 조절 대응 * ui: 추억 조회 화면 글씨 크기 조절 대응 * ui: 행간 겹침 방지를 위해 lineHeight 단위 sp로 수정 * ui: empty 관련 텍스트 Not.Resizable 설정 * ui: 로그인 및 복구 화면 글씨 크기 조절 대응 * refactor: 홈 화면 content description 추가 * refactor: 나의 추억들 화면 content description 추가 * refactor: 추억 화면 content description 추가 * refactor: 추억 생성 및 수정 화면 content description 추가 * refactor: 스타카토 사진 첨부 item content description 추가 * refactor: 나의 추억들 아이템 중첩된 레이아웃 제거 * refactor: 스타카토 화면 content description 추가 * refactor: 마이페이지 화면 content description 추가 * refactor: 로그인 화면 content description 추가 * refactor: 나의 추억들 item content description 추가 * refactor: 댓글 item content description 추가 * refactor: 함께 한 사람들 item content description 추가 * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 --------- Co-authored-by: somin Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> * hotfix: 이미지 삭제 전파 (#505) * fix: 이미지 삭제 전파 * fix: 이미지 삭제 전파 수정 * feat: 기본 추억 제공 구현 #508 (#509) * feat: 기본 추억 생성 구현 * refactor: 기본 추억 설명 수정 * fix: persist 전파되도록 로직 순서 변경 * fix: file changed 인식 불가로 인한 순서 변경 (#511) --------- Co-authored-by: hxeyexn Co-authored-by: BurningFalls Co-authored-by: YoonJuHo Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> Co-authored-by: Hyeyeon Gong <103019852+hxeyexn@users.noreply.github.com> Co-authored-by: somin * deploy: 1.2.1 배포 (#532) * fix: 누락된 not 연산자 추가 * refactor: whitelist 추가 #489 (#490) * feat: 인덱스 설정 스크립트 작성 #474 (#475) Co-authored-by: BurningFalls * feat: Bulk Delete 예전 pr 코드 이동 (#487) * refactor: N+1 문제 해결 (#488) * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 * refactor: 반응형 ui 적용 및 접근성 향상 #481 (#502) * ui: login 화면 반응형 ui 대응 * ui: 고유 코드 복구 화면 반응형 ui 대응 * ui: 마이페이지 화면 반응형 ui 대응 * ui: 나의 추억들 화면 반응형 ui 대응 * ui: 추억 화면 반응형 ui 대응 - span count 조정 * refactor: 스타카토 생성 화면 반응형 ui 대응 * refactor: 스타카토 수정 화면 반응형 ui 대응 * refactor: 추억 생성 화면 반응형 ui 대응 * refactor: 추억 수정 화면 반응형 ui 대응 * ui: 다크모드 대응 - colors 대응 - themes 대응 - 지도 대응 * fix: 지도 화면의 구성 변경으로 일어나는 크래시 해결 * ui: 스플래시 다크모드 대응 * feat: 스타카토 마커 커스텀 * ui: 스타카토 마커 다크모드 대응 * feat: 사용자 피드백 수집을 위한 구글 폼 연동 * feat: 인스타그램 페이지 연동 * refactor: 마이페이지 버튼 터치 영역 확대 * refactor: TextInputEditText 터치 영역 확대 * refactor: 추억 기간 선택 box 터치 영역 확대 * refactor: 툴바 수정 및 삭제 메뉴 버튼 터치 영역 확대 * refactor: 마이페이지 인스타그램 버튼 터치 영역 확대 * refactor: 스타카토 장소 선택 box 버튼 터치 영역 확대 * refactor: 스타카토 추억, 날짜 및 시간 선택 box 터치 영역 확대 * ui: typography.Body에 Not.Resizable 추가 * ui: styles에 Not.Resizable 적용 * ui: 스타카토 생성 수정 화면 styles 적용 * ui: 추억 생성 수정 화면 styles 적용 * ui: styles_button.xml에 BoundedIconButtonStyle 추가 * ui: 추억, 타임라인 화면에 BoundedIconButtonStyle 적용 * ui: 타임라인 화면 글씨 크기 조절 대응 * ui: layout_photo_attach.xml 글씨 크기 조절 대응 * ui: 추억 조회 화면 글씨 크기 조절 대응 * ui: 행간 겹침 방지를 위해 lineHeight 단위 sp로 수정 * ui: empty 관련 텍스트 Not.Resizable 설정 * ui: 로그인 및 복구 화면 글씨 크기 조절 대응 * refactor: 홈 화면 content description 추가 * refactor: 나의 추억들 화면 content description 추가 * refactor: 추억 화면 content description 추가 * refactor: 추억 생성 및 수정 화면 content description 추가 * refactor: 스타카토 사진 첨부 item content description 추가 * refactor: 나의 추억들 아이템 중첩된 레이아웃 제거 * refactor: 스타카토 화면 content description 추가 * refactor: 마이페이지 화면 content description 추가 * refactor: 로그인 화면 content description 추가 * refactor: 나의 추억들 item content description 추가 * refactor: 댓글 item content description 추가 * refactor: 함께 한 사람들 item content description 추가 * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 --------- Co-authored-by: somin Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> * hotfix: 이미지 삭제 전파 (#505) * fix: 이미지 삭제 전파 * fix: 이미지 삭제 전파 수정 * feat: 기본 추억 제공 구현 #508 (#509) * feat: 기본 추억 생성 구현 * refactor: 기본 추억 설명 수정 * fix: persist 전파되도록 로직 순서 변경 * fix: file changed 인식 불가로 인한 순서 변경 (#511) * feat: 모든 화면에서 네트워크 에러 핸들링 #501 (#516) * fix: ApiResponseHandler try-catch문 범위 수정 * refactor: StaccatoApiService의 반환값 Response로 wrapping * refactor: StaccatoDataSource의 반환값 ResponseResult로 wrapping * refactor: StaccatoRepository의 반환값 ResponseResult로 wrapping * refactor: StaccatoRepository를 사용하는 ViewModel에 에러 처리 변경사항 적용 * feat: MessageUtils.kt에 showSnackBarWithAction 추가 * feat: TimelineFragment 네트워크 에러 발생 시 스낵바 처리 * feat: MemoryFragment 네트워크 에러 발생 시 스낵바 처리 * feat: StaccatoFragment 네트워크 에러 발생 시 스낵바 처리 * refactor: 불필요한 Log.e 메서드 제거 * style: 네트워크 에러 메시지 상수명 통일 * refactor: MessageUtils에 getSnackBarWithAction 메서드 추가 * feat: Memory 생성/수정 화면 에러 핸들링 * feat: Staccato 생성/수정 화면 에러 핸들링 * feat: 마이페이지 화면 네트워크 에러 핸들링 * fix: 스타카토 조회 화면 코멘트 에러 핸들링 * refactor: 추억 에러 관련 data class 리네이밍 Photo -> Thumbnail * refactor: 추억 생성 에러 data class 리네이밍 MemoryCreate -> MemoryCreation * refactor: 메서드명 카멜 케이스로 통일 (reCreate) * refactor: 추억 업데이트 에러 data class 리네이밍 MemoryInitialize -> MemoryInitialization * refactor: getSnackBarWithAction의 length를 named arguments로 수정 * refactor: EXCEPTION_NETWORK_ERROR_MESSAGE 텍스트 내용 수정 * refactor: 이미지 업로드 실패 메시지 상수화 * refactor: StaccatoUpdateViewModel의 메시지 상수화 및 PhotoException 분리 * refactor: 스낵바 Util 불필요한 apply 제거 * build: 안드로이드 CI/CD 재설정 #445 (#513) * build: android ci 타겟 브랜치 변경 - develop-an -> develop 브랜치로 변경 * build: 개발 단계용 android ci, cd 설정 - Debug용 APK 파일이 아닌 Release용 APK 파일을 추출하도록 변경 - gradle assembleRelease : 앱을 release 모드로 빌드, Debug 정보를 포함하지 않기에 용량이 더 적고, 난독화가 적용되어 있다. * build: 개발 단계용 android ci, cd 설정 - 타겟 브랜치 변경 : develop -> release-an 으로 변경 - Debug용 APK 파일이 아닌 Release용 APK 파일을 추출하도록 변경 - gradle assembleRelease : 앱을 release 모드로 빌드, Debug 정보를 포함하지 않기에 용량이 더 적고, 난독화가 적용되어 있다. * build: android ci 워크플로우 이름 변경 * build: android cd 재설정 - 구글 플레이 콘솔 자동 배포 설정 * build: Play Console 배포 설정 변경 - 서비스 계정 Key 파일 secret 변수 변경 - whatsNewDirectory 설정 * build: android ci 적용 브랜치 수정 - release-an 브랜치, main 브랜치 추가 * fix: 안드로이드 CI 오류 수정 #519 (#521) * fix: android-ci.yml 파일 수정 * fix: android-ci.yml 파일 수정 * feat: 나의 추억들 정렬 기능 구현 #503 (#507) * ui: 정렬 메뉴 ui 구현 * feat: 나의 추억들 정렬 기능 구현 * feat: 기간 유무에 따른 추억 필터 기능 구현 * refactor: 정렬 타입에 따른 정렬 선택 로직을 view model이 가지도록 변경 - 정렬 타입과 정렬 menu id를 가지고 있는 SortType Enum Class 생성 * refactor: timeline ui model 셋팅 로직 수정 * refactor: 사용자가 선택한 menuId와 일치하는 SortType을 찾는 로직을 팩토리 함수로 분리 * refactor: 원본 timeline clear 로직 추가 * refactor: 기간 있는 추억 내림차순 정렬 조건 추가 * fix: 추억 삭제 후 나의 추억들(타임라인)이 갱신되지 않는 오류 수정 * fix: 나의 추억들(타임라인) 정렬 시 포커스가 유지되는 문제 해결 * refactor: originalTimeline 타입 변경 * ui: 기분 캐릭터 변경 #522 (#523) * ui: 음표 기분 캐릭터 추가 * refactor: 음표 기분 캐릭터 적용 * feat: 카메라 촬영 기능 연결 #514 (#524) * build: androidx camera 의존성 추가 - 버전 카탈로그 활용 * build: AndroidManifest 카메라 접근 기능 수정 - android.hardware.camera.any 로 설정하여 전, 후면 모두 사용 가능하도록 변경 * ui: 사진 업로드 다이얼로그에서 ㄷ사용할 문자열 리소스 설정 - 권한 관련 안내 메시지 추가 * feat: 카메라 기능 추가 - 접근 권한 확인 후 카메라 실행 - 카메라에서 촬영한 사진을 가져와 Activity에게 이미지 URI 전달 * style: ktlint 적용 * fix: 권한 요청 스낵바와 에러 메시지 스낵바 분리 * ui: 권한 요청 스낵바의 문구 수정 * fix: 외부 저장소 쓰기 권한 추가 * deploy: v.1.2.0 배포 준비 #515 (#525) * refactor: versionCode 및 versionName 업데이트 - versionCode: 4 -> 5 - versionName: "1.1.0" -> "1.2.0" * ui: 마이페이지에 노출될 앱 버전 명 업데이트 - 앱 버전: "1.1.0" -> "1.2.0" * docs: 1.2.0 버전 출시 노트 추가 * deploy: v.1.2.0 배포 (#526) * fix: 누락된 not 연산자 추가 * refactor: whitelist 추가 #489 (#490) * deploy: 1.1.1 배포 #484 (#491) * fix: 누락된 not 연산자 추가 * refactor: whitelist 추가 #489 (#490) --------- Co-authored-by: hxeyexn * feat: 인덱스 설정 스크립트 작성 #474 (#475) Co-authored-by: BurningFalls * feat: Bulk Delete 예전 pr 코드 이동 (#487) * refactor: N+1 문제 해결 (#488) * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 * refactor: 반응형 ui 적용 및 접근성 향상 #481 (#502) * ui: login 화면 반응형 ui 대응 * ui: 고유 코드 복구 화면 반응형 ui 대응 * ui: 마이페이지 화면 반응형 ui 대응 * ui: 나의 추억들 화면 반응형 ui 대응 * ui: 추억 화면 반응형 ui 대응 - span count 조정 * refactor: 스타카토 생성 화면 반응형 ui 대응 * refactor: 스타카토 수정 화면 반응형 ui 대응 * refactor: 추억 생성 화면 반응형 ui 대응 * refactor: 추억 수정 화면 반응형 ui 대응 * ui: 다크모드 대응 - colors 대응 - themes 대응 - 지도 대응 * fix: 지도 화면의 구성 변경으로 일어나는 크래시 해결 * ui: 스플래시 다크모드 대응 * feat: 스타카토 마커 커스텀 * ui: 스타카토 마커 다크모드 대응 * feat: 사용자 피드백 수집을 위한 구글 폼 연동 * feat: 인스타그램 페이지 연동 * refactor: 마이페이지 버튼 터치 영역 확대 * refactor: TextInputEditText 터치 영역 확대 * refactor: 추억 기간 선택 box 터치 영역 확대 * refactor: 툴바 수정 및 삭제 메뉴 버튼 터치 영역 확대 * refactor: 마이페이지 인스타그램 버튼 터치 영역 확대 * refactor: 스타카토 장소 선택 box 버튼 터치 영역 확대 * refactor: 스타카토 추억, 날짜 및 시간 선택 box 터치 영역 확대 * ui: typography.Body에 Not.Resizable 추가 * ui: styles에 Not.Resizable 적용 * ui: 스타카토 생성 수정 화면 styles 적용 * ui: 추억 생성 수정 화면 styles 적용 * ui: styles_button.xml에 BoundedIconButtonStyle 추가 * ui: 추억, 타임라인 화면에 BoundedIconButtonStyle 적용 * ui: 타임라인 화면 글씨 크기 조절 대응 * ui: layout_photo_attach.xml 글씨 크기 조절 대응 * ui: 추억 조회 화면 글씨 크기 조절 대응 * ui: 행간 겹침 방지를 위해 lineHeight 단위 sp로 수정 * ui: empty 관련 텍스트 Not.Resizable 설정 * ui: 로그인 및 복구 화면 글씨 크기 조절 대응 * refactor: 홈 화면 content description 추가 * refactor: 나의 추억들 화면 content description 추가 * refactor: 추억 화면 content description 추가 * refactor: 추억 생성 및 수정 화면 content description 추가 * refactor: 스타카토 사진 첨부 item content description 추가 * refactor: 나의 추억들 아이템 중첩된 레이아웃 제거 * refactor: 스타카토 화면 content description 추가 * refactor: 마이페이지 화면 content description 추가 * refactor: 로그인 화면 content description 추가 * refactor: 나의 추억들 item content description 추가 * refactor: 댓글 item content description 추가 * refactor: 함께 한 사람들 item content description 추가 * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 --------- Co-authored-by: somin Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> * deploy: 1.1.2 배포 (#504) * fix: 누락된 not 연산자 추가 * refactor: whitelist 추가 #489 (#490) * feat: 인덱스 설정 스크립트 작성 #474 (#475) Co-authored-by: BurningFalls * feat: Bulk Delete 예전 pr 코드 이동 (#487) * refactor: N+1 문제 해결 (#488) * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 * refactor: 반응형 ui 적용 및 접근성 향상 #481 (#502) * ui: login 화면 반응형 ui 대응 * ui: 고유 코드 복구 화면 반응형 ui 대응 * ui: 마이페이지 화면 반응형 ui 대응 * ui: 나의 추억들 화면 반응형 ui 대응 * ui: 추억 화면 반응형 ui 대응 - span count 조정 * refactor: 스타카토 생성 화면 반응형 ui 대응 * refactor: 스타카토 수정 화면 반응형 ui 대응 * refactor: 추억 생성 화면 반응형 ui 대응 * refactor: 추억 수정 화면 반응형 ui 대응 * ui: 다크모드 대응 - colors 대응 - themes 대응 - 지도 대응 * fix: 지도 화면의 구성 변경으로 일어나는 크래시 해결 * ui: 스플래시 다크모드 대응 * feat: 스타카토 마커 커스텀 * ui: 스타카토 마커 다크모드 대응 * feat: 사용자 피드백 수집을 위한 구글 폼 연동 * feat: 인스타그램 페이지 연동 * refactor: 마이페이지 버튼 터치 영역 확대 * refactor: TextInputEditText 터치 영역 확대 * refactor: 추억 기간 선택 box 터치 영역 확대 * refactor: 툴바 수정 및 삭제 메뉴 버튼 터치 영역 확대 * refactor: 마이페이지 인스타그램 버튼 터치 영역 확대 * refactor: 스타카토 장소 선택 box 버튼 터치 영역 확대 * refactor: 스타카토 추억, 날짜 및 시간 선택 box 터치 영역 확대 * ui: typography.Body에 Not.Resizable 추가 * ui: styles에 Not.Resizable 적용 * ui: 스타카토 생성 수정 화면 styles 적용 * ui: 추억 생성 수정 화면 styles 적용 * ui: styles_button.xml에 BoundedIconButtonStyle 추가 * ui: 추억, 타임라인 화면에 BoundedIconButtonStyle 적용 * ui: 타임라인 화면 글씨 크기 조절 대응 * ui: layout_photo_attach.xml 글씨 크기 조절 대응 * ui: 추억 조회 화면 글씨 크기 조절 대응 * ui: 행간 겹침 방지를 위해 lineHeight 단위 sp로 수정 * ui: empty 관련 텍스트 Not.Resizable 설정 * ui: 로그인 및 복구 화면 글씨 크기 조절 대응 * refactor: 홈 화면 content description 추가 * refactor: 나의 추억들 화면 content description 추가 * refactor: 추억 화면 content description 추가 * refactor: 추억 생성 및 수정 화면 content description 추가 * refactor: 스타카토 사진 첨부 item content description 추가 * refactor: 나의 추억들 아이템 중첩된 레이아웃 제거 * refactor: 스타카토 화면 content description 추가 * refactor: 마이페이지 화면 content description 추가 * refactor: 로그인 화면 content description 추가 * refactor: 나의 추억들 item content description 추가 * refactor: 댓글 item content description 추가 * refactor: 함께 한 사람들 item content description 추가 * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 --------- Co-authored-by: somin Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> --------- Co-authored-by: hxeyexn Co-authored-by: linirini <101927543+linirini@users.noreply.github.com> Co-authored-by: YoonJuHo Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> Co-authored-by: Hyeyeon Gong <103019852+hxeyexn@users.noreply.github.com> Co-authored-by: somin * hotfix: 이미지 삭제 전파 (#505) * fix: 이미지 삭제 전파 * fix: 이미지 삭제 전파 수정 * deploy: 1.1.3 배포 (#506) * fix: 누락된 not 연산자 추가 * refactor: whitelist 추가 #489 (#490) * feat: 인덱스 설정 스크립트 작성 #474 (#475) Co-authored-by: BurningFalls * feat: Bulk Delete 예전 pr 코드 이동 (#487) * refactor: N+1 문제 해결 (#488) * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 * refactor: 반응형 ui 적용 및 접근성 향상 #481 (#502) * ui: login 화면 반응형 ui 대응 * ui: 고유 코드 복구 화면 반응형 ui 대응 * ui: 마이페이지 화면 반응형 ui 대응 * ui: 나의 추억들 화면 반응형 ui 대응 * ui: 추억 화면 반응형 ui 대응 - span count 조정 * refactor: 스타카토 생성 화면 반응형 ui 대응 * refactor: 스타카토 수정 화면 반응형 ui 대응 * refactor: 추억 생성 화면 반응형 ui 대응 * refactor: 추억 수정 화면 반응형 ui 대응 * ui: 다크모드 대응 - colors 대응 - themes 대응 - 지도 대응 * fix: 지도 화면의 구성 변경으로 일어나는 크래시 해결 * ui: 스플래시 다크모드 대응 * feat: 스타카토 마커 커스텀 * ui: 스타카토 마커 다크모드 대응 * feat: 사용자 피드백 수집을 위한 구글 폼 연동 * feat: 인스타그램 페이지 연동 * refactor: 마이페이지 버튼 터치 영역 확대 * refactor: TextInputEditText 터치 영역 확대 * refactor: 추억 기간 선택 box 터치 영역 확대 * refactor: 툴바 수정 및 삭제 메뉴 버튼 터치 영역 확대 * refactor: 마이페이지 인스타그램 버튼 터치 영역 확대 * refactor: 스타카토 장소 선택 box 버튼 터치 영역 확대 * refactor: 스타카토 추억, 날짜 및 시간 선택 box 터치 영역 확대 * ui: typography.Body에 Not.Resizable 추가 * ui: styles에 Not.Resizable 적용 * ui: 스타카토 생성 수정 화면 styles 적용 * ui: 추억 생성 수정 화면 styles 적용 * ui: styles_button.xml에 BoundedIconButtonStyle 추가 * ui: 추억, 타임라인 화면에 BoundedIconButtonStyle 적용 * ui: 타임라인 화면 글씨 크기 조절 대응 * ui: layout_photo_attach.xml 글씨 크기 조절 대응 * ui: 추억 조회 화면 글씨 크기 조절 대응 * ui: 행간 겹침 방지를 위해 lineHeight 단위 sp로 수정 * ui: empty 관련 텍스트 Not.Resizable 설정 * ui: 로그인 및 복구 화면 글씨 크기 조절 대응 * refactor: 홈 화면 content description 추가 * refactor: 나의 추억들 화면 content description 추가 * refactor: 추억 화면 content description 추가 * refactor: 추억 생성 및 수정 화면 content description 추가 * refactor: 스타카토 사진 첨부 item content description 추가 * refactor: 나의 추억들 아이템 중첩된 레이아웃 제거 * refactor: 스타카토 화면 content description 추가 * refactor: 마이페이지 화면 content description 추가 * refactor: 로그인 화면 content description 추가 * refactor: 나의 추억들 item content description 추가 * refactor: 댓글 item content description 추가 * refactor: 함께 한 사람들 item content description 추가 * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 --------- Co-authored-by: somin Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> * hotfix: 이미지 삭제 전파 (#505) * fix: 이미지 삭제 전파 * fix: 이미지 삭제 전파 수정 --------- Co-authored-by: hxeyexn Co-authored-by: linirini <101927543+linirini@users.noreply.github.com> Co-authored-by: BurningFalls Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> Co-authored-by: Hyeyeon Gong <103019852+hxeyexn@users.noreply.github.com> Co-authored-by: somin * feat: 기본 추억 제공 구현 #508 (#509) * feat: 기본 추억 생성 구현 * refactor: 기본 추억 설명 수정 * fix: persist 전파되도록 로직 순서 변경 * deploy: 1.2.0 배포 (#510) * fix: 누락된 not 연산자 추가 * refactor: whitelist 추가 #489 (#490) * feat: 인덱스 설정 스크립트 작성 #474 (#475) Co-authored-by: BurningFalls * feat: Bulk Delete 예전 pr 코드 이동 (#487) * refactor: N+1 문제 해결 (#488) * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 * refactor: 반응형 ui 적용 및 접근성 향상 #481 (#502) * ui: login 화면 반응형 ui 대응 * ui: 고유 코드 복구 화면 반응형 ui 대응 * ui: 마이페이지 화면 반응형 ui 대응 * ui: 나의 추억들 화면 반응형 ui 대응 * ui: 추억 화면 반응형 ui 대응 - span count 조정 * refactor: 스타카토 생성 화면 반응형 ui 대응 * refactor: 스타카토 수정 화면 반응형 ui 대응 * refactor: 추억 생성 화면 반응형 ui 대응 * refactor: 추억 수정 화면 반응형 ui 대응 * ui: 다크모드 대응 - colors 대응 - themes 대응 - 지도 대응 * fix: 지도 화면의 구성 변경으로 일어나는 크래시 해결 * ui: 스플래시 다크모드 대응 * feat: 스타카토 마커 커스텀 * ui: 스타카토 마커 다크모드 대응 * feat: 사용자 피드백 수집을 위한 구글 폼 연동 * feat: 인스타그램 페이지 연동 * refactor: 마이페이지 버튼 터치 영역 확대 * refactor: TextInputEditText 터치 영역 확대 * refactor: 추억 기간 선택 box 터치 영역 확대 * refactor: 툴바 수정 및 삭제 메뉴 버튼 터치 영역 확대 * refactor: 마이페이지 인스타그램 버튼 터치 영역 확대 * refactor: 스타카토 장소 선택 box 버튼 터치 영역 확대 * refactor: 스타카토 추억, 날짜 및 시간 선택 box 터치 영역 확대 * ui: typography.Body에 Not.Resizable 추가 * ui: styles에 Not.Resizable 적용 * ui: 스타카토 생성 수정 화면 styles 적용 * ui: 추억 생성 수정 화면 styles 적용 * ui: styles_button.xml에 BoundedIconButtonStyle 추가 * ui: 추억, 타임라인 화면에 BoundedIconButtonStyle 적용 * ui: 타임라인 화면 글씨 크기 조절 대응 * ui: layout_photo_attach.xml 글씨 크기 조절 대응 * ui: 추억 조회 화면 글씨 크기 조절 대응 * ui: 행간 겹침 방지를 위해 lineHeight 단위 sp로 수정 * ui: empty 관련 텍스트 Not.Resizable 설정 * ui: 로그인 및 복구 화면 글씨 크기 조절 대응 * refactor: 홈 화면 content description 추가 * refactor: 나의 추억들 화면 content description 추가 * refactor: 추억 화면 content description 추가 * refactor: 추억 생성 및 수정 화면 content description 추가 * refactor: 스타카토 사진 첨부 item content description 추가 * refactor: 나의 추억들 아이템 중첩된 레이아웃 제거 * refactor: 스타카토 화면 content description 추가 * refactor: 마이페이지 화면 content description 추가 * refactor: 로그인 화면 content description 추가 * refactor: 나의 추억들 item content description 추가 * refactor: 댓글 item content description 추가 * refactor: 함께 한 사람들 item content description 추가 * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 --------- Co-authored-by: somin Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> * hotfix: 이미지 삭제 전파 (#505) * fix: 이미지 삭제 전파 * fix: 이미지 삭제 전파 수정 * feat: 기본 추억 제공 구현 #508 (#509) * feat: 기본 추억 생성 구현 * refactor: 기본 추억 설명 수정 * fix: persist 전파되도록 로직 순서 변경 --------- Co-authored-by: hxeyexn Co-authored-by: BurningFalls Co-authored-by: YoonJuHo Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> Co-authored-by: Hyeyeon Gong <103019852+hxeyexn@users.noreply.github.com> Co-authored-by: somin * fix: file changed 인식 불가로 인한 순서 변경 (#511) * feat: 모든 화면에서 네트워크 에러 핸들링 #501 (#516) * fix: ApiResponseHandler try-catch문 범위 수정 * refactor: StaccatoApiService의 반환값 Response로 wrapping * refactor: StaccatoDataSource의 반환값 ResponseResult로 wrapping * refactor: StaccatoRepository의 반환값 ResponseResult로 wrapping * refactor: StaccatoRepository를 사용하는 ViewModel에 에러 처리 변경사항 적용 * feat: MessageUtils.kt에 showSnackBarWithAction 추가 * feat: TimelineFragment 네트워크 에러 발생 시 스낵바 처리 * feat: MemoryFragment 네트워크 에러 발생 시 스낵바 처리 * feat: StaccatoFragment 네트워크 에러 발생 시 스낵바 처리 * refactor: 불필요한 Log.e 메서드 제거 * style: 네트워크 에러 메시지 상수명 통일 * refactor: MessageUtils에 getSnackBarWithAction 메서드 추가 * feat: Memory 생성/수정 화면 에러 핸들링 * feat: Staccato 생성/수정 화면 에러 핸들링 * feat: 마이페이지 화면 네트워크 에러 핸들링 * fix: 스타카토 조회 화면 코멘트 에러 핸들링 * refactor: 추억 에러 관련 data class 리네이밍 Photo -> Thumbnail * refactor: 추억 생성 에러 data class 리네이밍 MemoryCreate -> MemoryCreation * refactor: 메서드명 카멜 케이스로 통일 (reCreate) * refactor: 추억 업데이트 에러 data class 리네이밍 MemoryInitialize -> MemoryInitialization * refactor: getSnackBarWithAction의 length를 named arguments로 수정 * refactor: EXCEPTION_NETWORK_ERROR_MESSAGE 텍스트 내용 수정 * refactor: 이미지 업로드 실패 메시지 상수화 * refactor: StaccatoUpdateViewModel의 메시지 상수화 및 PhotoException 분리 * refactor: 스낵바 Util 불필요한 apply 제거 * build: 안드로이드 CI/CD 재설정 #445 (#513) * build: android ci 타겟 브랜치 변경 - develop-an -> develop 브랜치로 변경 * build: 개발 단계용 android ci, cd 설정 - Debug용 APK 파일이 아닌 Release용 APK 파일을 추출하도록 변경 - gradle assembleRelease : 앱을 release 모드로 빌드, Debug 정보를 포함하지 않기에 용량이 더 적고, 난독화가 적용되어 있다. * build: 개발 단계용 android ci, cd 설정 - 타겟 브랜치 변경 : develop -> release-an 으로 변경 - Debug용 APK 파일이 아닌 Release용 APK 파일을 추출하도록 변경 - gradle assembleRelease : 앱을 release 모드로 빌드, Debug 정보를 포함하지 않기에 용량이 더 적고, 난독화가 적용되어 있다. * build: android ci 워크플로우 이름 변경 * build: android cd 재설정 - 구글 플레이 콘솔 자동 배포 설정 * build: Play Console 배포 설정 변경 - 서비스 계정 Key 파일 secret 변수 변경 - whatsNewDirectory 설정 * build: android ci 적용 브랜치 수정 - release-an 브랜치, main 브랜치 추가 * fix: 안드로이드 CI 오류 수정 #519 (#521) * fix: android-ci.yml 파일 수정 * fix: android-ci.yml 파일 수정 * feat: 나의 추억들 정렬 기능 구현 #503 (#507) * ui: 정렬 메뉴 ui 구현 * feat: 나의 추억들 정렬 기능 구현 * feat: 기간 유무에 따른 추억 필터 기능 구현 * refactor: 정렬 타입에 따른 정렬 선택 로직을 view model이 가지도록 변경 - 정렬 타입과 정렬 menu id를 가지고 있는 SortType Enum Class 생성 * refactor: timeline ui model 셋팅 로직 수정 * refactor: 사용자가 선택한 menuId와 일치하는 SortType을 찾는 로직을 팩토리 함수로 분리 * refactor: 원본 timeline clear 로직 추가 * refactor: 기간 있는 추억 내림차순 정렬 조건 추가 * fix: 추억 삭제 후 나의 추억들(타임라인)이 갱신되지 않는 오류 수정 * fix: 나의 추억들(타임라인) 정렬 시 포커스가 유지되는 문제 해결 * refactor: originalTimeline 타입 변경 * ui: 기분 캐릭터 변경 #522 (#523) * ui: 음표 기분 캐릭터 추가 * refactor: 음표 기분 캐릭터 적용 * feat: 카메라 촬영 기능 연결 #514 (#524) * build: androidx camera 의존성 추가 - 버전 카탈로그 활용 * build: AndroidManifest 카메라 접근 기능 수정 - android.hardware.camera.any 로 설정하여 전, 후면 모두 사용 가능하도록 변경 * ui: 사진 업로드 다이얼로그에서 ㄷ사용할 문자열 리소스 설정 - 권한 관련 안내 메시지 추가 * feat: 카메라 기능 추가 - 접근 권한 확인 후 카메라 실행 - 카메라에서 촬영한 사진을 가져와 Activity에게 이미지 URI 전달 * style: ktlint 적용 * fix: 권한 요청 스낵바와 에러 메시지 스낵바 분리 * ui: 권한 요청 스낵바의 문구 수정 * fix: 외부 저장소 쓰기 권한 추가 * deploy: v.1.2.0 배포 준비 #515 (#525) * refactor: versionCode 및 versionName 업데이트 - versionCode: 4 -> 5 - versionName: "1.1.0" -> "1.2.0" * ui: 마이페이지에 노출될 앱 버전 명 업데이트 - 앱 버전: "1.1.0" -> "1.2.0" * docs: 1.2.0 버전 출시 노트 추가 --------- Co-authored-by: hxeyexn Co-authored-by: linirini <101927543+linirini@users.noreply.github.com> Co-authored-by: BurningFalls Co-authored-by: YoonJuHo Co-authored-by: Hyeyeon Gong <103019852+hxeyexn@users.noreply.github.com> Co-authored-by: somin Co-authored-by: linirini <2001yerin@naver.com> Co-authored-by: Somin Lee <46596035+s6m1n@users.noreply.github.com> * fix: Android CD 수정 #527 (#528) * fix: push branch 에 release-an 추가 * fix: 출시 노트 옵션 파일경로 수정 * chore: Thread, Hikari CP 변경 (#518) * feat: Hikari CP, Thread 설정 변경 * fix: writer, reader에 각각 hikari 설정 * feat: 기본 추억 제목 변경 #530 (#531) * feat: 기본 추억 이름을 ~의 추억으로 설정 * refactor: 변수 사용 --------- Co-authored-by: hxeyexn Co-authored-by: BurningFalls Co-authored-by: YoonJuHo Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> Co-authored-by: Hyeyeon Gong <103019852+hxeyexn@users.noreply.github.com> Co-authored-by: somin Co-authored-by: Somin Lee <46596035+s6m1n@users.noreply.github.com> * fix: 실패하는 테스트 수정 --------- Co-authored-by: linirini <101927543+linirini@users.noreply.github.com> Co-authored-by: hxeyexn Co-authored-by: YoonJuHo Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> Co-authored-by: Hyeyeon Gong <103019852+hxeyexn@users.noreply.github.com> Co-authored-by: somin Co-authored-by: Somin Lee <46596035+s6m1n@users.noreply.github.com> * deploy: v.1.3.0 배포 준비 #621 (#623) * deploy: 1.2.0 배포 (#512) * fix: 누락된 not 연산자 추가 * refactor: whitelist 추가 #489 (#490) * feat: 인덱스 설정 스크립트 작성 #474 (#475) Co-authored-by: BurningFalls * feat: Bulk Delete 예전 pr 코드 이동 (#487) * refactor: N+1 문제 해결 (#488) * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 * refactor: 반응형 ui 적용 및 접근성 향상 #481 (#502) * ui: login 화면 반응형 ui 대응 * ui: 고유 코드 복구 화면 반응형 ui 대응 * ui: 마이페이지 화면 반응형 ui 대응 * ui: 나의 추억들 화면 반응형 ui 대응 * ui: 추억 화면 반응형 ui 대응 - span count 조정 * refactor: 스타카토 생성 화면 반응형 ui 대응 * refactor: 스타카토 수정 화면 반응형 ui 대응 * refactor: 추억 생성 화면 반응형 ui 대응 * refactor: 추억 수정 화면 반응형 ui 대응 * ui: 다크모드 대응 - colors 대응 - themes 대응 - 지도 대응 * fix: 지도 화면의 구성 변경으로 일어나는 크래시 해결 * ui: 스플래시 다크모드 대응 * feat: 스타카토 마커 커스텀 * ui: 스타카토 마커 다크모드 대응 * feat: 사용자 피드백 수집을 위한 구글 폼 연동 * feat: 인스타그램 페이지 연동 * refactor: 마이페이지 버튼 터치 영역 확대 * refactor: TextInputEditText 터치 영역 확대 * refactor: 추억 기간 선택 box 터치 영역 확대 * refactor: 툴바 수정 및 삭제 메뉴 버튼 터치 영역 확대 * refactor: 마이페이지 인스타그램 버튼 터치 영역 확대 * refactor: 스타카토 장소 선택 box 버튼 터치 영역 확대 * refactor: 스타카토 추억, 날짜 및 시간 선택 box 터치 영역 확대 * ui: typography.Body에 Not.Resizable 추가 * ui: styles에 Not.Resizable 적용 * ui: 스타카토 생성 수정 화면 styles 적용 * ui: 추억 생성 수정 화면 styles 적용 * ui: styles_button.xml에 BoundedIconButtonStyle 추가 * ui: 추억, 타임라인 화면에 BoundedIconButtonStyle 적용 * ui: 타임라인 화면 글씨 크기 조절 대응 * ui: layout_photo_attach.xml 글씨 크기 조절 대응 * ui: 추억 조회 화면 글씨 크기 조절 대응 * ui: 행간 겹침 방지를 위해 lineHeight 단위 sp로 수정 * ui: empty 관련 텍스트 Not.Resizable 설정 * ui: 로그인 및 복구 화면 글씨 크기 조절 대응 * refactor: 홈 화면 content description 추가 * refactor: 나의 추억들 화면 content description 추가 * refactor: 추억 화면 content description 추가 * refactor: 추억 생성 및 수정 화면 content description 추가 * refactor: 스타카토 사진 첨부 item content description 추가 * refactor: 나의 추억들 아이템 중첩된 레이아웃 제거 * refactor: 스타카토 화면 content description 추가 * refactor: 마이페이지 화면 content description 추가 * refactor: 로그인 화면 content description 추가 * refactor: 나의 추억들 item content description 추가 * refactor: 댓글 item content description 추가 * refactor: 함께 한 사람들 item content description 추가 * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 --------- Co-authored-by: somin Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> * hotfix: 이미지 삭제 전파 (#505) * fix: 이미지 삭제 전파 * fix: 이미지 삭제 전파 수정 * feat: 기본 추억 제공 구현 #508 (#509) * feat: 기본 추억 생성 구현 * refactor: 기본 추억 설명 수정 * fix: persist 전파되도록 로직 순서 변경 * fix: file changed 인식 불가로 인한 순서 변경 (#511) --------- Co-authored-by: hxeyexn Co-authored-by: BurningFalls Co-authored-by: YoonJuHo Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> Co-authored-by: Hyeyeon Gong <103019852+hxeyexn@users.noreply.github.com> Co-authored-by: somin * deploy: 1.2.1 배포 (#532) * fix: 누락된 not 연산자 추가 * refactor: whitelist 추가 #489 (#490) * feat: 인덱스 설정 스크립트 작성 #474 (#475) Co-authored-by: BurningFalls * feat: Bulk Delete 예전 pr 코드 이동 (#487) * refactor: N+1 문제 해결 (#488) * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 * refactor: 반응형 ui 적용 및 접근성 향상 #481 (#502) * ui: login 화면 반응형 ui 대응 * ui: 고유 코드 복구 화면 반응형 ui 대응 * ui: 마이페이지 화면 반응형 ui 대응 * ui: 나의 추억들 화면 반응형 ui 대응 * ui: 추억 화면 반응형 ui 대응 - span count 조정 * refactor: 스타카토 생성 화면 반응형 ui 대응 * refactor: 스타카토 수정 화면 반응형 ui 대응 * refactor: 추억 생성 화면 반응형 ui 대응 * refactor: 추억 수정 화면 반응형 ui 대응 * ui: 다크모드 대응 - colors 대응 - themes 대응 - 지도 대응 * fix: 지도 화면의 구성 변경으로 일어나는 크래시 해결 * ui: 스플래시 다크모드 대응 * feat: 스타카토 마커 커스텀 * ui: 스타카토 마커 다크모드 대응 * feat: 사용자 피드백 수집을 위한 구글 폼 연동 * feat: 인스타그램 페이지 연동 * refactor: 마이페이지 버튼 터치 영역 확대 * refactor: TextInputEditText 터치 영역 확대 * refactor: 추억 기간 선택 box 터치 영역 확대 * refactor: 툴바 수정 및 삭제 메뉴 버튼 터치 영역 확대 * refactor: 마이페이지 인스타그램 버튼 터치 영역 확대 * refactor: 스타카토 장소 선택 box 버튼 터치 영역 확대 * refactor: 스타카토 추억, 날짜 및 시간 선택 box 터치 영역 확대 * ui: typography.Body에 Not.Resizable 추가 * ui: styles에 Not.Resizable 적용 * ui: 스타카토 생성 수정 화면 styles 적용 * ui: 추억 생성 수정 화면 styles 적용 * ui: styles_button.xml에 BoundedIconButtonStyle 추가 * ui: 추억, 타임라인 화면에 BoundedIconButtonStyle 적용 * ui: 타임라인 화면 글씨 크기 조절 대응 * ui: layout_photo_attach.xml 글씨 크기 조절 대응 * ui: 추억 조회 화면 글씨 크기 조절 대응 * ui: 행간 겹침 방지를 위해 lineHeight 단위 sp로 수정 * ui: empty 관련 텍스트 Not.Resizable 설정 * ui: 로그인 및 복구 화면 글씨 크기 조절 대응 * refactor: 홈 화면 content description 추가 * refactor: 나의 추억들 화면 content description 추가 * refactor: 추억 화면 content description 추가 * refactor: 추억 생성 및 수정 화면 content description 추가 * refactor: 스타카토 사진 첨부 item content description 추가 * refactor: 나의 추억들 아이템 중첩된 레이아웃 제거 * refactor: 스타카토 화면 content description 추가 * refactor: 마이페이지 화면 content description 추가 * refactor: 로그인 화면 content description 추가 * refactor: 나의 추억들 item content description 추가 * refactor: 댓글 item content description 추가 * refactor: 함께 한 사람들 item content description 추가 * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 --------- Co-authored-by: somin Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> * hotfix: 이미지 삭제 전파 (#505) * fix: 이미지 삭제 전파 * fix: 이미지 삭제 전파 수정 * feat: 기본 추억 제공 구현 #508 (#509) * feat: 기본 추억 생성 구현 * refactor: 기본 추억 설명 수정 * fix: persist 전파되도록 로직 순서 변경 * fix: file changed 인식 불가로 인한 순서 변경 (#511) * feat: 모든 화면에서 네트워크 에러 핸들링 #501 (#516) * fix: ApiResponseHandler try-catch문 범위 수정 * refactor: StaccatoApiService의 반환값 Response로 wrapping * refactor: StaccatoDataSource의 반환값 ResponseResult로 wrapping * refactor: StaccatoRepository의 반환값 ResponseResult로 wrapping * refactor: StaccatoRepository를 사용하는 ViewModel에 에러 처리 변경사항 적용 * feat: MessageUtils.kt에 showSnackBarWithAction 추가 * feat: TimelineFragment 네트워크 에러 발생 시 스낵바 처리 * feat: MemoryFragment 네트워크 에러 발생 시 스낵바 처리 * feat: StaccatoFragment 네트워크 에러 발생 시 스낵바 처리 * refactor: 불필요한 Log.e 메서드 제거 * style: 네트워크 에러 메시지 상수명 통일 * refactor: MessageUtils에 getSnackBarWithAction 메서드 추가 * feat: Memory 생성/수정 화면 에러 핸들링 * feat: Staccato 생성/수정 화면 에러 핸들링 * feat: 마이페이지 화면 네트워크 에러 핸들링 * fix: 스타카토 조회 화면 코멘트 에러 핸들링 * refactor: 추억 에러 관련 data class 리네이밍 Photo -> Thumbnail * refactor: 추억 생성 에러 data class 리네이밍 MemoryCreate -> MemoryCreation * refactor: 메서드명 카멜 케이스로 통일 (reCreate) * refactor: 추억 업데이트 에러 data class 리네이밍 MemoryInitialize -> MemoryInitialization * refactor: getSnackBarWithAction의 length를 named arguments로 수정 * refactor: EXCEPTION_NETWORK_ERROR_MESSAGE 텍스트 내용 수정 * refactor: 이미지 업로드 실패 메시지 상수화 * refactor: StaccatoUpdateViewModel의 메시지 상수화 및 PhotoException 분리 * refactor: 스낵바 Util 불필요한 apply 제거 * build: 안드로이드 CI/CD 재설정 #445 (#513) * build: android ci 타겟 브랜치 변경 - develop-an -> develop 브랜치로 변경 * build: 개발 단계용 android ci, cd 설정 - Debug용 APK 파일이 아닌 Release용 APK 파일을 추출하도록 변경 - gradle assembleRelease : 앱을 release 모드로 빌드, Debug 정보를 포함하지 않기에 용량이 더 적고, 난독화가 적용되어 있다. * build: 개발 단계용 android ci, cd 설정 - 타겟 브랜치 변경 : develop -> release-an 으로 변경 - Debug용 APK 파일이 아닌 Release용 APK 파일을 추출하도록 변경 - gradle assembleRelease : 앱을 release 모드로 빌드, Debug 정보를 포함하지 않기에 용량이 더 적고, 난독화가 적용되어 있다. * build: android ci 워크플로우 이름 변경 * build: android cd 재설정 - 구글 플레이 콘솔 자동 배포 설정 * build: Play Console 배포 설정 변경 - 서비스 계정 Key 파일 secret 변수 변경 - whatsNewDirectory 설정 * build: android ci 적용 브랜치 수정 - release-an 브랜치, main 브랜치 추가 * fix: 안드로이드 CI 오류 수정 #519 (#521) * fix: android-ci.yml 파일 수정 * fix: android-ci.yml 파일 수정 * feat: 나의 추억들 정렬 기능 구현 #503 (#507) * ui: 정렬 메뉴 ui 구현 * feat: 나의 추억들 정렬 기능 구현 * feat: 기간 유무에 따른 추억 필터 기능 구현 * refactor: 정렬 타입에 따른 정렬 선택 로직을 view model이 가지도록 변경 - 정렬 타입과 정렬 menu id를 가지고 있는 SortType Enum Class 생성 * refactor: timeline ui model 셋팅 로직 수정 * refactor: 사용자가 선택한 menuId와 일치하는 SortType을 찾는 로직을 팩토리 함수로 분리 * refactor: 원본 timeline clear 로직 추가 * refactor: 기간 있는 추억 내림차순 정렬 조건 추가 * fix: 추억 삭제 후 나의 추억들(타임라인)이 갱신되지 않는 오류 수정 * fix: 나의 추억들(타임라인) 정렬 시 포커스가 유지되는 문제 해결 * refactor: originalTimeline 타입 변경 * ui: 기분 캐릭터 변경 #522 (#523) * ui: 음표 기분 캐릭터 추가 * refactor: 음표 기분 캐릭터 적용 * feat: 카메라 촬영 기능 연결 #514 (#524) * build: androidx camera 의존성 추가 - 버전 카탈로그 활용 * build: AndroidManifest 카메라 접근 기능 수정 - android.hardware.camera.any 로 설정하여 전, 후면 모두 사용 가능하도록 변경 * ui: 사진 업로드 다이얼로그에서 ㄷ사용할 문자열 리소스 설정 - 권한 관련 안내 메시지 추가 * feat: 카메라 기능 추가 - 접근 권한 확인 후 카메라 실행 - 카메라에서 촬영한 사진을 가져와 Activity에게 이미지 URI 전달 * style: ktlint 적용 * fix: 권한 요청 스낵바와 에러 메시지 스낵바 분리 * ui: 권한 요청 스낵바의 문구 수정 * fix: 외부 저장소 쓰기 권한 추가 * deploy: v.1.2.0 배포 준비 #515 (#525) * refactor: versionCode 및 versionName 업데이트 - versionCode: 4 -> 5 - versionName: "1.1.0" -> "1.2.0" * ui: 마이페이지에 노출될 앱 버전 명 업데이트 - 앱 버전: "1.1.0" -> "1.2.0" * docs: 1.2.0 버전 출시 노트 추가 * deploy: v.1.2.0 배포 (#526) * fix: 누락된 not 연산자 추가 * refactor: whitelist 추가 #489 (#490) * deploy: 1.1.1 배포 #484 (#491) * fix: 누락된 not 연산자 추가 * refactor: whitelist 추가 #489 (#490) --------- Co-authored-by: hxeyexn * feat: 인덱스 설정 스크립트 작성 #474 (#475) Co-authored-by: BurningFalls * feat: Bulk Delete 예전 pr 코드 이동 (#487) * refactor: N+1 문제 해결 (#488) * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 * refactor: 반응형 ui 적용 및 접근성 향상 #481 (#502) * ui: login 화면 반응형 ui 대응 * ui: 고유 코드 복구 화면 반응형 ui 대응 * ui: 마이페이지 화면 반응형 ui 대응 * ui: 나의 추억들 화면 반응형 ui 대응 * ui: 추억 화면 반응형 ui 대응 - span count 조정 * refactor: 스타카토 생성 화면 반응형 ui 대응 * refactor: 스타카토 수정 화면 반응형 ui 대응 * refactor: 추억 생성 화면 반응형 ui 대응 * refactor: 추억 수정 화면 반응형 ui 대응 * ui: 다크모드 대응 - colors 대응 - themes 대응 - 지도 대응 * fix: 지도 화면의 구성 변경으로 일어나는 크래시 해결 * ui: 스플래시 다크모드 대응 * feat: 스타카토 마커 커스텀 * ui: 스타카토 마커 다크모드 대응 * feat: 사용자 피드백 수집을 위한 구글 폼 연동 * feat: 인스타그램 페이지 연동 * refactor: 마이페이지 버튼 터치 영역 확대 * refactor: TextInputEditText 터치 영역 확대 * refactor: 추억 기간 선택 box 터치 영역 확대 * refactor: 툴바 수정 및 삭제 메뉴 버튼 터치 영역 확대 * refactor: 마이페이지 인스타그램 버튼 터치 영역 확대 * refactor: 스타카토 장소 선택 box 버튼 터치 영역 확대 * refactor: 스타카토 추억, 날짜 및 시간 선택 box 터치 영역 확대 * ui: typography.Body에 Not.Resizable 추가 * ui: styles에 Not.Resizable 적용 * ui: 스타카토 생성 수정 화면 styles 적용 * ui: 추억 생성 수정 화면 styles 적용 * ui: styles_button.xml에 BoundedIconButtonStyle 추가 * ui: 추억, 타임라인 화면에 BoundedIconButtonStyle 적용 * ui: 타임라인 화면 글씨 크기 조절 대응 * ui: layout_photo_attach.xml 글씨 크기 조절 대응 * ui: 추억 조회 화면 글씨 크기 조절 대응 * ui: 행간 겹침 방지를 위해 lineHeight 단위 sp로 수정 * ui: empty 관련 텍스트 Not.Resizable 설정 * ui: 로그인 및 복구 화면 글씨 크기 조절 대응 * refactor: 홈 화면 content description 추가 * refactor: 나의 추억들 화면 content description 추가 * refactor: 추억 화면 content description 추가 * refactor: 추억 생성 및 수정 화면 content description 추가 * refactor: 스타카토 사진 첨부 item content description 추가 * refactor: 나의 추억들 아이템 중첩된 레이아웃 제거 * refactor: 스타카토 화면 content description 추가 * refactor: 마이페이지 화면 content description 추가 * refactor: 로그인 화면 content description 추가 * refactor: 나의 추억들 item content description 추가 * refactor: 댓글 item content description 추가 * refactor: 함께 한 사람들 item content description 추가 * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 --------- Co-authored-by: somin Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> * deploy: 1.1.2 배포 (#504) * fix: 누락된 not 연산자 추가 * refactor: whitelist 추가 #489 (#490) * feat: 인덱스 설정 스크립트 작성 #474 (#475) Co-authored-by: BurningFalls * feat: Bulk Delete 예전 pr 코드 이동 (#487) * refactor: N+1 문제 해결 (#488) * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 * refactor: 반응형 ui 적용 및 접근성 향상 #481 (#502) * ui: login 화면 반응형 ui 대응 * ui: 고유 코드 복구 화면 반응형 ui 대응 * ui: 마이페이지 화면 반응형 ui 대응 * ui: 나의 추억들 화면 반응형 ui 대응 * ui: 추억 화면 반응형 ui 대응 - span count 조정 * refactor: 스타카토 생성 화면 반응형 ui 대응 * refactor: 스타카토 수정 화면 반응형 ui 대응 * refactor: 추억 생성 화면 반응형 ui 대응 * refactor: 추억 수정 화면 반응형 ui 대응 * ui: 다크모드 대응 - colors 대응 - themes 대응 - 지도 대응 * fix: 지도 화면의 구성 변경으로 일어나는 크래시 해결 * ui: 스플래시 다크모드 대응 * feat: 스타카토 마커 커스텀 * ui: 스타카토 마커 다크모드 대응 * feat: 사용자 피드백 수집을 위한 구글 폼 연동 * feat: 인스타그램 페이지 연동 * refactor: 마이페이지 버튼 터치 영역 확대 * refactor: TextInputEditText 터치 영역 확대 * refactor: 추억 기간 선택 box 터치 영역 확대 * refactor: 툴바 수정 및 삭제 메뉴 버튼 터치 영역 확대 * refactor: 마이페이지 인스타그램 버튼 터치 영역 확대 * refactor: 스타카토 장소 선택 box 버튼 터치 영역 확대 * refactor: 스타카토 추억, 날짜 및 시간 선택 box 터치 영역 확대 * ui: typography.Body에 Not.Resizable 추가 * ui: styles에 Not.Resizable 적용 * ui: 스타카토 생성 수정 화면 styles 적용 * ui: 추억 생성 수정 화면 styles 적용 * ui: styles_button.xml에 BoundedIconButtonStyle 추가 * ui: 추억, 타임라인 화면에 BoundedIconButtonStyle 적용 * ui: 타임라인 화면 글씨 크기 조절 대응 * ui: layout_photo_attach.xml 글씨 크기 조절 대응 * ui: 추억 조회 화면 글씨 크기 조절 대응 * ui: 행간 겹침 방지를 위해 lineHeight 단위 sp로 수정 * ui: empty 관련 텍스트 Not.Resizable 설정 * ui: 로그인 및 복구 화면 글씨 크기 조절 대응 * refactor: 홈 화면 content description 추가 * refactor: 나의 추억들 화면 content description 추가 * refactor: 추억 화면 content description 추가 * refactor: 추억 생성 및 수정 화면 content description 추가 * refactor: 스타카토 사진 첨부 item content description 추가 * refactor: 나의 추억들 아이템 중첩된 레이아웃 제거 * refactor: 스타카토 화면 content description 추가 * refactor: 마이페이지 화면 content description 추가 * refactor: 로그인 화면 content description 추가 * refactor: 나의 추억들 item content description 추가 * refactor: 댓글 item content description 추가 * refactor: 함께 한 사람들 item content description 추가 * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 --------- Co-authored-by: somin Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> --------- Co-authored-by: hxeyexn Co-authored-by: linirini <101927543+linirini@users.noreply.github.com> Co-authored-by: YoonJuHo Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> Co-authored-by: Hyeyeon Gong <103019852+hxeyexn@users.noreply.github.com> Co-authored-by: somin * hotfix: 이미지 삭제 전파 (#505) * fix: 이미지 삭제 전파 * fix: 이미지 삭제 전파 수정 * deploy: 1.1.3 배포 (#506) * fix: 누락된 not 연산자 추가 * refactor: whitelist 추가 #489 (#490) * feat: 인덱스 설정 스크립트 작성 #474 (#475) Co-authored-by: BurningFalls * feat: Bulk Delete 예전 pr 코드 이동 (#487) * refactor: N+1 문제 해결 (#488) * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 * refactor: 반응형 ui 적용 및 접근성 향상 #481 (#502) * ui: login 화면 반응형 ui 대응 * ui: 고유 코드 복구 화면 반응형 ui 대응 * ui: 마이페이지 화면 반응형 ui 대응 * ui: 나의 추억들 화면 반응형 ui 대응 * ui: 추억 화면 반응형 ui 대응 - span count 조정 * refactor: 스타카토 생성 화면 반응형 ui 대응 * refactor: 스타카토 수정 화면 반응형 ui 대응 * refactor: 추억 생성 화면 반응형 ui 대응 * refactor: 추억 수정 화면 반응형 ui 대응 * ui: 다크모드 대응 - colors 대응 - themes 대응 - 지도 대응 * fix: 지도 화면의 구성 변경으로 일어나는 크래시 해결 * ui: 스플래시 다크모드 대응 * feat: 스타카토 마커 커스텀 * ui: 스타카토 마커 다크모드 대응 * feat: 사용자 피드백 수집을 위한 구글 폼 연동 * feat: 인스타그램 페이지 연동 * refactor: 마이페이지 버튼 터치 영역 확대 * refactor: TextInputEditText 터치 영역 확대 * refactor: 추억 기간 선택 box 터치 영역 확대 * refactor: 툴바 수정 및 삭제 메뉴 버튼 터치 영역 확대 * refactor: 마이페이지 인스타그램 버튼 터치 영역 확대 * refactor: 스타카토 장소 선택 box 버튼 터치 영역 확대 * refactor: 스타카토 추억, 날짜 및 시간 선택 box 터치 영역 확대 * ui: typography.Body에 Not.Resizable 추가 * ui: styles에 Not.Resizable 적용 * ui: 스타카토 생성 수정 화면 styles 적용 * ui: 추억 생성 수정 화면 styles 적용 * ui: styles_button.xml에 BoundedIconButtonStyle 추가 * ui: 추억, 타임라인 화면에 BoundedIconButtonStyle 적용 * ui: 타임라인 화면 글씨 크기 조절 대응 * ui: layout_photo_attach.xml 글씨 크기 조절 대응 * ui: 추억 조회 화면 글씨 크기 조절 대응 * ui: 행간 겹침 방지를 위해 lineHeight 단위 sp로 수정 * ui: empty 관련 텍스트 Not.Resizable 설정 * ui: 로그인 및 복구 화면 글씨 크기 조절 대응 * refactor: 홈 화면 content description 추가 * refactor: 나의 추억들 화면 content description 추가 * refactor: 추억 화면 content description 추가 * refactor: 추억 생성 및 수정 화면 content description 추가 * refactor: 스타카토 사진 첨부 item content description 추가 * refactor: 나의 추억들 아이템 중첩된 레이아웃 제거 * refactor: 스타카토 화면 content description 추가 * refactor: 마이페이지 화면 content description 추가 * refactor: 로그인 화면 content description 추가 * refactor: 나의 추억들 item content description 추가 * refactor: 댓글 item content description 추가 * refactor: 함께 한 사람들 item content description 추가 * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 --------- Co-authored-by: somin Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> * hotfix: 이미지 삭제 전파 (#505) * fix: 이미지 삭제 전파 * fix: 이미지 삭제 전파 수정 --------- Co-authored-by: hxeyexn Co-authored-by: linirini <101927543+linirini@users.noreply.github.com> Co-authored-by: BurningFalls Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> Co-authored-by: Hyeyeon Gong <103019852+hxeyexn@users.noreply.github.com> Co-authored-by: somin * feat: 기본 추억 제공 구현 #508 (#509) * feat: 기본 추억 생성 구현 * refactor: 기본 추억 설명 수정 * fix: persist 전파되도록 로직 순서 변경 * deploy: 1.2.0 배포 (#510) * fix: 누락된 not 연산자 추가 * refactor: whitelist 추가 #489 (#490) * feat: 인덱스 설정 스크립트 작성 #474 (#475) Co-authored-by: BurningFalls * feat: Bulk Delete 예전 pr 코드 이동 (#487) * refactor: N+1 문제 해결 (#488) * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 * refactor: 반응형 ui 적용 및 접근성 향상 #481 (#502) * ui: login 화면 반응형 ui 대응 * ui: 고유 코드 복구 화면 반응형 ui 대응 * ui: 마이페이지 화면 반응형 ui 대응 * ui: 나의 추억들 화면 반응형 ui 대응 * ui: 추억 화면 반응형 ui 대응 - span count 조정 * refactor: 스타카토 생성 화면 반응형 ui 대응 * refactor: 스타카토 수정 화면 반응형 ui 대응 * refactor: 추억 생성 화면 반응형 ui 대응 * refactor: 추억 수정 화면 반응형 ui 대응 * ui: 다크모드 대응 - colors 대응 - themes 대응 - 지도 대응 * fix: 지도 화면의 구성 변경으로 일어나는 크래시 해결 * ui: 스플래시 다크모드 대응 * feat: 스타카토 마커 커스텀 * ui: 스타카토 마커 다크모드 대응 * feat: 사용자 피드백 수집을 위한 구글 폼 연동 * feat: 인스타그램 페이지 연동 * refactor: 마이페이지 버튼 터치 영역 확대 * refactor: TextInputEditText 터치 영역 확대 * refactor: 추억 기간 선택 box 터치 영역 확대 * refactor: 툴바 수정 및 삭제 메뉴 버튼 터치 영역 확대 * refactor: 마이페이지 인스타그램 버튼 터치 영역 확대 * refactor: 스타카토 장소 선택 box 버튼 터치 영역 확대 * refactor: 스타카토 추억, 날짜 및 시간 선택 box 터치 영역 확대 * ui: typography.Body에 Not.Resizable 추가 * ui: styles에 Not.Resizable 적용 * ui: 스타카토 생성 수정 화면 styles 적용 * ui: 추억 생성 수정 화면 styles 적용 * ui: styles_button.xml에 BoundedIconButtonStyle 추가 * ui: 추억, 타임라인 화면에 BoundedIconButtonStyle 적용 * ui: 타임라인 화면 글씨 크기 조절 대응 * ui: layout_photo_attach.xml 글씨 크기 조절 대응 * ui: 추억 조회 화면 글씨 크기 조절 대응 * ui: 행간 겹침 방지를 위해 lineHeight 단위 sp로 수정 * ui: empty 관련 텍스트 Not.Resizable 설정 * ui: 로그인 및 복구 화면 글씨 크기 조절 대응 * refactor: 홈 화면 content description 추가 * refactor: 나의 추억들 화면 content description 추가 * refactor: 추억 화면 content description 추가 * refactor: 추억 생성 및 수정 화면 content description 추가 * refactor: 스타카토 사진 첨부 item content description 추가 * refactor: 나의 추억들 아이템 중첩된 레이아웃 제거 * refactor: 스타카토 화면 content description 추가 * refactor: 마이페이지 화면 content description 추가 * refactor: 로그인 화면 content description 추가 * refactor: 나의 추억들 item content description 추가 * refactor: 댓글 item content description 추가 * refactor: 함께 한 사람들 item content description 추가 * fix: 스타카토 댓글 UI 오류 해결 및 개선 #493 (#494) * ui: 스타카토 조회 오류 메시지를 strings 리소스에 작성 * ui: 키보드 입력 시 MainActivity의 화면 크기 조정되도록 변경 - MainActivity에 windowSoftInputMode를 adjustPan으로 설정 * refactor: 댓글과 조회 Fragment 병합 및 댓글 화면 개선 StaccatoFragment - 메서드 순서 조정 및 이름 변경 - staccatoId를 lazy 로 지연초기화하여 받아오도록 수정 - 댓글 ViewModel과 Adapter 추가 및 연결 - 댓글 업로드 시 스크롤 뷰의 스크롤을 하단으로 옮기도록 구현 StaccatoCommentsViewModel - 댓글 전송 성공한 상태를 저장하는 LiveData 추가 - Staccato ID 기본값 상수화 fragment_staccato.xml - 댓글 화면 마이그레이션 - 댓글 입력 창을 화면 최하단에 고정 - 전송 버튼 UI 오류 수정: 고정된 크기 * refactor: 기분 선택 fragment 리팩터링 진행 * refactor: 사용하지 않는 댓글 Fragment 제거 * ui: 댓글 전송 버튼 디자인 변경 - 이미지에서 Vector drawable 로 변경 - 색상 수정 * style: ktlint 적용 * refactor: StaccatoFragment 코드 정리 - onViewCreated의 함수 호출 순서대로 메서드 정렬 - pagePhotoAdapter 초기화를 lateinit에서 by lazy로 변경 - 메서드명 수정 - setUpBindings -> setUpBindings - initToolbarHandler -> setNavigationClickListener - initViewPagerAdapter -> setUpViewPager - loadStaccatoData -> loadStaccato * refactor: 메서드 순서를 컨벤션에 맞게 정렬 * refactor: 댓글 ViewModel의 스타카토 ID 설정 로직 수정 - Fragment가 댓글을 불러오는 동작을 알 필요가 없고, ViewModel에게 일일히 지시할 필요가 없다. - Fragment는 스타카토의 ID를 넘겨주기만 하고, ViewModel이 스타카토 ID를 알아서 설정하도록 변경 * refactor: ViewModel을 옵저빙하는 메서드 세분화 - StaccatoViewModel과 StaccatoCommentsViewModel을 옵저빙하는 메서드를 세분화 * refactor: StaccatoFeelingFragment 설정하는 메서드 리팩터링 - 메서드명 변경 : setStaccatoIdToFeelingFragment -> setStaccatoFeelingFragment - Fragment 생성 로직과 fragmentManager에 add하는 동작 분리 * ui: 댓글 입력 창과 전송 버튼 수정 - 댓글 전송 버튼의 크기를 줄이되, padding 설정으로 터치 영역 크기는 그대로 유지 - 댓글 전송 버튼의 제약 조건 수정하여 댓글 입력 창 내부에 위치하도록 변경 - 댓글 입력 창의 textAppearance 설정으로 텍스트 크기 고정 - 댓글 입력 창의 제약 조건 수정하여 전송 버튼을 감싸도록 수정 * ui: 가시성을 변경하는 바인딩어댑터 적용 * ui: viewTreeObserver 의 GlobalLayoutListener 제거 시점 변경 * ui: 댓글 전송 버튼을 텍스트 필드 범위의 바깥으로 이동 * style: ktlint 적용 --------- Co-authored-by: somin Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> * hotfix: 이미지 삭제 전파 (#505) * fix: 이미지 삭제 전파 * fix: 이미지 삭제 전파 수정 * feat: 기본 추억 제공 구현 #508 (#509) * feat: 기본 추억 생성 구현 * refactor: 기본 추억 설명 수정 * fix: persist 전파되도록 로직 순서 변경 --------- Co-authored-by: hxeyexn Co-authored-by: BurningFalls Co-authored-by: YoonJuHo Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> Co-authored-by: Hyeyeon Gong <103019852+hxeyexn@users.noreply.github.com> Co-authored-by: somin * fix: file changed 인식 불가로 인한 순서 변경 (#511) * feat: 모든 화면에서 네트워크 에러 핸들링 #501 (#516) * fix: ApiResponseHandler try-catch문 범위 수정 * refactor: StaccatoApiService의 반환값 Response로 wrapping * refactor: StaccatoDataSource의 반환값 ResponseResult로 wrapping * refactor: StaccatoRepository의 반환값 ResponseResult로 wrapping * refactor: StaccatoRepository를 사용하는 ViewModel에 에러 처리 변경사항 적용 * feat: MessageUtils.kt에 showSnackBarWithAction 추가 * feat: TimelineFragment 네트워크 에러 발생 시 스낵바 처리 * feat: MemoryFragment 네트워크 에러 발생 시 스낵바 처리 * feat: StaccatoFragment 네트워크 에러 발생 시 스낵바 처리 * refactor: 불필요한 Log.e 메서드 제거 * style: 네트워크 에러 메시지 상수명 통일 * refactor: MessageUtils에 getSnackBarWithAction 메서드 추가 * feat: Memory 생성/수정 화면 에러 핸들링 * feat: Staccato 생성/수정 화면 에러 핸들링 * feat: 마이페이지 화면 네트워크 에러 핸들링 * fix: 스타카토 조회 화면 코멘트 에러 핸들링 * refactor: 추억 에러 관련 data class 리네이밍 Photo -> Thumbnail * refactor: 추억 생성 에러 data class 리네이밍 MemoryCreate -> MemoryCreation * refactor: 메서드명 카멜 케이스로 통일 (reCreate) * refactor: 추억 업데이트 에러 data class 리네이밍 MemoryInitialize -> MemoryInitialization * refactor: getSnackBarWithAction의 length를 named arguments로 수정 * refactor: EXCEPTION_NETWORK_ERROR_MESSAGE 텍스트 내용 수정 * refactor: 이미지 업로드 실패 메시지 상수화 * refactor: StaccatoUpdateViewModel의 메시지 상수화 및 PhotoException 분리 * refactor: 스낵바 Util 불필요한 apply 제거 * build: 안드로이드 CI/CD 재설정 #445 (#513) * build: android ci 타겟 브랜치 변경 - develop-an -> develop 브랜치로 변경 * build: 개발 단계용 android ci, cd 설정 - Debug용 APK 파일이 아닌 Release용 APK 파일을 추출하도록 변경 - gradle assembleRelease : 앱을 release 모드로 빌드, Debug 정보를 포함하지 않기에 용량이 더 적고, 난독화가 적용되어 있다. * build: 개발 단계용 android ci, cd 설정 - 타겟 브랜치 변경 : develop -> release-an 으로 변경 - Debug용 APK 파일이 아닌 Release용 APK 파일을 추출하도록 변경 - gradle assembleRelease : 앱을 release 모드로 빌드, Debug 정보를 포함하지 않기에 용량이 더 적고, 난독화가 적용되어 있다. * build: android ci 워크플로우 이름 변경 * build: android cd 재설정 - 구글 플레이 콘솔 자동 배포 설정 * build: Play Console 배포 설정 변경 - 서비스 계정 Key 파일 secret 변수 변경 - whatsNewDirectory 설정 * build: android ci 적용 브랜치 수정 - release-an 브랜치, main 브랜치 추가 * fix: 안드로이드 CI 오류 수정 #519 (#521) * fix: android-ci.yml 파일 수정 * fix: android-ci.yml 파일 수정 * feat: 나의 추억들 정렬 기능 구현 #503 (#507) * ui: 정렬 메뉴 ui 구현 * feat: 나의 추억들 정렬 기능 구현 * feat: 기간 유무에 따른 추억 필터 기능 구현 * refactor: 정렬 타입에 따른 정렬 선택 로직을 view model이 가지도록 변경 - 정렬 타입과 정렬 menu id를 가지고 있는 SortType Enum Class 생성 * refactor: timeline ui model 셋팅 로직 수정 * refactor: 사용자가 선택한 menuId와 일치하는 SortType을 찾는 로직을 팩토리 함수로 분리 * refactor: 원본 timeline clear 로직 추가 * refactor: 기간 있는 추억 내림차순 정렬 조건 추가 * fix: 추억 삭제 후 나의 추억들(타임라인)이 갱신되지 않는 오류 수정 * fix: 나의 추억들(타임라인) 정렬 시 포커스가 유지되는 문제 해결 * refactor: originalTimeline 타입 변경 * ui: 기분 캐릭터 변경 #522 (#523) * ui: 음표 기분 캐릭터 추가 * refactor: 음표 기분 캐릭터 적용 * feat: 카메라 촬영 기능 연결 #514 (#524) * build: androidx camera 의존성 추가 - 버전 카탈로그 활용 * build: AndroidManifest 카메라 접근 기능 수정 - android.hardware.camera.any 로 설정하여 전, 후면 모두 사용 가능하도록 변경 * ui: 사진 업로드 다이얼로그에서 ㄷ사용할 문자열 리소스 설정 - 권한 관련 안내 메시지 추가 * feat: 카메라 기능 추가 - 접근 권한 확인 후 카메라 실행 - 카메라에서 촬영한 사진을 가져와 Activity에게 이미지 URI 전달 * style: ktlint 적용 * fix: 권한 요청 스낵바와 에러 메시지 스낵바 분리 * ui: 권한 요청 스낵바의 문구 수정 * fix: 외부 저장소 쓰기 권한 추가 * deploy: v.1.2.0 배포 준비 #515 (#525) * refactor: versionCode 및 versionName 업데이트 - versionCode: 4 -> 5 - versionName: "1.1.0" -> "1.2.0" * ui: 마이페이지에 노출될 앱 버전 명 업데이트 - 앱 버전: "1.1.0" -> "1.2.0" * docs: 1.2.0 버전 출시 노트 추가 --------- Co-authored-by: hxeyexn Co-authored-by: linirini <101927543+linirini@users.noreply.github.com> Co-authored-by: BurningFalls Co-authored-by: YoonJuHo Co-authored-by: Hyeyeon Gong <103019852+hxeyexn@users.noreply.github.com> Co-authored-by: somin Co-authored-by: linirini <2001yerin@naver.com> Co-authored-by: Somin Lee <46596035+s6m1n@users.noreply.github.com> * fix: Android CD 수정 #527 (#528) * fix: push branch 에 release-an 추가 * fix: 출시 노트 옵션 파일경로 수정 * chore: Thread, Hikari CP 변경 (#518) * feat: Hikari CP, Thread 설정 변경 * fix: writer, reader에 각각 hikari 설정 * feat: 기본 추억 제목 변경 #530 (#531) * feat: 기본 추억 이름을 ~의 추억으로 설정 * refactor: 변수 사용 --------- Co-authored-by: hxeyexn Co-authored-by: BurningFalls Co-authored-by: YoonJuHo Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> Co-authored-by: Hyeyeon Gong <103019852+hxeyexn@users.noreply.github.com> Co-authored-by: somin Co-authored-by: Somin Lee <46596035+s6m1n@users.noreply.github.com> * refactor: 커밋 되살리기 --------- Co-authored-by: linirini <101927543+linirini@users.noreply.github.com> Co-authored-by: hxeyexn Co-authored-by: YoonJuHo Co-authored-by: hodu <92203597+Junyoung-WON@users.noreply.github.com> Co-authored-by: Hyeyeon Gong <103019852+hxeyexn@users.noreply.github.com> Co-authored-by: somin Co-authored-by: Somin Lee <46596035+s6m1n@users.noreply.github.com> * build: Android CI&CD 수정 #624 (#625) build: upload-artifact 버전 업그레이드 * deploy: v.1.3.0 배포(new) #627 (#629) * docs: 1.3.0 출시 노트 수정 - 기능 변경에 대한 내용을 사용자 입장에서 더 이해하기 쉽게 수정 * refactor: WebViewActivity를 실행하는 launch 메서드 작성 - WebViewActivity를 실행할 context와 url, 페이지 제목을 전달한다. * style: ktlint 적용 --------- Co-authored-by: hxeyexn Co-authored-by: linirini <101927543+linirini@users.noreply.github.com> Co-authored-by: BurningFalls Co-authored-by: YoonJuHo Co-authored-by: Hyeyeon Gong <103019852+hxeyexn@users.noreply.github.com> Co-authored-by: somin Co-authored-by: linirini <2001yerin@naver.com> Co-authored-by: Somin Lee <46596035+s6m1n@users.noreply.github.com> --- .../staccato/presentation/mypage/MyPageActivity.kt | 8 +------- .../presentation/webview/WebViewActivity.kt | 14 ++++++++++++++ android/Staccato_AN/deploy/whatsnew/whatsnew-ko-KR | 4 ++-- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/android/Staccato_AN/app/src/main/java/com/on/staccato/presentation/mypage/MyPageActivity.kt b/android/Staccato_AN/app/src/main/java/com/on/staccato/presentation/mypage/MyPageActivity.kt index f542efbba..afcec3e95 100644 --- a/android/Staccato_AN/app/src/main/java/com/on/staccato/presentation/mypage/MyPageActivity.kt +++ b/android/Staccato_AN/app/src/main/java/com/on/staccato/presentation/mypage/MyPageActivity.kt @@ -21,8 +21,6 @@ import com.on.staccato.presentation.util.IMAGE_FORM_DATA_NAME import com.on.staccato.presentation.util.convertCategoryUriToFile import com.on.staccato.presentation.util.showToast import com.on.staccato.presentation.webview.WebViewActivity -import com.on.staccato.presentation.webview.WebViewActivity.Companion.EXTRA_TOOLBAR_TITLE -import com.on.staccato.presentation.webview.WebViewActivity.Companion.EXTRA_URL import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint @@ -59,11 +57,7 @@ class MyPageActivity : } override fun onPrivacyPolicyClicked() { - val intent = - Intent(this, WebViewActivity::class.java) - .putExtra(EXTRA_URL, PRIVACY_POLICY_URL) - .putExtra(EXTRA_TOOLBAR_TITLE, getString(R.string.mypage_privacy_policy)) - startActivity(intent) + WebViewActivity.launch(this, PRIVACY_POLICY_URL, getString(R.string.mypage_privacy_policy)) } override fun onFeedbackClicked() { diff --git a/android/Staccato_AN/app/src/main/java/com/on/staccato/presentation/webview/WebViewActivity.kt b/android/Staccato_AN/app/src/main/java/com/on/staccato/presentation/webview/WebViewActivity.kt index c1ed6a970..d310c7539 100644 --- a/android/Staccato_AN/app/src/main/java/com/on/staccato/presentation/webview/WebViewActivity.kt +++ b/android/Staccato_AN/app/src/main/java/com/on/staccato/presentation/webview/WebViewActivity.kt @@ -1,5 +1,7 @@ package com.on.staccato.presentation.webview +import android.content.Context +import android.content.Intent import android.os.Bundle import android.webkit.WebView import android.webkit.WebViewClient @@ -53,5 +55,17 @@ class WebViewActivity : const val EXTRA_TOOLBAR_TITLE = "toolbar_title" const val EXTRA_URL = "url" private const val DEFAULT_WEBVIEW_TEXT_SIZE = 100 + + fun launch( + context: Context, + url: String, + toolbarTitle: String, + ) { + val intent = + Intent(context, WebViewActivity::class.java) + .putExtra(EXTRA_URL, url) + .putExtra(EXTRA_TOOLBAR_TITLE, toolbarTitle) + context.startActivity(intent) + } } } diff --git a/android/Staccato_AN/deploy/whatsnew/whatsnew-ko-KR b/android/Staccato_AN/deploy/whatsnew/whatsnew-ko-KR index 21d8c114e..e2533d34e 100644 --- a/android/Staccato_AN/deploy/whatsnew/whatsnew-ko-KR +++ b/android/Staccato_AN/deploy/whatsnew/whatsnew-ko-KR @@ -1,11 +1,11 @@ [1.3.0] 버전 업데이트 내용 (2025.02.06) 이제 "추억"의 이름이 "카테고리"로 변경되었어요! -걱정마세요! 이전에 남아있던 추억과 스타카토는 모두 그대로에요. +걱정마세요. 이전에 기록했던 추억과 스타카토는 그대로 남아있어요! [UI 개선] 스타카토를 생성하고 수정하는 화면을 개선했어요. - - 방문 일시와 카테고리를 선택하는 창을 분리했어요. + - 방문 일시와 카테고리를 선택하는 버튼의 순서를 바꾸었어요. [버그 수정] 스타카토에 사진을 첨부하는 버튼의 버그를 수정했어요.