2023-11-14 04:10:35 +01:00
|
|
|
import { UserAvatarColor, UserEntity } from '@app/infra/entities';
|
|
|
|
import { ApiProperty } from '@nestjs/swagger';
|
|
|
|
import { IsEnum } from 'class-validator';
|
|
|
|
|
|
|
|
export const getRandomAvatarColor = (user: UserEntity): UserAvatarColor => {
|
|
|
|
const values = Object.values(UserAvatarColor);
|
|
|
|
const randomIndex = Math.floor(
|
|
|
|
user.email
|
|
|
|
.split('')
|
|
|
|
.map((letter) => letter.charCodeAt(0))
|
|
|
|
.reduce((a, b) => a + b, 0) % values.length,
|
|
|
|
);
|
|
|
|
return values[randomIndex] as UserAvatarColor;
|
|
|
|
};
|
2022-06-06 18:16:03 +02:00
|
|
|
|
2023-11-01 04:13:34 +01:00
|
|
|
export class UserDto {
|
2022-07-09 04:26:50 +02:00
|
|
|
id!: string;
|
2023-11-12 02:03:32 +01:00
|
|
|
name!: string;
|
2023-11-01 04:13:34 +01:00
|
|
|
email!: string;
|
|
|
|
profileImagePath!: string;
|
2023-11-14 04:10:35 +01:00
|
|
|
@IsEnum(UserAvatarColor)
|
|
|
|
@ApiProperty({ enumName: 'UserAvatarColor', enum: UserAvatarColor })
|
|
|
|
avatarColor!: UserAvatarColor;
|
2023-11-01 04:13:34 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
export class UserResponseDto extends UserDto {
|
2023-05-22 05:18:10 +02:00
|
|
|
storageLabel!: string | null;
|
feat(server): support for read-only assets and importing existing items in the filesystem (#2715)
* Added read-only flag for assets, endpoint to trigger file import vs upload
* updated fixtures with new property
* if upload is 'read-only', ensure there is no existing asset at the designated originalPath
* added test for file import as well as detecting existing image at read-only destination location
* Added storage service test for a case where it should not move read-only assets
* upload doesn't need the read-only flag available, just importing
* default isReadOnly on import endpoint to true
* formatting fixes
* create-asset dto needs isReadOnly, so set it to false by default on create, updated api generation
* updated code to reflect changes in MR
* fixed read stream promise return type
* new index for originalPath, check for existing path on import, reglardless of user, to prevent duplicates
* refactor: import asset
* chore: open api
* chore: tests
* Added externalPath support for individual users, updated UI to allow this to be set by admin
* added missing var for externalPath in ui
* chore: open api
* fix: compilation issues
* fix: server test
* built api, fixed user-response dto to include externalPath
* reverted accidental commit
* bad commit of duplicate externalPath in user response dto
* fixed tests to include externalPath on expected result
* fix: unit tests
* centralized supported filetypes, perform file type checking of asset and sidecar during file import process
* centralized supported filetype check method to keep regex DRY
* fixed typo
* combined migrations into one
* update api
* Removed externalPath from shared-link code, added column to admin user page whether external paths / import is enabled or not
* update mimetype
* Fixed detect correct mimetype
* revert asset-upload config
* reverted domain.constant
* refactor
* fix mime-type issue
* fix format
---------
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-06-22 04:33:20 +02:00
|
|
|
externalPath!: string | null;
|
2022-07-09 04:26:50 +02:00
|
|
|
shouldChangePassword!: boolean;
|
|
|
|
isAdmin!: boolean;
|
2023-05-30 15:15:56 +02:00
|
|
|
createdAt!: Date;
|
|
|
|
deletedAt!: Date | null;
|
|
|
|
updatedAt!: Date;
|
2022-12-26 16:35:52 +01:00
|
|
|
oauthId!: string;
|
2023-08-14 19:52:06 +02:00
|
|
|
memoriesEnabled?: boolean;
|
2022-06-06 18:16:03 +02:00
|
|
|
}
|
|
|
|
|
2023-11-01 04:13:34 +01:00
|
|
|
export const mapSimpleUser = (entity: UserEntity): UserDto => {
|
2022-06-06 18:16:03 +02:00
|
|
|
return {
|
|
|
|
id: entity.id,
|
|
|
|
email: entity.email,
|
2023-11-12 02:03:32 +01:00
|
|
|
name: entity.name,
|
2023-11-01 04:13:34 +01:00
|
|
|
profileImagePath: entity.profileImagePath,
|
2023-11-14 04:10:35 +01:00
|
|
|
avatarColor: entity.avatarColor ?? getRandomAvatarColor(entity),
|
2023-11-01 04:13:34 +01:00
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
export function mapUser(entity: UserEntity): UserResponseDto {
|
|
|
|
return {
|
|
|
|
...mapSimpleUser(entity),
|
2023-05-22 05:18:10 +02:00
|
|
|
storageLabel: entity.storageLabel,
|
feat(server): support for read-only assets and importing existing items in the filesystem (#2715)
* Added read-only flag for assets, endpoint to trigger file import vs upload
* updated fixtures with new property
* if upload is 'read-only', ensure there is no existing asset at the designated originalPath
* added test for file import as well as detecting existing image at read-only destination location
* Added storage service test for a case where it should not move read-only assets
* upload doesn't need the read-only flag available, just importing
* default isReadOnly on import endpoint to true
* formatting fixes
* create-asset dto needs isReadOnly, so set it to false by default on create, updated api generation
* updated code to reflect changes in MR
* fixed read stream promise return type
* new index for originalPath, check for existing path on import, reglardless of user, to prevent duplicates
* refactor: import asset
* chore: open api
* chore: tests
* Added externalPath support for individual users, updated UI to allow this to be set by admin
* added missing var for externalPath in ui
* chore: open api
* fix: compilation issues
* fix: server test
* built api, fixed user-response dto to include externalPath
* reverted accidental commit
* bad commit of duplicate externalPath in user response dto
* fixed tests to include externalPath on expected result
* fix: unit tests
* centralized supported filetypes, perform file type checking of asset and sidecar during file import process
* centralized supported filetype check method to keep regex DRY
* fixed typo
* combined migrations into one
* update api
* Removed externalPath from shared-link code, added column to admin user page whether external paths / import is enabled or not
* update mimetype
* Fixed detect correct mimetype
* revert asset-upload config
* reverted domain.constant
* refactor
* fix mime-type issue
* fix format
---------
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-06-22 04:33:20 +02:00
|
|
|
externalPath: entity.externalPath,
|
2022-07-09 04:26:50 +02:00
|
|
|
shouldChangePassword: entity.shouldChangePassword,
|
|
|
|
isAdmin: entity.isAdmin,
|
2023-05-30 15:15:56 +02:00
|
|
|
createdAt: entity.createdAt,
|
2022-11-26 17:16:02 +01:00
|
|
|
deletedAt: entity.deletedAt,
|
2023-03-03 23:38:30 +01:00
|
|
|
updatedAt: entity.updatedAt,
|
2022-12-26 16:35:52 +01:00
|
|
|
oauthId: entity.oauthId,
|
2023-08-10 04:01:16 +02:00
|
|
|
memoriesEnabled: entity.memoriesEnabled,
|
2022-06-06 18:16:03 +02:00
|
|
|
};
|
|
|
|
}
|