Index: lib/SDI/SqueezeNetwork/Controller/API/V1/Players.pm =================================================================== --- lib/SDI/SqueezeNetwork/Controller/API/V1/Players.pm (revision 6207) +++ lib/SDI/SqueezeNetwork/Controller/API/V1/Players.pm (working copy) @@ -14,6 +14,7 @@ sub players : Path { my ( $self, $c ) = @_; + # XXX: If the user doesn't even have any players registered, make next_poll a lot higher my $res = { next_poll => 300, }; @@ -27,10 +28,17 @@ $res->{error} = 'Session cookie required'; $res->{players} = []; } - else { - # XXX: If the user doesn't even have any players registered, make next_poll a lot higher + else { $res->{players} = SDI::Service::Model::Player->list_connected( $c->stash->{user}->id ); + + my %activePlayers; + map { $activePlayers{$_->{id}} = 1 } @{ $res->{players} }; + + $res->{inactive_players} = [ + grep { !$activePlayers{$_->{id}} } + @{ SDI::Service::Model::Player->list_all( $c->stash->{user}->id ) } + ]; # Add active music services info $res->{active_services} = $c->forward( '/api/v1/active_services' ); Index: lib/SDI/Service/Model/Player.pm =================================================================== --- lib/SDI/Service/Model/Player.pm (revision 6207) +++ lib/SDI/Service/Model/Player.pm (working copy) @@ -412,6 +412,24 @@ return $players; } +sub list_all { + my ( $self, $userid ) = @_; + + my $players = []; + + foreach ( $self->searchPlayersByUser($userid) ) { + push @{$players}, { + id => $_->id, + mac => $_->mac, + uuid => $_->uuid, + name => $_->name, + }; + } + + return $players; +} + + sub count_by_user { my ( $class, $userid ) = @_;