|
@@ -2,47 +2,52 @@
|
2
|
2
|
* Get the current URL.
|
3
|
3
|
*
|
4
|
4
|
* @param {function(string)} callback - called when the URL of the current tab
|
5
|
|
- * is found.
|
|
5
|
+ * is found.
|
6
|
6
|
*/
|
7
|
7
|
function getCurrentTabUrl(callback) {
|
8
|
|
- var queryInfo = {
|
9
|
|
- active: true,
|
10
|
|
- currentWindow: true
|
11
|
|
- };
|
|
8
|
+ var queryInfo = {
|
|
9
|
+ active: true,
|
|
10
|
+ currentWindow: true
|
|
11
|
+ };
|
12
|
12
|
|
13
|
|
- chrome.tabs.query(queryInfo, function(tabs) {
|
14
|
|
- var tab = tabs[0];
|
|
13
|
+ chrome.tabs.query(queryInfo, function(tabs) {
|
|
14
|
+ var tab = tabs[0];
|
|
15
|
+ var url = tab.url;
|
|
16
|
+ console.assert(typeof url == 'string', 'tab.url should be a string');
|
15
|
17
|
|
16
|
|
- var url = tab.url;
|
17
|
|
-
|
18
|
|
- console.assert(typeof url == 'string', 'tab.url should be a string');
|
19
|
|
-
|
20
|
|
- callback(url);
|
21
|
|
- });
|
|
18
|
+ callback(url);
|
|
19
|
+ });
|
22
|
20
|
}
|
23
|
21
|
|
|
22
|
+// Redirect to mirror url
|
24
|
23
|
function takeMeTo(url) {
|
25
|
|
- updateProperties = {
|
26
|
|
- url: "https://" + url
|
27
|
|
- }
|
28
|
|
- chrome.tabs.update(updateProperties=updateProperties)
|
|
24
|
+ updateProperties = {
|
|
25
|
+ url: "https://" + url
|
|
26
|
+ }
|
|
27
|
+ chrome.tabs.update(updateProperties=updateProperties)
|
29
|
28
|
}
|
30
|
29
|
|
|
30
|
+// Check if there's a mirror for the current URL. If so, display the message
|
|
31
|
+// about it and the button to redirect to a random mirror (if there's more than
|
|
32
|
+// one).
|
31
|
33
|
getCurrentTabUrl(function(url) {
|
32
|
|
- chrome.storage.local.get("sites", function(sites){
|
33
|
|
- sites = sites.sites
|
34
|
|
- domain = url.match(/:\/\/(www\.)?([^\/]+)\//).slice(-1)[0]
|
35
|
|
- if(domain in sites) {
|
36
|
|
- proxies = sites[domain]
|
37
|
|
- $("#mirror").css("display", "block")
|
38
|
|
- $("#nomirror").css("display", "none")
|
39
|
|
- $("#mirror button").on("click", function() {
|
40
|
|
- takeMeTo(proxies[Math.floor(Math.random()*proxies.length)])
|
41
|
|
- })
|
42
|
|
- }
|
43
|
|
- else {
|
44
|
|
- $("#mirror").css("display", "none")
|
45
|
|
- $("#nomirror").css("display", "block")
|
46
|
|
- }
|
47
|
|
- })
|
|
34
|
+ chrome.storage.local.get("sites", function(sites){
|
|
35
|
+ sites = sites.sites
|
|
36
|
+ // Grab the domain part of the URL
|
|
37
|
+ domain = url.match(/:\/\/(www\.)?([^\/]+)\//).slice(-1)[0]
|
|
38
|
+ if(domain in sites) {
|
|
39
|
+ proxies = sites[domain]
|
|
40
|
+ // Offer the user to redirect them to a mirror
|
|
41
|
+ $("#mirror").css("display", "block")
|
|
42
|
+ $("#nomirror").css("display", "none")
|
|
43
|
+ $("#mirror button").on("click", function() {
|
|
44
|
+ takeMeTo(proxies[Math.floor(Math.random()*proxies.length)])
|
|
45
|
+ })
|
|
46
|
+ }
|
|
47
|
+ else {
|
|
48
|
+ // Tell the user there's no mirror available
|
|
49
|
+ $("#mirror").css("display", "none")
|
|
50
|
+ $("#nomirror").css("display", "block")
|
|
51
|
+ }
|
|
52
|
+ })
|
48
|
53
|
})
|