Initial commit: OP Extension Chrome Extension
This commit is contained in:
96
popup.js
Normal file
96
popup.js
Normal file
@@ -0,0 +1,96 @@
|
||||
// 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);
|
||||
}
|
||||
Reference in New Issue
Block a user