setAssistantSettings method

Future<void> setAssistantSettings()

Implementation

Future<void> setAssistantSettings() async {
  try {
    UsageSettings? usageSettings = assistant.value?.usageSettings;
    if (usageSettings != null) {
      isAttachmentAvailable.value = usageSettings.canAttach;
      isActionBarAlwaysVisible.value = usageSettings.actionBarAlwaysVisible;
      isWebSearchAvailable.value = usageSettings.canWebSearch;
      isMentionAvailable.value = usageSettings.canTag;
      if ((pupauConfig?.isAnonymous ?? false) &&
          assistant.value?.usageSettings?.canAnonymous == false) {
        PupauEventService.instance.emitPupauEvent(
          PupauEvent(
            type: UpdateConversationType.error,
            payload: {
              "error":
                  "Anonymous conversations are not allowed for this assistant. Please use a different assistant or create a new conversation.",
              "assistantId": assistantId,
              "assistantType":
                  assistant.value?.type ?? AssistantType.assistant,
            },
          ),
        );
        await showCustomBasicDialog(
          Strings.anonymousConversationsNotAllowed.tr,
        );
        manageForceBack();
      }
    }
    List<String> newConversationStarters;
    if (pupauConfig?.conversationStarters.isNotEmpty ?? false) {
      newConversationStarters = List<String>.from(
        pupauConfig?.conversationStarters ?? [],
      );
    } else {
      List<String> chatEngagementPrompts =
          assistant.value?.apiKeyConfig?.chatEngagementPrompts ?? [];
      newConversationStarters = chatEngagementPrompts.isNotEmpty
          ? List<String>.from(chatEngagementPrompts)
          : <String>[];
    }
    conversationStarters.value = newConversationStarters;
    conversationStarters.refresh();
    showNerdStats.value = pupauConfig?.showNerdStats ?? false;
    hideInputBox.value = pupauConfig?.hideInputBox ?? false;
    update();
  } catch (e, stackTrace) {
    PupauEventService.instance.emitPupauEvent(
      PupauEvent(
        type: UpdateConversationType.error,
        payload: {
          "error": "Error in setAssistantSettings: ${e.toString()}",
          "errorType": e.runtimeType.toString(),
          "stackTrace": stackTrace.toString(),
          "assistantId": assistantId,
          "assistantExists": assistant.value != null,
          "usageSettingsExists": assistant.value?.usageSettings != null,
          "apiKeyConfigExists": assistant.value?.apiKeyConfig != null,
        },
      ),
    );
    rethrow;
  }
}