2024-02-17 16:17:04 +03:00
import { POST } from '../../modules/fetch.js' ;
2023-02-19 07:06:14 +03:00
import { hideElem , showElem , toggleElem } from '../../utils/dom.js' ;
2022-12-23 19:03:11 +03:00
2021-11-09 12:27:25 +03:00
export function initCompWebHookEditor ( ) {
2024-02-17 16:17:04 +03:00
if ( ! document . querySelectorAll ( '.new.webhook' ) . length ) {
2021-10-16 20:28:04 +03:00
return ;
}
2024-02-17 16:17:04 +03:00
for ( const input of document . querySelectorAll ( '.events.checkbox input' ) ) {
input . addEventListener ( 'change' , function ( ) {
if ( this . checked ) {
showElem ( '.events.fields' ) ;
}
} ) ;
}
for ( const input of document . querySelectorAll ( '.non-events.checkbox input' ) ) {
input . addEventListener ( 'change' , function ( ) {
if ( this . checked ) {
hideElem ( '.events.fields' ) ;
}
} ) ;
}
2021-10-16 20:28:04 +03:00
2024-03-09 14:59:16 +03:00
// some webhooks (like Gitea) allow to set the request method (GET/POST), and it would toggle the "Content Type" field
const httpMethodInput = document . getElementById ( 'http_method' ) ;
if ( httpMethodInput ) {
const updateContentType = function ( ) {
const visible = httpMethodInput . value === 'POST' ;
toggleElem ( document . getElementById ( 'content_type' ) . closest ( '.field' ) , visible ) ;
} ;
updateContentType ( ) ;
httpMethodInput . addEventListener ( 'change' , updateContentType ) ;
}
2021-10-16 20:28:04 +03:00
// Test delivery
2024-02-17 16:17:04 +03:00
document . getElementById ( 'test-delivery' ) ? . addEventListener ( 'click' , async function ( ) {
2024-03-21 19:31:15 +03:00
this . classList . add ( 'is-loading' , 'disabled' ) ;
2024-02-17 16:17:04 +03:00
await POST ( this . getAttribute ( 'data-link' ) ) ;
setTimeout ( ( ) => {
window . location . href = this . getAttribute ( 'data-redirect' ) ;
} , 5000 ) ;
2021-10-16 20:28:04 +03:00
} ) ;
}