BungeeCord-Chrome/popup.js aktualisiert
This commit is contained in:
@@ -110,13 +110,15 @@ function renderServerList() {
|
||||
|
||||
const meta = document.createElement('div');
|
||||
meta.className = 'meta';
|
||||
const name = document.createElement('div'); name.className = 'name';
|
||||
const name = document.createElement('div');
|
||||
name.className = 'name';
|
||||
name.textContent = s.name || '(Kein Name)';
|
||||
|
||||
let listUrl = s.url || (s.wpSite ? s.wpSite + ' (WP)' : '');
|
||||
listUrl = listUrl.replace(':9191', '');
|
||||
|
||||
const url = document.createElement('div'); url.className = 'url';
|
||||
const url = document.createElement('div');
|
||||
url.className = 'url';
|
||||
url.textContent = listUrl;
|
||||
meta.append(name, url);
|
||||
|
||||
@@ -202,7 +204,9 @@ function updateDetailForServer(srv, force = false) {
|
||||
const playersCount = Array.isArray(d.players) ? d.players.length : (typeof d.players === 'number' ? d.players : 0);
|
||||
const maxPlayers = d.max_players;
|
||||
let newPlayersText = String(playersCount);
|
||||
if (maxPlayers) newPlayersText += ` / ${maxPlayers}`;
|
||||
if (maxPlayers && maxPlayers !== '-1') {
|
||||
newPlayersText += ` / ${maxPlayers}`;
|
||||
}
|
||||
|
||||
if (force || detailPlayers.textContent !== newPlayersText) {
|
||||
detailPlayers.textContent = newPlayersText;
|
||||
@@ -218,7 +222,7 @@ function updateDetailForServer(srv, force = false) {
|
||||
}
|
||||
|
||||
const currentPlayers = Array.isArray(d.players) ? d.players : [];
|
||||
const prevPlayers = (prevSt && Array.isArray(prevSt.data.players)) ? prevSt.data.players : [];
|
||||
const prevPlayers = (prevSt && Array.isArray(prevSt.data?.players)) ? prevSt.data.players : [];
|
||||
|
||||
let playersChanged = false;
|
||||
if (force) {
|
||||
@@ -245,18 +249,27 @@ function updatePlayerList(players) {
|
||||
for (const p of players) {
|
||||
const li = document.createElement('li');
|
||||
const name = typeof p === 'object' ? p.name || p.username || p.player || '' : String(p);
|
||||
if (p.avatar) {
|
||||
|
||||
if (typeof p === 'object' && p.avatar) {
|
||||
const img = document.createElement('img');
|
||||
img.src = p.avatar;
|
||||
img.className = 'player-avatar';
|
||||
img.title = name;
|
||||
li.appendChild(img);
|
||||
} else {
|
||||
// Falls kein Avatar vorhanden, generiere einen von mc-heads.net
|
||||
const img = document.createElement('img');
|
||||
img.src = `https://mc-heads.net/avatar/${encodeURIComponent(name)}/32`;
|
||||
img.className = 'player-avatar';
|
||||
img.title = name;
|
||||
li.appendChild(img);
|
||||
}
|
||||
|
||||
detailPlayerList.appendChild(li);
|
||||
}
|
||||
}
|
||||
|
||||
// --- Update List (Fix: Syntaxfehler behoben) ---
|
||||
// --- Update Server List Statuses ---
|
||||
function updateServerListStatuses() {
|
||||
const items = serversContainer.querySelectorAll('.server-item');
|
||||
items.forEach(item => {
|
||||
@@ -280,7 +293,6 @@ function updateServerListStatuses() {
|
||||
item.statusBubble.style.backgroundColor = 'var(--online)';
|
||||
} else {
|
||||
item.statusBubble.textContent = 'Offline';
|
||||
// Klammerfehler korrigiert: ')' zu '}'
|
||||
item.statusBubble.style.backgroundColor = 'var(--offline)';
|
||||
}
|
||||
|
||||
@@ -294,10 +306,12 @@ async function handleAdd() {
|
||||
const url = inputUrl.value.trim();
|
||||
const wpSite = inputWpSite.value.trim();
|
||||
const wpServerId = inputWpServerId.value.trim();
|
||||
|
||||
if (!url && !wpSite) {
|
||||
alert('Bitte URL oder WP Site angeben');
|
||||
return;
|
||||
}
|
||||
|
||||
const s = {
|
||||
id: uid(),
|
||||
name: name || url || wpSite,
|
||||
@@ -305,9 +319,15 @@ async function handleAdd() {
|
||||
wpSite: wpSite || null,
|
||||
wpServerId: wpServerId || null
|
||||
};
|
||||
|
||||
servers.push(s);
|
||||
await saveServersToStorage();
|
||||
inputName.value=''; inputUrl.value=''; inputWpSite.value=''; inputWpServerId.value='';
|
||||
|
||||
inputName.value = '';
|
||||
inputUrl.value = '';
|
||||
inputWpSite.value = '';
|
||||
inputWpServerId.value = '';
|
||||
|
||||
renderServerList();
|
||||
}
|
||||
|
||||
@@ -315,12 +335,17 @@ async function handleEdit() {
|
||||
if (!selectedId) return;
|
||||
const srv = servers.find(s => s.id === selectedId);
|
||||
if (!srv) return;
|
||||
|
||||
const newName = prompt('Name:', srv.name) || srv.name;
|
||||
const newUrl = prompt('URL:', srv.url || '') || srv.url;
|
||||
const newWpSite = prompt('WP Site:', srv.wpSite || '') || srv.wpSite;
|
||||
const newWpServerId = prompt('WP Server ID:', srv.wpServerId || '') || srv.wpServerId;
|
||||
srv.name=newName.trim(); srv.url=newUrl.trim();
|
||||
srv.wpSite=newWpSite.trim(); srv.wpServerId=newWpServerId.trim();
|
||||
|
||||
srv.name = newName.trim();
|
||||
srv.url = newUrl.trim();
|
||||
srv.wpSite = newWpSite.trim();
|
||||
srv.wpServerId = newWpServerId.trim();
|
||||
|
||||
await saveServersToStorage();
|
||||
renderServerList();
|
||||
renderDetail(selectedId);
|
||||
@@ -329,18 +354,24 @@ async function handleEdit() {
|
||||
async function handleDelete() {
|
||||
if (!selectedId) return;
|
||||
if (!confirm('Server wirklich löschen?')) return;
|
||||
|
||||
servers = servers.filter(s => s.id !== selectedId);
|
||||
selectedId = null;
|
||||
|
||||
await saveServersToStorage();
|
||||
renderServerList();
|
||||
renderDetail(null);
|
||||
}
|
||||
|
||||
async function manualRefresh() {
|
||||
try { chrome.runtime.sendMessage({ cmd: 'refreshNow' }); } catch(e) {}
|
||||
try {
|
||||
chrome.runtime.sendMessage({ cmd: 'refreshNow' });
|
||||
} catch(e) {
|
||||
console.error('Refresh fehlgeschlagen:', e);
|
||||
}
|
||||
}
|
||||
|
||||
// --- Listener ---
|
||||
// --- Storage Listener ---
|
||||
chrome.storage.onChanged.addListener((changes, area) => {
|
||||
if (area === 'local' && changes.serverStatuses) {
|
||||
statuses = changes.serverStatuses.newValue || {};
|
||||
|
||||
Reference in New Issue
Block a user