mirror of https://github.com/Chocobozzz/PeerTube
				
				
				
			
		
			
				
	
	
		
			45 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
| import express from 'express'
 | |
| import { HttpStatusCode, UserWatchingVideo } from '@shared/models'
 | |
| import {
 | |
|   asyncMiddleware,
 | |
|   asyncRetryTransactionMiddleware,
 | |
|   authenticate,
 | |
|   openapiOperationDoc,
 | |
|   videoWatchingValidator
 | |
| } from '../../../middlewares'
 | |
| import { UserVideoHistoryModel } from '../../../models/user/user-video-history'
 | |
| 
 | |
| const watchingRouter = express.Router()
 | |
| 
 | |
| watchingRouter.put('/:videoId/watching',
 | |
|   openapiOperationDoc({ operationId: 'setProgress' }),
 | |
|   authenticate,
 | |
|   asyncMiddleware(videoWatchingValidator),
 | |
|   asyncRetryTransactionMiddleware(userWatchVideo)
 | |
| )
 | |
| 
 | |
| // ---------------------------------------------------------------------------
 | |
| 
 | |
| export {
 | |
|   watchingRouter
 | |
| }
 | |
| 
 | |
| // ---------------------------------------------------------------------------
 | |
| 
 | |
| async function userWatchVideo (req: express.Request, res: express.Response) {
 | |
|   const user = res.locals.oauth.token.User
 | |
| 
 | |
|   const body: UserWatchingVideo = req.body
 | |
|   const { id: videoId } = res.locals.videoId
 | |
| 
 | |
|   await UserVideoHistoryModel.upsert({
 | |
|     videoId,
 | |
|     userId: user.id,
 | |
|     currentTime: body.currentTime
 | |
|   })
 | |
| 
 | |
|   return res.type('json')
 | |
|             .status(HttpStatusCode.NO_CONTENT_204)
 | |
|             .end()
 | |
| }
 |