capacitor-plugin-playlist 0.1.26 → 0.1.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,10 +1,7 @@
1
1
  # capacitor-plugin-playlist
2
2
  Will probably be published as @dwbn/capacitor-playlist
3
3
 
4
- A capacitor plugin for Android, iOS and Web with native support for audio playlists, background support, and lock screen controls
5
-
6
- Capacitor 3 Version: > 0.1.0
7
- Capacitor 2 Version: < v0.1.0
4
+ A capacitor 3. 0 plugin for Android, iOS and Web with native support for audio playlists, background support, and lock screen controls
8
5
 
9
6
  ## 0. Index
10
7
 
@@ -108,20 +105,32 @@ Be sure to check out the examples folder, where you can find an Angular10/Ionic5
108
105
  Just drop into your project and go.
109
106
  Should be quite obvious howto adapt this for other frameworks, or just vanillaJS
110
107
 
108
+ ### API
109
+ Example:
110
+ @see definition.ts
111
+ ```
112
+ import {Playlist, AudioTrack} from 'capacitor-plugin-playlist'
113
+
114
+ const item: AudioTrack = {
115
+ trackId: 1,
116
+ assetUrl: 'http://your_audio',
117
+ albumArt: 'http://some_image'
118
+ }
119
+ await Playlist.addItem({item})
120
+ ```
121
+
122
+ - TODO!
123
+
111
124
  ### Migrating from cordova-plugin-playlist
112
125
 
113
- See the Example RmxAudioPlayer.ts
126
+ See the use the shipped RmxAudioPlayer.ts
114
127
 
115
128
  Its a meant as a drop in replacement
116
129
 
117
130
  in the best case you only change your import. :D
118
131
 
119
- ### API
120
132
 
121
- - TODO!
122
133
  ## 5. Todo
