Sanity checks. Make sure track isn't in vote batch and remove it from request queue if there.

This commit is contained in:
Kevin Whitaker
2017-02-22 18:00:54 -05:00
parent e5b86cc4df
commit 4233e5fb36

View File

@@ -64,13 +64,22 @@ void RequestInterface::trackRequestClicked(AudioTrack track)
void RequestInterface::trackRemoveClicked(RequestItem* item, AudioTrack track) void RequestInterface::trackRemoveClicked(RequestItem* item, AudioTrack track)
{ {
if(GroovePlayerMgr::getInstance()->currentTrack.trackFingerprint != track.trackFingerprint) bool inVoting = false;
for(AudioTrack vtrack: GroovePlayerMgr::getInstance()->currentVoteBatch)
{
if(vtrack.trackFingerprint == track.trackFingerprint) inVoting = true;
}
if(GroovePlayerMgr::getInstance()->currentTrack.trackFingerprint != track.trackFingerprint && !inVoting)
{ {
Wt::Dbo::Session sqlSession; Wt::Dbo::Session sqlSession;
sqlSession.setConnectionPool(*GroovePlayerMgr::getInstance()->connectionPool); sqlSession.setConnectionPool(*GroovePlayerMgr::getInstance()->connectionPool);
sqlSession.mapClass<User>("user"); sqlSession.mapClass<User>("user");
sqlSession.mapClass<AudioTrack>("tracks"); sqlSession.mapClass<AudioTrack>("tracks");
sqlSession.mapClass<UserAction>("actions"); sqlSession.mapClass<UserAction>("actions");
for(std::list<std::pair<AudioTrack,User>>::const_iterator request = GroovePlayerMgr::getInstance()->requestQueue.begin(); request != GroovePlayerMgr::getInstance()->requestQueue.end(); request++)
{
if((*request).first.trackFingerprint == track.trackFingerprint) GroovePlayerMgr::getInstance()->requestQueue.erase(request);
}
GroovePlayerMgr::getInstance()->removeTrack(&sqlSession,track); GroovePlayerMgr::getInstance()->removeTrack(&sqlSession,track);
delete item; delete item;
} }