0.1.35 • Published 3 years ago

teespace-core v0.1.35

Weekly downloads
-
License
-
Repository
-
Last release
3 years ago

본 저장소는 TeeSpace Core 에 대한 저장소 입니다. TeeSpace를 위한 공통 Store와 API 모듈 및 WebSocket 모듈 등을 포함하고 있습니다. TeeSpace에 들어가는 각 앱은 본 저장소를 사용하여 구현합니다.

초기 설정 (Visual Studio Code)

Visual Studio Code를 설치합니다.

VSCode 설치가 완료되었다면, 다음과 같은 Extension 을 설치 합니다.

  • prettier - Code formatter
  • ESLint
  • auto import

NodeJS LTS 버전과 yarn 패키지를 설치합니다.

설치가 완료되면, 다음과 같이 의존 라이브러리를 설치합니다.

$ yarn install

사용 가능한 명령어

yarn start

본 모듈을 개발모드로 실행합니다. 코드를 수정하면 자동으로 빌드를 시작합니다.

yarn test

테스트 러너를 실행합니다.

yarn build

본 모듈을 운영환경으로 빌드 합니다.

모듈 연동 방법 (packages.json 선언 방식)

teespace-core 저장소를 사용하고자 하는 프로젝트 내 packages.json 파일을 에디터로 엽니다. packages.json 파일에 있는 dependencies 필드에 다음과 같이 teespace-core 저장소를 추가 합니다.

"teespace-core": "git+http://git@192.168.158.12:teespace/teespace-core#develop"

teespace-core 저장소 추가가 완료 되었다면, 패키지를 다시 설치 합니다.

yarn install

모듈 연동 방법 (yarn link 방식)

본 모듈 연동 방식은 yarn link 방식으로 연동 하는 방법을 안내합니다. 앱 개발 및 플랫폼 연동을 진행할 때 개발 편의성을 위하여 사용 됩니다. 일반적인 사용을 원하신다면, packages.json 연동 방식을 참고하시기 바랍니다.

teespace-core 프로젝트 설정

1. 본 저장소를 clone 받습니다.

    $ git clone git@192.168.158.12:teespace/teespace-core.git

2. clone 받은 디렉토리로 이동합니다
    $ cd teespace-core

3. 패키지를 설치합니다
    $ yarn install

4. 본 모듈을 다른 프로젝트에서 사용할 수 있도록 global link 를 등록합니다
    $ yarn link

5. (추가) 릴리즈되지 않은 최신 코드로 테스트 하고 싶은 경우
    $ yarn start
    위 명령어를 사용하면 최신 코드로 빌드하며, 코드 수정 시 바로 반영 됩니다

teespace 또는 app 에서 teespace-core 모듈 연동 방법

1. teespace-core를 사용하기 위한 프로젝트로 이동
    $ cd teespace-platform

2. teespace-core를 등록
    $ yarn link teespace-core

3. 위 과정까지 거치면 다음과 같이 teespace-platform(예시) 에서 사용할 수 있습니다
    import { useCoreStores } from 'teespace-core'

4. (추가)packages.json 에 dependencies 필드에 다음과 같이 저장소 등록이 되어 있는지 확인이 필요합니다
    "teespace-core": "git+http://git@192.168.158.12:teespace/teespace-core#develop"

모듈 업그레이드 방법

본 저장소는 지속적으로 develop 브랜치에서 업데이트가 진행되고 있습니다. 새로운 버전의 코드를 받아오길 원한다면 다음과 같이 모듈 업그레이드를 진행 해주세요

yarn upgrade teespace-core

기여 방법

git commit 메세지 컨벤션

git commit 메세지 컨벤션은 본 문서를 기반으로 작성되었습니다.

커밋 메세지는 타입(모듈): 설명 형태로 작성이 됩니다. 커밋할 때 자동으로 형식을 검사합니다. 유효하지 않은 형태로 커밋 메세지 작성 시 정상적으로 커밋이 되지 않습니다. 각 타입에 대한 설명은 다음과 같습니다.

타입설명
feat기능 추가, 라이브러리 추가, API 변경 시 사용
refactor코드 구조 변경 시 사용
fix버그 수정 시 사용
docs문서 수정 시 사용
test테스트 코드 작성 시 사용
chore자잘한 수정이 있을 시 사용 (예. 설정 파일 변경 등)

