@ -1,38 +1,34 @@
import $ from 'jquery' ;
import { hideElem , showElem } from '../utils/dom.js' ;
import { POST } from '../modules/fetch.js' ;
const { csrfToken } = window . config ;
function getArchive ( $target , url , first ) {
$ . ajax ( {
url ,
type : 'POST' ,
data : {
_csrf : csrfToken ,
} ,
complete ( xhr ) {
if ( xhr . status === 200 ) {
if ( ! xhr . responseJSON ) {
// XXX Shouldn't happen?
$target . closest ( '.dropdown' ) . children ( 'i' ) . removeClass ( 'loading' ) ;
return ;
}
async function getArchive ( $target , url , first ) {
try {
const response = await POST ( url ) ;
if ( response . status === 200 ) {
const data = await response . json ( ) ;
if ( ! data ) {
// XXX Shouldn't happen?
$target . closest ( '.dropdown' ) . children ( 'i' ) . removeClass ( 'loading' ) ;
return ;
}
if ( ! xhr . responseJSON . complete ) {
$target . closest ( '.dropdown' ) . children ( 'i' ) . addClass ( 'loading' ) ;
// Wait for only three quarters of a second initially, in case it's
// quickly archived.
setTimeout ( ( ) => {
getArchive ( $target , url , false ) ;
} , first ? 750 : 2000 ) ;
} else {
// We don't need to continue checking.
$target . closest ( '.dropdown' ) . children ( 'i' ) . removeClass ( 'loading' ) ;
window . location . href = url ;
}
if ( ! data . complete ) {
$target . closest ( '.dropdown' ) . children ( 'i' ) . addClass ( 'loading' ) ;
// Wait for only three quarters of a second initially, in case it's
// quickly archived.
setTimeout ( ( ) => {
getArchive ( $target , url , false ) ;
} , first ? 750 : 2000 ) ;
} else {
// We don't need to continue checking.
$target . closest ( '.dropdown' ) . children ( 'i' ) . removeClass ( 'loading' ) ;
window . location . href = url ;
}
} ,
} ) ;
}
} catch {
$target . closest ( '.dropdown' ) . children ( 'i' ) . removeClass ( 'loading' ) ;
}
}
export function initRepoArchiveLinks ( ) {