initChatController method
Future<void>
initChatController(
)
Implementation
Future<void> initChatController() async {
try {
initScrollControllers();
initLanguage();
hasApiError.value = false;
// Initialize AssistantsController and load assistants after ChatController is ready
if (Get.isRegistered<AssistantsController>()) {
final assistantsController = Get.find<AssistantsController>();
// Only load if assistants list is empty (not already loaded)
if (assistantsController.assistants.isEmpty) {
await assistantsController.getAssistants();
}
assistants = assistantsController.assistants;
}
await getAssistant();
messageNotifier.setAssistantId(assistant.value?.id ?? "");
if (assistant.value != null) {
// Component successfully booted - config received and first remote call succeeded
_updateBootStatus(BootState.ok);
if (DeviceService.isTablet) setDefautMessageInputFieldHeight();
if (hasApiError.value) {
_updateBootStatus(BootState.error);
return;
}
if (!isAnonymous &&
pupauConfig?.conversationId != null &&
pupauConfig?.conversationId?.trim() != "") {
await loadConversation(pupauConfig?.conversationId ?? "");
}
_hasCompletedFirstInit = true;
_onFirstInitCompleteCallback?.call();
_onFirstInitCompleteCallback = null;
} else {
_updateBootStatus(BootState.error);
}
} catch (e) {
_updateBootStatus(BootState.error);
PupauEventService.instance.emitPupauEvent(
PupauEvent(
type: UpdateConversationType.error,
payload: {
"error": "Error initializing chat controller: ${e.toString()}",
},
),
);
}
}