Skip to content

Commit 7648b4a

Browse files
committed
Refactored popup
1 parent 3a2df72 commit 7648b4a

File tree

2 files changed

+43
-33
lines changed

2 files changed

+43
-33
lines changed

src/background/TabStateManager.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ class TabStateManager {
3131
}
3232

3333
public get(tabId: number): TabState;
34-
public get(tabId: number, propName: string): boolean;
34+
public get(tabId: number, propName: string): any;
3535
public get(tabId: number, propName?: string) {
3636
if (typeof propName === "undefined") {
3737
return this.tabStates[tabId];

src/popup/popup.ts

Lines changed: 42 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@
33
/// <reference path="../Utils.ts"/>
44

55
module Popup {
6+
var prevButton = document.getElementById("prev");
7+
var nextButton = document.getElementById("next");
8+
var queryInput = <HTMLInputElement> document.getElementById("query");
9+
var caseInsensitiveCheckbox = <HTMLInputElement> document.getElementById("case-insensitive");
10+
611
Utils.withActiveTab(function (tab: chrome.tabs.Tab) {
712
var id = tab.id;
813
var tabStates = BackgroundInterface.getTabStateManager();
@@ -15,29 +20,31 @@ module Popup {
1520
tabStates.resetState(id);
1621
}
1722

18-
var prevButton = document.getElementById("prev");
19-
var nextButton = document.getElementById("next");
20-
var queryInput = <HTMLInputElement> document.getElementById("query");
21-
var caseInsensitiveCheckbox = <HTMLInputElement> document.getElementById("case-insensitive");
23+
addListeners(id, tabStates);
24+
restoreState(id, tabStates);
25+
});
2226

23-
prevButton.addEventListener("click", function(event) {
27+
function addListeners(id: number, tabStates: TabStateManager) {
28+
var prevButtonClick = function() {
2429
Utils.sendCommand("prev");
25-
});
26-
nextButton.addEventListener("click", function(event) {
30+
};
31+
32+
var nextButtonClick = function() {
2733
if (tabStates.isSearching(id)) {
2834
Utils.sendCommand("next");
2935
} else {
3036
search(id, tabStates);
3137
}
32-
});
38+
};
3339

34-
queryInput.addEventListener("keydown", function(event) {
40+
var queryInputKeyDown = function(event) {
3541
if (event.keyCode == 13) {
3642
Utils.log("Enter pressed");
3743
search(id, tabStates);
3844
}
39-
});
40-
queryInput.addEventListener("input", () => {
45+
}
46+
47+
var queryInputInput = () => {
4148
tabStates.set(id, "query", this.value);
4249

4350
if (tabStates.isSearching(id)) {
@@ -53,43 +60,46 @@ module Popup {
5360
} else {
5461
setEnabled("next", true);
5562
}
56-
});
57-
58-
this.value = tabStates.get(id, "query");
59-
if (this.value == "") {
60-
setEnabled("next", false);
61-
} else {
62-
setEnabled("next", true);
6363
}
6464

65-
caseInsensitiveCheckbox.onclick = function() {
65+
var checkboxClick = function() {
6666
Utils.log("Set checkbox state to " + this.checked);
6767
tabStates.set(id, "caseInsensitive", this.checked);
6868
}
6969

70-
caseInsensitiveCheckbox.checked = tabStates.get(id, "caseInsensitive");
71-
});
70+
prevButton.addEventListener("click", prevButtonClick);
71+
nextButton.addEventListener("click", nextButtonClick);
72+
queryInput.addEventListener("keydown", queryInputKeyDown);
73+
queryInput.addEventListener("input", queryInputInput);
74+
caseInsensitiveCheckbox.onclick = checkboxClick;
75+
}
76+
77+
function restoreState(tabId: number, tabStates: TabStateManager) {
78+
queryInput.value = tabStates.get(tabId, "query");
79+
if (queryInput.value == "") {
80+
setEnabled("next", false);
81+
} else {
82+
setEnabled("next", true);
83+
}
84+
85+
caseInsensitiveCheckbox.checked = tabStates.get(tabId, "caseInsensitive");
86+
}
7287

7388
function search(tabId: number, tabStates: TabStateManager) {
74-
var el = <HTMLInputElement> document.getElementById("query");
75-
if (validate(el.value)) {
76-
el.className = '';
77-
var checkbox = <HTMLInputElement> document.getElementById("case-insensitive");
78-
if (checkbox.checked) {
79-
var insensitive = true;
80-
} else {
81-
var insensitive = false;
82-
}
89+
if (validate(queryInput.value)) {
90+
queryInput.className = '';
91+
var insensitive = caseInsensitiveCheckbox.checked;
92+
8393
chrome.tabs.sendMessage(tabId,
8494
{
8595
command: "search",
8696
caseInsensitive: insensitive,
87-
regexp: el.value
97+
regexp: queryInput.value
8898
});
8999
tabStates.set(tabId, "searching", true);
90100
} else {
91101
Utils.log("Invalid regex");
92-
el.className = 'invalid';
102+
queryInput.className = 'invalid';
93103
}
94104
}
95105

0 commit comments

Comments
 (0)