1
- import { request , HTTP_GET } from '../../connection/request.js' ;
2
-
3
1
export const audio = ( ( ) => {
4
2
5
3
/**
@@ -12,11 +10,6 @@ export const audio = (() => {
12
10
*/
13
11
let audioEl = null ;
14
12
15
- /**
16
- * @type {Promise<void>|null }
17
- */
18
- let canPlay = null ;
19
-
20
13
let isPlay = false ;
21
14
22
15
const statePlay = '<i class="fa-solid fa-circle-pause spin-button"></i>' ;
@@ -58,47 +51,22 @@ export const audio = (() => {
58
51
*/
59
52
const init = ( ) => {
60
53
music = document . getElementById ( 'button-music' ) ;
61
- document . addEventListener ( 'undangan.open' , ( ) => {
62
- music . style . display = 'block' ;
63
- } ) ;
54
+ music . style . display = 'block' ;
64
55
65
- const url = music . getAttribute ( 'data-url' ) ;
66
- const mediaSource = new MediaSource ( ) ;
67
- audioEl = new Audio ( URL . createObjectURL ( mediaSource ) ) ;
56
+ audioEl = new Audio ( music . getAttribute ( 'data-url' ) ) ;
57
+ audioEl . volume = 1 ;
68
58
audioEl . loop = true ;
59
+ audioEl . muted = false ;
60
+ audioEl . currentTime = 0 ;
69
61
audioEl . autoplay = false ;
70
62
audioEl . controls = false ;
71
63
72
- canPlay = new Promise ( ( res ) => audioEl . addEventListener ( 'canplay' , res , { once : true } ) ) ;
73
-
74
- const context = new AudioContext ( ) ;
75
- const source = context . createMediaElementSource ( audioEl ) ;
76
- source . connect ( context . destination ) ;
77
-
78
- mediaSource . addEventListener ( 'sourceopen' , async ( ) => {
79
- const sourceBuffer = mediaSource . addSourceBuffer ( 'audio/mpeg' ) ;
80
- const res = await request ( HTTP_GET , url ) . default ( ) ;
81
- const reader = res . body . getReader ( ) ;
82
-
83
- const push = ( ) => reader . read ( ) . then ( ( { value, done } ) => {
84
- if ( done ) {
85
- mediaSource . endOfStream ( ) ;
86
- return ;
87
- }
88
-
89
- sourceBuffer . appendBuffer ( value . buffer ) ;
90
- sourceBuffer . addEventListener ( 'updateend' , push , { once : true } ) ;
91
- } ) ;
92
-
93
- push ( ) ;
94
- } ) ;
95
-
64
+ audioEl . addEventListener ( 'canplay' , play ) ;
96
65
music . addEventListener ( 'offline' , pause ) ;
97
66
music . addEventListener ( 'click' , ( ) => isPlay ? pause ( ) : play ( ) ) ;
98
67
} ;
99
68
100
69
return {
101
70
init,
102
- play,
103
71
} ;
104
72
} ) ( ) ;
0 commit comments