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

리덕스 관리 (리팩토링) #116

Merged
merged 58 commits into from
Jan 30, 2021
Merged

리덕스 관리 (리팩토링) #116

merged 58 commits into from
Jan 30, 2021

Conversation

yjkwon07
Copy link
Contributor

리덕스 관리 (리팩토링)

파일 구조 변경

  • page 안에 컴포넌트 구성하는 방식
    • 큰 세션 단위로 나누기 그 안에서 컴포넌트가 있으면 폴더화 해서 하위구조로 탑-다운 하는 방식
    • image
  • components 폴더에서는 재 사용되는 컴포넌트를 모아둔다.
    • 현재 버전 1.0에서 사용되는 폴더는 그대로 보존 향후 2.0 버전 테스트 완료 후 삭제 예정
  • modules 리덕스 관리하는 폴더
    • 데이터를 불러오는 함수들을 hooks폴더에 관리
    • queryInfoData로 API 사용되는 LINK,METHOD,PARAMETER 정보들을 관리
    • reducer 파일에서 리듀서 관리 현재 toolkit으로 관리
    • saga에서 서버 통신 관리 helpers파일로 반복되는 패턴 줄임
    • image

폰트

  • 폰트가 불러오지 못한 이슈 해결
  • 현재 SpoqaHanSansNeo로 메인으로 정함
  • font.scss를 만들어 한곳에서 font 관리하도록 함
  • mainfest에서 폰트 불러오는 access 설정 추가

styleGuide

  • material-ui CssBaseline 설정
  • color, font 설정 모두 createMuiTheme에서 관리함
  • @global 관리는 신중하게 사용
  • css 사용할 때 CSS 프로퍼티 선언 순서 참고하여 사용하길 권장

chromeApis

  • history, OAuth, tab 모두 모듈로 관리

prettierrc, package(alias) 세팅

web Socket

  • 알람을 위한 websocket 클래스 화
    • 싱글 패턴으로 인스턴스화한 alarmSocket을 사용하도록 하여 인스턴스 캐시 역할을 함
    • 모듈 어디서든 자유롭게 같은 클래스로 데이터를 주고 받을 수 있는 장점

로그인 유지 깜빡이는 이슈

  • 캐시로 저장된 토큰유무에따라 로그인 유지 결정
  • 이미 http/client Axios 세팅에서 로그인 해야할 경우 flow를 설정해 둔 상태
    • 즉, check api를 사용을 미리 안 해도 되는 구조

modules/ui

  • Toast, Dialog, Drag, DropZone 데이터 관리
  • constants 파일로 모달을 띄어야 할 때 정확한 이름을 위해 상수화 하여 데이터 관리

components/modals

  • 재사용하는 모달을 modals로 한곳에서 관리

category/AppBar/DragHistoryList

  • 스크롤 내릴 때, 헤더는 고정, 스크롤 상단으로 올리는 버튼 추가
  • 탭 열기 색상 변경
  • 헤더를 클릭 할 때 검색 초기화 설정하도록 했지만, 버튼을 따로 만들어서 직관적으로 처리

category/AppBar/AlarmList

  • 읽음, 알림 상태에 따라 달라지는 뷰 다시 디자인

anxiubin and others added 30 commits December 22, 2020 13:49
- token 불러오기
- setting => 중요 정보 상수값 설정
- queryData 쓰임 수정
- Start 파일에 작성하지 않고 index파일에 모든 코드를 넣는걸로 수정
- Signup, RegisterFormBox 파일에 작성하지 않고 index파일에 모든 코드를 넣는걸로 수정
- dispatch는 모두 커스텀 hooks로 관리하도록 바꿈
- LoginSignup.scss 폰트 파일 경로 http:// schem 추가
- Login, LoginFormBox 파일에 작성하지 않고 index파일에 모든 코드를 넣는걸로 수정
- dispatch는 모두 커스텀 hooks로 관리하도록 바꿈
- ValidationMessage 파일에 작성하지 않고 index파일에 모든 코드를 넣는걸로 수정
- 이용약관 동의 모달
- Alert 모달 추상화
- 프리티어 세팅
- babel/preset-env 크롬버전 조정
- createReducer로 교체
- 모달이름을 관리하여 모달 어떤거를 쓰고 있는지 한 눈에 알 수 있도록 따로 constants 파일에 관리하도록 설정함
- reducer로 분리하여 index에는 모든 기능을 추가하도록 => 컴포넌트에서 한번에 가져올 때 유용하다고 생각
- useDialog 프리티어 적용
- error interceptors에서 로그인이 필요한 조건문에서 detail값이 없을 수 있기 때문에 값체크 표시
- selialize는 직렬화로 의미가 되기때문에 queryFilter가 더 직관적으로 해석됨
  - queryData에 bodyQuery, urlQuery에 따라 필터링을 함