123
- * [iOS] Write this plugin in Swift instead of Objective-C. I didn't have time to learn Swift when I needed this.
124
- * [iOS] Safely implement cover art for cover images displayed on the command/lock screen controls
125
134
  * [iOS] Utilize [AudioPlayer](https://github.com/delannoyk/AudioPlayer) instead of directly implementing AVQueuePlayer. `AudioPlayer` includes some smart network recovery features
126
135
  * [iOS, Android] Add a full example
127
136
 
@@ -0,0 +1 @@
1
+ /build
@@ -0,0 +1 @@
1
+ /build
@@ -192,10 +192,10 @@ class PlaylistPlugin : Plugin(), OnStatusReportListener {
192
192
 
193
193
  @PluginMethod
194
194
  fun playTrackById(call: PluginCall) {
195
- val trackId: String = call.getString("id")!!
196
- if ("" != trackId) {
195
+ val id: String = call.getString("id")!!
196
+ if ("" != id) {
197
197
  // alternatively we could search for the item and set the current index to that item.
198
- val code = trackId.hashCode()
198
+ val code = id.hashCode()
199
199
  val seekPosition = (call.getInt("position", 0)!! * 1000.0).toLong()
200
200
  audioPlayerImpl!!.playlistManager.setCurrentItem(code.toLong())
201
201
  audioPlayerImpl!!.playlistManager.beginPlayback(seekPosition, false)
@@ -224,10 +224,10 @@ class PlaylistPlugin : Plugin(), OnStatusReportListener {
224
224
 
225
225
  @PluginMethod
226
226
  fun selectTrackById(call: PluginCall) {
227
- val trackId: String = call.getString("id")!!
228
- if ("" != trackId) {
227
+ val id: String = call.getString("id")!!
228
+ if ("" != id) {
229
229
  // alternatively we could search for the item and set the current index to that item.
230
- val code = trackId.hashCode()
230
+ val code = id.hashCode()
231
231
  audioPlayerImpl!!.playlistManager.setCurrentItem(code.toLong())
232
232
 
233
233
  val seekPosition = (call.getInt("position", 0)!! * 1000.0).toLong()
@@ -280,4 +280,4 @@ class PlaylistManager(application: Application) :
280
280
  setParameters(audioTracks, -1)
281
281
  options = Options(application.baseContext)
282
282
  }
283
- }
283
+ }
package/dist/esm/web.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { WebPlugin } from '@capacitor/core';
2
+ import { RmxAudioStatusMessage } from './Constants';
2
3
  import { AddAllItemOptions, AddItemOptions, PlayByIdOptions, PlayByIndexOptions, PlaylistOptions, PlaylistPlugin, RemoveItemOptions, RemoveItemsOptions, SeekToOptions, SelectByIdOptions, SelectByIndexOptions, SetLoopOptions, SetPlaybackRateOptions, SetPlaybackVolumeOptions } from './definitions';
3
4
  import { AudioPlayerOptions, AudioTrack } from './interfaces';
4
5
  export declare class PlaylistWeb extends WebPlugin implements PlaylistPlugin {
@@ -40,7 +41,7 @@ export declare class PlaylistWeb extends WebPlugin implements PlaylistPlugin {
40
41
  currentPosition: number;
41
42
  };
42
43
  protected setCurrent(item: AudioTrack, position?: number): Promise<void>;
43
- protected log(message?: any, ...optionalParams: any[]): void;
44
+ protected updateStatus(msgType: RmxAudioStatusMessage, value: any, trackId?: string): void;
44
45
  private hlsLoaded;
45
46
  protected loadHlsJs(): Promise<unknown>;
46
47
  }
package/dist/esm/web.js CHANGED
@@ -19,15 +19,18 @@ export class PlaylistWeb extends WebPlugin {
19
19
  const track = validateTrack(options.item);
20
20
  if (track) {
21
21
  this.playlistItems.push(track);
22
+ this.updateStatus(RmxAudioStatusMessage.RMXSTATUS_ITEM_ADDED, track, track.trackId);
22
23
  }
23
24
  return Promise.resolve();
24
25
  }
25
26
  async clearAllItems() {
26
27
  await this.release();
27
28
  this.playlistItems = [];
29
+ this.updateStatus(RmxAudioStatusMessage.RMXSTATUS_PLAYLIST_CLEARED, null, "INVALID");
28
30
  return Promise.resolve();
29
31
  }
30
32
  async initialize() {
33
+ this.updateStatus(RmxAudioStatusMessage.RMXSTATUS_INIT, null, "INVALID");
31
34
  return Promise.resolve();
32
35
  }
33
36
  async pause() {
@@ -36,24 +39,28 @@ export class PlaylistWeb extends WebPlugin {
36
39
  }
37
40
  async play() {
38
41
  var _a;
39
- return (_a = this.audio) === null || _a === void 0 ? void 0 : _a.play();
42
+ await ((_a = this.audio) === null || _a === void 0 ? void 0 : _a.play());
40
43
  }
41
- playTrackById(options) {
42
- this.playlistItems.forEach(async (item) => {
43
- if (item.trackId === options.id) {
44
- await this.setCurrent(item);
44
+ async playTrackById(options) {
45
+ for (let track of this.playlistItems) {
46
+ if (track.trackId === options.id) {
47
+ if (track !== this.currentTrack) {
48
+ await this.setCurrent(track);
49
+ }
45
50
  return this.play();
46
51
  }
47
- });
52
+ }
48
53
  return Promise.reject();
49
54
  }
50
- playTrackByIndex(options) {
51
- this.playlistItems.forEach(async (item, index) => {
55
+ async playTrackByIndex(options) {
56
+ for (let { index, item } of this.playlistItems.map((item, index) => ({ index, item }))) {
52
57
  if (index === options.index) {
53
- await this.setCurrent(item);
58
+ if (item !== this.currentTrack) {
59
+ await this.setCurrent(item);
60
+ }
54
61
  return this.play();
55
62
  }
56
- });
63
+ }
57
64
  return Promise.reject();
58
65
  }
59
66
  async release() {
@@ -64,17 +71,19 @@ export class PlaylistWeb extends WebPlugin {
64
71
  removeItem(options) {
65
72
  this.playlistItems.forEach((item, index) => {
66
73
  if (options.index && options.index === index) {
67
- this.playlistItems.splice(index, 1);
74
+ const removedTrack = this.playlistItems.splice(index, 1);
75
+ this.updateStatus(RmxAudioStatusMessage.RMXSTATUS_ITEM_REMOVED, removedTrack[0], removedTrack[0].trackId);
68
76
  }
69
77
  else if (options.id && options.id === item.trackId) {
70
- this.playlistItems.splice(index, 1);
78
+ const removedTrack = this.playlistItems.splice(index, 1);
79
+ this.updateStatus(RmxAudioStatusMessage.RMXSTATUS_ITEM_REMOVED, removedTrack[0], removedTrack[0].trackId);
71
80
  }
72
81
  });
73
82
  return Promise.resolve();
74
83
  }
75
84
  removeItems(options) {
76
- options.items.forEach((item) => {
77
- this.removeItem(item);
85
+ options.items.forEach(async (item) => {
86
+ await this.removeItem(item);
78
87
  });
79
88
  return Promise.resolve();
80
89
  }
@@ -122,11 +131,15 @@ export class PlaylistWeb extends WebPlugin {
122
131
  var _a;
123
132
  this.playlistItems = options.items;
124
133
  if (this.playlistItems.length > 0) {
125
- return this.setCurrent(this.playlistItems[0], ((_a = options.options) === null || _a === void 0 ? void 0 : _a.playFromPosition) || 0);
134
+ let currentItem = this.playlistItems.filter(i => { var _a; return i.trackId === ((_a = options.options) === null || _a === void 0 ? void 0 : _a.playFromId); })[0];
135
+ if (!currentItem) {
136
+ currentItem = this.playlistItems[0];
137
+ }
138
+ return this.setCurrent(currentItem, ((_a = options.options) === null || _a === void 0 ? void 0 : _a.playFromPosition) || 0);
126
139
  }
127
140
  return Promise.resolve();
128
141
  }
129
- skipForward() {
142
+ async skipForward() {
130
143
  let found = null;
131
144
  this.playlistItems.forEach((item, index) => {
132
145
  if (!found && this.getCurrentTrackId() === item.trackId) {
@@ -137,11 +150,15 @@ export class PlaylistWeb extends WebPlugin {
137
150
  found = -1;
138
151
  }
139
152
  if (found !== null) {
153
+ this.updateStatus(RmxAudioStatusMessage.RMX_STATUS_SKIP_BACK, {
154
+ currentIndex: found + 1,
155
+ currentItem: this.playlistItems[found + 1]
156
+ }, this.playlistItems[found + 1].trackId);
140
157
  return this.setCurrent(this.playlistItems[found + 1]);
141
158
  }
142
159
  return Promise.reject();
143
160
  }
144
- skipBack() {
161
+ async skipBack() {
145
162
  let found = null;
146
163
  this.playlistItems.forEach((item, index) => {
147
164
  if (!found && this.getCurrentTrackId() === item.trackId) {
@@ -152,8 +169,11 @@ export class PlaylistWeb extends WebPlugin {
152
169
  found = this.playlistItems.length - 1;
153
170
  }
154
171
  if (found !== null) {
155
- this.setCurrent(this.playlistItems[found - 1]);
156
- return Promise.resolve();
172
+ this.updateStatus(RmxAudioStatusMessage.RMX_STATUS_SKIP_BACK, {
173
+ currentIndex: found - 1,
174
+ currentItem: this.playlistItems[found - 1]
175
+ }, this.playlistItems[found - 1].trackId);
176
+ return this.setCurrent(this.playlistItems[found - 1]);
157
177
  }
158
178
  return Promise.reject();
159
179
  }
@@ -184,14 +204,7 @@ export class PlaylistWeb extends WebPlugin {
184
204
  registerHtmlListeners(position) {
185
205
  const canPlayListener = async () => {
186
206
  var _a;
187
- this.notifyListeners('status', {
188
- action: 'status',
189
- status: {
190
- msgType: RmxAudioStatusMessage.RMXSTATUS_CANPLAY,
191
- trackId: this.getCurrentTrackId(),
192
- value: this.getCurrentTrackStatus('loading'),
193
- }
194
- });
207
+ this.updateStatus(RmxAudioStatusMessage.RMXSTATUS_CANPLAY, this.getCurrentTrackStatus('paused'));
195
208
  if (position) {
196
209
  await this.seekTo({ position });
197
210
  }
@@ -200,57 +213,22 @@ export class PlaylistWeb extends WebPlugin {
200
213
  if (this.audio) {
201
214
  this.audio.addEventListener('canplay', canPlayListener);
202
215
  this.audio.addEventListener('playing', () => {
203
- this.notifyListeners('status', {
204
- action: 'status',
205
- status: {
206
- msgType: RmxAudioStatusMessage.RMXSTATUS_PLAYING,
207
- trackId: this.getCurrentTrackId(),
208
- value: this.getCurrentTrackStatus('playing'),
209
- }
210
- });
216
+ this.updateStatus(RmxAudioStatusMessage.RMXSTATUS_PLAYING, this.getCurrentTrackStatus('playing'));
211
217
  });
212
218
  this.audio.addEventListener('pause', () => {
213
- this.notifyListeners('status', {
214
- action: 'status',
215
- status: {
216
- msgType: RmxAudioStatusMessage.RMXSTATUS_PAUSE,
217
- trackId: this.getCurrentTrackId(),
218
- value: this.getCurrentTrackStatus('paused'),
219
- }
220
- });
219
+ this.updateStatus(RmxAudioStatusMessage.RMXSTATUS_PAUSE, this.getCurrentTrackStatus('paused'));
221
220
  });
222
221
  this.audio.addEventListener('error', () => {
223
- this.notifyListeners('status', {
224
- action: 'status',
225
- status: {
226
- msgType: RmxAudioStatusMessage.RMXSTATUS_ERROR,
227
- trackId: this.getCurrentTrackId(),
228
- value: this.getCurrentTrackStatus('error'),
229
- }
230
- });
222
+ this.updateStatus(RmxAudioStatusMessage.RMXSTATUS_ERROR, this.getCurrentTrackStatus('error'));
231
223
  });
232
224
  this.audio.addEventListener('ended', () => {
233
- this.notifyListeners('status', {
234
- action: 'status',
235
- status: {
236
- msgType: RmxAudioStatusMessage.RMXSTATUS_STOPPED,
237
- trackId: this.getCurrentTrackId(),
238
- value: this.getCurrentTrackStatus('stopped'),
239
- }
240
- });
225
+ this.updateStatus(RmxAudioStatusMessage.RMXSTATUS_STOPPED, this.getCurrentTrackStatus('stopped'));
241
226
  });
242
227
  let lastTrackId, lastPosition;
243
228
  this.audio.addEventListener('timeupdate', () => {
244
229
  const status = this.getCurrentTrackStatus(this.lastState);
245
230
  if (lastTrackId !== this.getCurrentTrackId() || lastPosition !== status.currentPosition) {
246
- this.notifyListeners('status', {
247
- action: 'status',
248
- status: {
249
- msgType: RmxAudioStatusMessage.RMXSTATUS_PLAYBACK_POSITION,
250
- trackId: this.getCurrentTrackId(),
251
- value: status,
252
- }
253
- });
231
+ this.updateStatus(RmxAudioStatusMessage.RMXSTATUS_PLAYBACK_POSITION, status);
254
232
  lastTrackId = this.getCurrentTrackId();
255
233
  lastPosition = status.currentPosition;
256
234
  }
@@ -317,28 +295,26 @@ export class PlaylistWeb extends WebPlugin {
317
295
  this.play();
318
296
  });
319
297
  }
298
+ this.updateStatus(RmxAudioStatusMessage.RMXSTATUS_TRACK_CHANGED, {
299
+ currentItem: item
300
+ });
301
+ }
302
+ updateStatus(msgType, value, trackId) {
320
303
  this.notifyListeners('status', {
321
304
  action: 'status',
322
305
  status: {
323
- msgType: RmxAudioStatusMessage.RMXSTATUS_TRACK_CHANGED,
324
- trackId: this.getCurrentTrackId(),
325
- value: {
326
- currentItem: item
327
- }
306
+ msgType: msgType,
307
+ trackId: trackId ? trackId : this.getCurrentTrackId(),
308
+ value: value
328
309
  }
329
310
  });
330
311
  }
331
- log(message, ...optionalParams) {
332
- if (this.options.verbose) {
333
- console.log(message, ...optionalParams);
334
- }
335
- }
336
312
  loadHlsJs() {
337
313
  if (this.hlsLoaded) {
338
314
  return Promise.resolve();
339
315
  }
340
316
  return new Promise((resolve, reject) => {
341
- var script = document.createElement('script');
317
+ const script = document.createElement('script');
342
318
  script.type = 'text/javascript';
343
319
  script.src = 'https://cdn.jsdelivr.net/npm/hls.js@1.1.1';
344
320
  document.getElementsByTagName('head')[0].appendChild(script);
@@ -1 +1 @@
1
- {"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAC,qBAAqB,EAAC,MAAM,aAAa,CAAC;AAkBlD,OAAO,EAAC,aAAa,EAAE,cAAc,EAAC,MAAM,SAAS,CAAC;AAItD,MAAM,OAAO,WAAY,SAAQ,SAAS;IAA1C;;QAEc,kBAAa,GAAiB,EAAE,CAAC;QACjC,SAAI,GAAG,KAAK,CAAC;QACb,YAAO,GAAuB,EAAE,CAAC;QACjC,iBAAY,GAAsB,IAAI,CAAC;QACvC,cAAS,GAAG,SAAS,CAAC;QA8UxB,cAAS,GAAG,KAAK,CAAC;IAqB9B,CAAC;IAjWG,WAAW,CAAC,OAA0B;QAClC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9E,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,OAAO,CAAC,OAAuB;QAC3B,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,oBAAoB,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;SACvF;QACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,aAAa;QACf,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,0BAA0B,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QACrF,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,UAAU;QACZ,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,cAAc,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QACzE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,KAAK;;QACP,MAAA,IAAI,CAAC,KAAK,0CAAE,KAAK,GAAG;IACxB,CAAC;IAED,KAAK,CAAC,IAAI;;QACN,aAAM,IAAI,CAAC,KAAK,0CAAE,IAAI,GAAE,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAwB;QACxC,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,aAAa,EAAE;YAClC,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,EAAE,EAAE;gBAC9B,IAAI,KAAK,KAAK,IAAI,CAAC,YAAY,EAAE;oBAC7B,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;iBAChC;gBACD,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;aACtB;SACJ;QACD,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,OAA2B;QAC9C,KAAK,IAAI,EAAC,KAAK,EAAE,IAAI,EAAC,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;YAClF,IAAI,KAAK,KAAK,OAAO,CAAC,KAAK,EAAE;gBACzB,IAAI,IAAI,KAAK,IAAI,CAAC,YAAY,EAAE;oBAC5B,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;iBAC/B;gBACD,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;aACtB;SACJ;QACD,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,OAAO;QACT,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,UAAU,CAAC,OAA0B;QACjC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACvC,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE;gBAC1C,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBAEzD,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,sBAAsB,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;aAC7G;iBAAM,IAAI,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE;gBAClD,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBACzD,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,sBAAsB,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;aAC7G;QACL,CAAC,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,WAAW,CAAC,OAA2B;QACnC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YACjC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,OAAsB;QACzB,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;YAC1C,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;SAC5B;QACD,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED,eAAe,CAAC,OAA0B;QACtC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE;YACnC,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,EAAE,EAAE;gBAC7B,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;aAChC;SACJ;QACD,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED,kBAAkB,CAAC,OAA6B;QAC5C,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE;YACnC,IAAI,KAAK,KAAK,OAAO,CAAC,KAAK,EAAE;gBACzB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;aAChC;YACD,KAAK,EAAE,CAAC;SACX;QACD,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED,OAAO,CAAC,OAAuB;QAC3B,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,UAAU,CAAC,OAA2B;QAClC,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;QAC7B,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,iBAAiB,CAAC,OAAiC;QAC/C,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YACnC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;SAC5B;QACD,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED,gBAAgB,CAAC,OAAwB;;QACrC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC;QACnC,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/B,IAAI,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,WAAC,OAAA,CAAC,CAAC,OAAO,YAAK,OAAO,CAAC,OAAO,0CAAE,UAAU,CAAA,CAAA,EAAA,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/F,IAAI,CAAC,WAAW,EAAE;gBACd,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;aACvC;YACD,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,OAAA,OAAO,CAAC,OAAO,0CAAE,gBAAgB,KAAI,CAAC,CAAC,CAAC;SAC/E;QACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,WAAW;QACb,IAAI,KAAK,GAAkB,IAAI,CAAC;QAChC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACvC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,iBAAiB,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE;gBACrD,KAAK,GAAG,KAAK,CAAC;aACjB;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,KAAK,KAAK,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YACzC,KAAK,GAAG,CAAC,CAAC,CAAC;SACd;QAED,IAAI,KAAK,KAAK,IAAI,EAAE;YAChB,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,oBAAoB,EAAE;gBAC1D,YAAY,EAAE,KAAK,GAAG,CAAC;gBACvB,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC;aAC7C,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC1C,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;SACzD;QAED,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,QAAQ;QACV,IAAI,KAAK,GAAkB,IAAI,CAAC;QAChC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACvC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,iBAAiB,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE;gBACrD,KAAK,GAAG,KAAK,CAAC;aACjB;QACL,CAAC,CAAC,CAAC;QACH,IAAI,KAAK,KAAK,CAAC,EAAE;YACb,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;SACzC;QAED,IAAI,KAAK,KAAK,IAAI,EAAE;YAChB,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,oBAAoB,EAAE;gBAC1D,YAAY,EAAE,KAAK,GAAG,CAAC;gBACvB,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,GAAE,CAAC,CAAC;aAC5C,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,GAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACzC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;SACzD;QAED,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED,eAAe,CAAC,OAA+B;QAC3C,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;YACvC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;SAC5B;QACD,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED,kBAAkB;IAClB;;;;;;;;;;;;;;;SAeK;IACL,qBAAqB,CAAC,QAAiB;QACnC,MAAM,eAAe,GAAG,KAAK,IAAI,EAAE;;YAC/B,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,iBAAiB,EAAE,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC;YACjG,IAAI,QAAQ,EAAE;gBACV,MAAM,IAAI,CAAC,MAAM,CAAC,EAAC,QAAQ,EAAC,CAAC,CAAC;aACjC;YACD,MAAA,IAAI,CAAC,KAAK,0CAAE,mBAAmB,CAAC,SAAS,EAAE,eAAe,EAAE;QAChE,CAAC,CAAC;QACF,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;YACxD,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,GAAG,EAAE;gBACxC,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,iBAAiB,EAAE,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC;YACtG,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;gBACtC,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,eAAe,EAAE,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC;YACnG,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;gBACtC,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,eAAe,EAAE,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;YAClG,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;gBACtC,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,iBAAiB,EAAE,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC;YACtG,CAAC,CAAC,CAAC;YAEH,IAAI,WAAgB,EAAE,YAAiB,CAAC;YACxC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,YAAY,EAAE,GAAG,EAAE;gBAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC1D,IAAI,WAAW,KAAK,IAAI,CAAC,iBAAiB,EAAE,IAAI,YAAY,KAAK,MAAM,CAAC,eAAe,EAAE;oBACrF,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAC;oBAC7E,WAAW,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBACvC,YAAY,GAAG,MAAM,CAAC,eAAe,CAAC;iBACzC;YACL,CAAC,CAAC,CAAC;SACN;IACL,CAAC;IAES,iBAAiB;QACvB,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;SACpC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAES,eAAe;QACrB,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAChD,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;oBAC7D,OAAO,CAAC,CAAC;iBACZ;aACJ;SACJ;QACD,OAAO,CAAC,CAAC,CAAC;IACd,CAAC;IAES,qBAAqB,CAAC,YAAoB;;QAChD,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC;QAC9B,OAAO;YACH,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE;YACjC,QAAQ,EAAE,CAAC,QAAC,IAAI,CAAC,YAAY,0CAAE,QAAQ,CAAA;YACvC,YAAY,EAAE,IAAI,CAAC,eAAe,EAAE;YACpC,MAAM,EAAE,YAAY;YACpB,eAAe,EAAE,OAAA,IAAI,CAAC,KAAK,0CAAE,WAAW,KAAI,CAAC;SAChD,CAAC;IACN,CAAC;IAES,KAAK,CAAC,UAAU,CAAC,IAAgB,EAAE,QAAiB;QAC1D,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,UAAU,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YAChC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAClC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SACrB;QACD,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;YACjC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YAEvB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC;gBAChB,aAAa,EAAE,IAAI;gBACnB,KAAK,EAAE,KAAK;gBACZ,YAAY,EAAE,IAAI;aACrB,CAAC,CAAC;YACH,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5B,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,EAAE,GAAG,EAAE;gBACnC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClC,CAAC,CAAC,CAAC;YAEH,2CAA2C;SAC9C;aAAM;YACH,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;SAClC;QAED,MAAM,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAE3C,IAAI,UAAU,EAAE;YACZ,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,GAAG,EAAE;gBACxC,IAAI,CAAC,IAAI,EAAE,CAAC;YAChB,CAAC,CAAC,CAAC;SACN;QAED,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,uBAAuB,EAAE;YAC7D,WAAW,EAAE,IAAI;SACpB,CAAC,CAAA;IACN,CAAC;IACS,YAAY,CAAC,OAA8B,EAAE,KAAU,EAAE,OAAgB;QAC/E,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;YAC3B,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE;gBACJ,OAAO,EAAE,OAAO;gBAChB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE;gBACrD,KAAK,EAAE,KAAK;aACf;SACJ,CAAC,CAAC;IACP,CAAC;IAIS,SAAS;QACf,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;SAC5B;QACD,OAAO,IAAI,OAAO,CACd,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAChB,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAChD,MAAM,CAAC,IAAI,GAAG,iBAAiB,CAAC;YAChC,MAAM,CAAC,GAAG,GAAG,2CAA2C,CAAC;YACzD,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAC7D,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE;gBACjB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YACpB,CAAC,CAAC;YACF,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE;gBAClB,MAAM,EAAE,CAAC;YACb,CAAC,CAAC;QACN,CAAC,CAAC,CAAC;IACX,CAAC;CACJ"}
@@ -585,15 +585,18 @@ class PlaylistWeb extends core.WebPlugin {
585
585
  const track = validateTrack(options.item);
586
586
  if (track) {
587
587
  this.playlistItems.push(track);
588
+ this.updateStatus(exports.RmxAudioStatusMessage.RMXSTATUS_ITEM_ADDED, track, track.trackId);
588
589
  }
589
590
  return Promise.resolve();
590
591
  }
591
592
  async clearAllItems() {
592
593
  await this.release();
593
594
  this.playlistItems = [];
595
+ this.updateStatus(exports.RmxAudioStatusMessage.RMXSTATUS_PLAYLIST_CLEARED, null, "INVALID");
594
596
  return Promise.resolve();
595
597
  }
596
598
  async initialize() {
599
+ this.updateStatus(exports.RmxAudioStatusMessage.RMXSTATUS_INIT, null, "INVALID");
597
600
  return Promise.resolve();
598
601
  }
599
602
  async pause() {
@@ -602,24 +605,28 @@ class PlaylistWeb extends core.WebPlugin {
602
605
  }
603
606
  async play() {
604
607
  var _a;
605
- return (_a = this.audio) === null || _a === void 0 ? void 0 : _a.play();
608
+ await ((_a = this.audio) === null || _a === void 0 ? void 0 : _a.play());
606
609
  }
607
- playTrackById(options) {
608
- this.playlistItems.forEach(async (item) => {
609
- if (item.trackId === options.id) {
610
- await this.setCurrent(item);
610
+ async playTrackById(options) {
611
+ for (let track of this.playlistItems) {
612
+ if (track.trackId === options.id) {
613
+ if (track !== this.currentTrack) {
614
+ await this.setCurrent(track);
615
+ }
611
616
  return this.play();
612
617
  }
613
- });
618
+ }
614
619
  return Promise.reject();
615
620
  }
616
- playTrackByIndex(options) {
617
- this.playlistItems.forEach(async (item, index) => {
621
+ async playTrackByIndex(options) {
622
+ for (let { index, item } of this.playlistItems.map((item, index) => ({ index, item }))) {
618
623
  if (index === options.index) {
619
- await this.setCurrent(item);
624
+ if (item !== this.currentTrack) {
625
+ await this.setCurrent(item);
626
+ }
620
627
  return this.play();
621
628
  }
622
- });
629
+ }
623
630
  return Promise.reject();
624
631
  }
625
632
  async release() {
@@ -630,17 +637,19 @@ class PlaylistWeb extends core.WebPlugin {
630
637
  removeItem(options) {
631
638
  this.playlistItems.forEach((item, index) => {
632
639
  if (options.index && options.index === index) {
633
- this.playlistItems.splice(index, 1);
640
+ const removedTrack = this.playlistItems.splice(index, 1);
641
+ this.updateStatus(exports.RmxAudioStatusMessage.RMXSTATUS_ITEM_REMOVED, removedTrack[0], removedTrack[0].trackId);
634
642
  }
635
643
  else if (options.id && options.id === item.trackId) {
636
- this.playlistItems.splice(index, 1);
644
+ const removedTrack = this.playlistItems.splice(index, 1);
645
+ this.updateStatus(exports.RmxAudioStatusMessage.RMXSTATUS_ITEM_REMOVED, removedTrack[0], removedTrack[0].trackId);
637
646
  }
638
647
  });
639
648
  return Promise.resolve();
640
649
  }
641
650
  removeItems(options) {
642
- options.items.forEach((item) => {
643
- this.removeItem(item);
651
+ options.items.forEach(async (item) => {
652
+ await this.removeItem(item);
644
653
  });
645
654
  return Promise.resolve();
646
655
  }
@@ -688,11 +697,15 @@ class PlaylistWeb extends core.WebPlugin {
688
697
  var _a;
689
698
  this.playlistItems = options.items;
690
699
  if (this.playlistItems.length > 0) {
691
- return this.setCurrent(this.playlistItems[0], ((_a = options.options) === null || _a === void 0 ? void 0 : _a.playFromPosition) || 0);
700
+ let currentItem = this.playlistItems.filter(i => { var _a; return i.trackId === ((_a = options.options) === null || _a === void 0 ? void 0 : _a.playFromId); })[0];
701
+ if (!currentItem) {
702
+ currentItem = this.playlistItems[0];
703
+ }
704
+ return this.setCurrent(currentItem, ((_a = options.options) === null || _a === void 0 ? void 0 : _a.playFromPosition) || 0);
692
705
  }
693
706
  return Promise.resolve();
694
707
  }
695
- skipForward() {
708
+ async skipForward() {
696
709
  let found = null;
697
710
  this.playlistItems.forEach((item, index) => {
698
711
  if (!found && this.getCurrentTrackId() === item.trackId) {
@@ -703,11 +716,15 @@ class PlaylistWeb extends core.WebPlugin {
703
716
  found = -1;
704
717
  }
705
718
  if (found !== null) {
719
+ this.updateStatus(exports.RmxAudioStatusMessage.RMX_STATUS_SKIP_BACK, {
720
+ currentIndex: found + 1,
721
+ currentItem: this.playlistItems[found + 1]
722
+ }, this.playlistItems[found + 1].trackId);
706
723
  return this.setCurrent(this.playlistItems[found + 1]);
707
724
  }
708
725
  return Promise.reject();
709
726
  }
710
- skipBack() {
727
+ async skipBack() {
711
728
  let found = null;
712
729
  this.playlistItems.forEach((item, index) => {
713
730
  if (!found && this.getCurrentTrackId() === item.trackId) {
@@ -718,8 +735,11 @@ class PlaylistWeb extends core.WebPlugin {
718
735
  found = this.playlistItems.length - 1;
719
736
  }
720
737
  if (found !== null) {
721
- this.setCurrent(this.playlistItems[found - 1]);
722
- return Promise.resolve();
738
+ this.updateStatus(exports.RmxAudioStatusMessage.RMX_STATUS_SKIP_BACK, {
739
+ currentIndex: found - 1,
740
+ currentItem: this.playlistItems[found - 1]
741
+ }, this.playlistItems[found - 1].trackId);
742
+ return this.setCurrent(this.playlistItems[found - 1]);
723
743
  }
724
744
  return Promise.reject();
725
745
  }
@@ -750,14 +770,7 @@ class PlaylistWeb extends core.WebPlugin {
750
770
  registerHtmlListeners(position) {
751
771
  const canPlayListener = async () => {
752
772
  var _a;
753
- this.notifyListeners('status', {
754
- action: 'status',
755
- status: {
756
- msgType: exports.RmxAudioStatusMessage.RMXSTATUS_CANPLAY,
757
- trackId: this.getCurrentTrackId(),
758
- value: this.getCurrentTrackStatus('loading'),
759
- }
760
- });
773
+ this.updateStatus(exports.RmxAudioStatusMessage.RMXSTATUS_CANPLAY, this.getCurrentTrackStatus('paused'));
761
774
  if (position) {
762
775
  await this.seekTo({ position });
763
776
  }
@@ -766,57 +779,22 @@ class PlaylistWeb extends core.WebPlugin {
766
779
  if (this.audio) {
767
780
  this.audio.addEventListener('canplay', canPlayListener);
768
781
  this.audio.addEventListener('playing', () => {
769
- this.notifyListeners('status', {
770
- action: 'status',
771
- status: {
772
- msgType: exports.RmxAudioStatusMessage.RMXSTATUS_PLAYING,
773
- trackId: this.getCurrentTrackId(),
774
- value: this.getCurrentTrackStatus('playing'),
775
- }
776
- });
782
+ this.updateStatus(exports.RmxAudioStatusMessage.RMXSTATUS_PLAYING, this.getCurrentTrackStatus('playing'));
777
783
  });
778
784
  this.audio.addEventListener('pause', () => {
779
- this.notifyListeners('status', {
780
- action: 'status',
781
- status: {
782
- msgType: exports.RmxAudioStatusMessage.RMXSTATUS_PAUSE,
783
- trackId: this.getCurrentTrackId(),
784
- value: this.getCurrentTrackStatus('paused'),
785
- }
786
- });
785
+ this.updateStatus(exports.RmxAudioStatusMessage.RMXSTATUS_PAUSE, this.getCurrentTrackStatus('paused'));
787
786
  });
788
787
  this.audio.addEventListener('error', () => {
789
- this.notifyListeners('status', {
790
- action: 'status',
791
- status: {
792
- msgType: exports.RmxAudioStatusMessage.RMXSTATUS_ERROR,
793
- trackId: this.getCurrentTrackId(),
794
- value: this.getCurrentTrackStatus('error'),
795
- }
796
- });
788
+ this.updateStatus(exports.RmxAudioStatusMessage.RMXSTATUS_ERROR, this.getCurrentTrackStatus('error'));
797
789
  });
798
790
  this.audio.addEventListener('ended', () => {
799
- this.notifyListeners('status', {
800
- action: 'status',
801
- status: {
802
- msgType: exports.RmxAudioStatusMessage.RMXSTATUS_STOPPED,
803
- trackId: this.getCurrentTrackId(),
804
- value: this.getCurrentTrackStatus('stopped'),
805
- }
806
- });
791
+ this.updateStatus(exports.RmxAudioStatusMessage.RMXSTATUS_STOPPED, this.getCurrentTrackStatus('stopped'));
807
792
  });
808
793
  let lastTrackId, lastPosition;
809
794
  this.audio.addEventListener('timeupdate', () => {
810
795
  const status = this.getCurrentTrackStatus(this.lastState);
811
796
  if (lastTrackId !== this.getCurrentTrackId() || lastPosition !== status.currentPosition) {
812
- this.notifyListeners('status', {
813
- action: 'status',
814
- status: {
815
- msgType: exports.RmxAudioStatusMessage.RMXSTATUS_PLAYBACK_POSITION,
816
- trackId: this.getCurrentTrackId(),
817
- value: status,
818
- }
819
- });
797
+ this.updateStatus(exports.RmxAudioStatusMessage.RMXSTATUS_PLAYBACK_POSITION, status);
820
798
  lastTrackId = this.getCurrentTrackId();
821
799
  lastPosition = status.currentPosition;
822
800
  }
@@ -883,28 +861,26 @@ class PlaylistWeb extends core.WebPlugin {
883
861
  this.play();
884
862
  });
885
863
  }
864
+ this.updateStatus(exports.RmxAudioStatusMessage.RMXSTATUS_TRACK_CHANGED, {
865
+ currentItem: item
866
+ });
867
+ }
868
+ updateStatus(msgType, value, trackId) {
886
869
  this.notifyListeners('status', {
887
870
  action: 'status',
888
871
  status: {
889
- msgType: exports.RmxAudioStatusMessage.RMXSTATUS_TRACK_CHANGED,
890
- trackId: this.getCurrentTrackId(),
891
- value: {
892
- currentItem: item
893
- }
872
+ msgType: msgType,
873
+ trackId: trackId ? trackId : this.getCurrentTrackId(),
874
+ value: value
894
875
  }
895
876
  });
896
877
  }
897
- log(message, ...optionalParams) {
898
- if (this.options.verbose) {
899
- console.log(message, ...optionalParams);
900
- }
901
- }
902
878
  loadHlsJs() {
903
879
  if (this.hlsLoaded) {
904
880
  return Promise.resolve();
905
881
  }
906
882
  return new Promise((resolve, reject) => {
907
- var script = document.createElement('script');
883
+ const script = document.createElement('script');
908
884
  script.type = 'text/javascript';
909
885
  script.src = 'https://cdn.jsdelivr.net/npm/hls.js@1.1.1';
910
886
  document.getElementsByTagName('head')[0].appendChild(script);