From 7a97221d6fef36bde0adf365237f9bc1e7d96146 Mon Sep 17 00:00:00 2001 From: James Barnsley Date: Tue, 30 May 2017 09:06:59 +1200 Subject: [PATCH] Suppressing broadcasts; New releases featured intro --- src/js/components/Notifications.js | 2 +- src/js/services/localstorage/middleware.js | 2 +- src/js/services/ui/middleware.js | 22 +++++---- src/js/services/ui/reducer.js | 5 -- src/js/views/discover/DiscoverNewReleases.js | 48 +++++++++++++++++++- src/scss/views/_discover.scss | 3 +- 6 files changed, 63 insertions(+), 19 deletions(-) diff --git a/src/js/components/Notifications.js b/src/js/components/Notifications.js index 459f9126..f0b0bf89 100755 --- a/src/js/components/Notifications.js +++ b/src/js/components/Notifications.js @@ -25,7 +25,7 @@ export default class Notifications extends React.Component{ default: return ( -
+
this.props.uiActions.removeNotification(notification.key) } /> {notification.title ?

{notification.title}

: null}

diff --git a/src/js/services/localstorage/middleware.js b/src/js/services/localstorage/middleware.js index e751917f..8ebcd881 100755 --- a/src/js/services/localstorage/middleware.js +++ b/src/js/services/localstorage/middleware.js @@ -139,7 +139,7 @@ const localstorageMiddleware = (function(){ ui, { suppressed_broadcasts: suppressed_broadcasts } ); - localStorage.setItem('ui', JSON.stringify(ui)); + localStorage.setItem('ui', JSON.stringify(ui)) break } } diff --git a/src/js/services/ui/middleware.js b/src/js/services/ui/middleware.js index 44f3120e..3e1a821c 100755 --- a/src/js/services/ui/middleware.js +++ b/src/js/services/ui/middleware.js @@ -326,7 +326,7 @@ const UIMiddleware = (function(){ action.index = index // If a broadcast, add to suppressed_broadcasts - if (notifications[index].type == 'broadcast'){ + if (index > -1 && typeof(notifications[index]) !== 'undefined' && notifications[index].type == 'broadcast'){ store.dispatch({ type: 'SUPPRESS_BROADCAST', key: notifications[index].key @@ -345,15 +345,17 @@ const UIMiddleware = (function(){ for (var i = 0; i < action.broadcasts.length; i++){ var broadcast = action.broadcasts[i] - if (!suppressed_broadcasts.includes(broadcast.id)){ - store.dispatch(uiActions.createNotification( - broadcast.message, - 'broadcast', - broadcast.id, - broadcast.title, - true - )) - } + if (!suppressed_broadcasts.includes(broadcast.key)){ + if (broadcast.message){ + store.dispatch(uiActions.createNotification( + broadcast.message, + 'broadcast', + (broadcast.key ? broadcast.key : null), + (broadcast.title ? broadcast.title : null), + true + )) + } + } } next(action) diff --git a/src/js/services/ui/reducer.js b/src/js/services/ui/reducer.js index 02fa7622..799c1ac0 100755 --- a/src/js/services/ui/reducer.js +++ b/src/js/services/ui/reducer.js @@ -723,11 +723,6 @@ export default function reducer(ui = {}, action){ return Object.assign({}, ui, {notifications: notifications}) - case 'SUPPRESS_BROADCAST': - var suppressed_broadcasts = (typeof(ui.suppressed_broadcasts) !== 'undefined' ? ui.suppressed_broadcasts : []) - suppressed_broadcasts.push(action.key) - return Object.assign({}, ui, {suppressed_broadcasts: suppressed_broadcasts}) - diff --git a/src/js/views/discover/DiscoverNewReleases.js b/src/js/views/discover/DiscoverNewReleases.js index e4d09331..a88ab5d3 100755 --- a/src/js/views/discover/DiscoverNewReleases.js +++ b/src/js/views/discover/DiscoverNewReleases.js @@ -2,10 +2,15 @@ import React, { PropTypes } from 'react' import { connect } from 'react-redux' import { bindActionCreators } from 'redux' +import { Link } from 'react-router' import Header from '../../components/Header' import AlbumGrid from '../../components/AlbumGrid' +import Parallax from '../../components/Parallax' +import Thumbnail from '../../components/Thumbnail' +import ArtistSentence from '../../components/ArtistSentence' import LazyLoadListener from '../../components/LazyLoadListener' + import * as helpers from '../../helpers' import * as uiActions from '../../services/ui/actions' import * as spotifyActions from '../../services/spotify/actions' @@ -24,6 +29,40 @@ class DiscoverNewReleases extends React.Component{ this.props.spotifyActions.getURL(this.props.new_releases_more, 'SPOTIFY_NEW_RELEASES_LOADED'); } + playAlbum(e,album){ + this.props.mopidyActions.playURIs([album.uri],album.uri) + } + + renderIntro(album = null){ + if (album){ + return ( +
+ +
+ + + + +

{album.name}

+ +

+ +

+
+ +
+
+
+ ) + } else { + return ( +
+ +
+ ) + } + } + render(){ if (helpers.isLoading(this.props.load_queue,['spotify_browse/new-releases'])){ return ( @@ -46,9 +85,16 @@ class DiscoverNewReleases extends React.Component{ } } + // Pull the first playlist out and we'll use this as a banner + var first_album = albums.splice(0,1) + if (first_album){ + first_album = first_album[0] + } + return (
-
+
+ {this.renderIntro(first_album)}
diff --git a/src/scss/views/_discover.scss b/src/scss/views/_discover.scss index 80daa850..0fb35b53 100755 --- a/src/scss/views/_discover.scss +++ b/src/scss/views/_discover.scss @@ -105,7 +105,8 @@ } } -.discover-featured-view { +.discover-featured-view, +.discover-new-releases-view { .intro { position: relative; padding-top: 50px;