getContextMenu function

ContextMenu getContextMenu(
  1. bool isFromAssistant,
  2. Reaction currentReaction,
  3. bool hideInputBox, {
  4. PupauMessage? message,
})

Implementation

ContextMenu getContextMenu(
  bool isFromAssistant,
  Reaction currentReaction,
  bool hideInputBox, {
  PupauMessage? message,
}) {
  PupauChatController controller = Get.find();
  bool showForkConversationIcon = controller.pupauConfig?.bearerToken != null;
  final bool hasTrimmingContent = isFromAssistant &&
      (_hasTrimmingContent(message?.attachmentTrimming) ||
          _hasTrimmingContent(message?.emergencyTrimming));

  final List<ContextMenuEntry> messageMenuEntries = <ContextMenuEntry>[
    if (isFromAssistant)
      MyMenuItem(
        label: Strings.like.tr,
        icon: currentReaction == Reaction.like
            ? Icons.thumb_up
            : Symbols.thumb_up,
        value: 0,
      ),
    if (isFromAssistant)
      MyMenuItem(
        label: Strings.dislike.tr,
        icon: currentReaction == Reaction.dislike
            ? Icons.thumb_down
            : Symbols.thumb_down,
        value: 1,
      ),
    if (isFromAssistant) const MenuDivider(),
    MyMenuItem(label: Strings.copy.tr, icon: Symbols.content_copy, value: 2),
    if (!isFromAssistant && !hideInputBox)
      MyMenuItem(label: Strings.use.tr, icon: Symbols.send, value: 3),
    if (isFromAssistant)
      MyMenuItem(label: Strings.read.tr, icon: Symbols.volume_up, value: 4),
    if (isFromAssistant) const MenuDivider(),
    if (isFromAssistant && showForkConversationIcon)
      MyMenuItem(
        label: Strings.fork.tr,
        icon: Symbols.fork_left,
        flipIcon: true,
        value: 5,
      ),
    if (isFromAssistant && hasTrimmingContent)
      MyMenuItem(
        label: Strings.attachmentTrimmingTitle.tr,
        icon: Symbols.warning,
        value: 7,
      ),
    if (isFromAssistant)
      MyMenuItem(
        label: Strings.report.tr,
        icon: Symbols.error,
        value: 6,
      ),
  ];

  final ContextMenu contextMenu = ContextMenu(
    entries: messageMenuEntries,
    padding: const EdgeInsets.all(8.0),
  );
  return contextMenu;
}