fix: white screen when invidious instances don't load (#1755)
* fix white screen when invidious instances don't load * static file for instances on api fail * Update src/renderer/store/modules/invidious.js Co-authored-by: PikachuEXE <pikachuexe@gmail.com> * only parse json if file exists * fix linter * Update src/renderer/store/modules/invidious.js Co-authored-by: PikachuEXE <pikachuexe@gmail.com> * Update src/renderer/store/modules/invidious.js * Update invidious.js * Update src/renderer/store/modules/invidious.js Co-authored-by: PikachuEXE <pikachuexe@gmail.com> * remove trailing space Co-authored-by: PikachuEXE <pikachuexe@gmail.com>
This commit is contained in:
parent
ef9efc9c75
commit
c25997c804
|
@ -130,7 +130,7 @@ export default Vue.extend({
|
|||
},
|
||||
mounted: function () {
|
||||
this.grabUserSettings().then(async () => {
|
||||
await this.fetchInvidiousInstances()
|
||||
await this.fetchInvidiousInstances({ isDev: this.isDev })
|
||||
if (this.defaultInvidiousInstance === '') {
|
||||
await this.setRandomCurrentInvidiousInstance()
|
||||
}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import $ from 'jquery'
|
||||
import fs from 'fs'
|
||||
|
||||
const state = {
|
||||
currentInvidiousInstance: '',
|
||||
|
@ -21,25 +22,43 @@ const getters = {
|
|||
}
|
||||
|
||||
const actions = {
|
||||
async fetchInvidiousInstances({ commit }) {
|
||||
async fetchInvidiousInstances({ commit }, payload) {
|
||||
const requestUrl = 'https://api.invidious.io/instances.json'
|
||||
|
||||
let response
|
||||
let instances = []
|
||||
try {
|
||||
response = await $.getJSON(requestUrl)
|
||||
instances = response.filter((instance) => {
|
||||
if (instance[0].includes('.onion') || instance[0].includes('.i2p')) {
|
||||
return false
|
||||
} else {
|
||||
return true
|
||||
}
|
||||
}).map((instance) => {
|
||||
return instance[1].uri.replace(/\/$/, '')
|
||||
})
|
||||
} catch (err) {
|
||||
console.log(err)
|
||||
}
|
||||
|
||||
const instances = response.filter((instance) => {
|
||||
if (instance[0].includes('.onion') || instance[0].includes('.i2p')) {
|
||||
return false
|
||||
// Starts fallback strategy: read from static file
|
||||
// And fallback to hardcoded entry(s) if static file absent
|
||||
const fileName = 'invidious-instances.json'
|
||||
/* eslint-disable-next-line */
|
||||
const fileLocation = payload.isDev ? './static/' : `${__dirname}/static/`
|
||||
if (fs.existsSync(`${fileLocation}${fileName}`)) {
|
||||
console.log('reading static file for invidious instances')
|
||||
const fileData = fs.readFileSync(`${fileLocation}${fileName}`)
|
||||
instances = JSON.parse(fileData).map((entry) => {
|
||||
return entry.url
|
||||
})
|
||||
} else {
|
||||
return true
|
||||
console.log('unable to read static file for invidious instances')
|
||||
instances = [
|
||||
'https://invidious.snopyta.org',
|
||||
'https://invidious.kavin.rocks/'
|
||||
]
|
||||
}
|
||||
}).map((instance) => {
|
||||
return instance[1].uri.replace(/\/$/, '')
|
||||
})
|
||||
}
|
||||
|
||||
commit('setInvidiousInstancesList', instances)
|
||||
},
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
[
|
||||
{ "url": "https://yewtu.be" },
|
||||
{ "url": "https://invidious.snopyta.org" },
|
||||
{ "url": "https://invidious.kavin.rocks" },
|
||||
{ "url": "https://vid.puffyan.us" },
|
||||
{ "url": "https://invidious.exonip.de" },
|
||||
{ "url": "https://ytprivate.com" },
|
||||
{ "url": "https://invidious-us.kavin.rocks" },
|
||||
{ "url": "https://invidious.silkky.cloud" },
|
||||
{ "url": "https://y.com.cm" },
|
||||
{ "url": "https://inv.riverside.rocks" },
|
||||
{ "url": "https://invidio.xamh.de" },
|
||||
{ "url": "https://vid.mint.lgbt" },
|
||||
{ "url": "https://invidious-jp.kavin.rocks" },
|
||||
{ "url": "https://invidious.hub.ne.kr" },
|
||||
{ "url": "https://yt.didw.to" },
|
||||
{ "url": "https://yt.artemislena.eu" },
|
||||
{ "url": "https://youtube.076.ne.jp" },
|
||||
{ "url": "https://ytb.trom.tf" },
|
||||
{ "url": "https://invidious.namazso.eu" }
|
||||
]
|
Loading…
Reference in New Issue