mirror of
https://github.com/CaramelFur/Picsur.git
synced 2025-11-12 14:55:39 +01:00
Refactor shared components
This commit is contained in:
@@ -71,7 +71,7 @@ export class ImageDBService {
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
results: found,
|
results: found,
|
||||||
totalResults: amount,
|
total: amount,
|
||||||
page,
|
page,
|
||||||
pages: Math.ceil(amount / count),
|
pages: Math.ceil(amount / count),
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { ImageFileType } from 'picsur-shared/dist/dto/image-file-types.dto';
|
import { ImageFileType } from 'picsur-shared/dist/dto/image-file-types.enum';
|
||||||
import { AsyncFailable, Fail } from 'picsur-shared/dist/types';
|
import { AsyncFailable, Fail } from 'picsur-shared/dist/types';
|
||||||
import { In, LessThan, Repository } from 'typeorm';
|
import { In, LessThan, Repository } from 'typeorm';
|
||||||
import { EImageDerivativeBackend } from '../../models/entities/image-derivative.entity';
|
import { EImageDerivativeBackend } from '../../models/entities/image-derivative.entity';
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { Injectable, Logger } from '@nestjs/common';
|
import { Injectable, Logger } from '@nestjs/common';
|
||||||
import { PrefValueType } from 'picsur-shared/dist/dto/preferences.dto';
|
import { PrefValueType } from 'picsur-shared/dist/dto/preferences.dto';
|
||||||
import { SysPreference } from 'picsur-shared/dist/dto/sys-preferences.dto';
|
import { SysPreference } from 'picsur-shared/dist/dto/sys-preferences.enum';
|
||||||
import { UsrPreference } from 'picsur-shared/dist/dto/usr-preferences.dto';
|
import { UsrPreference } from 'picsur-shared/dist/dto/usr-preferences.enum';
|
||||||
import { generateRandomString } from 'picsur-shared/dist/util/random';
|
import { generateRandomString } from 'picsur-shared/dist/util/random';
|
||||||
import { EarlyJwtConfigService } from '../../config/early/early-jwt.config.service';
|
import { EarlyJwtConfigService } from '../../config/early/early-jwt.config.service';
|
||||||
|
|
||||||
|
|||||||
@@ -3,18 +3,18 @@ import { InjectRepository } from '@nestjs/typeorm';
|
|||||||
import {
|
import {
|
||||||
DecodedSysPref,
|
DecodedSysPref,
|
||||||
PrefValueType,
|
PrefValueType,
|
||||||
PrefValueTypeStrings,
|
PrefValueTypeStrings
|
||||||
} from 'picsur-shared/dist/dto/preferences.dto';
|
} from 'picsur-shared/dist/dto/preferences.dto';
|
||||||
import { SysPreference } from 'picsur-shared/dist/dto/sys-preferences.dto';
|
import { SysPreference } from 'picsur-shared/dist/dto/sys-preferences.enum';
|
||||||
import { AsyncFailable, Fail, HasFailed } from 'picsur-shared/dist/types';
|
import { AsyncFailable, Fail, HasFailed } from 'picsur-shared/dist/types';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import {
|
import {
|
||||||
SysPreferenceList,
|
SysPreferenceList,
|
||||||
SysPreferenceValueTypes,
|
SysPreferenceValueTypes
|
||||||
} from '../../models/constants/syspreferences.const';
|
} from '../../models/constants/syspreferences.const';
|
||||||
import {
|
import {
|
||||||
ESysPreferenceBackend,
|
ESysPreferenceBackend,
|
||||||
ESysPreferenceSchema,
|
ESysPreferenceSchema
|
||||||
} from '../../models/entities/sys-preference.entity';
|
} from '../../models/entities/sys-preference.entity';
|
||||||
import { MutexFallBack } from '../../models/util/mutex-fallback';
|
import { MutexFallBack } from '../../models/util/mutex-fallback';
|
||||||
import { PreferenceCommonService } from './preference-common.service';
|
import { PreferenceCommonService } from './preference-common.service';
|
||||||
|
|||||||
@@ -3,18 +3,18 @@ import { InjectRepository } from '@nestjs/typeorm';
|
|||||||
import {
|
import {
|
||||||
DecodedUsrPref,
|
DecodedUsrPref,
|
||||||
PrefValueType,
|
PrefValueType,
|
||||||
PrefValueTypeStrings,
|
PrefValueTypeStrings
|
||||||
} from 'picsur-shared/dist/dto/preferences.dto';
|
} from 'picsur-shared/dist/dto/preferences.dto';
|
||||||
import { UsrPreference } from 'picsur-shared/dist/dto/usr-preferences.dto';
|
import { UsrPreference } from 'picsur-shared/dist/dto/usr-preferences.enum';
|
||||||
import { AsyncFailable, Fail, HasFailed } from 'picsur-shared/dist/types';
|
import { AsyncFailable, Fail, HasFailed } from 'picsur-shared/dist/types';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import {
|
import {
|
||||||
UsrPreferenceList,
|
UsrPreferenceList,
|
||||||
UsrPreferenceValueTypes,
|
UsrPreferenceValueTypes
|
||||||
} from '../../models/constants/usrpreferences.const';
|
} from '../../models/constants/usrpreferences.const';
|
||||||
import {
|
import {
|
||||||
EUsrPreferenceBackend,
|
EUsrPreferenceBackend,
|
||||||
EUsrPreferenceSchema,
|
EUsrPreferenceSchema
|
||||||
} from '../../models/entities/usr-preference.entity';
|
} from '../../models/entities/usr-preference.entity';
|
||||||
import { MutexFallBack } from '../../models/util/mutex-fallback';
|
import { MutexFallBack } from '../../models/util/mutex-fallback';
|
||||||
import { PreferenceCommonService } from './preference-common.service';
|
import { PreferenceCommonService } from './preference-common.service';
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
import { Injectable, Logger } from '@nestjs/common';
|
import { Injectable, Logger } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import * as bcrypt from 'bcrypt';
|
import * as bcrypt from 'bcrypt';
|
||||||
import { SysPreference } from 'picsur-shared/dist/dto/sys-preferences.dto';
|
import { SysPreference } from 'picsur-shared/dist/dto/sys-preferences.enum';
|
||||||
import {
|
import {
|
||||||
AsyncFailable,
|
AsyncFailable,
|
||||||
Fail,
|
Fail,
|
||||||
HasFailed,
|
HasFailed,
|
||||||
HasSuccess,
|
HasSuccess
|
||||||
} from 'picsur-shared/dist/types';
|
} from 'picsur-shared/dist/types';
|
||||||
import { FindResult } from 'picsur-shared/dist/types/find-result';
|
import { FindResult } from 'picsur-shared/dist/types/find-result';
|
||||||
import { makeUnique } from 'picsur-shared/dist/util/unique';
|
import { makeUnique } from 'picsur-shared/dist/util/unique';
|
||||||
@@ -14,12 +14,12 @@ import { Repository } from 'typeorm';
|
|||||||
import { Permissions } from '../../models/constants/permissions.const';
|
import { Permissions } from '../../models/constants/permissions.const';
|
||||||
import {
|
import {
|
||||||
DefaultRolesList,
|
DefaultRolesList,
|
||||||
SoulBoundRolesList,
|
SoulBoundRolesList
|
||||||
} from '../../models/constants/roles.const';
|
} from '../../models/constants/roles.const';
|
||||||
import {
|
import {
|
||||||
ImmutableUsersList,
|
ImmutableUsersList,
|
||||||
LockedLoginUsersList,
|
LockedLoginUsersList,
|
||||||
UndeletableUsersList,
|
UndeletableUsersList
|
||||||
} from '../../models/constants/special-users.const';
|
} from '../../models/constants/special-users.const';
|
||||||
import { EUserBackend } from '../../models/entities/user.entity';
|
import { EUserBackend } from '../../models/entities/user.entity';
|
||||||
import { GetCols } from '../../models/util/collection';
|
import { GetCols } from '../../models/util/collection';
|
||||||
@@ -228,7 +228,7 @@ export class UsersService {
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
results: users,
|
results: users,
|
||||||
totalResults: amount,
|
total: amount,
|
||||||
page,
|
page,
|
||||||
pages: Math.ceil(amount / count),
|
pages: Math.ceil(amount / count),
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -3,9 +3,9 @@ import ms from 'ms';
|
|||||||
import { ImageRequestParams } from 'picsur-shared/dist/dto/api/image.dto';
|
import { ImageRequestParams } from 'picsur-shared/dist/dto/api/image.dto';
|
||||||
import {
|
import {
|
||||||
FullMime,
|
FullMime,
|
||||||
SupportedMimeCategory,
|
SupportedMimeCategory
|
||||||
} from 'picsur-shared/dist/dto/mimes.dto';
|
} from 'picsur-shared/dist/dto/mimes.dto';
|
||||||
import { SysPreference } from 'picsur-shared/dist/dto/sys-preferences.dto';
|
import { SysPreference } from 'picsur-shared/dist/dto/sys-preferences.enum';
|
||||||
import { AsyncFailable, Fail, HasFailed } from 'picsur-shared/dist/types';
|
import { AsyncFailable, Fail, HasFailed } from 'picsur-shared/dist/types';
|
||||||
import { SysPreferenceService } from '../../collections/preference-db/sys-preference-db.service';
|
import { SysPreferenceService } from '../../collections/preference-db/sys-preference-db.service';
|
||||||
import { SharpWrapper } from '../../workers/sharp.wrapper';
|
import { SharpWrapper } from '../../workers/sharp.wrapper';
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { Logger, Module, OnModuleDestroy, OnModuleInit } from '@nestjs/common';
|
import { Logger, Module, OnModuleDestroy, OnModuleInit } from '@nestjs/common';
|
||||||
import ms from 'ms';
|
import ms from 'ms';
|
||||||
import { SysPreference } from 'picsur-shared/dist/dto/sys-preferences.dto';
|
import { SysPreference } from 'picsur-shared/dist/dto/sys-preferences.enum';
|
||||||
import { HasFailed } from 'picsur-shared/dist/types';
|
import { HasFailed } from 'picsur-shared/dist/types';
|
||||||
import { ImageDBModule } from '../../collections/image-db/image-db.module';
|
import { ImageDBModule } from '../../collections/image-db/image-db.module';
|
||||||
import { ImageFileDBService } from '../../collections/image-db/image-file-db.service';
|
import { ImageFileDBService } from '../../collections/image-db/image-file-db.service';
|
||||||
|
|||||||
@@ -2,10 +2,10 @@ import { Injectable, Logger } from '@nestjs/common';
|
|||||||
import Crypto from 'crypto';
|
import Crypto from 'crypto';
|
||||||
import { fileTypeFromBuffer, FileTypeResult } from 'file-type';
|
import { fileTypeFromBuffer, FileTypeResult } from 'file-type';
|
||||||
import { ImageRequestParams } from 'picsur-shared/dist/dto/api/image.dto';
|
import { ImageRequestParams } from 'picsur-shared/dist/dto/api/image.dto';
|
||||||
import { ImageFileType } from 'picsur-shared/dist/dto/image-file-types.dto';
|
import { ImageFileType } from 'picsur-shared/dist/dto/image-file-types.enum';
|
||||||
import { FullMime } from 'picsur-shared/dist/dto/mimes.dto';
|
import { FullMime } from 'picsur-shared/dist/dto/mimes.dto';
|
||||||
import { SysPreference } from 'picsur-shared/dist/dto/sys-preferences.dto';
|
import { SysPreference } from 'picsur-shared/dist/dto/sys-preferences.enum';
|
||||||
import { UsrPreference } from 'picsur-shared/dist/dto/usr-preferences.dto';
|
import { UsrPreference } from 'picsur-shared/dist/dto/usr-preferences.enum';
|
||||||
import { AsyncFailable, Fail, HasFailed } from 'picsur-shared/dist/types';
|
import { AsyncFailable, Fail, HasFailed } from 'picsur-shared/dist/types';
|
||||||
import { FindResult } from 'picsur-shared/dist/types/find-result';
|
import { FindResult } from 'picsur-shared/dist/types/find-result';
|
||||||
import { ParseMime } from 'picsur-shared/dist/util/parse-mime';
|
import { ParseMime } from 'picsur-shared/dist/util/parse-mime';
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
// Config
|
// Config
|
||||||
|
|
||||||
import { Permission } from 'picsur-shared/dist/dto/permissions.dto';
|
import { Permission } from 'picsur-shared/dist/dto/permissions.enum';
|
||||||
export { Permission } from 'picsur-shared/dist/dto/permissions.dto';
|
export { Permission } from 'picsur-shared/dist/dto/permissions.enum';
|
||||||
|
|
||||||
// Derivatives
|
// Derivatives
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { PrefValueTypeStrings } from 'picsur-shared/dist/dto/preferences.dto';
|
import { PrefValueTypeStrings } from 'picsur-shared/dist/dto/preferences.dto';
|
||||||
import { SysPreference } from 'picsur-shared/dist/dto/sys-preferences.dto';
|
import { SysPreference } from 'picsur-shared/dist/dto/sys-preferences.enum';
|
||||||
|
|
||||||
export type SysPreferences = SysPreference[];
|
export type SysPreferences = SysPreference[];
|
||||||
export const SysPreferenceList: string[] = Object.values(SysPreference);
|
export const SysPreferenceList: string[] = Object.values(SysPreference);
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { PrefValueTypeStrings } from 'picsur-shared/dist/dto/preferences.dto';
|
import { PrefValueTypeStrings } from 'picsur-shared/dist/dto/preferences.dto';
|
||||||
import { UsrPreference } from 'picsur-shared/dist/dto/usr-preferences.dto';
|
import { UsrPreference } from 'picsur-shared/dist/dto/usr-preferences.enum';
|
||||||
|
|
||||||
export type UsrPreferences = UsrPreference[];
|
export type UsrPreferences = UsrPreference[];
|
||||||
export const UsrPreferenceList: string[] = Object.values(UsrPreference);
|
export const UsrPreferenceList: string[] = Object.values(UsrPreference);
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { ImageFileType } from 'picsur-shared/dist/dto/image-file-types.dto';
|
import { ImageFileType } from 'picsur-shared/dist/dto/image-file-types.enum';
|
||||||
import { Column, Entity, Index, PrimaryGeneratedColumn, Unique } from 'typeorm';
|
import { Column, Entity, Index, PrimaryGeneratedColumn, Unique } from 'typeorm';
|
||||||
|
|
||||||
@Entity()
|
@Entity()
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { Controller, Get, Request } from '@nestjs/common';
|
import { Controller, Get, Request } from '@nestjs/common';
|
||||||
import { UserInfoResponse } from 'picsur-shared/dist/dto/api/user-manage.dto';
|
import { UserInfoResponse } from 'picsur-shared/dist/dto/api/user-manage.dto';
|
||||||
import { Permission } from 'picsur-shared/dist/dto/permissions.dto';
|
import { Permission } from 'picsur-shared/dist/dto/permissions.enum';
|
||||||
import { RequiredPermissions } from '../../../decorators/permissions.decorator';
|
import { RequiredPermissions } from '../../../decorators/permissions.decorator';
|
||||||
import { ReqUserID } from '../../../decorators/request-user.decorator';
|
import { ReqUserID } from '../../../decorators/request-user.decorator';
|
||||||
import { Returns } from '../../../decorators/returns.decorator';
|
import { Returns } from '../../../decorators/returns.decorator';
|
||||||
|
|||||||
@@ -5,13 +5,13 @@ import {
|
|||||||
InternalServerErrorException,
|
InternalServerErrorException,
|
||||||
Logger,
|
Logger,
|
||||||
Param,
|
Param,
|
||||||
Post,
|
Post
|
||||||
} from '@nestjs/common';
|
} from '@nestjs/common';
|
||||||
import {
|
import {
|
||||||
GetPreferenceResponse,
|
GetPreferenceResponse,
|
||||||
MultiplePreferencesResponse,
|
MultiplePreferencesResponse,
|
||||||
UpdatePreferenceRequest,
|
UpdatePreferenceRequest,
|
||||||
UpdatePreferenceResponse,
|
UpdatePreferenceResponse
|
||||||
} from 'picsur-shared/dist/dto/api/pref.dto';
|
} from 'picsur-shared/dist/dto/api/pref.dto';
|
||||||
import { HasFailed } from 'picsur-shared/dist/types';
|
import { HasFailed } from 'picsur-shared/dist/types';
|
||||||
import { SysPreferenceService } from '../../../collections/preference-db/sys-preference-db.service';
|
import { SysPreferenceService } from '../../../collections/preference-db/sys-preference-db.service';
|
||||||
@@ -36,7 +36,7 @@ export class SysPrefController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
preferences: prefs,
|
results: prefs,
|
||||||
total: prefs.length,
|
total: prefs.length,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,13 +5,13 @@ import {
|
|||||||
InternalServerErrorException,
|
InternalServerErrorException,
|
||||||
Logger,
|
Logger,
|
||||||
Param,
|
Param,
|
||||||
Post,
|
Post
|
||||||
} from '@nestjs/common';
|
} from '@nestjs/common';
|
||||||
import {
|
import {
|
||||||
GetPreferenceResponse,
|
GetPreferenceResponse,
|
||||||
MultiplePreferencesResponse,
|
MultiplePreferencesResponse,
|
||||||
UpdatePreferenceRequest,
|
UpdatePreferenceRequest,
|
||||||
UpdatePreferenceResponse,
|
UpdatePreferenceResponse
|
||||||
} from 'picsur-shared/dist/dto/api/pref.dto';
|
} from 'picsur-shared/dist/dto/api/pref.dto';
|
||||||
import { HasFailed } from 'picsur-shared/dist/types';
|
import { HasFailed } from 'picsur-shared/dist/types';
|
||||||
import { UsrPreferenceService } from '../../../collections/preference-db/usr-preference-db.service';
|
import { UsrPreferenceService } from '../../../collections/preference-db/usr-preference-db.service';
|
||||||
@@ -39,7 +39,7 @@ export class UsrPrefController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
preferences: prefs,
|
results: prefs,
|
||||||
total: prefs.length,
|
total: prefs.length,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import {
|
|||||||
Get,
|
Get,
|
||||||
InternalServerErrorException,
|
InternalServerErrorException,
|
||||||
Logger,
|
Logger,
|
||||||
Post,
|
Post
|
||||||
} from '@nestjs/common';
|
} from '@nestjs/common';
|
||||||
import {
|
import {
|
||||||
RoleCreateRequest,
|
RoleCreateRequest,
|
||||||
@@ -16,7 +16,7 @@ import {
|
|||||||
RoleListResponse,
|
RoleListResponse,
|
||||||
RoleUpdateRequest,
|
RoleUpdateRequest,
|
||||||
RoleUpdateResponse,
|
RoleUpdateResponse,
|
||||||
SpecialRolesResponse,
|
SpecialRolesResponse
|
||||||
} from 'picsur-shared/dist/dto/api/roles.dto';
|
} from 'picsur-shared/dist/dto/api/roles.dto';
|
||||||
import { HasFailed } from 'picsur-shared/dist/types';
|
import { HasFailed } from 'picsur-shared/dist/types';
|
||||||
import { RolesService } from '../../../collections/role-db/role-db.service';
|
import { RolesService } from '../../../collections/role-db/role-db.service';
|
||||||
@@ -28,7 +28,7 @@ import {
|
|||||||
DefaultRolesList,
|
DefaultRolesList,
|
||||||
ImmutableRolesList,
|
ImmutableRolesList,
|
||||||
SoulBoundRolesList,
|
SoulBoundRolesList,
|
||||||
UndeletableRolesList,
|
UndeletableRolesList
|
||||||
} from '../../../models/constants/roles.const';
|
} from '../../../models/constants/roles.const';
|
||||||
import { isPermissionsArray } from '../../../models/validators/permissions.validator';
|
import { isPermissionsArray } from '../../../models/validators/permissions.validator';
|
||||||
|
|
||||||
@@ -52,7 +52,7 @@ export class RolesController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
roles,
|
results: roles,
|
||||||
total: roles.length,
|
total: roles.length,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import {
|
|||||||
Get,
|
Get,
|
||||||
InternalServerErrorException,
|
InternalServerErrorException,
|
||||||
Logger,
|
Logger,
|
||||||
Post,
|
Post
|
||||||
} from '@nestjs/common';
|
} from '@nestjs/common';
|
||||||
import {
|
import {
|
||||||
GetSpecialUsersResponse,
|
GetSpecialUsersResponse,
|
||||||
@@ -17,7 +17,7 @@ import {
|
|||||||
UserListRequest,
|
UserListRequest,
|
||||||
UserListResponse,
|
UserListResponse,
|
||||||
UserUpdateRequest,
|
UserUpdateRequest,
|
||||||
UserUpdateResponse,
|
UserUpdateResponse
|
||||||
} from 'picsur-shared/dist/dto/api/user-manage.dto';
|
} from 'picsur-shared/dist/dto/api/user-manage.dto';
|
||||||
import { HasFailed } from 'picsur-shared/dist/types';
|
import { HasFailed } from 'picsur-shared/dist/types';
|
||||||
import { UsersService } from '../../../collections/user-db/user-db.service';
|
import { UsersService } from '../../../collections/user-db/user-db.service';
|
||||||
@@ -27,7 +27,7 @@ import { Permission } from '../../../models/constants/permissions.const';
|
|||||||
import {
|
import {
|
||||||
ImmutableUsersList,
|
ImmutableUsersList,
|
||||||
LockedLoginUsersList,
|
LockedLoginUsersList,
|
||||||
UndeletableUsersList,
|
UndeletableUsersList
|
||||||
} from '../../../models/constants/special-users.const';
|
} from '../../../models/constants/special-users.const';
|
||||||
import { EUserBackend2EUser } from '../../../models/transformers/user.transformer';
|
import { EUserBackend2EUser } from '../../../models/transformers/user.transformer';
|
||||||
|
|
||||||
@@ -49,12 +49,8 @@ export class UserAdminController {
|
|||||||
throw new InternalServerErrorException('Could not list users');
|
throw new InternalServerErrorException('Could not list users');
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
found.results = found.results.map(EUserBackend2EUser);
|
||||||
users: found.results.map(EUserBackend2EUser),
|
return found;
|
||||||
page: found.page,
|
|
||||||
pages: found.pages,
|
|
||||||
total: found.totalResults,
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Post('create')
|
@Post('create')
|
||||||
|
|||||||
@@ -4,21 +4,21 @@ import {
|
|||||||
Controller,
|
Controller,
|
||||||
InternalServerErrorException,
|
InternalServerErrorException,
|
||||||
Logger,
|
Logger,
|
||||||
Post,
|
Post
|
||||||
} from '@nestjs/common';
|
} from '@nestjs/common';
|
||||||
import {
|
import {
|
||||||
ImageDeleteRequest,
|
ImageDeleteRequest,
|
||||||
ImageDeleteResponse,
|
ImageDeleteResponse,
|
||||||
ImageListRequest,
|
ImageListRequest,
|
||||||
ImageListResponse,
|
ImageListResponse,
|
||||||
ImageUploadResponse,
|
ImageUploadResponse
|
||||||
} from 'picsur-shared/dist/dto/api/image-manage.dto';
|
} from 'picsur-shared/dist/dto/api/image-manage.dto';
|
||||||
import { Permission } from 'picsur-shared/dist/dto/permissions.dto';
|
import { Permission } from 'picsur-shared/dist/dto/permissions.enum';
|
||||||
import { HasFailed } from 'picsur-shared/dist/types';
|
import { HasFailed } from 'picsur-shared/dist/types';
|
||||||
import { MultiPart } from '../../decorators/multipart/multipart.decorator';
|
import { MultiPart } from '../../decorators/multipart/multipart.decorator';
|
||||||
import {
|
import {
|
||||||
HasPermission,
|
HasPermission,
|
||||||
RequiredPermissions,
|
RequiredPermissions
|
||||||
} from '../../decorators/permissions.decorator';
|
} from '../../decorators/permissions.decorator';
|
||||||
import { ReqUserID } from '../../decorators/request-user.decorator';
|
import { ReqUserID } from '../../decorators/request-user.decorator';
|
||||||
import { Returns } from '../../decorators/returns.decorator';
|
import { Returns } from '../../decorators/returns.decorator';
|
||||||
@@ -71,12 +71,7 @@ export class ImageManageController {
|
|||||||
throw new InternalServerErrorException('Could not list images');
|
throw new InternalServerErrorException('Could not list images');
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return found;
|
||||||
images: found.results,
|
|
||||||
page: found.page,
|
|
||||||
pages: found.pages,
|
|
||||||
total: found.totalResults,
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Post('delete')
|
@Post('delete')
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
|
import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
|
||||||
import { Router } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
import { AutoUnsubscribe } from 'ngx-auto-unsubscribe-decorator';
|
import { AutoUnsubscribe } from 'ngx-auto-unsubscribe-decorator';
|
||||||
import { Permission } from 'picsur-shared/dist/dto/permissions.dto';
|
import { Permission } from 'picsur-shared/dist/dto/permissions.enum';
|
||||||
import { EUser } from 'picsur-shared/dist/entities/user.entity';
|
import { EUser } from 'picsur-shared/dist/entities/user.entity';
|
||||||
import { HasFailed } from 'picsur-shared/dist/types';
|
import { HasFailed } from 'picsur-shared/dist/types';
|
||||||
import { SnackBarType } from 'src/app/models/dto/snack-bar-type.dto';
|
import { SnackBarType } from 'src/app/models/dto/snack-bar-type.dto';
|
||||||
|
|||||||
@@ -6,9 +6,9 @@ import {
|
|||||||
Input,
|
Input,
|
||||||
OnChanges,
|
OnChanges,
|
||||||
SimpleChanges,
|
SimpleChanges,
|
||||||
ViewChild,
|
ViewChild
|
||||||
} from '@angular/core';
|
} from '@angular/core';
|
||||||
import { FullMime, SupportedMime } from 'picsur-shared/dist/dto/mimes.dto';
|
import { FullMime, ImageMime } from 'picsur-shared/dist/dto/mimes.dto';
|
||||||
import { AsyncFailable, HasFailed } from 'picsur-shared/dist/types';
|
import { AsyncFailable, HasFailed } from 'picsur-shared/dist/types';
|
||||||
import { URLRegex } from 'picsur-shared/dist/util/common-regex';
|
import { URLRegex } from 'picsur-shared/dist/util/common-regex';
|
||||||
import { ParseMime } from 'picsur-shared/dist/util/parse-mime';
|
import { ParseMime } from 'picsur-shared/dist/util/parse-mime';
|
||||||
@@ -72,7 +72,7 @@ export class PicsurImgComponent implements OnChanges {
|
|||||||
const mime = await this.getMime(url);
|
const mime = await this.getMime(url);
|
||||||
if (HasFailed(mime)) return mime;
|
if (HasFailed(mime)) return mime;
|
||||||
|
|
||||||
if (mime.mime === SupportedMime.QOI) {
|
if (mime.mime === ImageMime.QOI) {
|
||||||
const result = await this.qoiWorker.decode(url);
|
const result = await this.qoiWorker.decode(url);
|
||||||
if (HasFailed(result)) return result;
|
if (HasFailed(result)) return result;
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Permission } from 'picsur-shared/dist/dto/permissions.dto';
|
import { Permission } from 'picsur-shared/dist/dto/permissions.enum';
|
||||||
|
|
||||||
export const UIFriendlyPermissions: {
|
export const UIFriendlyPermissions: {
|
||||||
[key in Permission]: string;
|
[key in Permission]: string;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { SysPreference } from 'picsur-shared/dist/dto/sys-preferences.dto';
|
import { SysPreference } from 'picsur-shared/dist/dto/sys-preferences.enum';
|
||||||
|
|
||||||
export const SysPreferenceFriendlyNames: {
|
export const SysPreferenceFriendlyNames: {
|
||||||
[key in SysPreference]: string;
|
[key in SysPreference]: string;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { UsrPreference } from 'picsur-shared/dist/dto/usr-preferences.dto';
|
import { UsrPreference } from 'picsur-shared/dist/dto/usr-preferences.enum';
|
||||||
|
|
||||||
export const UsrPreferenceFriendlyNames: {
|
export const UsrPreferenceFriendlyNames: {
|
||||||
[key in UsrPreference]: string;
|
[key in UsrPreference]: string;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { Component, OnInit } from '@angular/core';
|
import { Component, OnInit } from '@angular/core';
|
||||||
import { ActivatedRoute, Router } from '@angular/router';
|
import { ActivatedRoute, Router } from '@angular/router';
|
||||||
import { AutoUnsubscribe } from 'ngx-auto-unsubscribe-decorator';
|
import { AutoUnsubscribe } from 'ngx-auto-unsubscribe-decorator';
|
||||||
import { SupportedMime } from 'picsur-shared/dist/dto/mimes.dto';
|
import { ImageMime } from 'picsur-shared/dist/dto/mimes.dto';
|
||||||
import { EImage } from 'picsur-shared/dist/entities/image.entity';
|
import { EImage } from 'picsur-shared/dist/entities/image.entity';
|
||||||
import { HasFailed } from 'picsur-shared/dist/types/failable';
|
import { HasFailed } from 'picsur-shared/dist/types/failable';
|
||||||
import { SnackBarType } from 'src/app/models/dto/snack-bar-type.dto';
|
import { SnackBarType } from 'src/app/models/dto/snack-bar-type.dto';
|
||||||
@@ -9,7 +9,7 @@ import { ImageService } from 'src/app/services/api/image.service';
|
|||||||
import { Logger } from 'src/app/services/logger/logger.service';
|
import { Logger } from 'src/app/services/logger/logger.service';
|
||||||
import {
|
import {
|
||||||
BootstrapService,
|
BootstrapService,
|
||||||
BSScreenSize,
|
BSScreenSize
|
||||||
} from 'src/app/util/util-module/bootstrap.service';
|
} from 'src/app/util/util-module/bootstrap.service';
|
||||||
import { UtilService } from 'src/app/util/util-module/util.service';
|
import { UtilService } from 'src/app/util/util-module/util.service';
|
||||||
|
|
||||||
@@ -47,13 +47,13 @@ export class ImagesComponent implements OnInit {
|
|||||||
|
|
||||||
this.subscribeMobile();
|
this.subscribeMobile();
|
||||||
|
|
||||||
const result = await this.imageService.ListMyImages(24, this.page - 1);
|
const list = await this.imageService.ListMyImages(24, this.page - 1);
|
||||||
if (HasFailed(result)) {
|
if (HasFailed(list)) {
|
||||||
return this.logger.error(result.getReason());
|
return this.logger.error(list.getReason());
|
||||||
}
|
}
|
||||||
|
|
||||||
this.pages = result.pages;
|
this.pages = list.pages;
|
||||||
this.images = result.images;
|
this.images = list.results;
|
||||||
}
|
}
|
||||||
|
|
||||||
@AutoUnsubscribe()
|
@AutoUnsubscribe()
|
||||||
@@ -71,7 +71,7 @@ export class ImagesComponent implements OnInit {
|
|||||||
|
|
||||||
getThumbnailUrl(image: EImage) {
|
getThumbnailUrl(image: EImage) {
|
||||||
return (
|
return (
|
||||||
this.imageService.GetImageURL(image.id, SupportedMime.QOI) + '?height=480'
|
this.imageService.GetImageURL(image.id, ImageMime.QOI) + '?height=480'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { NgModule } from '@angular/core';
|
import { NgModule } from '@angular/core';
|
||||||
import { RouterModule } from '@angular/router';
|
import { RouterModule } from '@angular/router';
|
||||||
import { Permission } from 'picsur-shared/dist/dto/permissions.dto';
|
import { Permission } from 'picsur-shared/dist/dto/permissions.enum';
|
||||||
import { PermissionGuard } from 'src/app/guards/permission.guard';
|
import { PermissionGuard } from 'src/app/guards/permission.guard';
|
||||||
import { PRoutes } from 'src/app/models/dto/picsur-routes.dto';
|
import { PRoutes } from 'src/app/models/dto/picsur-routes.dto';
|
||||||
import { ImagesComponent } from './images.component';
|
import { ImagesComponent } from './images.component';
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { Component, OnInit } from '@angular/core';
|
import { Component, OnInit } from '@angular/core';
|
||||||
import { ActivatedRoute, Router } from '@angular/router';
|
import { ActivatedRoute, Router } from '@angular/router';
|
||||||
import { Permission } from 'picsur-shared/dist/dto/permissions.dto';
|
import { Permission } from 'picsur-shared/dist/dto/permissions.enum';
|
||||||
import { HasFailed } from 'picsur-shared/dist/types';
|
import { HasFailed } from 'picsur-shared/dist/types';
|
||||||
import { UIFriendlyPermissions } from 'src/app/i18n/permissions.i18n';
|
import { UIFriendlyPermissions } from 'src/app/i18n/permissions.i18n';
|
||||||
import { SnackBarType } from 'src/app/models/dto/snack-bar-type.dto';
|
import { SnackBarType } from 'src/app/models/dto/snack-bar-type.dto';
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { AfterViewInit, Component, OnInit, ViewChild } from '@angular/core';
|
|||||||
import { MatPaginator } from '@angular/material/paginator';
|
import { MatPaginator } from '@angular/material/paginator';
|
||||||
import { MatTableDataSource } from '@angular/material/table';
|
import { MatTableDataSource } from '@angular/material/table';
|
||||||
import { Router } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
import { Permission } from 'picsur-shared/dist/dto/permissions.dto';
|
import { Permission } from 'picsur-shared/dist/dto/permissions.enum';
|
||||||
import { ERole } from 'picsur-shared/dist/entities/role.entity';
|
import { ERole } from 'picsur-shared/dist/entities/role.entity';
|
||||||
import { HasFailed } from 'picsur-shared/dist/types';
|
import { HasFailed } from 'picsur-shared/dist/types';
|
||||||
import { UIFriendlyPermissions } from 'src/app/i18n/permissions.i18n';
|
import { UIFriendlyPermissions } from 'src/app/i18n/permissions.i18n';
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { ModuleWithProviders, NgModule } from '@angular/core';
|
import { ModuleWithProviders, NgModule } from '@angular/core';
|
||||||
import { RouterModule } from '@angular/router';
|
import { RouterModule } from '@angular/router';
|
||||||
import { Permission } from 'picsur-shared/dist/dto/permissions.dto';
|
import { Permission } from 'picsur-shared/dist/dto/permissions.enum';
|
||||||
import { PermissionGuard } from 'src/app/guards/permission.guard';
|
import { PermissionGuard } from 'src/app/guards/permission.guard';
|
||||||
import { PRoutes } from 'src/app/models/dto/picsur-routes.dto';
|
import { PRoutes } from 'src/app/models/dto/picsur-routes.dto';
|
||||||
import { SidebarResolverService } from 'src/app/services/sidebar-resolver/sidebar-resolver.service';
|
import { SidebarResolverService } from 'src/app/services/sidebar-resolver/sidebar-resolver.service';
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { Component, OnInit } from '@angular/core';
|
import { Component, OnInit } from '@angular/core';
|
||||||
import { ActivatedRoute, Router } from '@angular/router';
|
import { ActivatedRoute, Router } from '@angular/router';
|
||||||
import { Permission } from 'picsur-shared/dist/dto/permissions.dto';
|
import { Permission } from 'picsur-shared/dist/dto/permissions.enum';
|
||||||
import { ERole } from 'picsur-shared/dist/entities/role.entity';
|
import { ERole } from 'picsur-shared/dist/entities/role.entity';
|
||||||
import { HasFailed } from 'picsur-shared/dist/types';
|
import { HasFailed } from 'picsur-shared/dist/types';
|
||||||
import { UIFriendlyPermissions } from 'src/app/i18n/permissions.i18n';
|
import { UIFriendlyPermissions } from 'src/app/i18n/permissions.i18n';
|
||||||
|
|||||||
@@ -119,8 +119,8 @@ export class SettingsUsersComponent implements OnInit {
|
|||||||
pageSize: number,
|
pageSize: number,
|
||||||
pageIndex: number,
|
pageIndex: number,
|
||||||
): Promise<boolean> {
|
): Promise<boolean> {
|
||||||
const result = await this.userManageService.getUsers(pageSize, pageIndex);
|
const response = await this.userManageService.getUsers(pageSize, pageIndex);
|
||||||
if (HasFailed(result)) {
|
if (HasFailed(response)) {
|
||||||
this.utilService.showSnackBar(
|
this.utilService.showSnackBar(
|
||||||
'Failed to fetch users',
|
'Failed to fetch users',
|
||||||
SnackBarType.Error,
|
SnackBarType.Error,
|
||||||
@@ -128,9 +128,9 @@ export class SettingsUsersComponent implements OnInit {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (result.users.length > 0) {
|
if (response.results.length > 0) {
|
||||||
this.dataSubject.next(result.users);
|
this.dataSubject.next(response.results);
|
||||||
this.totalUsers = result.total;
|
this.totalUsers = response.total;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { Component, OnInit } from '@angular/core';
|
|||||||
import { Router } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
import { AutoUnsubscribe } from 'ngx-auto-unsubscribe-decorator';
|
import { AutoUnsubscribe } from 'ngx-auto-unsubscribe-decorator';
|
||||||
import { NgxDropzoneChangeEvent } from 'ngx-dropzone';
|
import { NgxDropzoneChangeEvent } from 'ngx-dropzone';
|
||||||
import { Permission } from 'picsur-shared/dist/dto/permissions.dto';
|
import { Permission } from 'picsur-shared/dist/dto/permissions.enum';
|
||||||
import { debounceTime } from 'rxjs';
|
import { debounceTime } from 'rxjs';
|
||||||
import { PermissionService } from 'src/app/services/api/permission.service';
|
import { PermissionService } from 'src/app/services/api/permission.service';
|
||||||
import { UtilService } from 'src/app/util/util-module/util.service';
|
import { UtilService } from 'src/app/util/util-module/util.service';
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { Component, OnInit } from '@angular/core';
|
import { Component, OnInit } from '@angular/core';
|
||||||
import { Router } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
import { AutoUnsubscribe } from 'ngx-auto-unsubscribe-decorator';
|
import { AutoUnsubscribe } from 'ngx-auto-unsubscribe-decorator';
|
||||||
import { Permission } from 'picsur-shared/dist/dto/permissions.dto';
|
import { Permission } from 'picsur-shared/dist/dto/permissions.enum';
|
||||||
import { HasFailed } from 'picsur-shared/dist/types';
|
import { HasFailed } from 'picsur-shared/dist/types';
|
||||||
import { SnackBarType } from 'src/app/models/dto/snack-bar-type.dto';
|
import { SnackBarType } from 'src/app/models/dto/snack-bar-type.dto';
|
||||||
import { UserPassModel } from 'src/app/models/forms-dto/userpass.dto';
|
import { UserPassModel } from 'src/app/models/forms-dto/userpass.dto';
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { Component, OnInit } from '@angular/core';
|
import { Component, OnInit } from '@angular/core';
|
||||||
import { Router } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
import { AutoUnsubscribe } from 'ngx-auto-unsubscribe-decorator';
|
import { AutoUnsubscribe } from 'ngx-auto-unsubscribe-decorator';
|
||||||
import { Permission } from 'picsur-shared/dist/dto/permissions.dto';
|
import { Permission } from 'picsur-shared/dist/dto/permissions.enum';
|
||||||
import { HasFailed } from 'picsur-shared/dist/types';
|
import { HasFailed } from 'picsur-shared/dist/types';
|
||||||
import { SnackBarType } from 'src/app/models/dto/snack-bar-type.dto';
|
import { SnackBarType } from 'src/app/models/dto/snack-bar-type.dto';
|
||||||
import { UserPassModel } from 'src/app/models/forms-dto/userpass.dto';
|
import { UserPassModel } from 'src/app/models/forms-dto/userpass.dto';
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { NgModule } from '@angular/core';
|
import { NgModule } from '@angular/core';
|
||||||
import { RouterModule } from '@angular/router';
|
import { RouterModule } from '@angular/router';
|
||||||
import { Permission } from 'picsur-shared/dist/dto/permissions.dto';
|
import { Permission } from 'picsur-shared/dist/dto/permissions.enum';
|
||||||
import { PermissionGuard } from 'src/app/guards/permission.guard';
|
import { PermissionGuard } from 'src/app/guards/permission.guard';
|
||||||
import { PRoutes } from 'src/app/models/dto/picsur-routes.dto';
|
import { PRoutes } from 'src/app/models/dto/picsur-routes.dto';
|
||||||
import { LoginComponent } from './login/login.component';
|
import { LoginComponent } from './login/login.component';
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { Component, OnInit } from '@angular/core';
|
import { Component, OnInit } from '@angular/core';
|
||||||
import { MatDialog } from '@angular/material/dialog';
|
import { MatDialog } from '@angular/material/dialog';
|
||||||
import { ActivatedRoute, Router } from '@angular/router';
|
import { ActivatedRoute, Router } from '@angular/router';
|
||||||
import { ImageLinks } from 'picsur-shared/dist/dto/image-links.dto';
|
import { ImageLinks } from 'picsur-shared/dist/dto/image-links.class';
|
||||||
import {
|
import {
|
||||||
AnimMime,
|
AnimMime,
|
||||||
FullMime,
|
FullMime,
|
||||||
@@ -9,7 +9,7 @@ import {
|
|||||||
Mime2Ext,
|
Mime2Ext,
|
||||||
SupportedAnimMimes,
|
SupportedAnimMimes,
|
||||||
SupportedImageMimes,
|
SupportedImageMimes,
|
||||||
SupportedMimeCategory,
|
SupportedMimeCategory
|
||||||
} from 'picsur-shared/dist/dto/mimes.dto';
|
} from 'picsur-shared/dist/dto/mimes.dto';
|
||||||
import { EImage } from 'picsur-shared/dist/entities/image.entity';
|
import { EImage } from 'picsur-shared/dist/entities/image.entity';
|
||||||
import { EUser } from 'picsur-shared/dist/entities/user.entity';
|
import { EUser } from 'picsur-shared/dist/entities/user.entity';
|
||||||
@@ -20,7 +20,7 @@ import { ImageService } from 'src/app/services/api/image.service';
|
|||||||
import { UtilService } from 'src/app/util/util-module/util.service';
|
import { UtilService } from 'src/app/util/util-module/util.service';
|
||||||
import {
|
import {
|
||||||
CustomizeDialogComponent,
|
CustomizeDialogComponent,
|
||||||
CustomizeDialogData,
|
CustomizeDialogData
|
||||||
} from './customize-dialog/customize-dialog.component';
|
} from './customize-dialog/customize-dialog.component';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { NgModule } from '@angular/core';
|
import { NgModule } from '@angular/core';
|
||||||
import { RouterModule } from '@angular/router';
|
import { RouterModule } from '@angular/router';
|
||||||
import { Permission } from 'picsur-shared/dist/dto/permissions.dto';
|
import { Permission } from 'picsur-shared/dist/dto/permissions.enum';
|
||||||
import { PermissionGuard } from 'src/app/guards/permission.guard';
|
import { PermissionGuard } from 'src/app/guards/permission.guard';
|
||||||
import { PRoutes } from 'src/app/models/dto/picsur-routes.dto';
|
import { PRoutes } from 'src/app/models/dto/picsur-routes.dto';
|
||||||
import { ViewComponent } from './view.component';
|
import { ViewComponent } from './view.component';
|
||||||
|
|||||||
@@ -5,13 +5,13 @@ import {
|
|||||||
ImageDeleteResponse,
|
ImageDeleteResponse,
|
||||||
ImageListRequest,
|
ImageListRequest,
|
||||||
ImageListResponse,
|
ImageListResponse,
|
||||||
ImageUploadResponse,
|
ImageUploadResponse
|
||||||
} from 'picsur-shared/dist/dto/api/image-manage.dto';
|
} from 'picsur-shared/dist/dto/api/image-manage.dto';
|
||||||
import {
|
import {
|
||||||
ImageMetaResponse,
|
ImageMetaResponse,
|
||||||
ImageRequestParams,
|
ImageRequestParams
|
||||||
} from 'picsur-shared/dist/dto/api/image.dto';
|
} from 'picsur-shared/dist/dto/api/image.dto';
|
||||||
import { ImageLinks } from 'picsur-shared/dist/dto/image-links.dto';
|
import { ImageLinks } from 'picsur-shared/dist/dto/image-links.class';
|
||||||
import { Mime2Ext } from 'picsur-shared/dist/dto/mimes.dto';
|
import { Mime2Ext } from 'picsur-shared/dist/dto/mimes.dto';
|
||||||
import { EImage } from 'picsur-shared/dist/entities/image.entity';
|
import { EImage } from 'picsur-shared/dist/entities/image.entity';
|
||||||
import { AsyncFailable } from 'picsur-shared/dist/types';
|
import { AsyncFailable } from 'picsur-shared/dist/types';
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import {
|
|||||||
RoleInfoResponse,
|
RoleInfoResponse,
|
||||||
RoleListResponse,
|
RoleListResponse,
|
||||||
RoleUpdateRequest,
|
RoleUpdateRequest,
|
||||||
RoleUpdateResponse,
|
RoleUpdateResponse
|
||||||
} from 'picsur-shared/dist/dto/api/roles.dto';
|
} from 'picsur-shared/dist/dto/api/roles.dto';
|
||||||
import { ERole } from 'picsur-shared/dist/entities/role.entity';
|
import { ERole } from 'picsur-shared/dist/entities/role.entity';
|
||||||
import { AsyncFailable, Open } from 'picsur-shared/dist/types';
|
import { AsyncFailable, Open } from 'picsur-shared/dist/types';
|
||||||
@@ -22,9 +22,9 @@ export class RolesService {
|
|||||||
constructor(private api: ApiService) {}
|
constructor(private api: ApiService) {}
|
||||||
|
|
||||||
public async getRoles(): AsyncFailable<ERole[]> {
|
public async getRoles(): AsyncFailable<ERole[]> {
|
||||||
const result = await this.api.get(RoleListResponse, '/api/roles/list');
|
const response = await this.api.get(RoleListResponse, '/api/roles/list');
|
||||||
|
|
||||||
return Open(result, 'roles');
|
return Open(response, 'results');
|
||||||
}
|
}
|
||||||
|
|
||||||
public async getRole(name: string): AsyncFailable<ERole> {
|
public async getRole(name: string): AsyncFailable<ERole> {
|
||||||
|
|||||||
@@ -4,12 +4,12 @@ import {
|
|||||||
GetPreferenceResponse,
|
GetPreferenceResponse,
|
||||||
MultiplePreferencesResponse,
|
MultiplePreferencesResponse,
|
||||||
UpdatePreferenceRequest,
|
UpdatePreferenceRequest,
|
||||||
UpdatePreferenceResponse,
|
UpdatePreferenceResponse
|
||||||
} from 'picsur-shared/dist/dto/api/pref.dto';
|
} from 'picsur-shared/dist/dto/api/pref.dto';
|
||||||
import { Permission } from 'picsur-shared/dist/dto/permissions.dto';
|
import { Permission } from 'picsur-shared/dist/dto/permissions.enum';
|
||||||
import {
|
import {
|
||||||
DecodedPref,
|
DecodedPref,
|
||||||
PrefValueType,
|
PrefValueType
|
||||||
} from 'picsur-shared/dist/dto/preferences.dto';
|
} from 'picsur-shared/dist/dto/preferences.dto';
|
||||||
import { AsyncFailable, Fail, HasFailed, Map } from 'picsur-shared/dist/types';
|
import { AsyncFailable, Fail, HasFailed, Map } from 'picsur-shared/dist/types';
|
||||||
import { BehaviorSubject } from 'rxjs';
|
import { BehaviorSubject } from 'rxjs';
|
||||||
@@ -67,8 +67,8 @@ export class SysPrefService {
|
|||||||
);
|
);
|
||||||
|
|
||||||
return Map(response, (pref) => {
|
return Map(response, (pref) => {
|
||||||
this.sysprefObservable.next(pref.preferences);
|
this.sysprefObservable.next(pref.results);
|
||||||
return pref.preferences;
|
return pref.results;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,12 +4,12 @@ import {
|
|||||||
GetPreferenceResponse,
|
GetPreferenceResponse,
|
||||||
MultiplePreferencesResponse,
|
MultiplePreferencesResponse,
|
||||||
UpdatePreferenceRequest,
|
UpdatePreferenceRequest,
|
||||||
UpdatePreferenceResponse,
|
UpdatePreferenceResponse
|
||||||
} from 'picsur-shared/dist/dto/api/pref.dto';
|
} from 'picsur-shared/dist/dto/api/pref.dto';
|
||||||
import { Permission } from 'picsur-shared/dist/dto/permissions.dto';
|
import { Permission } from 'picsur-shared/dist/dto/permissions.enum';
|
||||||
import {
|
import {
|
||||||
DecodedPref,
|
DecodedPref,
|
||||||
PrefValueType,
|
PrefValueType
|
||||||
} from 'picsur-shared/dist/dto/preferences.dto';
|
} from 'picsur-shared/dist/dto/preferences.dto';
|
||||||
import { AsyncFailable, Fail, HasFailed, Map } from 'picsur-shared/dist/types';
|
import { AsyncFailable, Fail, HasFailed, Map } from 'picsur-shared/dist/types';
|
||||||
import { BehaviorSubject } from 'rxjs';
|
import { BehaviorSubject } from 'rxjs';
|
||||||
@@ -67,8 +67,8 @@ export class UsrPrefService {
|
|||||||
);
|
);
|
||||||
|
|
||||||
return Map(response, (pref) => {
|
return Map(response, (pref) => {
|
||||||
this.usrprefObservable.next(pref.preferences);
|
this.usrprefObservable.next(pref.results);
|
||||||
return pref.preferences;
|
return pref.results;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,10 +19,10 @@ export const ImageListRequestSchema = z.object({
|
|||||||
export class ImageListRequest extends createZodDto(ImageListRequestSchema) {}
|
export class ImageListRequest extends createZodDto(ImageListRequestSchema) {}
|
||||||
|
|
||||||
export const ImageListResponseSchema = z.object({
|
export const ImageListResponseSchema = z.object({
|
||||||
images: z.array(EImageSchema),
|
results: z.array(EImageSchema),
|
||||||
|
total: IsPosInt(),
|
||||||
page: IsPosInt(),
|
page: IsPosInt(),
|
||||||
pages: IsPosInt(),
|
pages: IsPosInt(),
|
||||||
total: IsPosInt(),
|
|
||||||
});
|
});
|
||||||
export class ImageListResponse extends createZodDto(ImageListResponseSchema) {}
|
export class ImageListResponse extends createZodDto(ImageListResponseSchema) {}
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { z } from 'zod';
|
|||||||
import { EImageSchema } from '../../entities/image.entity';
|
import { EImageSchema } from '../../entities/image.entity';
|
||||||
import { EUserSchema } from '../../entities/user.entity';
|
import { EUserSchema } from '../../entities/user.entity';
|
||||||
import { createZodDto } from '../../util/create-zod-dto';
|
import { createZodDto } from '../../util/create-zod-dto';
|
||||||
import { ImageFileType } from '../image-file-types.dto';
|
import { ImageFileType } from '../image-file-types.enum';
|
||||||
|
|
||||||
const parseBool = (value: unknown): boolean | null => {
|
const parseBool = (value: unknown): boolean | null => {
|
||||||
if (value === true || value === 'true' || value === '1' || value === 'yes')
|
if (value === true || value === 'true' || value === '1' || value === 'yes')
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ export class GetPreferenceResponse extends createZodDto(
|
|||||||
|
|
||||||
// Get preferences
|
// Get preferences
|
||||||
export const MultiplePreferencesResponseSchema = z.object({
|
export const MultiplePreferencesResponseSchema = z.object({
|
||||||
preferences: z.array(DecodedPrefSchema),
|
results: z.array(DecodedPrefSchema),
|
||||||
total: IsPosInt(),
|
total: IsPosInt(),
|
||||||
});
|
});
|
||||||
export class MultiplePreferencesResponse extends createZodDto(
|
export class MultiplePreferencesResponse extends createZodDto(
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ export class RoleInfoResponse extends createZodDto(RoleInfoResponseSchema) {}
|
|||||||
|
|
||||||
// RoleList
|
// RoleList
|
||||||
export const RoleListResponseSchema = z.object({
|
export const RoleListResponseSchema = z.object({
|
||||||
roles: z.array(ERoleSchema),
|
results: z.array(ERoleSchema),
|
||||||
total: IsPosInt(),
|
total: IsPosInt(),
|
||||||
});
|
});
|
||||||
export class RoleListResponse extends createZodDto(RoleListResponseSchema) {}
|
export class RoleListResponse extends createZodDto(RoleListResponseSchema) {}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ export const UserListRequestSchema = z.object({
|
|||||||
export class UserListRequest extends createZodDto(UserListRequestSchema) {}
|
export class UserListRequest extends createZodDto(UserListRequestSchema) {}
|
||||||
|
|
||||||
export const UserListResponseSchema = z.object({
|
export const UserListResponseSchema = z.object({
|
||||||
users: z.array(EUserSchema),
|
results: z.array(EUserSchema),
|
||||||
page: IsPosInt(),
|
page: IsPosInt(),
|
||||||
pages: IsPosInt(),
|
pages: IsPosInt(),
|
||||||
total: IsPosInt(),
|
total: IsPosInt(),
|
||||||
|
|||||||
@@ -14,13 +14,11 @@ export enum AnimMime {
|
|||||||
GIF = 'image/gif',
|
GIF = 'image/gif',
|
||||||
}
|
}
|
||||||
|
|
||||||
export const SupportedMime = { ...ImageMime, ...AnimMime };
|
|
||||||
|
|
||||||
// Derivatives
|
// Derivatives
|
||||||
|
|
||||||
export const SupportedImageMimes: string[] = Object.values(ImageMime);
|
export const SupportedImageMimes: string[] = Object.values(ImageMime);
|
||||||
export const SupportedAnimMimes: string[] = Object.values(AnimMime);
|
export const SupportedAnimMimes: string[] = Object.values(AnimMime);
|
||||||
export const SupportedMimes: string[] = Object.values(SupportedMime);
|
export const SupportedMimes: string[] = Object.values({ ...ImageMime, ...AnimMime });
|
||||||
|
|
||||||
export enum SupportedMimeCategory {
|
export enum SupportedMimeCategory {
|
||||||
Image = 'image',
|
Image = 'image',
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
export interface FindResult<T> {
|
export interface FindResult<T> {
|
||||||
results: T[];
|
results: T[];
|
||||||
totalResults: number;
|
total: number;
|
||||||
|
|
||||||
page: number;
|
page: number;
|
||||||
pages: number;
|
pages: number;
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
type FCDecorator = MethodDecorator & ClassDecorator;
|
type FCDecorator = MethodDecorator & ClassDecorator;
|
||||||
|
|
||||||
|
// FC = Function, Class
|
||||||
export function CombineFCDecorators(...decorators: FCDecorator[]) {
|
export function CombineFCDecorators(...decorators: FCDecorator[]) {
|
||||||
return (target: any, key: string, descriptor: PropertyDescriptor) => {
|
return (target: any, key: string, descriptor: PropertyDescriptor) => {
|
||||||
decorators.forEach((decorator) => {
|
decorators.forEach((decorator) => {
|
||||||
@@ -8,6 +9,7 @@ export function CombineFCDecorators(...decorators: FCDecorator[]) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// P = Property
|
||||||
export const CombinePDecorators = (
|
export const CombinePDecorators = (
|
||||||
...decorators: PropertyDecorator[]
|
...decorators: PropertyDecorator[]
|
||||||
): (() => PropertyDecorator) => {
|
): (() => PropertyDecorator) => {
|
||||||
|
|||||||
@@ -2,16 +2,16 @@ import {
|
|||||||
FullMime,
|
FullMime,
|
||||||
SupportedAnimMimes,
|
SupportedAnimMimes,
|
||||||
SupportedImageMimes,
|
SupportedImageMimes,
|
||||||
SupportedMimeCategory,
|
SupportedMimeCategory
|
||||||
} from '../dto/mimes.dto';
|
} from '../dto/mimes.dto';
|
||||||
import { Fail, Failable } from '../types';
|
import { Fail, Failable } from '../types';
|
||||||
|
|
||||||
export function ParseMime(mime: string): Failable<FullMime> {
|
export function ParseMime(mime: string): Failable<FullMime> {
|
||||||
if (SupportedImageMimes.includes(mime)) {
|
if (SupportedImageMimes.includes(mime))
|
||||||
return { mime, type: SupportedMimeCategory.Image };
|
return { mime, type: SupportedMimeCategory.Image };
|
||||||
}
|
|
||||||
if (SupportedAnimMimes.includes(mime)) {
|
if (SupportedAnimMimes.includes(mime))
|
||||||
return { mime, type: SupportedMimeCategory.Animation };
|
return { mime, type: SupportedMimeCategory.Animation };
|
||||||
}
|
|
||||||
return Fail('Unsupported mime type');
|
return Fail('Unsupported mime type');
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user