Skip to content

Commit fb90e1b

Browse files
author
Ariel Faur
committed
fixed pause button bug
v.1.2.4
1 parent 7b79a91 commit fb90e1b

File tree

6 files changed

+34
-26
lines changed

6 files changed

+34
-26
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## v1.2.4
2+
3+
- fixed bug where pause button was disabled and was not possible to stop playback
4+
15
## v1.2.3
26

37
- fixed slider bug to allow seeking-to when track is paused

bower.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "ionic-audio",
33
"description": "Ionic UI for the Cordova Media Plugin",
4-
"version": "1.2.3",
4+
"version": "1.2.4",
55
"homepage": "https://github.com/arielfaur/ionic-audio.git",
66
"license": "MIT",
77
"private": false,
@@ -11,6 +11,6 @@
1111
"angular-mocks": "~1.3.x"
1212
},
1313
"devDependencies": {
14-
"ionic": "driftyco/ionic-bower#1.0.0-rc.5"
14+
"ionic": "driftyco/ionic-bower#1.0.1"
1515
}
1616
}

dist/ion-audio.js

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,7 @@ angular.module('ionic-audio', ['ionic'])
284284
restrict: 'EA',
285285
scope: {},
286286
require: ['ionAudioControls', '^^ionAudioTrack'],
287-
controller: ['$scope', '$element', '$attrs', function($scope, $element, $attrs) {
287+
controller: ['$scope', '$element', function($scope, $element) {
288288
var spinnerElem = $element.find('ion-spinner'), hasLoaded, self = this;
289289

290290
spinnerElem.addClass('ng-hide');
@@ -334,19 +334,21 @@ angular.module('ionic-audio', ['ionic'])
334334
}])
335335
.directive('ionAudioPlay', [function() {
336336
return {
337-
scope: true,
337+
//scope: true,
338338
restrict: 'A',
339339
require: '^^ionAudioControls',
340340
link: function(scope, element, attrs, controller) {
341+
var isLoading, currentStatus = 0;
341342

342343
var init = function() {
344+
isLoading = false;
343345
element.addClass('ion-play');
344346
element.removeClass('ion-pause');
345347
element.text(attrs.textPlay);
346348
};
347349

348350
var setText = function() {
349-
if (!attrs.textPlay || !attrs.textPause) return '';
351+
if (!attrs.textPlay || !attrs.textPause) return;
350352

351353
element.text((element.text() == attrs.textPlay ? attrs.textPause : attrs.textPlay));
352354
};
@@ -357,22 +359,22 @@ angular.module('ionic-audio', ['ionic'])
357359
};
358360

359361
element.on('click', function() {
360-
element.prop('disabled', true);
361-
// call main directive's play method
362+
if (isLoading) return; // debounce multiple clicks
363+
362364
controller.playTrack();
363365
togglePlaying();
366+
if (currentStatus == 0) isLoading = true;
364367
});
365368

366369
var unbindStatusListener = scope.$watch('track.status', function (status) {
367370
// Media.MEDIA_NONE or Media.MEDIA_STOPPED
368371
if (status == 0 || status == 4) {
369372
init();
373+
} else if (status == 2) { // Media.MEDIA_RUNNING
374+
isLoading = false;
370375
}
371376

372-
// Media.MEDIA_RUNNING or Media.MEDIA_PAUSED
373-
if (status == 2 || status == 3) {
374-
element.prop('disabled', false);
375-
}
377+
currentStatus = status;
376378
});
377379

378380
init();
@@ -417,8 +419,9 @@ angular.module('ionic-audio', ['ionic'])
417419
return { visibility: angular.isDefined(attrs.displayInfo) && (scope.track.title || scope.track.artist) ? 'visible' : 'hidden'}
418420
};
419421

420-
// disable slider if track hasn't loaded
422+
// disable slider if track is not playing
421423
var unbindStatusListener = scope.$watch('track.status', function(status) {
424+
// disable if track hasn't loaded
422425
slider.prop('disabled', status == 0); // Media.MEDIA_NONE
423426
});
424427

@@ -443,7 +446,6 @@ angular.module('ionic-audio', ['ionic'])
443446
if (angular.isDefined(unbindTrackListener)) {
444447
unbindTrackListener();
445448
}
446-
MediaManager.destroy();
447449
});
448450
}
449451
}

