nexacon_calls 1.3.16 copy "nexacon_calls: ^1.3.16" to clipboard
nexacon_calls: ^1.3.16 copied to clipboard

A Flutter SDK for Nexacon API — plug-and-play P2P audio/video calling with WebRTC and NX signaling.

Changelog #

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

1.3.16 - 2026-08-12 #

Added #

  • NexaconConfig — central configuration class for all constants (host, domain, base URL, WebSocket URL, timeouts, STUN servers, API endpoints)
  • All hardcoded domains, URLs, timeouts, and endpoint paths now reference NexaconConfig constants

Changed #

  • NexaconClient default baseUrl and timeout now use NexaconConfig
  • NexaconSDK default baseUrl and timeout now use NexaconConfig
  • Auth.getNxToken() default host now uses NexaconConfig.nxDomain
  • NxIdUtils.defaultDomain now uses NexaconConfig.nxDomain
  • NxConnectionManager heartbeat interval and fallback domain now use NexaconConfig
  • WebRTCService STUN servers now use NexaconConfig.stunServers
  • CallManager call response timeout and stats interval now use NexaconConfig
  • All API service files (calls.dart, messaging.dart, presence.dart, rooms.dart, devices.dart) now use NexaconConfig endpoint constants

1.3.15 - 2026-08-12 #

