refactor(server): /user profile endpoint (#9669)

* refactor(server): user profile endpoint

* chore: open api
This commit is contained in:
Jason Rasmussen 2024-05-22 14:31:12 -04:00 committed by GitHub
parent ecd018a826
commit 8f37784eae
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 60 additions and 60 deletions

View File

@ -6,7 +6,7 @@ import 'package:immich_mobile/entities/user.entity.dart';
Widget userAvatar(BuildContext context, User u, {double? radius}) { Widget userAvatar(BuildContext context, User u, {double? radius}) {
final url = final url =
"${Store.get(StoreKey.serverEndpoint)}/user/profile-image/${u.id}"; "${Store.get(StoreKey.serverEndpoint)}/users/${u.id}/profile-image";
final nameFirstLetter = u.name.isNotEmpty ? u.name[0] : ""; final nameFirstLetter = u.name.isNotEmpty ? u.name[0] : "";
return CircleAvatar( return CircleAvatar(
radius: radius, radius: radius,

View File

@ -24,7 +24,7 @@ class UserCircleAvatar extends ConsumerWidget {
Widget build(BuildContext context, WidgetRef ref) { Widget build(BuildContext context, WidgetRef ref) {
bool isDarkTheme = Theme.of(context).brightness == Brightness.dark; bool isDarkTheme = Theme.of(context).brightness == Brightness.dark;
final profileImageUrl = final profileImageUrl =
'${Store.get(StoreKey.serverEndpoint)}/user/profile-image/${user.id}?d=${Random().nextInt(1024)}'; '${Store.get(StoreKey.serverEndpoint)}/users/${user.id}/profile-image?d=${Random().nextInt(1024)}';
final textIcon = Text( final textIcon = Text(
user.name[0].toUpperCase(), user.name[0].toUpperCase(),

View File

@ -219,7 +219,7 @@ Class | Method | HTTP request | Description
*UserApi* | [**deleteUser**](doc//UserApi.md#deleteuser) | **DELETE** /users/{id} | *UserApi* | [**deleteUser**](doc//UserApi.md#deleteuser) | **DELETE** /users/{id} |
*UserApi* | [**getAllUsers**](doc//UserApi.md#getallusers) | **GET** /users | *UserApi* | [**getAllUsers**](doc//UserApi.md#getallusers) | **GET** /users |
*UserApi* | [**getMyUserInfo**](doc//UserApi.md#getmyuserinfo) | **GET** /users/me | *UserApi* | [**getMyUserInfo**](doc//UserApi.md#getmyuserinfo) | **GET** /users/me |
*UserApi* | [**getProfileImage**](doc//UserApi.md#getprofileimage) | **GET** /users/profile-image/{id} | *UserApi* | [**getProfileImage**](doc//UserApi.md#getprofileimage) | **GET** /users/{id}/profile-image |
*UserApi* | [**getUserById**](doc//UserApi.md#getuserbyid) | **GET** /users/{id} | *UserApi* | [**getUserById**](doc//UserApi.md#getuserbyid) | **GET** /users/{id} |
*UserApi* | [**restoreUser**](doc//UserApi.md#restoreuser) | **POST** /users/{id}/restore | *UserApi* | [**restoreUser**](doc//UserApi.md#restoreuser) | **POST** /users/{id}/restore |
*UserApi* | [**updateUser**](doc//UserApi.md#updateuser) | **PUT** /users | *UserApi* | [**updateUser**](doc//UserApi.md#updateuser) | **PUT** /users |

View File

@ -298,13 +298,13 @@ class UserApi {
return null; return null;
} }
/// Performs an HTTP 'GET /users/profile-image/{id}' operation and returns the [Response]. /// Performs an HTTP 'GET /users/{id}/profile-image' operation and returns the [Response].
/// Parameters: /// Parameters:
/// ///
/// * [String] id (required): /// * [String] id (required):
Future<Response> getProfileImageWithHttpInfo(String id,) async { Future<Response> getProfileImageWithHttpInfo(String id,) async {
// ignore: prefer_const_declarations // ignore: prefer_const_declarations
final path = r'/users/profile-image/{id}' final path = r'/users/{id}/profile-image'
.replaceAll('{id}', id); .replaceAll('{id}', id);
// ignore: prefer_final_locals // ignore: prefer_final_locals

View File

@ -6327,49 +6327,6 @@
] ]
} }
}, },
"/users/profile-image/{id}": {
"get": {
"operationId": "getProfileImage",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/octet-stream": {
"schema": {
"format": "binary",
"type": "string"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"User"
]
}
},
"/users/{id}": { "/users/{id}": {
"delete": { "delete": {
"operationId": "deleteUser", "operationId": "deleteUser",
@ -6462,6 +6419,49 @@
] ]
} }
}, },
"/users/{id}/profile-image": {
"get": {
"operationId": "getProfileImage",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/octet-stream": {
"schema": {
"format": "binary",
"type": "string"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"User"
]
}
},
"/users/{id}/restore": { "/users/{id}/restore": {
"post": { "post": {
"operationId": "restoreUser", "operationId": "restoreUser",

View File

@ -2776,16 +2776,6 @@ export function createProfileImage({ createProfileImageDto }: {
body: createProfileImageDto body: createProfileImageDto
}))); })));
} }
export function getProfileImage({ id }: {
id: string;
}, opts?: Oazapfts.RequestOpts) {
return oazapfts.ok(oazapfts.fetchBlob<{
status: 200;
data: Blob;
}>(`/users/profile-image/${encodeURIComponent(id)}`, {
...opts
}));
}
export function deleteUser({ id, deleteUserDto }: { export function deleteUser({ id, deleteUserDto }: {
id: string; id: string;
deleteUserDto: DeleteUserDto; deleteUserDto: DeleteUserDto;
@ -2809,6 +2799,16 @@ export function getUserById({ id }: {
...opts ...opts
})); }));
} }
export function getProfileImage({ id }: {
id: string;
}, opts?: Oazapfts.RequestOpts) {
return oazapfts.ok(oazapfts.fetchBlob<{
status: 200;
data: Blob;
}>(`/users/${encodeURIComponent(id)}/profile-image`, {
...opts
}));
}
export function restoreUser({ id }: { export function restoreUser({ id }: {
id: string; id: string;
}, opts?: Oazapfts.RequestOpts) { }, opts?: Oazapfts.RequestOpts) {

View File

@ -101,7 +101,7 @@ export class UserController {
return this.service.createProfileImage(auth, fileInfo); return this.service.createProfileImage(auth, fileInfo);
} }
@Get('profile-image/:id') @Get(':id/profile-image')
@FileResponse() @FileResponse()
@Authenticated() @Authenticated()
async getProfileImage(@Res() res: Response, @Next() next: NextFunction, @Param() { id }: UUIDParamDto) { async getProfileImage(@Res() res: Response, @Next() next: NextFunction, @Param() { id }: UUIDParamDto) {

View File

@ -169,7 +169,7 @@ export const getAssetThumbnailUrl = (...[assetId, format]: [string, ThumbnailFor
}; };
export const getProfileImageUrl = (...[userId]: [string]) => { export const getProfileImageUrl = (...[userId]: [string]) => {
const path = `/user/profile-image/${userId}`; const path = `/users/${userId}/profile-image`;
return createUrl(path); return createUrl(path);
}; };