코드 수정하여 다른 코드에 영향을 줄 수 있는 것은 BREAKING CHANGE 를 사용하여 작성합니다. 이에 대한 설명은 다음과 같습니다.

feat(common): TeeSpace를 위한 API 클래스 구현

BREAKING CHANGE: axios를 직접 사용하지 않고, API 클래스를 사용하여 구현 필요

Merge Request

작성 예정

Code Review

작성 예정

주의

  • 깨진 코드 (빌드 되지 않거나 동작하지 않는 코드)를 develop 브랜치에 머지 되면 안됩니다.
  • pull 받으실 때는 꼭 rebase pull 을 사용하세요. (git pull --rebase origin)
  • develop 브랜치에서 기능 브랜치를 생성하는 경우, 주기적으로 develop 브랜치를 rebase 하여 충돌을 최소화 해주세요. (git rebase develop)
  • 가급적 merge commit은 자제하여 깨끗한 커밋 로그를 남길 수 있도록 합니다.

API Reference

API 모듈

Get(url, params) ⇒ Promise

Deprecated

HTTP Get 요청

Kind: global method of API

ParamType
urlstring
paramsobject

Post(url, params, config) ⇒ Promise

Deprecated

HTTP Post 요청

Kind: global method of API

ParamType
urlstring
paramsobject
configobject

Put(url, params, config) ⇒ Promise

Deprecated

HTTP Put 요청

Kind: global method of API

ParamType
urlstring
paramsobject
configobject

Delete(url, params) ⇒ Promise

Deprecated

HTTP Delete 요청

Kind: global method of API

ParamType
urlstring
paramsobject

get(url, params) ⇒ Promise

HTTP Get 요청

Kind: global method of API

ParamType
urlstring
paramsobject

post(url, params, config) ⇒ Promise

HTTP Post 요청

Kind: global method of API

ParamType
urlstring
paramsobject
configobject

put(url, params, config) ⇒ Promise

HTTP Put 요청

Kind: global method of API

ParamType
urlstring
paramsobject
configobject

delete(url, params) ⇒ Promise

HTTP Delete 요청

Kind: global method of API

ParamType
urlstring
paramsobject

인증 스토어

isAuthenticated ⇒ boolean

로그인 여부

Kind: global property of AuthStore
Returns: boolean - 로그인 여부

user ⇒ UserModel

로그인한 사용자에 대한 정보 오브젝트

Kind: global property of AuthStore
Returns: UserModel - myInfo from UserStore

tokenTimer ⏏

30분마다 토큰 재발급

Kind: global property of AuthStore

login(id, pw, deviceType, isAutoLogin, isLocalLogin) ⇒ Promise.<UserModel>

로그인

Kind: global method of AuthStore
Returns: Promise.<UserModel> - - Promise 형태의 myInfo

ParamTypeDescription
idstring(필수) 사용자 (로그인)아이디
pwstring(필수) 사용자 패스워드
deviceTypestring(필수) 디바이스 타입 'PC''Mobile' 둘 중 하나만 쓰임
isAutoLoginboolean(필수) 자동 로그인 여부
isLocalLoginboolean(옵션) 로컬 환경 여부

autoLogin() ⇒ Promise.<UserModel>

자동 로그인

Kind: global method of AuthStore
Returns: Promise.<UserModel> - - Promise 형태의 myInfo

logout() ⇒ Promise.<boolean>

로그아웃

Kind: global method of AuthStore
Returns: Promise.<boolean> - - Promise 형태의 boolean 값

duplicationCheckId(id) ⇒ string

회웝가입 시, 아이디 중복 확인

Kind: global method of AuthStore
Returns: string - RST0001 : Duplication not exists ,RST0002: Duplication exists

ParamTypeDescription
idstring회원가입하려는 아이디

duplicationCheckPhone(phone, ncode) ⇒ string

회웝가입 시, 핸드폰 번호 중복 확인

Kind: global method of AuthStore
Returns: string - RST0001 : Duplication not exists ,RST0002: Duplication exists

ParamTypeDescription
phonestring휴대폰번호
ncodestring국가번호

createAuthNumberPhone(phone) ⇒ string

회웝가입 시, 인증 번호 생성 (휴대폰 번호)

Kind: global method of AuthStore
Returns: string - RST0001 : 인증번호 정상적으로 생성.

ParamTypeDescription
phonestring휴대폰번호