- createReducer로 교체
- reducer로 분리하여 index에는 모든 기능을 추가하도록 => 컴포넌트에서 한번에 가져올 때 유용하다고 생각
- 컴포넌트 모듈 import 네임 수정
- OAuth를 컴포넌트에서 관리하지 않고 모듈화하여 따로 관리
- promise로 리턴하도록 교체
- chrome 모듈이 없다면 reject로 던짐
- reducer 이름까지 관리하도록 함
- api는 export하지 않음
- createSelector를 사용하여 reselect 관리
- useUserData 단일 불러오는 프로세스 훅스 추가
- 이용약관 버튼 글자 수정할 수 있게 props도 추가
- 프로필 정보 불러오기 카드 컴포넌트 구성
- modules/user 훅스로 데이터 관리
- 이미 http Axios 세팅에서 로그인 해야할 경우 flow를 설정해 둔 상태
  - 즉, check api를 사용을 미리 안 해도 되는 구조
- 로컬 정보에 토큰이 있는지만 검사하면 로그인 되어있는지 체크할 수 있음
- 알람을 위한 websocket 클래스 화
  - 싱글 패턴으로 인스턴스화한 alarmSocket을 사용하도록 하여 인스턴스 캐시 역할을 함
  - 모듈 어디서든 자유롭게 같은 클래스로 데이터를 주고 받을 수 있는 장점
- 알람 소켓 연결 후 redux-saga에서 flow를 정함
- useAlarmNoticeConnection을 만들어 connection, onmessage, onerror설정함
- AppBar 컴포넌트 스타일 구성
- Profile, AlaramList Popover 구현
- font import가 너무 많음
- 한곳으로 관리하도록 함
- SpoqaHanSansNeo로 메인으로 정함
- ListItem, GroupName 형식
- history => callback 패턴 대신 promise 패턴으로 바꿈
  - callback 패턴은 @depreacted
- 컴포넌트에서 구현한 create tab을 모듈로 따로 관리
- input 포함된 버튼
- useHistoryLink 추가
- history 링크 드래그할 때 대체 컴포넌트
- drag, dropzones 추가
- drag할 때, 정보들 리덕스로 관리하기
- dropzone 컴포넌트가 분리되어 있을 때, dropzones 리덕스 정보로 관리
  - dialog와 유사
- HistoryList -> DragableHistoryList로 폴더 변경
- infinity scroll, reload(debounce) 버튼 적용
- Drag, Drop, DropZone, DragBox 조건 설정
- HistoryPage는 사용하는곳이 없으므로 삭제
- 하단에 스크롤 올려주는 버튼
- DragHistoryList 관련 컴폰넌트 적용
- dark 모드 설정 완료
- ScrollUpButton 추가
- ScrollUpButton, DragBox 부모 안에 absoulte로 설정
- useOutsiderAlerter prettier 정리
- Redux에서 LINK_DROP_ZONE을 옵저버 형태로 주시하여 노출/비노출 설정
- DragHistoryList 추가
- Drawer 할 때 DragHistoryList를 historyLink 리로드
  - 만약 scroll이 top 0으로 되어야 한다면, HistoryList에 reload 옵션 파라미터 추가
- DragHistoryList header bottom padding 추가
- alias @hooks 추가
- manifest font load acess
- Material CssBaseline으로 css reset
- Login, Singup main-layout 배경색 수정
- global하게 다루는 css는 처리
- 카테고리 리스트 아직처리 못함
@yjkwon07 yjkwon07 added enhancement New feature or request Front-Common Front Common Function Front-Component Front Component bug-fix hotfix labels Jan 30, 2021
@leesoo7595 leesoo7595 merged commit f37b77c into develop Jan 30, 2021
@yjkwon07 yjkwon07 deleted the feature/dev.2.0.0 branch January 30, 2021 05:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug-fix hotfix enhancement New feature or request Front-Common Front Common Function Front-Component Front Component
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants