diff --git a/README.md b/README.md index 1ace692c..fdd1f84b 100644 --- a/README.md +++ b/README.md @@ -4,20 +4,13 @@

The sleekest looking WebUI for qBittorrent made with Vue.js!

-![Vue](https://img.shields.io/badge/Vue-%5E2.7.14-brightgreen) -![qBittorrent](https://img.shields.io/badge/qBittorrent-4.4%2B-brightgreen) +![Vue](https://img.shields.io/badge/Vue-%5E2.7.14-brightgreen) ![qBittorrent](https://img.shields.io/badge/qBittorrent-4.4%2B-brightgreen) ![Vuetify](https://img.shields.io/badge/Vuetify-%5E2.6.10-brightgreen) -![stars](https://img.shields.io/github/stars/WDaan/VueTorrent) -![Forks](https://img.shields.io/github/forks/WDaan/VueTorrent) -![Issues](https://img.shields.io/github/issues/WDaan/VueTorrent) -![Closed](https://img.shields.io/github/issues-closed/WDaan/VueTorrent) -![Closed PR](https://img.shields.io/github/issues-pr-closed/WDaan/VueTorrent) -![Version](https://img.shields.io/github/v/release/wdaan/vuetorrent) -![Test Status](https://img.shields.io/github/actions/workflow/status/wdaan/vuetorrent/test.yml) -![Downloads](https://img.shields.io/github/downloads/WDaan/VueTorrent/total) - - +![stars](https://img.shields.io/github/stars/WDaan/VueTorrent) ![Forks](https://img.shields.io/github/forks/WDaan/VueTorrent) +![Issues](https://img.shields.io/github/issues/WDaan/VueTorrent) ![Closed](https://img.shields.io/github/issues-closed/WDaan/VueTorrent) +![Closed PR](https://img.shields.io/github/issues-pr-closed/WDaan/VueTorrent) ![Version](https://img.shields.io/github/v/release/wdaan/vuetorrent) +![Test Status](https://img.shields.io/github/actions/workflow/status/wdaan/vuetorrent/test.yml) ![Downloads](https://img.shields.io/github/downloads/WDaan/VueTorrent/total) ## Screenshots diff --git a/src/services/qbit.ts b/src/services/qbit.ts index f7ccab9c..f3a078bc 100644 --- a/src/services/qbit.ts +++ b/src/services/qbit.ts @@ -1,4 +1,4 @@ -import axios from 'axios' +import axios, { AxiosError } from 'axios' import type { AxiosInstance } from 'axios' import type { ApplicationVersion, @@ -81,7 +81,7 @@ export class QBitApi { } async getMainData(rid?: number): Promise { - return this.axios.get('/sync/maindata', { params: { rid } }).then(res => res.data) + return this.axios.get('/sync/maindata', { params: { rid } }).then(res => res.data) } async toggleSpeedLimitsMode(): Promise { diff --git a/src/store/mutations.ts b/src/store/mutations.ts index 1dbeddcb..5bd6cff1 100644 --- a/src/store/mutations.ts +++ b/src/store/mutations.ts @@ -5,6 +5,7 @@ import type { ModalTemplate, StoreState } from '@/types/vuetorrent' import Torrent from '@/models/Torrent' import type { AppPreferences } from '@/types/qbit/models' import { Status } from '@/models' +import router from '@/router' export default { SET_APP_VERSION(state: StoreState, version: string) { @@ -52,20 +53,28 @@ export default { state.authenticated = payload }, updateMainData: async (state: StoreState) => { - const response = await qbit.getMainData(state.rid || undefined) - state.rid = response.rid || undefined + try { + const response = await qbit.getMainData(state.rid || undefined) + state.rid = response.rid || undefined - state.status = new Status(response.server_state) - Tags.update(response) - Graph.shiftValues() + state.status = new Status(response.server_state) + Tags.update(response) + Graph.shiftValues() - // fetch torrent data - state.sort_options.isCustomSortEnabled = Torrent.computedValues.indexOf(state.sort_options.sort) !== -1 - const data = await qbit.getTorrents(state.sort_options) + // fetch torrent data + state.sort_options.isCustomSortEnabled = Torrent.computedValues.indexOf(state.sort_options.sort) !== -1 + const data = await qbit.getTorrents(state.sort_options) - Trackers.update(data) - Torrents.update(data) - DocumentTitle.update() + Trackers.update(data) + Torrents.update(data) + DocumentTitle.update() + } catch (error: any) { + if(error?.response?.status === 403){ + console.error("No longer authtenticated, logging out...") + state.authenticated = false + router.push({ name: 'login' }) + } + } }, FETCH_SETTINGS: async (state: StoreState, settings: AppPreferences) => { state.settings = settings