Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

[Update] Weekly9 과제 제출 #100

Merged
merged 24 commits into from
Nov 1, 2024
Merged

[Update] Weekly9 과제 제출 #100

merged 24 commits into from
Nov 1, 2024

Conversation

aengzu
Copy link
Contributor

@aengzu aengzu commented Nov 1, 2024

🔎 작업 내용

Weekly8 코드 리뷰에 대한 피드백 반영 & 즐겨찾기 화면 제작 & 주석 기능(미완성)을 작업하였습니다.

💬 리뷰 요구사항 (선택)

  1. 아래 리뷰 받고 싶은 부분 동영상을 보면 텍스트 버튼이 텍스트 추가텍스트 편집바 토글 두 가지 역할을 담당하다보니 사용성이 떨어진다는 느낌을 받았습니다. 관련해서 어떠한 해결 방법을 채택하면 좋을까요?
    1. 텍스트 버튼을 누르면 텍스트 편집바 만 토글되도록 하며 -> 텍스트 추가는 텍스트 편집바 에서 가능하도록 버튼(아이콘)을 추가한다
    1. 텍스트 버튼을 누르면 텍스트만 추가되며, 해당 텍스트 를 누르면 텍스트 편집바 가 표시되도록 한다.
    1. 제3의 방법
  1. 주석을 관리하기 위해 PdfEditor 은 주석의 PDF 주석의 UI적 요소(상자 추가 및 이동 등)를 처리하며, PdfPageViewModel에서는 각 페이지에서 주석의 데이터 처리(스토리지 저장 및 로드)를 담당하고 있습니다. 파일이 많아지니 확실히 복잡해지는 것 같습니다. 주석을 처리하기 위해 PdfEditor (UI적 요소 처리) 와 PdfViewModel (데이터적 요소 처리) 로 나눴는데 이에 관한 의견을 듣고 싶습니다!

