96 lines
2.8 KiB
JavaScript
96 lines
2.8 KiB
JavaScript
// check for auto-detected username
|
|
chrome.tabs.query({active: true, currentWindow: true}, (tabs) => {
|
|
if (tabs[0] && tabs[0].url && tabs[0].url.includes('openfront.io')) {
|
|
chrome.scripting.executeScript({
|
|
target: {tabId: tabs[0].id},
|
|
func: () => localStorage.getItem('username')
|
|
}, (results) => {
|
|
if (results && results[0] && results[0].result) {
|
|
document.getElementById('autoDetected').textContent = `detected: ${results[0].result}`;
|
|
}
|
|
});
|
|
}
|
|
});
|
|
|
|
chrome.storage.sync.get(['serverUrl', 'roomId', 'playerName', 'enabled'], (data) => {
|
|
// set defaults
|
|
const serverUrl = data.serverUrl || 'wss://op.lopensed.dev';
|
|
const roomId = data.roomId || 'default';
|
|
|
|
document.getElementById('serverUrl').value = serverUrl;
|
|
document.getElementById('roomId').value = roomId;
|
|
if (data.playerName) document.getElementById('playerName').value = data.playerName;
|
|
|
|
// auto-save defaults and enable if not already done
|
|
if (!data.enabled || !data.serverUrl || !data.roomId) {
|
|
chrome.storage.sync.set({
|
|
serverUrl: serverUrl,
|
|
roomId: roomId,
|
|
enabled: true
|
|
});
|
|
}
|
|
|
|
// ping server for debug
|
|
pingServer(serverUrl);
|
|
});
|
|
|
|
function pingServer(url) {
|
|
const debug = document.getElementById('debug');
|
|
debug.textContent = 'checking server...';
|
|
debug.className = 'debug checking';
|
|
|
|
const ws = new WebSocket(url);
|
|
|
|
const timeout = setTimeout(() => {
|
|
ws.close();
|
|
debug.textContent = 'server: timeout';
|
|
debug.className = 'debug error';
|
|
}, 5000);
|
|
|
|
ws.onopen = () => {
|
|
clearTimeout(timeout);
|
|
debug.textContent = 'server: ok';
|
|
debug.className = 'debug ok';
|
|
setTimeout(() => ws.close(), 100);
|
|
};
|
|
|
|
ws.onerror = () => {
|
|
clearTimeout(timeout);
|
|
debug.textContent = 'server: unreachable';
|
|
debug.className = 'debug error';
|
|
};
|
|
}
|
|
|
|
document.getElementById('saveBtn').addEventListener('click', () => {
|
|
const serverUrl = document.getElementById('serverUrl').value.trim() || 'wss://op.lopensed.dev';
|
|
const roomId = document.getElementById('roomId').value.trim() || 'default';
|
|
const playerName = document.getElementById('playerName').value.trim();
|
|
|
|
chrome.storage.sync.set({
|
|
serverUrl: serverUrl,
|
|
roomId: roomId,
|
|
playerName: playerName,
|
|
enabled: true
|
|
}, () => {
|
|
showStatus('saved - refresh page', 'success');
|
|
});
|
|
});
|
|
|
|
document.getElementById('disableBtn').addEventListener('click', () => {
|
|
chrome.storage.sync.set({
|
|
enabled: false
|
|
}, () => {
|
|
showStatus('disabled - refresh page', 'success');
|
|
});
|
|
});
|
|
|
|
function showStatus(message, type) {
|
|
const status = document.getElementById('status');
|
|
status.textContent = message;
|
|
status.className = `status ${type}`;
|
|
status.style.display = 'block';
|
|
|
|
setTimeout(() => {
|
|
status.style.display = 'none';
|
|
}, 3000);
|
|
} |