|
60 | 60 | ]; |
61 | 61 | bookmarks.sync($scope); |
62 | 62 |
|
63 | | - if(!NowPlaying.isOnline) initAudio(0); |
| 63 | + if(!NowPlaying.isOnline) initAudio(); |
64 | 64 | Buildfire.auth.getCurrentUser((err, user) => { |
65 | | - var userCheckViewFilter = {}; |
| 65 | + let userCheckViewFilter = {}; |
66 | 66 | if (user) { |
67 | 67 | $rootScope.user = user |
68 | | - var userCheckViewFilter = { |
| 68 | + userCheckViewFilter = { |
69 | 69 | filter: getIndexedFilter(media.id, $rootScope.user._id) |
70 | 70 | }; |
71 | 71 | } else if (Buildfire.context.deviceId) { |
72 | | - var userCheckViewFilter = { |
| 72 | + userCheckViewFilter = { |
73 | 73 | filter: getIndexedFilter(media.id, Buildfire.context.deviceId) |
74 | 74 | }; |
75 | 75 | } else { |
76 | | - initAudio(0) |
| 76 | + initAudio() |
77 | 77 | } |
78 | 78 | if (user || Buildfire.context.deviceId) { |
79 | 79 | buildfire.publicData.search(userCheckViewFilter, COLLECTIONS.MediaCount, function (err, res) { |
80 | 80 | if (res && res.length > 0) { |
81 | 81 | NowPlaying.isAudioPlayed = true; |
82 | 82 | if (res[0].data.lastPosition) { |
83 | | - initAudio(res[0].data.lastPosition) |
| 83 | + NowPlaying.lastSavedPosition = res[0].data.lastPosition; |
| 84 | + initAudio() |
84 | 85 | } else { |
85 | | - initAudio(0) |
| 86 | + initAudio() |
86 | 87 | } |
87 | 88 | } else { |
88 | 89 | NowPlaying.isAudioPlayed = false; |
89 | | - initAudio(0) |
| 90 | + initAudio() |
90 | 91 | } |
91 | 92 | }) |
92 | 93 | } |
|
284 | 285 | /** |
285 | 286 | * audioPlayer.onEvent callback calls when audioPlayer event fires. |
286 | 287 | */ |
287 | | - //var first = true; |
288 | | - var ready = false, setOder = false, first = false, open = true; |
| 288 | + var ready = false, setOder = false, open = true; |
289 | 289 | if($rootScope.activePlayerEvents){ |
290 | 290 | // Prevent the repetition of events by clearing all previous occurrences, as repeated events tend to occur when the user plays multiple audio files. |
291 | 291 | $rootScope.activePlayerEvents.clear(); |
292 | 292 | } |
293 | 293 | $rootScope.activePlayerEvents = audioPlayer.onEvent(function (e) { |
294 | 294 | switch (e.event) { |
295 | 295 | case 'play': |
296 | | - NowPlaying.currentTrack = e.data.track; |
297 | 296 | NowPlaying.playing = true; |
298 | 297 | NowPlaying.paused = false; |
299 | 298 | audioPlayer.getPlaylist(function (err, data) { |
300 | | - first = false; |
301 | 299 | NowPlaying.keepPosition = e.data.track.lastPosition; |
302 | 300 |
|
303 | | - var filteredPlaylist = data.tracks.filter(el => { return el.plugin && el.plugin == buildfire.context.instanceId; }); |
| 301 | + var filteredPlaylist = data.tracks.filter(el => { return el.instanceId && el.instanceId == buildfire.context.instanceId }); |
304 | 302 | var index = NowPlaying.findTrackIndex({ tracks: filteredPlaylist }, { myId: (e.data.track.myId) ? e.data.track.myId : "none" }); |
305 | 303 |
|
306 | | - NowPlaying.isItLast = (index == (filteredPlaylist.length - 1)); |
| 304 | + NowPlaying.isItLast = filteredPlaylist.length && (index == (filteredPlaylist.length - 1)); |
307 | 305 | if (index >= (filteredPlaylist.length - 1) && NowPlaying.forceAutoPlay && !NowPlaying.settings.loopPlaylist) { |
308 | 306 | NowPlaying.settings.autoPlayNext = false; |
309 | 307 | } |
|
326 | 324 | break; |
327 | 325 | case 'timeUpdate': |
328 | 326 | ready = e.data.duration && e.data.duration != null && e.data.duration > 0; |
329 | | - if (NowPlaying.forceAutoPlay) |
330 | | - if (ready && e.data.currentTime >= e.data.duration && !first) { |
331 | | - first = true; |
332 | | - audioPlayer.pause(); |
333 | | - audioPlayer.setTime(0.1); |
334 | | - if (NowPlaying.forceAutoPlay) |
335 | | - setTimeout(() => { |
336 | | - var myInterval = setInterval(() => { |
337 | | - if (setOder) { |
338 | | - setOder = false; |
339 | | - NowPlaying.playing = true; |
340 | | - audioPlayer.play(); |
341 | | - clearInterval(myInterval); |
342 | | - first = false; |
343 | | - } |
344 | | - }, 100); |
345 | | - }, 500); |
346 | | - } else if (ready && (NowPlaying.settings.autoPlayNext || NowPlaying.forceAutoPlay)) { |
347 | | - first = true; |
348 | | - if (ready && open && NowPlaying.keepPosition > 0 && iOS) { |
349 | | - NowPlaying.changeTime(NowPlaying.keepPosition); |
350 | | - open = false; |
351 | | - } |
352 | | - } |
| 327 | + |
353 | 328 | NowPlaying.currentTime = e.data.currentTime; |
354 | 329 | NowPlaying.duration = e.data.duration; |
355 | 330 | NowPlaying.progressBarStyle(e.data.currentTime); |
356 | 331 | break; |
357 | 332 | case 'audioEnded': |
| 333 | + NowPlaying.paused = true; |
| 334 | + NowPlaying.playing = false; |
358 | 335 | ready = false; |
359 | | - updateAudioLastPosition(media.id, 0.1) |
| 336 | + updateAudioLastPosition(media.id, 0); |
360 | 337 | if(typeof $rootScope.audioFromPlayList === 'number'){ |
361 | 338 | NowPlaying.playlistPause($rootScope.playListItems[$rootScope.audioFromPlayList]); |
362 | | - return false; |
363 | | - } |
364 | | - if ($rootScope.autoPlay) { |
| 339 | + } else if (NowPlaying.isItLast && NowPlaying.settings.loopPlaylist) { |
| 340 | + audioPlayer.getCurrentTrack((track) => { |
| 341 | + if ($rootScope.playListItems && $rootScope.playListItems.length > 0) { |
| 342 | + $rootScope.playListItems.forEach(element => { |
| 343 | + element.playing = false |
| 344 | + }); |
| 345 | + let currentTrack = $rootScope.playListItems.find(x => x.title == track.title && x.url == track.url && x.album == track.album && x.image == track.image && x.backgroundImage == track.backgroundImage) |
| 346 | + if (currentTrack) { |
| 347 | + currentTrack.playing = true |
| 348 | + } |
| 349 | + } |
| 350 | + |
| 351 | + NowPlaying.currentTime = 0; |
| 352 | + audioPlayer.setTime(0); |
| 353 | + NowPlaying.finished = false; |
| 354 | + audioPlayer.play(); |
| 355 | + NowPlaying.paused = false; |
| 356 | + NowPlaying.playing = true; |
| 357 | + }); |
| 358 | + } else if ($rootScope.autoPlay) { |
365 | 359 | $rootScope.playNextItem(); |
366 | 360 | } else { |
367 | | - if (NowPlaying.isItLast && NowPlaying.settings.loopPlaylist) { |
368 | | - audioPlayer.getCurrentTrack((track) => { |
369 | | - if ($rootScope.playListItems && $rootScope.playListItems.length > 0) { |
370 | | - $rootScope.playListItems.forEach(element => { |
371 | | - element.playing = false |
372 | | - }); |
373 | | - let currentTrack = $rootScope.playListItems.find(x => x.title == track.title && x.url == track.url && x.album == track.album && x.image == track.image && x.backgroundImage == track.backgroundImage) |
374 | | - if (currentTrack) { |
375 | | - currentTrack.playing = true |
376 | | - } |
377 | | - } |
378 | | - }); |
379 | | - |
380 | | - setTimeout(() => { |
381 | | - audioPlayer.setTime(0.1); |
382 | | - NowPlaying.finished = false; |
383 | | - audioPlayer.pause(); |
384 | | - setTimeout(() => { |
385 | | - audioPlayer.play(); |
386 | | - NowPlaying.paused = false; |
387 | | - NowPlaying.playing = true; |
388 | | - }, 50); |
389 | | - }, 50); |
| 361 | + isAudioEnded = true; |
| 362 | + if (!NowPlaying.settings.autoPlayNext) { |
| 363 | + NowPlaying.playing = false; |
| 364 | + NowPlaying.paused = true; |
390 | 365 | } |
391 | | - else { |
392 | | - isAudioEnded = true; |
393 | | - if (!NowPlaying.settings.autoPlayNext) { |
394 | | - NowPlaying.playing = false; |
395 | | - NowPlaying.paused = false; |
396 | | - } |
397 | | - if (NowPlaying.forceAutoPlay && NowPlaying.isItLast && !NowPlaying.settings.loopPlaylist) { |
398 | | - NowPlaying.playing = false; |
399 | | - NowPlaying.paused = true; |
400 | | - NowPlaying.finished = true; |
401 | | - } |
402 | | - else NowPlaying.finished = false; |
| 366 | + if (NowPlaying.forceAutoPlay && NowPlaying.isItLast && !NowPlaying.settings.loopPlaylist) { |
| 367 | + NowPlaying.playing = false; |
| 368 | + NowPlaying.paused = true; |
| 369 | + NowPlaying.finished = true; |
403 | 370 | } |
| 371 | + else NowPlaying.finished = false; |
404 | 372 | } |
405 | 373 | break; |
406 | 374 | case 'pause': |
| 375 | + NowPlaying.paused = true; |
407 | 376 | NowPlaying.playing = false; |
408 | 377 | break; |
409 | 378 | case 'next': |
|
435 | 404 | $scope.$digest(); |
436 | 405 | } |
437 | 406 | }); |
438 | | - function initAudio(lastPosition) { |
| 407 | + function initAudio() { |
439 | 408 | isAudioEnded = false; |
440 | | - NowPlaying.currentTime = lastPosition; |
441 | | - NowPlaying.currentTrack = new Track({...media.data, id: media.id}, lastPosition); |
| 409 | + NowPlaying.currentTrack = new Track({...media.data, id: media.id}, 0); |
442 | 410 | NowPlaying.currentTrack.backgroundImage = media.data.image ? media.data.image : media.data.topImage; |
443 | 411 |
|
444 | 412 | NowPlaying.currentTrack.image = media.data.topImage; |
|
451 | 419 | $scope.$digest(); |
452 | 420 | } |
453 | 421 | audioPlayer.settings.get(function (err, setting) { |
454 | | - |
455 | | - if (!setting.autoJumpToLastPosition) { |
456 | | - NowPlaying.currentTrack.startAt = 0; |
457 | | - } |
458 | 422 | NowPlaying.currentTime = 0; |
459 | 423 | NowPlaying.settings = setting; |
460 | 424 | NowPlaying.volume = setting.volume; |
|
463 | 427 | NowPlaying.autoJumpToLastPosition = setting.autoJumpToLastPosition; |
464 | 428 | }else{ |
465 | 429 | NowPlaying.settings.autoJumpToLastPosition = NowPlaying.autoJumpToLastPosition; |
| 430 | + audioPlayer.settings.set(NowPlaying.settings); |
| 431 | + } |
| 432 | + if ($rootScope.autoPlay) { |
| 433 | + NowPlaying.playTrack(); |
466 | 434 | } |
467 | 435 | $scope.$digest(); |
468 | | - audioPlayer.settings.set(NowPlaying.settings); |
469 | | - setTimeout(() => { |
470 | | - if ($rootScope.autoPlay) { |
471 | | - NowPlaying.playTrack(); |
472 | | - } |
473 | | - }, 0); |
474 | 436 | $scope.$apply(); |
475 | 437 | }); |
476 | 438 |
|
|
654 | 616 | } |
655 | 617 | }); |
656 | 618 | if (NowPlaying.paused) { |
657 | | - audioPlayer.play(); |
658 | | - if (NowPlaying.finished) |
659 | | - setTimeout(() => { |
660 | | - NowPlaying.finished = false; |
661 | | - audioPlayer.pause(); |
662 | | - setTimeout(() => { |
663 | | - audioPlayer.play(); |
664 | | - NowPlaying.paused = false; |
665 | | - NowPlaying.playing = true; |
666 | | - }, 50); |
667 | | - }, 50); |
| 619 | + if (NowPlaying.finished) { |
| 620 | + NowPlaying.currentTime = 0; |
| 621 | + audioPlayer.setTime(0); |
| 622 | + NowPlaying.finished = false; |
| 623 | + audioPlayer.play(); |
| 624 | + NowPlaying.paused = false; |
| 625 | + NowPlaying.playing = true; |
| 626 | + } else { |
| 627 | + audioPlayer.play(); |
| 628 | + } |
668 | 629 | } else { |
669 | | - setTimeout(() => { |
670 | | - try { |
671 | | - if (index != -1) { |
672 | | - audioPlayer.play(index); |
| 630 | + if (index != -1) { |
| 631 | + audioPlayer.play(index); |
| 632 | + } else { |
| 633 | + audioPlayer.getCurrentTrack(_currentTrack => { |
| 634 | + if (_currentTrack && _currentTrack.deepLinkData && _currentTrack.deepLinkData.payload |
| 635 | + && _currentTrack.deepLinkData.payload.id === NowPlaying.currentTrack.deepLinkData.payload.id) { |
| 636 | + NowPlaying.currentTrack.startAt = _currentTrack.lastPosition; |
| 637 | + NowPlaying.currentTime = _currentTrack.lastPosition; |
| 638 | + } else if (NowPlaying.autoJumpToLastPosition && NowPlaying.lastSavedPosition) { |
| 639 | + NowPlaying.currentTrack.startAt = NowPlaying.lastSavedPosition; |
673 | 640 | } |
674 | | - else { |
675 | | - $rootScope.audioFromPlayList = null; |
676 | | - if (isAudioEnded) { |
677 | | - NowPlaying.currentTrack.lastPosition = 0 |
678 | | - } |
679 | | - audioPlayer.play(NowPlaying.currentTrack); |
680 | | - audioPlayer.pause(); |
681 | | - setTimeout(() => { |
682 | | - audioPlayer.play(); |
683 | | - NowPlaying.paused = false; |
684 | | - NowPlaying.playing = true; |
685 | | - }, 50); |
| 641 | + |
| 642 | + $rootScope.audioFromPlayList = null; |
| 643 | + if (isAudioEnded) { |
| 644 | + NowPlaying.currentTrack.startAt = 0; |
| 645 | + NowPlaying.currentTrack.lastPosition = 0 |
686 | 646 | } |
687 | | - NowPlaying.isAudioPlayerPlayingAnotherSong = false; |
688 | | - } |
689 | | - catch (err) { |
690 | | - } |
691 | | - }, 500); |
692 | 647 |
|
| 648 | + audioPlayer.play(NowPlaying.currentTrack); |
| 649 | + NowPlaying.paused = false; |
| 650 | + NowPlaying.playing = true; |
| 651 | + }); |
| 652 | + } |
| 653 | + NowPlaying.isAudioPlayerPlayingAnotherSong = false; |
693 | 654 | } |
694 | 655 | } |
695 | 656 |
|
|
701 | 662 | } |
702 | 663 | NowPlaying.playing = true; |
703 | 664 | if (typeof index==='number') { |
| 665 | + NowPlaying.currentTrack = track; |
704 | 666 | NowPlaying.isAudioPlayerPlayingAnotherSong = false; |
705 | 667 | audioPlayer.pause(); |
706 | 668 | audioPlayer.play(index); |
|
0 commit comments