Repository navigation
[Deploy] main 브랜치 작동 - #91
Conversation
TODO: 1. 버튼, 링크 등의 이벤트 요소 만들기
2. 현재는 대부분 요소의 위치나 크기가 픽셀 단위로 하드코딩되어 있는데 이를 브라우저 크기에 맞게 자동 조정되도록 만들기
참고사항: 1. public 디렉토리에 home화면 제작에 사용된 이미지와 로고 이미지를 추가하였음.
2. 기존의 components/layout/MoaLogo.tsx는 더이상 필요 없어졌기 때문에 삭제하였음.
- CBNU-MoaNote-CapstonDesign/backend#51 BE 에서 해당 이슈에 대응하면서 subscribe destination 이 수정되었기에 이에 대응함
최초로 note를 받아올 때는 강제로 덮어씌우도록 구현하였습니다. close #39
…se-integration-useDocumentSync Feature/database integration use document sync
- `MarkdownEditor` 에서 현재 커서의 위치를 추적해서 `cursorHandler` 콜백을 실행함 - `MarkdownEditor` 가 마운트 될 시에 prop 으로 전달받은 `lastCursorPosition` 을 통해 커서 위치를 초기화하도록 함 - 부모 컴포넌트인 `DocumentRender` 가 커서 위치를 state 로 관리하도록 함 - 관련 todo 제거
… 를 클릭 시에 수정 사항을 전파하는 현상 해결 #45 - 기존에는 `MarkdownEditor` 의 mount 시 `useEffect` 가 실행되며 조건없이 `updateContent` 를 호출하였음 - 또한 `updateContent` 는 `documentRenderer` 의 `send` 를 호출함 (`documentRenderer` 에서 그렇게 정의함) 따라서 실제로 수정이 일어나지 않았음에도 `MarkdownEditor` 가 호출될 시에 수정 사항을 외부로 전파함 - 따라서 문서 수정에 대한 `useEffect` 내부에서 `needSend` 조건을 체크하도록 변경
… 을 optional 로 변경 - initialContent 의 기본값을 null 로 수정
- 채팅 버튼 복원 - /api/auth/me 로 호출하는 것 삭제 후 BE me API로 복구
- 같은 chat id를 가진 메시지가 새로 들어오면 해당 메시지를 update 하도록 기능 변경
…rontend into dev design/home과 병합
- 같은 chat id를 가진 메시지가 새로 들어오면 해당 메시지를 update 하도록 기능 변경
- 같은 chat id를 가진 메시지가 새로 들어오면 해당 메시지를 update 하도록 기능 변경
…ction 홈 화면에서 로그인 페이지로 이동 구현
- NoteUI.tsx, TitleBlock.tsx, TextBlock.tsx, DesignBlock.tsx에도 해당 매개 변수가 필요하나 아직 Props 전달 코드를 작성하지 않음. - NoteUI.tsx 하위의 세 컴포넌트에 전부 같은 Props를 전달하는 방법을 고민 중.
- 일반 문서 /소스코드 문서 타입 선택 스위치 UI 추가 - 소스코드 문서 선택 시 언어 옵션 선택 UI 및 상태 추가 - onAdd 에서 위에서 추가한 옵션을 전달받기 위해 props 수정 - 필요한 type 및 enum 추가
[디자인 개선] 기존 텍스트 블록과 디자인 통일(그라데이션 색상 형태 등) [추가된 기능] 1. 코드 복사 2. 코드 다운로드 3. 원하는 언어 선택(기존에는 default로 설정된 javascript만 됐었음) [참고사항] 코드 에디터 개선 작업을 위해 NoteUI.tsx에 임시로 CodeEditor.tsx 컴포넌트 삽입함
- 파일 다운로드 기능 지원을 위함 - LANGUAGES 리스트에 파일 확장자 데이터 추가
- 이미 코드 베이스에 존재하는 객체를 활용하도록 수정
- note.ts 에서 각 언어의 value 를 backend api 와 동일한 스펙을 갖도록 수정
- 언어 변경 로직을 CodeEditor 의 언어 선택 로직과 동일하게 변경. 기존 코드는 undefined 가 set 되는 오류가 있었음 - 일반 문서 생성 시에도 language 가 set 되어 있고, 이것을 onAdd 에 항상 그대로 넘겨서 코드 문서가 생성되는 문제가 있었기에 해결함
- CodeEditor 의 경우 기본 언어를 서버로부터 받은 데이터를 통해 설정하도록 함
- 폴더 깊이가 깊어지면 지나치게 left-margin 이 생겨서 UI 가 망가지는 현상 때문
- 기존 API 에서 FileDTO 에 관련 필드가 추가되었기에 이를 활용
- 백엔드의 /api/repository/ask API 사용
* **src/app/diagram/[uuid]/ClientDiagram.tsx**: 린트 오류를 유발하던 사용되지 않는 `TopNavigationBar` import를 제거. * **src/app/diagram/[uuid]/page.tsx**: `params`를 Promise로 취급하고 사용 전에 await하여 Next.js의 기대와 맞게 타입을 맞춤. * **src/app/doc/[uuid]/page.tsx**: 문서 페이지 라우트에도 동일한 Promise 기반 `params` 타입 수정 적용. * **src/app/test/page.tsx**: 사용되지 않는 파일 서비스 import를 정리해 실제로 사용하는 헬퍼만 남김. * **src/components/diagram/DiagramRenderer.tsx**: 린트 경고를 없애기 위해 사용하지 않는 React 훅과 Excalidraw import를 제거. * **src/components/layout/NotePage/FolderItem.tsx**: GitHub 아이콘을 툴팁을 담고 보조기술에서 SVG를 숨기는 `<span>`으로 감쌈. * **src/components/layout/NotePage/InviteUserModal.tsx**: 아이콘 import를 단순화하고, 미완성 제거 로직을 로그할 때 collaborator 인자가 참조되도록 보장. * **src/components/layout/NotePage/NoteUI.tsx**: 상태 훅의 타입 체크를 위해 누락된 `NoteDTO` 타입 import를 추가. * **src/libs/structures/treenote.ts**: 이전 실험에서 남은 사용되지 않는 `codeText` import를 제거. * **src/types/file.d.ts**: 빈 `Segment` 인터페이스를 `SegmentDTO` 별칭으로 대체하여 빈 객체 타입에 대한 린트 규칙을 충족.
- 유저가 권한을 가진 파일이 너무 많으면 로딩이 현저히 느려지는 현상을 해결하기 위해, Lazy 하게 파일을 로딩하도록 기능을 변경함
- 이제 이 UI 로 권한 부여 대상을 폴더에도 가능함
- 기능의 편리함에 비해 로딩 속도에 주는 불이익이 더 크다고 판단함
- 전체 파일을 재귀적으로 이미 불러오면서도 이를 불필요하게 한 번 더 재귀적으로 호출하여 O(N^2) 복잡도가 되었었음
- 파일 위치 선택을 위한 API 를 미리 호출하여 로딩하여 파일 위치 선택이 필요한 모달의 마운트 속도 개선
- CodeEditor 는 수정 시 기존 개행문자를 무시하고 항상 모든 개행문자를 CRLF 로 (윈도우에서만 발생했을 수도 있음) 변환하던 현상이 있었음 - 위 현상때문에 긴 수정 사항, 혹은 긴 문서에서의 수정이 너무 큰 메시지를 생성하여 오류를 유발하였음 - CRLF / LF 중 판별하여 이를 존중하도록 수정함 (기존 문서가 CR 개행 문자를 사용하는 경우는 적기 때문에 고려하지 않았음)
- MarkdownRenderer 또한 monaco-editor 에서 선택 언어가 Markdown 일때만 미리보기를 띄울 수 있도록 함 - 기존 편집기는 @deprecated 처리함 - .md, .json, .html, .css, .txt, 지원 추가
- 기존 구독을 StompSubscription 을 통하여 관리하도록 리팩토링 - useCallback 을 통한 최적화 유도
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| async function postRequest(location: string, stringifiedBody?: string) { | ||
| console.log("post요청 location:", location); | ||
| console.log("post요청 body:", stringifiedBody); | ||
|
|
||
| const res = await fetch(`${getServerUrl()}${location}`, { | ||
| method: "POST", | ||
| credentials: "include", | ||
| body: stringifiedBody, | ||
| headers: { | ||
| "Content-Type": "application/json", | ||
| }, | ||
| }); | ||
|
|
||
| console.log(`postRequest[${res.status}]: ${location}`); | ||
|
|
||
|
|
||
| // 본문이 있으면 json 파싱 | ||
| const responseBody = await res.json(); | ||
| if (!responseBody) | ||
| return res.ok; | ||
| else | ||
| return responseBody; |
There was a problem hiding this comment.
Handle non‑JSON POST responses safely
The new postRequest helper always executes await res.json() and then returns the parsed payload even when res.ok is false. Many of the APIs this wrapper calls (e.g. create/edit/delete endpoints) return an empty body or a bare error message with 4xx status codes. In those cases this helper will either throw at res.json() for 204/empty responses or return a truthy error object, causing callers such as createFile to treat failed requests as successes. This means a network or server-side validation error will crash the client or leave the UI in a state that assumes a file was created. Consider checking res.ok and the Content-Type before parsing, and fall back to null/false on errors.
Useful? React with 👍 / 👎.
수행한 작업
design
chore
feat
MarkdownEditor에서 커서 위치를 추적하게 함 605fe4afix
documentRenderer컴포넌트에서MarkdownRenderer를 클릭 시에 수정 사항을 전파하는 현상 해결 60eef93deps
tiny-invariant의존성 추가; dev mode 에서만 동작하는 assert 84a80d4refactor
lastCursorPosition과cursorHandlerprop 을 optional 로 변경 97aba48style
feature
remove
BugFix
rename
test
simpleDiff.test.ts테스트 코드 작성. Jest 의존성 추가 f685f53temp
bugFix
<FolderItem/>부분 오류 수정 f21be6b<select>에서 collaborator.permission이 PermissionDTO 타입임을 명시 230e663<option>을 렌더링 할 때 각 자식에 고유한 key가 없었던 오류를 수정 9eb84b3<option>을 렌더링 할 때 자식마다 고유한 키가 없는 오류를 수정 e18dd2f<option>을 렌더링 할 때 자식마다 고유한 키가 없는 오류를 수정 1f8e06ccomment
format
help
enhance
layout
설명
관련 이슈
MarkdownEditor컴포넌트에서 커서 위치를 추적할 수 있는 기능 #44documentRenderer컴포넌트에서MarkdownRenderer를 클릭 시에 수정 사항을 전파하는 오류 #45TreeBasedDocumentRenderer에서 수정사항을 전파받으면 컴포넌트의 state 가 컴포넌트 최초의 상태로 리셋되는 현상 #74