Skip to content

Commit 1270cb1

Browse files
committed
fix(frontend): add update of list every Five minutes
1 parent cb87fe6 commit 1270cb1

File tree

3 files changed

+57
-30
lines changed

3 files changed

+57
-30
lines changed

packages/backend/src/usagers/controllers/usagers.controller.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,22 @@ export class UsagersController {
134134
};
135135
}
136136

137+
@Get("update-manage")
138+
@AllowUserStructureRoles(...USER_STRUCTURE_ROLE_ALL)
139+
public async updateManage(@CurrentUser() user: UserStructureAuthenticated) {
140+
return usagerRepository
141+
.createQueryBuilder()
142+
.select(joinSelectFields(USAGER_LIGHT_ATTRIBUTES))
143+
.where(
144+
`"structureId" = :structureId AND "updatedAt" >= :fiveMinutesAgo`,
145+
{
146+
structureId: user.structureId,
147+
fiveMinutesAgo: new Date(Date.now() - 5 * 60 * 1000),
148+
}
149+
)
150+
.getRawMany();
151+
}
152+
137153
@Post("search-radies")
138154
@AllowUserStructureRoles(...USER_STRUCTURE_ROLE_ALL)
139155
public async searchInRadies(

packages/frontend/src/app/modules/manage-usagers/components/manage-usagers-page/manage-usagers-page.component.ts

Lines changed: 29 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ import { UserStructure } from "@domifa/common";
5151
import { MatomoTracker } from "ngx-matomo-client";
5252
import { AuthService, CustomToastService } from "../../../shared/services";
5353

54-
const AUTO_REFRESH_PERIOD = 300000; // 5 minutes
54+
const FIVE_MINUTES = 5 * 60 * 1000;
5555

5656
@Component({
5757
animations: [fadeInOut],
@@ -152,12 +152,6 @@ export class ManageUsagersPageComponent implements OnInit, OnDestroy {
152152
if (!searchPageLoadedUsagersData.dataLoaded) {
153153
this.loadDataFromAPI();
154154
} else {
155-
if (
156-
searchPageLoadedUsagersData.usagersRadiesFirsts.length >=
157-
searchPageLoadedUsagersData.usagersRadiesTotalCount
158-
) {
159-
this.chargerTousRadies$.next(true);
160-
}
161155
this.updateComponentState(searchPageLoadedUsagersData);
162156
}
163157
}
@@ -173,9 +167,9 @@ export class ManageUsagersPageComponent implements OnInit, OnDestroy {
173167
map((value: string) => value.trim()),
174168
filter((value: string) => value !== this.filters.searchString),
175169
withLatestFrom(this.chargerTousRadies$),
176-
switchMap(([searchString, chargerTousRadies]) =>
177-
this.findRemoteUsagers(chargerTousRadies, searchString)
178-
),
170+
switchMap(([searchString, chargerTousRadies]) => {
171+
return this.findRemoteUsagers(chargerTousRadies, searchString);
172+
}),
179173
tap((searchString: string) => {
180174
this.filters.searchString = searchString ?? null;
181175
this.filters.page = 0;
@@ -189,6 +183,20 @@ export class ManageUsagersPageComponent implements OnInit, OnDestroy {
189183
})
190184
);
191185

186+
this.subscription.add(
187+
timer(FIVE_MINUTES, FIVE_MINUTES)
188+
.pipe(
189+
tap(() => {
190+
this.searching = true;
191+
}),
192+
switchMap(() => this.usagerService.updateManage())
193+
)
194+
.subscribe(() => {
195+
this.searching = false;
196+
this.filters$.next(this.filters);
197+
})
198+
);
199+
192200
this.subscription.add(
193201
this.filters$.subscribe((filters) => {
194202
this.applyFilters({
@@ -201,31 +209,22 @@ export class ManageUsagersPageComponent implements OnInit, OnDestroy {
201209

202210
private loadDataFromAPI() {
203211
this.subscription.add(
204-
timer(0, AUTO_REFRESH_PERIOD)
212+
this.chargerTousRadies$
205213
.pipe(
206214
tap(() => {
207215
this.searching = true;
208216
}),
217+
switchMap((chargerTousRadies) =>
218+
this.usagerService.getSearchPageUsagerData({ chargerTousRadies })
219+
),
209220
switchMap(() => this.chargerTousRadies$),
210-
switchMap((chargerTousRadies) => {
211-
this.searching = true;
212-
return this.usagerService.getSearchPageUsagerData({
213-
chargerTousRadies,
214-
});
215-
}),
216-
switchMap(() => this.chargerTousRadies$),
217-
switchMap((chargerTousRadies) => {
218-
// Call remote usagers to update list
219-
if (!chargerTousRadies) {
220-
return this.findRemoteUsagers(
221-
chargerTousRadies,
222-
this.filters.searchString
223-
);
224-
}
225-
return of(chargerTousRadies);
226-
})
221+
switchMap((chargerTousRadies) =>
222+
this.findRemoteUsagers(chargerTousRadies, this.filters.searchString)
223+
)
227224
)
228-
.subscribe()
225+
.subscribe(() => {
226+
this.searching = false;
227+
})
229228
);
230229
}
231230

@@ -235,7 +234,7 @@ export class ManageUsagersPageComponent implements OnInit, OnDestroy {
235234
): Observable<string> {
236235
if (
237236
!chargerTousRadies &&
238-
searchString.length >= 3 &&
237+
searchString?.length >= 3 &&
239238
(this.filters.statut === "TOUS" || this.filters.statut === "RADIE")
240239
) {
241240
this.searching = true;

packages/frontend/src/app/modules/manage-usagers/services/manage-usagers.service.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,4 +72,16 @@ export class ManageUsagersService {
7272
})
7373
);
7474
}
75+
76+
public updateManage(): Observable<UsagerLight[]> {
77+
return this.http
78+
.get<UsagerLight[]>(`${environment.apiUrl}usagers/update-manage`)
79+
.pipe(
80+
tap((usagers: UsagerLight[]) => {
81+
usagers.forEach((usager) =>
82+
this.store.dispatch(cacheManager.updateUsager({ usager }))
83+
);
84+
})
85+
);
86+
}
7587
}

0 commit comments

Comments
 (0)