import { inject, Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { injectQuery, QueryClient } from '@tanstack/angular-query-experimental'; import { handleRequest } from '../helpers/http'; import { ScannedUser, UserData } from '../models/auth.models'; import { HttpResponse } from '../models/response.interface'; @Injectable({ providedIn: 'root', }) export class UserService { private http = inject(HttpClient); private queryClient = inject(QueryClient); user = injectQuery(() => ({ queryKey: ['user'], refetchOnWindowFocus: false, queryFn: async () => { const response = await handleRequest(this.http.get>(`users/me`)); return response.data; }, })); async scanUserCode(qrcodedata: string) { const request = this.http.post>( `users/scann/access/${qrcodedata}`, {} ); const { data } = await handleRequest(request); return { ...data, qrcodedata }; } refreshUser() { this.queryClient.invalidateQueries({ queryKey: ['user'] }); } } export const injectUserService = () => inject(UserService);