import 'multer'
import express from 'express'
import { auditLoggerFactory, getAuditIdFromRes, UserAuditView } from '@server/helpers/audit-logger'
+import { getBiggestActorImage } from '@server/lib/actor-image'
import { Hooks } from '@server/lib/plugins/hooks'
+import { pick } from '@shared/core-utils'
import { ActorImageType, HttpStatusCode, UserUpdateMe, UserVideoQuota, UserVideoRate as FormattedUserVideoRate } from '@shared/models'
import { AttributesOnly } from '@shared/typescript-utils'
import { createReqFiles } from '../../../helpers/express-utils'
import { MIMETYPES } from '../../../initializers/constants'
import { sequelizeTypescript } from '../../../initializers/database'
import { sendUpdateActor } from '../../../lib/activitypub/send'
-import { deleteLocalActorImageFile, updateLocalActorImageFile } from '../../../lib/local-actor'
+import { deleteLocalActorImageFile, updateLocalActorImageFiles } from '../../../lib/local-actor'
import { getOriginalVideoFileTotalDailyFromUser, getOriginalVideoFileTotalFromUser, sendVerifyUserEmail } from '../../../lib/user'
import {
asyncMiddleware,
usersUpdateMeValidator,
usersVideoRatingValidator
} from '../../../middlewares'
-import { deleteMeValidator, usersVideosValidator, videoImportsSortValidator, videosSortValidator } from '../../../middlewares/validators'
+import {
+ deleteMeValidator,
+ getMyVideoImportsValidator,
+ usersVideosValidator,
+ videoImportsSortValidator,
+ videosSortValidator
+} from '../../../middlewares/validators'
import { updateAvatarValidator } from '../../../middlewares/validators/actor-image'
import { AccountModel } from '../../../models/account/account'
import { AccountVideoRateModel } from '../../../models/account/account-video-rate'
const auditLogger = auditLoggerFactory('users')
-const reqAvatarFile = createReqFiles([ 'avatarfile' ], MIMETYPES.IMAGE.MIMETYPE_EXT, { avatarfile: CONFIG.STORAGE.TMP_DIR })
+const reqAvatarFile = createReqFiles([ 'avatarfile' ], MIMETYPES.IMAGE.MIMETYPE_EXT)
const meRouter = express.Router()
videoImportsSortValidator,
setDefaultSort,
setDefaultPagination,
+ getMyVideoImportsValidator,
asyncMiddleware(getUserVideoImports)
)
async function getUserVideoImports (req: express.Request, res: express.Response) {
const user = res.locals.oauth.token.User
- const resultList = await VideoImportModel.listUserVideoImportsForApi(
- user.id,
- req.query.start as number,
- req.query.count as number,
- req.query.sort
- )
+ const resultList = await VideoImportModel.listUserVideoImportsForApi({
+ userId: user.id,
+
+ ...pick(req.query, [ 'targetUrl', 'start', 'count', 'sort', 'search', 'videoChannelSyncId' ])
+ })
return res.json(getFormattedObjects(resultList.data, resultList.total))
}
const userAccount = await AccountModel.load(user.Account.id)
- const avatar = await updateLocalActorImageFile(userAccount, avatarPhysicalFile, ActorImageType.AVATAR)
+ const avatars = await updateLocalActorImageFiles(
+ userAccount,
+ avatarPhysicalFile,
+ ActorImageType.AVATAR
+ )
- return res.json({ avatar: avatar.toFormattedJSON() })
+ return res.json({
+ // TODO: remove, deprecated in 4.2
+ avatar: getBiggestActorImage(avatars).toFormattedJSON(),
+ avatars: avatars.map(avatar => avatar.toFormattedJSON())
+ })
}
async function deleteMyAvatar (req: express.Request, res: express.Response) {
const userAccount = await AccountModel.load(user.Account.id)
await deleteLocalActorImageFile(userAccount, ActorImageType.AVATAR)
- return res.status(HttpStatusCode.NO_CONTENT_204).end()
+ return res.json({ avatars: [] })
}