getAuthNumberPhone(authNumber, phone) ⇒ string

회웝가입 시, 인증 번호 검증 (휴대폰 번호)

Kind: global method of AuthStore
Returns: string - RST0001 : 인증 번호 정상 검증

ParamTypeDescription
authNumberstring휴대폰으로 온 인증 번호
phonestring휴대폰번호

createUser(registerObj) ⇒ Object

회웝가입 시, 유저 생성

Kind: global method of AuthStore
Returns: Object - - 회원가입 성공시, data.dto.RESULT_CD : RST0001 ,data.dto.RESULT_DATA : {USER_ID}

ParamTypeDescription
registerObjObject회원가입을 위한 정보 객체
registerObj.userIdstring아이디
registerObj.pwstring비밀번호
registerObj.namestring이름
registerObj.phonestring휴대폰 번호
registerObj.ncodestring국가 코드 번호
registerObj.typestring유저 타입 : b2b - USR0001 / b2c - USR0002 / guest - USR0003
registerObj.emailstring이메일
registerObj.personalstring개인 정보 활용 동의 여부: 'Y'/'N'
registerObj.advertisestring광고 수신 여부: 'Y'/'N'
registerObj.pathstring가입 경로: Csp / TmaxOS / TmaxOSSR

setMyInfo() ⇒ Promise.<UserModel>

테스트 통과를 위한 임시 코드

Kind: global method of AuthStore
Returns: Promise.<UserModel> - - Promise 형태의 myInfo

유저 스토어

searchUsersByKeyword(keyword) ⇒ Promise.<Array.<UserModel>>

키워드 검색

Kind: global method of UserStore
Returns: Promise.<Array.<UserModel>> - - Promise 형태로 되어 있는 userModel의 배열

ParamTypeDescription
keywordstring(필수) 검색하고자 하는 키워드

searchUserById(userLoginId) ⇒ Promise.<UserModel>

아이디 검색

Kind: global method of UserStore
Returns: Promise.<UserModel> - - Promise 형태로 되어 있는 userModel

ParamTypeDescription
userLoginIdstring(필수) 가져 오고자 하는 유저의 로그인 아이디

fetchProfile(userId) ⇒ Promise.<{(key:string): UserModel}>

프로필(Single User) 업데이트

Kind: global method of UserStore
Returns: Promise.<{(key:string): UserModel}> - - Promise 형태로 되어 있는 userId 를 key로 userModel을 value 로 하는 map

ParamTypeDescription
userIdstring(필수) 가져 오고자 하는 유저의 UUID

fetchRoomUserProfileList() ⇒ Promise.<{(key:string): UserModel}>

각 룸에서 최대 25명 까지의 유저 정보를(룸 인원이 25명 이하일 경우 모두) 불러와서 저장합니다.

Kind: global method of UserStore
Returns: Promise.<{(key:string): UserModel}> - - Promise 형태로 되어 있는 userId 를 key로 userModel을 value 로 하는 map(해당 사용자가 속해 있는 모든 룸에서 최대 25명의 정보를 userProfiles에 저장합니다)

getProfile(userId) ⇒ Promise.<{(key:string): UserModel}>

저장되어 있는(Single user profile) 반환(없을 경우 updateProfile 활용한 결과값 리턴)

Kind: global method of UserStore
Returns: Promise.<{(key:string): UserModel}> - - Promise 형태로 되어 있는 userId 를 key로 userModel을 value 로 하는 map

ParamTypeDescription
userIdstring(필수) 찾을 사용자의 UUID

getUserProfilePhoto(userId, size, isLocal, thumbPhoto) ⇒ string

유저의 Profile Photo URL을 반환

Kind: global method of UserStore
Returns: string - - Profile Photo URL

ParamTypeDescription
userIdstring(필수) 사용자의 UUID
sizestring(필수) photo size 'small'과 'medium' 둘중의 하나의 갑만 사용 가능
isLocalboolean(필수) local 환경인지 여부
thumbPhotostring(옵션) optional UserModel의 thumbPhoto 정보

getUserBackPhoto(userId, isLocal, backPhoto) ⇒ string

유저의 Background Photo URL을 반환

Kind: global method of UserStore
Returns: string - - Profile Photo URL

ParamTypeDescription
userIdstring(필수) 사용자의 UUID
isLocalboolean(필수) local 환경인지 여부
backPhotostring(옵션) optional UserModel의 backPhoto 정보

