Move push notification to client instead of db trigger
This commit is contained in:
@@ -268,6 +268,62 @@ class TicketsController {
|
||||
)
|
||||
.toList();
|
||||
await _client.from('notifications').insert(rows);
|
||||
// Send FCM pushes for ticket creation
|
||||
try {
|
||||
String actorName = 'Someone';
|
||||
if (actorId != null && actorId.isNotEmpty) {
|
||||
try {
|
||||
final p = await _client
|
||||
.from('profiles')
|
||||
.select('full_name,display_name,name')
|
||||
.eq('id', actorId)
|
||||
.maybeSingle();
|
||||
if (p != null) {
|
||||
if (p['full_name'] != null) {
|
||||
actorName = p['full_name'].toString();
|
||||
} else if (p['display_name'] != null) {
|
||||
actorName = p['display_name'].toString();
|
||||
} else if (p['name'] != null) {
|
||||
actorName = p['name'].toString();
|
||||
}
|
||||
}
|
||||
} catch (_) {}
|
||||
}
|
||||
|
||||
String? ticketNumber;
|
||||
try {
|
||||
final t = await _client
|
||||
.from('tickets')
|
||||
.select('ticket_number')
|
||||
.eq('id', ticketId)
|
||||
.maybeSingle();
|
||||
if (t != null && t['ticket_number'] != null) {
|
||||
ticketNumber = t['ticket_number'].toString();
|
||||
}
|
||||
} catch (_) {}
|
||||
|
||||
final title = '$actorName created a new ticket';
|
||||
final body = ticketNumber != null
|
||||
? '$actorName created ticket #$ticketNumber'
|
||||
: '$actorName created a new ticket';
|
||||
|
||||
await _client.functions.invoke(
|
||||
'send_fcm',
|
||||
body: {
|
||||
'user_ids': recipients,
|
||||
'title': title,
|
||||
'body': body,
|
||||
'data': {
|
||||
'ticket_id': ticketId,
|
||||
if (ticketNumber != null) 'ticket_number': ticketNumber,
|
||||
'type': 'created',
|
||||
},
|
||||
},
|
||||
);
|
||||
} catch (e) {
|
||||
// non-fatal
|
||||
debugPrint('ticket notifyCreated push error: $e');
|
||||
}
|
||||
} catch (_) {
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user