Sanity checks. Make sure track isn't in vote batch and remove it from request queue if there.
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user