getConversation static method

Future<Conversation?> getConversation(
  1. String idAssistant,
  2. String idConversation,
  3. bool isMarketplace
)

Gets a conversation by its assistant and conversation IDs

Implementation

static Future<Conversation?> getConversation(
  String idAssistant,
  String idConversation,
  bool isMarketplace,
) async {
  try {
    Conversation? conversation;
    String url = ApiUrls.conversationUrl(
      idAssistant,
      idConversation,
      isMarketplace: isMarketplace,
    );
    await ApiService.call(
      url,
      RequestType.get,
      onSuccess: (response) =>
          conversation = Conversation.fromMap(response.data),
      onError: (error) {
        if (error.statusCode == 403) {
          showErrorSnackbar(Strings.conversationForbidden.tr);
          String errorMessage = "Conversation forbidden";
          PupauEventService.instance.emitPupauEvent(
            PupauEvent(
              type: UpdateConversationType.error,
              payload: {
                "error": errorMessage,
                "assistantId": idAssistant,
                "assistantType": isMarketplace ? "MARKETPLACE" : "ASSISTANT",
                "conversationId": idConversation,
              },
            ),
          );
        } else {
          showErrorSnackbar(Strings.conversationLoadFailed.tr);
          String errorMessage = "Conversation load failed";
          PupauEventService.instance.emitPupauEvent(
            PupauEvent(
              type: UpdateConversationType.error,
              payload: {
                "error": errorMessage,
                "assistantId": idAssistant,
                "assistantType": isMarketplace ? "MARKETPLACE" : "ASSISTANT",
                "conversationId": idConversation,
              },
            ),
          );
        }
      },
    );
    return conversation;
  } catch (e) {
    showErrorSnackbar(Strings.conversationLoadFailed.tr);
    String errorMessage = "Conversation load failed";
    PupauEventService.instance.emitPupauEvent(
      PupauEvent(
        type: UpdateConversationType.error,
        payload: {
          "error": errorMessage,
          "assistantId": idAssistant,
          "assistantType": isMarketplace ? "MARKETPLACE" : "ASSISTANT",
          "conversationId": idConversation,
        },
      ),
    );
    return null;
  }
}