Add TWP Softphone Flutter app and complete mobile backend API
Backend: Add /voice/token endpoint with AccessToken + VoiceGrant for
mobile VoIP, implement unhold_call() with call leg detection, wire FCM
push notifications into call queue and webhook missed call handlers,
add data-only FCM message support for Android background wake, and add
Twilio API Key / Push Credential settings fields.
Flutter app: Full softphone with Twilio Voice SDK integration, JWT auth
with auto-refresh, SSE real-time queue updates, FCM push notifications,
Material 3 UI with dashboard, active call screen, dialpad, and call
controls (mute/speaker/hold/transfer).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 13:01:23 -08:00
|
|
|
class User {
|
|
|
|
|
final int id;
|
|
|
|
|
final String login;
|
|
|
|
|
final String displayName;
|
|
|
|
|
final String? email;
|
|
|
|
|
|
|
|
|
|
User({
|
|
|
|
|
required this.id,
|
|
|
|
|
required this.login,
|
|
|
|
|
required this.displayName,
|
|
|
|
|
this.email,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
factory User.fromJson(Map<String, dynamic> json) {
|
|
|
|
|
return User(
|
2026-03-06 15:32:22 -08:00
|
|
|
id: _toInt(json['user_id']),
|
|
|
|
|
login: (json['user_login'] ?? '') as String,
|
|
|
|
|
displayName: (json['display_name'] ?? '') as String,
|
Add TWP Softphone Flutter app and complete mobile backend API
Backend: Add /voice/token endpoint with AccessToken + VoiceGrant for
mobile VoIP, implement unhold_call() with call leg detection, wire FCM
push notifications into call queue and webhook missed call handlers,
add data-only FCM message support for Android background wake, and add
Twilio API Key / Push Credential settings fields.
Flutter app: Full softphone with Twilio Voice SDK integration, JWT auth
with auto-refresh, SSE real-time queue updates, FCM push notifications,
Material 3 UI with dashboard, active call screen, dialpad, and call
controls (mute/speaker/hold/transfer).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 13:01:23 -08:00
|
|
|
email: json['email'] as String?,
|
|
|
|
|
);
|
|
|
|
|
}
|
2026-03-06 15:32:22 -08:00
|
|
|
|
|
|
|
|
static int _toInt(dynamic value) {
|
|
|
|
|
if (value is int) return value;
|
|
|
|
|
if (value is String) return int.tryParse(value) ?? 0;
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
Add TWP Softphone Flutter app and complete mobile backend API
Backend: Add /voice/token endpoint with AccessToken + VoiceGrant for
mobile VoIP, implement unhold_call() with call leg detection, wire FCM
push notifications into call queue and webhook missed call handlers,
add data-only FCM message support for Android background wake, and add
Twilio API Key / Push Credential settings fields.
Flutter app: Full softphone with Twilio Voice SDK integration, JWT auth
with auto-refresh, SSE real-time queue updates, FCM push notifications,
Material 3 UI with dashboard, active call screen, dialpad, and call
controls (mute/speaker/hold/transfer).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 13:01:23 -08:00
|
|
|
}
|