]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/controllers/api/users.ts
Set sort refractoring
[github/Chocobozzz/PeerTube.git] / server / controllers / api / users.ts
index d8ecbdbe2f042b3663d22b59ef30e1cf807318ee..0ca9b337a0c83c2bce6be6cedca85e5a5d84c23c 100644 (file)
@@ -12,8 +12,8 @@ import { updateActorAvatarInstance } from '../../lib/activitypub'
 import { sendUpdateUser } from '../../lib/activitypub/send'
 import { createUserAccountAndChannel } from '../../lib/user'
 import {
-  asyncMiddleware, authenticate, ensureUserHasRight, ensureUserRegistrationAllowed, paginationValidator, setPagination, setUsersSort,
-  setVideosSort, token, usersAddValidator, usersGetValidator, usersRegisterValidator, usersRemoveValidator, usersSortValidator,
+  asyncMiddleware, authenticate, ensureUserHasRight, ensureUserRegistrationAllowed, paginationValidator, setDefaultSort,
+  setPagination, token, usersAddValidator, usersGetValidator, usersRegisterValidator, usersRemoveValidator, usersSortValidator,
   usersUpdateMeValidator, usersUpdateValidator, usersVideoRatingValidator
 } from '../../middlewares'
 import { usersUpdateMyAvatarValidator, videosSortValidator } from '../../middlewares/validators'
@@ -30,11 +30,16 @@ usersRouter.get('/me',
   asyncMiddleware(getUserInformation)
 )
 
+usersRouter.get('/me/video-quota-used',
+  authenticate,
+  asyncMiddleware(getUserVideoQuotaUsed)
+)
+
 usersRouter.get('/me/videos',
   authenticate,
   paginationValidator,
   videosSortValidator,
-  setVideosSort,
+  setDefaultSort,
   setPagination,
   asyncMiddleware(getUserVideos)
 )
@@ -50,7 +55,7 @@ usersRouter.get('/',
   ensureUserHasRight(UserRight.MANAGE_USERS),
   paginationValidator,
   usersSortValidator,
-  setUsersSort,
+  setDefaultSort,
   setPagination,
   asyncMiddleware(listUsers)
 )
@@ -183,8 +188,18 @@ async function getUserInformation (req: express.Request, res: express.Response,
   return res.json(user.toFormattedJSON())
 }
 
+async function getUserVideoQuotaUsed (req: express.Request, res: express.Response, next: express.NextFunction) {
+  // We did not load channels in res.locals.user
+  const user = await UserModel.loadByUsernameAndPopulateChannels(res.locals.oauth.token.user.username)
+  const videoQuotaUsed = await UserModel.getOriginalVideoFileTotalFromUser(user)
+
+  return res.json({
+    videoQuotaUsed
+  })
+}
+
 function getUser (req: express.Request, res: express.Response, next: express.NextFunction) {
-  return res.json(res.locals.user.toFormattedJSON())
+  return res.json((res.locals.user as UserModel).toFormattedJSON())
 }
 
 async function getUserVideoRating (req: express.Request, res: express.Response, next: express.NextFunction) {
@@ -249,11 +264,12 @@ async function updateMyAvatar (req: express.Request, res: express.Response, next
   await unlinkPromise(source)
 
   const avatar = await sequelizeTypescript.transaction(async t => {
-    await updateActorAvatarInstance(actor, avatarName, t)
+    const updatedActor = await updateActorAvatarInstance(actor, avatarName, t)
+    await updatedActor.save({ transaction: t })
 
     await sendUpdateUser(user, t)
 
-    return avatar
+    return updatedActor.Avatar
   })
 
   return res