Repository navigation
docs(flutter): ringing on Calls SDK 5.1 + cometchat_voip, chat-only push, UI Kit calling - #564
DhruvKushvaha2004 wants to merge 9 commits into
Conversation
…h_notifications 2.0 - New notifications/flutter-push-notifications.mdx replaces the separate Flutter (Android) and Flutter (iOS) pages. It keeps the structure of PR #440 and documents cometchat_push_notifications 2.0 (chat notifications only): init and config, registerPushToken (FCM on Android, APNs on iOS), token refresh, unregisterPushToken before logout, onNotificationTap, setActiveConversation, badge and clearNotifications, the Android small icon and the optional iOS Notification Service Extension. Calls are pointed to the Calls SDK Ringing Flow, with a short note on handing call pushes to cometchat_voip first. - New notifications/push-getting-started.mdx from PR #440 (dashboard, Firebase and APNs setup common to all platforms); its iOS card points to the existing APNs page. - Removed flutter-push-notifications-android.mdx and flutter-push-notifications-ios.mdx; their URLs and /extensions/flutter-push-notifications redirect to the new page, and the legacy redirect on /notifications/flutter-push-notifications is removed. - notifications.mdx and push-overview.mdx show a single Flutter card. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Ringing: replaces the Chat SDK ringing page in place with the Calls SDK flow (initiateCall, Ringing…, answer, decline, cancel, timeout, end). - Push Ringing: rewrites voip-calling for cometchat_voip (setup, init, push hand-off, token, ring readiness, call modes, call waiting, missed calls, killed/locked, troubleshooting). - Migrating from Legacy Ringing: new page with before/after code and the legacy-to-new API mapping. - Background Handling: launch(isVideo:), whole-call notification, tidied snippet, fixed links. - Overview, v5 migration guide (5.0 to 5.1), troubleshooting, Flutter push page and Chat SDK listeners (CallListener superseded) updated to match. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Calling Integration: new page (Getting Started) with the steps an app takes: Calls SDK + cometchat_voip init, the call push bridge (VoipCallPushBridge), enableCalls / callPushBridge / navigatorKey, push hand-off, push token, ring readiness and logout. - Call features: rewritten as an overview of how a call works. - Incoming Call: deprecated on Android and iOS, shown on web only. - Outgoing Call: Calling…/Ringing… states, timeout, End and events. - Events, Methods, Troubleshooting, Upgrading from v5 and Getting Started updated to match. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Push Ringing keeps the app alive only from the ring until the answered call joins; CometChatOngoingCallService keeps a joined call alive. - Phase table (ringing, answering, in the call) in the Note; the page applies to every call kind. - Tip: the UI Kit's call screen starts and stops the service itself. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…inging - Setup: cometchat_calls_sdk 5.1, a note pointing ringing apps to cometchat_voip and Push Ringing, permissions asked on Answer. - Actions: leave() replaces the deprecated leaveSession() and endCallSession(); a ringing call is cancelled with endCall. - Events: the prepared session, onParticipantConnected, and what onSessionTimedOut / onConnectionClosed mean before anyone joins. - Troubleshooting: ringing rows. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Automations to automatically generate PRs for you. |
registerPushToken and handleTokenRefresh are not Android-only: the token is the FCM token on Android and the PushKit VoIP token on iOS. On iOS the package owns the PKPushRegistry in both auto modes, obtains the VoIP token during init and registers it as soon as a user is logged in to the Calls SDK (at init if one already is, otherwise at the next login). Only manual mode leaves the registry, and the token, to the app. Verified against cometchat_voip 2.0.0-beta7 on release/2.0. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
jitvarpatil
left a comment
There was a problem hiding this comment.
🤖 Review Buddy (review-docs-pr)
Recommendation: request changes. Automated review; the final decision stays with a maintainer.
TL;DR. Structurally this is a clean reorg: 0 dangling nav refs (build is safe), both deleted Flutter push pages and /extensions/flutter-push-notifications redirect to the new page, 0 chained 404s, 0 broken in-content links in the changed pages, every cross-page anchor into the rewritten pages resolves, all images exist, and the Mintlify preview renders. I also cross-checked every API name on the new pages against cometchat_voip + cometchat_push_notifications (release/2.0), cometchat_calls_sdk 5.1 and the UI Kit ringing-v2-uikit branch — almost everything matches. What needs fixing before merge: the pages pin three package versions that don't exist on pub.dev yet (the PR says so — this is the merge gate), the UI Kit pin ^6.2.0 is wrong even after release because 6.2.0 already shipped without the bridge API, the caller-side end-reason strings the pages promise (rejected/busy/unanswered) are not what the SDK delivers, and the Ringing page says initiateCall is 1:1-only while the SDK and the Push Ringing page say otherwise.
P0 — blocker (merge gate)
- Pinned package versions are not published; merging to
mainpublishes them live.calls/flutter/setup.mdx:31,calls/flutter/voip-calling.mdx:40-41,calls/flutter/migrating-from-legacy-ringing.mdx:68-69,ui-kit/flutter/calling-integration.mdx:42-43,notifications/flutter-push-notifications.mdx:66pincometchat_calls_sdk: ^5.1.0,cometchat_voip: ^2.0.0,cometchat_push_notifications: ^2.0.0. pub.dev today:cometchat_calls_sdk5.0.9,cometchat_push_notifications1.0.1,cometchat_voipnot published (release/2.0 is at 2.0.0-beta4). Every reader'sflutter pub getfails until the releases land. The PR body already says "not ready to publish" — this item just makes the hold explicit: do not merge before all three are on pub.dev, then resolve every{/* TODO(RC) */}.
P1 — fix before merge
cometchat_chat_uikit: ^6.2.0is the wrong pin — 6.2.0 is already on pub.dev and does not contain the ringing API.ui-kit/flutter/calling-integration.mdx:42(and the TODO at:14naming "cometchat_chat_uikit 6.2.0"). I pulled the published 6.2.0 tarball: nocometchat_call_push_bridge.dart, zero mentions ofcallPushBridge; its pubspec depends oncometchat_calls_sdk ^5.0.8. Theringing-v2-uikitbranch still carriesversion: 6.2.0, so the page must pin whatever version that branch actually ships as (≥ 6.3.0), and the branch's pubspec needs its own bump (out of scope here, flagging for the Kit owners).ui-kit/flutter/getting-started.mdx:59,79keep^6.2.0while:185now advertises calling — after the release, bump those too.- Caller-side end reasons are documented as
rejected/busy/unanswered/cancelled, but that is not whatonIncomingCallEndeddelivers.calls/flutter/ringing.mdx:175(table),:162-164(code),calls/flutter/voip-calling.mdx:270-273,calls/flutter/migrating-from-legacy-ringing.mdx:198,:254. Evidence: on the Dart push pathcometchat_voipmaps the push action throughCometChatCallEndReason.fromAction—rejected|busy|ended→declined,unanswered→timedOut,ongoing→answeredElsewhere— and injectsreason.wireName(cometchat_voip/lib/cometchat_voip.dart:474-482); the Calls SDK hands that string straight to the listener (calls-sdk-flutter/lib/src/plugin/cometchatcalls.dart:388); the iOS native path sendsdeclined/ended/failed/filtered; and the SDK's own doc-comment says the vocabulary differs per platform (lib/src/listener/incoming_call_listener.dart:13-18). Consequences: code comparing to"rejected"/"unanswered"never matches, andbusyis indistinguishable from a decline on the caller. Fix: document the reason as a platform-dependent wire string and tell readers to normalise withCometChatCallEndReason.fromWire(reason)(it accepts both vocabularies), list the real values, and drop or caveat the caller-sidebusydistinction. The callee-sideonCallEndedreasons (ringing.mdx:176) are correct. - Group ringing contradicts the SDK and the sibling page.
calls/flutter/ringing.mdx:90documentsoptions.receiverTypeasReceiverType.useronly and:293-295says "initiateCallis for 1:1 calls", butInitiateCallOptions.receiverTypeacceptsReceiverType.group("a user UID or a group GUID",lib/src/builder/initiate_call_options.dart:11-13,cometchatcalls.dartinitiateCalldoc-comment) andcalls/flutter/voip-calling.mdx:275already documents how a group ring ends. Either document groupinitiateCall(what rings, how it ends, nobusy/unansweredsent) or make both pages agree that groups are join-by-id only and removevoip-calling.mdx:275. - The "Rolling out" steps that keep old↔new apps interoperable are placeholders in the rendered page.
calls/flutter/migrating-from-legacy-ringing.mdx:355-361renders as "Go to the calling settings" / "Turn on the migration setting" with the real name, path and screenshot in hiddenTODO(RC)comments. This is the step that stops calls breaking during the rollout window; it must be concrete before publish. AlsoacceptOnAnswer(:363, verified: exists, defaulttrue) appears only here — add it to the options table atcalls/flutter/voip-calling.mdx:82-92.
P2 — nits
TODO(RC)comments cite "cometchat_calls_sdk 5.1.0-team" (ringing.mdx:19,voip-calling.mdx:27,migrating-from-legacy-ringing.mdx:12,calling-integration.mdx:14), but the calls-core tag5.1.0-teamcarries calls-sdk-flutter 5.0.8 with none ofinitiateCall/leave()/onParticipantConnected/addIncomingCallListener; the Flutter 5.1 API is on tag5.1.0-beta.1. Point the RC re-check at the right ref (and citerelease/2.0forcometchat_voiprather than a beta number — it has already moved from beta2/beta4 to beta7 across these commits).calls/flutter/voip-calling.mdx:139-145vs:192-196: the token table marksregisterPushToken(token:)/handleTokenRefreshas "Android, iOS", the prose then says on iOS you pass a token only inmanualmode, and the mode table says Manual is Android-only. Make the three agree (e.g. "Android — iOS: automatic" and drop the manual-on-iOS sentence).notifications/push-getting-started.mdx:9: the FCM list omits Flutter (Android) while:22and:34include it.notifications/flutter-push-notifications.mdx:33"Flutter 3.3.0+ / Dart 3.10.8+" mirrors the plugin's pubspec, but Dart 3.10 implies Flutter ≥ 3.38, so the Flutter floor is misleading (the pubspec'sflutter: '>=3.3.0'is the real culprit).- Link text "Migrating from legacy ringing" (
ringing.mdx:16,317,voip-calling.mdx:327) vs the page title "Migrating from Legacy Ringing". - Pre-existing, not introduced here (FYI): 4 broken links in untouched
calls/flutterpages —in-call-chat.mdx:444,share-invite.mdx:329→/calls/flutter/button-click-listener;participant-management.mdx:142,145→/calls/flutter/participant-actions,/calls/flutter/participant-event-listener— and two nav orphansui-kit/flutter/llms-flutter-v6,sdk/flutter/llms-flutter-v5.
Passed / verified
- Build safe: 0 unresolved
docs.jsonpage refs. Redirects:/notifications/flutter-push-notifications-androidand-ios→ new page;/extensions/flutter-push-notificationsretargeted; the legacy redirect from/notifications/flutter-push-notificationscorrectly removed so the new page isn't shadowed; 0 chained 404s; redirects 926 → 927. - Links: 0 broken internal links in the 27 changed pages; all 7 cross-page anchors into the rewritten pages (
#cancel-a-call,#answer-a-call,#your-own-ring-screen,#a-call-while-in-a-call,#step-2-initialize,#call-events,#receive-a-call) resolve; no page still links to the deleted URLs; all image refs resolve; GitHub repo linkcometchat/push-notifications-sdk-flutteris public. - API cross-check (source of truth, not the PR):
cometchat_voiprelease/2.0 —init,CometChatVoipConfig.fromCallAppSettings(settings, providerId:)and every option in the table (defaults match, ring timeout 45 s),handlePushNotification(data, sentTime:),registerPushToken(token:),handleTokenRefresh,unregisterPushToken,checkRingReadiness+ all 8CometChatRingReadinessvalues,openSettings,verifyPushSetup+ all 7 results,onCallRinging/onRingScreenRequested/onCallAnswered/onCallEnded,answer/accept/decline(busy:)/dismissRinging(answered:),reportOutgoingCall/reportCallConnected/reportCallEnded,getActiveCall,isInitialized,ringSurfaces.{showIncomingNotification,verify,stopRinging,keepAlive,showMissedCall},CometChatVoipCall.{sessionId,isVideo,callType,receiverType,callerUid,callerName,callerAvatarUrl,expiresAt},CometChatCallEnded.{call,reason},reason.isMissed(= cancelled ∨ timedOut, matching the Missed-calls prose),reason.wireName,CometChatRingRequest.{call,answerEndsActiveCall}, the threeCometChatCallModes; minSdk 26 / iOS 15.1; iOS answer→join cap is indeed 20 s (RingConstants.swift:29). cometchat_push_notifications2.0 —init, all 7 config fields + defaults,requestPermission,registerPushToken({token, platform, providerId}),PushPlatform.FCM_FLUTTER_ANDROID/APNS_FLUTTER_DEVICE,handlePushNotification(returnsfalsefor call pushes),onNotificationTapresponse fields,setActiveConversation({id, receiverType}),CometChatPushReceiverType.user,setBadgeCount/getBadgeCount,clearNotifications({conversationId}),unregisterPushToken,cometchat_push_notifications_export.dart, NSE podCometChatPushNotificationsNSE/CometChatNotificationServiceExtension/CometChatExtensionGroupID; minSdk 24, compileSdk 36, iOS 13.0.cometchat_calls_sdk5.1 —initiateCall({receiver, options, onSuccess(InitiatedCall), onError}),InitiateCallOptions{type, receiverType, sessionSettings}(type defaults to video, as warned),InitiatedCallfields incl.isVideo,endCall({sessionId, status, onSuccess, onError})+EndCallStatus.{rejected,cancelled,busy,unanswered},addIncomingCallListener(id, listener)/IncomingCallListener.onIncomingCallEnded(InitiatedCall, String),getActiveSession,LoginListener,ParticipantEventListeners.onParticipantConnected,CallSession.leave()withleaveSession()/endCallSession()@Deprecated,CometChatOngoingCallService.launch({bool? isVideo})/abort(), FGS permissions declared in the plugin manifest,logout({onSuccess(String), onError}).- UI Kit
ringing-v2-uikit—CometChatCallPushBridgemembers exactly as the sample bridge (defaults onreportCallConnected/reportCallEnded),CometChatPushCall/CometChatPushCallEndedfields, exported fromcometchat_calls_uikit.dart;UIKitSettings.enableCalls(defaultfalse) /callingConfiguration/callPushBridge;ccOutgoingCallevent;@DeprecatedonCometChatIncomingCall,IncomingCallOverlay,CometChatIncomingCallStyle;CallListener/CallListener2hidden from both barrels;CometChatUIKit.logoutruns call clean-up then the Calls logout; outgoing timeout 45 s (active_call_tracker.dart:180); refused-mic notice opens app settings. - Mintlify preview: deployment green and
/calls/flutter/ringingreturns 200. Local Mintlify build not run here.
The caller's end reason is a native string whose wording differs per platform, so the pages no longer promise `rejected` / `busy` / `unanswered`: they hand it to `CometChatCallEndReason.fromWire`, list the values that come back, and say a busy decline is indistinguishable from a plain one. Group calls: `initiateCall` takes a group GUID, so Ringing documents the group ring and how it ends instead of calling the method 1:1-only, which contradicted Push Ringing. `setPeerCall(true)` is now scoped to 1:1. The UI Kit pin can't be `^6.2.0` — that release is on pub.dev without the call push bridge. Also: `acceptOnAnswer` in the config table, Manual mode runs on iOS too, FCM covers Flutter (Android), the plugin's Dart floor is the one that applies, and the dashboard rollout step says out loud that it is unfinished. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
Thanks — worked through this against the local FixedCaller-side end reasons. Confirmed: Group ringing. UI Kit pin. pub.dev's latest Nits. One correction to the review: Manual mode is not Android-only — Still openP0 version pins — the merge gate. Still true as of today: The dashboard migration setting. Its name and path aren't recorded anywhere I can reach — not the voip README, changelog, props docs or skill — so I didn't invent them. The two placeholder steps are now a visible Not acted onThe P2 saying the The four pre-existing broken links and two nav orphans are out of scope here — worth their own PR. |
…eme) The Android ring screen cometchat_voip draws, and its call notifications, can now be themed in code, light and dark, and the UI Kit can pass its own colours to it. - Push Ringing: incomingCallTheme option; new "Theming the ring screen" section (order theme -> resource -> default, the Dart API, mode, saved across a killed app, kept across init, last one wins, where it applies, the eleven cometchat_voip_call_* resources); two troubleshooting rows. - Calling Integration: "Styling the ring screen" with CometChatIncomingCallTheme.from / .of, the app's toVoip() mapping, the one line at app start, and the palette colour behind each field. - Color Resources: ring screen colours with UI Kit light and dark values. - Incoming Call (deprecated): CometChatIncomingCallStyle -> ring screen colour map. - Call Features and Theming: pointers to the new section. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
jitvarpatil
left a comment
There was a problem hiding this comment.
🤖 Review Buddy (review-docs-pr)
Recommendation: request changes. Automated review; the final decision stays with a maintainer.
Re-review at 8a2b7f61. The previous Review Buddy review was at 776a0973, so this covers the two new commits: 7e068035 (fixes from the last review) and 8a2b7f61 (ring-screen theming).
TL;DR. The fixes from the last round hold up when checked against the source. Callers now normalise end reasons with CometChatCallEndReason.fromWire, and its mapping matches cometchat_voip release/2.0. Group ringing is now documented, setPeerCall(true) is limited to 1:1 calls, acceptOnAnswer is in the config table, and the Manual-mode row lists iOS. The new theming section also matches the code: CometChatVoipIncomingCallTheme/Colors/ThemeMode, setIncomingCallTheme, incomingCallTheme on fromCallAppSettings, the 11 cometchat_voip_call_* resources and their defaults, the theme being saved and kept across init, and the light-set fallback all match release/2.0 (where feat/voip-incoming-call-theme is merged). The UI Kit's CometChatIncomingCallTheme.from/.of, its palette mapping and its light/dark default hex values match ringing-v2-uikit bcc347cc exactly, and cometchat_calls_uikit.dart exports it. Structurally the PR is clean. The merge gate is the same as before: the packages aren't published yet and the dashboard step is still missing. There is also one ^6.2.0 pin that the 6.2.0 fix didn't reach.
P0 (blocker, merge gate; already acknowledged by the author)
- Pinned versions aren't on pub.dev yet, and the migration page has an unfinished step. As of today pub.dev has
cometchat_calls_sdk5.0.9,cometchat_push_notifications1.0.1 andcometchat_chat_uikit6.2.0, andcometchat_voipisn't published at all. The docs pin^5.1.0(calls/flutter/setup.mdx:31,calls/flutter/voip-calling.mdx:40,calls/flutter/migrating-from-legacy-ringing.mdx:68),cometchat_voip: ^2.0.0(voip-calling.mdx:41,migrating-from-legacy-ringing.mdx:69,ui-kit/flutter/calling-integration.mdx:43),cometchat_push_notifications: ^2.0.0(notifications/flutter-push-notifications.mdx:66) and the placeholdercometchat_chat_uikit: ^6.3.0(calling-integration.mdx:42). The dashboard rollout step atmigrating-from-legacy-ringing.mdx:361is now a visible "Pending for this release" warning, which is better than silent placeholders. It still can't ship. Merge only once all four packages are published and the 10TODO(RC)markers are resolved.
P1 (should fix before merge)
ui-kit/flutter/upgrading-from-v5.mdx:82still pinscometchat_chat_uikit: ^6.2.0and has no TODO. Section 6 of the same page ("Calling and ringing", :117–130) tells readers to set upcallPushBridgeandcometchat_voip, but 6.2.0 doesn't have the bridge.calling-integration.mdxandgetting-started.mdxwere fixed in7e068035. This page was missed, and without aTODO(RC)it won't come up at release time. Add the same TODO, or pin the release that ships ringing.
P2 (nits)
- Some normalised caller-side values aren't explained (
calls/flutter/ringing.mdx:178).answeredElsewhere,remoteEnded,failedandfilteredare listed with no meaning. On the caller,answeredElsewherecomes from Android'songoing, so it means "the callee answered". Read with its callee meaning, it's misleading. Android's rawendedalso folds intodeclined(CometChatCallEndReason.fromAction). A short note on each would stop readers misreading them. CometChatIncomingCallTheme.of(context)without adarkTheme(ui-kit/flutter/calling-integration.mdx:289). If the app'sMaterialApphas nodarkTheme,.ofbuilds the dark set from the lightthemepalette. Every palette colour the app set then shows as its light value in dark mode. One sentence ("setdarkTheme, or use.from(light:, dark:)") would cover it.- Pre-existing, out of scope: the broken links
calls/flutter/in-call-chat.mdxandshare-invite.mdx→/calls/flutter/button-click-listener,calls/flutter/participant-management.mdx→/calls/flutter/participant-actionsand/participant-event-listener, andui-kit/flutter/events.mdx:137-138→/sdk/flutter/interactive-messages(the same onmain), plus the orphan/ui-kit/flutter/llms-flutter-v6. These are worth a separate PR.
What passed
- Build is safe: 0 nav refs in
docs.jsonthat don't resolve. - Redirects: both deleted Flutter push pages redirect, 0 URLs left without a redirect, and 0 chained 404s.
- Links: 0 broken internal links or anchors in the changed pages, including the new
#theming-the-ring-screen,#styling-the-ring-screenand#step-2-initializelinks. - API names on the new theming sections match
cometchat_voiprelease/2.0(0b04bd5merged) and the UI Kitringing-v2-uikit(bcc347cc). The colour tables match the source hex values exactly. - End reasons: the
fromWirevocabulary claims (Android statuses, iOS CallKit reasons, busy folding into declined) matchcometchat_voip_enums.dart. - Mintlify preview is 🟢 Ready.
- Skipped: there's no build gate for this repo beyond the Mintlify preview, and the snippets were not compiled.
- UI Kit pins: getting-started and upgrading-from-v5 now pin the same ^6.3.0 placeholder as calling-integration, each with a TODO(RC) to replace it with the release that ships ringing (6.2.0 has no call push bridge). - Ringing: the caller's end reasons say what answeredElsewhere, remoteEnded, failed and filtered mean, and that Android's ended is also read as declined. - Calling Integration: CometChatIncomingCallTheme.of without a darkTheme builds the dark set from the light palette; set darkTheme or use .from(light:, dark:). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
jitvarpatil
left a comment
There was a problem hiding this comment.
🤖 Review Buddy (review-docs-pr)
Recommendation: request changes. This is an automated review. A maintainer makes the final decision.
Reviewed head: ebd115c8de18d87b1b6f7df19e74c644d895255c
TL;DR
The structure is safe to merge. No nav ref breaks the build, both deleted Flutter push pages redirect to the new combined page, and no changed page has a broken internal link or a missing image. I checked every CometChatVoip.*, CometChatVoipConfig, CometChatCalls.initiateCall/endCall/IncomingCallListener, CallSession.leave(), CometChatCallEndReason.fromWire, CometChatPushNotifications.* and UI Kit CometChatCallPushBridge/CometChatIncomingCallTheme name against the source refs (calls-core@release/5.1.0-beta.2 = calls-sdk-flutter 5.1.0, push-notifications-sdk-flutter@release/2.0, chat-uikit-flutter@ringing-v2-uikit). They all exist and have the documented signatures and defaults.
What blocks the merge is the publish gate the PR already declares. None of the pinned packages is on pub.dev yet, and the Rolling out step on the migration page still shows a "Don't publish" warning to readers. Apart from that, one stale end-reason list contradicts the normalised vocabulary used everywhere else, and there are a few diagram and checklist nits.
P0: blockers (publish gate)
- The version pins point at nothing, or at the wrong release. pub.dev today:
cometchat_calls_sdk5.0.10,cometchat_push_notifications1.0.1,cometchat_chat_uikit6.2.0, andcometchat_voipis not published.calls/flutter/setup.mdx:31,calls/flutter/voip-calling.mdx:40-41,calls/flutter/migrating-from-legacy-ringing.mdx:68-69pincometchat_calls_sdk: ^5.1.0andcometchat_voip: ^2.0.0.notifications/flutter-push-notifications.mdx:66pinscometchat_push_notifications: ^2.0.0.ui-kit/flutter/calling-integration.mdx:42,ui-kit/flutter/getting-started.mdx:59,79,ui-kit/flutter/upgrading-from-v5.mdx:82pincometchat_chat_uikit: ^6.3.0, which is a placeholder. Theringing-v2-uikitbranch is stillversion: 6.2.0.- 11
{/* TODO(RC) */}markers are still open.
- An unfinished step would ship to readers. At
calls/flutter/migrating-from-legacy-ringing.mdx:360-364, the Rolling out section has a visible<Warning>that says "Don't publish this page until they are filled in". The dashboard setting's name, its menu path and a screenshot are missing. The checklist item at:381depends on this step.
P1: should fix before merge
- A stale end-reason list contradicts the normalised vocabulary.
calls/flutter/migrating-from-legacy-ringing.mdx:21says the caller sees the reason "(rejected,busy,unanswered,cancelled)". The same page at:198,calls/flutter/ringing.mdx:178,183andcalls/flutter/voip-calling.mdx:356all say to normalise withCometChatCallEndReason.fromWire. That returnsdeclined/timedOut/cancelled/…, and a busy decline can't be told apart from a plain decline. Suggested wording: "…and why a call ended (declined, timed out, cancelled)".
P2: nits
calls/flutter/ringing.mdx:44-45: the diagram labels the caller eventonIncomingCallEnded(rejected). The prose two sections later says the raw reason differs per platform and normalises todeclined. Label itonIncomingCallEnded(reason → declined).calls/flutter/voip-calling.mdx:23-24: the diagram shows Decline →endCall(rejected)and 45 s →endCall(unanswered)with no condition. Pervoip-calling.mdx:354andringing.mdx:304, a group ring sends nothing back, so mark these as 1:1.calls/flutter/migrating-from-legacy-ringing.mdx:375: the checklist says "initiateCallsets … withsetPeerCall(true)".ringing.mdx:96limits this to 1:1 calls, becausesetPeerCall(true)would end a group call for everyone. Add "(1:1 calls)".calls/flutter/ringing.mdx:183: the iOS vocabulary list leaves outanswered. The SDK's ownIncomingCallListenerdoc lists it (calls-sdk-flutter/lib/src/listener/incoming_call_listener.dart:18), andfromWiremaps it toremoteEnded, throughCometChatCallAction.unknown. Either list it or note that unknown values becomeremoteEnded. The table at:178already half-says this.ui-kit/flutter/calling-integration.mdx:67vs:201: Step 2 says to runCometChatCalls.inityourself beforeCometChatUIKit.init. Step 4 saysCometChatUIKit.initinitializes the Calls SDK. Add one line saying the second init is expected and harmless, and that the early init exists forcometchat_voipand the background isolate. Otherwise readers will wonder which one to remove.
What passed
- Redirects: 2 of 2 removed URLs are covered (
/notifications/flutter-push-notifications-androidand-ios→/notifications/flutter-push-notifications)./extensions/flutter-push-notificationswas repointed. The legacy redirect on/notifications/flutter-push-notificationswas removed correctly, since that URL is now a real page. No chained 404s. - Build: 0 nav refs fail to resolve. The 4 new pages are all in nav (
calls/flutter/migrating-from-legacy-ringing,notifications/flutter-push-notifications,notifications/push-getting-started,ui-kit/flutter/calling-integration). - Links: 0 broken internal links in changed pages. The 4 broken links under
calls/flutter/(in-call-chat,share-invite,participant-management) are pre-existing and not touched by this PR. - Images: all 30+ image refs in changed pages exist on the branch.
- API accuracy: every API named in the docs exists in the refs listed above, and the
CometChatVoipConfigdefaults table matches the source (callMode: auto,acceptOnAnswer: true,dropExpiredCalls: true, …). - Orphans:
ui-kit/flutter/llms-flutter-v6andsdk/flutter/llms-flutter-v5are not in nav. They are pre-existing, out of scope, and probably intentional.
Skipped
- No build gate for docs. I did not run Mintlify locally, but the Mintlify preview deployment is 🟢 Ready on the head commit.
- Screenshots were not reviewed visually. The PR only adds Mermaid diagrams and reuses existing images.
Description
Flutter docs for the new ringing flow. Calls are placed and ended with the Calls SDK 5.1, and incoming calls ring through
cometchat_voipin every app state. Push notifications are now chat only. The structure follows the Android PR (#561).Push notifications (chat only)
notifications/flutter-push-notifications.mdxoncometchat_push_notifications2.0.notifications/push-getting-started.mdx.flutter-push-notifications-android/-ios, with redirects.Calls SDK (Flutter)
calls/flutter/ringing): replaces the Chat SDK ringing page in place. Covers start a call, "Ringing…", answer, join, decline, cancel, ring timeout, end, a call while in a call, logout, and call status values.calls/flutter/voip-calling): rewritten forcometchat_voip. Covers packages and platform setup, init, handing over pushes, push token, ring readiness, call modes (Auto, your own ring screen, Manual), how a ring ends, call waiting, missed calls, the killed/locked app, and troubleshooting.launch(isVideo:), and a note that the UI Kit starts the service itself.leave()replaces the deprecatedleaveSession()/endCallSession()), events (prepared session,onParticipantConnected), overview, the v5 migration guide's "5.0 to 5.1" section, and troubleshooting.Chat SDK (Flutter)
sdk/flutter/real-time-listeners: Warning thatCallListenerand the Chat SDK calling methods are superseded.UI Kit (Flutter v6)
cometchat_voip;VoipCallPushBridge),callPushBridgeandnavigatorKey;Type of Change
Checklist
Additional Information
cometchat_calls_sdk5.1,cometchat_voip2.0 and the UI Kit's ringing branch. Hidden{/* TODO(RC) */}comments mark what to fill in at release: package versions, and the dashboard migration setting's name, path and screenshot (Migrating from Legacy Ringing → Rolling out).Screenshots (if applicable)
N/A (text and Mermaid diagrams only).