-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpopup.js
More file actions
103 lines (92 loc) · 3.66 KB
/
popup.js
File metadata and controls
103 lines (92 loc) · 3.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
document.getElementById("syncBtn").addEventListener("click", async () => {
const statusEl = document.getElementById("status");
statusEl.textContent = "Syncing...";
try {
// STEP 1: Grab token from eticket
const [eticketTab] = await chrome.tabs.query({
url: "*://eticket.railway.gov.bd/*",
});
if (!eticketTab) {
statusEl.textContent = "";
const msg = document.createElement("span");
msg.textContent = "Open eticket first. ";
const btn = document.createElement("button");
btn.textContent = "Visit eticket";
btn.onclick = () => {
chrome.tabs.create({ url: "https://eticket.railway.gov.bd/" });
};
statusEl.appendChild(msg);
statusEl.appendChild(btn);
return;
}
await chrome.scripting.executeScript({
target: { tabId: eticketTab.id },
files: ["sync.js"],
});
statusEl.textContent = "Token copied. Now injecting...";
// STEP 2: Inject token into tracker app
const [trackerTab] = await chrome.tabs.query({
url: "*://train-ticket-tracker-bd.vercel.app/*",
});
if (!trackerTab) {
statusEl.textContent = "";
const msg = document.createElement("span");
msg.textContent = "Open the tracker site. ";
const btn = document.createElement("button");
btn.textContent = "Visit tracker";
btn.onclick = () => {
chrome.tabs.create({
url: "https://train-ticket-tracker-bd.vercel.app/",
});
};
statusEl.appendChild(msg);
statusEl.appendChild(btn);
return;
}
await chrome.scripting.executeScript({
target: { tabId: trackerTab.id },
func: () => {
chrome.storage.local.get([
"bdTrainToken",
"bdTrainSSDK",
"bdTrainUUDID",
], (result) => {
const token = result.bdTrainToken;
const ssdk = result.bdTrainSSDK;
const uudid = result.bdTrainUUDID;
if (token) {
// Set values in the page's localStorage
try {
localStorage.setItem("token", token);
if (ssdk) localStorage.setItem("ssdk", ssdk);
if (uudid) localStorage.setItem("uudid", uudid);
} catch (e) {
// ignore quota or access errors
}
} else {
chrome.runtime.sendMessage({ type: "NO_TOKEN_FOUND" });
}
});
},
});
chrome.runtime.onMessage.addListener((msg) => {
if (msg.type === "NO_TOKEN_FOUND") {
statusEl.textContent = "Sync failed, log in to eticket first.";
}
});
statusEl.textContent = "Account synced successfully!";
// Redirect or reload to homepage
chrome.scripting.executeScript({
target: { tabId: trackerTab.id },
func: () => {
if (window.location.pathname === "/login" || window.location.pathname === "/login-advanced") {
window.location.href = "/";
} else if (window.location.pathname === "/") {
window.location.reload();
}
},
});
} catch (err) {
statusEl.textContent = "Sync failed.";
}
});