mirror of
https://github.com/imgfloat/server.git
synced 2026-03-22 23:10:38 +00:00
Cleanup chanenls
This commit is contained in:
@@ -80,7 +80,7 @@
|
|||||||
|
|
||||||
## Frontend Notes
|
## Frontend Notes
|
||||||
- Broadcast client code lives in `src/main/resources/static/js/broadcast/` (renderer, workers, runtime helpers). When editing overlay scripts, keep worker changes in `script-worker.js` and keep main page logic in `renderer.js`.
|
- Broadcast client code lives in `src/main/resources/static/js/broadcast/` (renderer, workers, runtime helpers). When editing overlay scripts, keep worker changes in `script-worker.js` and keep main page logic in `renderer.js`.
|
||||||
- Admin/dashboard JS modules (`customAssets.js`, `settings.js`, `channels.js`, etc.) are plain ES modules bundled through Thymeleaf templates, so keep related CSS/HTML under `static/css` and `templates`.
|
- Admin/dashboard JS modules (`customAssets.js`, `settings.js`, etc.) are plain ES modules bundled through Thymeleaf templates, so keep related CSS/HTML under `static/css` and `templates`.
|
||||||
- Templates render dynamic data via controllers such as `ViewController`, which also injects `uploadLimitBytes`, version info (`VersionService`), and feature flags (staging banner, docs URL, commit chip wrapped in `GitInfoService`/`GithubReleaseService` values).
|
- Templates render dynamic data via controllers such as `ViewController`, which also injects `uploadLimitBytes`, version info (`VersionService`), and feature flags (staging banner, docs URL, commit chip wrapped in `GitInfoService`/`GithubReleaseService` values).
|
||||||
|
|
||||||
## Testing & Validation
|
## Testing & Validation
|
||||||
|
|||||||
@@ -1,10 +0,0 @@
|
|||||||
const channelNameInput = document.getElementById("channel-search");
|
|
||||||
|
|
||||||
function onOpenOverlayButtonClick(event) {
|
|
||||||
event.preventDefault();
|
|
||||||
const channelName = channelNameInput.value.trim().toLowerCase();
|
|
||||||
if (channelName) {
|
|
||||||
const overlayUrl = `/view/${channelName}/broadcast`;
|
|
||||||
window.location.href = overlayUrl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -22,7 +22,6 @@ export function createCustomAssetModal({
|
|||||||
const logoPreview = document.getElementById("custom-asset-logo-preview");
|
const logoPreview = document.getElementById("custom-asset-logo-preview");
|
||||||
const logoClearButton = document.getElementById("custom-asset-logo-clear");
|
const logoClearButton = document.getElementById("custom-asset-logo-clear");
|
||||||
const userSourceTextArea = document.getElementById("custom-asset-code");
|
const userSourceTextArea = document.getElementById("custom-asset-code");
|
||||||
let codeEditor = null;
|
|
||||||
const formErrorWrapper = document.getElementById("custom-asset-error");
|
const formErrorWrapper = document.getElementById("custom-asset-error");
|
||||||
const jsErrorTitle = document.getElementById("js-error-title");
|
const jsErrorTitle = document.getElementById("js-error-title");
|
||||||
const jsErrorDetails = document.getElementById("js-error-details");
|
const jsErrorDetails = document.getElementById("js-error-details");
|
||||||
@@ -34,7 +33,7 @@ export function createCustomAssetModal({
|
|||||||
const allowedDomainInput = document.getElementById("custom-asset-allowed-domain");
|
const allowedDomainInput = document.getElementById("custom-asset-allowed-domain");
|
||||||
const allowedDomainList = document.getElementById("custom-asset-allowed-domain-list");
|
const allowedDomainList = document.getElementById("custom-asset-allowed-domain-list");
|
||||||
const allowedDomainAddButton = document.getElementById("custom-asset-allowed-domain-add");
|
const allowedDomainAddButton = document.getElementById("custom-asset-allowed-domain-add");
|
||||||
const allowedDomainHint = document.getElementById("custom-asset-allowed-domain-hint");
|
let codeEditor = null;
|
||||||
let currentAssetId = null;
|
let currentAssetId = null;
|
||||||
let pendingLogoFile = null;
|
let pendingLogoFile = null;
|
||||||
let logoRemoved = false;
|
let logoRemoved = false;
|
||||||
@@ -923,16 +922,6 @@ export function createCustomAssetModal({
|
|||||||
content.appendChild(title);
|
content.appendChild(title);
|
||||||
content.appendChild(description);
|
content.appendChild(description);
|
||||||
content.appendChild(meta);
|
content.appendChild(meta);
|
||||||
if (Array.isArray(entry.allowedDomains) && entry.allowedDomains.length) {
|
|
||||||
const domains = document.createElement("small");
|
|
||||||
domains.className = "marketplace-domains";
|
|
||||||
const summary =
|
|
||||||
entry.allowedDomains.length > 3
|
|
||||||
? `${entry.allowedDomains.slice(0, 3).join(", ")}, …`
|
|
||||||
: entry.allowedDomains.join(", ");
|
|
||||||
domains.textContent = `Allowed domains: ${summary}`;
|
|
||||||
content.appendChild(domains);
|
|
||||||
}
|
|
||||||
|
|
||||||
const actions = document.createElement("div");
|
const actions = document.createElement("div");
|
||||||
actions.className = "marketplace-actions";
|
actions.className = "marketplace-actions";
|
||||||
@@ -978,7 +967,7 @@ export function createCustomAssetModal({
|
|||||||
}
|
}
|
||||||
const target = marketplaceChannelSelect?.value || broadcaster;
|
const target = marketplaceChannelSelect?.value || broadcaster;
|
||||||
const allowedDomains = Array.isArray(entry.allowedDomains) ? entry.allowedDomains.filter(Boolean) : [];
|
const allowedDomains = Array.isArray(entry.allowedDomains) ? entry.allowedDomains.filter(Boolean) : [];
|
||||||
confirmDomainImport(allowedDomains, target)
|
confirmDomainImport(allowedDomains)
|
||||||
.then((confirmed) => {
|
.then((confirmed) => {
|
||||||
if (!confirmed) {
|
if (!confirmed) {
|
||||||
return null;
|
return null;
|
||||||
@@ -1176,7 +1165,7 @@ export function createCustomAssetModal({
|
|||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
function confirmDomainImport(domains, target) {
|
function confirmDomainImport(domains) {
|
||||||
if (!Array.isArray(domains) || domains.length === 0) {
|
if (!Array.isArray(domains) || domains.length === 0) {
|
||||||
return Promise.resolve(true);
|
return Promise.resolve(true);
|
||||||
}
|
}
|
||||||
@@ -1187,14 +1176,14 @@ export function createCustomAssetModal({
|
|||||||
overlay.setAttribute("aria-modal", "true");
|
overlay.setAttribute("aria-modal", "true");
|
||||||
|
|
||||||
const dialog = document.createElement("div");
|
const dialog = document.createElement("div");
|
||||||
dialog.className = "modal-card";
|
dialog.className = "modal-inner small";
|
||||||
|
|
||||||
const title = document.createElement("h3");
|
const title = document.createElement("h3");
|
||||||
title.textContent = "Allow external domains?";
|
title.textContent = "Allow external domains?";
|
||||||
dialog.appendChild(title);
|
dialog.appendChild(title);
|
||||||
|
|
||||||
const copy = document.createElement("p");
|
const copy = document.createElement("p");
|
||||||
copy.textContent = `This script requests network access to the following domains on ${target}:`;
|
copy.textContent = `This script requests network access to the following domains:`;
|
||||||
dialog.appendChild(copy);
|
dialog.appendChild(copy);
|
||||||
|
|
||||||
const list = document.createElement("ul");
|
const list = document.createElement("ul");
|
||||||
@@ -1207,7 +1196,7 @@ export function createCustomAssetModal({
|
|||||||
dialog.appendChild(list);
|
dialog.appendChild(list);
|
||||||
|
|
||||||
const buttons = document.createElement("div");
|
const buttons = document.createElement("div");
|
||||||
buttons.className = "modal-actions";
|
buttons.className = "form-actions";
|
||||||
const cancel = document.createElement("button");
|
const cancel = document.createElement("button");
|
||||||
cancel.type = "button";
|
cancel.type = "button";
|
||||||
cancel.className = "secondary";
|
cancel.className = "secondary";
|
||||||
|
|||||||
Reference in New Issue
Block a user