diff options
Diffstat (limited to 'src/models/UserAgent.js')
-rw-r--r-- | src/models/UserAgent.js | 35 |
1 files changed, 33 insertions, 2 deletions
diff --git a/src/models/UserAgent.js b/src/models/UserAgent.js index f51f2e5a6..f1d08e306 100644 --- a/src/models/UserAgent.js +++ b/src/models/UserAgent.js | |||
@@ -18,7 +18,9 @@ export default class UserAgent { | |||
18 | 18 | ||
19 | @observable chromelessUserAgent = false; | 19 | @observable chromelessUserAgent = false; |
20 | 20 | ||
21 | @observable getUserAgent = defaultUserAgent; | 21 | @observable userAgentPref = null; |
22 | |||
23 | @observable getUserAgent = null; | ||
22 | 24 | ||
23 | constructor(overrideUserAgent = null) { | 25 | constructor(overrideUserAgent = null) { |
24 | if (typeof overrideUserAgent === 'function') { | 26 | if (typeof overrideUserAgent === 'function') { |
@@ -36,8 +38,37 @@ export default class UserAgent { | |||
36 | }); | 38 | }); |
37 | } | 39 | } |
38 | 40 | ||
41 | @computed get defaultUserAgent() { | ||
42 | if (typeof this.getUserAgent === 'function') { | ||
43 | return this.getUserAgent(); | ||
44 | } | ||
45 | const globalPref = window.ferdi.stores.settings.all.app.userAgentPref; | ||
46 | if (typeof globalPref === 'string') { | ||
47 | const trimmed = globalPref.trim(); | ||
48 | if (trimmed !== '') { | ||
49 | return trimmed; | ||
50 | } | ||
51 | } | ||
52 | return defaultUserAgent(); | ||
53 | } | ||
54 | |||
55 | @computed get userAgentWithChromeVersion() { | ||
56 | if (typeof this.userAgentPref === 'string') { | ||
57 | const trimmed = this.userAgentPref.trim(); | ||
58 | if (trimmed !== '') { | ||
59 | return trimmed; | ||
60 | } | ||
61 | } | ||
62 | return this.defaultUserAgent; | ||
63 | } | ||
64 | |||
65 | @computed get userAgentWithoutChromeVersion() { | ||
66 | const withChrome = this.userAgentWithChromeVersion; | ||
67 | return withChrome.replace(/Chrome\/[0-9.]+/, 'Chrome'); | ||
68 | } | ||
69 | |||
39 | @computed get userAgent() { | 70 | @computed get userAgent() { |
40 | return this.chromelessUserAgent ? defaultUserAgent(true) : this.getUserAgent(); | 71 | return this.chromelessUserAgent ? this.userAgentWithoutChromeVersion : this.userAgentWithChromeVersion; |
41 | } | 72 | } |
42 | 73 | ||
43 | @action setWebviewReference(webview) { | 74 | @action setWebviewReference(webview) { |