Changed #

  • Renamed XmppManagerNxConnectionManager (public API)
  • Renamed NxJidUtilsNxIdUtils (public API)
  • NexaconClient.nxManagerNexaconClient.nxConnection
  • Removed NexaconSDK.xmppManager getter (internal implementation detail)
  • auth.getNxToken() now returns nxid instead of jid (server's jid mapped to nxid)
  • NxConnectionManager.connect() uses nxid parameter instead of jid
  • Removed all XMPP/JID/ejabberd references from doc comments, tests, and examples
  • Moved p2p.md to doc/ to keep internal design docs out of published package

1.3.14 - 2026-08-12 #

Changed #

  • Removed wsUrl/nxws from all public documentation and examples
  • WebSocket URL is now handled internally by the SDK (like baseUrl)
  • Updated auth.getNxToken() doc comment to remove nxws from return fields
  • Updated NexaconSDK.initialize() doc comment to remove wsUrl parameter
  • Cleaned up integration test comments

1.3.13 - 2026-08-12 #

Fixed #

  • Removed web from platform support (flutter_webrtc is not WASM-compatible)
  • Fixed dangling library doc comment in nx_jid_utils.dart
  • Removed stray doc comment in exceptions.dart

1.3.12 - 2026-08-12 #

Added #

  • Push Notification Routing section with outgoing and incoming call examples
  • Examples for both Nexacon's built-in push service and custom FCM setup
  • Device registration example for Nexacon push service

Changed #

  • Removed all messaging references from README features and description
  • Added production patterns from real apps to README and example:
    • Pre-warming with initialize() before calling
    • onOtherUserJoined/onOtherUserLeft callbacks in quick start examples
    • Permission requests before calling
    • Phone number formatting helper
    • notifyRemoteAccepted() for FCM fallback
    • FCM push notification acceptance with pre-warm
  • Added dedicated Pre-warming section to README
  • Updated example/basic_usage.dart with production patterns and helper functions

1.3.11 - 2026-08-12 #

Fixed #

  • Updated package description to reflect calls-only scope (removed messaging reference)
  • Fixed static analysis warnings in example app
  • Added CHANGELOG entry for 1.3.10

1.3.10 - 2026-08-12 #

Changed #

  • Renamed package from nexacon_sdk to nexacon_calls
  • Removed messaging from README and documentation — messaging is now in the separate Nexacon Messaging SDK
  • Updated description to reflect calls-only scope
  • Updated all imports to use package:nexacon_calls/nexacon_calls.dart

1.3.9 - 2026-08-04 #

Changed #

  • Version bump for maintenance release

1.3.8 - 2026-07-24 #

Fixed #

  • Calls.recordCall now gracefully handles 404 and other failures from the /nx/call-analytics/ endpoint so call flows are not interrupted when analytics is not implemented on the backend.

Changed #

  • Messaging.getMessageHistory returns typed MessageHistoryResponse and supports enhanced peer resolution for message history queries.

1.3.7 - 2026-07-07 #

Added #

  • MessageHistoryResponse model for typed message history API responses
  • NexaconMessage model for individual message objects with display helpers
  • isCallMessage getter to detect call-related signaling messages in history
  • callType getter to extract call event type from message body
  • displayText getter to format call messages for UI display
  • Exported models.dart from main library for public API access

1.3.6 - 2026-07-05 #

Added #

  • onOtherUserJoined callback to NexaconSDK — fires when remote peer's WebRTC stream arrives
  • onOtherUserLeft callback to NexaconSDK — fires when call ends
  • These callbacks allow apps to track actual peer connection state for UI guards against stale signals

1.3.5 - 2026-07-05 #

Changed #

  • Replaced all XMPP references with NX in README.md and documentation
  • Updated doc/index.rst, doc/messaging.rst, and doc/api.rst to use NX terminology
  • refreshXMPPToken()refreshNxToken() in API documentation

1.2.8 - 2026-06-28 #

Fixed #

  • Critical: Caller never received call_response — JID formatting now matches nxchat (+255...@domain) via NxJidUtils
  • call_accepted message type now routed through XMPP signaling stream (was silently dropped)
  • Signaling messages silently dropped when _peerNxId was null — now logs error and surfaces via onError
  • prepareIncomingCall() now updates peer/room even when XMPP pre-warm already set incoming state
  • fromJid fallback when handling call invitations (not just fromNxId)

Added #

  • NxJidUtils — shared JID formatting aligned with nxchat NxsmService._formatJid
  • roomId parameter on initiateCall() / startCall() so host apps can pass backend channel names
  • notifyRemoteAccepted() — FCM/backend fallback to unblock caller when XMPP response is delayed

[1.3.6] - 2026-07-05 #

Added #

  • onOtherUserJoined callback to NexaconSDK — fires when remote peer's WebRTC stream arrives
  • onOtherUserLeft callback to NexaconSDK — fires when call ends
  • These callbacks allow apps to track actual peer connection state for UI guards against stale signals

1.2.7 - 2026-06-28 #

Fixed #

  • acceptFromNotification(callerJid:)acceptFromNotification(callerNxId:) to match renamed prepareIncomingCall(callerNxId:) parameter

1.2.6 - 2026-06-28 #

Changed #

  • Replaced all internal JID/XMPP terminology with NxID/NX across comments, logs, and variable names
  • fromJidfromNxId in signaling message payloads
  • _myJid/_peerJid_myNxId/_peerNxId in CallManager
  • _normalizePeerJid()_resolveNxId() in CallManager
  • prepareIncomingCall(callerJid:)prepareIncomingCall(callerNxId:)
  • refreshXMPPToken()refreshNxToken() in Auth service

1.2.5 - 2026-06-28 #

Fixed #

  • Critical: WebRTC offer never reached consultant after callResponse due to wrong _peerJid
  • XmppManager now injects message.from (actual sender XMPP JID) into all signaling messages
  • CallManager._handleCallResponse() now updates _peerJid to the real sender JID from the XMPP envelope, ensuring webrtcOffer and ICE candidates are routed correctly

1.2.4 - 2026-06-28 #

Added #

  • _normalizePeerJid() in CallManager to correctly format XMPP JIDs by stripping country code prefix that Nexacon server strips
  • Debug logging for signaling messages and JID resolution in CallManager

Fixed #

  • Reuse pre-warmed XMPP connection in startCall() and acceptWhenReady() to avoid duplicate sessions
  • XMPP JID mismatch when caller used formatted phone number (+255...) but server stored bare digits

1.2.3 - 2026-06-28 #

Fixed #

  • Added missing changelog entries for versions 1.2.0, 1.2.1, and 1.2.2
  • Improved pub.dev score by ensuring all versions are documented

1.2.2 - 2026-06-28 #

Added #

  • prepareIncomingCall() to CallManager for injecting call state from push notification payload
  • acceptFromNotification() to NexaconSDK for accepting calls using FCM/push data
  • Documentation for dual-path incoming call support (XMPP vs FCM)

Changed #

  • Updated README with XMPP-first and FCM-first incoming call examples

1.2.1 - 2026-06-27 #

Added #

  • acceptWhenReady() to NexaconSDK for simplified incoming call handling
  • Automatically waits for XMPP call invitation signal before accepting

Fixed #

  • Call response timeout when using invalid recipient identifier

1.2.0 - 2026-06-27 #

Added #

  • Simplified NexaconSDK API with startCall() and acceptCall() methods
  • Automatic connection management and signaling setup
  • Streamlined call initialization for both outgoing and incoming calls

Changed #

  • Deprecated manual CallManager initialization in favor of simplified API
  • Updated README with simplified quick start guide

1.1.5 - 2026-06-25 #

Fixed #

  • Fixed repository URL to match actual GitHub repository
  • Fixed issue tracker URL to match actual GitHub repository
  • Updated dependencies to latest versions:
    • http: ^1.1.0 → ^1.2.0
    • json_annotation: ^4.8.0 → ^4.12.0
    • flutter_webrtc: ^0.9.48 → ^1.5.2
    • web_socket_client: ^0.1.2 → ^0.2.1
    • flutter_lints: ^3.0.0 → ^6.0.0
    • json_serializable: ^6.7.0 → ^6.14.0
    • mockito: ^5.4.4 → ^5.6.4

1.1.4 - 2026-05-28 #

Changed #

  • Renamed internal _xmppManager to _nxManager throughout codebase
  • Updated documentation to remove XMPP references from public API

1.1.3 - 2026-05-28 #

Added #

  • FoldStateService for detecting foldable device state changes
  • FoldState enum (flat, folded, halfOpen, unknown)
  • Android native fold detection reference implementation
  • Fold state stream for real-time updates
  • Documentation for foldable device support

1.1.2 - 2026-05-28 #

Added #

  • Official platform support for Linux, macOS, and Windows
  • Platform-specific configuration documentation
  • Added platforms section to pubspec.yaml

Changed #

  • Updated README with complete platform configuration for all 6 platforms
  • Updated Flutter SDK version requirement to >=3.0.0

1.1.1 - 2026-05-28 #

Changed #

  • Removed XmppManager from public API exports
  • Removed XMPP-specific references from documentation
  • Simplified messaging setup (no manual connection needed)
  • Updated README to hide implementation details

1.1.0 - 2026-05-28 #

Added #

  • Real-time messaging with XMPP
  • MessagingManager for instant messaging
  • Typing indicators (XEP-0085)
  • Read receipts (XEP-0184)
  • Delivery receipts support
  • Presence management (online/offline status)
  • Message history API with filters and pagination
  • XmppManager presence stream
  • XmppManager delivery receipt stream
  • Heartbeat for connection keep-alive
  • Automatic reconnection with exponential backoff
  • Enhanced documentation for messaging features

Changed #

  • Updated README with messaging examples
  • Updated package description to include messaging

1.0.1 - 2024-05-28 #

Added #

  • Flutter example app with UI for P2P calling
  • Interactive example demonstrating CallManager usage
  • Exported CallManager, WebRTCService, and SignalingService in main library

1.0.0 - 2024-05-28 #

Added #

  • Initial release of Nexacon Flutter SDK
  • P2P audio and video calling with WebRTC
  • NX signaling with automatic WebSocket connection
  • CallManager for plug-and-play call management
  • NX token generation and refresh
  • Automatic ICE candidate buffering and exchange
  • ICE restart on connection failure
  • Call controls: mute, speaker toggle, camera switch
  • Call duration tracking
  • Platform support: iOS, Android, Web, Desktop
  • Comprehensive documentation with Read the Docs integration
1
likes
150
points
264
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

A Flutter SDK for Nexacon API — plug-and-play P2P audio/video calling with WebRTC and NX signaling.

Homepage
Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

flutter, flutter_webrtc, http, json_annotation, web_socket_client

More

Packages that depend on nexacon_calls