diff --git a/backend/src/routes/api/user/user-manage.controller.ts b/backend/src/routes/api/user/user-manage.controller.ts index 4c62661..3b4cbfc 100644 --- a/backend/src/routes/api/user/user-manage.controller.ts +++ b/backend/src/routes/api/user/user-manage.controller.ts @@ -53,6 +53,7 @@ export class UserAdminController { users: found.results.map(EUserBackend2EUser), page: found.page, pages: found.pages, + total: found.totalResults, }; } diff --git a/backend/src/routes/image/image-manage.controller.ts b/backend/src/routes/image/image-manage.controller.ts index dc940c6..13946be 100644 --- a/backend/src/routes/image/image-manage.controller.ts +++ b/backend/src/routes/image/image-manage.controller.ts @@ -75,6 +75,7 @@ export class ImageManageController { images: found.results, page: found.page, pages: found.pages, + total: found.totalResults, }; } diff --git a/frontend/src/app/routes/settings/users/settings-users.component.html b/frontend/src/app/routes/settings/users/settings-users.component.html index b793706..49833fe 100644 --- a/frontend/src/app/routes/settings/users/settings-users.component.html +++ b/frontend/src/app/routes/settings/users/settings-users.component.html @@ -68,7 +68,7 @@ [pageSizeOptions]="pageSizeOptions" [pageSize]="startingPageSize" [hidePageSize]="utilService.isMobile() | async" - length="Infinity" + [length]="totalUsers" aria-label="Select page of users" (page)="updateSubject.next($event)" > diff --git a/frontend/src/app/routes/settings/users/settings-users.component.ts b/frontend/src/app/routes/settings/users/settings-users.component.ts index 5cfb3bc..9b9d12d 100644 --- a/frontend/src/app/routes/settings/users/settings-users.component.ts +++ b/frontend/src/app/routes/settings/users/settings-users.component.ts @@ -28,6 +28,7 @@ export class SettingsUsersComponent implements OnInit { public dataSubject = new BehaviorSubject([]); public updateSubject = new Subject(); + public totalUsers: number = 0; @ViewChild(MatPaginator) paginator: MatPaginator; @@ -126,8 +127,9 @@ export class SettingsUsersComponent implements OnInit { return false; } - if (result.length > 0) { - this.dataSubject.next(result); + if (result.users.length > 0) { + this.dataSubject.next(result.users); + this.totalUsers = result.total; return true; } diff --git a/frontend/src/app/services/api/user-manage.service.ts b/frontend/src/app/services/api/user-manage.service.ts index 467fcda..37f8d5b 100644 --- a/frontend/src/app/services/api/user-manage.service.ts +++ b/frontend/src/app/services/api/user-manage.service.ts @@ -1,18 +1,18 @@ import { Injectable } from '@angular/core'; import { - UserCreateRequest, - UserCreateResponse, - UserDeleteRequest, - UserDeleteResponse, - UserInfoRequest, - UserInfoResponse, - UserListRequest, - UserListResponse, - UserUpdateRequest, - UserUpdateResponse + UserCreateRequest, + UserCreateResponse, + UserDeleteRequest, + UserDeleteResponse, + UserInfoRequest, + UserInfoResponse, + UserListRequest, + UserListResponse, + UserUpdateRequest, + UserUpdateResponse } from 'picsur-shared/dist/dto/api/user-manage.dto'; import { EUser } from 'picsur-shared/dist/entities/user.entity'; -import { AsyncFailable, Open } from 'picsur-shared/dist/types'; +import { AsyncFailable } from 'picsur-shared/dist/types'; import { ApiService } from './api.service'; @Injectable({ @@ -30,8 +30,11 @@ export class UserAdminService { ); } - public async getUsers(count: number, page: number): AsyncFailable { - const result = await this.api.post( + public async getUsers( + count: number, + page: number + ): AsyncFailable { + return await this.api.post( UserListRequest, UserListResponse, '/api/user/list', @@ -40,8 +43,6 @@ export class UserAdminService { page, } ); - - return Open(result, 'users'); } public async createUser(user: UserCreateRequest): AsyncFailable { diff --git a/shared/src/dto/api/image-manage.dto.ts b/shared/src/dto/api/image-manage.dto.ts index 3d0675a..d7dd747 100644 --- a/shared/src/dto/api/image-manage.dto.ts +++ b/shared/src/dto/api/image-manage.dto.ts @@ -22,6 +22,7 @@ export const ImageListResponseSchema = z.object({ images: z.array(EImageSchema), page: IsPosInt(), pages: IsPosInt(), + total: IsPosInt(), }); export class ImageListResponse extends createZodDto(ImageListResponseSchema) {} diff --git a/shared/src/dto/api/user-manage.dto.ts b/shared/src/dto/api/user-manage.dto.ts index d9225ee..a4cd745 100644 --- a/shared/src/dto/api/user-manage.dto.ts +++ b/shared/src/dto/api/user-manage.dto.ts @@ -18,6 +18,7 @@ export const UserListResponseSchema = z.object({ users: z.array(EUserSchema), page: IsPosInt(), pages: IsPosInt(), + total: IsPosInt(), }); export class UserListResponse extends createZodDto(UserListResponseSchema) {}