mirror of https://github.com/go-gitea/gitea.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.8 KiB
61 lines
1.8 KiB
import {hideElem, showElem} from '../utils/dom.ts'; |
|
import {GET, POST} from '../modules/fetch.ts'; |
|
|
|
export function initRepoMigrationStatusChecker() { |
|
const repoMigrating = document.querySelector('#repo_migrating'); |
|
if (!repoMigrating) return; |
|
|
|
document.querySelector<HTMLButtonElement>('#repo_migrating_retry')?.addEventListener('click', doMigrationRetry); |
|
|
|
const repoLink = repoMigrating.getAttribute('data-migrating-repo-link'); |
|
|
|
// returns true if the refresh still needs to be called after a while |
|
const refresh = async () => { |
|
const res = await GET(`${repoLink}/-/migrate/status`); |
|
if (res.status !== 200) return true; // continue to refresh if network error occurs |
|
|
|
const data = await res.json(); |
|
|
|
// for all status |
|
if (data.message) { |
|
document.querySelector('#repo_migrating_progress_message')!.textContent = data.message; |
|
} |
|
|
|
// TaskStatusFinished |
|
if (data.status === 4) { |
|
window.location.reload(); |
|
return false; |
|
} |
|
|
|
// TaskStatusFailed |
|
if (data.status === 3) { |
|
hideElem('#repo_migrating_progress'); |
|
hideElem('#repo_migrating'); |
|
showElem('#repo_migrating_retry'); |
|
showElem('#repo_migrating_failed'); |
|
showElem('#repo_migrating_failed_image'); |
|
document.querySelector('#repo_migrating_failed_error')!.textContent = data.message; |
|
return false; |
|
} |
|
|
|
return true; // continue to refresh |
|
}; |
|
|
|
const syncTaskStatus = async () => { |
|
let doNextRefresh = true; |
|
try { |
|
doNextRefresh = await refresh(); |
|
} finally { |
|
if (doNextRefresh) { |
|
setTimeout(syncTaskStatus, 2000); |
|
} |
|
} |
|
}; |
|
|
|
syncTaskStatus(); // no await |
|
} |
|
|
|
async function doMigrationRetry(e: Event) { |
|
await POST((e.target as HTMLElement).getAttribute('data-migrating-task-retry-url')!); |
|
window.location.reload(); |
|
}
|
|
|