-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhandleExtension.js
255 lines (223 loc) · 9.58 KB
/
handleExtension.js
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
// 코드 적용할 카페 주소 추가
function addCafeName(cafeName) {
if (cafeName === '') {
showToastMessage('값을 입력해 주세요.');
return
}
chrome.storage.local.get(['hostNameList'], function(data){
let hostNameList = [];
if(data['hostNameList'] !== undefined){
hostNameList = data['hostNameList'];
}
if(hostNameList.includes(cafeName)){
showToastMessage(cafeName + ' 이미 등록되었습니다!');
} else {
hostNameList.push(cafeName);
chrome.storage.local.set({
'hostNameList': hostNameList
});
showToastMessage(cafeName + ' 등록되었습니다!<br>적용을 위해 페이지를 새로고침 해주세요!');
document.querySelector('#cafeName').value = '';
document.querySelector('#cafeName').focus();
let row = document.querySelector('#siteTbody').insertRow(document.querySelector('#siteTbody').rows.length);
row.insertCell(0).innerHTML = cafeName;
row.insertCell(1).innerHTML = '<td>' + '<input type="checkbox" class="hostN"/><button type="button" class="hostElement">삭제</button></td> </td>';
addDeleteListener('hostElement', 'hostNameList');
}
})
}
function addDeleteListener(className, listName) {
let buttonList = document.querySelectorAll('.'+className);
for(let button of buttonList) {
button.addEventListener('click', function() {
let element = this.parentElement.parentElement;
let name = element.children[0].textContent;
chrome.storage.local.get([listName], function(data){
let nameList = data[listName];
nameList.splice(nameList.indexOf(name), 1);
element.remove();
chrome.storage.local.set({
[listName]: nameList
});
});
})
}
}
function showToastMessage(message) {
let barElement = document.getElementById('snackbar');
barElement.innerHTML = message;
barElement.className = 'show';
setTimeout(function(){ barElement.className = barElement.className.replace('show', ''); }, 1000);
}
// 유저 테이블 생성
function makeTable(){
chrome.storage.local.get(['eraseList'], function(data) {
let eraseList = [];
if(data['eraseList'] !== undefined){
eraseList = data['eraseList'];
for(let idx=0; idx<eraseList.length; idx++){
let row = document.querySelector('#blockTbody').insertRow(document.querySelector('#blockTbody').rows.length);
row.insertCell(0).innerHTML = eraseList[idx];
row.insertCell(1).innerHTML = '<td>' + '<input type="checkbox" class="userN"/> <button type="button" class="userElement">삭제</button></td>';
}
}
addDeleteListener('userElement', 'eraseList');
});
chrome.storage.local.get(['hostNameList'], function(data) {
let hostNameList = [];
if(data['hostNameList'] !== undefined){
hostNameList = data['hostNameList'];
for(let idx=0; idx<hostNameList.length; idx++){
let row = document.querySelector('#siteTbody').insertRow(document.querySelector('#siteTbody').rows.length);
row.insertCell(0).innerHTML = hostNameList[idx];
row.insertCell(1).innerHTML = '<td>' + '<input type="checkbox" class="hostN"/><button type="button" class="hostElement">삭제</button></td> </td>';
}
}
addDeleteListener('hostElement', 'hostNameList');
});
}
// 값을 가져오기
chrome.storage.local.get(['eraseCheckBox', 'eraseVIP'], function(data){
document.querySelector('#eraseButton').checked = data.eraseCheckBox;
document.querySelector('#blockVipUser').checked = data.eraseVIP;
});
// 업자, 등록된 유저 삭제하기
document.getElementById('eraseButton').addEventListener('change', function() {
if(this.checked){
// 동작 중임을 표시하는 아이콘 표시
chrome.action.setBadgeText({text: 'ON'});
chrome.action.setBadgeBackgroundColor({color: '#4688F1'});
// 크롬 스토리지에 상태 저장
chrome.storage.local.set({
'eraseCheckBox': this.checked
}, _ => {
chrome.runtime.sendMessage({ msg: 'eraseDealer'});
});
} else{
// 동작 중임을 표시하는 아이콘 지우기
chrome.action.setBadgeText({text: ''});
chrome.action.setBadgeBackgroundColor({color: '#00000000'});
// 크롬 스토리지에 상태 저장
chrome.storage.local.set({
'eraseCheckBox': this.checked
}, _ => {
chrome.runtime.sendMessage({ msg: 'eraseDealer'});
});
}
});
// 최고등급 유저 차단 반영
document.getElementById('blockVipUser').addEventListener('change', function() {
// 크롬 스토리지에 상태 저장
chrome.storage.local.set({
'eraseVIP': this.checked
});
});
//차단하고 싶은 유저를 입력하고 버튼을 눌렀을 때, 차단하는 유저 반영
document.getElementById('userAddButton').addEventListener('click', function() {
const sellerName = document.querySelector('#sellerName').value;
if (sellerName === '') {
showToastMessage('값을 입력해 주세요.');
return
}
chrome.storage.local.get(['eraseList'], function(data){
let eraseList = [];
if(data['eraseList'] !== undefined){
eraseList = data['eraseList'];
}
if(eraseList.includes(sellerName)){
showToastMessage(sellerName + ' 이미 등록되었습니다!');
} else {
eraseList.push(sellerName);
chrome.storage.local.set({
'eraseList': eraseList
});
showToastMessage(sellerName + ' 등록되었습니다!');
document.querySelector('#sellerName').value = '';
document.querySelector('#sellerName').focus();
let row = document.querySelector('#blockTbody').insertRow(document.querySelector('#blockTbody').rows.length);
row.insertCell(0).innerHTML = sellerName;
row.insertCell(1).innerHTML = '<td>' + '<input type="checkbox" class="userN"/> <button type="button" class="userElement">삭제</button></td>';
addDeleteListener('userElement', 'eraseList');
}
})
});
// 차단 유저 삭제하기
document.getElementById('eraseUser').addEventListener('click', function() {
let uList = document.getElementsByClassName('userN');
if (uList.length > 0) {
chrome.storage.local.get(['eraseList'], function(data){
let eraseList = data['eraseList'];
for(let idx=uList.length - 1; idx>=0; idx--){
if(uList[idx].checked){
eraseList.splice(idx, 1);
uList[idx].parentElement.parentElement.remove();
}
}
chrome.storage.local.set({
'eraseList': eraseList
});
});
}
});
// 유저 모두 선택/해제
document.getElementById('selectAllUser').addEventListener('click', function() {
const uList = document.getElementsByClassName('userN');
if (uList.length > 0) {
for (const userElement of uList) {
userElement.checked = !userElement.checked;
}
}
});
// 호스트 주소 모두 선택/해제
document.getElementById('selectAllSite').addEventListener('click', function() {
const uList = document.getElementsByClassName('hostN');
if (uList.length > 0) {
for (const hostElement of uList) {
hostElement.checked = !hostElement.checked;
}
}
});
// 코드 적용 가능한 카페 리스트에 현재 카페 주소 추가하기
document.getElementById('nowCafeAddButton').addEventListener('click', function() {
chrome.tabs.query({active: true, lastFocusedWindow: true}, tabs => {
if(tabs[0].url.includes('cafe.naver.com')) {
addCafeName(tabs[0].url.split('/').at(3));
} else {
showToastMessage('네이버 카페 주소가 아닙니다!');
}
});
});
// 코드 적용 가능한 카페 리스트에 입려한 카페 주소 추가하기
document.getElementById('cafeAddButton').addEventListener('click', function() {
addCafeName(document.querySelector('#cafeName').value);
});
// checkBox로 선택된 카페를 코드 적용 가능한 카페 리스트에서 제거 하기
document.getElementById('eraseSite').addEventListener('click', function() {
let uList = document.getElementsByClassName('hostN');
if(uList.length > 0){
chrome.storage.local.get(['hostNameList'], function(data){
let hostNameList = data['hostNameList'];
for(let idx=uList.length - 1; idx>=0; idx--){
if(uList[idx].checked){
hostNameList.splice(idx, 1);
uList[idx].parentElement.parentElement.remove();
}
}
chrome.storage.local.set({
'hostNameList': hostNameList
});
});
}
});
// 현재 보고 있는 게시물 북마크 추가
document.getElementById('addBookMark').addEventListener('click', function() {
chrome.runtime.sendMessage({ msg: 'addBookMark'}, (response) => {
console.log("result is " + response.responseMsg);
if (response.responseMsg === true) {
showToastMessage("'당근나라' 폴더에 추가되었습니다!");
} else {
showToastMessage("북마크 추가가 되지 않았습니다.");
}
});
})
window.onload = makeTable;