feat: 숏폼 큐 복사 완료 흐름 간소화

This commit is contained in:
hehihoho3@gmail.com 2026-09-02 09:15:35 +09:00
parent 6151228248
commit b4a72115b5

View File

@ -158,16 +158,10 @@
}
const detail = await api('/api/shortform/jobs/' + id);
const toolbar = `<div class="sf-clip-head" style="margin-bottom:0.6rem;">
<button class="btn btn-primary" data-copy="${encodeURIComponent(detail.rawOutput || '')}"
data-label="전체 Output 복사 (capcut2 오팔 JSON 탭용)"
${detail.rawOutput ? '' : 'disabled'}>전체 Output 복사 (capcut2 오팔 JSON 탭용)</button>
<button class="btn btn-secondary" data-copy="${encodeURIComponent(detail.step1Output || '')}"
data-label="Step 1 후보구간 복사"
${detail.step1Output ? '' : 'disabled'}>Step 1 후보구간 복사</button>
<button class="btn btn-secondary" data-copy="${encodeURIComponent(detail.youtubeUrl || '')}"
data-label="영상 URL 복사">영상 URL 복사</button>
data-complete-on-copy>영상 URL 복사</button>
<button class="btn btn-secondary" data-subtitle-copy
data-label="타임스탬프 자막 복사" ${detail.subtitleVtt ? '' : 'disabled'}>타임스탬프 자막 복사</button>
data-complete-on-copy ${detail.subtitleVtt ? '' : 'disabled'}>타임스탬프 자막 복사</button>
${detail.subtitleStatus === 'READY' || detail.subtitleStatus === 'COLLECTING' ? '' : `
<button class="btn btn-secondary" onclick="retrySubtitles(${detail.id}, event)">자막 다시 수집</button>`}
</div>`;
@ -184,20 +178,25 @@
openJobIds.add(id);
el.querySelectorAll('[data-copy]').forEach(btn => {
const label = btn.dataset.label || 'capcut2 JSON 복사';
btn.onclick = (e) => {
btn.onclick = async (e) => {
e.stopPropagation();
navigator.clipboard.writeText(decodeURIComponent(btn.dataset.copy));
btn.textContent = '복사됨!';
setTimeout(() => btn.textContent = label, 1200);
await navigator.clipboard.writeText(decodeURIComponent(btn.dataset.copy));
if (btn.hasAttribute('data-complete-on-copy')) {
btn.textContent = '완료';
btn.disabled = true;
} else {
btn.textContent = '복사됨!';
setTimeout(() => btn.textContent = label, 1200);
}
};
});
const subtitleButton = el.querySelector('[data-subtitle-copy]');
if (subtitleButton && detail.subtitleVtt) {
subtitleButton.onclick = (e) => {
subtitleButton.onclick = async (e) => {
e.stopPropagation();
navigator.clipboard.writeText(detail.subtitleVtt);
subtitleButton.textContent = '복사됨!';
setTimeout(() => subtitleButton.textContent = '타임스탬프 자막 복사', 1200);
await navigator.clipboard.writeText(detail.subtitleVtt);
subtitleButton.textContent = '완료';
subtitleButton.disabled = true;
};
}
}
@ -299,11 +298,11 @@
const button = card.querySelector('[data-subtitle-copy]');
if (!button || !detail.subtitleVtt) return;
button.disabled = false;
button.onclick = (e) => {
button.onclick = async (e) => {
e.stopPropagation();
navigator.clipboard.writeText(detail.subtitleVtt);
button.textContent = '복사됨!';
setTimeout(() => button.textContent = '타임스탬프 자막 복사', 1200);
await navigator.clipboard.writeText(detail.subtitleVtt);
button.textContent = '완료';
button.disabled = true;
};
}