43 lines
1.0 KiB
TypeScript
43 lines
1.0 KiB
TypeScript
import { BehaviorSubject, Observable } from "rxjs";
|
|
import { IDashboardData } from "./types";
|
|
import { getDashboardData } from "./transactions";
|
|
|
|
class DashboardService {
|
|
private dashboardData$ = new BehaviorSubject<IDashboardData | null>(null);
|
|
|
|
/**
|
|
* Get observable for dashboard data
|
|
*/
|
|
getDashboardData$(): Observable<IDashboardData | null> {
|
|
return this.dashboardData$.asObservable();
|
|
}
|
|
|
|
/**
|
|
* Get current dashboard data
|
|
*/
|
|
getCurrentDashboardData(): IDashboardData | null {
|
|
return this.dashboardData$.getValue();
|
|
}
|
|
|
|
/**
|
|
* Update dashboard data (called when fetching new data)
|
|
*/
|
|
updateDashboardData(data: IDashboardData): void {
|
|
this.dashboardData$.next(data);
|
|
}
|
|
|
|
/**
|
|
* Fetch and update dashboard data
|
|
*/
|
|
async fetchDashboardData(params: {
|
|
dateStart?: string;
|
|
dateEnd?: string;
|
|
}): Promise<IDashboardData> {
|
|
const data = await getDashboardData(params);
|
|
this.updateDashboardData(data);
|
|
return data;
|
|
}
|
|
}
|
|
|
|
export const dashboardService = new DashboardService();
|