Add push notifications and device token management
This commit is contained in:
parent
9d4c736d95
commit
bb161dfd25
14 changed files with 5320 additions and 6 deletions
|
@ -9,9 +9,12 @@ use Carp;
|
|||
|
||||
has error_messages => sub {
|
||||
return {
|
||||
devicetoken => {
|
||||
required => { message => 'Device token is required', status => 400 },
|
||||
in_resultset => { message => 'Device token not found', status => 400 },
|
||||
#devicetokens => {
|
||||
# required => { message => 'Device token is required', status => 400 },
|
||||
# in_resultset => { message => 'Device token not found', status => 400 },
|
||||
#},
|
||||
topic => {
|
||||
required => { message => 'Topic is required', status => 400 },
|
||||
},
|
||||
sender => {
|
||||
required => { message => 'Sender name is required', status => 400 },
|
||||
|
@ -66,13 +69,33 @@ sub create_jwt_from_path_and_scopes
|
|||
return $jwt->encode;
|
||||
}
|
||||
|
||||
sub get_topics {
|
||||
my $c = shift;
|
||||
|
||||
my $topic_rs = $c->schema->resultset('Topic');
|
||||
|
||||
my @topics = (
|
||||
map {{
|
||||
id => $_->id,
|
||||
name => $_->name,
|
||||
numberOfSubscribers => $_->search_related('device_subscriptions', {'topic_id' => $_->id})->count,
|
||||
}} $topic_rs->all
|
||||
);
|
||||
|
||||
return $c->render( json => {
|
||||
success => Mojo::JSON->true,
|
||||
topics => \@topics,
|
||||
});
|
||||
}
|
||||
|
||||
sub post_message {
|
||||
my $c = shift;
|
||||
|
||||
my $validation = $c->validation;
|
||||
$validation->input( $c->stash->{api_json} );
|
||||
|
||||
$validation->required('devicetoken')->in_resultset('token', $c->schema->resultset('DeviceToken'));
|
||||
#$validation->required('devicetokens')->in_resultset('token', $c->schema->resultset('DeviceToken'));
|
||||
$validation->required('topic');
|
||||
$validation->required('sender')->in_resultset('name', $c->schema->resultset('Organisation'));
|
||||
$validation->required('messagetext');
|
||||
|
||||
|
@ -86,7 +109,7 @@ sub post_message {
|
|||
|
||||
$request->content(JSON::encode_json ({
|
||||
message => {
|
||||
token => $validation->param('devicetoken'),
|
||||
topic => $validation->param('topic'),
|
||||
notification => {
|
||||
title => $validation->param('sender'),
|
||||
body => $validation->param('messagetext')
|
||||
|
|
Reference in a new issue