updateMyProfile(updatedInfo) ⇒ Promise.<UserModel>

내 정보 업데이트

Kind: global method of UserStore
Returns: Promise.<UserModel> - - Promise 형태의 UserModel

ParamTypeDescription
updatedInfo$Shape.<UserInfo>(필수) UserInfo Type의 부분집합을 이루는 object 를사용할 수 있습니다. 예, { name: 'tmax' }

initHydratedMyProfile() ⏏

Hydration 후에 일반 Object 정보를 UserModel 형식으로 변환하기 위한 함수

Kind: global method of UserStore

룸 스토어

createRoom(creatorId, name, description, parentId, photo, userList) ⇒ Promise.<{(roomId:string): string}>

룸 만들기

Kind: global method of RoomStore
Returns: Promise.<{(roomId:string): string}> - - Promise 형태로, roomId 를 key 값으로 하고, string 형식의 room Id

ParamTypeDescription
creatorIdstring(필수) 생성하는 사용자의 UUID
namestring(옵션) 생성하는 룸 이름
descriptionstring(옵션) 생성하는 룸의 설명
parentIdstring(옵션) parentId - 명세 명확하지 않음 1-2팀 확인 필요
photostring(옵션) 생성하는 룸의 프로필 사진
userListArray(필수) Object Array 의 형태로 {userId: 'adf-sdf-sdf'},{userId: 'sfwefdf-sdf'}의 형태로 생성하는 룸의 멤버들

activateRoom(roomId, myUserId, isDmRoom) ⇒ Promise.<{(roomId:string): RoomModel}>

룸 활성화 하기

Kind: global method of RoomStore
Returns: Promise.<{(roomId:string): RoomModel}> - - Promise 형태로, roomId 를 key 값으로 하고, RoomModel 형식의 Room 정보를 리턴

ParamTypeDescription
roomIdstring(필수) 활성화 하려는 임시방의 룸ID
myUserIdstring(필수) 나의 유저 UUID
isDmRoomboolean(필수) 1:1 룸인지 아니지에 대한 boolean 값

fetchRoom(myUserId, roomId) ⇒ ⏏

단일 룸 정보 가져오기 (룸 멤버는 별도의 콜 필요함)

