-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpopup.js
131 lines (109 loc) · 4.92 KB
/
popup.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
document.addEventListener('DOMContentLoaded', async () => {
const sessionSelect = document.getElementById('sessionSelect');
const sessionContent = document.getElementById('sessionContent');
const { sessions } = await chrome.storage.local.get(['sessions']);
const sessionNames = Object.keys(sessions || {});
sessionNames.forEach(sessionName => {
const option = document.createElement('option');
option.value = sessionName;
option.textContent = sessionName;
sessionSelect.appendChild(option);
});
sessionSelect.addEventListener('change', () => {
const selectedSession = sessionSelect.value;
displaySessionContent(selectedSession);
});
function displaySessionContent(sessionName) {
sessionContent.innerHTML = '';
const contentList = sessions[sessionName] || [];
contentList.forEach((content, index) => {
const contentItem = document.createElement('div');
contentItem.className = 'session-item';
contentItem.textContent = content;
const deleteBtn = document.createElement('button');
deleteBtn.textContent = 'Delete';
deleteBtn.className = 'delete-btn';
deleteBtn.addEventListener('click', async () => {
contentList.splice(index, 1);
await chrome.storage.local.set({ sessions });
displaySessionContent(sessionName);
});
contentItem.appendChild(deleteBtn);
sessionContent.appendChild(contentItem);
});
}
if (sessionNames.length > 0) {
displaySessionContent(sessionNames[0]);
}
document.getElementById('newSession').addEventListener('click', async () => {
const sessionName = prompt('请输入新的会话名称:');
if (sessionName && !sessions[sessionName]) {
sessions[sessionName] = [];
await chrome.storage.local.set({ sessions });
const option = document.createElement('option');
option.value = sessionName;
option.textContent = sessionName;
sessionSelect.appendChild(option);
sessionSelect.value = sessionName;
displaySessionContent(sessionName);
} else if (sessions[sessionName]) {
alert('该会话名称已存在!');
}
});
document.getElementById('deleteSession').addEventListener('click', async () => {
const selectedSession = sessionSelect.value;
// 不允许删除default会话
if (selectedSession === 'default') {
alert('不允许删除默认会话!');
return;
}
if (selectedSession && confirm(`确定要删除会话 "${selectedSession}" 吗?`)) {
delete sessions[selectedSession];
await chrome.storage.local.set({ sessions });
sessionSelect.remove(sessionSelect.selectedIndex);
if (sessionSelect.options.length > 0) {
displaySessionContent(sessionSelect.options[0].value);
} else {
sessionContent.innerHTML = '';
}
}
});
document.getElementById('renameSession').addEventListener('click', async () => {
const selectedSession = sessionSelect.value;
// 不允许重命名default会话
if (selectedSession === 'default') {
alert('不允许重命名默认会话!');
return;
}
const newName = prompt('请输入新的会话名称:', selectedSession);
if (newName && newName !== selectedSession && !sessions[newName]) {
sessions[newName] = sessions[selectedSession];
delete sessions[selectedSession];
await chrome.storage.local.set({ sessions });
const selectedOption = sessionSelect.options[sessionSelect.selectedIndex];
selectedOption.value = newName;
selectedOption.textContent = newName;
displaySessionContent(newName);
} else if (sessions[newName]) {
alert('该会话名称已存在!');
}
});
document.getElementById('openChat').addEventListener('click', function() {
// 保存当前会话ID
chrome.storage.local.set({ 'currentSession': document.getElementById('sessionSelect').value }, function() {
// 使用 chrome.windows.create 在新窗口中打开聊天界面
chrome.windows.create({
url: chrome.runtime.getURL('chat.html'),
type: 'popup',
width: 800,
height: 600,
left: (screen.width - 800) / 2,
top: (screen.height - 600) / 2
});
});
});
document.getElementById('openSettings').addEventListener('click', function(e) {
e.preventDefault();
chrome.runtime.openOptionsPage();
});
});