diff options
Diffstat (limited to 'plugins/jetpack/modules/scan/admin-bar-notice.js')
-rw-r--r-- | plugins/jetpack/modules/scan/admin-bar-notice.js | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/plugins/jetpack/modules/scan/admin-bar-notice.js b/plugins/jetpack/modules/scan/admin-bar-notice.js new file mode 100644 index 00000000..4a226bc4 --- /dev/null +++ b/plugins/jetpack/modules/scan/admin-bar-notice.js @@ -0,0 +1,52 @@ +( function ( localized ) { + function ready( fn ) { + if ( document.readyState != 'loading' ) { + fn(); + } else { + document.addEventListener( 'DOMContentLoaded', fn ); + } + } + + function fetch_scan_treats_and_add_link() { + var xhrRequest = new XMLHttpRequest(); + xhrRequest.open( 'GET', localized.scan_endpoint, true ); + xhrRequest.onload = function () { + if ( this.status == 200 ) { + // Success! + var body = JSON.parse( this.response ); + if ( body && body.data ) { + var apiResponse = JSON.parse( body.data ); + var numberOfThreats = + apiResponse.threats && apiResponse.threats.length ? apiResponse.threats.length : 0; + update_threats_link( numberOfThreats ); + } else { + update_threats_link( 0 ); + } + } else { + update_threats_link( 0 ); + } + }; + xhrRequest.setRequestHeader( 'X-WP-Nonce', localized.nonce ); + xhrRequest.send(); + } + + ready( function () { + fetch_scan_treats_and_add_link(); + } ); + + function update_threats_link( numberOfThreats ) { + var element = document.getElementById( 'wp-admin-bar-jetpack-scan-notice' ); + if ( ! element ) { + return; + } + + if ( ! numberOfThreats ) { + element.parentNode.removeChild( element ); + return; + } + + var textLabel = numberOfThreats == 1 ? localized.singular : localized.multiple; + element.innerHTML = + '<a href="' + localized.scan_dashboard_url + '" class="ab-item">' + textLabel + '</a>'; + } +} )( window.Jetpack_Scan ); |