WIP - Append/remove favorite apps (#1689)
This commit is contained in:
parent
4adc002327
commit
1cf78550b4
|
@ -30,18 +30,18 @@ sub init {
|
|||
sub register {
|
||||
my ( $self, $req ) = @_;
|
||||
my $user = $req->userData->{ $self->conf->{whatToTrace} };
|
||||
my $app = $req->param('app');
|
||||
my $logo = $req->param('logo') || '';
|
||||
my $desc = $req->param('desc') || '';
|
||||
my $title = $req->param('title') || '';
|
||||
|
||||
# TODO -> test app
|
||||
my ( $app, $result );
|
||||
unless ( $app = $req->param('app') ) {
|
||||
return $self->p->sendError( $req, 'Missing App. URI', 400 );
|
||||
}
|
||||
$self->logger->debug("Favorite application received : $app");
|
||||
my $logo = $req->param('logo') || '';
|
||||
my $desc = $req->param('desc') || '';
|
||||
my $title = $req->param('title') || '';
|
||||
|
||||
# Read existing favorite Apps
|
||||
$self->logger->debug("Looking for $user favorite Apps...");
|
||||
my $_favApps;
|
||||
$self->logger->debug("*****" . Data::Dumper::Dumper($req));
|
||||
if ( $req->userData->{_favApps} ) {
|
||||
$_favApps = eval {
|
||||
from_json( $req->userData->{_favApps}, { allow_nonref => 1 } );
|
||||
|
@ -56,18 +56,41 @@ sub register {
|
|||
$_favApps = [];
|
||||
}
|
||||
|
||||
push @$_favApps, { app => $app, logo => $logo, desc => $desc, title => $title };
|
||||
$self->p->updatePersistentSession( $req,
|
||||
{ _favApps => to_json($_favApps) } );
|
||||
$self->userLogger->notice("Favorite apps registration of $app succeeds for $user");
|
||||
# Append or remove favorite application
|
||||
my $nbrApps = @$_favApps;
|
||||
$self->logger->debug("$nbrApps favorite Apps found");
|
||||
if ( $self->_isFavApp( $_favApps, $app ) ) {
|
||||
$_favApps = $self->_removeFavApp( $_favApps, $app );
|
||||
$self->p->updatePersistentSession( $req,
|
||||
{ _favApps => to_json($_favApps) } );
|
||||
$result = '{"result":0}';
|
||||
$self->userLogger->notice(
|
||||
"Favorite apps deletion of $app succeeds for $user");
|
||||
}
|
||||
else {
|
||||
if ( $nbrApps < $self->conf->{favAppsMaxNumber} ) {
|
||||
$_favApps =
|
||||
$self->_appendFavApp( $_favApps, $app, $logo, $desc, $title );
|
||||
$self->p->updatePersistentSession( $req,
|
||||
{ _favApps => to_json($_favApps) } );
|
||||
$result = '{"result":1}';
|
||||
$self->userLogger->notice(
|
||||
"Favorite apps registration of $app succeeds for $user");
|
||||
}
|
||||
else {
|
||||
$result = '{"error":1}';
|
||||
$self->userLogger->notice(
|
||||
"Max number of favorite apps reached for $user");
|
||||
}
|
||||
}
|
||||
|
||||
return [
|
||||
200,
|
||||
[
|
||||
'Content-Type' => 'application/json',
|
||||
'Content-Length' => 12,
|
||||
'Content-Length' => length($result),
|
||||
],
|
||||
['{"result":1}']
|
||||
[$result]
|
||||
];
|
||||
}
|
||||
|
||||
|
@ -83,7 +106,7 @@ sub read {
|
|||
from_json( $req->sessionInfo->{_favapps}, { allow_nonref => 1 } );
|
||||
};
|
||||
if ($@) {
|
||||
$self->logger->error("Corrupted session (_2fDevices): $@");
|
||||
$self->logger->error("Corrupted session (_favApps): $@");
|
||||
return $self->p->sendError( $req, "Corrupted session", 500 );
|
||||
}
|
||||
}
|
||||
|
@ -94,10 +117,11 @@ sub read {
|
|||
|
||||
# Serialize data
|
||||
my $data = to_json( {
|
||||
result => 1, apps => $_favapps
|
||||
result => 1,
|
||||
apps => $_favapps
|
||||
}
|
||||
);
|
||||
$self->logger->debug(scalar @$_favapps . " Apps found for $user");
|
||||
$self->logger->debug( scalar @$_favapps . " Apps found for $user" );
|
||||
|
||||
return [
|
||||
200,
|
||||
|
@ -109,4 +133,37 @@ sub read {
|
|||
];
|
||||
}
|
||||
|
||||
sub _isFavApp {
|
||||
my ( $self, $_favApps, $app ) = @_;
|
||||
my $test = 0;
|
||||
foreach (@$_favApps) {
|
||||
if ( $_->{app} eq $app ) {
|
||||
$test = 1;
|
||||
last;
|
||||
}
|
||||
}
|
||||
$self->logger->debug("App. already registered? $test");
|
||||
return $test;
|
||||
}
|
||||
|
||||
sub _appendFavApp {
|
||||
my ( $self, $_favApps, $app, $logo, $desc, $title ) = @_;
|
||||
push @$_favApps,
|
||||
{ app => $app, logo => $logo, desc => $desc, title => $title };
|
||||
$self->logger->debug("App. $app appended");
|
||||
return $_favApps;
|
||||
}
|
||||
|
||||
sub _removeFavApp {
|
||||
my ( $self, $_favApps, $app ) = @_;
|
||||
my $keep = [];
|
||||
while (@$_favApps) {
|
||||
my $element = shift @$_favApps;
|
||||
$self->logger->debug("Looking for favorite App to remove...");
|
||||
push @$keep, $element unless ( $element->{app} eq $app );
|
||||
}
|
||||
$self->logger->debug("App. $app removed");
|
||||
return $keep;
|
||||
}
|
||||
|
||||
1;
|
||||
|
|
Loading…
Reference in New Issue