Aggiornamento grafica

This commit is contained in:
Lorenzo Sanesi
2026-04-04 01:40:43 +02:00
parent e2fe8b264f
commit 162e0de62a
83 changed files with 16246 additions and 157 deletions
@@ -0,0 +1,64 @@
import { Injectable, inject } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import {map, Observable} from 'rxjs';
import { environment } from '../../environments/environment';
import { Group } from '../models/data.models';
import {SuccessResponse} from "../models/api-responses.model";
export interface CreateGroupPayload {
name: string;
members?: string[];
}
export interface UpdateGroupPayload {
name?: string;
description?: string;
isPrivate?: boolean;
avatarUrl?: string;
}
@Injectable({
providedIn: 'root',
})
export class GroupService {
private http = inject(HttpClient);
private readonly base = `${environment.apiUrl}/api/v1/groups`;
getGroups(): Observable<Group[]> {
return this.http.get<SuccessResponse<Group[]>>(this.base).pipe(
map(res => res.data)
);
}
getGroupById(id: number): Observable<Group> {
return this.http.get<SuccessResponse<Group>>(`${this.base}/${id}`).pipe(
map(res => res.data)
);
}
createGroup(payload: CreateGroupPayload): Observable<Group> {
return this.http.post<SuccessResponse<Group>>(this.base, payload).pipe(
map(res => res.data)
);
}
updateGroup(id: number, payload: UpdateGroupPayload): Observable<Group> {
return this.http.put<SuccessResponse<Group>>(`${this.base}/${id}`, payload).pipe(
map(res => res.data)
);
}
deleteGroup(id: number): Observable<void> {
return this.http.delete<void>(`${this.base}/${id}`);
}
addMembers(groupId: number, userIds: number[]): Observable<Group> {
return this.http.put<SuccessResponse<Group>>(`${this.base}/${groupId}/members`, { userIds }).pipe(
map(res => res.data)
);
}
removeMember(groupId: number, userId: number): Observable<void> {
return this.http.delete<void>(`${this.base}/${groupId}/members/${userId}`);
}
}