|
53 | 53 | (.catch #(log/error "could not fetch audio " base64-uri))))
|
54 | 54 |
|
55 | 55 | (defn- create-player
|
56 |
| - [{:keys [progress-ref player-state player-key] :as params} audio-url on-success] |
| 56 | + [{:keys [progress-ref player-state player-key]} audio-url on-success] |
57 | 57 | (download-audio-http
|
58 | 58 | audio-url
|
59 | 59 | (fn [base64-data]
|
|
75 | 75 | (update-state player-state :preparing))
|
76 | 76 |
|
77 | 77 | (defn- play-pause-player
|
78 |
| - [{:keys [player-key player-state progress-ref message-id audio-duration-ms seeking-audio? user-interaction?] :as params}] |
| 78 | + [{:keys [player-key player-state progress-ref message-id audio-duration-ms seeking-audio? |
| 79 | + user-interaction?] |
| 80 | + :as params}] |
79 | 81 | (let [mediaserver-port (rf/sub [:mediaserver/port])
|
80 | 82 | audio-uri (str media-server-uri-prefix
|
81 | 83 | mediaserver-port
|
82 | 84 | audio-path
|
83 | 85 | uri-param
|
84 |
| - message-id)] |
85 |
| - (let [player (@active-players player-key) |
86 |
| - playing? (= @player-state :playing)] |
87 |
| - (when-not playing? |
88 |
| - (reset! current-player-key player-key)) |
89 |
| - (if player |
90 |
| - (do |
91 |
| - (audio/toggle-playpause-player |
92 |
| - player |
93 |
| - (fn [] |
94 |
| - (update-state player-state :playing) |
95 |
| - (when @progress-timer |
96 |
| - (js/clearInterval @progress-timer)) |
97 |
| - (reset! progress-timer |
98 |
| - (js/setInterval |
99 |
| - (fn [] |
100 |
| - (let [player (@active-players player-key) |
101 |
| - current-time (audio/get-player-current-time player) |
102 |
| - playing? (= @player-state :playing)] |
103 |
| - (when (and playing? (not @seeking-audio?) (> current-time 0)) |
104 |
| - (reset! progress-ref current-time)))) |
105 |
| - 100))) |
106 |
| - (fn [] |
107 |
| - (update-state player-state :ready-to-play) |
108 |
| - (when (and @progress-timer user-interaction?) |
109 |
| - (js/clearInterval @progress-timer) |
110 |
| - (reset! progress-timer nil))) |
111 |
| - #(update-state player-state :error))) |
112 |
| - (do |
113 |
| - (destroy-player player-key) |
114 |
| - (create-player params |
115 |
| - audio-uri |
116 |
| - (fn [] |
117 |
| - (let [player (@active-players player-key)] |
118 |
| - (reset! seeking-audio? false) |
119 |
| - (if (> @progress-ref 0) |
120 |
| - (let [seek-time (* audio-duration-ms @progress-ref) |
121 |
| - checked-seek-time (min audio-duration-ms seek-time)] |
122 |
| - (seek-player |
123 |
| - player-key |
124 |
| - player-state |
125 |
| - checked-seek-time |
126 |
| - #(play-pause-player params))) |
127 |
| - (play-pause-player params))))))) |
128 |
| - (swap! audio-uris assoc player-key audio-uri)))) |
| 86 | + message-id) |
| 87 | + player (@active-players player-key) |
| 88 | + playing? (= @player-state :playing)] |
| 89 | + (when-not playing? |
| 90 | + (reset! current-player-key player-key)) |
| 91 | + (if (and player |
| 92 | + (= (@audio-uris player-key) audio-uri)) |
| 93 | + (audio/toggle-playpause-player |
| 94 | + player |
| 95 | + (fn [] |
| 96 | + (update-state player-state :playing) |
| 97 | + (when @progress-timer |
| 98 | + (js/clearInterval @progress-timer)) |
| 99 | + (reset! progress-timer |
| 100 | + (js/setInterval |
| 101 | + (fn [] |
| 102 | + (let [player (@active-players player-key) |
| 103 | + current-time (audio/get-player-current-time player) |
| 104 | + playing? (= @player-state :playing)] |
| 105 | + (when (and playing? (not @seeking-audio?) (> current-time 0)) |
| 106 | + (reset! progress-ref current-time)))) |
| 107 | + 100))) |
| 108 | + (fn [] |
| 109 | + (update-state player-state :ready-to-play) |
| 110 | + (when (and @progress-timer user-interaction?) |
| 111 | + (js/clearInterval @progress-timer) |
| 112 | + (reset! progress-timer nil))) |
| 113 | + #(update-state player-state :error)) |
| 114 | + (do |
| 115 | + (destroy-player player-key) |
| 116 | + (create-player params |
| 117 | + audio-uri |
| 118 | + (fn [] |
| 119 | + (reset! seeking-audio? false) |
| 120 | + (if (> @progress-ref 0) |
| 121 | + (let [seek-time (* audio-duration-ms @progress-ref) |
| 122 | + checked-seek-time (min audio-duration-ms seek-time)] |
| 123 | + (seek-player |
| 124 | + player-key |
| 125 | + player-state |
| 126 | + checked-seek-time |
| 127 | + #(play-pause-player params))) |
| 128 | + (play-pause-player params)))))) |
| 129 | + (swap! audio-uris assoc player-key audio-uri))) |
129 | 130 |
|
130 | 131 | (defn audio-message
|
131 | 132 | [{:keys [audio-duration-ms message-id]}
|
|
0 commit comments