Release 1.5.3

This commit is contained in:
2026-07-25 15:11:41 +01:00
parent 9ee938fd2f
commit 0e89892c94
89 changed files with 7660 additions and 542 deletions
+45 -13
View File
@@ -51,6 +51,32 @@ function createUploadSyncService(options) {
return value;
}
function getUploadRelativePath(uploadPath) {
const value = normalizeUploadReference(uploadPath);
if (!value) {
return null;
}
return value.replace(/^\/media\//, '');
}
function resolveUploadFilePath(uploadDir, uploadPath) {
const relativePath = getUploadRelativePath(uploadPath);
if (!relativePath) {
return null;
}
const normalizedUploadDir = normalizeUploadRoot(uploadDir);
if (!normalizedUploadDir) {
return null;
}
if (relativePath.startsWith('uploads/')) {
return path.join(normalizedUploadDir, relativePath.slice('uploads/'.length));
}
return path.join(path.dirname(normalizedUploadDir), relativePath);
}
function collectUploadReferencesFromValue(value, refs) {
if (!value) {
return refs;
@@ -134,7 +160,7 @@ function createUploadSyncService(options) {
continue;
}
const filePath = path.join(uploadDir, path.basename(uploadPath));
const filePath = resolveUploadFilePath(uploadDir, uploadPath);
try {
await fs.promises.unlink(filePath);
} catch (error) {
@@ -174,7 +200,7 @@ function createUploadSyncService(options) {
return null;
}
const data = await response.json();
const playerUploadDir = data && data.mediaDir ? normalizeUploadRoot(data.mediaDir) : null;
const playerUploadDir = data && (data.uploadDir || data.mediaDir) ? normalizeUploadRoot(data.uploadDir || data.mediaDir) : null;
if (!playerUploadDir) {
return null;
}
@@ -232,8 +258,11 @@ function createUploadSyncService(options) {
return false;
}
const filename = path.basename(uploadPath);
const sourcePath = path.join(localUploadDir, filename);
const relativePath = getUploadRelativePath(uploadPath);
const sourcePath = resolveUploadFilePath(localUploadDir, uploadPath);
if (!relativePath || !sourcePath) {
return false;
}
let fileBuffer = null;
try {
fileBuffer = await fs.promises.readFile(sourcePath);
@@ -247,10 +276,10 @@ function createUploadSyncService(options) {
try {
const authHeaders = createRequestAuthHeaders({
method: 'PUT',
pathname: `/api/media/${encodeURIComponent(filename)}`,
pathname: `/api/media/${encodeURIComponent(relativePath)}`,
body: fileBuffer
});
const response = await fetch(`${playerInternalBaseUrl}/api/media/${encodeURIComponent(filename)}`, {
const response = await fetch(`${playerInternalBaseUrl}/api/media/${encodeURIComponent(relativePath)}`, {
method: 'PUT',
headers: {
'Content-Type': 'application/octet-stream',
@@ -259,12 +288,12 @@ function createUploadSyncService(options) {
body: fileBuffer
});
if (!response.ok) {
console.warn('Unable to sync upload to player:', filename, response.status, response.statusText);
console.warn('Unable to sync upload to player:', relativePath, response.status, response.statusText);
return false;
}
return true;
} catch (error) {
console.warn('Unable to sync upload to player:', filename, error);
console.warn('Unable to sync upload to player:', relativePath, error);
return false;
}
}
@@ -274,13 +303,16 @@ function createUploadSyncService(options) {
return false;
}
const filename = path.basename(uploadPath);
const relativePath = getUploadRelativePath(uploadPath);
if (!relativePath) {
return false;
}
try {
const authHeaders = createRequestAuthHeaders({
method: 'DELETE',
pathname: `/api/media/${encodeURIComponent(filename)}`
pathname: `/api/media/${encodeURIComponent(relativePath)}`
});
const response = await fetch(`${playerInternalBaseUrl}/api/media/${encodeURIComponent(filename)}`, {
const response = await fetch(`${playerInternalBaseUrl}/api/media/${encodeURIComponent(relativePath)}`, {
method: 'DELETE',
headers: {
Accept: 'application/json',
@@ -288,12 +320,12 @@ function createUploadSyncService(options) {
}
});
if (!response.ok && response.status !== 404) {
console.warn('Unable to remove upload from player:', filename, response.status, response.statusText);
console.warn('Unable to remove upload from player:', relativePath, response.status, response.statusText);
return false;
}
return true;
} catch (error) {
console.warn('Unable to remove upload from player:', filename, error);
console.warn('Unable to remove upload from player:', relativePath, error);
return false;
}
}