capacitor-plugin-playlist 0.1.24 → 0.1.28

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
 
@@ -48,7 +45,8 @@ ext {
48
45
  exoPlayerVersion = "2.9.6"
49
46
  supportLibVersion = "28.0.0"
50
47
  }
51
- ##### AndroidManifest.xml`:
48
+ ```
49
+ ##### AndroidManifest.xml:
52
50
  ```
53
51
  <uses-permission android:name="android.permission.WAKE_LOCK" />
54
52
  <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
@@ -59,8 +57,20 @@ ext {
59
57
  android:name="org.dwbn.plugins.playlist.service.MediaService">
60
58
  </service>
61
59
  </application>
60
+ ```
62
61
 
62
+ ##### Glide image loading for notifiction center
63
+ To be able to use glide you need to create a file MyAppGlideModule.java:
63
64
  ```
65
+ package org.your.package.namespace;
66
+
67
+ import com.bumptech.glide.annotation.GlideModule;
68
+ import com.bumptech.glide.module.AppGlideModule;
69
+
70
+ @GlideModule
71
+ public final class MyAppGlideModule extends AppGlideModule {}
72
+ ```
73
+ also see https://guides.codepath.com/android/Displaying-Images-with-the-Glide-Library
64
74
 
65
75
  ### iOS
66
76
  ##### inside Info.plist:
@@ -95,9 +105,32 @@ Be sure to check out the examples folder, where you can find an Angular10/Ionic5
95
105
  Just drop into your project and go.
96
106
  Should be quite obvious howto adapt this for other frameworks, or just vanillaJS
97
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
+
124
+ ### Migrating from cordova-plugin-playlist
125
+
126
+ See the use the shipped RmxAudioPlayer.ts
127
+
128
+ Its a meant as a drop in replacement
129
+
130
+ in the best case you only change your import. :D
131
+
132
+
98
133
  ## 5. Todo
99
- * [iOS] Write this plugin in Swift instead of Objective-C. I didn't have time to learn Swift when I needed this.
100
- * [iOS] Safely implement cover art for cover images displayed on the command/lock screen controls
101
134
  * [iOS] Utilize [AudioPlayer](https://github.com/delannoyk/AudioPlayer) instead of directly implementing AVQueuePlayer. `AudioPlayer` includes some smart network recovery features
102
135
  * [iOS, Android] Add a full example
103
136
 
@@ -0,0 +1 @@
1
+ /build
@@ -0,0 +1 @@
1
+ /build
@@ -0,0 +1,34 @@
1
+ package org.dwbn.plugins.playlist
2
+
3
+ import android.util.Log
4
+ import com.getcapacitor.JSObject
5
+ import org.json.JSONException
6
+ import org.json.JSONObject
7
+
8
+ class OnStatusCallback internal constructor(private val plugin: PlaylistPlugin) {
9
+ fun onStatus(what: RmxAudioStatusMessage, trackId: String?, param: JSONObject?) {
10
+ val data = JSObject()
11
+ val detail = JSObject()
12
+ detail.put("msgType", what.value)
13
+ detail.put("trackId", trackId)
14
+ detail.put("value", param)
15
+ data.put("action", "status")
16
+ data.put("status", detail)
17
+ Log.v(TAG, "statusChanged:$data")
18
+ plugin.emit("status", data)
19
+ }
20
+
21
+ companion object {
22
+ private const val TAG = "PlaylistStatusCallback"
23
+ fun createErrorWithCode(code: RmxAudioErrorType?, message: String?): JSONObject {
24
+ val error = JSONObject()
25
+ try {
26
+ error.put("code", code)
27
+ error.put("message", message ?: "")
28
+ } catch (e: JSONException) {
29
+ Log.e(TAG, "Exception while raising onStatus: ", e)
30
+ }
31
+ return error
32
+ }
33
+ }
34
+ }
@@ -11,7 +11,7 @@ import java.util.*
11
11
 
12
12
  @CapacitorPlugin(name = "Playlist")
13
13
  class PlaylistPlugin : Plugin(), OnStatusReportListener {
14
- var TAG = "RmxAudioPlayer"
14
+ var TAG = "PlaylistPlugin"
15
15
  private var statusCallback: OnStatusCallback? = null
16
16
  private var audioPlayerImpl: RmxAudioPlayer? = null
17
17
  private var resetStreamOnPause = true
@@ -24,9 +24,9 @@ class PlaylistPlugin : Plugin(), OnStatusReportListener {
24
24
  fun initialize(call: PluginCall) {
25
25
  statusCallback = OnStatusCallback(this)
26
26
  onStatus(RmxAudioStatusMessage.RMXSTATUS_REGISTER, "INIT", null)
27
- call.resolve()
28
- Log.i(TAG, "Initialized")
27
+ Log.i(TAG, "Initialized...")
29
28
  audioPlayerImpl!!.resume()
29
+ call.resolve()
30
30
  }
31
31
  @PluginMethod
32
32
  fun setOptions(call: PluginCall) {
@@ -107,9 +107,9 @@ class PlaylistPlugin : Plugin(), OnStatusReportListener {
107
107
 
108
108
  @PluginMethod
109
109
  fun removeItem(call: PluginCall) {
110
- val trackIndex: Int = call.getInt("trackIndex", -1)!!
111
- val trackId: String = call.getString("tracktrackId", "")!!
112
- Log.i(TAG,"removeItem")
110
+ val trackIndex: Int = call.getInt("index", -1)!!
111
+ val trackId: String = call.getString("id", "")!!
112
+ Log.i(TAG,"removeItem trackIn" )
113
113
  val item = audioPlayerImpl!!.playlistManager.removeItem(trackIndex, trackId)
114
114
 
115
115
  if (item != null) {
@@ -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()
@@ -278,7 +278,7 @@ class PlaylistPlugin : Plugin(), OnStatusReportListener {
278
278
 
279
279
  val isPlaying: Boolean? = audioPlayerImpl!!.playlistManager.playlistHandler?.currentMediaPlayer?.isPlaying
280
280
  audioPlayerImpl!!.playlistManager.playlistHandler?.seek(seekPosition)
281
- if (!isPlaying!!) {
281
+ if (isPlaying === null || !isPlaying) {
282
282
  audioPlayerImpl!!.playlistManager.playlistHandler?.pause(false)
283
283
  }
284
284
 
@@ -294,7 +294,7 @@ class PlaylistPlugin : Plugin(), OnStatusReportListener {
294
294
 
295
295
  call.resolve()
296
296
 
297
- Log.i(TAG,"addItem")
297
+ Log.i(TAG,"setPlaybackRate")
298
298
  }
299
299
 
300
300
  @PluginMethod
@@ -321,7 +321,7 @@ class PlaylistPlugin : Plugin(), OnStatusReportListener {
321
321
  onStatus(RmxAudioStatusMessage.RMXSTATUS_ERROR, trackId, errorObj)
322
322
  }
323
323
 
324
- override fun onStatus(what: RmxAudioStatusMessage?, trackId: String?, param: JSONObject?) {
324
+ override fun onStatus(what: RmxAudioStatusMessage, trackId: String?, param: JSONObject?) {
325
325
  if (statusCallback == null) {
326
326
  return
327
327
  }
@@ -355,6 +355,6 @@ class PlaylistPlugin : Plugin(), OnStatusReportListener {
355
355
  }
356
356
 
357
357
  fun emit(name: String, data: JSObject) {
358
- this.notifyListeners(name, data)
358
+ this.notifyListeners(name, data, true)
359
359
  }
360
360
  }
@@ -29,7 +29,7 @@ import org.json.JSONObject;
29
29
  public class RmxAudioPlayer implements PlaybackStatusListener<AudioTrack>,
30
30
  PlaylistListener<AudioTrack>, ProgressListener, OnErrorListener, MediaControlsListener {
31
31
 
32
- public static String TAG = "RmxAudioPlayer";
32
+ public static String TAG = "PlaylistRmxAudioPlayer";
33
33
 
34
34
  // PlaylistCore requires this but we don't use it
35
35
  // It would be used to switch between playlists. I guess we could
@@ -68,7 +68,7 @@ public class RmxAudioPlayer implements PlaybackStatusListener<AudioTrack>,
68
68
 
69
69
  public boolean getResetStreamOnPause() {
70
70
  return resetStreamOnPause;
71
- }
71
+ }
72
72
 
73
73
  public void setResetStreamOnPause(boolean val) {
74
74
  resetStreamOnPause = val;
@@ -257,7 +257,7 @@ class PlaylistManager(application: Application) :
257
257
  fun setPlaybackSpeed(@FloatRange(from = 0.0, to = 1.0) speed: Float) {
258
258
  playbackSpeed = speed
259
259
  if (currentMediaPlayer != null && currentMediaPlayer!!.get() != null && currentMediaPlayer!!.get() is AudioApi) {
260
- Log.i("PlaylistManager", "setPlaybackSpeed completing with speed = $speed")
260
+ Log.i(TAG, "setPlaybackSpeed completing with speed = $speed")
261
261
  (currentMediaPlayer!!.get() as AudioApi?)!!.setPlaybackSpeed(playbackSpeed)
262
262
  }
263
263
  }
@@ -26,7 +26,7 @@ import org.jetbrains.annotations.NotNull;
26
26
  public class AudioPlaylistHandler<I extends PlaylistItem, M extends BasePlaylistManager<I>>
27
27
  extends DefaultPlaylistHandler<I, M> {
28
28
 
29
- private static final String TAG = "AudioPlaylistHandler";
29
+ private static final String TAG = "PlaylistAudioPlaylistHandler";
30
30
 
31
31
  AudioPlaylistHandler(
32
32
  Context context,
@@ -47,6 +47,11 @@ public class AudioPlaylistHandler<I extends PlaylistItem, M extends BasePlaylist
47
47
  getMediaProgressPoll().setProgressPollDelay(1000);
48
48
  }
49
49
 
50
+ public void next() {
51
+ getPlaylistManager().next();
52
+ startItemPlayback(0, !this.isPlaying());
53
+ }
54
+
50
55
  @Override
51
56
  public void onPrepared(@NotNull MediaPlayerApi<I> mediaPlayer) {
52
57
  super.onPrepared(mediaPlayer);
@@ -3,8 +3,7 @@ import { AudioPlayerEventHandler, AudioPlayerEventHandlers, AudioPlayerOptions,
3
3
  export declare class RmxAudioPlayer {
4
4
  handlers: AudioPlayerEventHandlers;
5
5
  options: AudioPlayerOptions;
6
- private _inititialized;
7
- private _initPromise;
6
+ private readonly _initPromise;
8
7
  private _readyResolve;
9
8
  private _readyReject;
10
9
  private _currentState;
@@ -17,10 +16,6 @@ export declare class RmxAudioPlayer {
17
16
  * or interrogate it.
18
17
  */
19
18
  get currentState(): "stopped" | "error" | "paused" | "loading" | "playing" | "unknown" | "ready";
20
- /**
21
- * True if the plugin has been initialized. You'll likely never see this state; it is handled internally.
22
- */
23
- get isInitialized(): boolean;
24
19
  get currentTrack(): AudioTrack | null;
25
20
  /**
26
21
  * If the playlist is currently playling a track.
@@ -22,7 +22,6 @@ export class RmxAudioPlayer {
22
22
  constructor() {
23
23
  this.handlers = {};
24
24
  this.options = { verbose: false, resetStreamOnPause: true };
25
- this._inititialized = false;
26
25
  this._readyResolve = () => {
27
26
  };
28
27
  this._readyReject = () => {
@@ -51,7 +50,6 @@ export class RmxAudioPlayer {
51
50
  });
52
51
  try {
53
52
  await Playlist.initialize();
54
- this._inititialized = true;
55
53
  this._readyResolve();
56
54
  }
57
55
  catch (args) {
@@ -59,7 +57,6 @@ export class RmxAudioPlayer {
59
57
  console.warn(message, args);
60
58
  this._readyReject();
61
59
  }
62
- return this._initPromise;
63
60
  };
64
61
  /**
65
62
  * Sets the player options. This can be called at any time and is not required before playback can be initiated.
@@ -202,13 +199,13 @@ export class RmxAudioPlayer {
202
199
  return Playlist.setLoop({ loop: loop });
203
200
  };
204
201
  this.handlers = {};
202
+ new Promise((resolve) => {
203
+ window.addEventListener('beforeunload', () => resolve(), { once: true });
204
+ }).then(() => Playlist.release());
205
205
  this._initPromise = new Promise((resolve, reject) => {
206
206
  this._readyResolve = resolve;
207
207
  this._readyReject = reject;
208
208
  });
209
- new Promise((resolve) => {
210
- window.addEventListener('beforeunload', () => resolve(), { once: true });
211
- }).then(() => Playlist.release());
212
209
  }
213
210
  /**
214
211
  * The current summarized state of the player, as a string. It is preferred that you use the 'isX' accessors,
@@ -218,12 +215,6 @@ export class RmxAudioPlayer {
218
215
  get currentState() {
219
216
  return this._currentState;
220
217
  }
221
- /**
222
- * True if the plugin has been initialized. You'll likely never see this state; it is handled internally.
223
- */
224
- get isInitialized() {
225
- return this._inititialized;
226
- }
227
218
  get currentTrack() {
228
219
  return this._currentItem;
229
220
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RmxAudioPlayer.js","sourceRoot":"","sources":["../../src/RmxAudioPlayer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RmxAudioPlayer.js","sourceRoot":"","sources":["../../src/RmxAudioPlayer.ts"],"names":[],"mappings":"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"}
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_ADDED, 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_ADDED, 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
  }
@@ -126,7 +135,7 @@ export class PlaylistWeb extends WebPlugin {
126
135
  }
127
136
  return Promise.resolve();
128
137
  }
129
- skipForward() {
138
+ async skipForward() {
130
139
  let found = null;
131
140
  this.playlistItems.forEach((item, index) => {
132
141
  if (!found && this.getCurrentTrackId() === item.trackId) {
@@ -137,11 +146,15 @@ export class PlaylistWeb extends WebPlugin {
137
146
  found = -1;
138
147
  }
139
148
  if (found !== null) {
149
+ this.updateStatus(RmxAudioStatusMessage.RMX_STATUS_SKIP_BACK, {
150
+ currentIndex: found + 1,
151
+ currentItem: this.playlistItems[found + 1]
152
+ }, this.playlistItems[found + 1].trackId);
140
153
  return this.setCurrent(this.playlistItems[found + 1]);
141
154
  }
142
155
  return Promise.reject();
143
156
  }
144
- skipBack() {
157
+ async skipBack() {
145
158
  let found = null;
146
159
  this.playlistItems.forEach((item, index) => {
147
160
  if (!found && this.getCurrentTrackId() === item.trackId) {
@@ -152,8 +165,11 @@ export class PlaylistWeb extends WebPlugin {
152
165
  found = this.playlistItems.length - 1;
153
166
  }
154
167
  if (found !== null) {
155
- this.setCurrent(this.playlistItems[found - 1]);
156
- return Promise.resolve();
168
+ this.updateStatus(RmxAudioStatusMessage.RMX_STATUS_SKIP_BACK, {
169
+ currentIndex: found - 1,
170
+ currentItem: this.playlistItems[found - 1]
171
+ }, this.playlistItems[found - 1].trackId);
172
+ return this.setCurrent(this.playlistItems[found - 1]);
157
173
  }
158
174
  return Promise.reject();
159
175
  }
@@ -184,14 +200,7 @@ export class PlaylistWeb extends WebPlugin {
184
200
  registerHtmlListeners(position) {
185
201
  const canPlayListener = async () => {
186
202
  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
- });
203
+ this.updateStatus(RmxAudioStatusMessage.RMXSTATUS_CANPLAY, this.getCurrentTrackStatus('paused'));
195
204
  if (position) {
196
205
  await this.seekTo({ position });
197
206
  }
@@ -200,57 +209,22 @@ export class PlaylistWeb extends WebPlugin {
200
209
  if (this.audio) {
201
210
  this.audio.addEventListener('canplay', canPlayListener);
202
211
  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
- });
212
+ this.updateStatus(RmxAudioStatusMessage.RMXSTATUS_PLAYING, this.getCurrentTrackStatus('playing'));
211
213
  });
212
214
  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
- });
215
+ this.updateStatus(RmxAudioStatusMessage.RMXSTATUS_PAUSE, this.getCurrentTrackStatus('paused'));
221
216
  });
222
217
  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
- });
218
+ this.updateStatus(RmxAudioStatusMessage.RMXSTATUS_ERROR, this.getCurrentTrackStatus('error'));
231
219
  });
232
220
  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
- });
221
+ this.updateStatus(RmxAudioStatusMessage.RMXSTATUS_STOPPED, this.getCurrentTrackStatus('stopped'));
241
222
  });
242
223
  let lastTrackId, lastPosition;
243
224
  this.audio.addEventListener('timeupdate', () => {
244
225
  const status = this.getCurrentTrackStatus(this.lastState);
245
226
  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
- });
227
+ this.updateStatus(RmxAudioStatusMessage.RMXSTATUS_PLAYBACK_POSITION, status);
254
228
  lastTrackId = this.getCurrentTrackId();
255
229
  lastPosition = status.currentPosition;
256
230
  }
@@ -317,28 +291,26 @@ export class PlaylistWeb extends WebPlugin {
317
291
  this.play();
318
292
  });
319
293
  }
294
+ this.updateStatus(RmxAudioStatusMessage.RMXSTATUS_TRACK_CHANGED, {
295
+ currentItem: item
296
+ });
297
+ }
298
+ updateStatus(msgType, value, trackId) {
320
299
  this.notifyListeners('status', {
321
300
  action: 'status',
322
301
  status: {
323
- msgType: RmxAudioStatusMessage.RMXSTATUS_TRACK_CHANGED,
324
- trackId: this.getCurrentTrackId(),
325
- value: {
326
- currentItem: item
327
- }
302
+ msgType: msgType,
303
+ trackId: trackId ? trackId : this.getCurrentTrackId(),
304
+ value: value
328
305
  }
329
306
  });
330
307
  }
331
- log(message, ...optionalParams) {
332
- if (this.options.verbose) {
333
- console.log(message, ...optionalParams);
334
- }
335
- }
336
308
  loadHlsJs() {
337
309
  if (this.hlsLoaded) {
338
310
  return Promise.resolve();
339
311
  }
340
312
  return new Promise((resolve, reject) => {
341
- var script = document.createElement('script');
313
+ const script = document.createElement('script');
342
314
  script.type = 'text/javascript';
343
315
  script.src = 'https://cdn.jsdelivr.net/npm/hls.js@1.1.1';
344
316
  document.getElementsByTagName('head')[0].appendChild(script);