@cometchat/skills 3.0.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +44 -17
- package/bin/install.js +389 -43
- package/package.json +19 -9
- package/skills/cometchat/SKILL.md +1066 -265
- package/skills/cometchat-android-v5/SKILL.md +120 -0
- package/skills/cometchat-android-v5-components/SKILL.md +430 -0
- package/skills/cometchat-android-v5-core/SKILL.md +468 -0
- package/skills/cometchat-android-v5-customization/SKILL.md +305 -0
- package/skills/cometchat-android-v5-extensions/SKILL.md +124 -0
- package/skills/cometchat-android-v5-features/SKILL.md +130 -0
- package/skills/cometchat-android-v5-placement/SKILL.md +276 -0
- package/skills/cometchat-android-v5-production/SKILL.md +94 -0
- package/skills/cometchat-android-v5-push/SKILL.md +620 -0
- package/skills/cometchat-android-v5-testing/SKILL.md +187 -0
- package/skills/cometchat-android-v5-theming/SKILL.md +166 -0
- package/skills/cometchat-android-v5-troubleshooting/SKILL.md +73 -0
- package/skills/cometchat-android-v6/SKILL.md +107 -0
- package/skills/cometchat-android-v6-builder-settings/SKILL.md +145 -0
- package/skills/cometchat-android-v6-compose-components/SKILL.md +202 -0
- package/skills/cometchat-android-v6-compose-customization/SKILL.md +280 -0
- package/skills/cometchat-android-v6-compose-placement/SKILL.md +213 -0
- package/skills/cometchat-android-v6-compose-theming/SKILL.md +224 -0
- package/skills/cometchat-android-v6-core/SKILL.md +354 -0
- package/skills/cometchat-android-v6-events/SKILL.md +212 -0
- package/skills/cometchat-android-v6-extensions/SKILL.md +191 -0
- package/skills/cometchat-android-v6-features/SKILL.md +130 -0
- package/skills/cometchat-android-v6-kotlin-components/SKILL.md +197 -0
- package/skills/cometchat-android-v6-kotlin-customization/SKILL.md +268 -0
- package/skills/cometchat-android-v6-kotlin-placement/SKILL.md +248 -0
- package/skills/cometchat-android-v6-kotlin-theming/SKILL.md +202 -0
- package/skills/cometchat-android-v6-production/SKILL.md +187 -0
- package/skills/cometchat-android-v6-push/SKILL.md +274 -0
- package/skills/cometchat-android-v6-testing/SKILL.md +279 -0
- package/skills/cometchat-android-v6-troubleshooting/SKILL.md +249 -0
- package/skills/cometchat-angular-components/SKILL.md +706 -0
- package/skills/cometchat-angular-core/SKILL.md +444 -0
- package/skills/cometchat-angular-customization/SKILL.md +424 -0
- package/skills/cometchat-angular-features/SKILL.md +447 -0
- package/skills/cometchat-angular-patterns/SKILL.md +447 -0
- package/skills/cometchat-angular-placement/SKILL.md +685 -0
- package/skills/cometchat-angular-production/SKILL.md +415 -0
- package/skills/cometchat-angular-theming/SKILL.md +365 -0
- package/skills/cometchat-angular-troubleshooting/SKILL.md +329 -0
- package/skills/cometchat-astro-patterns/SKILL.md +3 -3
- package/skills/cometchat-components/SKILL.md +11 -0
- package/skills/cometchat-core/SKILL.md +11 -6
- package/skills/cometchat-customization/references/component-catalog.md +1 -1
- package/skills/cometchat-features/SKILL.md +176 -108
- package/skills/cometchat-flutter-v5/SKILL.md +167 -0
- package/skills/cometchat-flutter-v5-calls/SKILL.md +192 -0
- package/skills/cometchat-flutter-v5-conversations/SKILL.md +117 -0
- package/skills/cometchat-flutter-v5-core/SKILL.md +221 -0
- package/skills/cometchat-flutter-v5-customization/SKILL.md +227 -0
- package/skills/cometchat-flutter-v5-events/SKILL.md +155 -0
- package/skills/cometchat-flutter-v5-messages/SKILL.md +258 -0
- package/skills/cometchat-flutter-v5-production/SKILL.md +207 -0
- package/skills/cometchat-flutter-v5-push/SKILL.md +284 -0
- package/skills/cometchat-flutter-v5-theming/SKILL.md +160 -0
- package/skills/cometchat-flutter-v5-troubleshooting/SKILL.md +129 -0
- package/skills/cometchat-flutter-v5-users-groups/SKILL.md +151 -0
- package/skills/cometchat-flutter-v6/SKILL.md +445 -0
- package/skills/cometchat-flutter-v6-calls/SKILL.md +333 -0
- package/skills/cometchat-flutter-v6-components/SKILL.md +365 -0
- package/skills/cometchat-flutter-v6-conversations/SKILL.md +210 -0
- package/skills/cometchat-flutter-v6-core/SKILL.md +305 -0
- package/skills/cometchat-flutter-v6-customization/SKILL.md +666 -0
- package/skills/cometchat-flutter-v6-events/SKILL.md +216 -0
- package/skills/cometchat-flutter-v6-features/SKILL.md +406 -0
- package/skills/cometchat-flutter-v6-messages/SKILL.md +333 -0
- package/skills/cometchat-flutter-v6-migration/SKILL.md +381 -0
- package/skills/cometchat-flutter-v6-placement/SKILL.md +398 -0
- package/skills/cometchat-flutter-v6-production/SKILL.md +632 -0
- package/skills/cometchat-flutter-v6-theming/SKILL.md +260 -0
- package/skills/cometchat-flutter-v6-troubleshooting/SKILL.md +726 -0
- package/skills/cometchat-flutter-v6-users-groups/SKILL.md +216 -0
- package/skills/cometchat-ios/SKILL.md +323 -0
- package/skills/cometchat-ios-components/SKILL.md +651 -0
- package/skills/cometchat-ios-core/SKILL.md +822 -0
- package/skills/cometchat-ios-customization/SKILL.md +825 -0
- package/skills/cometchat-ios-features/SKILL.md +725 -0
- package/skills/cometchat-ios-placement/SKILL.md +750 -0
- package/skills/cometchat-ios-production/SKILL.md +730 -0
- package/skills/cometchat-ios-push/SKILL.md +582 -0
- package/skills/cometchat-ios-theming/SKILL.md +631 -0
- package/skills/cometchat-ios-troubleshooting/SKILL.md +983 -0
- package/skills/cometchat-native-bare-patterns/SKILL.md +470 -0
- package/skills/cometchat-native-components/SKILL.md +594 -0
- package/skills/cometchat-native-core/SKILL.md +407 -0
- package/skills/cometchat-native-customization/SKILL.md +594 -0
- package/skills/cometchat-native-expo-patterns/SKILL.md +485 -0
- package/skills/cometchat-native-features/SKILL.md +608 -0
- package/skills/cometchat-native-placement/SKILL.md +500 -0
- package/skills/cometchat-native-production/SKILL.md +694 -0
- package/skills/cometchat-native-push/SKILL.md +593 -0
- package/skills/cometchat-native-testing/SKILL.md +583 -0
- package/skills/cometchat-native-theming/SKILL.md +656 -0
- package/skills/cometchat-native-troubleshooting/SKILL.md +433 -0
- package/skills/cometchat-nextjs-patterns/SKILL.md +5 -5
- package/skills/cometchat-production/SKILL.md +60 -0
- package/skills/cometchat-react-router-patterns/SKILL.md +23 -21
|
@@ -0,0 +1,381 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cometchat-flutter-v6-migration
|
|
3
|
+
description: >
|
|
4
|
+
Use when migrating a CometChat Flutter app from UIKit v5 (cometchat_calls_uikit + GetX)
|
|
5
|
+
to UIKit v6 (cometchat_chat_uikit unified package, no GetX). Covers import changes,
|
|
6
|
+
dependency cleanup, GetX removal, init/login pattern changes, navigation rewrites,
|
|
7
|
+
screen structure flattening, notification service updates, and BuilderSettings removal.
|
|
8
|
+
Also use when seeing imports from cometchat_calls_uikit, get/get.dart, or v5-era patterns
|
|
9
|
+
like GetBuilder, Get.put, Get.find, PageManager, BuilderSettings, or CometChatCallingExtension.
|
|
10
|
+
license: "MIT"
|
|
11
|
+
compatibility: "cometchat_chat_uikit 6.0.0-beta2"
|
|
12
|
+
allowed-tools: "executeBash, readFile, readCode, fileSearch, listDirectory, grepSearch"
|
|
13
|
+
metadata:
|
|
14
|
+
author: "CometChat"
|
|
15
|
+
version: "3.0.0"
|
|
16
|
+
tags: "cometchat flutter migration v5 v6 getx removal upgrade consumer"
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
# CometChat Flutter — v5 to v6 Migration
|
|
20
|
+
|
|
21
|
+
Complete guide for migrating a consumer app from UIKit v5 to v6.
|
|
22
|
+
|
|
23
|
+
## What Changed
|
|
24
|
+
|
|
25
|
+
| Area | v5 | v6 |
|
|
26
|
+
|------|-----|-----|
|
|
27
|
+
| Packages | `cometchat_chat_uikit` + `cometchat_calls_uikit` (separate) | `cometchat_chat_uikit` only (calls bundled) |
|
|
28
|
+
| State | GetX (`Get.put`, `GetBuilder`, `Obx`, `.obs`, `RxBool`) | Plain `StatefulWidget` + `setState()` |
|
|
29
|
+
| Navigation | `PageManager` (GetxController singleton) | Direct `Navigator.push` |
|
|
30
|
+
| Init | `InitializeCometChat.init()` + `CometChatCallingExtension()` + `extensions` + `aiFeature` | Inline `CometChatUIKit.init()` + `enableCalls: true` + `CallingConfiguration()` |
|
|
31
|
+
| Calls SDK init | `CometChatCallingExtension()` in extensions list | `CallEventService.instance.init()` after login |
|
|
32
|
+
| Screens | Separate controller + widget files per screen | Single file, state in StatefulWidget |
|
|
33
|
+
| Dashboard | `MyHomePage`/`MyPageView` with GetX `PageManager` | `HomeScreen` with `IndexedStack` |
|
|
34
|
+
| Messages | `MessagesSample` + `CometChatMessagesController` | `MessagesScreen` with listener mixins |
|
|
35
|
+
| Builder system | `BuilderSettings`, `BuilderColor`, `BuilderTypography` | Removed — toggle features per-widget (e.g. `disableReactions`, `hideReplyInThreadOption` on `CometChatMessageList`) or via the relevant component's constructor params. There is no global `ComponentToggles` class. |
|
|
36
|
+
| Notifications | `VoipNotificationHandler`, `APNSService` | `VoipCallHandler`, `ApnsService` |
|
|
37
|
+
| Extra deps | `get`, `google_sign_in`, `firebase_auth`, `bugsee_flutter`, `shared_preferences`, `toast`, `mobile_scanner`, `app_badge_plus` | None of these |
|
|
38
|
+
| Localization | `cc.Translations.delegate` + `GlobalMaterialLocalizations` in MaterialApp | Handled by UIKit internally |
|
|
39
|
+
| Call screen | `callMain()` entry point + `CallApp` + `CallScreen` widget | `CometChatOngoingCall` widget for the in-call UI + `CometChatDisplayIncomingCallOverlay` for incoming-call presentation. No separate Dart entry point. |
|
|
40
|
+
| Android minSdk | 24 | 26 (required by `cometchat_calls_sdk`) |
|
|
41
|
+
|
|
42
|
+
## Step 1: pubspec.yaml
|
|
43
|
+
|
|
44
|
+
```yaml
|
|
45
|
+
# ❌ v5
|
|
46
|
+
dependencies:
|
|
47
|
+
cometchat_chat_uikit:
|
|
48
|
+
path: ../chat_uikit
|
|
49
|
+
cometchat_calls_uikit:
|
|
50
|
+
path: ../calls_uikit
|
|
51
|
+
get: ^4.6.5
|
|
52
|
+
google_sign_in: ^6.2.2
|
|
53
|
+
firebase_auth: ^5.3.4
|
|
54
|
+
bugsee_flutter: ^8.0.0
|
|
55
|
+
permission_handler: ^11.3.1
|
|
56
|
+
shared_preferences: ^2.2.1
|
|
57
|
+
toast: ^0.3.0
|
|
58
|
+
mobile_scanner: ^7.1.2
|
|
59
|
+
app_badge_plus: ^1.2.6
|
|
60
|
+
|
|
61
|
+
# ✅ v6
|
|
62
|
+
dependencies:
|
|
63
|
+
cometchat_chat_uikit:
|
|
64
|
+
hosted: https://dart.cloudsmith.io/cometchat/cometchat/
|
|
65
|
+
version: 6.0.0-beta2
|
|
66
|
+
firebase_core: ^3.9.0
|
|
67
|
+
firebase_crashlytics: ^4.1.3
|
|
68
|
+
firebase_messaging: ^15.1.6
|
|
69
|
+
flutter_local_notifications: ^18.0.0
|
|
70
|
+
flutter_callkit_incoming: ^2.5.0
|
|
71
|
+
http: ^1.2.0
|
|
72
|
+
intl: ^0.20.2
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Step 2: Fix All Imports
|
|
76
|
+
|
|
77
|
+
| v5 Import | v6 Import |
|
|
78
|
+
|-----------|-----------|
|
|
79
|
+
| `package:cometchat_calls_uikit/cometchat_calls_uikit.dart` | `package:cometchat_chat_uikit/cometchat_calls_uikit.dart` |
|
|
80
|
+
| `package:get/get.dart` | Remove entirely |
|
|
81
|
+
| `builder/builder_settings.dart` | Remove — toggle features per-widget instead (no global toggle class in v6) |
|
|
82
|
+
| `builder/builder_settings_helper.dart` | Remove |
|
|
83
|
+
| `utils/page_manager.dart` | Remove — use `Navigator.push` |
|
|
84
|
+
| `utils/initialize_cometchat.dart` | Remove — inline init |
|
|
85
|
+
| `utils/bool_singleton.dart` | Remove |
|
|
86
|
+
| `utils/text_constants.dart` | Remove |
|
|
87
|
+
| `prefs/shared_preferences.dart` | Remove |
|
|
88
|
+
|
|
89
|
+
## Step 3: Rewrite Init
|
|
90
|
+
|
|
91
|
+
```dart
|
|
92
|
+
// ❌ v5 — helper class with CometChatCallingExtension + extensions + aiFeature
|
|
93
|
+
class InitializeCometChat {
|
|
94
|
+
static Future<bool> init() async {
|
|
95
|
+
final builder = UIKitSettingsBuilder()
|
|
96
|
+
..callingExtension = CometChatCallingExtension() // REMOVED in v6
|
|
97
|
+
..extensions = CometChatUIKitChatExtensions.getDefaultExtensions() // REMOVED
|
|
98
|
+
..aiFeature = CometChatUIKitChatAIFeatures.getDefaultAiFeatures(); // REMOVED
|
|
99
|
+
// ...
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// ✅ v6 — inline, enableCalls + CallingConfiguration replace all three
|
|
104
|
+
final settings = (UIKitSettingsBuilder()
|
|
105
|
+
..subscriptionType = CometChatSubscriptionType.allUsers
|
|
106
|
+
..region = AppCredentials.region
|
|
107
|
+
..appId = AppCredentials.appId
|
|
108
|
+
..authKey = AppCredentials.authKey
|
|
109
|
+
..enableCalls = true
|
|
110
|
+
..callingConfiguration = CallingConfiguration())
|
|
111
|
+
.build();
|
|
112
|
+
|
|
113
|
+
CometChatUIKit.init(uiKitSettings: settings, onSuccess: (_) { ... });
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Removed v5 UIKitSettingsBuilder properties
|
|
117
|
+
- `callingExtension` → replaced by `enableCalls: true`
|
|
118
|
+
- `extensions` → removed (extensions auto-registered in v6)
|
|
119
|
+
- `aiFeature` → removed (AI features auto-registered in v6)
|
|
120
|
+
|
|
121
|
+
### Calls SDK Init for Cached Sessions
|
|
122
|
+
|
|
123
|
+
```dart
|
|
124
|
+
// ❌ v5 — CometChatCallingExtension handled it automatically
|
|
125
|
+
|
|
126
|
+
// ✅ v6 — explicit init needed when restoring cached session (no login call)
|
|
127
|
+
Future<void> _initCallsSdk() async {
|
|
128
|
+
await CallEventService.instance.init(
|
|
129
|
+
configuration: CallingConfiguration(),
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
// Call after checking getLoggedInUser() returns non-null
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## Step 4: Remove GetX
|
|
136
|
+
|
|
137
|
+
### PageManager → Navigator.push
|
|
138
|
+
```dart
|
|
139
|
+
// ❌ v5
|
|
140
|
+
Get.put(PageManager());
|
|
141
|
+
Get.find<PageManager>().navigateToMessages(context: context, user: user);
|
|
142
|
+
|
|
143
|
+
// ✅ v6
|
|
144
|
+
Navigator.push(context, MaterialPageRoute(
|
|
145
|
+
builder: (_) => MessagesScreen(user: user),
|
|
146
|
+
));
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### GetBuilder → StatefulWidget with listener mixins
|
|
150
|
+
```dart
|
|
151
|
+
// ❌ v5
|
|
152
|
+
GetBuilder<CometChatMessagesController>(
|
|
153
|
+
init: messagesController,
|
|
154
|
+
tag: messagesController.tag,
|
|
155
|
+
builder: (controller) => Scaffold(/* ... */),
|
|
156
|
+
)
|
|
157
|
+
|
|
158
|
+
// ✅ v6
|
|
159
|
+
class _MessagesScreenState extends State<MessagesScreen>
|
|
160
|
+
with UserListener, CometChatUserEventListener,
|
|
161
|
+
GroupListener, CometChatGroupEventListener {
|
|
162
|
+
late User? _user;
|
|
163
|
+
late Group? _group;
|
|
164
|
+
// setState() instead of controller.update()
|
|
165
|
+
}
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### Rx variables → plain state
|
|
169
|
+
```dart
|
|
170
|
+
// ❌ v5
|
|
171
|
+
var isBlockLoading = false.obs;
|
|
172
|
+
// Usage: isBlockLoading.value = true;
|
|
173
|
+
|
|
174
|
+
// ✅ v6
|
|
175
|
+
bool _isUserBlocked = false;
|
|
176
|
+
// Usage: setState(() => _isUserBlocked = true);
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### Obx dialogs → StatefulBuilder
|
|
180
|
+
```dart
|
|
181
|
+
// ❌ v5 — Obx in dialog for loading indicator
|
|
182
|
+
Obx(() => isLoading.value ? CircularProgressIndicator() : Icon(Icons.check))
|
|
183
|
+
|
|
184
|
+
// ✅ v6 — StatefulBuilder in dialog
|
|
185
|
+
StatefulBuilder(builder: (context, setDialogState) {
|
|
186
|
+
return isLoading ? CircularProgressIndicator() : Icon(Icons.check);
|
|
187
|
+
})
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
## Step 5: Removed v5 APIs
|
|
191
|
+
|
|
192
|
+
These v5 widget parameters/classes don't exist in v6:
|
|
193
|
+
|
|
194
|
+
| v5 API | Status in v6 |
|
|
195
|
+
|--------|-------------|
|
|
196
|
+
| `CometChatCompactMessageComposer` | Removed — use `CometChatMessageComposer` |
|
|
197
|
+
| `CometChatAIAssistantChatHistory` | Removed |
|
|
198
|
+
| `CometChatMessageHeader` `options` param | Removed — use `trailingView` |
|
|
199
|
+
| `CometChatMessageList` `messageId` param | Removed — use `goToMessageId` |
|
|
200
|
+
| `CometChatMessageList` `hideFlagOption` | Removed |
|
|
201
|
+
| `CometChatMessageList` `generateConversationSummary` | Removed |
|
|
202
|
+
| `getDataSource()` on message list | Removed |
|
|
203
|
+
| `AssetConstants.conversationSummaryOutlined` | Removed |
|
|
204
|
+
| `CometChatBannedMembers` (standalone widget) | Not exported in v6 |
|
|
205
|
+
| `CometChatCallLogParticipants` (standalone) | Not exported in v6 |
|
|
206
|
+
| `CometChatCallLogRecordings` (standalone) | Not exported in v6 |
|
|
207
|
+
| `CometChatCallLogHistory` (standalone) | Not exported in v6 |
|
|
208
|
+
| `CometChatCallingExtension()` | Replaced by `enableCalls: true` + `CallingConfiguration()` |
|
|
209
|
+
| `CometChatUIKitChatExtensions.getDefaultExtensions()` | Removed — auto-registered |
|
|
210
|
+
| `CometChatUIKitChatAIFeatures.getDefaultAiFeatures()` | Removed — auto-registered |
|
|
211
|
+
| `CallSettingsBuilder` | Replaced by `SessionSettingsBuilder` |
|
|
212
|
+
| `FormatPatterns.stripFormatting()` | Removed |
|
|
213
|
+
| `CallStateController.instance` | Replaced by `CallStateService.instance` |
|
|
214
|
+
|
|
215
|
+
### CallSettingsBuilder → SessionSettingsBuilder
|
|
216
|
+
```dart
|
|
217
|
+
// ❌ v5
|
|
218
|
+
CallSettingsBuilder()
|
|
219
|
+
..enableDefaultLayout = true
|
|
220
|
+
|
|
221
|
+
// ✅ v6
|
|
222
|
+
SessionSettingsBuilder()
|
|
223
|
+
..setLayout(LayoutType.tile)
|
|
224
|
+
..startVideoPaused(true) // for audio calls
|
|
225
|
+
..hideSwitchCameraButton(true)
|
|
226
|
+
..hideToggleVideoButton(true)
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
## Step 6: Flatten Screen Structure
|
|
230
|
+
|
|
231
|
+
```
|
|
232
|
+
# ❌ v5 — controller + widget per screen
|
|
233
|
+
messages/
|
|
234
|
+
├── messages.dart # MessagesSample widget
|
|
235
|
+
└── messages_controller.dart # GetxController
|
|
236
|
+
group_info/
|
|
237
|
+
├── cometchat_group_info.dart
|
|
238
|
+
└── cometchat_group_info_controller.dart
|
|
239
|
+
|
|
240
|
+
# ✅ v6 — single file per screen
|
|
241
|
+
screens/
|
|
242
|
+
├── messages_screen.dart # Widget + state + listeners
|
|
243
|
+
├── group_info_screen.dart
|
|
244
|
+
├── home_screen.dart
|
|
245
|
+
└── ...
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
### Class Rename Map
|
|
249
|
+
|
|
250
|
+
| v5 Class | v6 Class |
|
|
251
|
+
|----------|----------|
|
|
252
|
+
| `MyHomePage` / `MyPageView` | `HomeScreen` |
|
|
253
|
+
| `MessagesSample` | `MessagesScreen` |
|
|
254
|
+
| `GuardScreen` | `GuardScreen` (same name, rewritten) |
|
|
255
|
+
| `LoginSampleUsers` | `LoginScreen` |
|
|
256
|
+
|
|
257
|
+
## Step 7: Update MaterialApp
|
|
258
|
+
|
|
259
|
+
```dart
|
|
260
|
+
// ❌ v5 — localization delegates, BuilderTypography, callMain entry point
|
|
261
|
+
MaterialApp(
|
|
262
|
+
supportedLocales: const [Locale('en'), Locale('ar'), ...],
|
|
263
|
+
localizationsDelegates: const [
|
|
264
|
+
cc.Translations.delegate,
|
|
265
|
+
GlobalMaterialLocalizations.delegate,
|
|
266
|
+
GlobalWidgetsLocalizations.delegate,
|
|
267
|
+
GlobalCupertinoLocalizations.delegate,
|
|
268
|
+
],
|
|
269
|
+
theme: ThemeData(
|
|
270
|
+
fontFamily: BuilderTypography.font,
|
|
271
|
+
extensions: [CometChatColorPalette(primary: BuilderColor.brandColor)],
|
|
272
|
+
),
|
|
273
|
+
navigatorKey: CallNavigationContext.navigatorKey,
|
|
274
|
+
)
|
|
275
|
+
|
|
276
|
+
// ✅ v6 — Material 3, no builder system, no localization delegates
|
|
277
|
+
MaterialApp(
|
|
278
|
+
debugShowCheckedModeBanner: false,
|
|
279
|
+
navigatorKey: LocalNotificationService.navigatorKey,
|
|
280
|
+
theme: ThemeData(
|
|
281
|
+
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
|
|
282
|
+
useMaterial3: true,
|
|
283
|
+
),
|
|
284
|
+
darkTheme: ThemeData(
|
|
285
|
+
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple, brightness: Brightness.dark),
|
|
286
|
+
useMaterial3: true,
|
|
287
|
+
brightness: Brightness.dark,
|
|
288
|
+
),
|
|
289
|
+
themeMode: ThemeMode.system,
|
|
290
|
+
)
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
Remove the `callMain()` entry point and `CallApp`/`CallScreen` widget entirely. V6 renders the in-call UI via the `CometChatOngoingCall` widget (placed in your widget tree once the call is active) and presents incoming calls via `CometChatDisplayIncomingCallOverlay`. There is no `CallScreenOverlay.show()` API.
|
|
294
|
+
|
|
295
|
+
## Step 8: Update Notification Services
|
|
296
|
+
|
|
297
|
+
| v5 Class | v6 Class |
|
|
298
|
+
|----------|----------|
|
|
299
|
+
| `VoipNotificationHandler` | `VoipCallHandler` |
|
|
300
|
+
| `APNSService` | `ApnsService` |
|
|
301
|
+
| `FirebaseService` | `FirebaseService` (same) |
|
|
302
|
+
|
|
303
|
+
### VoIP Cold Start
|
|
304
|
+
```dart
|
|
305
|
+
// ❌ v5 — handled in dashboard initState
|
|
306
|
+
VoipNotificationHandler.handleNativeCallIntent(context);
|
|
307
|
+
|
|
308
|
+
// ✅ v6 — init early in main(), markSdkReady after login
|
|
309
|
+
VoipCallHandler.instance.init(); // in main()
|
|
310
|
+
await VoipCallHandler.instance.markSdkReady(); // after login
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
## Step 9: resizeToAvoidBottomInset
|
|
314
|
+
|
|
315
|
+
```dart
|
|
316
|
+
// ❌ v5 — default true, SafeArea wrapping
|
|
317
|
+
Scaffold(body: SafeArea(child: Column(children: [messageList, composer])))
|
|
318
|
+
|
|
319
|
+
// ✅ v6 — must be false, composer handles keyboard internally
|
|
320
|
+
Scaffold(
|
|
321
|
+
resizeToAvoidBottomInset: false,
|
|
322
|
+
body: Column(children: [Expanded(child: messageList), composer]),
|
|
323
|
+
)
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
## Step 10: Android Build
|
|
327
|
+
|
|
328
|
+
In `android/app/build.gradle(.kts)`:
|
|
329
|
+
```kotlin
|
|
330
|
+
defaultConfig {
|
|
331
|
+
minSdk = 26 // Was 24 in v5, required by cometchat_calls_sdk in v6
|
|
332
|
+
}
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
In `android/gradle.properties`:
|
|
336
|
+
```properties
|
|
337
|
+
android.enableJetifier=true // Required for support library conflicts
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
## Step 11: Delete v5 Files
|
|
341
|
+
|
|
342
|
+
- `builder/` folder entirely
|
|
343
|
+
- `utils/page_manager.dart`, `initialize_cometchat.dart`, `bool_singleton.dart`, `text_constants.dart`
|
|
344
|
+
- `prefs/shared_preferences.dart`
|
|
345
|
+
- `services/bugsee_services.dart`
|
|
346
|
+
- `qr_scanner/` folder
|
|
347
|
+
- `ai_agents/` folder
|
|
348
|
+
- `call_screen.dart`
|
|
349
|
+
- `demo_meta_info_constants.dart` (recreate minimal if needed)
|
|
350
|
+
- All `*_controller.dart` files
|
|
351
|
+
- `auth/login_screen.dart` (if it depended on google_sign_in/firebase_auth)
|
|
352
|
+
|
|
353
|
+
## Gotchas
|
|
354
|
+
|
|
355
|
+
- `CometChatCallingExtension()`, `extensions`, and `aiFeature` on UIKitSettingsBuilder don't exist in v6. Extensions and AI features are auto-registered. Only `enableCalls: true` + `CallingConfiguration()` is needed.
|
|
356
|
+
- `CallSettingsBuilder` is renamed to `SessionSettingsBuilder` with different API: `.setLayout(LayoutType.tile)` instead of `..enableDefaultLayout = true`.
|
|
357
|
+
- v6 `CometChatMessageList` doesn't have `messageId` param — use `goToMessageId` instead.
|
|
358
|
+
- `CometChatBannedMembers`, `CometChatCallLogParticipants`, `CometChatCallLogRecordings`, `CometChatCallLogHistory` are not exported as standalone widgets in v6.
|
|
359
|
+
- The `callMain()` entry point pattern (separate Dart entry point for Android CallActivity) is gone. V6 renders the in-call UI via the `CometChatOngoingCall` widget within your existing app navigator + `CometChatDisplayIncomingCallOverlay` for incoming-call UI.
|
|
360
|
+
- `FormatPatterns.stripFormatting()` doesn't exist in v6. Use `MarkdownTextFormatter` instead.
|
|
361
|
+
|
|
362
|
+
## Checklist
|
|
363
|
+
|
|
364
|
+
- [ ] `pubspec.yaml` — remove `cometchat_calls_uikit`, `get`, and all unused deps
|
|
365
|
+
- [ ] All imports — `cometchat_calls_uikit` → `cometchat_chat_uikit/cometchat_calls_uikit.dart`
|
|
366
|
+
- [ ] All imports — remove `get/get.dart`
|
|
367
|
+
- [ ] Init — remove `CometChatCallingExtension`, `extensions`, `aiFeature`; add `enableCalls` + `CallingConfiguration`
|
|
368
|
+
- [ ] Add `CallEventService.instance.init()` for cached sessions
|
|
369
|
+
- [ ] Remove `PageManager` — replace with `Navigator.push`
|
|
370
|
+
- [ ] Remove all `GetBuilder`/`Obx`/`Get.put`/`Get.find`
|
|
371
|
+
- [ ] Remove all `*_controller.dart` files
|
|
372
|
+
- [ ] Flatten screens into `screens/` folder
|
|
373
|
+
- [ ] Remove `BuilderSettings` — toggle features per-widget (e.g. `disableReactions`, `hideReplyInThreadOption`) on the relevant CometChat widget instead
|
|
374
|
+
- [ ] Update `MaterialApp` — remove localization delegates, remove `BuilderTypography`
|
|
375
|
+
- [ ] Remove `callMain()` entry point and `CallScreen` widget
|
|
376
|
+
- [ ] `CallSettingsBuilder` → `SessionSettingsBuilder`
|
|
377
|
+
- [ ] `resizeToAvoidBottomInset: false` on all Scaffolds with composer
|
|
378
|
+
- [ ] Android `minSdk` = 26
|
|
379
|
+
- [ ] Android `enableJetifier = true`
|
|
380
|
+
- [ ] Delete all unused v5 files
|
|
381
|
+
- [ ] Test: init → login → conversations → messages → calls → logout → re-login
|