정리하면 PdfEditor는 PDF 페이지 UI에 텍스트 상자를 추가 및 이동을 담당하며, 데이터와는 연관되지 않고 있고, PdfPageViewModel은 개별 페이지의 주석 데이터를 관리하며, (서버 및 로컬으로부터) 주석의 추가와 불러오기를 처리합니다.
PdfPageFragment는 개별 페이지를 나타내며, 여기서 ViewModel 과 PdfEditor 을 통해 주석 데이터와 UI를 연결하여 페이지별 주석 표시를 담당합니다. PdfViewerFragment는 여러 PdfPageFragment를 포함하는 컨테이너입니다. (어답터를 사용)

  1. 현재 페이지를 넘기면 [(1). 기존에 화면에 있던 주석들을 삭제한다. (2). 로컬 또는 서버에서 주석 정보를 가져와서 해당 페이지에 기존에 있던 주석들을 로드한다. (3). 주석을 추가하면 이를 바로 UI에 추가하고 + 로컬 및 서버에 주석을 저장한다. ] 의 플로우로 되어있습니다. 해당 플로우가 괜찮을 지 궁금합니다.
  1. 또한 서버에서 documentId 로 해당 document 에 대해 모든 주석을 조회하는 API 는 있지만 (https://www.notion.so/351aaf0cfd6b464194f18ddcc425e2e5) document에서 페이지별로 주석을 조회하는 API 는 따로 없는 상태에서 각 페이지 별로 주석을 띄운다고 할 때 어떤 방식이 권장될까요?
    (1) PDF 에 들어가면 가장 처음에 서버에 모든 주석 조회를 요청 후 이를 local DB 에 copy 를 해두고 시작한다 (2) 서버에 페이지별로 주석을 조회하는 API 를 생성해달라고 요청한 후 해당 페이지에 진입 시 그 때마다 서버에 주석 요청을 보낸다.
  1. 지난번에 Sidebar Bug([Bug] 사이드탭 페이지 번호 초기화 오류 (해결✅) #84) 에 대한 리뷰도 받았는데 리뷰 받은 대로 SharedViewModel 을 써서 했는데 AI 탭 전환 시 값이 안넘어 오는 거 같아 이 부분은 더 조사해야할 것 같습니다. 시간이 걸릴 것 같아서 우선 다른 작업들 먼저 PR 올리겠습니다 ㅠㅠ (아래 관련 로그 사진 첨부했습니다)

📸 이미지 첨부 (선택)

  • 리뷰 받고 싶은 부분 (리뷰 1번)
  • 텍스트 를 누르면 텍스트 박스가 생성됩니다 동시에 텍스트 편집바가 눈에 보이게 됩니다. 다시 한 번 텍스트를 누르면 텍스트 편집바가 눈에 안보이게 됩니다. 여기서 다시 텍스트를 누르면 텍스트 편집바가 눈에 보이게 되며 다시 텍스트 박스가 생성됩니다.
UI.mp4
  • 리뷰 5번 관련 로그
  • 주석 추가 (현재 화면에 다음처럼 띄우기 & 드래그까지 구현 / 세부적인 텍스트 편집 로직은 아직 X )
  • 텍스트 버튼 클릭 시 텍스트 편집바가 화면에 표시됩니다
default.mp4
  • 녹음 도중 발생한 PageEvent Room 에 저장 (리팩토링)
    image
  • 주석 Annotation Room 에 저장 (아직 세부적으로 위치나 width, height 정보를 가져오는 로직은 구현하지 못했습니다)
    image

➕ 이슈 링크

aengzu and others added 24 commits October 24, 2024 15:44
*NotetakingViewModel에 documnetId, FileName, FileUri 관리
*메서드 분리
*NotetakingActivity의 툴바에서 녹음 버튼 클릭 -> 녹음 상태 활성화 ->
SidebarFragment 로 녹음 시작 이벤트 전달 -> SidebarFragment 에서 하위 탭인
RecordFragment 로 녹음 시작 이벤트 전달 -> RecordViewModel 의 startRecording()
	호출 -> RecordingService 에서 MediaRecorder 사용해서 앱 내부 저장소에 녹음
	파일 저장
*실제로 녹음을 앱 내에서 재생을 할 지 서버에 전송만 하고 녹음 파일을 삭제할
지는 해봐야 알 것 같습니다.
*녹음 버튼 클릭 시 UI표시 ->  권한 확인 -> 녹음 시작
*RecordingService 를 통해 녹음 관리
*녹음 도중에 페이지 이동 이벤트 발생시 로컬에 파일로 기록 (이전페이지,
		현재페이지, 현재시간-시작시간)
*녹음 버튼 다시 클릭 시 녹음 종료 UI 표시 -> 녹음 로컬에 저장 -> 서버에 녹음
업로드 -> 로컬에 있는 페이지 이동 이벤트 파일 삭제 -> 로컬에 있는 녹음 파일
삭제
[Design] 즐겨찾기 화면 제작
[Refactor] Weekly8 피드백 반영
*중간에 버그를 잡는 과정에서 코드가 많이 수정된 것 같습니다.
*기능 구현이 완료되진 않았지만 리뷰를 위해 PR 보내겠습니다
*현재 텍스트 버튼 누르면 -> 텍스트 편집바가 토글되며 -> 텍스트 편집바가 새로
생기는 경우에는 '주석' 이 추가가 되며 local DB 에 저장하는 부분까지
구현되었습니다
*테스트 정도의 수준으로 DB 저장 시 위치, width, height 는 아직 저장이 안되며,
	제출물 제출 후 주말에 작업 예정입니다.
*드래그 시 화면 페이지 이동이 같이 되는 버그는 해결했습니다
[Feat] 주석 기능(화면에 띄우는 정도로만) 구현
@aengzu aengzu added the 📤 Update 상위 브랜치에 작업 상황 업데이트 시 label Nov 1, 2024
@aengzu aengzu marked this pull request as ready for review November 1, 2024 13:06
@aengzu aengzu merged commit f1fe270 into Master Nov 1, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
📤 Update 상위 브랜치에 작업 상황 업데이트 시
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants