mirror of https://github.com/Chocobozzz/PeerTube
				
				
				
			
		
			
				
	
	
		
			36 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
| import * as express from 'express'
 | |
| import { UserWatchingVideo } from '../../../../shared'
 | |
| import { asyncMiddleware, asyncRetryTransactionMiddleware, authenticate, videoWatchingValidator } from '../../../middlewares'
 | |
| import { UserVideoHistoryModel } from '../../../models/account/user-video-history'
 | |
| 
 | |
| const watchingRouter = express.Router()
 | |
| 
 | |
| watchingRouter.put('/:videoId/watching',
 | |
|   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(204).end()
 | |
| }
 |