notification and chat slow

This commit is contained in:
Peter Maquiran
2024-12-16 12:04:02 +01:00
parent aef73625f0
commit 18a8d90d99
60 changed files with 363 additions and 381 deletions
@@ -189,40 +189,38 @@ export class GroupContactsPage implements OnInit {
async deleteMember(user: UserContacts) {
this.showLoader = true;
// this.chatServiceService.removeMember({
// roomId: this.roomId,
// members: [ user.wxUserId]
// })
// if(this.currentMembers.length >= 3) {
this.showLoader = true;
// this.currentMembers = this.currentMembers.filter( e => e.wxUserId != user.wxUserId)
const result = await this.chatServiceService.removeMemberToRoom({
id: this.roomId,
members: [ user.wxUserId]
})
const result = await this.chatServiceService.removeMemberToRoom({
id: this.roomId,
members: [ user.wxUserId]
})
if(result.isOk()) {
this.currentMembers = this.currentMembers.filter( e => e.wxUserId != user.wxUserId)
if(result.isOk()) {
this.currentMembers = this.currentMembers.filter( e => e.wxUserId != user.wxUserId)
const firstLetter = user.wxFullName.charAt(0)
const firstLetter = user.wxFullName.charAt(0)
if(!this.userContainer[firstLetter]) {
user['isChecked'] = false
this.userContainer[firstLetter] = [user as any]
} else {
user['isChecked'] = false
this.userContainer[firstLetter].push(user as any)
}
if(!this.userContainer[firstLetter]) {
user['isChecked'] = false
this.userContainer[firstLetter] = [user as any]
} else {
user['isChecked'] = false
this.userContainer[firstLetter].push(user as any)
} else if(result.error instanceof HttpRequest) {
this.httpErrorHandle.httpStatusHandle(result.error)
} else if(result.error instanceof ZodError) {
console.log(result.error.issues)
}
} else if(result.error instanceof HttpRequest) {
this.httpErrorHandle.httpStatusHandle(result.error)
} else if(result.error instanceof ZodError) {
console.log(result.error.issues)
}
this.showLoader = false;
this.showLoader = false;
//} else {
// alert('---')
//}
}
@@ -59,6 +59,11 @@
</div>
<div class="message-container rotate-div" *ngIf="message.showMessage">
<div *ngIf="message.sender.wxUserId != SessionStore.user.UserId && roomType == RoomTypeEnum.Group">
<b>
{{ message.sender.wxFullName }}
</b>
</div>
<div class="d-flex justify-content-between">
<div>
<div style="white-space: pre-line;">
@@ -125,8 +130,8 @@
<div class="message-item-options d-flex justify-content-end">
<fa-icon [matMenuTriggerFor]="beforeMenu" icon="chevron-down" class="message-options-icon cursor-pointer"></fa-icon>
<mat-menu class="d-block" #beforeMenu="matMenu" xPosition="before">
<button (click)="messageDelete(message)" class="menuButton d-block py-2 px-10">Apagar mensagem</button>
<button *ngIf="!message.hasAttachment" (click)="editMessage(message)" class="menuButton d-block py-2 px-10">Editar mensagem</button>
<button *ngIf="message.sender.wxUserId == SessionStore.user.UserId" (click)="messageDelete(message)" class="menuButton d-block py-2 px-10">Apagar mensagem</button>
<button *ngIf="!message.hasAttachment && message.sender.wxUserId == SessionStore.user.UserId" (click)="editMessage(message)" class="menuButton d-block py-2 px-10">Editar mensagem</button>
<button (click)="toggleEmojiPicker(message)" class="menuButton d-block py-2 px-10">Reagir mensagem</button>
</mat-menu>
</div>
@@ -300,7 +300,7 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy
return 'allViewed'
} else if(this.allReceived(message)) {
return 'allReceived'
} else if (message.messageStatus == 'send') {
} else if (message.messageHasId) {
return 'enviado'
} else {
return 'enviar'
@@ -5,12 +5,17 @@ import { ThemeService } from 'src/app/services/theme.service'
import { SetRoomOwnerPage } from 'src/app/ui/chat/modal/set-room-owner/set-room-owner.page';
import { SessionStore } from 'src/app/store/session.service';
import { ZodError } from 'zod';
import { MemberListLocalRepository } from 'src/app/module/chat/data/repository/member/member-list-local-repository.service'
import { ChatServiceService } from 'src/app/module/chat/domain/chat-service.service'
import { RoomInfoPage } from '../room-info/room-info.page';
import { RoomType } from 'src/app/core/chat/entity/group';
import { isHttpResponse } from 'src/app/infra/http/http.service';
interface ISetRoomOwner {
addAdminBeforeLeave: null | boolean
}
@Component({
selector: 'app-chat-popover',
templateUrl: './chat-popover.page.html',
@@ -31,7 +36,8 @@ export class ChatPopoverPage implements OnInit {
private navParams: NavParams,
private toastService: ToastService,
public ThemeService: ThemeService,
private ChatServiceService: ChatServiceService
private ChatServiceService: ChatServiceService,
private MemberListLocalRepository: MemberListLocalRepository
) {
this.roomId = this.navParams.get('roomId');
this.isAdmin = this.navParams.get('isAdmin');
@@ -55,7 +61,7 @@ export class ChatPopoverPage implements OnInit {
//Top menu options
//Close
async setRoomOwner() {
async setRoomOwner({addAdminBeforeLeave = null}: ISetRoomOwner) {
let classs;
if (window.innerWidth < 701) {
classs = 'modal modal-desktop'
@@ -68,26 +74,36 @@ export class ChatPopoverPage implements OnInit {
backdropDismiss: true,
componentProps: {
roomId: this.roomId,
isAdmin: this.isAdmin
isAdmin: this.isAdmin,
addAdminBeforeLeave
}
});
await modal.present();
modal.onDidDismiss().then((res)=>{
modal.onDidDismiss().then((res) => {
if(res.data == 'success'){
this.leaveGroup();
//this.ChatSystemService.hidingRoom(this.roomId);
}
});
}
}
setAdmin() {
this.setRoomOwner();
setAdmin(data:ISetRoomOwner) {
this.setRoomOwner(data);
}
async leaveGroup() {
//this.setRoomOwner();
if(this.isAdmin) {
const currentMemberToMap = await this.MemberListLocalRepository.getRoomMemberById(this.roomId)
const adminCount = currentMemberToMap.filter(e => e.isAdmin);
this.toastService._badRequest("É necessário adicionar um administrador");
if(adminCount.length <= 1) {
this.setAdmin({addAdminBeforeLeave: true});
return;
}
}
this.showLoader = true
const result = await this.ChatServiceService.leaveRoom({
id: this.roomId,
@@ -68,6 +68,11 @@
</div>
<div class="message-container rotate-div" *ngIf="message.showMessage">
<div *ngIf="message.sender.wxUserId != SessionStore.user.UserId && RoomStore.room.roomType == RoomTypeEnum.Group">
<b>
{{ message.sender.wxFullName }}
</b>
</div>
<div class="d-flex justify-content-between">
<div>
<div style="white-space: pre-line;">
@@ -142,8 +147,8 @@
<div class="message-item-options d-flex justify-content-end">
<fa-icon [matMenuTriggerFor]="beforeMenu" icon="chevron-down" class="message-options-icon cursor-pointer"></fa-icon>
<mat-menu class="custom-menu d-block" #beforeMenu="matMenu" xPosition="before">
<button (click)="messageDelete(message)" class="menuButton d-block py-2 px-10">Apagar mensagem</button>
<button *ngIf="!message.hasAttachment" (click)="editMessage(message)" class="menuButton d-block py-2 px-10">Editar mensagem</button>
<button *ngIf="message.sender.wxUserId == SessionStore.user.UserId" (click)="messageDelete(message)" class="menuButton d-block py-2 px-10">Apagar mensagem</button>
<button *ngIf="!message.hasAttachment && message.sender.wxUserId == SessionStore.user.UserId" (click)="editMessage(message)" class="menuButton d-block py-2 px-10">Editar mensagem</button>
<button (click)="toggleEmojiPicker(message)" class="menuButton d-block py-2 px-10">Reagir mensagem</button>
</mat-menu>
</div>
@@ -149,7 +149,7 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
return 'allViewed'
} else if(this.allReceived(message)) {
return 'allReceived'
} else if (message.messageStatus == 'send') {
} else if (message.messageHasId) {
return 'enviado'
} else {
return 'enviar'
@@ -19,6 +19,7 @@ export class SetRoomOwnerPage implements OnInit {
textSearch:string = "";
roomId:any;
members:any;
addAdminBeforeLeave: boolean | null;
roomMembers$!: DexieObservable<MemberTable[] | undefined>
constructor(
@@ -31,6 +32,7 @@ export class SetRoomOwnerPage implements OnInit {
) {
this.roomId = this.navParams.get('roomId');
this.members = this.navParams.get('members');
this.addAdminBeforeLeave = this.navParams.get('addAdminBeforeLeave');
}
ngOnInit() {
@@ -68,8 +70,10 @@ export class SetRoomOwnerPage implements OnInit {
});
if(result.isOk()) {
this.chatServiceService.getRoomById(this.roomId);
// this.modalController.dismiss('success');
await this.chatServiceService.getRoomById(this.roomId);
if(this.addAdminBeforeLeave) {
this.modalController.dismiss('success');
}
} else {
this.toastService._badRequest('Não foi possível completar a ação, por favor tente novamente.');
}
+4 -2
View File
@@ -99,9 +99,11 @@ export class MessageViewModal {
}
get messageStatus() {
get messageHasId() {
if(this.id) {
return 'send'
return true
} else {
return false
}
}