Skip to content

Commit

Permalink
Merge pull request agalwood#420 from agalwood/feature/custom_tracker_…
Browse files Browse the repository at this point in the history
…source_201909091524

feat: user config custom tracker source
  • Loading branch information
agalwood authored Sep 9, 2019
2 parents c0a2b50 + c1ed827 commit a1eb489
Show file tree
Hide file tree
Showing 5 changed files with 42 additions and 22 deletions.
3 changes: 1 addition & 2 deletions src/main/Launcher.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,7 @@ import {
parseArgvAsUrl,
parseArgvAsFile
} from './utils'

const EMPTY_STRING = ''
import { EMPTY_STRING } from '@shared/constants'

export default class Launcher extends EventEmitter {
constructor () {
Expand Down
22 changes: 19 additions & 3 deletions src/main/core/ConfigManager.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,11 @@ import {
getSessionPath,
getUserDownloadsPath
} from '../utils/index'
import {
EMPTY_STRING,
TRACKERS_ALL_URL,
TRACKERS_ALL_IP_URL
} from '@shared/constants'

export default class ConfigManager {
constructor () {
Expand All @@ -33,7 +38,7 @@ export default class ConfigManager {
this.systemConfig = new Store({
name: 'system',
defaults: {
'all-proxy': '',
'all-proxy': EMPTY_STRING,
'allow-overwrite': true,
'auto-file-renaming': true,
'bt-tracker': tracker.join(','),
Expand All @@ -49,7 +54,7 @@ export default class ConfigManager {
'min-split-size': '1M',
'pause': true,
'rpc-listen-port': 16800,
'rpc-secret': '',
'rpc-secret': EMPTY_STRING,
'seed-time': 60,
'split': 16,
'user-agent': 'Transmission/2.94'
Expand All @@ -69,7 +74,7 @@ export default class ConfigManager {
// }
// },
defaults: {
'all-proxy-backup': '',
'all-proxy-backup': EMPTY_STRING,
'auto-check-update': is.macOS(),
'hide-app-menu': is.windows() || is.linux(),
'last-check-update-time': 0,
Expand All @@ -83,6 +88,10 @@ export default class ConfigManager {
'session-path': getSessionPath(),
'task-notification': true,
'theme': 'auto',
'tracker-source': [
TRACKERS_ALL_IP_URL,
TRACKERS_ALL_URL
],
'update-channel': 'latest',
'use-proxy': false,
'window-state': {}
Expand All @@ -98,6 +107,13 @@ export default class ConfigManager {
if (this.getUserConfig('open-at-login') !== openAtLogin) {
this.setUserConfig('open-at-login', openAtLogin)
}

if (this.getUserConfig('tracker-source').length === 0) {
this.setUserConfig('tracker-source', [
TRACKERS_ALL_IP_URL,
TRACKERS_ALL_URL
])
}
}

getSystemConfig (key, defaultValue) {
Expand Down
25 changes: 12 additions & 13 deletions src/renderer/api/Api.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,7 @@ import {
changeKeysToCamelCase,
changeKeysToKebabCase
} from '@shared/utils'
import {
BEST_TRACKERS_URL,
BEST_TRACKERS_IP_URL
} from '@shared/constants'
import { EMPTY_STRING } from '@shared/constants'

const application = remote.getGlobal('application')

Expand Down Expand Up @@ -312,16 +309,18 @@ export default class Api {
application.energyManager.stopPowerSaveBlocker()
}

fetchBtTrackerFromGitHub () {
async fetchBtTrackerFromGitHub (source) {
if (isEmpty(source)) {
return EMPTY_STRING
}

const now = Date.now()
const promises = [
fetch(`${BEST_TRACKERS_IP_URL}?t=${now}`).then((res) => res.text()),
fetch(`${BEST_TRACKERS_URL}?t=${now}`).then((res) => res.text())
]

return Promise.all(promises).then((values) => {
let result = values.join('\r\n').replace(/^\s*[\r\n]/gm, '')
return result
const promises = source.map((url) => {
return fetch(`${url}?t=${now}`).then((res) => res.text())
})

const values = await Promise.all(promises)
let result = values.join('\r\n').replace(/^\s*[\r\n]/gm, '')
return result
}
}
5 changes: 3 additions & 2 deletions src/renderer/store/modules/preference.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,9 @@ const actions = {
changeThemeConfig ({ commit }, theme) {
commit('UPDATE_PREFERENCE_DATA', { theme })
},
fetchBtTracker () {
return api.fetchBtTrackerFromGitHub()
fetchBtTracker ({ state }) {
const { trackerSource = [] } = state.config
return api.fetchBtTrackerFromGitHub(trackerSource)
},
toggleEngineMode () {

Expand Down
9 changes: 7 additions & 2 deletions src/shared/constants.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
export const EMPTY_STRING = ''

export const LIGHT_THEME = 'light'
export const DARK_THEME = 'dark'

export const BEST_TRACKERS_URL = 'https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_best.txt'
export const BEST_TRACKERS_IP_URL = 'https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_best_ip.txt'
// https://github.com/ngosang/trackerslist
export const TRACKERS_BEST_URL = 'https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_best.txt'
export const TRACKERS_BEST_IP_URL = 'https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_best_ip.txt'
export const TRACKERS_ALL_URL = 'https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all.txt'
export const TRACKERS_ALL_IP_URL = 'https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all_ip.txt'

// One Week
export const AUTO_CHECK_UPDATE_INTERVAL = 7 * 24 * 60 * 60 * 1000
Expand Down

0 comments on commit a1eb489

Please sign in to comment.