v1.0.5: user dropdown from Notion API, settingsCache pruning
This commit is contained in:
@@ -73,8 +73,8 @@
|
||||
#statusText.running { color: #4caf50; }
|
||||
#statusText.error { color: #e57373; }
|
||||
#versionText {
|
||||
font-size: 10px;
|
||||
color: #444;
|
||||
font-size: 12px;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
padding-top: 8px;
|
||||
}
|
||||
@@ -102,10 +102,12 @@
|
||||
<input type="password" id="notionToken" placeholder="ntn_…">
|
||||
</div>
|
||||
<div class="row">
|
||||
<label>User ID</label>
|
||||
<input type="text" id="userId" placeholder="Your Notion user UUID">
|
||||
<label>Your Name</label>
|
||||
<select id="userId">
|
||||
<option value="">— Select your name —</option>
|
||||
</select>
|
||||
</div>
|
||||
<p class="hint">Shared across all buttons. Enter once per device.</p>
|
||||
<p class="hint">Shared across all buttons. Select once per device.</p>
|
||||
<p id="credStatus"></p>
|
||||
<hr class="divider">
|
||||
</div>
|
||||
@@ -166,12 +168,25 @@
|
||||
function saveCredentials() {
|
||||
var creds = {
|
||||
notionToken: document.getElementById("notionToken").value.trim(),
|
||||
userId: document.getElementById("userId").value.trim(),
|
||||
userId: document.getElementById("userId").value,
|
||||
};
|
||||
$PI.setGlobalSettings(creds);
|
||||
setCredStatus("Credentials saved.", "ok");
|
||||
}
|
||||
|
||||
function populateUsers(users, savedUserId) {
|
||||
var sel = document.getElementById("userId");
|
||||
var current = savedUserId || sel.value;
|
||||
sel.innerHTML = '<option value="">— Select your name —</option>';
|
||||
users.forEach(function(u) {
|
||||
var opt = document.createElement("option");
|
||||
opt.value = u.id;
|
||||
opt.textContent = u.name;
|
||||
if (u.id === current) opt.selected = true;
|
||||
sel.appendChild(opt);
|
||||
});
|
||||
}
|
||||
|
||||
function scheduleCredSave() {
|
||||
clearTimeout(credSaveTimer);
|
||||
credSaveTimer = setTimeout(saveCredentials, 600);
|
||||
@@ -212,15 +227,19 @@
|
||||
$PI.getGlobalSettings();
|
||||
|
||||
document.getElementById("projectSelect").addEventListener("change", save);
|
||||
["notionToken", "userId"].forEach(function(id) {
|
||||
document.getElementById(id).addEventListener("input", scheduleCredSave);
|
||||
});
|
||||
document.getElementById("notionToken").addEventListener("input", scheduleCredSave);
|
||||
document.getElementById("userId").addEventListener("change", saveCredentials);
|
||||
});
|
||||
|
||||
$PI.onDidReceiveGlobalSettings(function(jsn) {
|
||||
var s = jsn.payload.settings || {};
|
||||
document.getElementById("notionToken").value = s.notionToken || "";
|
||||
document.getElementById("userId").value = s.userId || "";
|
||||
if (s.userId) {
|
||||
var sel = document.getElementById("userId");
|
||||
if (sel.querySelector('option[value="' + s.userId + '"]')) {
|
||||
sel.value = s.userId;
|
||||
}
|
||||
}
|
||||
|
||||
credConfigured = !!(s.notionToken && s.userId);
|
||||
|
||||
@@ -253,6 +272,10 @@
|
||||
if (payload.version) {
|
||||
document.getElementById("versionText").textContent = "v" + payload.version;
|
||||
}
|
||||
if (payload.users) {
|
||||
var savedUserId = document.getElementById("userId").value;
|
||||
populateUsers(payload.users, savedUserId);
|
||||
}
|
||||
if (payload.error) {
|
||||
setStatus(payload.error, "error");
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user