29 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			29 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /**
 | |
|  * @copyright   (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
 | |
|  * @license     GNU General Public License version 2 or later; see LICENSE.txt
 | |
|  */
 | |
| 
 | |
| /**
 | |
|  * Keepalive javascript behavior
 | |
|  *
 | |
|  * Used for keeping the session alive
 | |
|  *
 | |
|  * @package  Joomla.JavaScript
 | |
|  * @since    3.7.0
 | |
|  */
 | |
| if (!window.Joomla) {
 | |
|   throw new Error('Joomla API was not properly initialised');
 | |
| }
 | |
| const keepAliveOptions = Joomla.getOptions('system.keepalive');
 | |
| const keepAliveInterval = keepAliveOptions && keepAliveOptions.interval ? parseInt(keepAliveOptions.interval, 10) : 45 * 1000;
 | |
| let keepAliveUri = keepAliveOptions && keepAliveOptions.uri ? keepAliveOptions.uri.replace(/&/g, '&') : '';
 | |
| 
 | |
| // Fallback in case no keepalive uri was found.
 | |
| if (keepAliveUri === '') {
 | |
|   const systemPaths = Joomla.getOptions('system.paths');
 | |
|   keepAliveUri = `${systemPaths ? `${systemPaths.root}/index.php` : window.location.pathname}?option=com_ajax&format=json`;
 | |
| }
 | |
| setInterval(() => fetch(keepAliveUri, {
 | |
|   method: 'POST'
 | |
| }), keepAliveInterval);
 |