Kind: global method of RoomStore
Returns: {Promise<{(key:string):{room:RoomModel,roomMembers:Array}>} - Promise 형태로, roomId 를 key 값으로 하고, 룸정보와 룸멤버 정보를 value 하는 하는 map

ParamTypeDescription
myUserIdstring(필수) 사용자의 UUID
roomIdstring(필수) 가져 오려는 룸의 ID

fetchRoomList(userId, isHiddenRoomIncluded) ⇒ ⏏

룸 리스트 가져오기 (룸 멤버는 별도의 콜 필요함)

Kind: global method of RoomStore
Returns: {Promise<{(key:string):{room:RoomModel,roomMembers:Array}>} - Promise 형태로, roomId 를 key 값으로 하고, 룸정보와 룸멤버 정보를 value 하는 하는 map

ParamTypeDescription
userIdstring(필수) 사용자의 UUID
isHiddenRoomIncludedboolean(옵션) 숨겨진 방도 call 할지에 대한 옵션

updateRoomInfo(roomId, newName, newDescription, newIsUsed, newPhoto, newIsSearchable) ⇒ ⏏

룸 멤버 업데이트

Kind: global method of RoomStore
Returns: {Promise<{(key:string):{room:RoomModel,roomMembers:Array}>} - Promise 형태로, roomId 를 key 값으로 하고, 룸정보와 룸멤버 정보를 value 하는 하는 map

ParamTypeDescription
roomIdstring(필수) 룸 ID
newNamestring(옵션) 변경 하고 싶은 룸 이름
newDescriptionstring(옵션) 변경 하고 싶은 룸 설명
newIsUsedboolean(옵션) 변경 하고 싶은 룸의 사용 여부
newPhotostring(옵션) 변경 하고 싶은 룸의 프로필 사진
newIsSearchableboolean(옵션) 변경 하고 싶은 룸 검색 허용 여부

updateRoomMemberSetting(roomId, myUserId, newRole, newUserNick, newUserStatus, newIsVisible, newRoomCustomName, newIsAlarmUsed, newIsRoomBookmarked) ⇒ ⏏

룸의 세팅에 대한 정보

Kind: global method of RoomStore
Returns: {Promise<{(key:string):{room:RoomModel,roomMembers:Array}>} - Promise 형태로, roomId 를 key 값으로 하고, 룸정보와 룸멤버 정보를 value 하는 하는 map

ParamTypeDescription
roomIdstring(필수) 룸 ID
myUserIdstring(필수) 나의 유저 UUID
newRolestring(옵션) 유저의 ROLE (WKS0004 - 그룹장, WKS0005 - 그룹원)
newUserNickstring(옵션) 룸 내 나의 닉네임
newUserStatusstring(옵션) 나의 유저 상태 -> 레드마인 명세 명확하지 않음 1-2팀 확인 필요
newIsVisibleboolean(옵션) 나의 룸 숨기기 옵션
newRoomCustomNamestring(옵션) 룸의 별칭
newIsAlarmUsedboolean(옵션) 룸 알람 옵션
newIsRoomBookmarkedboolean(옵션) 룸 즐겨찾기 옵션

fetchRoomMemberList(userId, roomId) ⇒ ⏏

해당 하는 룸의 멤버정보 가져오기

Kind: global method of RoomStore
Returns: {Promise<{(key:string):{room:RoomModel,roomMembers:Array}>} - Promise 형태로, roomId 를 key 값으로 하고, 룸정보와 룸멤버 정보를 value 하는 하는 map

ParamTypeDescription
userIdstring(필수) 사용자 UUID
roomIdstring(필수) 룸 ID

getRoomList(userId) ⇒ Promise.<{(key:string): RoomModel}>

현재 저장되어 있는 룸 리스트 가져오기(없을 경우 fetchRoomList 활용한 결과값 리턴)

Kind: global method of RoomStore
Returns: Promise.<{(key:string): RoomModel}> - - Promise 형태로, roomId 를 key 값으로 하고, 룸정보와 룸멤버 정보를 value 하는 하는 map

ParamTypeDescription
userIdstring(필수) 룸 ID

getRoomDetails(myUserId, roomId) ⇒ Promise.<{room:RoomModel, roomMembers:Array.<RoomMemberModel>}>

해당 룸 정보와 룸에 속한 멤버를 같이 리턴

Kind: global method of RoomStore
Returns: Promise.<{room:RoomModel, roomMembers:Array.<RoomMemberModel>}> - - Promise 형태로 룸정보와 룸멤버 정보를 value 하는 하는 object

ParamTypeDescription
myUserIdstring(필수) 나의 유저 UUID
roomIdstring(필수) 룸 ID

getChannelIds(roomId) ⇒ Object

채널 아이디 목록 가져오기

Kind: global method of RoomStore
Returns: Object - - channelType을 key로 하는 map 형태의 반환값

ParamTypeDescription
roomIdstring(필수) 룸 ID

deleteFromRoomList(roomId) ⏏

특정한 룸을 리스트에서 제거

Kind: global method of RoomStore

ParamTypeDescription
roomIdstring(필수) 룸 아이디

deleteFromRoomMemberList(roomId) ⏏

특정한 룸멤버들을 리스트에서 제거

Kind: global method of RoomStore

ParamTypeDescription
roomIdstring(필수) 룸 아이디

deleteRoomMember(roomId, userId) ⏏

룸에 있는 멤버를 강퇴(제거)

Kind: global method of RoomStore

ParamTypeDescription
roomIdstring(필수) 룸 아이디
userIdstring(필수) 사용자 아이디

inviteNewMembers(myUserId, userId, roomId, newMemberList) ⏏

새로운 멤버 초대

Kind: global method of RoomStore

ParamTypeDescription
myUserIdstring(필수) 나의 유저 UUID
userIdstring(필수) 초대한 유저의 UUID
roomIdstring(필수) 룸 아이디
newMemberListArray(필수) Object Array 의 형태로 {userId: 'adf-sdf-sdf'},{userId: 'sfwefdf-sdf'}의 형태로 생성하는 룸의 멤버들

updateRoomMetadata(roomId, metadata) ⏏

룸의 메타데이터 정보 수정

Kind: global method of RoomStore

ParamTypeDescription
roomIdstring룸 ID
metadataObject변경할 메타데이터 정보
metadata.lastMessagestring마지막 메세지
metadata.lastMessageDatestring마지막 메세지에 대한 날짜 및 시간
metadata.countnumber화면에 표현할 갯수