diff --git a/server.js b/server.js index c20b4f0f..654d2fcd 100644 --- a/server.js +++ b/server.js @@ -15,6 +15,7 @@ const SettingsHelper = require('./SettingsHelper'); const settings = new SettingsHelper(); const root = express(); +root.options('*', cors()) // enable pre-flight across-the-board root.use(cors({ credentials: false })); root.use((req, res, next) => { res.setHeader('Access-Control-Allow-Credentials', false); @@ -53,7 +54,18 @@ root.use(serverRoot, ptserver); root.get('*', (req, res) => res.send('You\'ve connected to the SLServer, you\'re probably looking for the webapp.')); const rootserver = require('http').createServer(root); -const ptserver_io = require('socket.io')(rootserver, { path: `${serverRoot}/socket.io` }); +const ptserver_io = require('socket.io')(rootserver, { + path: `${serverRoot}/socket.io`, + handlePreflightRequest: (req, res) => { + var headers = { + 'Access-Control-Allow-Headers': 'Content-Type, Authorization', + 'Access-Control-Allow-Origin': req.headers.origin || '*', + 'Access-Control-Allow-Credentials': true + }; + res.writeHead(200, headers); + res.end(); + } +}); ptserver_io.on('connection', (socket) => { console.log('Someone connected to the SyncLounge server socket'); diff --git a/src/components/application/ptplayer.vue b/src/components/application/ptplayer.vue index 7fa6d301..e1df1089 100644 --- a/src/components/application/ptplayer.vue +++ b/src/components/application/ptplayer.vue @@ -638,6 +638,11 @@ export default { return; } + if (!changeItem) { + // Update offset to current time to resume where we were + this.offset = this.playertime; + } + const req = () => { this.sources = this.generateSources(); request(this.getSourceByLabel(this.chosenQuality).initUrl, (error, response, body) => { @@ -766,6 +771,7 @@ export default { session: this.sessionId, offset: 0, // offset: Math.round(this.playertime / 1000), + time: Math.round(this.playertime / 1000), subtitles: 'burn', copyts: 1, 'Accept-Language': 'en', diff --git a/src/components/application/ptplayer/videoplayer.vue b/src/components/application/ptplayer/videoplayer.vue index 24bf4c6f..3ec870ce 100644 --- a/src/components/application/ptplayer/videoplayer.vue +++ b/src/components/application/ptplayer/videoplayer.vue @@ -316,9 +316,6 @@ export default { }, onPlayerLoadeddata(player) { const that = this; - this.$nextTick(() => { - this.player.currentTime(this.initialOffset / 1000); - }); player.on(['pause'], () => { this.isPlaying = 'paused'; @@ -423,8 +420,9 @@ export default { }); }, playerReadied(player) { - // console.log('Setting volume to ' + this.$store.getters.getSettingPTPLAYERVOLUME ) + // console.log('Setting volume to ' + this.$store.getters.getSettingPTPLAYERVOLUME) this.player.volume(this.$store.getters.getSettings.PTPLAYERVOLUME || 100); + this.player.currentTime(this.initialOffset / 1000); }, }, diff --git a/src/store/modules/synclounge.js b/src/store/modules/synclounge.js index bc2e93f0..8790d458 100644 --- a/src/store/modules/synclounge.js +++ b/src/store/modules/synclounge.js @@ -306,7 +306,7 @@ export default { // Check if we need to autoplay if ( (ourTimeline.state === 'stopped' || !ourTimeline.state) && - hostTimeline.playerState !== 'stopped' + hostTimeline.playerState !== 'stopped' || rootState.rawTitle !== hostTimeline.rawTitle ) { if (rootState.blockAutoPlay || !hostTimeline.rawTitle) { return resolve(); @@ -327,6 +327,7 @@ export default { }); } + rootState.rawTitle = hostTimeline.rawTitle; sendNotification(`Searching Plex Servers for "${hostTimeline.rawTitle}"`); const result = await rootState.chosenClient .playContentAutomatically(