From 0bd45ed7771df3e5822690f20dee3fc2162ec054 Mon Sep 17 00:00:00 2001 From: KevinMidboe Date: Fri, 21 Feb 2020 22:51:39 +0100 Subject: [PATCH 1/3] New sidebarelement for users that are logged inn. Now they can be redirected directly to the movie in plex. --- src/api.js | 16 ++++++++++++++++ src/components/Movie.vue | 25 ++++++++++++++++++++++++- src/components/ui/sidebarListElem.vue | 8 ++++---- src/modules/userModule.js | 2 +- 4 files changed, 45 insertions(+), 6 deletions(-) diff --git a/src/api.js b/src/api.js index 0043889..275202c 100644 --- a/src/api.js +++ b/src/api.js @@ -252,6 +252,21 @@ const getRequestStatus = (id, type, authorization_token=undefined) => { .catch(err => Promise.reject(err)) } +const watchLink = (title, year, authorization_token=undefined) => { + const url = new URL('v1/plex/watch-link', SEASONED_URL) + url.searchParams.append('title', title) + url.searchParams.append('year', year) + + const headers = { + 'Authorization': authorization_token, + 'Content-Type': 'application/json' + } + + return fetch(url.href, { headers }) + .then(resp => resp.json()) + .then(response => response.link) +} + // - - - Seasoned user endpoints - - - const register = (username, password) => { @@ -458,6 +473,7 @@ export { searchTorrents, addMagnet, request, + watchLink, getRequestStatus, linkPlexAccount, unlinkPlexAccount, diff --git a/src/components/Movie.vue b/src/components/Movie.vue index 892198e..b758e75 100644 --- a/src/components/Movie.vue +++ b/src/components/Movie.vue @@ -47,6 +47,11 @@ Request to be downloaded? + + + Watch in plex now! + + @@ -143,7 +148,12 @@ import SidebarListElement from './ui/sidebarListElem' import store from '@/store' import LoadingPlaceholder from './ui/LoadingPlaceholder' -import { getMovie, getPerson, getShow, request, getRequestStatus } from '@/api' +import { getMovie, + getPerson, + getShow, + request, + getRequestStatus, + watchLink } from '@/api' export default { // props: ['id', 'type'], @@ -199,6 +209,15 @@ export default { numberOfTorrentResults: () => { let numTorrents = store.getters['torrentModule/resultCount'] return numTorrents !== null ? numTorrents + ' results' : null + }, + isPlexAuthenticated: () => { + const settings = store.getters['userModule/settings'] + console.log('fetchedSettings', settings) + + if (settings == null || settings['plex_userid'] == null) + return false + + return true } }, methods: { @@ -236,6 +255,10 @@ export default { } }) }, + openInPlex() { + watchLink(this.title, this.movie.year, storage.token) + .then(watchLink => window.location = watchLink) + }, openTmdb(){ const tmdbType = this.type === 'show' ? 'tv' : this.type window.location.href = 'https://www.themoviedb.org/' + tmdbType + '/' + this.id diff --git a/src/components/ui/sidebarListElem.vue b/src/components/ui/sidebarListElem.vue index c91e894..cddee5e 100644 --- a/src/components/ui/sidebarListElem.vue +++ b/src/components/ui/sidebarListElem.vue @@ -2,7 +2,7 @@
  • -
    +
    @@ -23,7 +23,7 @@ export default { props: { iconRef: { type: String, - required: true + required: false }, iconRefActive: { type: String, @@ -85,11 +85,11 @@ li { border-bottom: 1px solid $text-color-5; &:hover { - color: $text-color-70; + color: $text-color; cursor: pointer; .icon { - fill: $text-color-70; + fill: $text-color; cursor: pointer; transform: scale(1.1, 1.1); } diff --git a/src/modules/userModule.js b/src/modules/userModule.js index 71e8d7e..655001d 100644 --- a/src/modules/userModule.js +++ b/src/modules/userModule.js @@ -101,4 +101,4 @@ export default { commit('SET_SETTINGS', settings) } } -} \ No newline at end of file +} From 9d1ac56b9a3a4cde1f5fb21d80ef835e98575165 Mon Sep 17 00:00:00 2001 From: KevinMidboe Date: Fri, 21 Feb 2020 22:58:49 +0100 Subject: [PATCH 2/3] Also check localstorage for settings if not found in state. --- src/modules/userModule.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/modules/userModule.js b/src/modules/userModule.js index dfa47bf..a04cbfe 100644 --- a/src/modules/userModule.js +++ b/src/modules/userModule.js @@ -71,8 +71,10 @@ export default { return undefined }, isPlexAuthenticated: (state) => { - let hasPlexId = state.settings['plex_userid'] - return hasPlexId != undefined + const settings = state.settings || getLocalStorageByKey('settings') + const hasPlexId = settings['plex_userid'] + + return hasPlexId != null ? true : false } }, mutations: { From dc0c435163ae609c8a9617f600da81fefc0b7581 Mon Sep 17 00:00:00 2001 From: KevinMidboe Date: Fri, 21 Feb 2020 23:03:31 +0100 Subject: [PATCH 3/3] If settings dont exist, return false for isAuthenticated. --- src/modules/userModule.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/modules/userModule.js b/src/modules/userModule.js index a04cbfe..c5114fe 100644 --- a/src/modules/userModule.js +++ b/src/modules/userModule.js @@ -72,8 +72,10 @@ export default { }, isPlexAuthenticated: (state) => { const settings = state.settings || getLocalStorageByKey('settings') - const hasPlexId = settings['plex_userid'] + if (settings == null) + return false + const hasPlexId = settings['plex_userid'] return hasPlexId != null ? true : false } },