Advertisement Upload

{isAdbConnected ? 'Machine connected' : 'Machine offline'} {#if !isAdbConnected} {/if} {COUNTRIES.find((c) => c.value === selectedCountry)?.label || 'Country'} {#each COUNTRIES as country} {country.label} {/each}
{#if pushingToMachine}
Pushing {pushProgress.name} · {pushProgress.percent}%
{/if}

Slots

Choose a video per slot — it's renamed to the slot's fixed name on upload.

{#if onServerCount > 0} {onServerCount} on server {/if}
{#each slots as slot (slot.index)}
{String(slot.index).padStart(2, '0')}
{#if slot.preview} {#if slot.status === 'uploading'}
{:else if slot.status === 'success'}
{/if} {:else} {/if}

{slot.name}

{#if slot.file}
{#if !slot.dimChecked} Reading… {:else if slot.dimOk} {slot.width}×{slot.height} {:else} {slot.width ?? '?'}×{slot.height ?? '?'} · exp {MENU_SPEC.width}×{MENU_SPEC.height} {/if} {formatBytes(slot.file.size)}
{#if slot.error}

{slot.error}

{/if} {:else}

Empty · no file selected

{/if} {#if serverFilesByName[slot.name] !== undefined}
On server · {formatBytes(serverFilesByName[slot.name])}
{/if}
{#if slot.file} {#if slot.status !== 'uploading'} {/if} {/if}
{/each}

Videos on server

Currently on the FTP folder for {selectedCountry} — loaded automatically to verify.

{#if !serverVideosLoaded}
{:else if serverVideos.length === 0}

No videos found on the server.

{:else}
{#each serverVideos as video (video.name)}
{#if videoBlobUrls[video.name]} {:else} {/if}
{video.name} {formatBytes(video.size)}
{/each}
{/if}
{#if viewingName}
(viewingName = null)} >
e.stopPropagation()} >
{viewingName}
{#if videoBlobUrls[viewingName]} {/if}
{/if}