mirror of
				https://github.com/lingble/chatwoot.git
				synced 2025-10-31 19:17:48 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			45 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| export const initOnEvents = ['click', 'touchstart', 'keypress', 'keydown'];
 | |
| 
 | |
| export const getAudioContext = () => {
 | |
|   let audioCtx;
 | |
|   try {
 | |
|     audioCtx = new (window.AudioContext || window.webkitAudioContext)();
 | |
|   } catch {
 | |
|     // AudioContext is not available.
 | |
|   }
 | |
|   return audioCtx;
 | |
| };
 | |
| 
 | |
| // eslint-disable-next-line default-param-last
 | |
| export const getAlertAudio = async (baseUrl = '', requestContext) => {
 | |
|   const audioCtx = getAudioContext();
 | |
|   const playSound = audioBuffer => {
 | |
|     window.playAudioAlert = () => {
 | |
|       if (audioCtx) {
 | |
|         const source = audioCtx.createBufferSource();
 | |
|         source.buffer = audioBuffer;
 | |
|         source.connect(audioCtx.destination);
 | |
|         source.loop = false;
 | |
|         source.start();
 | |
|       }
 | |
|     };
 | |
|   };
 | |
| 
 | |
|   if (audioCtx) {
 | |
|     const { type = 'dashboard', alertTone = 'ding' } = requestContext || {};
 | |
|     const resourceUrl = `${baseUrl}/audio/${type}/${alertTone}.mp3`;
 | |
|     const audioRequest = new Request(resourceUrl);
 | |
| 
 | |
|     fetch(audioRequest)
 | |
|       .then(response => response.arrayBuffer())
 | |
|       .then(buffer => {
 | |
|         audioCtx.decodeAudioData(buffer).then(playSound);
 | |
|         // eslint-disable-next-line no-promise-executor-return
 | |
|         return new Promise(res => res());
 | |
|       })
 | |
|       .catch(() => {
 | |
|         // error
 | |
|       });
 | |
|   }
 | |
| };
 | 
