-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpopup.js
More file actions
70 lines (63 loc) · 2.3 KB
/
Copy pathpopup.js
File metadata and controls
70 lines (63 loc) · 2.3 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
// popup.js — handles login/logout UI
const statusDot = document.getElementById("statusDot");
const statusText = document.getElementById("statusText");
const loggedOutView = document.getElementById("loggedOutView");
const loggedInView = document.getElementById("loggedInView");
const loginBtn = document.getElementById("loginBtn");
const loginLabel = document.getElementById("loginLabel");
const loginSpinner = document.getElementById("loginSpinner");
const logoutBtn = document.getElementById("logoutBtn");
const redirectUrlEl = document.getElementById("redirectUrl");
// Show redirect URL for Mendeley app registration
chrome.runtime.sendMessage({ type: "GET_REDIRECT_URL" }, (res) => {
if (res?.url) {
redirectUrlEl.textContent = res.url;
redirectUrlEl.addEventListener("click", () => {
navigator.clipboard.writeText(res.url).then(() => {
redirectUrlEl.textContent = "Copied!";
setTimeout(() => (redirectUrlEl.textContent = res.url), 1500);
});
});
}
});
// Check login status on open
chrome.runtime.sendMessage({ type: "GET_AUTH_STATUS" }, (res) => {
setAuthState(res?.loggedIn ?? false);
});
function setAuthState(loggedIn) {
if (loggedIn) {
statusDot.className = "status-dot connected";
statusText.textContent = "Connected to Mendeley";
loggedInView.classList.remove("hidden");
loggedOutView.classList.add("hidden");
} else {
statusDot.className = "status-dot disconnected";
statusText.textContent = "Not connected";
loggedOutView.classList.remove("hidden");
loggedInView.classList.add("hidden");
}
}
// Login
loginBtn.addEventListener("click", () => {
loginLabel.textContent = "Connecting...";
loginSpinner.classList.remove("hidden");
loginBtn.disabled = true;
chrome.runtime.sendMessage({ type: "LOGIN" }, (res) => {
loginSpinner.classList.add("hidden");
loginBtn.disabled = false;
if (res?.success) {
setAuthState(true);
} else {
loginLabel.textContent = "Connect Mendeley";
statusText.textContent = "Login failed — try again";
statusDot.className = "status-dot disconnected";
alert("Login error: " + (res?.error || "Unknown error"));
}
});
});
// Logout
logoutBtn.addEventListener("click", () => {
chrome.runtime.sendMessage({ type: "LOGOUT" }, () => {
setAuthState(false);
});
});