création de groupe début
This commit is contained in:
@@ -2,14 +2,14 @@ import { Component, inject, signal } from '@angular/core';
|
||||
import { Router } from "@angular/router";
|
||||
import { ReactiveFormsModule, FormControl } from "@angular/forms";
|
||||
import { addIcons } from "ionicons";
|
||||
import { closeOutline } from "ionicons/icons";
|
||||
import { IonIcon, IonInput, IonItem, IonModal } from "@ionic/angular/standalone";
|
||||
import { closeOutline, addOutline } from "ionicons/icons";
|
||||
import { discussionsService } from "../../../core/chat/discussion.service";
|
||||
import { CommonModule } from "@angular/common";
|
||||
import {CommonModule} from "@angular/common";
|
||||
|
||||
@Component({
|
||||
selector: 'app-menu-nav',
|
||||
imports: [CommonModule, IonModal, IonItem, IonInput, IonIcon, ReactiveFormsModule],
|
||||
imports: [IonModal, IonItem, IonInput, IonIcon, ReactiveFormsModule, CommonModule],
|
||||
templateUrl: './menu-nav.component.html',
|
||||
styleUrl: './menu-nav.component.css'
|
||||
})
|
||||
@@ -21,11 +21,17 @@ export class MenuNav {
|
||||
isModalOpen = signal(false);
|
||||
isLoading = signal(false);
|
||||
errorMsg = signal<string | null>(null);
|
||||
isGroup = signal(false);
|
||||
|
||||
// Mode privé
|
||||
username = new FormControl('');
|
||||
|
||||
// Mode groupe
|
||||
groupName = new FormControl('');
|
||||
groupMembers: FormControl[] = [new FormControl('')];
|
||||
|
||||
constructor() {
|
||||
addIcons({ closeOutline });
|
||||
addIcons({ closeOutline, addOutline });
|
||||
}
|
||||
|
||||
openNav() { this.isModalOpen.set(true); }
|
||||
@@ -33,7 +39,25 @@ export class MenuNav {
|
||||
closeNav() {
|
||||
this.isModalOpen.set(false);
|
||||
this.username.reset();
|
||||
this.groupName.reset();
|
||||
this.groupMembers = [new FormControl('')];
|
||||
this.errorMsg.set(null);
|
||||
this.isGroup.set(false);
|
||||
}
|
||||
|
||||
toggleMode() {
|
||||
this.isGroup.update(v => !v);
|
||||
this.errorMsg.set(null);
|
||||
}
|
||||
|
||||
addMember() {
|
||||
if (this.groupMembers.length < 10) {
|
||||
this.groupMembers.push(new FormControl(''));
|
||||
}
|
||||
}
|
||||
|
||||
removeMember(index: number) {
|
||||
this.groupMembers.splice(index, 1);
|
||||
}
|
||||
|
||||
startConversation() {
|
||||
@@ -57,4 +81,30 @@ export class MenuNav {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
startGroupConversation() {
|
||||
const name = this.groupName.value?.trim();
|
||||
const usernames = this.groupMembers
|
||||
.map(c => c.value?.trim())
|
||||
.filter(v => !!v);
|
||||
|
||||
if (!name || usernames.length === 0 || this.isLoading()) return;
|
||||
|
||||
this.isLoading.set(true);
|
||||
this.errorMsg.set(null);
|
||||
|
||||
this.discussionService.createGroupDiscussion(name, usernames).subscribe({
|
||||
next: (discussion) => {
|
||||
this.isLoading.set(false);
|
||||
this.closeNav();
|
||||
this.router.navigate(['/main/messages', discussion.id]);
|
||||
},
|
||||
error: (err) => {
|
||||
this.isLoading.set(false);
|
||||
this.errorMsg.set(
|
||||
err.status === 404 ? 'Un ou plusieurs utilisateurs introuvables.' : 'Une erreur est survenue.'
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user