84 lines
4.1 KiB
JavaScript
84 lines
4.1 KiB
JavaScript
// popup.js — Settings UI for Claude Arabic Voice
|
|
|
|
document.addEventListener('DOMContentLoaded', () => {
|
|
// ─── Load Settings ───────────────────────────────────────────────────────
|
|
chrome.storage.sync.get(
|
|
['language', 'autoSend', 'useGemini', 'geminiApiKey', 'geminiModel'],
|
|
(data) => {
|
|
if (data.language) document.getElementById('language').value = data.language;
|
|
if (data.autoSend) document.getElementById('autoSend').checked = data.autoSend;
|
|
if (data.useGemini) {
|
|
document.getElementById('useGemini').checked = data.useGemini;
|
|
document.getElementById('geminiSettings').style.display = 'block';
|
|
}
|
|
if (data.geminiApiKey) document.getElementById('geminiApiKey').value = data.geminiApiKey;
|
|
}
|
|
);
|
|
|
|
// ─── Toggle Gemini Settings ──────────────────────────────────────────────
|
|
document.getElementById('useGemini').addEventListener('change', (e) => {
|
|
document.getElementById('geminiSettings').style.display = e.target.checked ? 'block' : 'none';
|
|
});
|
|
|
|
// ─── Save Settings ───────────────────────────────────────────────────────
|
|
document.getElementById('saveBtn').addEventListener('click', () => {
|
|
const settings = {
|
|
language: document.getElementById('language').value,
|
|
autoSend: document.getElementById('autoSend').checked,
|
|
useGemini: document.getElementById('useGemini').checked,
|
|
geminiApiKey: document.getElementById('geminiApiKey').value.trim(),
|
|
geminiModel: 'gemini-flash-lite-latest'
|
|
};
|
|
|
|
chrome.storage.sync.set(settings, () => {
|
|
const message = document.getElementById('saveMessage');
|
|
message.textContent = '✅ تم حفظ الإعدادات بنجاح!';
|
|
message.style.color = '#00c853';
|
|
setTimeout(() => {
|
|
message.textContent = '';
|
|
}, 2500);
|
|
|
|
// Notify content script of settings change
|
|
chrome.tabs.query({ url: 'https://claude.ai/*' }, (tabs) => {
|
|
tabs.forEach(tab => {
|
|
chrome.tabs.sendMessage(tab.id, {
|
|
type: 'SETTINGS_UPDATED',
|
|
payload: settings
|
|
}).catch(() => { /* tab may not have content script */ });
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
// ─── Update Status ──────────────────────────────────────────────────────
|
|
function updateStatus() {
|
|
const statusDot = document.getElementById('statusDot');
|
|
const statusText = document.getElementById('statusText');
|
|
|
|
chrome.tabs.query({ url: 'https://claude.ai/*' }, (tabs) => {
|
|
if (tabs.length === 0) {
|
|
statusDot.className = 'status-dot offline';
|
|
statusText.textContent = '🔴 Claude.ai غير مفتوح';
|
|
return;
|
|
}
|
|
|
|
// Check if content script is loaded
|
|
chrome.tabs.sendMessage(tabs[0].id, { type: 'GET_STATUS' }, (response) => {
|
|
if (chrome.runtime.lastError) {
|
|
statusDot.className = 'status-dot offline';
|
|
statusText.textContent = '🔴 الإضافة غير نشطة - أعد تحميل الصفحة';
|
|
} else if (response && response.isListening) {
|
|
statusDot.className = 'status-dot listening';
|
|
statusText.textContent = '🔴 جارٍ الاستماع...';
|
|
} else {
|
|
statusDot.className = 'status-dot online';
|
|
statusText.textContent = '✅ جاهز للاستخدام';
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
updateStatus();
|
|
setInterval(updateStatus, 3000);
|
|
});
|