Skip to content

Commit

Permalink
feat: add notification on track when its media is not available
Browse files Browse the repository at this point in the history
  • Loading branch information
Hugo Vieilledent committed Jul 12, 2018
1 parent a9ea840 commit da696c9
Show file tree
Hide file tree
Showing 9 changed files with 42 additions and 7 deletions.
6 changes: 6 additions & 0 deletions app/components/track-contextual/template.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,11 @@
<optgroup label="Manage">
<option value="editTrack">Edit</option>
</optgroup>
{{#if track.mediaNotAvailable}}
<optgroup label="Suggestions">
<option value="editTrack">-> Fix broken media URL</option>
</optgroup>
{{/if}}
{{/if}}

</select>
4 changes: 4 additions & 0 deletions app/components/track-edit/component.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@ export default TrackFormComponent.extend({

disableSubmit: computed.oneWay('track.validations.isInvalid'),

youtubeSearchUrl: computed('track.title', function() {
return `https://www.youtube.com/results?search_query=${this.get('track.title')}`
}),

submitTask: task(function * (event) {
event.preventDefault()
yield get(this, 'track.update').perform()
Expand Down
12 changes: 8 additions & 4 deletions app/components/track-edit/template.hbs
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{{#form-group
model=track
valuePath="url"
label="URL"
hint="Paste in the URL of a YouTube video" as |value|}}
model=track
valuePath="url"
label="URL"
hint="Paste in the URL of a YouTube video" as |value|}}
{{focus-input
type="url"
value=value
Expand All @@ -12,6 +12,10 @@
autoSelect=true}}
{{/form-group}}

{{#if track.mediaNotAvailable}}
<p>This link seems to be broken, <a href={{youtubeSearchUrl}} target="_blank" rel="noopener">find a new one</a>!</p>
{{/if}}

{{#form-group
model=track
valuePath="title"
Expand Down
3 changes: 2 additions & 1 deletion app/components/track-item/component.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ export default Component.extend({
// 'isCurrent',
'track.liveInCurrentPlayer:Track--live',
'track.playedInCurrentPlayer:Track--played',
'track.finishedInCurrentPlayer:Track--finished'
'track.finishedInCurrentPlayer:Track--finished',
'track.mediaNotAvailable:Track--mediaNotAvailable'
],

attributeBindings: [
Expand Down
8 changes: 7 additions & 1 deletion app/components/x-playback/component.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import Ember from 'ember';
// 1- comment out the following `import`
// 2- comment in the `script` tag in the `template.hbs`
// cheers
import 'npm:radio4000-player';
// import 'npm:radio4000-player';

const {Component, get, inject, computed} = Ember;

Expand All @@ -24,9 +24,11 @@ export default Component.extend({
const options = {passive: false}
player.addEventListener('trackChanged', event => this.onTrackChanged(event), options)
player.addEventListener('trackEnded', event => this.onTrackEnded(event), options)
player.addEventListener('mediaNotAvailable', event => this.onMediaNotAvailable(event), options)
player.addEventListener('channelChanged', event => this.onChannelChanged(event), options)
},

/* events */
onTrackChanged(event) {
get(this, 'player').onTrackChanged(event.detail[0]);
},
Expand All @@ -35,6 +37,10 @@ export default Component.extend({
get(this, 'player').onTrackEnded(event.detail[0]);
},

onMediaNotAvailable(event) {
get(this, 'player').onMediaNotAvailable(event.detail[0]);
},

actions: {
toggleMinimizedFormat() {
get(this, 'uiStates').toggleMinimizedFormat();
Expand Down
2 changes: 1 addition & 1 deletion app/components/x-playback/template.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
track-id={{track.id}}
title="Radio4000 player. [⌨ g c = current channel] [⌨ g x = curent track]"
></radio4000-player>
{{!-- <script src="http://localhost:4002/radio4000-player.min.js"></script> --}}
<script src="http://localhost:4002/radio4000-player.min.js"></script>
</div>

<div class="Playback-layoutButtons">
Expand Down
4 changes: 4 additions & 0 deletions app/models/track.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,10 @@ export default Model.extend(Validations, {
body: attr('string'),
ytid: attr('string'),

mediaNotAvailable: attr('boolean', {
defaultValue: false
}),

// relationships
channel: belongsTo('channel', {
async: true,
Expand Down
7 changes: 7 additions & 0 deletions app/services/player.js
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,13 @@ export default Service.extend({
});
},

onMediaNotAvailable(event) {
get(this, 'store').findRecord('track', event.track.id).then(track => {
track.set('mediaNotAvailable', true);
track.save();
});
},

channelChanged(previousChannelId, channelId) {
// set previous channel as not active
if (previousChannelId !== undefined) {
Expand Down
3 changes: 3 additions & 0 deletions app/styles/components/_track.scss
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,9 @@
.Track--finished {
border-right-color: $green;
}
.Track--mediaNotAvailable {
border-right-color: $red;
}

.Track-title {
@extend %font-regular;
Expand Down

0 comments on commit da696c9

Please sign in to comment.