Clean up some things. Make skip vote longer. Put in js that should show notifications for skip requests.

This commit is contained in:
Kevin Whitaker
2017-02-18 23:13:13 -05:00
parent 249e34f3c7
commit de6a151fd0
4 changed files with 13 additions and 6 deletions

View File

@@ -540,7 +540,7 @@ GroovePlayerMgr::PlayerEvent GroovePlayerMgr::getNextPlayerEvent(Wt::Dbo::Sessio
return PlayerEvent() = {PlayerEventType::GROOVE_NOWPLAYING}; return PlayerEvent() = {PlayerEventType::GROOVE_NOWPLAYING};
} }
} }
if(!voteEndedButNotNextTrackYet && currentSkipRequester.size() > 0 && skipRequestedAt+std::chrono::seconds(5) < std::chrono::steady_clock::now()) if(!voteEndedButNotNextTrackYet && currentSkipRequester.size() > 0 && skipRequestedAt+std::chrono::seconds(10) < std::chrono::steady_clock::now())
{ {
//Skip succeeded. Time to skip song. //Skip succeeded. Time to skip song.
lastInternalEvents.push_front(PlayerEvent() = {PlayerEventType::SKIP_VOTING_ENDED}); lastInternalEvents.push_front(PlayerEvent() = {PlayerEventType::SKIP_VOTING_ENDED});

View File

@@ -45,6 +45,7 @@ WebInterface::WebInterface(const Wt::WEnvironment& env) : Wt::WApplication(env)
root()->addWidget(priv_int->loginUI); root()->addWidget(priv_int->loginUI);
priv_int->loginUI->animateShow(Wt::WAnimation(Wt::WAnimation::AnimationEffect::SlideInFromTop)); priv_int->loginUI->animateShow(Wt::WAnimation(Wt::WAnimation::AnimationEffect::SlideInFromTop));
priv_int->loginUI->checkSessionValidity(); priv_int->loginUI->checkSessionValidity();
notificationSlot.setJavaScript(getNotificationJs(""));
} }
WebInterface::~WebInterface() WebInterface::~WebInterface()
@@ -79,7 +80,9 @@ void WebInterface::songChangedFromServer(AudioTrack nextTrack)
void WebInterface::skipVotedFromServer(User userRequestingToSkipCurrentTrack) void WebInterface::skipVotedFromServer(User userRequestingToSkipCurrentTrack)
{ {
priv_int->playerUI->updateSkipRequestedFromServer(); priv_int->playerUI->updateSkipRequestedFromServer();
//TODO: show notification //show notification
notificationSlot.setJavaScript(getNotificationJs(userRequestingToSkipCurrentTrack.username+" has requested to skip "+GroovePlayerMgr::getInstance()->currentTrack.trackName+"."));
notificationSlot.exec();
triggerUpdate(); triggerUpdate();
} }
@@ -106,3 +109,8 @@ void WebInterface::voteTracksUpdatedFromServer(std::list<AudioTrack> voteableTra
priv_int->playerUI->updateVoteableTracksFromServer(voteableTracks); priv_int->playerUI->updateVoteableTracksFromServer(voteableTracks);
triggerUpdate(); triggerUpdate();
} }
std::string WebInterface::getNotificationJs(std::string notificationText)
{
return std::string("function notifyMe(a,b){var c='")+notificationText+std::string("';if('Notification'in window)if('granted'===Notification.permission){new Notification(c)}else'denied'!==Notification.permission&&Notification.requestPermission(function(a){if('granted'===a){new Notification(c)}});else;}");
}

View File

@@ -24,6 +24,7 @@
#include "GroovePlayer.h" #include "GroovePlayer.h"
#include "db/AudioTrack.h" #include "db/AudioTrack.h"
#include "db/User.h" #include "db/User.h"
#include <Wt/WJavaScript>
class WebInterface : public Wt::WApplication class WebInterface : public Wt::WApplication
{ {
@@ -42,6 +43,8 @@ public:
private: private:
struct internal; struct internal;
internal* priv_int = 0; internal* priv_int = 0;
std::string getNotificationJs(std::string message);
Wt::JSlot notificationSlot;
}; };
#endif // WEBINTERFACE_H #endif // WEBINTERFACE_H

View File

@@ -70,10 +70,6 @@ public:
bool isPaused = false; bool isPaused = false;
//TODO:put in controls for requesting/admin skip and adding users as admin. //TODO:put in controls for requesting/admin skip and adding users as admin.
//Vote controls
//TODO:put in vote controls for seeing tracks to vote on and vote buttons.
//TODO:put in controls for requesting songs.
void playpauseClicked(); void playpauseClicked();
void playpauseUpdated(); void playpauseUpdated();
void skipRequestClicked(); void skipRequestClicked();