fix: add null/HTTP checks to tag viewer API calls
- browseISO: resp.ok + data null check before accessing data.error - selectPartition: resp.ok + data null check - viewVolumeTags: resp.ok + data null check - Fixed v.Name → v.name (JSON keys are lowercase from volInfo tags) Prevents 'Cannot read properties of null (reading error)'
This commit is contained in:
+19
-7
@@ -428,9 +428,13 @@ async function browseISO() {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
const resp = await fetch(`${API}/disk/partitions?iso=${encodeURIComponent(iso)}`)
|
const resp = await fetch(`${API}/disk/partitions?iso=${encodeURIComponent(iso)}`)
|
||||||
|
if (!resp.ok) {
|
||||||
|
status.textContent = 'HTTP ' + resp.status
|
||||||
|
return
|
||||||
|
}
|
||||||
const data = await resp.json()
|
const data = await resp.json()
|
||||||
if (data.error) {
|
if (!data || data.error) {
|
||||||
status.textContent = data.error
|
status.textContent = (data && data.error) || 'server error'
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
status.textContent = data.length + ' partition' + (data.length === 1 ? '' : 's')
|
status.textContent = data.length + ' partition' + (data.length === 1 ? '' : 's')
|
||||||
@@ -454,9 +458,13 @@ async function selectPartition(iso, part) {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
const resp = await fetch(`${API}/disk/volumes?iso=${encodeURIComponent(iso)}&part=${encodeURIComponent(part)}`)
|
const resp = await fetch(`${API}/disk/volumes?iso=${encodeURIComponent(iso)}&part=${encodeURIComponent(part)}`)
|
||||||
|
if (!resp.ok) {
|
||||||
|
volsEl.innerHTML = '<span class="no-files">HTTP ' + resp.status + '</span>'
|
||||||
|
return
|
||||||
|
}
|
||||||
const data = await resp.json()
|
const data = await resp.json()
|
||||||
if (data.error) {
|
if (!data || data.error) {
|
||||||
volsEl.innerHTML = '<span class="no-files">' + data.error + '</span>'
|
volsEl.innerHTML = '<span class="no-files">' + (data && data.error ? data.error : 'server error') + '</span>'
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (!Array.isArray(data) || data.length === 0) {
|
if (!Array.isArray(data) || data.length === 0) {
|
||||||
@@ -464,7 +472,7 @@ async function selectPartition(iso, part) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
volsEl.innerHTML = data.map(v => `
|
volsEl.innerHTML = data.map(v => `
|
||||||
<div class="vol-item" data-action="tag-vol" data-iso="${esc(iso)}" data-part="${esc(part)}" data-vol="${esc(v.Name)}">${esc(v.Name)}</div>
|
<div class="vol-item" data-action="tag-vol" data-iso="${esc(iso)}" data-part="${esc(part)}" data-vol="${esc(v.name)}">${esc(v.name)}</div>
|
||||||
`).join('')
|
`).join('')
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
volsEl.innerHTML = 'Failed: ' + e.message
|
volsEl.innerHTML = 'Failed: ' + e.message
|
||||||
@@ -480,9 +488,13 @@ async function viewVolumeTags(iso, part, vol) {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
const resp = await fetch(`${API}/volume/tags?iso=${encodeURIComponent(iso)}&part=${encodeURIComponent(part)}&vol=${encodeURIComponent(vol)}`)
|
const resp = await fetch(`${API}/volume/tags?iso=${encodeURIComponent(iso)}&part=${encodeURIComponent(part)}&vol=${encodeURIComponent(vol)}`)
|
||||||
|
if (!resp.ok) {
|
||||||
|
detailEl.innerHTML = '<span class="no-files">HTTP ' + resp.status + '</span>'
|
||||||
|
return
|
||||||
|
}
|
||||||
const data = await resp.json()
|
const data = await resp.json()
|
||||||
if (data.error) {
|
if (!data || data.error) {
|
||||||
detailEl.innerHTML = '<span class="no-files">' + data.error + '</span>'
|
detailEl.innerHTML = '<span class="no-files">' + (data && data.error ? data.error : 'server error') + '</span>'
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (!Array.isArray(data) || data.length === 0) {
|
if (!Array.isArray(data) || data.length === 0) {
|
||||||
|
|||||||
Reference in New Issue
Block a user