example-audio/bower.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "example-audio",
33
"private": "true",
44
"devDependencies": {
5-
"ionic": "driftyco/ionic-bower#1.0.0-rc.5"
5+
"ionic": "driftyco/ionic-bower#1.0.1"
66
},
77
"dependencies": {
88
"ngCordova": "*"

example-audio/www/js/ion-audio.js

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,7 @@ angular.module('ionic-audio', ['ionic'])
284284
restrict: 'EA',
285285
scope: {},
286286
require: ['ionAudioControls', '^^ionAudioTrack'],
287-
controller: ['$scope', '$element', '$attrs', function($scope, $element, $attrs) {
287+
controller: ['$scope', '$element', function($scope, $element) {
288288
var spinnerElem = $element.find('ion-spinner'), hasLoaded, self = this;
289289

290290
spinnerElem.addClass('ng-hide');
@@ -334,19 +334,21 @@ angular.module('ionic-audio', ['ionic'])
334334
}])
335335
.directive('ionAudioPlay', [function() {
336336
return {
337-
scope: true,
337+
//scope: true,
338338
restrict: 'A',
339339
require: '^^ionAudioControls',
340340
link: function(scope, element, attrs, controller) {
341+
var isLoading, currentStatus = 0;
341342

342343
var init = function() {
344+
isLoading = false;
343345
element.addClass('ion-play');
344346
element.removeClass('ion-pause');
345347
element.text(attrs.textPlay);
346348
};
347349

348350
var setText = function() {
349-
if (!attrs.textPlay || !attrs.textPause) return '';
351+
if (!attrs.textPlay || !attrs.textPause) return;
350352

351353
element.text((element.text() == attrs.textPlay ? attrs.textPause : attrs.textPlay));
352354
};
@@ -357,22 +359,22 @@ angular.module('ionic-audio', ['ionic'])
357359
};
358360

359361
element.on('click', function() {
360-
element.prop('disabled', true);
361-
// call main directive's play method
362+
if (isLoading) return; // debounce multiple clicks
363+
362364
controller.playTrack();
363365
togglePlaying();
366+
if (currentStatus == 0) isLoading = true;
364367
});
365368

366369
var unbindStatusListener = scope.$watch('track.status', function (status) {
367370
// Media.MEDIA_NONE or Media.MEDIA_STOPPED
368371
if (status == 0 || status == 4) {
369372
init();
373+
} else if (status == 2) { // Media.MEDIA_RUNNING
374+
isLoading = false;
370375
}
371376

372-
// Media.MEDIA_RUNNING or Media.MEDIA_PAUSED
373-
if (status == 2 || status == 3) {
374-
element.prop('disabled', false);
375-
}
377+
currentStatus = status;
376378
});
377379

378380
init();
@@ -417,8 +419,9 @@ angular.module('ionic-audio', ['ionic'])
417419
return { visibility: angular.isDefined(attrs.displayInfo) && (scope.track.title || scope.track.artist) ? 'visible' : 'hidden'}
418420
};
419421

420-
// disable slider if track hasn't loaded
422+
// disable slider if track is not playing
421423
var unbindStatusListener = scope.$watch('track.status', function(status) {
424+
// disable if track hasn't loaded
422425
slider.prop('disabled', status == 0); // Media.MEDIA_NONE
423426
});
424427

@@ -443,7 +446,6 @@ angular.module('ionic-audio', ['ionic'])
443446
if (angular.isDefined(unbindTrackListener)) {
444447
unbindTrackListener();
445448
}
446-
MediaManager.destroy();
447449
});
448450
}
449451
}

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "ionic-audio",
33
"private": false,
4-
"version": "1.2.3",
4+
"version": "1.2.4",
55
"description": "Ionic UI for the Cordova Media Plugin",
66
"repository": "https://github.com/arielfaur/ionic-audio.git",
77
"license": "MIT",

0 commit comments

Comments
 (0)