diff --git a/package-lock.json b/package-lock.json
index a7ddbef..dd725ba 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -22,6 +22,7 @@
"@openapitools/openapi-generator-cli": "^2.30.2",
"@tailwindcss/postcss": "^4.2.1",
"browser-image-compression": "^2.0.2",
+ "jwt-decode": "^4.0.0",
"moment": "^2.30.1",
"postcss": "^8.5.8",
"rimraf": "^6.1.3",
@@ -7158,6 +7159,15 @@
],
"license": "MIT"
},
+ "node_modules/jwt-decode": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-4.0.0.tgz",
+ "integrity": "sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/kleur": {
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
diff --git a/package.json b/package.json
index 21bd441..fdf4dc3 100644
--- a/package.json
+++ b/package.json
@@ -36,6 +36,7 @@
"@openapitools/openapi-generator-cli": "^2.30.2",
"@tailwindcss/postcss": "^4.2.1",
"browser-image-compression": "^2.0.2",
+ "jwt-decode": "^4.0.0",
"moment": "^2.30.1",
"postcss": "^8.5.8",
"rimraf": "^6.1.3",
diff --git a/src/app/components/group-chat/group-chat.component.html b/src/app/components/group-chat/group-chat.component.html
deleted file mode 100644
index cb0cb0b..0000000
--- a/src/app/components/group-chat/group-chat.component.html
+++ /dev/null
@@ -1,3 +0,0 @@
-
- group-chat works!
-
diff --git a/src/app/components/group-chat/group-chat.component.scss b/src/app/components/group-chat/group-chat.component.scss
deleted file mode 100644
index e69de29..0000000
diff --git a/src/app/components/group-chat/group-chat.component.ts b/src/app/components/group-chat/group-chat.component.ts
deleted file mode 100644
index 055b50f..0000000
--- a/src/app/components/group-chat/group-chat.component.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import {Component, OnInit} from '@angular/core';
-
-@Component({
- selector: 'app-group-chat',
- templateUrl: './group-chat.component.html',
- styleUrls: ['./group-chat.component.scss'],
-})
-export class GroupChatComponent implements OnInit {
-
- constructor() {
- }
-
- ngOnInit() {
- }
-
-}
diff --git a/src/app/components/message/message.component.html b/src/app/components/message/message.component.html
index 6159413..def7631 100644
--- a/src/app/components/message/message.component.html
+++ b/src/app/components/message/message.component.html
@@ -1,3 +1,51 @@
-
- message works!
-
+@if (messages().length) {
+ @for (message of messages(); track message.id) {
+ @if (message.userId === currentUser) {
+
+
+
+ {{ message.libelle }}
+
+
+ {{ message.sendDate | date:'HH:mm' }}
+
+
+
+
+ } @else {
+
+
+ {{ message.username.substring(0, 2) }}
+
+
+
+ {{ message.username }}
+
+
+ {{ message.libelle }}
+
+
+ {{ message.sendDate | date:'HH:mm' }}
+
+
+
+ }
+ }
+} @else {
+
+
+
+
+
C'est bien calme par ici
+
Les messages du groupe apparaƮtront ici
+
+
+
+}
\ No newline at end of file
diff --git a/src/app/components/message/message.component.ts b/src/app/components/message/message.component.ts
index 69e685e..7d8ac2d 100644
--- a/src/app/components/message/message.component.ts
+++ b/src/app/components/message/message.component.ts
@@ -1,16 +1,58 @@
-import {Component, OnInit} from '@angular/core';
+import {Component, inject, input, OnInit, signal} from '@angular/core';
+import {GetGroupDetailsDto, GetMessageDto, MessagesService} from "../../services/api";
+import {firstValueFrom} from "rxjs";
+import {IonicModule, LoadingController, ToastController} from "@ionic/angular";
+import {AuthManageService} from "../../services/auth-manage";
+import {jwtDecode} from "jwt-decode";
+import {DatePipe} from "@angular/common";
+import {addIcons} from "ionicons";
+import {chatbubbleEllipsesOutline, moonOutline} from 'ionicons/icons';
+
+addIcons({
+ "chatbubble-ellipses-outline" : chatbubbleEllipsesOutline,
+ "moon-outline" : moonOutline,
+})
@Component({
selector: 'app-message',
templateUrl: './message.component.html',
styleUrls: ['./message.component.scss'],
+ imports: [
+ DatePipe,
+ IonicModule
+ ]
})
export class MessageComponent implements OnInit {
+ private messagesService = inject(MessagesService);
+ private authService = inject(AuthManageService);
+ private loadCtrl = inject(LoadingController);
+ private toastCtrl = inject(ToastController);
- constructor() {
+ messages = signal([]);
+ groupId = input.required();
+
+ currentUser = 0;
+
+ async ngOnInit() {
+ const loading = await this.loadCtrl.create({
+ message: 'Chargement...',
+ spinner: 'lines-sharp-small'
+ });
+ await loading.present();
+
+ try {
+ const messages = await firstValueFrom(this.messagesService.getMessagesEndpoint(this.groupId()));
+ this.messages.set(messages);
+ this.currentUser = Number(jwtDecode(this.authService.getToken()).UserId);
+ }
+ catch {
+ const toast = await this.toastCtrl.create({
+ message: 'Impossible de charger les messages.',
+ duration: 2000,
+ color: 'danger'
+ });
+ await toast.present();
+ }
+ await loading.dismiss();
}
-
- ngOnInit() {
- }
-
}
diff --git a/src/app/pages/home/home.component.html b/src/app/pages/home/home.component.html
index 30050b2..5fbb719 100644
--- a/src/app/pages/home/home.component.html
+++ b/src/app/pages/home/home.component.html
@@ -49,7 +49,7 @@
@if (groupSelected()) {
- test
+
}
diff --git a/src/app/pages/home/home.component.ts b/src/app/pages/home/home.component.ts
index 0277898..eb656a7 100644
--- a/src/app/pages/home/home.component.ts
+++ b/src/app/pages/home/home.component.ts
@@ -28,6 +28,7 @@ import {GalleryComponent} from "../../components/gallery/gallery.component";
import {GroupsComponent} from "../../components/groups/groups.component";
import {GroupFormComponent} from "../../components/group-form/group-form.component";
import {GroupInfoComponent} from "../../components/group-info/group-info.component";
+import {MessageComponent} from "../../components/message/message.component";
addIcons({
'profile': personOutline,
@@ -59,6 +60,7 @@ type View = 'menu' | 'profile' | 'password' | 'designation' | 'gallery' | 'group
GroupsComponent,
GroupFormComponent,
GroupInfoComponent,
+ MessageComponent,
]
})
export class HomeComponent implements OnInit {
diff --git a/src/app/pages/ranking/ranking.component.ts b/src/app/pages/ranking/ranking.component.ts
index fe60906..735bc33 100644
--- a/src/app/pages/ranking/ranking.component.ts
+++ b/src/app/pages/ranking/ranking.component.ts
@@ -11,17 +11,13 @@ import {firstValueFrom} from "rxjs";
IonicModule
]
})
-export class RankingComponent implements OnInit {
+export class RankingComponent {
private overallRankingService = inject(OverallrankingService);
private loadCtrl = inject(LoadingController);
private toastCtrl = inject(ToastController);
users = signal([]);
- async ngOnInit() {
- await this.fetchUsers();
- }
-
async ionViewWillEnter() {
await this.fetchUsers();
}
diff --git a/src/app/pages/social/social.component.ts b/src/app/pages/social/social.component.ts
index 22aa688..ec44c30 100644
--- a/src/app/pages/social/social.component.ts
+++ b/src/app/pages/social/social.component.ts
@@ -24,23 +24,10 @@ addIcons({
SearchFriendComponent
]
})
-export class SocialComponent implements OnInit {
+export class SocialComponent {
private friendsState = inject(FriendsStateService);
private loadCtrl = inject(LoadingController);
- async ngOnInit() {
- const loading = await this.loadCtrl.create({
- message: 'Chargement...',
- spinner: 'lines-sharp-small'
- });
- await loading.present();
-
- await this.friendsState.fetchFriendsRequest();
- await this.friendsState.fetchFriends();
-
- await loading.dismiss();
- }
-
async ionViewWillEnter() {
const loading = await this.loadCtrl.create({
message: 'Chargement...',