mirror of
				https://github.com/KevinMidboe/immich.git
				synced 2025-10-29 17:40:28 +00:00 
			
		
		
		
	feat(web) Individual assets shared mechanism (#1317)
* Create shared link modal for individual asset * Added API to create asset shared link * Added viewer for individual shared link * Added multiselection app bar * Refactor gallery viewer to its own component * Refactor * Refactor * Add and remove asset from shared link * Fixed test * Fixed notification card doesn't wrap * Add check asset access when created asset shared link * pr feedback
This commit is contained in:
		
							
								
								
									
										6
									
								
								mobile/openapi/.openapi-generator/FILES
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								mobile/openapi/.openapi-generator/FILES
									
									
									
										generated
									
									
									
								
							| @@ -31,6 +31,7 @@ doc/CheckExistingAssetsDto.md | |||||||
| doc/CheckExistingAssetsResponseDto.md | doc/CheckExistingAssetsResponseDto.md | ||||||
| doc/CreateAlbumDto.md | doc/CreateAlbumDto.md | ||||||
| doc/CreateAlbumShareLinkDto.md | doc/CreateAlbumShareLinkDto.md | ||||||
|  | doc/CreateAssetsShareLinkDto.md | ||||||
| doc/CreateProfileImageResponseDto.md | doc/CreateProfileImageResponseDto.md | ||||||
| doc/CreateTagDto.md | doc/CreateTagDto.md | ||||||
| doc/CreateUserDto.md | doc/CreateUserDto.md | ||||||
| @@ -86,6 +87,7 @@ doc/ThumbnailFormat.md | |||||||
| doc/TimeGroupEnum.md | doc/TimeGroupEnum.md | ||||||
| doc/UpdateAlbumDto.md | doc/UpdateAlbumDto.md | ||||||
| doc/UpdateAssetDto.md | doc/UpdateAssetDto.md | ||||||
|  | doc/UpdateAssetsToSharedLinkDto.md | ||||||
| doc/UpdateTagDto.md | doc/UpdateTagDto.md | ||||||
| doc/UpdateUserDto.md | doc/UpdateUserDto.md | ||||||
| doc/UpsertDeviceInfoDto.md | doc/UpsertDeviceInfoDto.md | ||||||
| @@ -140,6 +142,7 @@ lib/model/check_existing_assets_dto.dart | |||||||
| lib/model/check_existing_assets_response_dto.dart | lib/model/check_existing_assets_response_dto.dart | ||||||
| lib/model/create_album_dto.dart | lib/model/create_album_dto.dart | ||||||
| lib/model/create_album_share_link_dto.dart | lib/model/create_album_share_link_dto.dart | ||||||
|  | lib/model/create_assets_share_link_dto.dart | ||||||
| lib/model/create_profile_image_response_dto.dart | lib/model/create_profile_image_response_dto.dart | ||||||
| lib/model/create_tag_dto.dart | lib/model/create_tag_dto.dart | ||||||
| lib/model/create_user_dto.dart | lib/model/create_user_dto.dart | ||||||
| @@ -188,6 +191,7 @@ lib/model/thumbnail_format.dart | |||||||
| lib/model/time_group_enum.dart | lib/model/time_group_enum.dart | ||||||
| lib/model/update_album_dto.dart | lib/model/update_album_dto.dart | ||||||
| lib/model/update_asset_dto.dart | lib/model/update_asset_dto.dart | ||||||
|  | lib/model/update_assets_to_shared_link_dto.dart | ||||||
| lib/model/update_tag_dto.dart | lib/model/update_tag_dto.dart | ||||||
| lib/model/update_user_dto.dart | lib/model/update_user_dto.dart | ||||||
| lib/model/upsert_device_info_dto.dart | lib/model/upsert_device_info_dto.dart | ||||||
| @@ -224,6 +228,7 @@ test/check_existing_assets_dto_test.dart | |||||||
| test/check_existing_assets_response_dto_test.dart | test/check_existing_assets_response_dto_test.dart | ||||||
| test/create_album_dto_test.dart | test/create_album_dto_test.dart | ||||||
| test/create_album_share_link_dto_test.dart | test/create_album_share_link_dto_test.dart | ||||||
|  | test/create_assets_share_link_dto_test.dart | ||||||
| test/create_profile_image_response_dto_test.dart | test/create_profile_image_response_dto_test.dart | ||||||
| test/create_tag_dto_test.dart | test/create_tag_dto_test.dart | ||||||
| test/create_user_dto_test.dart | test/create_user_dto_test.dart | ||||||
| @@ -279,6 +284,7 @@ test/thumbnail_format_test.dart | |||||||
| test/time_group_enum_test.dart | test/time_group_enum_test.dart | ||||||
| test/update_album_dto_test.dart | test/update_album_dto_test.dart | ||||||
| test/update_asset_dto_test.dart | test/update_asset_dto_test.dart | ||||||
|  | test/update_assets_to_shared_link_dto_test.dart | ||||||
| test/update_tag_dto_test.dart | test/update_tag_dto_test.dart | ||||||
| test/update_user_dto_test.dart | test/update_user_dto_test.dart | ||||||
| test/upsert_device_info_dto_test.dart | test/upsert_device_info_dto_test.dart | ||||||
|   | |||||||
							
								
								
									
										6
									
								
								mobile/openapi/README.md
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								mobile/openapi/README.md
									
									
									
										generated
									
									
									
								
							| @@ -3,7 +3,7 @@ Immich API | |||||||
| 
 | 
 | ||||||
| This Dart package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: | This Dart package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: | ||||||
| 
 | 
 | ||||||
| - API version: 1.40.0 | - API version: 1.41.1 | ||||||
| - Build package: org.openapitools.codegen.languages.DartClientCodegen | - Build package: org.openapitools.codegen.languages.DartClientCodegen | ||||||
| 
 | 
 | ||||||
| ## Requirements | ## Requirements | ||||||
| @@ -77,6 +77,7 @@ Class | Method | HTTP request | Description | |||||||
| *AlbumApi* | [**updateAlbumInfo**](doc//AlbumApi.md#updatealbuminfo) | **PATCH** /album/{albumId} |  | *AlbumApi* | [**updateAlbumInfo**](doc//AlbumApi.md#updatealbuminfo) | **PATCH** /album/{albumId} |  | ||||||
| *AssetApi* | [**checkDuplicateAsset**](doc//AssetApi.md#checkduplicateasset) | **POST** /asset/check |  | *AssetApi* | [**checkDuplicateAsset**](doc//AssetApi.md#checkduplicateasset) | **POST** /asset/check |  | ||||||
| *AssetApi* | [**checkExistingAssets**](doc//AssetApi.md#checkexistingassets) | **POST** /asset/exist |  | *AssetApi* | [**checkExistingAssets**](doc//AssetApi.md#checkexistingassets) | **POST** /asset/exist |  | ||||||
|  | *AssetApi* | [**createAssetsSharedLink**](doc//AssetApi.md#createassetssharedlink) | **POST** /asset/shared-link |  | ||||||
| *AssetApi* | [**deleteAsset**](doc//AssetApi.md#deleteasset) | **DELETE** /asset |  | *AssetApi* | [**deleteAsset**](doc//AssetApi.md#deleteasset) | **DELETE** /asset |  | ||||||
| *AssetApi* | [**downloadFile**](doc//AssetApi.md#downloadfile) | **GET** /asset/download/{assetId} |  | *AssetApi* | [**downloadFile**](doc//AssetApi.md#downloadfile) | **GET** /asset/download/{assetId} |  | ||||||
| *AssetApi* | [**downloadFiles**](doc//AssetApi.md#downloadfiles) | **POST** /asset/download-files |  | *AssetApi* | [**downloadFiles**](doc//AssetApi.md#downloadfiles) | **POST** /asset/download-files |  | ||||||
| @@ -94,6 +95,7 @@ Class | Method | HTTP request | Description | |||||||
| *AssetApi* | [**searchAsset**](doc//AssetApi.md#searchasset) | **POST** /asset/search |  | *AssetApi* | [**searchAsset**](doc//AssetApi.md#searchasset) | **POST** /asset/search |  | ||||||
| *AssetApi* | [**serveFile**](doc//AssetApi.md#servefile) | **GET** /asset/file/{assetId} |  | *AssetApi* | [**serveFile**](doc//AssetApi.md#servefile) | **GET** /asset/file/{assetId} |  | ||||||
| *AssetApi* | [**updateAsset**](doc//AssetApi.md#updateasset) | **PUT** /asset/{assetId} |  | *AssetApi* | [**updateAsset**](doc//AssetApi.md#updateasset) | **PUT** /asset/{assetId} |  | ||||||
|  | *AssetApi* | [**updateAssetsInSharedLink**](doc//AssetApi.md#updateassetsinsharedlink) | **PATCH** /asset/shared-link |  | ||||||
| *AssetApi* | [**uploadFile**](doc//AssetApi.md#uploadfile) | **POST** /asset/upload |  | *AssetApi* | [**uploadFile**](doc//AssetApi.md#uploadfile) | **POST** /asset/upload |  | ||||||
| *AuthenticationApi* | [**adminSignUp**](doc//AuthenticationApi.md#adminsignup) | **POST** /auth/admin-sign-up |  | *AuthenticationApi* | [**adminSignUp**](doc//AuthenticationApi.md#adminsignup) | **POST** /auth/admin-sign-up |  | ||||||
| *AuthenticationApi* | [**changePassword**](doc//AuthenticationApi.md#changepassword) | **POST** /auth/change-password |  | *AuthenticationApi* | [**changePassword**](doc//AuthenticationApi.md#changepassword) | **POST** /auth/change-password |  | ||||||
| @@ -167,6 +169,7 @@ Class | Method | HTTP request | Description | |||||||
|  - [CheckExistingAssetsResponseDto](doc//CheckExistingAssetsResponseDto.md) |  - [CheckExistingAssetsResponseDto](doc//CheckExistingAssetsResponseDto.md) | ||||||
|  - [CreateAlbumDto](doc//CreateAlbumDto.md) |  - [CreateAlbumDto](doc//CreateAlbumDto.md) | ||||||
|  - [CreateAlbumShareLinkDto](doc//CreateAlbumShareLinkDto.md) |  - [CreateAlbumShareLinkDto](doc//CreateAlbumShareLinkDto.md) | ||||||
|  |  - [CreateAssetsShareLinkDto](doc//CreateAssetsShareLinkDto.md) | ||||||
|  - [CreateProfileImageResponseDto](doc//CreateProfileImageResponseDto.md) |  - [CreateProfileImageResponseDto](doc//CreateProfileImageResponseDto.md) | ||||||
|  - [CreateTagDto](doc//CreateTagDto.md) |  - [CreateTagDto](doc//CreateTagDto.md) | ||||||
|  - [CreateUserDto](doc//CreateUserDto.md) |  - [CreateUserDto](doc//CreateUserDto.md) | ||||||
| @@ -215,6 +218,7 @@ Class | Method | HTTP request | Description | |||||||
|  - [TimeGroupEnum](doc//TimeGroupEnum.md) |  - [TimeGroupEnum](doc//TimeGroupEnum.md) | ||||||
|  - [UpdateAlbumDto](doc//UpdateAlbumDto.md) |  - [UpdateAlbumDto](doc//UpdateAlbumDto.md) | ||||||
|  - [UpdateAssetDto](doc//UpdateAssetDto.md) |  - [UpdateAssetDto](doc//UpdateAssetDto.md) | ||||||
|  |  - [UpdateAssetsToSharedLinkDto](doc//UpdateAssetsToSharedLinkDto.md) | ||||||
|  - [UpdateTagDto](doc//UpdateTagDto.md) |  - [UpdateTagDto](doc//UpdateTagDto.md) | ||||||
|  - [UpdateUserDto](doc//UpdateUserDto.md) |  - [UpdateUserDto](doc//UpdateUserDto.md) | ||||||
|  - [UpsertDeviceInfoDto](doc//UpsertDeviceInfoDto.md) |  - [UpsertDeviceInfoDto](doc//UpsertDeviceInfoDto.md) | ||||||
|   | |||||||
							
								
								
									
										10
									
								
								mobile/openapi/doc/APIKeyApi.md
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										10
									
								
								mobile/openapi/doc/APIKeyApi.md
									
									
									
										generated
									
									
									
								
							| @@ -21,6 +21,8 @@ Method | HTTP request | Description | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -62,6 +64,8 @@ No authorization required | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -102,6 +106,8 @@ No authorization required | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -143,6 +149,8 @@ No authorization required | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -180,6 +188,8 @@ No authorization required | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
|   | |||||||
							
								
								
									
										24
									
								
								mobile/openapi/doc/AlbumApi.md
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										24
									
								
								mobile/openapi/doc/AlbumApi.md
									
									
									
										generated
									
									
									
								
							| @@ -28,6 +28,8 @@ Method | HTTP request | Description | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -77,6 +79,8 @@ Name | Type | Description  | Notes | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -126,6 +130,8 @@ Name | Type | Description  | Notes | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -173,6 +179,8 @@ Name | Type | Description  | Notes | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -220,6 +228,8 @@ Name | Type | Description  | Notes | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -266,6 +276,8 @@ void (empty response body) | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -315,6 +327,8 @@ Name | Type | Description  | Notes | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -358,6 +372,8 @@ This endpoint does not need any parameter. | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -405,6 +421,8 @@ Name | Type | Description  | Notes | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -454,6 +472,8 @@ Name | Type | Description  | Notes | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -503,6 +523,8 @@ Name | Type | Description  | Notes | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -551,6 +573,8 @@ void (empty response body) | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
|   | |||||||
							
								
								
									
										128
									
								
								mobile/openapi/doc/AssetApi.md
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										128
									
								
								mobile/openapi/doc/AssetApi.md
									
									
									
										generated
									
									
									
								
							| @@ -11,6 +11,7 @@ Method | HTTP request | Description | |||||||
| ------------- | ------------- | ------------- | ------------- | ------------- | ------------- | ||||||
| [**checkDuplicateAsset**](AssetApi.md#checkduplicateasset) | **POST** /asset/check |  | [**checkDuplicateAsset**](AssetApi.md#checkduplicateasset) | **POST** /asset/check |  | ||||||
| [**checkExistingAssets**](AssetApi.md#checkexistingassets) | **POST** /asset/exist |  | [**checkExistingAssets**](AssetApi.md#checkexistingassets) | **POST** /asset/exist |  | ||||||
|  | [**createAssetsSharedLink**](AssetApi.md#createassetssharedlink) | **POST** /asset/shared-link |  | ||||||
| [**deleteAsset**](AssetApi.md#deleteasset) | **DELETE** /asset |  | [**deleteAsset**](AssetApi.md#deleteasset) | **DELETE** /asset |  | ||||||
| [**downloadFile**](AssetApi.md#downloadfile) | **GET** /asset/download/{assetId} |  | [**downloadFile**](AssetApi.md#downloadfile) | **GET** /asset/download/{assetId} |  | ||||||
| [**downloadFiles**](AssetApi.md#downloadfiles) | **POST** /asset/download-files |  | [**downloadFiles**](AssetApi.md#downloadfiles) | **POST** /asset/download-files |  | ||||||
| @@ -28,6 +29,7 @@ Method | HTTP request | Description | |||||||
| [**searchAsset**](AssetApi.md#searchasset) | **POST** /asset/search |  | [**searchAsset**](AssetApi.md#searchasset) | **POST** /asset/search |  | ||||||
| [**serveFile**](AssetApi.md#servefile) | **GET** /asset/file/{assetId} |  | [**serveFile**](AssetApi.md#servefile) | **GET** /asset/file/{assetId} |  | ||||||
| [**updateAsset**](AssetApi.md#updateasset) | **PUT** /asset/{assetId} |  | [**updateAsset**](AssetApi.md#updateasset) | **PUT** /asset/{assetId} |  | ||||||
|  | [**updateAssetsInSharedLink**](AssetApi.md#updateassetsinsharedlink) | **PATCH** /asset/shared-link |  | ||||||
| [**uploadFile**](AssetApi.md#uploadfile) | **POST** /asset/upload |  | [**uploadFile**](AssetApi.md#uploadfile) | **POST** /asset/upload |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @@ -129,11 +131,62 @@ Name | Type | Description  | Notes | |||||||
| 
 | 
 | ||||||
| [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) | [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) | ||||||
| 
 | 
 | ||||||
|  | # **createAssetsSharedLink** | ||||||
|  | > SharedLinkResponseDto createAssetsSharedLink(createAssetsShareLinkDto) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### Example | ||||||
|  | ```dart | ||||||
|  | import 'package:openapi/api.dart'; | ||||||
|  | // TODO Configure HTTP Bearer authorization: bearer | ||||||
|  | // Case 1. Use String Token | ||||||
|  | //defaultApiClient.getAuthentication<HttpBearerAuth>('bearer').setAccessToken('YOUR_ACCESS_TOKEN'); | ||||||
|  | // Case 2. Use Function which generate token. | ||||||
|  | // String yourTokenGeneratorFunction() { ... } | ||||||
|  | //defaultApiClient.getAuthentication<HttpBearerAuth>('bearer').setAccessToken(yourTokenGeneratorFunction); | ||||||
|  | 
 | ||||||
|  | final api_instance = AssetApi(); | ||||||
|  | final createAssetsShareLinkDto = CreateAssetsShareLinkDto(); // CreateAssetsShareLinkDto |  | ||||||
|  | 
 | ||||||
|  | try { | ||||||
|  |     final result = api_instance.createAssetsSharedLink(createAssetsShareLinkDto); | ||||||
|  |     print(result); | ||||||
|  | } catch (e) { | ||||||
|  |     print('Exception when calling AssetApi->createAssetsSharedLink: $e\n'); | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ### Parameters | ||||||
|  | 
 | ||||||
|  | Name | Type | Description  | Notes | ||||||
|  | ------------- | ------------- | ------------- | ------------- | ||||||
|  |  **createAssetsShareLinkDto** | [**CreateAssetsShareLinkDto**](CreateAssetsShareLinkDto.md)|  |  | ||||||
|  | 
 | ||||||
|  | ### Return type | ||||||
|  | 
 | ||||||
|  | [**SharedLinkResponseDto**](SharedLinkResponseDto.md) | ||||||
|  | 
 | ||||||
|  | ### Authorization | ||||||
|  | 
 | ||||||
|  | [bearer](../README.md#bearer) | ||||||
|  | 
 | ||||||
|  | ### HTTP request headers | ||||||
|  | 
 | ||||||
|  |  - **Content-Type**: application/json | ||||||
|  |  - **Accept**: application/json | ||||||
|  | 
 | ||||||
|  | [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) | ||||||
|  | 
 | ||||||
| # **deleteAsset** | # **deleteAsset** | ||||||
| > List<DeleteAssetResponseDto> deleteAsset(deleteAssetDto) | > List<DeleteAssetResponseDto> deleteAsset(deleteAssetDto) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -181,6 +234,8 @@ Name | Type | Description  | Notes | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -232,6 +287,8 @@ Name | Type | Description  | Notes | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -279,6 +336,8 @@ Name | Type | Description  | Notes | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -424,6 +483,8 @@ Name | Type | Description  | Notes | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -471,6 +532,8 @@ Name | Type | Description  | Notes | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -518,6 +581,8 @@ Name | Type | Description  | Notes | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -561,6 +626,8 @@ This endpoint does not need any parameter. | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -604,6 +671,8 @@ This endpoint does not need any parameter. | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -653,6 +722,8 @@ Name | Type | Description  | Notes | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -696,6 +767,8 @@ This endpoint does not need any parameter. | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -788,6 +861,8 @@ Name | Type | Description  | Notes | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -835,6 +910,8 @@ Name | Type | Description  | Notes | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -932,11 +1009,62 @@ Name | Type | Description  | Notes | |||||||
| 
 | 
 | ||||||
| [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) | [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) | ||||||
| 
 | 
 | ||||||
|  | # **updateAssetsInSharedLink** | ||||||
|  | > SharedLinkResponseDto updateAssetsInSharedLink(updateAssetsToSharedLinkDto) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### Example | ||||||
|  | ```dart | ||||||
|  | import 'package:openapi/api.dart'; | ||||||
|  | // TODO Configure HTTP Bearer authorization: bearer | ||||||
|  | // Case 1. Use String Token | ||||||
|  | //defaultApiClient.getAuthentication<HttpBearerAuth>('bearer').setAccessToken('YOUR_ACCESS_TOKEN'); | ||||||
|  | // Case 2. Use Function which generate token. | ||||||
|  | // String yourTokenGeneratorFunction() { ... } | ||||||
|  | //defaultApiClient.getAuthentication<HttpBearerAuth>('bearer').setAccessToken(yourTokenGeneratorFunction); | ||||||
|  | 
 | ||||||
|  | final api_instance = AssetApi(); | ||||||
|  | final updateAssetsToSharedLinkDto = UpdateAssetsToSharedLinkDto(); // UpdateAssetsToSharedLinkDto |  | ||||||
|  | 
 | ||||||
|  | try { | ||||||
|  |     final result = api_instance.updateAssetsInSharedLink(updateAssetsToSharedLinkDto); | ||||||
|  |     print(result); | ||||||
|  | } catch (e) { | ||||||
|  |     print('Exception when calling AssetApi->updateAssetsInSharedLink: $e\n'); | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ### Parameters | ||||||
|  | 
 | ||||||
|  | Name | Type | Description  | Notes | ||||||
|  | ------------- | ------------- | ------------- | ------------- | ||||||
|  |  **updateAssetsToSharedLinkDto** | [**UpdateAssetsToSharedLinkDto**](UpdateAssetsToSharedLinkDto.md)|  |  | ||||||
|  | 
 | ||||||
|  | ### Return type | ||||||
|  | 
 | ||||||
|  | [**SharedLinkResponseDto**](SharedLinkResponseDto.md) | ||||||
|  | 
 | ||||||
|  | ### Authorization | ||||||
|  | 
 | ||||||
|  | [bearer](../README.md#bearer) | ||||||
|  | 
 | ||||||
|  | ### HTTP request headers | ||||||
|  | 
 | ||||||
|  |  - **Content-Type**: application/json | ||||||
|  |  - **Accept**: application/json | ||||||
|  | 
 | ||||||
|  | [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) | ||||||
|  | 
 | ||||||
| # **uploadFile** | # **uploadFile** | ||||||
| > AssetFileUploadResponseDto uploadFile(assetData) | > AssetFileUploadResponseDto uploadFile(assetData) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
|   | |||||||
							
								
								
									
										10
									
								
								mobile/openapi/doc/AuthenticationApi.md
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										10
									
								
								mobile/openapi/doc/AuthenticationApi.md
									
									
									
										generated
									
									
									
								
							| @@ -21,6 +21,8 @@ Method | HTTP request | Description | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -62,6 +64,8 @@ No authorization required | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -109,6 +113,8 @@ Name | Type | Description  | Notes | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -150,6 +156,8 @@ No authorization required | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -187,6 +195,8 @@ No authorization required | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
|   | |||||||
							
								
								
									
										18
									
								
								mobile/openapi/doc/CreateAssetsShareLinkDto.md
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								mobile/openapi/doc/CreateAssetsShareLinkDto.md
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | |||||||
|  | # openapi.model.CreateAssetsShareLinkDto | ||||||
|  | 
 | ||||||
|  | ## Load the model package | ||||||
|  | ```dart | ||||||
|  | import 'package:openapi/api.dart'; | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ## Properties | ||||||
|  | Name | Type | Description | Notes | ||||||
|  | ------------ | ------------- | ------------- | ------------- | ||||||
|  | **assetIds** | **List<String>** |  | [default to const []] | ||||||
|  | **expiredAt** | **String** |  | [optional]  | ||||||
|  | **allowUpload** | **bool** |  | [optional]  | ||||||
|  | **description** | **String** |  | [optional]  | ||||||
|  | 
 | ||||||
|  | [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
							
								
								
									
										2
									
								
								mobile/openapi/doc/DeviceInfoApi.md
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								mobile/openapi/doc/DeviceInfoApi.md
									
									
									
										generated
									
									
									
								
							| @@ -117,6 +117,8 @@ Name | Type | Description  | Notes | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
|   | |||||||
							
								
								
									
										6
									
								
								mobile/openapi/doc/JobApi.md
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								mobile/openapi/doc/JobApi.md
									
									
									
										generated
									
									
									
								
							| @@ -19,6 +19,8 @@ Method | HTTP request | Description | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -62,6 +64,8 @@ This endpoint does not need any parameter. | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -109,6 +113,8 @@ Name | Type | Description  | Notes | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
|   | |||||||
							
								
								
									
										10
									
								
								mobile/openapi/doc/OAuthApi.md
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										10
									
								
								mobile/openapi/doc/OAuthApi.md
									
									
									
										generated
									
									
									
								
							| @@ -21,6 +21,8 @@ Method | HTTP request | Description | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -62,6 +64,8 @@ No authorization required | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -103,6 +107,8 @@ No authorization required | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -144,6 +150,8 @@ No authorization required | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -180,6 +188,8 @@ No authorization required | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
|   | |||||||
							
								
								
									
										8
									
								
								mobile/openapi/doc/ServerInfoApi.md
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								mobile/openapi/doc/ServerInfoApi.md
									
									
									
										generated
									
									
									
								
							| @@ -20,6 +20,8 @@ Method | HTTP request | Description | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -57,6 +59,8 @@ No authorization required | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -94,6 +98,8 @@ No authorization required | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -131,6 +137,8 @@ No authorization required | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
|   | |||||||
							
								
								
									
										10
									
								
								mobile/openapi/doc/ShareApi.md
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										10
									
								
								mobile/openapi/doc/ShareApi.md
									
									
									
										generated
									
									
									
								
							| @@ -21,6 +21,8 @@ Method | HTTP request | Description | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -64,6 +66,8 @@ No authorization required | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -101,6 +105,8 @@ No authorization required | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -138,6 +144,8 @@ No authorization required | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -179,6 +187,8 @@ No authorization required | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
|   | |||||||
							
								
								
									
										8
									
								
								mobile/openapi/doc/SystemConfigApi.md
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								mobile/openapi/doc/SystemConfigApi.md
									
									
									
										generated
									
									
									
								
							| @@ -20,6 +20,8 @@ Method | HTTP request | Description | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -63,6 +65,8 @@ This endpoint does not need any parameter. | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -106,6 +110,8 @@ This endpoint does not need any parameter. | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -149,6 +155,8 @@ This endpoint does not need any parameter. | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
|   | |||||||
							
								
								
									
										10
									
								
								mobile/openapi/doc/TagApi.md
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										10
									
								
								mobile/openapi/doc/TagApi.md
									
									
									
										generated
									
									
									
								
							| @@ -21,6 +21,8 @@ Method | HTTP request | Description | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -62,6 +64,8 @@ No authorization required | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -102,6 +106,8 @@ No authorization required | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -139,6 +145,8 @@ No authorization required | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -180,6 +188,8 @@ No authorization required | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
|   | |||||||
							
								
								
									
										15
									
								
								mobile/openapi/doc/UpdateAssetsToSharedLinkDto.md
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								mobile/openapi/doc/UpdateAssetsToSharedLinkDto.md
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | |||||||
|  | # openapi.model.UpdateAssetsToSharedLinkDto | ||||||
|  | 
 | ||||||
|  | ## Load the model package | ||||||
|  | ```dart | ||||||
|  | import 'package:openapi/api.dart'; | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ## Properties | ||||||
|  | Name | Type | Description | Notes | ||||||
|  | ------------ | ------------- | ------------- | ------------- | ||||||
|  | **assetIds** | **List<String>** |  | [default to const []] | ||||||
|  | 
 | ||||||
|  | [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
							
								
								
									
										20
									
								
								mobile/openapi/doc/UserApi.md
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										20
									
								
								mobile/openapi/doc/UserApi.md
									
									
									
										generated
									
									
									
								
							| @@ -26,6 +26,8 @@ Method | HTTP request | Description | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -73,6 +75,8 @@ Name | Type | Description  | Notes | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -120,6 +124,8 @@ Name | Type | Description  | Notes | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -167,6 +173,8 @@ Name | Type | Description  | Notes | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -214,6 +222,8 @@ Name | Type | Description  | Notes | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -257,6 +267,8 @@ This endpoint does not need any parameter. | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -298,6 +310,8 @@ No authorization required | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -339,6 +353,8 @@ No authorization required | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -380,6 +396,8 @@ No authorization required | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
| @@ -427,6 +445,8 @@ Name | Type | Description  | Notes | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Example | ### Example | ||||||
| ```dart | ```dart | ||||||
| import 'package:openapi/api.dart'; | import 'package:openapi/api.dart'; | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								mobile/openapi/lib/api.dart
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								mobile/openapi/lib/api.dart
									
									
									
										generated
									
									
									
								
							| @@ -64,6 +64,7 @@ part 'model/check_existing_assets_dto.dart'; | |||||||
| part 'model/check_existing_assets_response_dto.dart'; | part 'model/check_existing_assets_response_dto.dart'; | ||||||
| part 'model/create_album_dto.dart'; | part 'model/create_album_dto.dart'; | ||||||
| part 'model/create_album_share_link_dto.dart'; | part 'model/create_album_share_link_dto.dart'; | ||||||
|  | part 'model/create_assets_share_link_dto.dart'; | ||||||
| part 'model/create_profile_image_response_dto.dart'; | part 'model/create_profile_image_response_dto.dart'; | ||||||
| part 'model/create_tag_dto.dart'; | part 'model/create_tag_dto.dart'; | ||||||
| part 'model/create_user_dto.dart'; | part 'model/create_user_dto.dart'; | ||||||
| @@ -112,6 +113,7 @@ part 'model/thumbnail_format.dart'; | |||||||
| part 'model/time_group_enum.dart'; | part 'model/time_group_enum.dart'; | ||||||
| part 'model/update_album_dto.dart'; | part 'model/update_album_dto.dart'; | ||||||
| part 'model/update_asset_dto.dart'; | part 'model/update_asset_dto.dart'; | ||||||
|  | part 'model/update_assets_to_shared_link_dto.dart'; | ||||||
| part 'model/update_tag_dto.dart'; | part 'model/update_tag_dto.dart'; | ||||||
| part 'model/update_user_dto.dart'; | part 'model/update_user_dto.dart'; | ||||||
| part 'model/upsert_device_info_dto.dart'; | part 'model/upsert_device_info_dto.dart'; | ||||||
|   | |||||||
							
								
								
									
										82
									
								
								mobile/openapi/lib/api/album_api.dart
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										82
									
								
								mobile/openapi/lib/api/album_api.dart
									
									
									
										generated
									
									
									
								
							| @@ -16,7 +16,10 @@ class AlbumApi { | |||||||
| 
 | 
 | ||||||
|   final ApiClient apiClient; |   final ApiClient apiClient; | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'PUT /album/{albumId}/assets' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] albumId (required): |   /// * [String] albumId (required): | ||||||
| @@ -48,6 +51,8 @@ class AlbumApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] albumId (required): |   /// * [String] albumId (required): | ||||||
| @@ -68,7 +73,10 @@ class AlbumApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'PUT /album/{albumId}/users' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] albumId (required): |   /// * [String] albumId (required): | ||||||
| @@ -100,6 +108,8 @@ class AlbumApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] albumId (required): |   /// * [String] albumId (required): | ||||||
| @@ -120,7 +130,10 @@ class AlbumApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'POST /album' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [CreateAlbumDto] createAlbumDto (required): |   /// * [CreateAlbumDto] createAlbumDto (required): | ||||||
| @@ -149,6 +162,8 @@ class AlbumApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [CreateAlbumDto] createAlbumDto (required): |   /// * [CreateAlbumDto] createAlbumDto (required): | ||||||
| @@ -167,7 +182,10 @@ class AlbumApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'POST /album/create-shared-link' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [CreateAlbumShareLinkDto] createAlbumShareLinkDto (required): |   /// * [CreateAlbumShareLinkDto] createAlbumShareLinkDto (required): | ||||||
| @@ -196,6 +214,8 @@ class AlbumApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [CreateAlbumShareLinkDto] createAlbumShareLinkDto (required): |   /// * [CreateAlbumShareLinkDto] createAlbumShareLinkDto (required): | ||||||
| @@ -214,7 +234,10 @@ class AlbumApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'DELETE /album/{albumId}' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] albumId (required): |   /// * [String] albumId (required): | ||||||
| @@ -244,6 +267,8 @@ class AlbumApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] albumId (required): |   /// * [String] albumId (required): | ||||||
| @@ -254,7 +279,10 @@ class AlbumApi { | |||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'GET /album/{albumId}/download' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] albumId (required): |   /// * [String] albumId (required): | ||||||
| @@ -290,6 +318,8 @@ class AlbumApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] albumId (required): |   /// * [String] albumId (required): | ||||||
| @@ -310,7 +340,9 @@ class AlbumApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'GET /album/count-by-user-id' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|   Future<Response> getAlbumCountByUserIdWithHttpInfo() async { |   Future<Response> getAlbumCountByUserIdWithHttpInfo() async { | ||||||
|     // ignore: prefer_const_declarations |     // ignore: prefer_const_declarations | ||||||
|     final path = r'/album/count-by-user-id'; |     final path = r'/album/count-by-user-id'; | ||||||
| @@ -336,6 +368,7 @@ class AlbumApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|   Future<AlbumCountResponseDto?> getAlbumCountByUserId() async { |   Future<AlbumCountResponseDto?> getAlbumCountByUserId() async { | ||||||
|     final response = await getAlbumCountByUserIdWithHttpInfo(); |     final response = await getAlbumCountByUserIdWithHttpInfo(); | ||||||
|     if (response.statusCode >= HttpStatus.badRequest) { |     if (response.statusCode >= HttpStatus.badRequest) { | ||||||
| @@ -351,7 +384,10 @@ class AlbumApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'GET /album/{albumId}' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] albumId (required): |   /// * [String] albumId (required): | ||||||
| @@ -381,6 +417,8 @@ class AlbumApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] albumId (required): |   /// * [String] albumId (required): | ||||||
| @@ -399,7 +437,10 @@ class AlbumApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'GET /album' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [bool] shared: |   /// * [bool] shared: | ||||||
| @@ -438,6 +479,8 @@ class AlbumApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [bool] shared: |   /// * [bool] shared: | ||||||
| @@ -462,7 +505,10 @@ class AlbumApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'DELETE /album/{albumId}/assets' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] albumId (required): |   /// * [String] albumId (required): | ||||||
| @@ -494,6 +540,8 @@ class AlbumApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] albumId (required): |   /// * [String] albumId (required): | ||||||
| @@ -514,7 +562,10 @@ class AlbumApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'DELETE /album/{albumId}/user/{userId}' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] albumId (required): |   /// * [String] albumId (required): | ||||||
| @@ -547,6 +598,8 @@ class AlbumApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] albumId (required): |   /// * [String] albumId (required): | ||||||
| @@ -559,7 +612,10 @@ class AlbumApi { | |||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'PATCH /album/{albumId}' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] albumId (required): |   /// * [String] albumId (required): | ||||||
| @@ -591,6 +647,8 @@ class AlbumApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] albumId (required): |   /// * [String] albumId (required): | ||||||
|   | |||||||
							
								
								
									
										33
									
								
								mobile/openapi/lib/api/api_key_api.dart
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										33
									
								
								mobile/openapi/lib/api/api_key_api.dart
									
									
									
										generated
									
									
									
								
							| @@ -16,7 +16,10 @@ class APIKeyApi { | |||||||
| 
 | 
 | ||||||
|   final ApiClient apiClient; |   final ApiClient apiClient; | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'POST /api-key' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [APIKeyCreateDto] aPIKeyCreateDto (required): |   /// * [APIKeyCreateDto] aPIKeyCreateDto (required): | ||||||
| @@ -45,6 +48,8 @@ class APIKeyApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [APIKeyCreateDto] aPIKeyCreateDto (required): |   /// * [APIKeyCreateDto] aPIKeyCreateDto (required): | ||||||
| @@ -63,7 +68,10 @@ class APIKeyApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'DELETE /api-key/{id}' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [num] id (required): |   /// * [num] id (required): | ||||||
| @@ -93,6 +101,8 @@ class APIKeyApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [num] id (required): |   /// * [num] id (required): | ||||||
| @@ -103,7 +113,10 @@ class APIKeyApi { | |||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'GET /api-key/{id}' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [num] id (required): |   /// * [num] id (required): | ||||||
| @@ -133,6 +146,8 @@ class APIKeyApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [num] id (required): |   /// * [num] id (required): | ||||||
| @@ -151,7 +166,9 @@ class APIKeyApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'GET /api-key' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|   Future<Response> getKeysWithHttpInfo() async { |   Future<Response> getKeysWithHttpInfo() async { | ||||||
|     // ignore: prefer_const_declarations |     // ignore: prefer_const_declarations | ||||||
|     final path = r'/api-key'; |     final path = r'/api-key'; | ||||||
| @@ -177,6 +194,7 @@ class APIKeyApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|   Future<List<APIKeyResponseDto>?> getKeys() async { |   Future<List<APIKeyResponseDto>?> getKeys() async { | ||||||
|     final response = await getKeysWithHttpInfo(); |     final response = await getKeysWithHttpInfo(); | ||||||
|     if (response.statusCode >= HttpStatus.badRequest) { |     if (response.statusCode >= HttpStatus.badRequest) { | ||||||
| @@ -195,7 +213,10 @@ class APIKeyApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'PUT /api-key/{id}' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [num] id (required): |   /// * [num] id (required): | ||||||
| @@ -227,6 +248,8 @@ class APIKeyApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [num] id (required): |   /// * [num] id (required): | ||||||
|   | |||||||
							
								
								
									
										194
									
								
								mobile/openapi/lib/api/asset_api.dart
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										194
									
								
								mobile/openapi/lib/api/asset_api.dart
									
									
									
										generated
									
									
									
								
							| @@ -120,7 +120,62 @@ class AssetApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'DELETE /asset' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|  |   /// Parameters: | ||||||
|  |   /// | ||||||
|  |   /// * [CreateAssetsShareLinkDto] createAssetsShareLinkDto (required): | ||||||
|  |   Future<Response> createAssetsSharedLinkWithHttpInfo(CreateAssetsShareLinkDto createAssetsShareLinkDto,) async { | ||||||
|  |     // ignore: prefer_const_declarations | ||||||
|  |     final path = r'/asset/shared-link'; | ||||||
|  | 
 | ||||||
|  |     // ignore: prefer_final_locals | ||||||
|  |     Object? postBody = createAssetsShareLinkDto; | ||||||
|  | 
 | ||||||
|  |     final queryParams = <QueryParam>[]; | ||||||
|  |     final headerParams = <String, String>{}; | ||||||
|  |     final formParams = <String, String>{}; | ||||||
|  | 
 | ||||||
|  |     const contentTypes = <String>['application/json']; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     return apiClient.invokeAPI( | ||||||
|  |       path, | ||||||
|  |       'POST', | ||||||
|  |       queryParams, | ||||||
|  |       postBody, | ||||||
|  |       headerParams, | ||||||
|  |       formParams, | ||||||
|  |       contentTypes.isEmpty ? null : contentTypes.first, | ||||||
|  |     ); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Parameters: | ||||||
|  |   /// | ||||||
|  |   /// * [CreateAssetsShareLinkDto] createAssetsShareLinkDto (required): | ||||||
|  |   Future<SharedLinkResponseDto?> createAssetsSharedLink(CreateAssetsShareLinkDto createAssetsShareLinkDto,) async { | ||||||
|  |     final response = await createAssetsSharedLinkWithHttpInfo(createAssetsShareLinkDto,); | ||||||
|  |     if (response.statusCode >= HttpStatus.badRequest) { | ||||||
|  |       throw ApiException(response.statusCode, await _decodeBodyBytes(response)); | ||||||
|  |     } | ||||||
|  |     // When a remote server returns no body with a status of 204, we shall not decode it. | ||||||
|  |     // At the time of writing this, `dart:convert` will throw an "Unexpected end of input" | ||||||
|  |     // FormatException when trying to decode an empty string. | ||||||
|  |     if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) { | ||||||
|  |       return await apiClient.deserializeAsync(await _decodeBodyBytes(response), 'SharedLinkResponseDto',) as SharedLinkResponseDto; | ||||||
|  |      | ||||||
|  |     } | ||||||
|  |     return null; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [DeleteAssetDto] deleteAssetDto (required): |   /// * [DeleteAssetDto] deleteAssetDto (required): | ||||||
| @@ -149,6 +204,8 @@ class AssetApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [DeleteAssetDto] deleteAssetDto (required): |   /// * [DeleteAssetDto] deleteAssetDto (required): | ||||||
| @@ -170,7 +227,10 @@ class AssetApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'GET /asset/download/{assetId}' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] assetId (required): |   /// * [String] assetId (required): | ||||||
| @@ -211,6 +271,8 @@ class AssetApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] assetId (required): |   /// * [String] assetId (required): | ||||||
| @@ -233,7 +295,10 @@ class AssetApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'POST /asset/download-files' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [DownloadFilesDto] downloadFilesDto (required): |   /// * [DownloadFilesDto] downloadFilesDto (required): | ||||||
| @@ -262,6 +327,8 @@ class AssetApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [DownloadFilesDto] downloadFilesDto (required): |   /// * [DownloadFilesDto] downloadFilesDto (required): | ||||||
| @@ -280,7 +347,10 @@ class AssetApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'GET /asset/download-library' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [num] skip: |   /// * [num] skip: | ||||||
| @@ -313,6 +383,8 @@ class AssetApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [num] skip: |   /// * [num] skip: | ||||||
| @@ -445,7 +517,10 @@ class AssetApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'POST /asset/time-bucket' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [GetAssetByTimeBucketDto] getAssetByTimeBucketDto (required): |   /// * [GetAssetByTimeBucketDto] getAssetByTimeBucketDto (required): | ||||||
| @@ -474,6 +549,8 @@ class AssetApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [GetAssetByTimeBucketDto] getAssetByTimeBucketDto (required): |   /// * [GetAssetByTimeBucketDto] getAssetByTimeBucketDto (required): | ||||||
| @@ -495,7 +572,10 @@ class AssetApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'POST /asset/count-by-time-bucket' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [GetAssetCountByTimeBucketDto] getAssetCountByTimeBucketDto (required): |   /// * [GetAssetCountByTimeBucketDto] getAssetCountByTimeBucketDto (required): | ||||||
| @@ -524,6 +604,8 @@ class AssetApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [GetAssetCountByTimeBucketDto] getAssetCountByTimeBucketDto (required): |   /// * [GetAssetCountByTimeBucketDto] getAssetCountByTimeBucketDto (required): | ||||||
| @@ -542,7 +624,9 @@ class AssetApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'GET /asset/count-by-user-id' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|   Future<Response> getAssetCountByUserIdWithHttpInfo() async { |   Future<Response> getAssetCountByUserIdWithHttpInfo() async { | ||||||
|     // ignore: prefer_const_declarations |     // ignore: prefer_const_declarations | ||||||
|     final path = r'/asset/count-by-user-id'; |     final path = r'/asset/count-by-user-id'; | ||||||
| @@ -568,6 +652,7 @@ class AssetApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|   Future<AssetCountByUserIdResponseDto?> getAssetCountByUserId() async { |   Future<AssetCountByUserIdResponseDto?> getAssetCountByUserId() async { | ||||||
|     final response = await getAssetCountByUserIdWithHttpInfo(); |     final response = await getAssetCountByUserIdWithHttpInfo(); | ||||||
|     if (response.statusCode >= HttpStatus.badRequest) { |     if (response.statusCode >= HttpStatus.badRequest) { | ||||||
| @@ -583,7 +668,9 @@ class AssetApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'GET /asset/search-terms' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|   Future<Response> getAssetSearchTermsWithHttpInfo() async { |   Future<Response> getAssetSearchTermsWithHttpInfo() async { | ||||||
|     // ignore: prefer_const_declarations |     // ignore: prefer_const_declarations | ||||||
|     final path = r'/asset/search-terms'; |     final path = r'/asset/search-terms'; | ||||||
| @@ -609,6 +696,7 @@ class AssetApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|   Future<List<String>?> getAssetSearchTerms() async { |   Future<List<String>?> getAssetSearchTerms() async { | ||||||
|     final response = await getAssetSearchTermsWithHttpInfo(); |     final response = await getAssetSearchTermsWithHttpInfo(); | ||||||
|     if (response.statusCode >= HttpStatus.badRequest) { |     if (response.statusCode >= HttpStatus.badRequest) { | ||||||
| @@ -627,7 +715,10 @@ class AssetApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'GET /asset/thumbnail/{assetId}' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] assetId (required): |   /// * [String] assetId (required): | ||||||
| @@ -663,6 +754,8 @@ class AssetApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] assetId (required): |   /// * [String] assetId (required): | ||||||
| @@ -683,7 +776,9 @@ class AssetApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'GET /asset/curated-locations' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|   Future<Response> getCuratedLocationsWithHttpInfo() async { |   Future<Response> getCuratedLocationsWithHttpInfo() async { | ||||||
|     // ignore: prefer_const_declarations |     // ignore: prefer_const_declarations | ||||||
|     final path = r'/asset/curated-locations'; |     final path = r'/asset/curated-locations'; | ||||||
| @@ -709,6 +804,7 @@ class AssetApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|   Future<List<CuratedLocationsResponseDto>?> getCuratedLocations() async { |   Future<List<CuratedLocationsResponseDto>?> getCuratedLocations() async { | ||||||
|     final response = await getCuratedLocationsWithHttpInfo(); |     final response = await getCuratedLocationsWithHttpInfo(); | ||||||
|     if (response.statusCode >= HttpStatus.badRequest) { |     if (response.statusCode >= HttpStatus.badRequest) { | ||||||
| @@ -727,7 +823,9 @@ class AssetApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'GET /asset/curated-objects' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|   Future<Response> getCuratedObjectsWithHttpInfo() async { |   Future<Response> getCuratedObjectsWithHttpInfo() async { | ||||||
|     // ignore: prefer_const_declarations |     // ignore: prefer_const_declarations | ||||||
|     final path = r'/asset/curated-objects'; |     final path = r'/asset/curated-objects'; | ||||||
| @@ -753,6 +851,7 @@ class AssetApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|   Future<List<CuratedObjectsResponseDto>?> getCuratedObjects() async { |   Future<List<CuratedObjectsResponseDto>?> getCuratedObjects() async { | ||||||
|     final response = await getCuratedObjectsWithHttpInfo(); |     final response = await getCuratedObjectsWithHttpInfo(); | ||||||
|     if (response.statusCode >= HttpStatus.badRequest) { |     if (response.statusCode >= HttpStatus.badRequest) { | ||||||
| @@ -827,7 +926,10 @@ class AssetApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'POST /asset/search' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [SearchAssetDto] searchAssetDto (required): |   /// * [SearchAssetDto] searchAssetDto (required): | ||||||
| @@ -856,6 +958,8 @@ class AssetApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [SearchAssetDto] searchAssetDto (required): |   /// * [SearchAssetDto] searchAssetDto (required): | ||||||
| @@ -877,7 +981,10 @@ class AssetApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'GET /asset/file/{assetId}' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] assetId (required): |   /// * [String] assetId (required): | ||||||
| @@ -918,6 +1025,8 @@ class AssetApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] assetId (required): |   /// * [String] assetId (required): | ||||||
| @@ -997,7 +1106,62 @@ class AssetApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'POST /asset/upload' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|  |   /// Parameters: | ||||||
|  |   /// | ||||||
|  |   /// * [UpdateAssetsToSharedLinkDto] updateAssetsToSharedLinkDto (required): | ||||||
|  |   Future<Response> updateAssetsInSharedLinkWithHttpInfo(UpdateAssetsToSharedLinkDto updateAssetsToSharedLinkDto,) async { | ||||||
|  |     // ignore: prefer_const_declarations | ||||||
|  |     final path = r'/asset/shared-link'; | ||||||
|  | 
 | ||||||
|  |     // ignore: prefer_final_locals | ||||||
|  |     Object? postBody = updateAssetsToSharedLinkDto; | ||||||
|  | 
 | ||||||
|  |     final queryParams = <QueryParam>[]; | ||||||
|  |     final headerParams = <String, String>{}; | ||||||
|  |     final formParams = <String, String>{}; | ||||||
|  | 
 | ||||||
|  |     const contentTypes = <String>['application/json']; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     return apiClient.invokeAPI( | ||||||
|  |       path, | ||||||
|  |       'PATCH', | ||||||
|  |       queryParams, | ||||||
|  |       postBody, | ||||||
|  |       headerParams, | ||||||
|  |       formParams, | ||||||
|  |       contentTypes.isEmpty ? null : contentTypes.first, | ||||||
|  |     ); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Parameters: | ||||||
|  |   /// | ||||||
|  |   /// * [UpdateAssetsToSharedLinkDto] updateAssetsToSharedLinkDto (required): | ||||||
|  |   Future<SharedLinkResponseDto?> updateAssetsInSharedLink(UpdateAssetsToSharedLinkDto updateAssetsToSharedLinkDto,) async { | ||||||
|  |     final response = await updateAssetsInSharedLinkWithHttpInfo(updateAssetsToSharedLinkDto,); | ||||||
|  |     if (response.statusCode >= HttpStatus.badRequest) { | ||||||
|  |       throw ApiException(response.statusCode, await _decodeBodyBytes(response)); | ||||||
|  |     } | ||||||
|  |     // When a remote server returns no body with a status of 204, we shall not decode it. | ||||||
|  |     // At the time of writing this, `dart:convert` will throw an "Unexpected end of input" | ||||||
|  |     // FormatException when trying to decode an empty string. | ||||||
|  |     if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) { | ||||||
|  |       return await apiClient.deserializeAsync(await _decodeBodyBytes(response), 'SharedLinkResponseDto',) as SharedLinkResponseDto; | ||||||
|  |      | ||||||
|  |     } | ||||||
|  |     return null; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [MultipartFile] assetData (required): |   /// * [MultipartFile] assetData (required): | ||||||
| @@ -1036,6 +1200,8 @@ class AssetApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [MultipartFile] assetData (required): |   /// * [MultipartFile] assetData (required): | ||||||
|   | |||||||
							
								
								
									
										31
									
								
								mobile/openapi/lib/api/authentication_api.dart
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										31
									
								
								mobile/openapi/lib/api/authentication_api.dart
									
									
									
										generated
									
									
									
								
							| @@ -16,7 +16,10 @@ class AuthenticationApi { | |||||||
| 
 | 
 | ||||||
|   final ApiClient apiClient; |   final ApiClient apiClient; | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'POST /auth/admin-sign-up' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [SignUpDto] signUpDto (required): |   /// * [SignUpDto] signUpDto (required): | ||||||
| @@ -45,6 +48,8 @@ class AuthenticationApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [SignUpDto] signUpDto (required): |   /// * [SignUpDto] signUpDto (required): | ||||||
| @@ -63,7 +68,10 @@ class AuthenticationApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'POST /auth/change-password' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [ChangePasswordDto] changePasswordDto (required): |   /// * [ChangePasswordDto] changePasswordDto (required): | ||||||
| @@ -92,6 +100,8 @@ class AuthenticationApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [ChangePasswordDto] changePasswordDto (required): |   /// * [ChangePasswordDto] changePasswordDto (required): | ||||||
| @@ -110,7 +120,10 @@ class AuthenticationApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'POST /auth/login' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [LoginCredentialDto] loginCredentialDto (required): |   /// * [LoginCredentialDto] loginCredentialDto (required): | ||||||
| @@ -139,6 +152,8 @@ class AuthenticationApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [LoginCredentialDto] loginCredentialDto (required): |   /// * [LoginCredentialDto] loginCredentialDto (required): | ||||||
| @@ -157,7 +172,9 @@ class AuthenticationApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'POST /auth/logout' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|   Future<Response> logoutWithHttpInfo() async { |   Future<Response> logoutWithHttpInfo() async { | ||||||
|     // ignore: prefer_const_declarations |     // ignore: prefer_const_declarations | ||||||
|     final path = r'/auth/logout'; |     final path = r'/auth/logout'; | ||||||
| @@ -183,6 +200,7 @@ class AuthenticationApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|   Future<LogoutResponseDto?> logout() async { |   Future<LogoutResponseDto?> logout() async { | ||||||
|     final response = await logoutWithHttpInfo(); |     final response = await logoutWithHttpInfo(); | ||||||
|     if (response.statusCode >= HttpStatus.badRequest) { |     if (response.statusCode >= HttpStatus.badRequest) { | ||||||
| @@ -198,7 +216,9 @@ class AuthenticationApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'POST /auth/validateToken' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|   Future<Response> validateAccessTokenWithHttpInfo() async { |   Future<Response> validateAccessTokenWithHttpInfo() async { | ||||||
|     // ignore: prefer_const_declarations |     // ignore: prefer_const_declarations | ||||||
|     final path = r'/auth/validateToken'; |     final path = r'/auth/validateToken'; | ||||||
| @@ -224,6 +244,7 @@ class AuthenticationApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|   Future<ValidateAccessTokenResponseDto?> validateAccessToken() async { |   Future<ValidateAccessTokenResponseDto?> validateAccessToken() async { | ||||||
|     final response = await validateAccessTokenWithHttpInfo(); |     final response = await validateAccessTokenWithHttpInfo(); | ||||||
|     if (response.statusCode >= HttpStatus.badRequest) { |     if (response.statusCode >= HttpStatus.badRequest) { | ||||||
|   | |||||||
							
								
								
									
										7
									
								
								mobile/openapi/lib/api/device_info_api.dart
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										7
									
								
								mobile/openapi/lib/api/device_info_api.dart
									
									
									
										generated
									
									
									
								
							| @@ -120,7 +120,10 @@ class DeviceInfoApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'PUT /device-info' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [UpsertDeviceInfoDto] upsertDeviceInfoDto (required): |   /// * [UpsertDeviceInfoDto] upsertDeviceInfoDto (required): | ||||||
| @@ -149,6 +152,8 @@ class DeviceInfoApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [UpsertDeviceInfoDto] upsertDeviceInfoDto (required): |   /// * [UpsertDeviceInfoDto] upsertDeviceInfoDto (required): | ||||||
|   | |||||||
							
								
								
									
										19
									
								
								mobile/openapi/lib/api/job_api.dart
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										19
									
								
								mobile/openapi/lib/api/job_api.dart
									
									
									
										generated
									
									
									
								
							| @@ -16,7 +16,9 @@ class JobApi { | |||||||
| 
 | 
 | ||||||
|   final ApiClient apiClient; |   final ApiClient apiClient; | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'GET /jobs' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|   Future<Response> getAllJobsStatusWithHttpInfo() async { |   Future<Response> getAllJobsStatusWithHttpInfo() async { | ||||||
|     // ignore: prefer_const_declarations |     // ignore: prefer_const_declarations | ||||||
|     final path = r'/jobs'; |     final path = r'/jobs'; | ||||||
| @@ -42,6 +44,7 @@ class JobApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|   Future<AllJobStatusResponseDto?> getAllJobsStatus() async { |   Future<AllJobStatusResponseDto?> getAllJobsStatus() async { | ||||||
|     final response = await getAllJobsStatusWithHttpInfo(); |     final response = await getAllJobsStatusWithHttpInfo(); | ||||||
|     if (response.statusCode >= HttpStatus.badRequest) { |     if (response.statusCode >= HttpStatus.badRequest) { | ||||||
| @@ -57,7 +60,10 @@ class JobApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'GET /jobs/{jobId}' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [JobId] jobId (required): |   /// * [JobId] jobId (required): | ||||||
| @@ -87,6 +93,8 @@ class JobApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [JobId] jobId (required): |   /// * [JobId] jobId (required): | ||||||
| @@ -105,7 +113,10 @@ class JobApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'PUT /jobs/{jobId}' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [JobId] jobId (required): |   /// * [JobId] jobId (required): | ||||||
| @@ -137,6 +148,8 @@ class JobApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [JobId] jobId (required): |   /// * [JobId] jobId (required): | ||||||
|   | |||||||
							
								
								
									
										31
									
								
								mobile/openapi/lib/api/o_auth_api.dart
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										31
									
								
								mobile/openapi/lib/api/o_auth_api.dart
									
									
									
										generated
									
									
									
								
							| @@ -16,7 +16,10 @@ class OAuthApi { | |||||||
| 
 | 
 | ||||||
|   final ApiClient apiClient; |   final ApiClient apiClient; | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'POST /oauth/callback' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [OAuthCallbackDto] oAuthCallbackDto (required): |   /// * [OAuthCallbackDto] oAuthCallbackDto (required): | ||||||
| @@ -45,6 +48,8 @@ class OAuthApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [OAuthCallbackDto] oAuthCallbackDto (required): |   /// * [OAuthCallbackDto] oAuthCallbackDto (required): | ||||||
| @@ -63,7 +68,10 @@ class OAuthApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'POST /oauth/config' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [OAuthConfigDto] oAuthConfigDto (required): |   /// * [OAuthConfigDto] oAuthConfigDto (required): | ||||||
| @@ -92,6 +100,8 @@ class OAuthApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [OAuthConfigDto] oAuthConfigDto (required): |   /// * [OAuthConfigDto] oAuthConfigDto (required): | ||||||
| @@ -110,7 +120,10 @@ class OAuthApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'POST /oauth/link' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [OAuthCallbackDto] oAuthCallbackDto (required): |   /// * [OAuthCallbackDto] oAuthCallbackDto (required): | ||||||
| @@ -139,6 +152,8 @@ class OAuthApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [OAuthCallbackDto] oAuthCallbackDto (required): |   /// * [OAuthCallbackDto] oAuthCallbackDto (required): | ||||||
| @@ -157,7 +172,9 @@ class OAuthApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'GET /oauth/mobile-redirect' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|   Future<Response> mobileRedirectWithHttpInfo() async { |   Future<Response> mobileRedirectWithHttpInfo() async { | ||||||
|     // ignore: prefer_const_declarations |     // ignore: prefer_const_declarations | ||||||
|     final path = r'/oauth/mobile-redirect'; |     final path = r'/oauth/mobile-redirect'; | ||||||
| @@ -183,6 +200,7 @@ class OAuthApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|   Future<void> mobileRedirect() async { |   Future<void> mobileRedirect() async { | ||||||
|     final response = await mobileRedirectWithHttpInfo(); |     final response = await mobileRedirectWithHttpInfo(); | ||||||
|     if (response.statusCode >= HttpStatus.badRequest) { |     if (response.statusCode >= HttpStatus.badRequest) { | ||||||
| @@ -190,7 +208,9 @@ class OAuthApi { | |||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'POST /oauth/unlink' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|   Future<Response> unlinkWithHttpInfo() async { |   Future<Response> unlinkWithHttpInfo() async { | ||||||
|     // ignore: prefer_const_declarations |     // ignore: prefer_const_declarations | ||||||
|     final path = r'/oauth/unlink'; |     final path = r'/oauth/unlink'; | ||||||
| @@ -216,6 +236,7 @@ class OAuthApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|   Future<UserResponseDto?> unlink() async { |   Future<UserResponseDto?> unlink() async { | ||||||
|     final response = await unlinkWithHttpInfo(); |     final response = await unlinkWithHttpInfo(); | ||||||
|     if (response.statusCode >= HttpStatus.badRequest) { |     if (response.statusCode >= HttpStatus.badRequest) { | ||||||
|   | |||||||
							
								
								
									
										20
									
								
								mobile/openapi/lib/api/server_info_api.dart
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										20
									
								
								mobile/openapi/lib/api/server_info_api.dart
									
									
									
										generated
									
									
									
								
							| @@ -16,7 +16,9 @@ class ServerInfoApi { | |||||||
| 
 | 
 | ||||||
|   final ApiClient apiClient; |   final ApiClient apiClient; | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'GET /server-info' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|   Future<Response> getServerInfoWithHttpInfo() async { |   Future<Response> getServerInfoWithHttpInfo() async { | ||||||
|     // ignore: prefer_const_declarations |     // ignore: prefer_const_declarations | ||||||
|     final path = r'/server-info'; |     final path = r'/server-info'; | ||||||
| @@ -42,6 +44,7 @@ class ServerInfoApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|   Future<ServerInfoResponseDto?> getServerInfo() async { |   Future<ServerInfoResponseDto?> getServerInfo() async { | ||||||
|     final response = await getServerInfoWithHttpInfo(); |     final response = await getServerInfoWithHttpInfo(); | ||||||
|     if (response.statusCode >= HttpStatus.badRequest) { |     if (response.statusCode >= HttpStatus.badRequest) { | ||||||
| @@ -57,7 +60,9 @@ class ServerInfoApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'GET /server-info/version' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|   Future<Response> getServerVersionWithHttpInfo() async { |   Future<Response> getServerVersionWithHttpInfo() async { | ||||||
|     // ignore: prefer_const_declarations |     // ignore: prefer_const_declarations | ||||||
|     final path = r'/server-info/version'; |     final path = r'/server-info/version'; | ||||||
| @@ -83,6 +88,7 @@ class ServerInfoApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|   Future<ServerVersionReponseDto?> getServerVersion() async { |   Future<ServerVersionReponseDto?> getServerVersion() async { | ||||||
|     final response = await getServerVersionWithHttpInfo(); |     final response = await getServerVersionWithHttpInfo(); | ||||||
|     if (response.statusCode >= HttpStatus.badRequest) { |     if (response.statusCode >= HttpStatus.badRequest) { | ||||||
| @@ -98,7 +104,9 @@ class ServerInfoApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'GET /server-info/stats' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|   Future<Response> getStatsWithHttpInfo() async { |   Future<Response> getStatsWithHttpInfo() async { | ||||||
|     // ignore: prefer_const_declarations |     // ignore: prefer_const_declarations | ||||||
|     final path = r'/server-info/stats'; |     final path = r'/server-info/stats'; | ||||||
| @@ -124,6 +132,7 @@ class ServerInfoApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|   Future<ServerStatsResponseDto?> getStats() async { |   Future<ServerStatsResponseDto?> getStats() async { | ||||||
|     final response = await getStatsWithHttpInfo(); |     final response = await getStatsWithHttpInfo(); | ||||||
|     if (response.statusCode >= HttpStatus.badRequest) { |     if (response.statusCode >= HttpStatus.badRequest) { | ||||||
| @@ -139,7 +148,9 @@ class ServerInfoApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'GET /server-info/ping' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|   Future<Response> pingServerWithHttpInfo() async { |   Future<Response> pingServerWithHttpInfo() async { | ||||||
|     // ignore: prefer_const_declarations |     // ignore: prefer_const_declarations | ||||||
|     final path = r'/server-info/ping'; |     final path = r'/server-info/ping'; | ||||||
| @@ -165,6 +176,7 @@ class ServerInfoApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|   Future<ServerPingResponse?> pingServer() async { |   Future<ServerPingResponse?> pingServer() async { | ||||||
|     final response = await pingServerWithHttpInfo(); |     final response = await pingServerWithHttpInfo(); | ||||||
|     if (response.statusCode >= HttpStatus.badRequest) { |     if (response.statusCode >= HttpStatus.badRequest) { | ||||||
|   | |||||||
							
								
								
									
										31
									
								
								mobile/openapi/lib/api/share_api.dart
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										31
									
								
								mobile/openapi/lib/api/share_api.dart
									
									
									
										generated
									
									
									
								
							| @@ -16,7 +16,10 @@ class ShareApi { | |||||||
| 
 | 
 | ||||||
|   final ApiClient apiClient; |   final ApiClient apiClient; | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'PATCH /share/{id}' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] id (required): |   /// * [String] id (required): | ||||||
| @@ -48,6 +51,8 @@ class ShareApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] id (required): |   /// * [String] id (required): | ||||||
| @@ -68,7 +73,9 @@ class ShareApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'GET /share' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|   Future<Response> getAllSharedLinksWithHttpInfo() async { |   Future<Response> getAllSharedLinksWithHttpInfo() async { | ||||||
|     // ignore: prefer_const_declarations |     // ignore: prefer_const_declarations | ||||||
|     final path = r'/share'; |     final path = r'/share'; | ||||||
| @@ -94,6 +101,7 @@ class ShareApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|   Future<List<SharedLinkResponseDto>?> getAllSharedLinks() async { |   Future<List<SharedLinkResponseDto>?> getAllSharedLinks() async { | ||||||
|     final response = await getAllSharedLinksWithHttpInfo(); |     final response = await getAllSharedLinksWithHttpInfo(); | ||||||
|     if (response.statusCode >= HttpStatus.badRequest) { |     if (response.statusCode >= HttpStatus.badRequest) { | ||||||
| @@ -112,7 +120,9 @@ class ShareApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'GET /share/me' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|   Future<Response> getMySharedLinkWithHttpInfo() async { |   Future<Response> getMySharedLinkWithHttpInfo() async { | ||||||
|     // ignore: prefer_const_declarations |     // ignore: prefer_const_declarations | ||||||
|     final path = r'/share/me'; |     final path = r'/share/me'; | ||||||
| @@ -138,6 +148,7 @@ class ShareApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|   Future<SharedLinkResponseDto?> getMySharedLink() async { |   Future<SharedLinkResponseDto?> getMySharedLink() async { | ||||||
|     final response = await getMySharedLinkWithHttpInfo(); |     final response = await getMySharedLinkWithHttpInfo(); | ||||||
|     if (response.statusCode >= HttpStatus.badRequest) { |     if (response.statusCode >= HttpStatus.badRequest) { | ||||||
| @@ -153,7 +164,10 @@ class ShareApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'GET /share/{id}' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] id (required): |   /// * [String] id (required): | ||||||
| @@ -183,6 +197,8 @@ class ShareApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] id (required): |   /// * [String] id (required): | ||||||
| @@ -201,7 +217,10 @@ class ShareApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'DELETE /share/{id}' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] id (required): |   /// * [String] id (required): | ||||||
| @@ -231,6 +250,8 @@ class ShareApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] id (required): |   /// * [String] id (required): | ||||||
|   | |||||||
							
								
								
									
										22
									
								
								mobile/openapi/lib/api/system_config_api.dart
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										22
									
								
								mobile/openapi/lib/api/system_config_api.dart
									
									
									
										generated
									
									
									
								
							| @@ -16,7 +16,9 @@ class SystemConfigApi { | |||||||
| 
 | 
 | ||||||
|   final ApiClient apiClient; |   final ApiClient apiClient; | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'GET /system-config' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|   Future<Response> getConfigWithHttpInfo() async { |   Future<Response> getConfigWithHttpInfo() async { | ||||||
|     // ignore: prefer_const_declarations |     // ignore: prefer_const_declarations | ||||||
|     final path = r'/system-config'; |     final path = r'/system-config'; | ||||||
| @@ -42,6 +44,7 @@ class SystemConfigApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|   Future<SystemConfigDto?> getConfig() async { |   Future<SystemConfigDto?> getConfig() async { | ||||||
|     final response = await getConfigWithHttpInfo(); |     final response = await getConfigWithHttpInfo(); | ||||||
|     if (response.statusCode >= HttpStatus.badRequest) { |     if (response.statusCode >= HttpStatus.badRequest) { | ||||||
| @@ -57,7 +60,9 @@ class SystemConfigApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'GET /system-config/defaults' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|   Future<Response> getDefaultsWithHttpInfo() async { |   Future<Response> getDefaultsWithHttpInfo() async { | ||||||
|     // ignore: prefer_const_declarations |     // ignore: prefer_const_declarations | ||||||
|     final path = r'/system-config/defaults'; |     final path = r'/system-config/defaults'; | ||||||
| @@ -83,6 +88,7 @@ class SystemConfigApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|   Future<SystemConfigDto?> getDefaults() async { |   Future<SystemConfigDto?> getDefaults() async { | ||||||
|     final response = await getDefaultsWithHttpInfo(); |     final response = await getDefaultsWithHttpInfo(); | ||||||
|     if (response.statusCode >= HttpStatus.badRequest) { |     if (response.statusCode >= HttpStatus.badRequest) { | ||||||
| @@ -98,7 +104,9 @@ class SystemConfigApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'GET /system-config/storage-template-options' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|   Future<Response> getStorageTemplateOptionsWithHttpInfo() async { |   Future<Response> getStorageTemplateOptionsWithHttpInfo() async { | ||||||
|     // ignore: prefer_const_declarations |     // ignore: prefer_const_declarations | ||||||
|     final path = r'/system-config/storage-template-options'; |     final path = r'/system-config/storage-template-options'; | ||||||
| @@ -124,6 +132,7 @@ class SystemConfigApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|   Future<SystemConfigTemplateStorageOptionDto?> getStorageTemplateOptions() async { |   Future<SystemConfigTemplateStorageOptionDto?> getStorageTemplateOptions() async { | ||||||
|     final response = await getStorageTemplateOptionsWithHttpInfo(); |     final response = await getStorageTemplateOptionsWithHttpInfo(); | ||||||
|     if (response.statusCode >= HttpStatus.badRequest) { |     if (response.statusCode >= HttpStatus.badRequest) { | ||||||
| @@ -139,7 +148,10 @@ class SystemConfigApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'PUT /system-config' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [SystemConfigDto] systemConfigDto (required): |   /// * [SystemConfigDto] systemConfigDto (required): | ||||||
| @@ -168,6 +180,8 @@ class SystemConfigApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [SystemConfigDto] systemConfigDto (required): |   /// * [SystemConfigDto] systemConfigDto (required): | ||||||
|   | |||||||
							
								
								
									
										33
									
								
								mobile/openapi/lib/api/tag_api.dart
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										33
									
								
								mobile/openapi/lib/api/tag_api.dart
									
									
									
										generated
									
									
									
								
							| @@ -16,7 +16,10 @@ class TagApi { | |||||||
| 
 | 
 | ||||||
|   final ApiClient apiClient; |   final ApiClient apiClient; | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'POST /tag' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [CreateTagDto] createTagDto (required): |   /// * [CreateTagDto] createTagDto (required): | ||||||
| @@ -45,6 +48,8 @@ class TagApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [CreateTagDto] createTagDto (required): |   /// * [CreateTagDto] createTagDto (required): | ||||||
| @@ -63,7 +68,10 @@ class TagApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'DELETE /tag/{id}' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] id (required): |   /// * [String] id (required): | ||||||
| @@ -93,6 +101,8 @@ class TagApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] id (required): |   /// * [String] id (required): | ||||||
| @@ -103,7 +113,9 @@ class TagApi { | |||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'GET /tag' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|   Future<Response> findAllWithHttpInfo() async { |   Future<Response> findAllWithHttpInfo() async { | ||||||
|     // ignore: prefer_const_declarations |     // ignore: prefer_const_declarations | ||||||
|     final path = r'/tag'; |     final path = r'/tag'; | ||||||
| @@ -129,6 +141,7 @@ class TagApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|   Future<List<TagResponseDto>?> findAll() async { |   Future<List<TagResponseDto>?> findAll() async { | ||||||
|     final response = await findAllWithHttpInfo(); |     final response = await findAllWithHttpInfo(); | ||||||
|     if (response.statusCode >= HttpStatus.badRequest) { |     if (response.statusCode >= HttpStatus.badRequest) { | ||||||
| @@ -147,7 +160,10 @@ class TagApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'GET /tag/{id}' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] id (required): |   /// * [String] id (required): | ||||||
| @@ -177,6 +193,8 @@ class TagApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] id (required): |   /// * [String] id (required): | ||||||
| @@ -195,7 +213,10 @@ class TagApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'PATCH /tag/{id}' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] id (required): |   /// * [String] id (required): | ||||||
| @@ -227,6 +248,8 @@ class TagApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] id (required): |   /// * [String] id (required): | ||||||
|   | |||||||
							
								
								
									
										68
									
								
								mobile/openapi/lib/api/user_api.dart
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										68
									
								
								mobile/openapi/lib/api/user_api.dart
									
									
									
										generated
									
									
									
								
							| @@ -16,7 +16,10 @@ class UserApi { | |||||||
| 
 | 
 | ||||||
|   final ApiClient apiClient; |   final ApiClient apiClient; | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'POST /user/profile-image' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [MultipartFile] file (required): |   /// * [MultipartFile] file (required): | ||||||
| @@ -55,6 +58,8 @@ class UserApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [MultipartFile] file (required): |   /// * [MultipartFile] file (required): | ||||||
| @@ -73,7 +78,10 @@ class UserApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'POST /user' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [CreateUserDto] createUserDto (required): |   /// * [CreateUserDto] createUserDto (required): | ||||||
| @@ -102,6 +110,8 @@ class UserApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [CreateUserDto] createUserDto (required): |   /// * [CreateUserDto] createUserDto (required): | ||||||
| @@ -120,7 +130,10 @@ class UserApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'DELETE /user/{userId}' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] userId (required): |   /// * [String] userId (required): | ||||||
| @@ -150,6 +163,8 @@ class UserApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] userId (required): |   /// * [String] userId (required): | ||||||
| @@ -168,7 +183,10 @@ class UserApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'GET /user' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [bool] isAll (required): |   /// * [bool] isAll (required): | ||||||
| @@ -199,6 +217,8 @@ class UserApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [bool] isAll (required): |   /// * [bool] isAll (required): | ||||||
| @@ -220,7 +240,9 @@ class UserApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'GET /user/me' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|   Future<Response> getMyUserInfoWithHttpInfo() async { |   Future<Response> getMyUserInfoWithHttpInfo() async { | ||||||
|     // ignore: prefer_const_declarations |     // ignore: prefer_const_declarations | ||||||
|     final path = r'/user/me'; |     final path = r'/user/me'; | ||||||
| @@ -246,6 +268,7 @@ class UserApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|   Future<UserResponseDto?> getMyUserInfo() async { |   Future<UserResponseDto?> getMyUserInfo() async { | ||||||
|     final response = await getMyUserInfoWithHttpInfo(); |     final response = await getMyUserInfoWithHttpInfo(); | ||||||
|     if (response.statusCode >= HttpStatus.badRequest) { |     if (response.statusCode >= HttpStatus.badRequest) { | ||||||
| @@ -261,7 +284,10 @@ class UserApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'GET /user/profile-image/{userId}' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] userId (required): |   /// * [String] userId (required): | ||||||
| @@ -291,6 +317,8 @@ class UserApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] userId (required): |   /// * [String] userId (required): | ||||||
| @@ -309,7 +337,10 @@ class UserApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'GET /user/info/{userId}' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] userId (required): |   /// * [String] userId (required): | ||||||
| @@ -339,6 +370,8 @@ class UserApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] userId (required): |   /// * [String] userId (required): | ||||||
| @@ -357,7 +390,10 @@ class UserApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'GET /user/count' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [bool] admin: |   /// * [bool] admin: | ||||||
| @@ -390,6 +426,8 @@ class UserApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [bool] admin: |   /// * [bool] admin: | ||||||
| @@ -408,7 +446,10 @@ class UserApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'POST /user/{userId}/restore' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] userId (required): |   /// * [String] userId (required): | ||||||
| @@ -438,6 +479,8 @@ class UserApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [String] userId (required): |   /// * [String] userId (required): | ||||||
| @@ -456,7 +499,10 @@ class UserApi { | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /// Performs an HTTP 'PUT /user' operation and returns the [Response]. |   ///  | ||||||
|  |   /// | ||||||
|  |   /// Note: This method returns the HTTP [Response]. | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [UpdateUserDto] updateUserDto (required): |   /// * [UpdateUserDto] updateUserDto (required): | ||||||
| @@ -485,6 +531,8 @@ class UserApi { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ///  | ||||||
|  |   /// | ||||||
|   /// Parameters: |   /// Parameters: | ||||||
|   /// |   /// | ||||||
|   /// * [UpdateUserDto] updateUserDto (required): |   /// * [UpdateUserDto] updateUserDto (required): | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								mobile/openapi/lib/api_client.dart
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4
									
								
								mobile/openapi/lib/api_client.dart
									
									
									
										generated
									
									
									
								
							| @@ -240,6 +240,8 @@ class ApiClient { | |||||||
|           return CreateAlbumDto.fromJson(value); |           return CreateAlbumDto.fromJson(value); | ||||||
|         case 'CreateAlbumShareLinkDto': |         case 'CreateAlbumShareLinkDto': | ||||||
|           return CreateAlbumShareLinkDto.fromJson(value); |           return CreateAlbumShareLinkDto.fromJson(value); | ||||||
|  |         case 'CreateAssetsShareLinkDto': | ||||||
|  |           return CreateAssetsShareLinkDto.fromJson(value); | ||||||
|         case 'CreateProfileImageResponseDto': |         case 'CreateProfileImageResponseDto': | ||||||
|           return CreateProfileImageResponseDto.fromJson(value); |           return CreateProfileImageResponseDto.fromJson(value); | ||||||
|         case 'CreateTagDto': |         case 'CreateTagDto': | ||||||
| @@ -336,6 +338,8 @@ class ApiClient { | |||||||
|           return UpdateAlbumDto.fromJson(value); |           return UpdateAlbumDto.fromJson(value); | ||||||
|         case 'UpdateAssetDto': |         case 'UpdateAssetDto': | ||||||
|           return UpdateAssetDto.fromJson(value); |           return UpdateAssetDto.fromJson(value); | ||||||
|  |         case 'UpdateAssetsToSharedLinkDto': | ||||||
|  |           return UpdateAssetsToSharedLinkDto.fromJson(value); | ||||||
|         case 'UpdateTagDto': |         case 'UpdateTagDto': | ||||||
|           return UpdateTagDto.fromJson(value); |           return UpdateTagDto.fromJson(value); | ||||||
|         case 'UpdateUserDto': |         case 'UpdateUserDto': | ||||||
|   | |||||||
							
								
								
									
										164
									
								
								mobile/openapi/lib/model/create_assets_share_link_dto.dart
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										164
									
								
								mobile/openapi/lib/model/create_assets_share_link_dto.dart
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,164 @@ | |||||||
|  | // | ||||||
|  | // AUTO-GENERATED FILE, DO NOT MODIFY! | ||||||
|  | // | ||||||
|  | // @dart=2.12 | ||||||
|  | 
 | ||||||
|  | // ignore_for_file: unused_element, unused_import | ||||||
|  | // ignore_for_file: always_put_required_named_parameters_first | ||||||
|  | // ignore_for_file: constant_identifier_names | ||||||
|  | // ignore_for_file: lines_longer_than_80_chars | ||||||
|  | 
 | ||||||
|  | part of openapi.api; | ||||||
|  | 
 | ||||||
|  | class CreateAssetsShareLinkDto { | ||||||
|  |   /// Returns a new [CreateAssetsShareLinkDto] instance. | ||||||
|  |   CreateAssetsShareLinkDto({ | ||||||
|  |     this.assetIds = const [], | ||||||
|  |     this.expiredAt, | ||||||
|  |     this.allowUpload, | ||||||
|  |     this.description, | ||||||
|  |   }); | ||||||
|  | 
 | ||||||
|  |   List<String> assetIds; | ||||||
|  | 
 | ||||||
|  |   /// | ||||||
|  |   /// Please note: This property should have been non-nullable! Since the specification file | ||||||
|  |   /// does not include a default value (using the "default:" property), however, the generated | ||||||
|  |   /// source code must fall back to having a nullable type. | ||||||
|  |   /// Consider adding a "default:" property in the specification file to hide this note. | ||||||
|  |   /// | ||||||
|  |   String? expiredAt; | ||||||
|  | 
 | ||||||
|  |   /// | ||||||
|  |   /// Please note: This property should have been non-nullable! Since the specification file | ||||||
|  |   /// does not include a default value (using the "default:" property), however, the generated | ||||||
|  |   /// source code must fall back to having a nullable type. | ||||||
|  |   /// Consider adding a "default:" property in the specification file to hide this note. | ||||||
|  |   /// | ||||||
|  |   bool? allowUpload; | ||||||
|  | 
 | ||||||
|  |   /// | ||||||
|  |   /// Please note: This property should have been non-nullable! Since the specification file | ||||||
|  |   /// does not include a default value (using the "default:" property), however, the generated | ||||||
|  |   /// source code must fall back to having a nullable type. | ||||||
|  |   /// Consider adding a "default:" property in the specification file to hide this note. | ||||||
|  |   /// | ||||||
|  |   String? description; | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   bool operator ==(Object other) => identical(this, other) || other is CreateAssetsShareLinkDto && | ||||||
|  |      other.assetIds == assetIds && | ||||||
|  |      other.expiredAt == expiredAt && | ||||||
|  |      other.allowUpload == allowUpload && | ||||||
|  |      other.description == description; | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   int get hashCode => | ||||||
|  |     // ignore: unnecessary_parenthesis | ||||||
|  |     (assetIds.hashCode) + | ||||||
|  |     (expiredAt == null ? 0 : expiredAt!.hashCode) + | ||||||
|  |     (allowUpload == null ? 0 : allowUpload!.hashCode) + | ||||||
|  |     (description == null ? 0 : description!.hashCode); | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   String toString() => 'CreateAssetsShareLinkDto[assetIds=$assetIds, expiredAt=$expiredAt, allowUpload=$allowUpload, description=$description]'; | ||||||
|  | 
 | ||||||
|  |   Map<String, dynamic> toJson() { | ||||||
|  |     final json = <String, dynamic>{}; | ||||||
|  |       json[r'assetIds'] = this.assetIds; | ||||||
|  |     if (this.expiredAt != null) { | ||||||
|  |       json[r'expiredAt'] = this.expiredAt; | ||||||
|  |     } else { | ||||||
|  |       // json[r'expiredAt'] = null; | ||||||
|  |     } | ||||||
|  |     if (this.allowUpload != null) { | ||||||
|  |       json[r'allowUpload'] = this.allowUpload; | ||||||
|  |     } else { | ||||||
|  |       // json[r'allowUpload'] = null; | ||||||
|  |     } | ||||||
|  |     if (this.description != null) { | ||||||
|  |       json[r'description'] = this.description; | ||||||
|  |     } else { | ||||||
|  |       // json[r'description'] = null; | ||||||
|  |     } | ||||||
|  |     return json; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   /// Returns a new [CreateAssetsShareLinkDto] instance and imports its values from | ||||||
|  |   /// [value] if it's a [Map], null otherwise. | ||||||
|  |   // ignore: prefer_constructors_over_static_methods | ||||||
|  |   static CreateAssetsShareLinkDto? fromJson(dynamic value) { | ||||||
|  |     if (value is Map) { | ||||||
|  |       final json = value.cast<String, dynamic>(); | ||||||
|  | 
 | ||||||
|  |       // Ensure that the map contains the required keys. | ||||||
|  |       // Note 1: the values aren't checked for validity beyond being non-null. | ||||||
|  |       // Note 2: this code is stripped in release mode! | ||||||
|  |       assert(() { | ||||||
|  |         requiredKeys.forEach((key) { | ||||||
|  |           assert(json.containsKey(key), 'Required key "CreateAssetsShareLinkDto[$key]" is missing from JSON.'); | ||||||
|  |           assert(json[key] != null, 'Required key "CreateAssetsShareLinkDto[$key]" has a null value in JSON.'); | ||||||
|  |         }); | ||||||
|  |         return true; | ||||||
|  |       }()); | ||||||
|  | 
 | ||||||
|  |       return CreateAssetsShareLinkDto( | ||||||
|  |         assetIds: json[r'assetIds'] is List | ||||||
|  |             ? (json[r'assetIds'] as List).cast<String>() | ||||||
|  |             : const [], | ||||||
|  |         expiredAt: mapValueOfType<String>(json, r'expiredAt'), | ||||||
|  |         allowUpload: mapValueOfType<bool>(json, r'allowUpload'), | ||||||
|  |         description: mapValueOfType<String>(json, r'description'), | ||||||
|  |       ); | ||||||
|  |     } | ||||||
|  |     return null; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   static List<CreateAssetsShareLinkDto>? listFromJson(dynamic json, {bool growable = false,}) { | ||||||
|  |     final result = <CreateAssetsShareLinkDto>[]; | ||||||
|  |     if (json is List && json.isNotEmpty) { | ||||||
|  |       for (final row in json) { | ||||||
|  |         final value = CreateAssetsShareLinkDto.fromJson(row); | ||||||
|  |         if (value != null) { | ||||||
|  |           result.add(value); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     return result.toList(growable: growable); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   static Map<String, CreateAssetsShareLinkDto> mapFromJson(dynamic json) { | ||||||
|  |     final map = <String, CreateAssetsShareLinkDto>{}; | ||||||
|  |     if (json is Map && json.isNotEmpty) { | ||||||
|  |       json = json.cast<String, dynamic>(); // ignore: parameter_assignments | ||||||
|  |       for (final entry in json.entries) { | ||||||
|  |         final value = CreateAssetsShareLinkDto.fromJson(entry.value); | ||||||
|  |         if (value != null) { | ||||||
|  |           map[entry.key] = value; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     return map; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   // maps a json object with a list of CreateAssetsShareLinkDto-objects as value to a dart map | ||||||
|  |   static Map<String, List<CreateAssetsShareLinkDto>> mapListFromJson(dynamic json, {bool growable = false,}) { | ||||||
|  |     final map = <String, List<CreateAssetsShareLinkDto>>{}; | ||||||
|  |     if (json is Map && json.isNotEmpty) { | ||||||
|  |       json = json.cast<String, dynamic>(); // ignore: parameter_assignments | ||||||
|  |       for (final entry in json.entries) { | ||||||
|  |         final value = CreateAssetsShareLinkDto.listFromJson(entry.value, growable: growable,); | ||||||
|  |         if (value != null) { | ||||||
|  |           map[entry.key] = value; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     return map; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   /// The list of required keys that must be present in a JSON. | ||||||
|  |   static const requiredKeys = <String>{ | ||||||
|  |     'assetIds', | ||||||
|  |   }; | ||||||
|  | } | ||||||
|  | 
 | ||||||
							
								
								
									
										113
									
								
								mobile/openapi/lib/model/update_assets_to_shared_link_dto.dart
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										113
									
								
								mobile/openapi/lib/model/update_assets_to_shared_link_dto.dart
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,113 @@ | |||||||
|  | // | ||||||
|  | // AUTO-GENERATED FILE, DO NOT MODIFY! | ||||||
|  | // | ||||||
|  | // @dart=2.12 | ||||||
|  | 
 | ||||||
|  | // ignore_for_file: unused_element, unused_import | ||||||
|  | // ignore_for_file: always_put_required_named_parameters_first | ||||||
|  | // ignore_for_file: constant_identifier_names | ||||||
|  | // ignore_for_file: lines_longer_than_80_chars | ||||||
|  | 
 | ||||||
|  | part of openapi.api; | ||||||
|  | 
 | ||||||
|  | class UpdateAssetsToSharedLinkDto { | ||||||
|  |   /// Returns a new [UpdateAssetsToSharedLinkDto] instance. | ||||||
|  |   UpdateAssetsToSharedLinkDto({ | ||||||
|  |     this.assetIds = const [], | ||||||
|  |   }); | ||||||
|  | 
 | ||||||
|  |   List<String> assetIds; | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   bool operator ==(Object other) => identical(this, other) || other is UpdateAssetsToSharedLinkDto && | ||||||
|  |      other.assetIds == assetIds; | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   int get hashCode => | ||||||
|  |     // ignore: unnecessary_parenthesis | ||||||
|  |     (assetIds.hashCode); | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   String toString() => 'UpdateAssetsToSharedLinkDto[assetIds=$assetIds]'; | ||||||
|  | 
 | ||||||
|  |   Map<String, dynamic> toJson() { | ||||||
|  |     final json = <String, dynamic>{}; | ||||||
|  |       json[r'assetIds'] = this.assetIds; | ||||||
|  |     return json; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   /// Returns a new [UpdateAssetsToSharedLinkDto] instance and imports its values from | ||||||
|  |   /// [value] if it's a [Map], null otherwise. | ||||||
|  |   // ignore: prefer_constructors_over_static_methods | ||||||
|  |   static UpdateAssetsToSharedLinkDto? fromJson(dynamic value) { | ||||||
|  |     if (value is Map) { | ||||||
|  |       final json = value.cast<String, dynamic>(); | ||||||
|  | 
 | ||||||
|  |       // Ensure that the map contains the required keys. | ||||||
|  |       // Note 1: the values aren't checked for validity beyond being non-null. | ||||||
|  |       // Note 2: this code is stripped in release mode! | ||||||
|  |       assert(() { | ||||||
|  |         requiredKeys.forEach((key) { | ||||||
|  |           assert(json.containsKey(key), 'Required key "UpdateAssetsToSharedLinkDto[$key]" is missing from JSON.'); | ||||||
|  |           assert(json[key] != null, 'Required key "UpdateAssetsToSharedLinkDto[$key]" has a null value in JSON.'); | ||||||
|  |         }); | ||||||
|  |         return true; | ||||||
|  |       }()); | ||||||
|  | 
 | ||||||
|  |       return UpdateAssetsToSharedLinkDto( | ||||||
|  |         assetIds: json[r'assetIds'] is List | ||||||
|  |             ? (json[r'assetIds'] as List).cast<String>() | ||||||
|  |             : const [], | ||||||
|  |       ); | ||||||
|  |     } | ||||||
|  |     return null; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   static List<UpdateAssetsToSharedLinkDto>? listFromJson(dynamic json, {bool growable = false,}) { | ||||||
|  |     final result = <UpdateAssetsToSharedLinkDto>[]; | ||||||
|  |     if (json is List && json.isNotEmpty) { | ||||||
|  |       for (final row in json) { | ||||||
|  |         final value = UpdateAssetsToSharedLinkDto.fromJson(row); | ||||||
|  |         if (value != null) { | ||||||
|  |           result.add(value); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     return result.toList(growable: growable); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   static Map<String, UpdateAssetsToSharedLinkDto> mapFromJson(dynamic json) { | ||||||
|  |     final map = <String, UpdateAssetsToSharedLinkDto>{}; | ||||||
|  |     if (json is Map && json.isNotEmpty) { | ||||||
|  |       json = json.cast<String, dynamic>(); // ignore: parameter_assignments | ||||||
|  |       for (final entry in json.entries) { | ||||||
|  |         final value = UpdateAssetsToSharedLinkDto.fromJson(entry.value); | ||||||
|  |         if (value != null) { | ||||||
|  |           map[entry.key] = value; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     return map; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   // maps a json object with a list of UpdateAssetsToSharedLinkDto-objects as value to a dart map | ||||||
|  |   static Map<String, List<UpdateAssetsToSharedLinkDto>> mapListFromJson(dynamic json, {bool growable = false,}) { | ||||||
|  |     final map = <String, List<UpdateAssetsToSharedLinkDto>>{}; | ||||||
|  |     if (json is Map && json.isNotEmpty) { | ||||||
|  |       json = json.cast<String, dynamic>(); // ignore: parameter_assignments | ||||||
|  |       for (final entry in json.entries) { | ||||||
|  |         final value = UpdateAssetsToSharedLinkDto.listFromJson(entry.value, growable: growable,); | ||||||
|  |         if (value != null) { | ||||||
|  |           map[entry.key] = value; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     return map; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   /// The list of required keys that must be present in a JSON. | ||||||
|  |   static const requiredKeys = <String>{ | ||||||
|  |     'assetIds', | ||||||
|  |   }; | ||||||
|  | } | ||||||
|  | 
 | ||||||
							
								
								
									
										24
									
								
								mobile/openapi/test/album_api_test.dart
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										24
									
								
								mobile/openapi/test/album_api_test.dart
									
									
									
										generated
									
									
									
								
							| @@ -17,61 +17,85 @@ void main() { | |||||||
|   // final instance = AlbumApi(); |   // final instance = AlbumApi(); | ||||||
| 
 | 
 | ||||||
|   group('tests for AlbumApi', () { |   group('tests for AlbumApi', () { | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<AddAssetsResponseDto> addAssetsToAlbum(String albumId, AddAssetsDto addAssetsDto) async |     //Future<AddAssetsResponseDto> addAssetsToAlbum(String albumId, AddAssetsDto addAssetsDto) async | ||||||
|     test('test addAssetsToAlbum', () async { |     test('test addAssetsToAlbum', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<AlbumResponseDto> addUsersToAlbum(String albumId, AddUsersDto addUsersDto) async |     //Future<AlbumResponseDto> addUsersToAlbum(String albumId, AddUsersDto addUsersDto) async | ||||||
|     test('test addUsersToAlbum', () async { |     test('test addUsersToAlbum', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<AlbumResponseDto> createAlbum(CreateAlbumDto createAlbumDto) async |     //Future<AlbumResponseDto> createAlbum(CreateAlbumDto createAlbumDto) async | ||||||
|     test('test createAlbum', () async { |     test('test createAlbum', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<SharedLinkResponseDto> createAlbumSharedLink(CreateAlbumShareLinkDto createAlbumShareLinkDto) async |     //Future<SharedLinkResponseDto> createAlbumSharedLink(CreateAlbumShareLinkDto createAlbumShareLinkDto) async | ||||||
|     test('test createAlbumSharedLink', () async { |     test('test createAlbumSharedLink', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future deleteAlbum(String albumId) async |     //Future deleteAlbum(String albumId) async | ||||||
|     test('test deleteAlbum', () async { |     test('test deleteAlbum', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<Object> downloadArchive(String albumId, { num skip }) async |     //Future<Object> downloadArchive(String albumId, { num skip }) async | ||||||
|     test('test downloadArchive', () async { |     test('test downloadArchive', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<AlbumCountResponseDto> getAlbumCountByUserId() async |     //Future<AlbumCountResponseDto> getAlbumCountByUserId() async | ||||||
|     test('test getAlbumCountByUserId', () async { |     test('test getAlbumCountByUserId', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<AlbumResponseDto> getAlbumInfo(String albumId) async |     //Future<AlbumResponseDto> getAlbumInfo(String albumId) async | ||||||
|     test('test getAlbumInfo', () async { |     test('test getAlbumInfo', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<List<AlbumResponseDto>> getAllAlbums({ bool shared, String assetId }) async |     //Future<List<AlbumResponseDto>> getAllAlbums({ bool shared, String assetId }) async | ||||||
|     test('test getAllAlbums', () async { |     test('test getAllAlbums', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<AlbumResponseDto> removeAssetFromAlbum(String albumId, RemoveAssetsDto removeAssetsDto) async |     //Future<AlbumResponseDto> removeAssetFromAlbum(String albumId, RemoveAssetsDto removeAssetsDto) async | ||||||
|     test('test removeAssetFromAlbum', () async { |     test('test removeAssetFromAlbum', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future removeUserFromAlbum(String albumId, String userId) async |     //Future removeUserFromAlbum(String albumId, String userId) async | ||||||
|     test('test removeUserFromAlbum', () async { |     test('test removeUserFromAlbum', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<AlbumResponseDto> updateAlbumInfo(String albumId, UpdateAlbumDto updateAlbumDto) async |     //Future<AlbumResponseDto> updateAlbumInfo(String albumId, UpdateAlbumDto updateAlbumDto) async | ||||||
|     test('test updateAlbumInfo', () async { |     test('test updateAlbumInfo', () async { | ||||||
|       // TODO |       // TODO | ||||||
|   | |||||||
							
								
								
									
										10
									
								
								mobile/openapi/test/api_key_api_test.dart
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										10
									
								
								mobile/openapi/test/api_key_api_test.dart
									
									
									
										generated
									
									
									
								
							| @@ -17,26 +17,36 @@ void main() { | |||||||
|   // final instance = APIKeyApi(); |   // final instance = APIKeyApi(); | ||||||
| 
 | 
 | ||||||
|   group('tests for APIKeyApi', () { |   group('tests for APIKeyApi', () { | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<APIKeyCreateResponseDto> createKey(APIKeyCreateDto aPIKeyCreateDto) async |     //Future<APIKeyCreateResponseDto> createKey(APIKeyCreateDto aPIKeyCreateDto) async | ||||||
|     test('test createKey', () async { |     test('test createKey', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future deleteKey(num id) async |     //Future deleteKey(num id) async | ||||||
|     test('test deleteKey', () async { |     test('test deleteKey', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<APIKeyResponseDto> getKey(num id) async |     //Future<APIKeyResponseDto> getKey(num id) async | ||||||
|     test('test getKey', () async { |     test('test getKey', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<List<APIKeyResponseDto>> getKeys() async |     //Future<List<APIKeyResponseDto>> getKeys() async | ||||||
|     test('test getKeys', () async { |     test('test getKeys', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<APIKeyResponseDto> updateKey(num id, APIKeyUpdateDto aPIKeyUpdateDto) async |     //Future<APIKeyResponseDto> updateKey(num id, APIKeyUpdateDto aPIKeyUpdateDto) async | ||||||
|     test('test updateKey', () async { |     test('test updateKey', () async { | ||||||
|       // TODO |       // TODO | ||||||
|   | |||||||
							
								
								
									
										42
									
								
								mobile/openapi/test/asset_api_test.dart
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										42
									
								
								mobile/openapi/test/asset_api_test.dart
									
									
									
										generated
									
									
									
								
							| @@ -31,21 +31,36 @@ void main() { | |||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|  |     //Future<SharedLinkResponseDto> createAssetsSharedLink(CreateAssetsShareLinkDto createAssetsShareLinkDto) async | ||||||
|  |     test('test createAssetsSharedLink', () async { | ||||||
|  |       // TODO | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<List<DeleteAssetResponseDto>> deleteAsset(DeleteAssetDto deleteAssetDto) async |     //Future<List<DeleteAssetResponseDto>> deleteAsset(DeleteAssetDto deleteAssetDto) async | ||||||
|     test('test deleteAsset', () async { |     test('test deleteAsset', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<Object> downloadFile(String assetId, { bool isThumb, bool isWeb }) async |     //Future<Object> downloadFile(String assetId, { bool isThumb, bool isWeb }) async | ||||||
|     test('test downloadFile', () async { |     test('test downloadFile', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<Object> downloadFiles(DownloadFilesDto downloadFilesDto) async |     //Future<Object> downloadFiles(DownloadFilesDto downloadFilesDto) async | ||||||
|     test('test downloadFiles', () async { |     test('test downloadFiles', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<Object> downloadLibrary({ num skip }) async |     //Future<Object> downloadLibrary({ num skip }) async | ||||||
|     test('test downloadLibrary', () async { |     test('test downloadLibrary', () async { | ||||||
|       // TODO |       // TODO | ||||||
| @@ -65,36 +80,50 @@ void main() { | |||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<List<AssetResponseDto>> getAssetByTimeBucket(GetAssetByTimeBucketDto getAssetByTimeBucketDto) async |     //Future<List<AssetResponseDto>> getAssetByTimeBucket(GetAssetByTimeBucketDto getAssetByTimeBucketDto) async | ||||||
|     test('test getAssetByTimeBucket', () async { |     test('test getAssetByTimeBucket', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<AssetCountByTimeBucketResponseDto> getAssetCountByTimeBucket(GetAssetCountByTimeBucketDto getAssetCountByTimeBucketDto) async |     //Future<AssetCountByTimeBucketResponseDto> getAssetCountByTimeBucket(GetAssetCountByTimeBucketDto getAssetCountByTimeBucketDto) async | ||||||
|     test('test getAssetCountByTimeBucket', () async { |     test('test getAssetCountByTimeBucket', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<AssetCountByUserIdResponseDto> getAssetCountByUserId() async |     //Future<AssetCountByUserIdResponseDto> getAssetCountByUserId() async | ||||||
|     test('test getAssetCountByUserId', () async { |     test('test getAssetCountByUserId', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<List<String>> getAssetSearchTerms() async |     //Future<List<String>> getAssetSearchTerms() async | ||||||
|     test('test getAssetSearchTerms', () async { |     test('test getAssetSearchTerms', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<Object> getAssetThumbnail(String assetId, { ThumbnailFormat format }) async |     //Future<Object> getAssetThumbnail(String assetId, { ThumbnailFormat format }) async | ||||||
|     test('test getAssetThumbnail', () async { |     test('test getAssetThumbnail', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<List<CuratedLocationsResponseDto>> getCuratedLocations() async |     //Future<List<CuratedLocationsResponseDto>> getCuratedLocations() async | ||||||
|     test('test getCuratedLocations', () async { |     test('test getCuratedLocations', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<List<CuratedObjectsResponseDto>> getCuratedObjects() async |     //Future<List<CuratedObjectsResponseDto>> getCuratedObjects() async | ||||||
|     test('test getCuratedObjects', () async { |     test('test getCuratedObjects', () async { | ||||||
|       // TODO |       // TODO | ||||||
| @@ -107,11 +136,15 @@ void main() { | |||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<List<AssetResponseDto>> searchAsset(SearchAssetDto searchAssetDto) async |     //Future<List<AssetResponseDto>> searchAsset(SearchAssetDto searchAssetDto) async | ||||||
|     test('test searchAsset', () async { |     test('test searchAsset', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<Object> serveFile(String assetId, { bool isThumb, bool isWeb }) async |     //Future<Object> serveFile(String assetId, { bool isThumb, bool isWeb }) async | ||||||
|     test('test serveFile', () async { |     test('test serveFile', () async { | ||||||
|       // TODO |       // TODO | ||||||
| @@ -124,6 +157,15 @@ void main() { | |||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|  |     //Future<SharedLinkResponseDto> updateAssetsInSharedLink(UpdateAssetsToSharedLinkDto updateAssetsToSharedLinkDto) async | ||||||
|  |     test('test updateAssetsInSharedLink', () async { | ||||||
|  |       // TODO | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<AssetFileUploadResponseDto> uploadFile(MultipartFile assetData) async |     //Future<AssetFileUploadResponseDto> uploadFile(MultipartFile assetData) async | ||||||
|     test('test uploadFile', () async { |     test('test uploadFile', () async { | ||||||
|       // TODO |       // TODO | ||||||
|   | |||||||
							
								
								
									
										10
									
								
								mobile/openapi/test/authentication_api_test.dart
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										10
									
								
								mobile/openapi/test/authentication_api_test.dart
									
									
									
										generated
									
									
									
								
							| @@ -17,26 +17,36 @@ void main() { | |||||||
|   // final instance = AuthenticationApi(); |   // final instance = AuthenticationApi(); | ||||||
| 
 | 
 | ||||||
|   group('tests for AuthenticationApi', () { |   group('tests for AuthenticationApi', () { | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<AdminSignupResponseDto> adminSignUp(SignUpDto signUpDto) async |     //Future<AdminSignupResponseDto> adminSignUp(SignUpDto signUpDto) async | ||||||
|     test('test adminSignUp', () async { |     test('test adminSignUp', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<UserResponseDto> changePassword(ChangePasswordDto changePasswordDto) async |     //Future<UserResponseDto> changePassword(ChangePasswordDto changePasswordDto) async | ||||||
|     test('test changePassword', () async { |     test('test changePassword', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<LoginResponseDto> login(LoginCredentialDto loginCredentialDto) async |     //Future<LoginResponseDto> login(LoginCredentialDto loginCredentialDto) async | ||||||
|     test('test login', () async { |     test('test login', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<LogoutResponseDto> logout() async |     //Future<LogoutResponseDto> logout() async | ||||||
|     test('test logout', () async { |     test('test logout', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<ValidateAccessTokenResponseDto> validateAccessToken() async |     //Future<ValidateAccessTokenResponseDto> validateAccessToken() async | ||||||
|     test('test validateAccessToken', () async { |     test('test validateAccessToken', () async { | ||||||
|       // TODO |       // TODO | ||||||
|   | |||||||
							
								
								
									
										42
									
								
								mobile/openapi/test/create_assets_share_link_dto_test.dart
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								mobile/openapi/test/create_assets_share_link_dto_test.dart
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,42 @@ | |||||||
|  | // | ||||||
|  | // AUTO-GENERATED FILE, DO NOT MODIFY! | ||||||
|  | // | ||||||
|  | // @dart=2.12 | ||||||
|  | 
 | ||||||
|  | // ignore_for_file: unused_element, unused_import | ||||||
|  | // ignore_for_file: always_put_required_named_parameters_first | ||||||
|  | // ignore_for_file: constant_identifier_names | ||||||
|  | // ignore_for_file: lines_longer_than_80_chars | ||||||
|  | 
 | ||||||
|  | import 'package:openapi/api.dart'; | ||||||
|  | import 'package:test/test.dart'; | ||||||
|  | 
 | ||||||
|  | // tests for CreateAssetsShareLinkDto | ||||||
|  | void main() { | ||||||
|  |   // final instance = CreateAssetsShareLinkDto(); | ||||||
|  | 
 | ||||||
|  |   group('test CreateAssetsShareLinkDto', () { | ||||||
|  |     // List<String> assetIds (default value: const []) | ||||||
|  |     test('to test the property `assetIds`', () async { | ||||||
|  |       // TODO | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     // String expiredAt | ||||||
|  |     test('to test the property `expiredAt`', () async { | ||||||
|  |       // TODO | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     // bool allowUpload | ||||||
|  |     test('to test the property `allowUpload`', () async { | ||||||
|  |       // TODO | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     // String description | ||||||
|  |     test('to test the property `description`', () async { | ||||||
|  |       // TODO | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |   }); | ||||||
|  | 
 | ||||||
|  | } | ||||||
							
								
								
									
										2
									
								
								mobile/openapi/test/device_info_api_test.dart
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								mobile/openapi/test/device_info_api_test.dart
									
									
									
										generated
									
									
									
								
							| @@ -31,6 +31,8 @@ void main() { | |||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<DeviceInfoResponseDto> upsertDeviceInfo(UpsertDeviceInfoDto upsertDeviceInfoDto) async |     //Future<DeviceInfoResponseDto> upsertDeviceInfo(UpsertDeviceInfoDto upsertDeviceInfoDto) async | ||||||
|     test('test upsertDeviceInfo', () async { |     test('test upsertDeviceInfo', () async { | ||||||
|       // TODO |       // TODO | ||||||
|   | |||||||
							
								
								
									
										6
									
								
								mobile/openapi/test/job_api_test.dart
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								mobile/openapi/test/job_api_test.dart
									
									
									
										generated
									
									
									
								
							| @@ -17,16 +17,22 @@ void main() { | |||||||
|   // final instance = JobApi(); |   // final instance = JobApi(); | ||||||
| 
 | 
 | ||||||
|   group('tests for JobApi', () { |   group('tests for JobApi', () { | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<AllJobStatusResponseDto> getAllJobsStatus() async |     //Future<AllJobStatusResponseDto> getAllJobsStatus() async | ||||||
|     test('test getAllJobsStatus', () async { |     test('test getAllJobsStatus', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<JobStatusResponseDto> getJobStatus(JobId jobId) async |     //Future<JobStatusResponseDto> getJobStatus(JobId jobId) async | ||||||
|     test('test getJobStatus', () async { |     test('test getJobStatus', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<num> sendJobCommand(JobId jobId, JobCommandDto jobCommandDto) async |     //Future<num> sendJobCommand(JobId jobId, JobCommandDto jobCommandDto) async | ||||||
|     test('test sendJobCommand', () async { |     test('test sendJobCommand', () async { | ||||||
|       // TODO |       // TODO | ||||||
|   | |||||||
							
								
								
									
										10
									
								
								mobile/openapi/test/o_auth_api_test.dart
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										10
									
								
								mobile/openapi/test/o_auth_api_test.dart
									
									
									
										generated
									
									
									
								
							| @@ -17,26 +17,36 @@ void main() { | |||||||
|   // final instance = OAuthApi(); |   // final instance = OAuthApi(); | ||||||
| 
 | 
 | ||||||
|   group('tests for OAuthApi', () { |   group('tests for OAuthApi', () { | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<LoginResponseDto> callback(OAuthCallbackDto oAuthCallbackDto) async |     //Future<LoginResponseDto> callback(OAuthCallbackDto oAuthCallbackDto) async | ||||||
|     test('test callback', () async { |     test('test callback', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<OAuthConfigResponseDto> generateConfig(OAuthConfigDto oAuthConfigDto) async |     //Future<OAuthConfigResponseDto> generateConfig(OAuthConfigDto oAuthConfigDto) async | ||||||
|     test('test generateConfig', () async { |     test('test generateConfig', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<UserResponseDto> link(OAuthCallbackDto oAuthCallbackDto) async |     //Future<UserResponseDto> link(OAuthCallbackDto oAuthCallbackDto) async | ||||||
|     test('test link', () async { |     test('test link', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future mobileRedirect() async |     //Future mobileRedirect() async | ||||||
|     test('test mobileRedirect', () async { |     test('test mobileRedirect', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<UserResponseDto> unlink() async |     //Future<UserResponseDto> unlink() async | ||||||
|     test('test unlink', () async { |     test('test unlink', () async { | ||||||
|       // TODO |       // TODO | ||||||
|   | |||||||
							
								
								
									
										8
									
								
								mobile/openapi/test/server_info_api_test.dart
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								mobile/openapi/test/server_info_api_test.dart
									
									
									
										generated
									
									
									
								
							| @@ -17,21 +17,29 @@ void main() { | |||||||
|   // final instance = ServerInfoApi(); |   // final instance = ServerInfoApi(); | ||||||
| 
 | 
 | ||||||
|   group('tests for ServerInfoApi', () { |   group('tests for ServerInfoApi', () { | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<ServerInfoResponseDto> getServerInfo() async |     //Future<ServerInfoResponseDto> getServerInfo() async | ||||||
|     test('test getServerInfo', () async { |     test('test getServerInfo', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<ServerVersionReponseDto> getServerVersion() async |     //Future<ServerVersionReponseDto> getServerVersion() async | ||||||
|     test('test getServerVersion', () async { |     test('test getServerVersion', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<ServerStatsResponseDto> getStats() async |     //Future<ServerStatsResponseDto> getStats() async | ||||||
|     test('test getStats', () async { |     test('test getStats', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<ServerPingResponse> pingServer() async |     //Future<ServerPingResponse> pingServer() async | ||||||
|     test('test pingServer', () async { |     test('test pingServer', () async { | ||||||
|       // TODO |       // TODO | ||||||
|   | |||||||
							
								
								
									
										10
									
								
								mobile/openapi/test/share_api_test.dart
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										10
									
								
								mobile/openapi/test/share_api_test.dart
									
									
									
										generated
									
									
									
								
							| @@ -17,26 +17,36 @@ void main() { | |||||||
|   // final instance = ShareApi(); |   // final instance = ShareApi(); | ||||||
| 
 | 
 | ||||||
|   group('tests for ShareApi', () { |   group('tests for ShareApi', () { | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<SharedLinkResponseDto> editSharedLink(String id, EditSharedLinkDto editSharedLinkDto) async |     //Future<SharedLinkResponseDto> editSharedLink(String id, EditSharedLinkDto editSharedLinkDto) async | ||||||
|     test('test editSharedLink', () async { |     test('test editSharedLink', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<List<SharedLinkResponseDto>> getAllSharedLinks() async |     //Future<List<SharedLinkResponseDto>> getAllSharedLinks() async | ||||||
|     test('test getAllSharedLinks', () async { |     test('test getAllSharedLinks', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<SharedLinkResponseDto> getMySharedLink() async |     //Future<SharedLinkResponseDto> getMySharedLink() async | ||||||
|     test('test getMySharedLink', () async { |     test('test getMySharedLink', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<SharedLinkResponseDto> getSharedLinkById(String id) async |     //Future<SharedLinkResponseDto> getSharedLinkById(String id) async | ||||||
|     test('test getSharedLinkById', () async { |     test('test getSharedLinkById', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<String> removeSharedLink(String id) async |     //Future<String> removeSharedLink(String id) async | ||||||
|     test('test removeSharedLink', () async { |     test('test removeSharedLink', () async { | ||||||
|       // TODO |       // TODO | ||||||
|   | |||||||
							
								
								
									
										8
									
								
								mobile/openapi/test/system_config_api_test.dart
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								mobile/openapi/test/system_config_api_test.dart
									
									
									
										generated
									
									
									
								
							| @@ -17,21 +17,29 @@ void main() { | |||||||
|   // final instance = SystemConfigApi(); |   // final instance = SystemConfigApi(); | ||||||
| 
 | 
 | ||||||
|   group('tests for SystemConfigApi', () { |   group('tests for SystemConfigApi', () { | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<SystemConfigDto> getConfig() async |     //Future<SystemConfigDto> getConfig() async | ||||||
|     test('test getConfig', () async { |     test('test getConfig', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<SystemConfigDto> getDefaults() async |     //Future<SystemConfigDto> getDefaults() async | ||||||
|     test('test getDefaults', () async { |     test('test getDefaults', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<SystemConfigTemplateStorageOptionDto> getStorageTemplateOptions() async |     //Future<SystemConfigTemplateStorageOptionDto> getStorageTemplateOptions() async | ||||||
|     test('test getStorageTemplateOptions', () async { |     test('test getStorageTemplateOptions', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<SystemConfigDto> updateConfig(SystemConfigDto systemConfigDto) async |     //Future<SystemConfigDto> updateConfig(SystemConfigDto systemConfigDto) async | ||||||
|     test('test updateConfig', () async { |     test('test updateConfig', () async { | ||||||
|       // TODO |       // TODO | ||||||
|   | |||||||
							
								
								
									
										10
									
								
								mobile/openapi/test/tag_api_test.dart
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										10
									
								
								mobile/openapi/test/tag_api_test.dart
									
									
									
										generated
									
									
									
								
							| @@ -17,26 +17,36 @@ void main() { | |||||||
|   // final instance = TagApi(); |   // final instance = TagApi(); | ||||||
| 
 | 
 | ||||||
|   group('tests for TagApi', () { |   group('tests for TagApi', () { | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<TagResponseDto> create(CreateTagDto createTagDto) async |     //Future<TagResponseDto> create(CreateTagDto createTagDto) async | ||||||
|     test('test create', () async { |     test('test create', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future delete(String id) async |     //Future delete(String id) async | ||||||
|     test('test delete', () async { |     test('test delete', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<List<TagResponseDto>> findAll() async |     //Future<List<TagResponseDto>> findAll() async | ||||||
|     test('test findAll', () async { |     test('test findAll', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<TagResponseDto> findOne(String id) async |     //Future<TagResponseDto> findOne(String id) async | ||||||
|     test('test findOne', () async { |     test('test findOne', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<TagResponseDto> update(String id, UpdateTagDto updateTagDto) async |     //Future<TagResponseDto> update(String id, UpdateTagDto updateTagDto) async | ||||||
|     test('test update', () async { |     test('test update', () async { | ||||||
|       // TODO |       // TODO | ||||||
|   | |||||||
							
								
								
									
										27
									
								
								mobile/openapi/test/update_assets_to_shared_link_dto_test.dart
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								mobile/openapi/test/update_assets_to_shared_link_dto_test.dart
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | |||||||
|  | // | ||||||
|  | // AUTO-GENERATED FILE, DO NOT MODIFY! | ||||||
|  | // | ||||||
|  | // @dart=2.12 | ||||||
|  | 
 | ||||||
|  | // ignore_for_file: unused_element, unused_import | ||||||
|  | // ignore_for_file: always_put_required_named_parameters_first | ||||||
|  | // ignore_for_file: constant_identifier_names | ||||||
|  | // ignore_for_file: lines_longer_than_80_chars | ||||||
|  | 
 | ||||||
|  | import 'package:openapi/api.dart'; | ||||||
|  | import 'package:test/test.dart'; | ||||||
|  | 
 | ||||||
|  | // tests for UpdateAssetsToSharedLinkDto | ||||||
|  | void main() { | ||||||
|  |   // final instance = UpdateAssetsToSharedLinkDto(); | ||||||
|  | 
 | ||||||
|  |   group('test UpdateAssetsToSharedLinkDto', () { | ||||||
|  |     // List<String> assetIds (default value: const []) | ||||||
|  |     test('to test the property `assetIds`', () async { | ||||||
|  |       // TODO | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |   }); | ||||||
|  | 
 | ||||||
|  | } | ||||||
							
								
								
									
										20
									
								
								mobile/openapi/test/user_api_test.dart
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										20
									
								
								mobile/openapi/test/user_api_test.dart
									
									
									
										generated
									
									
									
								
							| @@ -17,51 +17,71 @@ void main() { | |||||||
|   // final instance = UserApi(); |   // final instance = UserApi(); | ||||||
| 
 | 
 | ||||||
|   group('tests for UserApi', () { |   group('tests for UserApi', () { | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<CreateProfileImageResponseDto> createProfileImage(MultipartFile file) async |     //Future<CreateProfileImageResponseDto> createProfileImage(MultipartFile file) async | ||||||
|     test('test createProfileImage', () async { |     test('test createProfileImage', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<UserResponseDto> createUser(CreateUserDto createUserDto) async |     //Future<UserResponseDto> createUser(CreateUserDto createUserDto) async | ||||||
|     test('test createUser', () async { |     test('test createUser', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<UserResponseDto> deleteUser(String userId) async |     //Future<UserResponseDto> deleteUser(String userId) async | ||||||
|     test('test deleteUser', () async { |     test('test deleteUser', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<List<UserResponseDto>> getAllUsers(bool isAll) async |     //Future<List<UserResponseDto>> getAllUsers(bool isAll) async | ||||||
|     test('test getAllUsers', () async { |     test('test getAllUsers', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<UserResponseDto> getMyUserInfo() async |     //Future<UserResponseDto> getMyUserInfo() async | ||||||
|     test('test getMyUserInfo', () async { |     test('test getMyUserInfo', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<Object> getProfileImage(String userId) async |     //Future<Object> getProfileImage(String userId) async | ||||||
|     test('test getProfileImage', () async { |     test('test getProfileImage', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<UserResponseDto> getUserById(String userId) async |     //Future<UserResponseDto> getUserById(String userId) async | ||||||
|     test('test getUserById', () async { |     test('test getUserById', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<UserCountResponseDto> getUserCount({ bool admin }) async |     //Future<UserCountResponseDto> getUserCount({ bool admin }) async | ||||||
|     test('test getUserCount', () async { |     test('test getUserCount', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<UserResponseDto> restoreUser(String userId) async |     //Future<UserResponseDto> restoreUser(String userId) async | ||||||
|     test('test restoreUser', () async { |     test('test restoreUser', () async { | ||||||
|       // TODO |       // TODO | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     //  | ||||||
|  |     // | ||||||
|     //Future<UserResponseDto> updateUser(UpdateUserDto updateUserDto) async |     //Future<UserResponseDto> updateUser(UpdateUserDto updateUserDto) async | ||||||
|     test('test updateUser', () async { |     test('test updateUser', () async { | ||||||
|       // TODO |       // TODO | ||||||
|   | |||||||
| @@ -14,6 +14,7 @@ import { | |||||||
|   Header, |   Header, | ||||||
|   Put, |   Put, | ||||||
|   UploadedFiles, |   UploadedFiles, | ||||||
|  |   Patch, | ||||||
| } from '@nestjs/common'; | } from '@nestjs/common'; | ||||||
| import { Authenticated } from '../../decorators/authenticated.decorator'; | import { Authenticated } from '../../decorators/authenticated.decorator'; | ||||||
| import { AssetService } from './asset.service'; | import { AssetService } from './asset.service'; | ||||||
| @@ -50,6 +51,9 @@ import { | |||||||
|   IMMICH_CONTENT_LENGTH_HINT, |   IMMICH_CONTENT_LENGTH_HINT, | ||||||
| } from '../../constants/download.constant'; | } from '../../constants/download.constant'; | ||||||
| import { DownloadFilesDto } from './dto/download-files.dto'; | import { DownloadFilesDto } from './dto/download-files.dto'; | ||||||
|  | import { CreateAssetsShareLinkDto } from './dto/create-asset-shared-link.dto'; | ||||||
|  | import { SharedLinkResponseDto } from '../share/response-dto/shared-link-response.dto'; | ||||||
|  | import { UpdateAssetsToSharedLinkDto } from './dto/add-assets-to-shared-link.dto'; | ||||||
|  |  | ||||||
| @ApiBearerAuth() | @ApiBearerAuth() | ||||||
| @ApiTags('Asset') | @ApiTags('Asset') | ||||||
| @@ -321,4 +325,22 @@ export class AssetController { | |||||||
|   ): Promise<CheckExistingAssetsResponseDto> { |   ): Promise<CheckExistingAssetsResponseDto> { | ||||||
|     return await this.assetService.checkExistingAssets(authUser, checkExistingAssetsDto); |     return await this.assetService.checkExistingAssets(authUser, checkExistingAssetsDto); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   @Authenticated() | ||||||
|  |   @Post('/shared-link') | ||||||
|  |   async createAssetsSharedLink( | ||||||
|  |     @GetAuthUser() authUser: AuthUserDto, | ||||||
|  |     @Body(ValidationPipe) dto: CreateAssetsShareLinkDto, | ||||||
|  |   ): Promise<SharedLinkResponseDto> { | ||||||
|  |     return await this.assetService.createAssetsSharedLink(authUser, dto); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   @Authenticated({ isShared: true }) | ||||||
|  |   @Patch('/shared-link') | ||||||
|  |   async updateAssetsInSharedLink( | ||||||
|  |     @GetAuthUser() authUser: AuthUserDto, | ||||||
|  |     @Body(ValidationPipe) dto: UpdateAssetsToSharedLinkDto, | ||||||
|  |   ): Promise<SharedLinkResponseDto> { | ||||||
|  |     return await this.assetService.updateAssetsInSharedLink(authUser, dto); | ||||||
|  |   } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -13,7 +13,7 @@ import { InjectRepository } from '@nestjs/typeorm'; | |||||||
| import { createHash, randomUUID } from 'node:crypto'; | import { createHash, randomUUID } from 'node:crypto'; | ||||||
| import { QueryFailedError, Repository } from 'typeorm'; | import { QueryFailedError, Repository } from 'typeorm'; | ||||||
| import { AuthUserDto } from '../../decorators/auth-user.decorator'; | import { AuthUserDto } from '../../decorators/auth-user.decorator'; | ||||||
| import { AssetEntity, AssetType } from '@app/infra'; | import { AssetEntity, AssetType, SharedLinkType } from '@app/infra'; | ||||||
| import { constants, createReadStream, ReadStream, stat } from 'fs'; | import { constants, createReadStream, ReadStream, stat } from 'fs'; | ||||||
| import { ServeFileDto } from './dto/serve-file.dto'; | import { ServeFileDto } from './dto/serve-file.dto'; | ||||||
| import { Response as Res } from 'express'; | import { Response as Res } from 'express'; | ||||||
| @@ -59,6 +59,9 @@ import { StorageService } from '@app/storage'; | |||||||
| import { ShareCore } from '../share/share.core'; | import { ShareCore } from '../share/share.core'; | ||||||
| import { ISharedLinkRepository } from '../share/shared-link.repository'; | import { ISharedLinkRepository } from '../share/shared-link.repository'; | ||||||
| import { DownloadFilesDto } from './dto/download-files.dto'; | import { DownloadFilesDto } from './dto/download-files.dto'; | ||||||
|  | import { CreateAssetsShareLinkDto } from './dto/create-asset-shared-link.dto'; | ||||||
|  | import { mapSharedLinkToResponseDto, SharedLinkResponseDto } from '../share/response-dto/shared-link-response.dto'; | ||||||
|  | import { UpdateAssetsToSharedLinkDto } from './dto/add-assets-to-shared-link.dto'; | ||||||
|  |  | ||||||
| const fileInfo = promisify(stat); | const fileInfo = promisify(stat); | ||||||
|  |  | ||||||
| @@ -699,6 +702,42 @@ export class AssetService { | |||||||
|       throw new ForbiddenException(); |       throw new ForbiddenException(); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   async createAssetsSharedLink(authUser: AuthUserDto, dto: CreateAssetsShareLinkDto): Promise<SharedLinkResponseDto> { | ||||||
|  |     const assets = []; | ||||||
|  |  | ||||||
|  |     await this.checkAssetsAccess(authUser, dto.assetIds); | ||||||
|  |     for (const assetId of dto.assetIds) { | ||||||
|  |       const asset = await this._assetRepository.getById(assetId); | ||||||
|  |       assets.push(asset); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     const sharedLink = await this.shareCore.createSharedLink(authUser.id, { | ||||||
|  |       sharedType: SharedLinkType.INDIVIDUAL, | ||||||
|  |       expiredAt: dto.expiredAt, | ||||||
|  |       allowUpload: dto.allowUpload, | ||||||
|  |       assets: assets, | ||||||
|  |       description: dto.description, | ||||||
|  |     }); | ||||||
|  |  | ||||||
|  |     return mapSharedLinkToResponseDto(sharedLink); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   async updateAssetsInSharedLink( | ||||||
|  |     authUser: AuthUserDto, | ||||||
|  |     dto: UpdateAssetsToSharedLinkDto, | ||||||
|  |   ): Promise<SharedLinkResponseDto> { | ||||||
|  |     if (!authUser.sharedLinkId) throw new ForbiddenException(); | ||||||
|  |     const assets = []; | ||||||
|  |  | ||||||
|  |     for (const assetId of dto.assetIds) { | ||||||
|  |       const asset = await this._assetRepository.getById(assetId); | ||||||
|  |       assets.push(asset); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     const updatedLink = await this.shareCore.updateAssetsInSharedLink(authUser.sharedLinkId, assets); | ||||||
|  |     return mapSharedLinkToResponseDto(updatedLink); | ||||||
|  |   } | ||||||
| } | } | ||||||
|  |  | ||||||
| async function processETag(path: string, res: Res, headers: Record<string, string>): Promise<boolean> { | async function processETag(path: string, res: Res, headers: Record<string, string>): Promise<boolean> { | ||||||
|   | |||||||
| @@ -0,0 +1,6 @@ | |||||||
|  | import { IsNotEmpty } from 'class-validator'; | ||||||
|  |  | ||||||
|  | export class UpdateAssetsToSharedLinkDto { | ||||||
|  |   @IsNotEmpty() | ||||||
|  |   assetIds!: string[]; | ||||||
|  | } | ||||||
| @@ -0,0 +1,31 @@ | |||||||
|  | import { ApiProperty } from '@nestjs/swagger'; | ||||||
|  | import { IsArray, IsBoolean, IsNotEmpty, IsOptional, IsString } from 'class-validator'; | ||||||
|  |  | ||||||
|  | export class CreateAssetsShareLinkDto { | ||||||
|  |   @IsArray() | ||||||
|  |   @IsString({ each: true }) | ||||||
|  |   @IsNotEmpty({ each: true }) | ||||||
|  |   @ApiProperty({ | ||||||
|  |     isArray: true, | ||||||
|  |     type: String, | ||||||
|  |     title: 'Array asset IDs to be shared', | ||||||
|  |     example: [ | ||||||
|  |       'bf973405-3f2a-48d2-a687-2ed4167164be', | ||||||
|  |       'dd41870b-5d00-46d2-924e-1d8489a0aa0f', | ||||||
|  |       'fad77c3f-deef-4e7e-9608-14c1aa4e559a', | ||||||
|  |     ], | ||||||
|  |   }) | ||||||
|  |   assetIds!: string[]; | ||||||
|  |  | ||||||
|  |   @IsString() | ||||||
|  |   @IsOptional() | ||||||
|  |   expiredAt?: string; | ||||||
|  |  | ||||||
|  |   @IsBoolean() | ||||||
|  |   @IsOptional() | ||||||
|  |   allowUpload?: boolean; | ||||||
|  |  | ||||||
|  |   @IsString() | ||||||
|  |   @IsOptional() | ||||||
|  |   description?: string; | ||||||
|  | } | ||||||
| @@ -1258,6 +1258,78 @@ | |||||||
|         ] |         ] | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "/asset/shared-link": { | ||||||
|  |       "post": { | ||||||
|  |         "operationId": "createAssetsSharedLink", | ||||||
|  |         "description": "", | ||||||
|  |         "parameters": [], | ||||||
|  |         "requestBody": { | ||||||
|  |           "required": true, | ||||||
|  |           "content": { | ||||||
|  |             "application/json": { | ||||||
|  |               "schema": { | ||||||
|  |                 "$ref": "#/components/schemas/CreateAssetsShareLinkDto" | ||||||
|  |               } | ||||||
|  |             } | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         "responses": { | ||||||
|  |           "201": { | ||||||
|  |             "description": "", | ||||||
|  |             "content": { | ||||||
|  |               "application/json": { | ||||||
|  |                 "schema": { | ||||||
|  |                   "$ref": "#/components/schemas/SharedLinkResponseDto" | ||||||
|  |                 } | ||||||
|  |               } | ||||||
|  |             } | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         "tags": [ | ||||||
|  |           "Asset" | ||||||
|  |         ], | ||||||
|  |         "security": [ | ||||||
|  |           { | ||||||
|  |             "bearer": [] | ||||||
|  |           } | ||||||
|  |         ] | ||||||
|  |       }, | ||||||
|  |       "patch": { | ||||||
|  |         "operationId": "updateAssetsInSharedLink", | ||||||
|  |         "description": "", | ||||||
|  |         "parameters": [], | ||||||
|  |         "requestBody": { | ||||||
|  |           "required": true, | ||||||
|  |           "content": { | ||||||
|  |             "application/json": { | ||||||
|  |               "schema": { | ||||||
|  |                 "$ref": "#/components/schemas/UpdateAssetsToSharedLinkDto" | ||||||
|  |               } | ||||||
|  |             } | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         "responses": { | ||||||
|  |           "200": { | ||||||
|  |             "description": "", | ||||||
|  |             "content": { | ||||||
|  |               "application/json": { | ||||||
|  |                 "schema": { | ||||||
|  |                   "$ref": "#/components/schemas/SharedLinkResponseDto" | ||||||
|  |                 } | ||||||
|  |               } | ||||||
|  |             } | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         "tags": [ | ||||||
|  |           "Asset" | ||||||
|  |         ], | ||||||
|  |         "security": [ | ||||||
|  |           { | ||||||
|  |             "bearer": [] | ||||||
|  |           } | ||||||
|  |         ] | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "/share": { |     "/share": { | ||||||
|       "get": { |       "get": { | ||||||
|         "operationId": "getAllSharedLinks", |         "operationId": "getAllSharedLinks", | ||||||
| @@ -3548,6 +3620,35 @@ | |||||||
|           "existingIds" |           "existingIds" | ||||||
|         ] |         ] | ||||||
|       }, |       }, | ||||||
|  |       "CreateAssetsShareLinkDto": { | ||||||
|  |         "type": "object", | ||||||
|  |         "properties": { | ||||||
|  |           "assetIds": { | ||||||
|  |             "title": "Array asset IDs to be shared", | ||||||
|  |             "example": [ | ||||||
|  |               "bf973405-3f2a-48d2-a687-2ed4167164be", | ||||||
|  |               "dd41870b-5d00-46d2-924e-1d8489a0aa0f", | ||||||
|  |               "fad77c3f-deef-4e7e-9608-14c1aa4e559a" | ||||||
|  |             ], | ||||||
|  |             "type": "array", | ||||||
|  |             "items": { | ||||||
|  |               "type": "string" | ||||||
|  |             } | ||||||
|  |           }, | ||||||
|  |           "expiredAt": { | ||||||
|  |             "type": "string" | ||||||
|  |           }, | ||||||
|  |           "allowUpload": { | ||||||
|  |             "type": "boolean" | ||||||
|  |           }, | ||||||
|  |           "description": { | ||||||
|  |             "type": "string" | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         "required": [ | ||||||
|  |           "assetIds" | ||||||
|  |         ] | ||||||
|  |       }, | ||||||
|       "SharedLinkType": { |       "SharedLinkType": { | ||||||
|         "type": "string", |         "type": "string", | ||||||
|         "enum": [ |         "enum": [ | ||||||
| @@ -3654,6 +3755,20 @@ | |||||||
|           "allowUpload" |           "allowUpload" | ||||||
|         ] |         ] | ||||||
|       }, |       }, | ||||||
|  |       "UpdateAssetsToSharedLinkDto": { | ||||||
|  |         "type": "object", | ||||||
|  |         "properties": { | ||||||
|  |           "assetIds": { | ||||||
|  |             "type": "array", | ||||||
|  |             "items": { | ||||||
|  |               "type": "string" | ||||||
|  |             } | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         "required": [ | ||||||
|  |           "assetIds" | ||||||
|  |         ] | ||||||
|  |       }, | ||||||
|       "EditSharedLinkDto": { |       "EditSharedLinkDto": { | ||||||
|         "type": "object", |         "type": "object", | ||||||
|         "properties": { |         "properties": { | ||||||
|   | |||||||
							
								
								
									
										192
									
								
								web/src/api/open-api/api.ts
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										192
									
								
								web/src/api/open-api/api.ts
									
									
									
										generated
									
									
									
								
							| @@ -4,7 +4,7 @@ | |||||||
|  * Immich |  * Immich | ||||||
|  * Immich API |  * Immich API | ||||||
|  * |  * | ||||||
|  * The version of the OpenAPI document: 1.40.0 |  * The version of the OpenAPI document: 1.41.1 | ||||||
|  *  |  *  | ||||||
|  * |  * | ||||||
|  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 |  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 | ||||||
| @@ -702,6 +702,37 @@ export interface CreateAlbumShareLinkDto { | |||||||
|      */ |      */ | ||||||
|     'description'?: string; |     'description'?: string; | ||||||
| } | } | ||||||
|  | /** | ||||||
|  |  *  | ||||||
|  |  * @export | ||||||
|  |  * @interface CreateAssetsShareLinkDto | ||||||
|  |  */ | ||||||
|  | export interface CreateAssetsShareLinkDto { | ||||||
|  |     /** | ||||||
|  |      *  | ||||||
|  |      * @type {Array<string>} | ||||||
|  |      * @memberof CreateAssetsShareLinkDto | ||||||
|  |      */ | ||||||
|  |     'assetIds': Array<string>; | ||||||
|  |     /** | ||||||
|  |      *  | ||||||
|  |      * @type {string} | ||||||
|  |      * @memberof CreateAssetsShareLinkDto | ||||||
|  |      */ | ||||||
|  |     'expiredAt'?: string; | ||||||
|  |     /** | ||||||
|  |      *  | ||||||
|  |      * @type {boolean} | ||||||
|  |      * @memberof CreateAssetsShareLinkDto | ||||||
|  |      */ | ||||||
|  |     'allowUpload'?: boolean; | ||||||
|  |     /** | ||||||
|  |      *  | ||||||
|  |      * @type {string} | ||||||
|  |      * @memberof CreateAssetsShareLinkDto | ||||||
|  |      */ | ||||||
|  |     'description'?: string; | ||||||
|  | } | ||||||
| /** | /** | ||||||
|  *  |  *  | ||||||
|  * @export |  * @export | ||||||
| @@ -2029,6 +2060,19 @@ export interface UpdateAssetDto { | |||||||
|      */ |      */ | ||||||
|     'isFavorite'?: boolean; |     'isFavorite'?: boolean; | ||||||
| } | } | ||||||
|  | /** | ||||||
|  |  *  | ||||||
|  |  * @export | ||||||
|  |  * @interface UpdateAssetsToSharedLinkDto | ||||||
|  |  */ | ||||||
|  | export interface UpdateAssetsToSharedLinkDto { | ||||||
|  |     /** | ||||||
|  |      *  | ||||||
|  |      * @type {Array<string>} | ||||||
|  |      * @memberof UpdateAssetsToSharedLinkDto | ||||||
|  |      */ | ||||||
|  |     'assetIds': Array<string>; | ||||||
|  | } | ||||||
| /** | /** | ||||||
|  *  |  *  | ||||||
|  * @export |  * @export | ||||||
| @@ -3599,6 +3643,45 @@ export const AssetApiAxiosParamCreator = function (configuration?: Configuration | |||||||
|                 options: localVarRequestOptions, |                 options: localVarRequestOptions, | ||||||
|             }; |             }; | ||||||
|         }, |         }, | ||||||
|  |         /** | ||||||
|  |          *  | ||||||
|  |          * @param {CreateAssetsShareLinkDto} createAssetsShareLinkDto  | ||||||
|  |          * @param {*} [options] Override http request option. | ||||||
|  |          * @throws {RequiredError} | ||||||
|  |          */ | ||||||
|  |         createAssetsSharedLink: async (createAssetsShareLinkDto: CreateAssetsShareLinkDto, options: AxiosRequestConfig = {}): Promise<RequestArgs> => { | ||||||
|  |             // verify required parameter 'createAssetsShareLinkDto' is not null or undefined
 | ||||||
|  |             assertParamExists('createAssetsSharedLink', 'createAssetsShareLinkDto', createAssetsShareLinkDto) | ||||||
|  |             const localVarPath = `/asset/shared-link`; | ||||||
|  |             // use dummy base URL string because the URL constructor only accepts absolute URLs.
 | ||||||
|  |             const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); | ||||||
|  |             let baseOptions; | ||||||
|  |             if (configuration) { | ||||||
|  |                 baseOptions = configuration.baseOptions; | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; | ||||||
|  |             const localVarHeaderParameter = {} as any; | ||||||
|  |             const localVarQueryParameter = {} as any; | ||||||
|  | 
 | ||||||
|  |             // authentication bearer required
 | ||||||
|  |             // http bearer authentication required
 | ||||||
|  |             await setBearerAuthToObject(localVarHeaderParameter, configuration) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |      | ||||||
|  |             localVarHeaderParameter['Content-Type'] = 'application/json'; | ||||||
|  | 
 | ||||||
|  |             setSearchParams(localVarUrlObj, localVarQueryParameter); | ||||||
|  |             let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; | ||||||
|  |             localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; | ||||||
|  |             localVarRequestOptions.data = serializeDataIfNeeded(createAssetsShareLinkDto, localVarRequestOptions, configuration) | ||||||
|  | 
 | ||||||
|  |             return { | ||||||
|  |                 url: toPathString(localVarUrlObj), | ||||||
|  |                 options: localVarRequestOptions, | ||||||
|  |             }; | ||||||
|  |         }, | ||||||
|         /** |         /** | ||||||
|          *  |          *  | ||||||
|          * @param {DeleteAssetDto} deleteAssetDto  |          * @param {DeleteAssetDto} deleteAssetDto  | ||||||
| @@ -4255,6 +4338,45 @@ export const AssetApiAxiosParamCreator = function (configuration?: Configuration | |||||||
|                 options: localVarRequestOptions, |                 options: localVarRequestOptions, | ||||||
|             }; |             }; | ||||||
|         }, |         }, | ||||||
|  |         /** | ||||||
|  |          *  | ||||||
|  |          * @param {UpdateAssetsToSharedLinkDto} updateAssetsToSharedLinkDto  | ||||||
|  |          * @param {*} [options] Override http request option. | ||||||
|  |          * @throws {RequiredError} | ||||||
|  |          */ | ||||||
|  |         updateAssetsInSharedLink: async (updateAssetsToSharedLinkDto: UpdateAssetsToSharedLinkDto, options: AxiosRequestConfig = {}): Promise<RequestArgs> => { | ||||||
|  |             // verify required parameter 'updateAssetsToSharedLinkDto' is not null or undefined
 | ||||||
|  |             assertParamExists('updateAssetsInSharedLink', 'updateAssetsToSharedLinkDto', updateAssetsToSharedLinkDto) | ||||||
|  |             const localVarPath = `/asset/shared-link`; | ||||||
|  |             // use dummy base URL string because the URL constructor only accepts absolute URLs.
 | ||||||
|  |             const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); | ||||||
|  |             let baseOptions; | ||||||
|  |             if (configuration) { | ||||||
|  |                 baseOptions = configuration.baseOptions; | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             const localVarRequestOptions = { method: 'PATCH', ...baseOptions, ...options}; | ||||||
|  |             const localVarHeaderParameter = {} as any; | ||||||
|  |             const localVarQueryParameter = {} as any; | ||||||
|  | 
 | ||||||
|  |             // authentication bearer required
 | ||||||
|  |             // http bearer authentication required
 | ||||||
|  |             await setBearerAuthToObject(localVarHeaderParameter, configuration) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |      | ||||||
|  |             localVarHeaderParameter['Content-Type'] = 'application/json'; | ||||||
|  | 
 | ||||||
|  |             setSearchParams(localVarUrlObj, localVarQueryParameter); | ||||||
|  |             let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; | ||||||
|  |             localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; | ||||||
|  |             localVarRequestOptions.data = serializeDataIfNeeded(updateAssetsToSharedLinkDto, localVarRequestOptions, configuration) | ||||||
|  | 
 | ||||||
|  |             return { | ||||||
|  |                 url: toPathString(localVarUrlObj), | ||||||
|  |                 options: localVarRequestOptions, | ||||||
|  |             }; | ||||||
|  |         }, | ||||||
|         /** |         /** | ||||||
|          *  |          *  | ||||||
|          * @param {any} assetData  |          * @param {any} assetData  | ||||||
| @@ -4329,6 +4451,16 @@ export const AssetApiFp = function(configuration?: Configuration) { | |||||||
|             const localVarAxiosArgs = await localVarAxiosParamCreator.checkExistingAssets(checkExistingAssetsDto, options); |             const localVarAxiosArgs = await localVarAxiosParamCreator.checkExistingAssets(checkExistingAssetsDto, options); | ||||||
|             return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); |             return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); | ||||||
|         }, |         }, | ||||||
|  |         /** | ||||||
|  |          *  | ||||||
|  |          * @param {CreateAssetsShareLinkDto} createAssetsShareLinkDto  | ||||||
|  |          * @param {*} [options] Override http request option. | ||||||
|  |          * @throws {RequiredError} | ||||||
|  |          */ | ||||||
|  |         async createAssetsSharedLink(createAssetsShareLinkDto: CreateAssetsShareLinkDto, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<SharedLinkResponseDto>> { | ||||||
|  |             const localVarAxiosArgs = await localVarAxiosParamCreator.createAssetsSharedLink(createAssetsShareLinkDto, options); | ||||||
|  |             return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); | ||||||
|  |         }, | ||||||
|         /** |         /** | ||||||
|          *  |          *  | ||||||
|          * @param {DeleteAssetDto} deleteAssetDto  |          * @param {DeleteAssetDto} deleteAssetDto  | ||||||
| @@ -4501,6 +4633,16 @@ export const AssetApiFp = function(configuration?: Configuration) { | |||||||
|             const localVarAxiosArgs = await localVarAxiosParamCreator.updateAsset(assetId, updateAssetDto, options); |             const localVarAxiosArgs = await localVarAxiosParamCreator.updateAsset(assetId, updateAssetDto, options); | ||||||
|             return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); |             return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); | ||||||
|         }, |         }, | ||||||
|  |         /** | ||||||
|  |          *  | ||||||
|  |          * @param {UpdateAssetsToSharedLinkDto} updateAssetsToSharedLinkDto  | ||||||
|  |          * @param {*} [options] Override http request option. | ||||||
|  |          * @throws {RequiredError} | ||||||
|  |          */ | ||||||
|  |         async updateAssetsInSharedLink(updateAssetsToSharedLinkDto: UpdateAssetsToSharedLinkDto, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<SharedLinkResponseDto>> { | ||||||
|  |             const localVarAxiosArgs = await localVarAxiosParamCreator.updateAssetsInSharedLink(updateAssetsToSharedLinkDto, options); | ||||||
|  |             return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); | ||||||
|  |         }, | ||||||
|         /** |         /** | ||||||
|          *  |          *  | ||||||
|          * @param {any} assetData  |          * @param {any} assetData  | ||||||
| @@ -4539,6 +4681,15 @@ export const AssetApiFactory = function (configuration?: Configuration, basePath | |||||||
|         checkExistingAssets(checkExistingAssetsDto: CheckExistingAssetsDto, options?: any): AxiosPromise<CheckExistingAssetsResponseDto> { |         checkExistingAssets(checkExistingAssetsDto: CheckExistingAssetsDto, options?: any): AxiosPromise<CheckExistingAssetsResponseDto> { | ||||||
|             return localVarFp.checkExistingAssets(checkExistingAssetsDto, options).then((request) => request(axios, basePath)); |             return localVarFp.checkExistingAssets(checkExistingAssetsDto, options).then((request) => request(axios, basePath)); | ||||||
|         }, |         }, | ||||||
|  |         /** | ||||||
|  |          *  | ||||||
|  |          * @param {CreateAssetsShareLinkDto} createAssetsShareLinkDto  | ||||||
|  |          * @param {*} [options] Override http request option. | ||||||
|  |          * @throws {RequiredError} | ||||||
|  |          */ | ||||||
|  |         createAssetsSharedLink(createAssetsShareLinkDto: CreateAssetsShareLinkDto, options?: any): AxiosPromise<SharedLinkResponseDto> { | ||||||
|  |             return localVarFp.createAssetsSharedLink(createAssetsShareLinkDto, options).then((request) => request(axios, basePath)); | ||||||
|  |         }, | ||||||
|         /** |         /** | ||||||
|          *  |          *  | ||||||
|          * @param {DeleteAssetDto} deleteAssetDto  |          * @param {DeleteAssetDto} deleteAssetDto  | ||||||
| @@ -4694,6 +4845,15 @@ export const AssetApiFactory = function (configuration?: Configuration, basePath | |||||||
|         updateAsset(assetId: string, updateAssetDto: UpdateAssetDto, options?: any): AxiosPromise<AssetResponseDto> { |         updateAsset(assetId: string, updateAssetDto: UpdateAssetDto, options?: any): AxiosPromise<AssetResponseDto> { | ||||||
|             return localVarFp.updateAsset(assetId, updateAssetDto, options).then((request) => request(axios, basePath)); |             return localVarFp.updateAsset(assetId, updateAssetDto, options).then((request) => request(axios, basePath)); | ||||||
|         }, |         }, | ||||||
|  |         /** | ||||||
|  |          *  | ||||||
|  |          * @param {UpdateAssetsToSharedLinkDto} updateAssetsToSharedLinkDto  | ||||||
|  |          * @param {*} [options] Override http request option. | ||||||
|  |          * @throws {RequiredError} | ||||||
|  |          */ | ||||||
|  |         updateAssetsInSharedLink(updateAssetsToSharedLinkDto: UpdateAssetsToSharedLinkDto, options?: any): AxiosPromise<SharedLinkResponseDto> { | ||||||
|  |             return localVarFp.updateAssetsInSharedLink(updateAssetsToSharedLinkDto, options).then((request) => request(axios, basePath)); | ||||||
|  |         }, | ||||||
|         /** |         /** | ||||||
|          *  |          *  | ||||||
|          * @param {any} assetData  |          * @param {any} assetData  | ||||||
| @@ -4735,6 +4895,17 @@ export class AssetApi extends BaseAPI { | |||||||
|         return AssetApiFp(this.configuration).checkExistingAssets(checkExistingAssetsDto, options).then((request) => request(this.axios, this.basePath)); |         return AssetApiFp(this.configuration).checkExistingAssets(checkExistingAssetsDto, options).then((request) => request(this.axios, this.basePath)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     /** | ||||||
|  |      *  | ||||||
|  |      * @param {CreateAssetsShareLinkDto} createAssetsShareLinkDto  | ||||||
|  |      * @param {*} [options] Override http request option. | ||||||
|  |      * @throws {RequiredError} | ||||||
|  |      * @memberof AssetApi | ||||||
|  |      */ | ||||||
|  |     public createAssetsSharedLink(createAssetsShareLinkDto: CreateAssetsShareLinkDto, options?: AxiosRequestConfig) { | ||||||
|  |         return AssetApiFp(this.configuration).createAssetsSharedLink(createAssetsShareLinkDto, options).then((request) => request(this.axios, this.basePath)); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     /** |     /** | ||||||
|      *  |      *  | ||||||
|      * @param {DeleteAssetDto} deleteAssetDto  |      * @param {DeleteAssetDto} deleteAssetDto  | ||||||
| @@ -4924,6 +5095,17 @@ export class AssetApi extends BaseAPI { | |||||||
|         return AssetApiFp(this.configuration).updateAsset(assetId, updateAssetDto, options).then((request) => request(this.axios, this.basePath)); |         return AssetApiFp(this.configuration).updateAsset(assetId, updateAssetDto, options).then((request) => request(this.axios, this.basePath)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     /** | ||||||
|  |      *  | ||||||
|  |      * @param {UpdateAssetsToSharedLinkDto} updateAssetsToSharedLinkDto  | ||||||
|  |      * @param {*} [options] Override http request option. | ||||||
|  |      * @throws {RequiredError} | ||||||
|  |      * @memberof AssetApi | ||||||
|  |      */ | ||||||
|  |     public updateAssetsInSharedLink(updateAssetsToSharedLinkDto: UpdateAssetsToSharedLinkDto, options?: AxiosRequestConfig) { | ||||||
|  |         return AssetApiFp(this.configuration).updateAssetsInSharedLink(updateAssetsToSharedLinkDto, options).then((request) => request(this.axios, this.basePath)); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     /** |     /** | ||||||
|      *  |      *  | ||||||
|      * @param {any} assetData  |      * @param {any} assetData  | ||||||
| @@ -5300,6 +5482,7 @@ export const DeviceInfoApiAxiosParamCreator = function (configuration?: Configur | |||||||
|          * @deprecated |          * @deprecated | ||||||
|          * @param {UpsertDeviceInfoDto} upsertDeviceInfoDto  |          * @param {UpsertDeviceInfoDto} upsertDeviceInfoDto  | ||||||
|          * @param {*} [options] Override http request option. |          * @param {*} [options] Override http request option. | ||||||
|  |          * @deprecated | ||||||
|          * @throws {RequiredError} |          * @throws {RequiredError} | ||||||
|          */ |          */ | ||||||
|         createDeviceInfo: async (upsertDeviceInfoDto: UpsertDeviceInfoDto, options: AxiosRequestConfig = {}): Promise<RequestArgs> => { |         createDeviceInfo: async (upsertDeviceInfoDto: UpsertDeviceInfoDto, options: AxiosRequestConfig = {}): Promise<RequestArgs> => { | ||||||
| @@ -5339,6 +5522,7 @@ export const DeviceInfoApiAxiosParamCreator = function (configuration?: Configur | |||||||
|          * @deprecated |          * @deprecated | ||||||
|          * @param {UpsertDeviceInfoDto} upsertDeviceInfoDto  |          * @param {UpsertDeviceInfoDto} upsertDeviceInfoDto  | ||||||
|          * @param {*} [options] Override http request option. |          * @param {*} [options] Override http request option. | ||||||
|  |          * @deprecated | ||||||
|          * @throws {RequiredError} |          * @throws {RequiredError} | ||||||
|          */ |          */ | ||||||
|         updateDeviceInfo: async (upsertDeviceInfoDto: UpsertDeviceInfoDto, options: AxiosRequestConfig = {}): Promise<RequestArgs> => { |         updateDeviceInfo: async (upsertDeviceInfoDto: UpsertDeviceInfoDto, options: AxiosRequestConfig = {}): Promise<RequestArgs> => { | ||||||
| @@ -5427,6 +5611,7 @@ export const DeviceInfoApiFp = function(configuration?: Configuration) { | |||||||
|          * @deprecated |          * @deprecated | ||||||
|          * @param {UpsertDeviceInfoDto} upsertDeviceInfoDto  |          * @param {UpsertDeviceInfoDto} upsertDeviceInfoDto  | ||||||
|          * @param {*} [options] Override http request option. |          * @param {*} [options] Override http request option. | ||||||
|  |          * @deprecated | ||||||
|          * @throws {RequiredError} |          * @throws {RequiredError} | ||||||
|          */ |          */ | ||||||
|         async createDeviceInfo(upsertDeviceInfoDto: UpsertDeviceInfoDto, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<DeviceInfoResponseDto>> { |         async createDeviceInfo(upsertDeviceInfoDto: UpsertDeviceInfoDto, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<DeviceInfoResponseDto>> { | ||||||
| @@ -5437,6 +5622,7 @@ export const DeviceInfoApiFp = function(configuration?: Configuration) { | |||||||
|          * @deprecated |          * @deprecated | ||||||
|          * @param {UpsertDeviceInfoDto} upsertDeviceInfoDto  |          * @param {UpsertDeviceInfoDto} upsertDeviceInfoDto  | ||||||
|          * @param {*} [options] Override http request option. |          * @param {*} [options] Override http request option. | ||||||
|  |          * @deprecated | ||||||
|          * @throws {RequiredError} |          * @throws {RequiredError} | ||||||
|          */ |          */ | ||||||
|         async updateDeviceInfo(upsertDeviceInfoDto: UpsertDeviceInfoDto, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<DeviceInfoResponseDto>> { |         async updateDeviceInfo(upsertDeviceInfoDto: UpsertDeviceInfoDto, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<DeviceInfoResponseDto>> { | ||||||
| @@ -5467,6 +5653,7 @@ export const DeviceInfoApiFactory = function (configuration?: Configuration, bas | |||||||
|          * @deprecated |          * @deprecated | ||||||
|          * @param {UpsertDeviceInfoDto} upsertDeviceInfoDto  |          * @param {UpsertDeviceInfoDto} upsertDeviceInfoDto  | ||||||
|          * @param {*} [options] Override http request option. |          * @param {*} [options] Override http request option. | ||||||
|  |          * @deprecated | ||||||
|          * @throws {RequiredError} |          * @throws {RequiredError} | ||||||
|          */ |          */ | ||||||
|         createDeviceInfo(upsertDeviceInfoDto: UpsertDeviceInfoDto, options?: any): AxiosPromise<DeviceInfoResponseDto> { |         createDeviceInfo(upsertDeviceInfoDto: UpsertDeviceInfoDto, options?: any): AxiosPromise<DeviceInfoResponseDto> { | ||||||
| @@ -5476,6 +5663,7 @@ export const DeviceInfoApiFactory = function (configuration?: Configuration, bas | |||||||
|          * @deprecated |          * @deprecated | ||||||
|          * @param {UpsertDeviceInfoDto} upsertDeviceInfoDto  |          * @param {UpsertDeviceInfoDto} upsertDeviceInfoDto  | ||||||
|          * @param {*} [options] Override http request option. |          * @param {*} [options] Override http request option. | ||||||
|  |          * @deprecated | ||||||
|          * @throws {RequiredError} |          * @throws {RequiredError} | ||||||
|          */ |          */ | ||||||
|         updateDeviceInfo(upsertDeviceInfoDto: UpsertDeviceInfoDto, options?: any): AxiosPromise<DeviceInfoResponseDto> { |         updateDeviceInfo(upsertDeviceInfoDto: UpsertDeviceInfoDto, options?: any): AxiosPromise<DeviceInfoResponseDto> { | ||||||
| @@ -5504,6 +5692,7 @@ export class DeviceInfoApi extends BaseAPI { | |||||||
|      * @deprecated |      * @deprecated | ||||||
|      * @param {UpsertDeviceInfoDto} upsertDeviceInfoDto  |      * @param {UpsertDeviceInfoDto} upsertDeviceInfoDto  | ||||||
|      * @param {*} [options] Override http request option. |      * @param {*} [options] Override http request option. | ||||||
|  |      * @deprecated | ||||||
|      * @throws {RequiredError} |      * @throws {RequiredError} | ||||||
|      * @memberof DeviceInfoApi |      * @memberof DeviceInfoApi | ||||||
|      */ |      */ | ||||||
| @@ -5515,6 +5704,7 @@ export class DeviceInfoApi extends BaseAPI { | |||||||
|      * @deprecated |      * @deprecated | ||||||
|      * @param {UpsertDeviceInfoDto} upsertDeviceInfoDto  |      * @param {UpsertDeviceInfoDto} upsertDeviceInfoDto  | ||||||
|      * @param {*} [options] Override http request option. |      * @param {*} [options] Override http request option. | ||||||
|  |      * @deprecated | ||||||
|      * @throws {RequiredError} |      * @throws {RequiredError} | ||||||
|      * @memberof DeviceInfoApi |      * @memberof DeviceInfoApi | ||||||
|      */ |      */ | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								web/src/api/open-api/base.ts
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								web/src/api/open-api/base.ts
									
									
									
										generated
									
									
									
								
							| @@ -4,7 +4,7 @@ | |||||||
|  * Immich |  * Immich | ||||||
|  * Immich API |  * Immich API | ||||||
|  * |  * | ||||||
|  * The version of the OpenAPI document: 1.40.0 |  * The version of the OpenAPI document: 1.41.1 | ||||||
|  *  |  *  | ||||||
|  * |  * | ||||||
|  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 |  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								web/src/api/open-api/common.ts
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								web/src/api/open-api/common.ts
									
									
									
										generated
									
									
									
								
							| @@ -4,7 +4,7 @@ | |||||||
|  * Immich |  * Immich | ||||||
|  * Immich API |  * Immich API | ||||||
|  * |  * | ||||||
|  * The version of the OpenAPI document: 1.40.0 |  * The version of the OpenAPI document: 1.41.1 | ||||||
|  *  |  *  | ||||||
|  * |  * | ||||||
|  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 |  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								web/src/api/open-api/configuration.ts
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								web/src/api/open-api/configuration.ts
									
									
									
										generated
									
									
									
								
							| @@ -4,7 +4,7 @@ | |||||||
|  * Immich |  * Immich | ||||||
|  * Immich API |  * Immich API | ||||||
|  * |  * | ||||||
|  * The version of the OpenAPI document: 1.40.0 |  * The version of the OpenAPI document: 1.41.1 | ||||||
|  *  |  *  | ||||||
|  * |  * | ||||||
|  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 |  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								web/src/api/open-api/index.ts
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								web/src/api/open-api/index.ts
									
									
									
										generated
									
									
									
								
							| @@ -4,7 +4,7 @@ | |||||||
|  * Immich |  * Immich | ||||||
|  * Immich API |  * Immich API | ||||||
|  * |  * | ||||||
|  * The version of the OpenAPI document: 1.40.0 |  * The version of the OpenAPI document: 1.41.1 | ||||||
|  *  |  *  | ||||||
|  * |  * | ||||||
|  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 |  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 | ||||||
|   | |||||||
| @@ -1,13 +1,11 @@ | |||||||
| <script lang="ts"> | <script lang="ts"> | ||||||
| 	import { afterNavigate, goto } from '$app/navigation'; | 	import { afterNavigate, goto } from '$app/navigation'; | ||||||
| 	import { page } from '$app/stores'; |  | ||||||
| 	import { | 	import { | ||||||
| 		AlbumResponseDto, | 		AlbumResponseDto, | ||||||
| 		api, | 		api, | ||||||
| 		AssetResponseDto, | 		AssetResponseDto, | ||||||
| 		SharedLinkResponseDto, | 		SharedLinkResponseDto, | ||||||
| 		SharedLinkType, | 		SharedLinkType, | ||||||
| 		ThumbnailFormat, |  | ||||||
| 		UserResponseDto | 		UserResponseDto | ||||||
| 	} from '@api'; | 	} from '@api'; | ||||||
| 	import { onMount } from 'svelte'; | 	import { onMount } from 'svelte'; | ||||||
| @@ -15,9 +13,7 @@ | |||||||
| 	import Plus from 'svelte-material-icons/Plus.svelte'; | 	import Plus from 'svelte-material-icons/Plus.svelte'; | ||||||
| 	import FileImagePlusOutline from 'svelte-material-icons/FileImagePlusOutline.svelte'; | 	import FileImagePlusOutline from 'svelte-material-icons/FileImagePlusOutline.svelte'; | ||||||
| 	import ShareVariantOutline from 'svelte-material-icons/ShareVariantOutline.svelte'; | 	import ShareVariantOutline from 'svelte-material-icons/ShareVariantOutline.svelte'; | ||||||
| 	import AssetViewer from '../asset-viewer/asset-viewer.svelte'; |  | ||||||
| 	import CircleAvatar from '../shared-components/circle-avatar.svelte'; | 	import CircleAvatar from '../shared-components/circle-avatar.svelte'; | ||||||
| 	import ImmichThumbnail from '../shared-components/immich-thumbnail.svelte'; |  | ||||||
| 	import AssetSelection from './asset-selection.svelte'; | 	import AssetSelection from './asset-selection.svelte'; | ||||||
| 	import UserSelectionModal from './user-selection-modal.svelte'; | 	import UserSelectionModal from './user-selection-modal.svelte'; | ||||||
| 	import ShareInfoModal from './share-info-modal.svelte'; | 	import ShareInfoModal from './share-info-modal.svelte'; | ||||||
| @@ -43,14 +39,13 @@ | |||||||
| 	import ThemeButton from '../shared-components/theme-button.svelte'; | 	import ThemeButton from '../shared-components/theme-button.svelte'; | ||||||
| 	import { openFileUploadDialog } from '$lib/utils/file-uploader'; | 	import { openFileUploadDialog } from '$lib/utils/file-uploader'; | ||||||
| 	import { bulkDownload } from '$lib/utils/asset-utils'; | 	import { bulkDownload } from '$lib/utils/asset-utils'; | ||||||
|  | 	import GalleryViewer from '../shared-components/gallery-viewer/gallery-viewer.svelte'; | ||||||
|  |  | ||||||
| 	export let album: AlbumResponseDto; | 	export let album: AlbumResponseDto; | ||||||
| 	export let sharedLink: SharedLinkResponseDto | undefined = undefined; | 	export let sharedLink: SharedLinkResponseDto | undefined = undefined; | ||||||
|  |  | ||||||
| 	const { isAlbumAssetSelectionOpen } = albumAssetSelectionStore; | 	const { isAlbumAssetSelectionOpen } = albumAssetSelectionStore; | ||||||
|  |  | ||||||
| 	let isShowAssetViewer = false; |  | ||||||
|  |  | ||||||
| 	let isShowAssetSelection = false; | 	let isShowAssetSelection = false; | ||||||
|  |  | ||||||
| 	let isShowShareLinkModal = false; | 	let isShowShareLinkModal = false; | ||||||
| @@ -72,11 +67,6 @@ | |||||||
| 	let isShowAlbumOptions = false; | 	let isShowAlbumOptions = false; | ||||||
| 	let isShowThumbnailSelection = false; | 	let isShowThumbnailSelection = false; | ||||||
|  |  | ||||||
| 	let selectedAsset: AssetResponseDto; |  | ||||||
| 	let currentViewAssetIndex = 0; |  | ||||||
|  |  | ||||||
| 	let viewWidth: number; |  | ||||||
| 	let thumbnailSize = 300; |  | ||||||
| 	let backUrl = '/albums'; | 	let backUrl = '/albums'; | ||||||
| 	let currentAlbumName = ''; | 	let currentAlbumName = ''; | ||||||
| 	let currentUser: UserResponseDto; | 	let currentUser: UserResponseDto; | ||||||
| @@ -97,18 +87,6 @@ | |||||||
| 		} | 		} | ||||||
| 	}); | 	}); | ||||||
|  |  | ||||||
| 	$: { |  | ||||||
| 		if (album.assets?.length < 6) { |  | ||||||
| 			thumbnailSize = Math.floor(viewWidth / album.assetCount - album.assetCount); |  | ||||||
| 		} else { |  | ||||||
| 			if (viewWidth > 600) thumbnailSize = Math.floor(viewWidth / 6 - 6); |  | ||||||
| 			else if (viewWidth > 400) thumbnailSize = Math.floor(viewWidth / 4 - 6); |  | ||||||
| 			else if (viewWidth > 300) thumbnailSize = Math.floor(viewWidth / 2 - 6); |  | ||||||
| 			else if (viewWidth > 200) thumbnailSize = Math.floor(viewWidth / 2 - 6); |  | ||||||
| 			else if (viewWidth > 100) thumbnailSize = Math.floor(viewWidth / 1 - 6); |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	const locale = navigator.language; | 	const locale = navigator.language; | ||||||
| 	const albumDateFormat: Intl.DateTimeFormatOptions = { | 	const albumDateFormat: Intl.DateTimeFormatOptions = { | ||||||
| 		month: 'short', | 		month: 'short', | ||||||
| @@ -140,28 +118,6 @@ | |||||||
| 		} | 		} | ||||||
| 	}); | 	}); | ||||||
|  |  | ||||||
| 	const viewAssetHandler = (event: CustomEvent) => { |  | ||||||
| 		const { asset }: { asset: AssetResponseDto } = event.detail; |  | ||||||
|  |  | ||||||
| 		currentViewAssetIndex = album.assets.findIndex((a) => a.id == asset.id); |  | ||||||
| 		selectedAsset = album.assets[currentViewAssetIndex]; |  | ||||||
| 		isShowAssetViewer = true; |  | ||||||
| 		pushState(selectedAsset.id); |  | ||||||
| 	}; |  | ||||||
|  |  | ||||||
| 	const selectAssetHandler = (event: CustomEvent) => { |  | ||||||
| 		const { asset }: { asset: AssetResponseDto } = event.detail; |  | ||||||
| 		let temp = new Set(multiSelectAsset); |  | ||||||
|  |  | ||||||
| 		if (multiSelectAsset.has(asset)) { |  | ||||||
| 			temp.delete(asset); |  | ||||||
| 		} else { |  | ||||||
| 			temp.add(asset); |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		multiSelectAsset = temp; |  | ||||||
| 	}; |  | ||||||
|  |  | ||||||
| 	const clearMultiSelectAssetAssetHandler = () => { | 	const clearMultiSelectAssetAssetHandler = () => { | ||||||
| 		multiSelectAsset = new Set(); | 		multiSelectAsset = new Set(); | ||||||
| 	}; | 	}; | ||||||
| @@ -184,40 +140,6 @@ | |||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 	}; | 	}; | ||||||
| 	const navigateAssetForward = () => { |  | ||||||
| 		try { |  | ||||||
| 			if (currentViewAssetIndex < album.assetCount - 1) { |  | ||||||
| 				currentViewAssetIndex++; |  | ||||||
| 				selectedAsset = album.assets[currentViewAssetIndex]; |  | ||||||
| 				pushState(selectedAsset.id); |  | ||||||
| 			} |  | ||||||
| 		} catch (e) { |  | ||||||
| 			console.error(e); |  | ||||||
| 		} |  | ||||||
| 	}; |  | ||||||
|  |  | ||||||
| 	const navigateAssetBackward = () => { |  | ||||||
| 		try { |  | ||||||
| 			if (currentViewAssetIndex > 0) { |  | ||||||
| 				currentViewAssetIndex--; |  | ||||||
| 				selectedAsset = album.assets[currentViewAssetIndex]; |  | ||||||
| 				pushState(selectedAsset.id); |  | ||||||
| 			} |  | ||||||
| 		} catch (e) { |  | ||||||
| 			console.error(e); |  | ||||||
| 		} |  | ||||||
| 	}; |  | ||||||
|  |  | ||||||
| 	const pushState = (assetId: string) => { |  | ||||||
| 		// add a URL to the browser's history |  | ||||||
| 		// changes the current URL in the address bar but doesn't perform any SvelteKit navigation |  | ||||||
| 		history.pushState(null, '', `${$page.url.pathname}/photos/${assetId}`); |  | ||||||
| 	}; |  | ||||||
|  |  | ||||||
| 	const closeViewer = () => { |  | ||||||
| 		isShowAssetViewer = false; |  | ||||||
| 		history.pushState(null, '', `${$page.url.pathname}`); |  | ||||||
| 	}; |  | ||||||
|  |  | ||||||
| 	// Update Album Name | 	// Update Album Name | ||||||
| 	$: { | 	$: { | ||||||
| @@ -606,34 +528,11 @@ | |||||||
| 		{/if} | 		{/if} | ||||||
|  |  | ||||||
| 		{#if album.assetCount > 0} | 		{#if album.assetCount > 0} | ||||||
| 			<div class="flex flex-wrap gap-1 w-full pb-20" bind:clientWidth={viewWidth}> | 			<GalleryViewer | ||||||
| 				{#each album.assets as asset} | 				assets={album.assets} | ||||||
| 					{#key asset.id} | 				key={sharedLink?.key ?? ''} | ||||||
| 						{#if album.assetCount < 7} | 				bind:selectedAssets={multiSelectAsset} | ||||||
| 							<ImmichThumbnail |  | ||||||
| 								{asset} |  | ||||||
| 								{thumbnailSize} |  | ||||||
| 								publicSharedKey={sharedLink?.key} |  | ||||||
| 								format={ThumbnailFormat.Jpeg} |  | ||||||
| 								on:click={(e) => |  | ||||||
| 									isMultiSelectionMode ? selectAssetHandler(e) : viewAssetHandler(e)} |  | ||||||
| 								on:select={selectAssetHandler} |  | ||||||
| 								selected={multiSelectAsset.has(asset)} |  | ||||||
| 			/> | 			/> | ||||||
| 						{:else} |  | ||||||
| 							<ImmichThumbnail |  | ||||||
| 								{asset} |  | ||||||
| 								{thumbnailSize} |  | ||||||
| 								publicSharedKey={sharedLink?.key} |  | ||||||
| 								on:click={(e) => |  | ||||||
| 									isMultiSelectionMode ? selectAssetHandler(e) : viewAssetHandler(e)} |  | ||||||
| 								on:select={selectAssetHandler} |  | ||||||
| 								selected={multiSelectAsset.has(asset)} |  | ||||||
| 							/> |  | ||||||
| 						{/if} |  | ||||||
| 					{/key} |  | ||||||
| 				{/each} |  | ||||||
| 			</div> |  | ||||||
| 		{:else} | 		{:else} | ||||||
| 			<!-- Album is empty - Show asset selectection buttons --> | 			<!-- Album is empty - Show asset selectection buttons --> | ||||||
| 			<section id="empty-album" class=" mt-[200px] flex place-content-center place-items-center"> | 			<section id="empty-album" class=" mt-[200px] flex place-content-center place-items-center"> | ||||||
| @@ -654,17 +553,6 @@ | |||||||
| 	</section> | 	</section> | ||||||
| </section> | </section> | ||||||
|  |  | ||||||
| <!-- Overlay Asset Viewer --> |  | ||||||
| {#if isShowAssetViewer} |  | ||||||
| 	<AssetViewer |  | ||||||
| 		asset={selectedAsset} |  | ||||||
| 		publicSharedKey={sharedLink?.key} |  | ||||||
| 		on:navigate-previous={navigateAssetBackward} |  | ||||||
| 		on:navigate-next={navigateAssetForward} |  | ||||||
| 		on:close={closeViewer} |  | ||||||
| 	/> |  | ||||||
| {/if} |  | ||||||
|  |  | ||||||
| {#if isShowAssetSelection} | {#if isShowAssetSelection} | ||||||
| 	<AssetSelection | 	<AssetSelection | ||||||
| 		albumId={album.id} | 		albumId={album.id} | ||||||
|   | |||||||
| @@ -233,7 +233,7 @@ | |||||||
|  |  | ||||||
| <section | <section | ||||||
| 	id="immich-asset-viewer" | 	id="immich-asset-viewer" | ||||||
| 	class="fixed h-screen w-screen top-0 overflow-y-hidden bg-black z-[999] grid grid-rows-[64px_1fr] grid-cols-4" | 	class="fixed h-screen w-screen left-0 top-0 overflow-y-hidden bg-black z-[999] grid grid-rows-[64px_1fr] grid-cols-4" | ||||||
| > | > | ||||||
| 	<div class="col-start-1 col-span-4 row-start-1 row-span-1 z-[1000] transition-transform"> | 	<div class="col-start-1 col-span-4 row-start-1 row-span-1 z-[1000] transition-transform"> | ||||||
| 		<AssetViewerNavBar | 		<AssetViewerNavBar | ||||||
|   | |||||||
| @@ -0,0 +1,150 @@ | |||||||
|  | <script lang="ts"> | ||||||
|  | 	import ArrowLeft from 'svelte-material-icons/ArrowLeft.svelte'; | ||||||
|  |  | ||||||
|  | 	import { api, AssetResponseDto, SharedLinkResponseDto } from '@api'; | ||||||
|  | 	import ControlAppBar from '../shared-components/control-app-bar.svelte'; | ||||||
|  | 	import { goto } from '$app/navigation'; | ||||||
|  | 	import CircleIconButton from '../shared-components/circle-icon-button.svelte'; | ||||||
|  | 	import FileImagePlusOutline from 'svelte-material-icons/FileImagePlusOutline.svelte'; | ||||||
|  | 	import FolderDownloadOutline from 'svelte-material-icons/FolderDownloadOutline.svelte'; | ||||||
|  | 	import { openFileUploadDialog } from '$lib/utils/file-uploader'; | ||||||
|  | 	import { bulkDownload } from '$lib/utils/asset-utils'; | ||||||
|  | 	import Close from 'svelte-material-icons/Close.svelte'; | ||||||
|  | 	import CloudDownloadOutline from 'svelte-material-icons/CloudDownloadOutline.svelte'; | ||||||
|  | 	import GalleryViewer from '../shared-components/gallery-viewer/gallery-viewer.svelte'; | ||||||
|  | 	import DeleteOutline from 'svelte-material-icons/DeleteOutline.svelte'; | ||||||
|  | 	import { | ||||||
|  | 		notificationController, | ||||||
|  | 		NotificationType | ||||||
|  | 	} from '../shared-components/notification/notification'; | ||||||
|  |  | ||||||
|  | 	export let sharedLink: SharedLinkResponseDto; | ||||||
|  | 	export let isOwned: boolean; | ||||||
|  |  | ||||||
|  | 	let assets = sharedLink.assets; | ||||||
|  | 	let selectedAssets: Set<AssetResponseDto> = new Set(); | ||||||
|  |  | ||||||
|  | 	$: isMultiSelectionMode = selectedAssets.size > 0; | ||||||
|  |  | ||||||
|  | 	const clearMultiSelectAssetAssetHandler = () => { | ||||||
|  | 		selectedAssets = new Set(); | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	const downloadAssets = async (isAll: boolean) => { | ||||||
|  | 		await bulkDownload( | ||||||
|  | 			'immich-shared', | ||||||
|  | 			isAll ? assets : Array.from(selectedAssets), | ||||||
|  | 			() => { | ||||||
|  | 				isMultiSelectionMode = false; | ||||||
|  | 				clearMultiSelectAssetAssetHandler(); | ||||||
|  | 			}, | ||||||
|  | 			sharedLink?.key | ||||||
|  | 		); | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	const handleUploadAssets = () => { | ||||||
|  | 		openFileUploadDialog(undefined, sharedLink?.key, async (assetId) => { | ||||||
|  | 			await api.assetApi.updateAssetsInSharedLink( | ||||||
|  | 				{ | ||||||
|  | 					assetIds: [...assets.map((a) => a.id), assetId] | ||||||
|  | 				}, | ||||||
|  | 				{ | ||||||
|  | 					params: { | ||||||
|  | 						key: sharedLink?.key | ||||||
|  | 					} | ||||||
|  | 				} | ||||||
|  | 			); | ||||||
|  |  | ||||||
|  | 			notificationController.show({ | ||||||
|  | 				message: 'Add asset to shared link successfully', | ||||||
|  | 				type: NotificationType.Info | ||||||
|  | 			}); | ||||||
|  | 		}); | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	const handleRemoveAssetsFromSharedLink = async () => { | ||||||
|  | 		if (window.confirm('Do you want to remove selected assets from the shared link?')) { | ||||||
|  | 			await api.assetApi.updateAssetsInSharedLink( | ||||||
|  | 				{ | ||||||
|  | 					assetIds: assets.filter((a) => !selectedAssets.has(a)).map((a) => a.id) | ||||||
|  | 				}, | ||||||
|  | 				{ | ||||||
|  | 					params: { | ||||||
|  | 						key: sharedLink?.key | ||||||
|  | 					} | ||||||
|  | 				} | ||||||
|  | 			); | ||||||
|  |  | ||||||
|  | 			assets = assets.filter((a) => !selectedAssets.has(a)); | ||||||
|  | 			clearMultiSelectAssetAssetHandler(); | ||||||
|  | 		} | ||||||
|  | 	}; | ||||||
|  | </script> | ||||||
|  |  | ||||||
|  | <section class="bg-immich-bg dark:bg-immich-dark-bg"> | ||||||
|  | 	{#if isMultiSelectionMode} | ||||||
|  | 		<ControlAppBar | ||||||
|  | 			on:close-button-click={clearMultiSelectAssetAssetHandler} | ||||||
|  | 			backIcon={Close} | ||||||
|  | 			tailwindClasses={'bg-white shadow-md'} | ||||||
|  | 		> | ||||||
|  | 			<svelte:fragment slot="leading"> | ||||||
|  | 				<p class="font-medium text-immich-primary dark:text-immich-dark-primary"> | ||||||
|  | 					Selected {selectedAssets.size} | ||||||
|  | 				</p> | ||||||
|  | 			</svelte:fragment> | ||||||
|  | 			<svelte:fragment slot="trailing"> | ||||||
|  | 				<CircleIconButton | ||||||
|  | 					title="Download" | ||||||
|  | 					on:click={() => downloadAssets(false)} | ||||||
|  | 					logo={CloudDownloadOutline} | ||||||
|  | 				/> | ||||||
|  | 				{#if isOwned} | ||||||
|  | 					<CircleIconButton | ||||||
|  | 						title="Remove from album" | ||||||
|  | 						on:click={handleRemoveAssetsFromSharedLink} | ||||||
|  | 						logo={DeleteOutline} | ||||||
|  | 					/> | ||||||
|  | 				{/if} | ||||||
|  | 			</svelte:fragment> | ||||||
|  | 		</ControlAppBar> | ||||||
|  | 	{:else} | ||||||
|  | 		<ControlAppBar | ||||||
|  | 			on:close-button-click={() => goto('/photos')} | ||||||
|  | 			backIcon={ArrowLeft} | ||||||
|  | 			showBackButton={false} | ||||||
|  | 		> | ||||||
|  | 			<svelte:fragment slot="leading"> | ||||||
|  | 				<a | ||||||
|  | 					data-sveltekit-preload-data="hover" | ||||||
|  | 					class="flex gap-2 place-items-center hover:cursor-pointer ml-6" | ||||||
|  | 					href="https://immich.app" | ||||||
|  | 				> | ||||||
|  | 					<img src="/immich-logo.svg" alt="immich logo" height="30" width="30" /> | ||||||
|  | 					<h1 class="font-immich-title text-lg text-immich-primary dark:text-immich-dark-primary"> | ||||||
|  | 						IMMICH | ||||||
|  | 					</h1> | ||||||
|  | 				</a> | ||||||
|  | 			</svelte:fragment> | ||||||
|  |  | ||||||
|  | 			<svelte:fragment slot="trailing"> | ||||||
|  | 				{#if sharedLink?.allowUpload} | ||||||
|  | 					<CircleIconButton | ||||||
|  | 						title="Add Photos" | ||||||
|  | 						on:click={handleUploadAssets} | ||||||
|  | 						logo={FileImagePlusOutline} | ||||||
|  | 					/> | ||||||
|  | 				{/if} | ||||||
|  |  | ||||||
|  | 				<CircleIconButton | ||||||
|  | 					title="Download" | ||||||
|  | 					on:click={() => downloadAssets(true)} | ||||||
|  | 					logo={FolderDownloadOutline} | ||||||
|  | 				/> | ||||||
|  | 			</svelte:fragment> | ||||||
|  | 		</ControlAppBar> | ||||||
|  | 	{/if} | ||||||
|  | 	<section class="flex flex-col my-[160px] px-6 sm:px-12 md:px-24 lg:px-40"> | ||||||
|  | 		<GalleryViewer {assets} key={sharedLink.key} bind:selectedAssets /> | ||||||
|  | 	</section> | ||||||
|  | </section> | ||||||
| @@ -2,7 +2,13 @@ | |||||||
| 	import { createEventDispatcher, onMount } from 'svelte'; | 	import { createEventDispatcher, onMount } from 'svelte'; | ||||||
| 	import BaseModal from '../base-modal.svelte'; | 	import BaseModal from '../base-modal.svelte'; | ||||||
| 	import Link from 'svelte-material-icons/Link.svelte'; | 	import Link from 'svelte-material-icons/Link.svelte'; | ||||||
| 	import { AlbumResponseDto, api, SharedLinkResponseDto, SharedLinkType } from '@api'; | 	import { | ||||||
|  | 		AlbumResponseDto, | ||||||
|  | 		api, | ||||||
|  | 		AssetResponseDto, | ||||||
|  | 		SharedLinkResponseDto, | ||||||
|  | 		SharedLinkType | ||||||
|  | 	} from '@api'; | ||||||
| 	import { notificationController, NotificationType } from '../notification/notification'; | 	import { notificationController, NotificationType } from '../notification/notification'; | ||||||
| 	import { ImmichDropDownOption } from '../dropdown-button.svelte'; | 	import { ImmichDropDownOption } from '../dropdown-button.svelte'; | ||||||
| 	import SettingSwitch from '$lib/components/admin-page/settings/setting-switch.svelte'; | 	import SettingSwitch from '$lib/components/admin-page/settings/setting-switch.svelte'; | ||||||
| @@ -10,9 +16,11 @@ | |||||||
| 	import SettingInputField, { | 	import SettingInputField, { | ||||||
| 		SettingInputFieldType | 		SettingInputFieldType | ||||||
| 	} from '$lib/components/admin-page/settings/setting-input-field.svelte'; | 	} from '$lib/components/admin-page/settings/setting-input-field.svelte'; | ||||||
|  | 	import { handleError } from '$lib/utils/handle-error'; | ||||||
|  |  | ||||||
| 	export let shareType: SharedLinkType; | 	export let shareType: SharedLinkType; | ||||||
| 	export let album: AlbumResponseDto | undefined; | 	export let sharedAssets: AssetResponseDto[] = []; | ||||||
|  | 	export let album: AlbumResponseDto | undefined = undefined; | ||||||
| 	export let editingLink: SharedLinkResponseDto | undefined = undefined; | 	export let editingLink: SharedLinkResponseDto | undefined = undefined; | ||||||
|  |  | ||||||
| 	let isShowSharedLink = false; | 	let isShowSharedLink = false; | ||||||
| @@ -37,32 +45,36 @@ | |||||||
| 		} | 		} | ||||||
| 	}); | 	}); | ||||||
|  |  | ||||||
| 	const createAlbumSharedLink = async () => { | 	const handleCreateSharedLink = async () => { | ||||||
| 		if (album) { |  | ||||||
| 			try { |  | ||||||
| 		const expirationTime = getExpirationTimeInMillisecond(); | 		const expirationTime = getExpirationTimeInMillisecond(); | ||||||
| 		const currentTime = new Date().getTime(); | 		const currentTime = new Date().getTime(); | ||||||
| 		const expirationDate = expirationTime | 		const expirationDate = expirationTime | ||||||
| 			? new Date(currentTime + expirationTime).toISOString() | 			? new Date(currentTime + expirationTime).toISOString() | ||||||
| 			: undefined; | 			: undefined; | ||||||
|  |  | ||||||
|  | 		try { | ||||||
|  | 			if (shareType === SharedLinkType.Album && album) { | ||||||
| 				const { data } = await api.albumApi.createAlbumSharedLink({ | 				const { data } = await api.albumApi.createAlbumSharedLink({ | ||||||
| 					albumId: album.id, | 					albumId: album.id, | ||||||
| 					expiredAt: expirationDate, | 					expiredAt: expirationDate, | ||||||
| 					allowUpload: isAllowUpload, | 					allowUpload: isAllowUpload, | ||||||
| 					description: description | 					description: description | ||||||
| 				}); | 				}); | ||||||
|  |  | ||||||
| 				buildSharedLink(data); | 				buildSharedLink(data); | ||||||
| 				isShowSharedLink = true; | 			} else { | ||||||
| 			} catch (e) { | 				const { data } = await api.assetApi.createAssetsSharedLink({ | ||||||
| 				console.error('[createAlbumSharedLink] Error: ', e); | 					assetIds: sharedAssets.map((a) => a.id), | ||||||
| 				notificationController.show({ | 					expiredAt: expirationDate, | ||||||
| 					type: NotificationType.Error, | 					allowUpload: isAllowUpload, | ||||||
| 					message: 'Failed to create shared link' | 					description: description | ||||||
| 				}); | 				}); | ||||||
|  | 				buildSharedLink(data); | ||||||
| 			} | 			} | ||||||
|  | 		} catch (e) { | ||||||
|  | 			handleError(e, 'Failed to create shared link'); | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|  | 		isShowSharedLink = true; | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
| 	const buildSharedLink = (createdLink: SharedLinkResponseDto) => { | 	const buildSharedLink = (createdLink: SharedLinkResponseDto) => { | ||||||
| @@ -76,8 +88,11 @@ | |||||||
| 				message: 'Copied to clipboard!', | 				message: 'Copied to clipboard!', | ||||||
| 				type: NotificationType.Info | 				type: NotificationType.Info | ||||||
| 			}); | 			}); | ||||||
| 		} catch (error) { | 		} catch (e) { | ||||||
| 			console.error('Error', error); | 			handleError( | ||||||
|  | 				e, | ||||||
|  | 				'Cannot copy to clipboard, make sure you are accessing the page through https' | ||||||
|  | 			); | ||||||
| 		} | 		} | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
| @@ -127,11 +142,7 @@ | |||||||
|  |  | ||||||
| 				dispatch('close'); | 				dispatch('close'); | ||||||
| 			} catch (e) { | 			} catch (e) { | ||||||
| 				console.error('[handleEditLink]', e); | 				handleError(e, 'Failed to edit shared link'); | ||||||
| 				notificationController.show({ |  | ||||||
| 					type: NotificationType.Error, |  | ||||||
| 					message: 'Failed to edit shared link' |  | ||||||
| 				}); |  | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 	}; | 	}; | ||||||
| @@ -162,6 +173,18 @@ | |||||||
| 			{/if} | 			{/if} | ||||||
| 		{/if} | 		{/if} | ||||||
|  |  | ||||||
|  | 		{#if shareType == SharedLinkType.Individual} | ||||||
|  | 			{#if !editingLink} | ||||||
|  | 				<div>Let anyone with the link see the selected photo(s)</div> | ||||||
|  | 			{:else} | ||||||
|  | 				<div class="text-sm"> | ||||||
|  | 					Individual shared | <span class="text-immich-primary dark:text-immich-dark-primary" | ||||||
|  | 						>{editingLink.description}</span | ||||||
|  | 					> | ||||||
|  | 				</div> | ||||||
|  | 			{/if} | ||||||
|  | 		{/if} | ||||||
|  |  | ||||||
| 		<div class="mt-6 mb-2"> | 		<div class="mt-6 mb-2"> | ||||||
| 			<p class="text-xs">LINK OPTIONS</p> | 			<p class="text-xs">LINK OPTIONS</p> | ||||||
| 		</div> | 		</div> | ||||||
| @@ -215,7 +238,7 @@ | |||||||
| 			{:else} | 			{:else} | ||||||
| 				<div class="flex justify-end"> | 				<div class="flex justify-end"> | ||||||
| 					<button | 					<button | ||||||
| 						on:click={createAlbumSharedLink} | 						on:click={handleCreateSharedLink} | ||||||
| 						class="text-white dark:text-black bg-immich-primary px-4 py-2 rounded-lg text-sm transition-colors hover:bg-immich-primary/75 dark:bg-immich-dark-primary dark:hover:bg-immich-dark-primary/75" | 						class="text-white dark:text-black bg-immich-primary px-4 py-2 rounded-lg text-sm transition-colors hover:bg-immich-primary/75 dark:bg-immich-dark-primary dark:hover:bg-immich-dark-primary/75" | ||||||
| 					> | 					> | ||||||
| 						Create Link | 						Create Link | ||||||
|   | |||||||
| @@ -0,0 +1,118 @@ | |||||||
|  | <script lang="ts"> | ||||||
|  | 	import { page } from '$app/stores'; | ||||||
|  | 	import { handleError } from '$lib/utils/handle-error'; | ||||||
|  | 	import { AssetResponseDto, ThumbnailFormat } from '@api'; | ||||||
|  |  | ||||||
|  | 	import AssetViewer from '../../asset-viewer/asset-viewer.svelte'; | ||||||
|  | 	import ImmichThumbnail from '../../shared-components/immich-thumbnail.svelte'; | ||||||
|  |  | ||||||
|  | 	export let assets: AssetResponseDto[]; | ||||||
|  | 	export let key: string; | ||||||
|  | 	export let selectedAssets: Set<AssetResponseDto> = new Set(); | ||||||
|  |  | ||||||
|  | 	let isShowAssetViewer = false; | ||||||
|  |  | ||||||
|  | 	let selectedAsset: AssetResponseDto; | ||||||
|  | 	let currentViewAssetIndex = 0; | ||||||
|  |  | ||||||
|  | 	let viewWidth: number; | ||||||
|  | 	let thumbnailSize = 300; | ||||||
|  |  | ||||||
|  | 	$: isMultiSelectionMode = selectedAssets.size > 0; | ||||||
|  |  | ||||||
|  | 	$: { | ||||||
|  | 		if (assets.length < 6) { | ||||||
|  | 			thumbnailSize = Math.floor(viewWidth / assets.length - assets.length); | ||||||
|  | 		} else { | ||||||
|  | 			if (viewWidth > 600) thumbnailSize = Math.floor(viewWidth / 6 - 6); | ||||||
|  | 			else if (viewWidth > 400) thumbnailSize = Math.floor(viewWidth / 4 - 6); | ||||||
|  | 			else if (viewWidth > 300) thumbnailSize = Math.floor(viewWidth / 2 - 6); | ||||||
|  | 			else if (viewWidth > 200) thumbnailSize = Math.floor(viewWidth / 2 - 6); | ||||||
|  | 			else if (viewWidth > 100) thumbnailSize = Math.floor(viewWidth / 1 - 6); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	const viewAssetHandler = (event: CustomEvent) => { | ||||||
|  | 		const { asset }: { asset: AssetResponseDto } = event.detail; | ||||||
|  |  | ||||||
|  | 		currentViewAssetIndex = assets.findIndex((a) => a.id == asset.id); | ||||||
|  | 		selectedAsset = assets[currentViewAssetIndex]; | ||||||
|  | 		isShowAssetViewer = true; | ||||||
|  | 		pushState(selectedAsset.id); | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	const selectAssetHandler = (event: CustomEvent) => { | ||||||
|  | 		const { asset }: { asset: AssetResponseDto } = event.detail; | ||||||
|  | 		let temp = new Set(selectedAssets); | ||||||
|  |  | ||||||
|  | 		if (selectedAssets.has(asset)) { | ||||||
|  | 			temp.delete(asset); | ||||||
|  | 		} else { | ||||||
|  | 			temp.add(asset); | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		selectedAssets = temp; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	const navigateAssetForward = () => { | ||||||
|  | 		try { | ||||||
|  | 			if (currentViewAssetIndex < assets.length - 1) { | ||||||
|  | 				currentViewAssetIndex++; | ||||||
|  | 				selectedAsset = assets[currentViewAssetIndex]; | ||||||
|  | 				pushState(selectedAsset.id); | ||||||
|  | 			} | ||||||
|  | 		} catch (e) { | ||||||
|  | 			handleError(e, 'Cannot navigate to the next asset'); | ||||||
|  | 		} | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	const navigateAssetBackward = () => { | ||||||
|  | 		try { | ||||||
|  | 			if (currentViewAssetIndex > 0) { | ||||||
|  | 				currentViewAssetIndex--; | ||||||
|  | 				selectedAsset = assets[currentViewAssetIndex]; | ||||||
|  | 				pushState(selectedAsset.id); | ||||||
|  | 			} | ||||||
|  | 		} catch (e) { | ||||||
|  | 			handleError(e, 'Cannot navigate to previous asset'); | ||||||
|  | 		} | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	const pushState = (assetId: string) => { | ||||||
|  | 		// add a URL to the browser's history | ||||||
|  | 		// changes the current URL in the address bar but doesn't perform any SvelteKit navigation | ||||||
|  | 		history.pushState(null, '', `${$page.url.pathname}/photos/${assetId}`); | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	const closeViewer = () => { | ||||||
|  | 		isShowAssetViewer = false; | ||||||
|  | 		history.pushState(null, '', `${$page.url.pathname}`); | ||||||
|  | 	}; | ||||||
|  | </script> | ||||||
|  |  | ||||||
|  | {#if assets.length > 0} | ||||||
|  | 	<div class="flex flex-wrap gap-1 w-full pb-20" bind:clientWidth={viewWidth}> | ||||||
|  | 		{#each assets as asset (asset.id)} | ||||||
|  | 			<ImmichThumbnail | ||||||
|  | 				{asset} | ||||||
|  | 				{thumbnailSize} | ||||||
|  | 				publicSharedKey={key} | ||||||
|  | 				format={assets.length < 7 ? ThumbnailFormat.Jpeg : ThumbnailFormat.Webp} | ||||||
|  | 				on:click={(e) => (isMultiSelectionMode ? selectAssetHandler(e) : viewAssetHandler(e))} | ||||||
|  | 				on:select={selectAssetHandler} | ||||||
|  | 				selected={selectedAssets.has(asset)} | ||||||
|  | 			/> | ||||||
|  | 		{/each} | ||||||
|  | 	</div> | ||||||
|  | {/if} | ||||||
|  |  | ||||||
|  | <!-- Overlay Asset Viewer --> | ||||||
|  | {#if isShowAssetViewer} | ||||||
|  | 	<AssetViewer | ||||||
|  | 		asset={selectedAsset} | ||||||
|  | 		publicSharedKey={key} | ||||||
|  | 		on:navigate-previous={navigateAssetBackward} | ||||||
|  | 		on:navigate-next={navigateAssetForward} | ||||||
|  | 		on:close={closeViewer} | ||||||
|  | 	/> | ||||||
|  | {/if} | ||||||
| @@ -90,7 +90,7 @@ | |||||||
| 		</button> | 		</button> | ||||||
| 	</div> | 	</div> | ||||||
|  |  | ||||||
| 	<p class="whitespace-pre text-sm pl-[28px] pr-[16px]" data-testid="message"> | 	<p class="whitespace-pre-wrap text-sm pl-[28px] pr-[16px]" data-testid="message"> | ||||||
| 		{@html notificationInfo.message} | 		{@html notificationInfo.message} | ||||||
| 	</p> | 	</p> | ||||||
| </div> | </div> | ||||||
|   | |||||||
| @@ -12,7 +12,7 @@ import { addAssetsToAlbum } from '$lib/utils/asset-utils'; | |||||||
| export const openFileUploadDialog = ( | export const openFileUploadDialog = ( | ||||||
| 	albumId: string | undefined = undefined, | 	albumId: string | undefined = undefined, | ||||||
| 	sharedKey: string | undefined = undefined, | 	sharedKey: string | undefined = undefined, | ||||||
| 	callback?: () => void | 	onDone?: (id: string) => void | ||||||
| ) => { | ) => { | ||||||
| 	try { | 	try { | ||||||
| 		const fileSelector = document.createElement('input'); | 		const fileSelector = document.createElement('input'); | ||||||
| @@ -28,8 +28,7 @@ export const openFileUploadDialog = ( | |||||||
| 			} | 			} | ||||||
| 			const files = Array.from<File>(target.files); | 			const files = Array.from<File>(target.files); | ||||||
|  |  | ||||||
| 			await fileUploadHandler(files, albumId, sharedKey); | 			await fileUploadHandler(files, albumId, sharedKey, onDone); | ||||||
| 			callback && callback(); |  | ||||||
| 		}; | 		}; | ||||||
|  |  | ||||||
| 		fileSelector.click(); | 		fileSelector.click(); | ||||||
| @@ -41,7 +40,8 @@ export const openFileUploadDialog = ( | |||||||
| export const fileUploadHandler = async ( | export const fileUploadHandler = async ( | ||||||
| 	files: File[], | 	files: File[], | ||||||
| 	albumId: string | undefined = undefined, | 	albumId: string | undefined = undefined, | ||||||
| 	sharedKey: string | undefined = undefined | 	sharedKey: string | undefined = undefined, | ||||||
|  | 	onDone?: (id: string) => void | ||||||
| ) => { | ) => { | ||||||
| 	if (files.length > 50) { | 	if (files.length > 50) { | ||||||
| 		notificationController.show({ | 		notificationController.show({ | ||||||
| @@ -54,13 +54,13 @@ export const fileUploadHandler = async ( | |||||||
|  |  | ||||||
| 		return; | 		return; | ||||||
| 	} | 	} | ||||||
| 	console.log('fileUploadHandler'); |  | ||||||
| 	const acceptedFile = files.filter( | 	const acceptedFile = files.filter( | ||||||
| 		(e) => e.type.split('/')[0] === 'video' || e.type.split('/')[0] === 'image' | 		(e) => e.type.split('/')[0] === 'video' || e.type.split('/')[0] === 'image' | ||||||
| 	); | 	); | ||||||
|  |  | ||||||
| 	for (const asset of acceptedFile) { | 	for (const asset of acceptedFile) { | ||||||
| 		await fileUploader(asset, albumId, sharedKey); | 		await fileUploader(asset, albumId, sharedKey, onDone); | ||||||
| 	} | 	} | ||||||
| }; | }; | ||||||
|  |  | ||||||
| @@ -68,7 +68,8 @@ export const fileUploadHandler = async ( | |||||||
| async function fileUploader( | async function fileUploader( | ||||||
| 	asset: File, | 	asset: File, | ||||||
| 	albumId: string | undefined = undefined, | 	albumId: string | undefined = undefined, | ||||||
| 	sharedKey: string | undefined = undefined | 	sharedKey: string | undefined = undefined, | ||||||
|  | 	onDone?: (id: string) => void | ||||||
| ) { | ) { | ||||||
| 	const assetType = asset.type.split('/')[0].toUpperCase(); | 	const assetType = asset.type.split('/')[0].toUpperCase(); | ||||||
| 	const temp = asset.name.split('.'); | 	const temp = asset.name.split('.'); | ||||||
| @@ -135,6 +136,7 @@ async function fileUploader( | |||||||
| 				if (albumId && dataId) { | 				if (albumId && dataId) { | ||||||
| 					addAssetsToAlbum(albumId, [dataId]); | 					addAssetsToAlbum(albumId, [dataId]); | ||||||
| 				} | 				} | ||||||
|  | 				onDone && dataId && onDone(dataId); | ||||||
| 				return; | 				return; | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| @@ -154,10 +156,9 @@ async function fileUploader( | |||||||
| 		request.upload.onload = () => { | 		request.upload.onload = () => { | ||||||
| 			setTimeout(() => { | 			setTimeout(() => { | ||||||
| 				uploadAssetsStore.removeUploadAsset(deviceAssetId); | 				uploadAssetsStore.removeUploadAsset(deviceAssetId); | ||||||
|  | 				const res: AssetFileUploadResponseDto = JSON.parse(request.response || '{}'); | ||||||
| 				if (albumId) { | 				if (albumId) { | ||||||
| 					try { | 					try { | ||||||
| 						const res: AssetFileUploadResponseDto = JSON.parse(request.response || '{}'); |  | ||||||
| 						if (res.id) { | 						if (res.id) { | ||||||
| 							addAssetsToAlbum(albumId, [res.id], sharedKey); | 							addAssetsToAlbum(albumId, [res.id], sharedKey); | ||||||
| 						} | 						} | ||||||
| @@ -165,6 +166,7 @@ async function fileUploader( | |||||||
| 						console.error('ERROR parsing data JSON in upload onload'); | 						console.error('ERROR parsing data JSON in upload onload'); | ||||||
| 					} | 					} | ||||||
| 				} | 				} | ||||||
|  | 				onDone && onDone(res.id); | ||||||
| 			}, 1000); | 			}, 1000); | ||||||
| 		}; | 		}; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -6,9 +6,8 @@ | |||||||
| 	import MenuOption from '$lib/components/shared-components/context-menu/menu-option.svelte'; | 	import MenuOption from '$lib/components/shared-components/context-menu/menu-option.svelte'; | ||||||
| 	import AlbumSelectionModal from '$lib/components/shared-components/album-selection-modal.svelte'; | 	import AlbumSelectionModal from '$lib/components/shared-components/album-selection-modal.svelte'; | ||||||
| 	import { goto } from '$app/navigation'; | 	import { goto } from '$app/navigation'; | ||||||
|  |  | ||||||
| 	import type { PageData } from './$types'; | 	import type { PageData } from './$types'; | ||||||
|  | 	import ShareVariantOutline from 'svelte-material-icons/ShareVariantOutline.svelte'; | ||||||
| 	import { openFileUploadDialog } from '$lib/utils/file-uploader'; | 	import { openFileUploadDialog } from '$lib/utils/file-uploader'; | ||||||
| 	import { | 	import { | ||||||
| 		assetInteractionStore, | 		assetInteractionStore, | ||||||
| @@ -21,16 +20,17 @@ | |||||||
| 	import CircleIconButton from '$lib/components/shared-components/circle-icon-button.svelte'; | 	import CircleIconButton from '$lib/components/shared-components/circle-icon-button.svelte'; | ||||||
| 	import DeleteOutline from 'svelte-material-icons/DeleteOutline.svelte'; | 	import DeleteOutline from 'svelte-material-icons/DeleteOutline.svelte'; | ||||||
| 	import Plus from 'svelte-material-icons/Plus.svelte'; | 	import Plus from 'svelte-material-icons/Plus.svelte'; | ||||||
| 	import { AlbumResponseDto, api } from '@api'; | 	import { AlbumResponseDto, api, SharedLinkType } from '@api'; | ||||||
| 	import { | 	import { | ||||||
| 		notificationController, | 		notificationController, | ||||||
| 		NotificationType | 		NotificationType | ||||||
| 	} from '$lib/components/shared-components/notification/notification'; | 	} from '$lib/components/shared-components/notification/notification'; | ||||||
| 	import { assetStore } from '$lib/stores/assets.store'; | 	import { assetStore } from '$lib/stores/assets.store'; | ||||||
| 	import { addAssetsToAlbum, bulkDownload } from '$lib/utils/asset-utils'; | 	import { addAssetsToAlbum, bulkDownload } from '$lib/utils/asset-utils'; | ||||||
|  | 	import CreateSharedLinkModal from '$lib/components/shared-components/create-share-link-modal/create-shared-link-modal.svelte'; | ||||||
|  |  | ||||||
| 	export let data: PageData; | 	export let data: PageData; | ||||||
|  | 	let isShowCreateSharedLinkModal = false; | ||||||
| 	const deleteSelectedAssetHandler = async () => { | 	const deleteSelectedAssetHandler = async () => { | ||||||
| 		try { | 		try { | ||||||
| 			if ( | 			if ( | ||||||
| @@ -114,6 +114,15 @@ | |||||||
| 			assetInteractionStore.clearMultiselect(); | 			assetInteractionStore.clearMultiselect(); | ||||||
| 		}); | 		}); | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
|  | 	const handleCreateSharedLink = async () => { | ||||||
|  | 		isShowCreateSharedLinkModal = true; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	const handleCloseSharedLinkModal = () => { | ||||||
|  | 		assetInteractionStore.clearMultiselect(); | ||||||
|  | 		isShowCreateSharedLinkModal = false; | ||||||
|  | 	}; | ||||||
| </script> | </script> | ||||||
|  |  | ||||||
| <section> | <section> | ||||||
| @@ -129,6 +138,11 @@ | |||||||
| 				</p> | 				</p> | ||||||
| 			</svelte:fragment> | 			</svelte:fragment> | ||||||
| 			<svelte:fragment slot="trailing"> | 			<svelte:fragment slot="trailing"> | ||||||
|  | 				<CircleIconButton | ||||||
|  | 					title="Share" | ||||||
|  | 					logo={ShareVariantOutline} | ||||||
|  | 					on:click={handleCreateSharedLink} | ||||||
|  | 				/> | ||||||
| 				<CircleIconButton | 				<CircleIconButton | ||||||
| 					title="Download" | 					title="Download" | ||||||
| 					logo={CloudDownloadOutline} | 					logo={CloudDownloadOutline} | ||||||
| @@ -164,6 +178,14 @@ | |||||||
| 			on:close={() => (isShowAlbumPicker = false)} | 			on:close={() => (isShowAlbumPicker = false)} | ||||||
| 		/> | 		/> | ||||||
| 	{/if} | 	{/if} | ||||||
|  |  | ||||||
|  | 	{#if isShowCreateSharedLinkModal} | ||||||
|  | 		<CreateSharedLinkModal | ||||||
|  | 			sharedAssets={Array.from($selectedAssets)} | ||||||
|  | 			shareType={SharedLinkType.Individual} | ||||||
|  | 			on:close={handleCloseSharedLinkModal} | ||||||
|  | 		/> | ||||||
|  | 	{/if} | ||||||
| </section> | </section> | ||||||
|  |  | ||||||
| <section | <section | ||||||
|   | |||||||
| @@ -5,7 +5,9 @@ import { getThumbnailUrl } from '$lib/utils/asset-utils'; | |||||||
| import { serverApi, ThumbnailFormat } from '@api'; | import { serverApi, ThumbnailFormat } from '@api'; | ||||||
| import type { PageServerLoad } from './$types'; | import type { PageServerLoad } from './$types'; | ||||||
|  |  | ||||||
| export const load: PageServerLoad = async ({ params }) => { | export const load: PageServerLoad = async ({ params, parent }) => { | ||||||
|  | 	const { user } = await parent(); | ||||||
|  |  | ||||||
| 	const { key } = params; | 	const { key } = params; | ||||||
|  |  | ||||||
| 	try { | 	try { | ||||||
| @@ -22,7 +24,8 @@ export const load: PageServerLoad = async ({ params }) => { | |||||||
| 				imageUrl: assetId | 				imageUrl: assetId | ||||||
| 					? getThumbnailUrl(assetId, ThumbnailFormat.Webp, sharedLink.key) | 					? getThumbnailUrl(assetId, ThumbnailFormat.Webp, sharedLink.key) | ||||||
| 					: 'feature-panel.png' | 					: 'feature-panel.png' | ||||||
| 			} | 			}, | ||||||
|  | 			user | ||||||
| 		}; | 		}; | ||||||
| 	} catch (e) { | 	} catch (e) { | ||||||
| 		throw error(404, { | 		throw error(404, { | ||||||
|   | |||||||
| @@ -1,6 +1,7 @@ | |||||||
| <script lang="ts"> | <script lang="ts"> | ||||||
| 	import AlbumViewer from '$lib/components/album-page/album-viewer.svelte'; | 	import AlbumViewer from '$lib/components/album-page/album-viewer.svelte'; | ||||||
| 	import { AlbumResponseDto } from '@api'; | 	import IndividualSharedViewer from '$lib/components/share-page/individual-shared-viewer.svelte'; | ||||||
|  | 	import { AlbumResponseDto, SharedLinkType } from '@api'; | ||||||
| 	import type { PageData } from './$types'; | 	import type { PageData } from './$types'; | ||||||
|  |  | ||||||
| 	export let data: PageData; | 	export let data: PageData; | ||||||
| @@ -8,13 +9,20 @@ | |||||||
| 	const { sharedLink } = data; | 	const { sharedLink } = data; | ||||||
|  |  | ||||||
| 	let album: AlbumResponseDto | null = null; | 	let album: AlbumResponseDto | null = null; | ||||||
|  | 	let isOwned = data.user ? data.user.id === sharedLink.userId : false; | ||||||
| 	if (sharedLink.album) { | 	if (sharedLink.album) { | ||||||
| 		album = { ...sharedLink.album, assets: sharedLink.assets }; | 		album = { ...sharedLink.album, assets: sharedLink.assets }; | ||||||
| 	} | 	} | ||||||
| </script> | </script> | ||||||
|  |  | ||||||
| {#if album} | {#if sharedLink.type == SharedLinkType.Album && album} | ||||||
| 	<div class="immich-scrollbar"> | 	<div class="immich-scrollbar"> | ||||||
| 		<AlbumViewer {album} {sharedLink} /> | 		<AlbumViewer {album} {sharedLink} /> | ||||||
| 	</div> | 	</div> | ||||||
| {/if} | {/if} | ||||||
|  |  | ||||||
|  | {#if sharedLink.type == SharedLinkType.Individual} | ||||||
|  | 	<div class="immich-scrollbar"> | ||||||
|  | 		<IndividualSharedViewer {sharedLink} {isOwned} /> | ||||||
|  | 	</div> | ||||||
|  | {/if} | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user