getCallIcon static method

Widget getCallIcon(
  1. BuildContext context,
  2. CallLog callLog,
  3. User? loggedInUser,
  4. CometChatColorPalette colorPalette,
  5. CometChatTypography typography,
  6. CometChatSpacing spacing,
  7. CometChatCallLogsStyle style, {
  8. Widget? incomingCallIcon,
  9. Widget? outgoingCallIcon,
  10. Widget? missedCallIcon,
})

getCallIcon Return call status icon

Implementation

static Widget getCallIcon(
  BuildContext context,
  CallLog callLog,
  User? loggedInUser,
  CometChatColorPalette colorPalette,
  CometChatTypography typography,
  CometChatSpacing spacing,
  CometChatCallLogsStyle style, {
  Widget? incomingCallIcon,
  Widget? outgoingCallIcon,
  Widget? missedCallIcon,
}) {
  bool isInitiatedByUser = callLogLoggedInUser(callLog, loggedInUser);
  isAudioCall(callLog);

  // Define default icons if not provided
  Widget incoming = incomingCallIcon ??
      Icon(
        Icons.call_received_outlined,
        color: style.incomingCallIconColor ?? colorPalette.success,
        size: 16,
      );

  Widget outgoing = outgoingCallIcon ??
      Icon(
        Icons.call_made_outlined,
        color: style.outgoingCallIconColor ?? colorPalette.success,
        size: 16,
      );

  Widget missed = missedCallIcon ??
      Icon(
        Icons.call_missed_outgoing_rounded,
        color: style.missedCallIconColor ?? colorPalette.error,
        size: 16,
      );

  // Helper function to select icon based on initiator and call type
  Widget selectIcon(bool isInitiatedByUser) {
    return isInitiatedByUser ? outgoing : incoming;
  }

  // Switch on call status to determine the appropriate icon
  switch (callLog.status) {
    case CallStatusConstants.initiated:
    case CallStatusConstants.ongoing:
    case CallStatusConstants.ended:
      return selectIcon(isInitiatedByUser);

    case CallStatusConstants.unanswered:
    case CallStatusConstants.cancelled:
    case CallStatusConstants.rejected:
    case CallStatusConstants.busy:
      return isInitiatedByUser ? outgoing : missed;

    default:
      return const SizedBox(); // Return empty widget for unknown statuses
  }
}