diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/messages.component.scss b/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/messages.component.scss index cc7b7a67..1960830b 100644 --- a/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/messages.component.scss +++ b/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/messages.component.scss @@ -173,19 +173,42 @@ } } } - +//mat-snack-bar ::ng-deep .cdk-global-overlay-wrapper { .mat-snack-bar-container { margin: 0; padding: 30px; + max-width: 60vw; .mat-simple-snackbar { + display: flex; justify-content: center; span { - @include ellipsis(1); - padding: 10px 40px; + @include ellipsis(3); + display: inline-block; + padding: 7px 20px; border: 1px solid #ffffff; background-color: rgb(255, 255, 255, 0.2); color: #ffffff; + margin-right: 4px; + flex: 1 1 auto; + max-width: 40vw; + } + &-action { + display: inline-flex; + margin-left: auto; + flex: 0 0 auto; + height: 100%; + button { + //background-color: #00b6d5; + border-radius: 2px; + span { + padding: 0 20px; + color: #ffffff; + background: none; + border: none; + font-weight: 500; + } + } } } } diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/messages.component.ts b/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/messages.component.ts index 1831165f..bf9fc360 100644 --- a/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/messages.component.ts +++ b/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/messages.component.ts @@ -1511,6 +1511,11 @@ export class MessagesComponent implements OnInit, OnDestroy, AfterViewInit { break; case 'ADD_MEMBER': { + const curRoomUser = this.userInfoListSubject.value.filter( + user => + user.seq !== this.loginResSubject.value.userSeq && user.isJoinRoom + ); + const result = await this.dialogService.open< CreateChatDialogComponent, CreateChatDialogData, @@ -1520,15 +1525,27 @@ export class MessagesComponent implements OnInit, OnDestroy, AfterViewInit { data: { type: UserSelectDialogType.EditChatMember, title: this.translateService.instant('chat.modifyRoomMember'), - curRoomUser: this.userInfoListSubject.value.filter( - user => - user.seq !== this.loginResSubject.value.userSeq && - user.isJoinRoom - ) + curRoomUser } }); if (!!result && !!result.choice && result.choice) { + if ( + !!result.selectedUserList && + result.selectedUserList.length > 0 && + curRoomUser + .map(user => user.seq) + .sort() + .join('|') === + result.selectedUserList + .map(user => user.seq) + .sort() + .join('|') + ) { + // 변경된 것이 없다면 중지. + return; + } + // include me here.. const userSeqs: number[] = this.userInfoListSubject.value .filter(userInfo => userInfo.isJoinRoom) diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/right-drawer/room-user-list.component.ts b/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/right-drawer/room-user-list.component.ts index 52acab5e..bf2db933 100644 --- a/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/right-drawer/room-user-list.component.ts +++ b/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/right-drawer/room-user-list.component.ts @@ -138,6 +138,10 @@ export class RoomUserListComponent implements OnInit, OnDestroy { } async onClickAddMember() { + const curRoomUser = this.userInfoList.filter( + user => user.seq !== this.loginRes.userSeq && user.isJoinRoom + ); + const result = await this.dialogService.open< CreateChatDialogComponent, CreateChatDialogData, @@ -147,18 +151,31 @@ export class RoomUserListComponent implements OnInit, OnDestroy { data: { type: UserSelectDialogType.EditChatMember, title: this.translateService.instant('chat.modifyRoomMember'), - curRoomUser: this.userInfoList.filter( - user => user.seq !== this.loginRes.userSeq && user.isJoinRoom - ) + curRoomUser } }); if (!!result && !!result.choice && result.choice) { + if ( + !!result.selectedUserList && + result.selectedUserList.length > 0 && + curRoomUser + .map(user => user.seq) + .sort() + .join('|') === + result.selectedUserList + .map(user => user.seq) + .sort() + .join('|') + ) { + // 변경된 것이 없다면 중지. + return; + } + // include me here.. const userSeqs: number[] = this.userInfoList .filter(userInfo => userInfo.isJoinRoom) .map(userInfo => userInfo.seq); - if (!!result.selectedUserList && result.selectedUserList.length > 0) { result.selectedUserList.forEach(user => { if (userSeqs.indexOf(user.seq) < 0) { diff --git a/projects/ucap-webmessenger-app/src/app/pages/account/components/login.page.component.scss b/projects/ucap-webmessenger-app/src/app/pages/account/components/login.page.component.scss index b1617f40..0860127b 100644 --- a/projects/ucap-webmessenger-app/src/app/pages/account/components/login.page.component.scss +++ b/projects/ucap-webmessenger-app/src/app/pages/account/components/login.page.component.scss @@ -90,7 +90,7 @@ $ease-in-out: cubic-bezier(0.785, 0.135, 0.15, 0.86); background-size: auto 133.3333%; background-position: center; background-repeat: none; - transform: scale(0.70); + transform: scale(0.7); transition: transform $time/4 $ease-in-out, box-shadow $time/4 $ease-in-out, opacity $time/4 step-end; opacity: 0; @@ -327,6 +327,15 @@ $ease-in-out: cubic-bezier(0.785, 0.135, 0.15, 0.86); } } +.mat-card-content { + .notice { + p { + line-height: 1.4em; + margin-bottom: 10px; + } + } +} + @media all and (max-width: 1400px) { .slider { &_content { diff --git a/projects/ucap-webmessenger-app/src/app/store/messenger/sync/reducers.ts b/projects/ucap-webmessenger-app/src/app/store/messenger/sync/reducers.ts index ea6d0eed..8c645c5c 100644 --- a/projects/ucap-webmessenger-app/src/app/store/messenger/sync/reducers.ts +++ b/projects/ucap-webmessenger-app/src/app/store/messenger/sync/reducers.ts @@ -103,6 +103,8 @@ export const reducer = createReducer( }), on(clearRoomUsers, (state, action) => { + const roomInfo = state.room.entities[action.roomSeq]; + const roomUserList: RoomUserDetailData = { ...state.roomUser.entities[action.roomSeq] }; @@ -149,6 +151,15 @@ export const reducer = createReducer( return { ...state, + room: adapterRoom.upsertOne( + { + ...roomInfo, + joinUserCount: roomInfo.joinUserCount - action.userSeqs.length + }, + { + ...state.room + } + ), roomUser: !!trgtRoomUserList ? adapterRoomUser.upsertOne(trgtRoomUserList, { ...state.roomUser diff --git a/projects/ucap-webmessenger-app/src/assets/scss/global/_default.scss b/projects/ucap-webmessenger-app/src/assets/scss/global/_default.scss index bb7e0219..4279bbae 100644 --- a/projects/ucap-webmessenger-app/src/assets/scss/global/_default.scss +++ b/projects/ucap-webmessenger-app/src/assets/scss/global/_default.scss @@ -446,6 +446,12 @@ $daesang-grey: ( .list-item { &.selected { background-color: mat-color($accent, 100); + border-right: 2px solid mat-color($accent, 800); + } + } + .mat-simple-snackbar-action { + button { + background-color: mat-color($accent, 500); } } } diff --git a/projects/ucap-webmessenger-ui-room/src/lib/components/list-item.component.html b/projects/ucap-webmessenger-ui-room/src/lib/components/list-item.component.html index 62c621d3..c890fc26 100644 --- a/projects/ucap-webmessenger-ui-room/src/lib/components/list-item.component.html +++ b/projects/ucap-webmessenger-ui-room/src/lib/components/list-item.component.html @@ -69,9 +69,7 @@ -
+