Skip to content

Commit b101ed8

Browse files
committed
数種の変更・改善
* Instanceにtokenプロパティ追加 * changeVisibilitiesメソッド追加 * blur時のインスタンスチェッカー実装
1 parent 2d14a5c commit b101ed8

File tree

2 files changed

+47
-22
lines changed

2 files changed

+47
-22
lines changed

views/lib/Instance.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,12 @@ class Instance {
4848
constructor (url) {
4949
if (!url) throw new URIError("An argument, 'url' is required.");
5050

51-
//Throws error if provided url isn't absolutely
51+
//Throws error if provided url isn't absolutely one
5252
new URL(url);
5353

5454
this.url = url;
5555
Instance.detectType(url).then(type => this.type = type);
56+
chrome.storage.local.get("token", items => Object.assign(this, items));
5657
}
5758

5859
/**
@@ -68,7 +69,7 @@ class Instance {
6869

6970
case "init":
7071
const detector = setInterval(() => {
71-
if ([this.type].every(prop => prop)) {
72+
if ([this.type, this.token].every(prop => prop !== undefined)) {
7273
clearInterval(detector);
7374
callback(this);
7475
}

views/settings/settings.js

+44-20
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1+
const enabledSwitch = document.getElementById("enabled");
12
const instanceInputter = document.getElementById("instance");
23
const tokenInputter = document.getElementById("token");
34
const visibilitySelector = document.getElementById("visibility");
4-
const enabledSwitch = document.getElementById("enabled");
55
const saveBtn = document.getElementById("btns_save");
66
const closeBtn = document.getElementById("btns_close");
77

@@ -16,43 +16,67 @@ const throwError = errorKey => {
1616
throw definedMessages[errorKey].message;
1717
};
1818

19+
/**
20+
* Changes a collection of visibilities by provided instance's type
21+
* @param {String} type
22+
*/
23+
const changeVisibilities = type => {
24+
if (Instance.Type[type]) {
25+
while (visibilitySelector.options.length > 0) visibilitySelector.options.remove(0);
26+
27+
for (let name of Instance.Visibility[type]) {
28+
const option = new Option(definedMessages[`setting_visibility_${type}_${name}`].message, name);
29+
option.setAttribute("Name", `visibility.${name}`);
30+
option.setAttribute("Locale-Message", `setting_visibility_${type}_${name}`);
31+
32+
visibilitySelector.add(option);
33+
}
34+
35+
chrome.storage.local.get("visibility", items => {
36+
const { visibility } = items;
37+
38+
if (visibility && Instance.Visibility[type].includes(visibility)) visibilitySelector.namedItem(`visibility.${visibility}`).selected = true;
39+
M.FormSelect.init(visibilitySelector);
40+
});
41+
}
42+
};
43+
1944

2045

2146
window.addEventListener("DOMContentLoaded", () => {
2247
document.querySelectorAll("Select").forEach(select => M.FormSelect.init(select));
23-
});
2448

25-
window.addEventListener("DOMContentLoaded", () => {
26-
chrome.storage.local.get(["enabled", "type", "instance", "token", "visibility"], items => {
27-
const { enabled, type, instance, token, visibility } = items;
49+
chrome.storage.local.get(["enabled", "type", "instance", "token"], items => {
50+
const { enabled, type, instance, token } = items;
2851

2952
if (enabled) enabledSwitch.checked = enabled;
3053
if (instance) instanceInputter.value = instance;
3154
if (token) tokenInputter.value = token;
3255

33-
if (type && type !== Instance.Type.None) {
34-
for (let visibility of Instance.Visibility[type]) {
35-
const option = new Option(definedMessages[`setting_visibility_${type}_${visibility}`].message, visibility);
36-
option.setAttribute("Name", `visibility.${visibility}`);
37-
option.setAttribute("Locale-Message", `setting_visibility_${type}_${visibility}`);
38-
39-
visibilitySelector.add(option);
40-
}
41-
}
42-
43-
if (visibility && Instance.Visibility[type].includes(visibility)) visibilitySelector.namedItem(`visibility.${visibility}`).selected = true;
44-
56+
changeVisibilities(type);
4557
M.updateTextFields();
46-
M.FormSelect.init(visibilitySelector);
4758
});
59+
});
4860

49-
enabledSwitch.addEventListener("change", event => {
50-
const enabled = event.target.checked;
61+
window.addEventListener("DOMContentLoaded", () => {
62+
enabledSwitch.addEventListener("change", function () {
63+
const enabled = this.checked;
5164

5265
chrome.storage.local.set({ enabled });
5366
chrome.browserAction.setBadgeText({ text: enabled ? "ON" : "OFF" });
5467
});
5568

69+
instanceInputter.addEventListener("blur", function () {
70+
const instance = new Instance(this.value);
71+
72+
instance.on("init", () => {
73+
const { type } = instance;
74+
75+
changeVisibilities(type);
76+
M.FormSelect.init(visibilitySelector);
77+
});
78+
});
79+
5680
saveBtn.addEventListener("click", () => {
5781
const instance = new Instance(instanceInputter.value);
5882

0 commit comments

Comments
 (0)