import { localize } from "../resources/CometChatLocalize";
import { CometChatOptions } from "../modals/CometChatOptions";
//@ts-ignore
import { CometChat } from "@cometchat/chat-sdk-react-native";
import { MessageTypeConstants } from "../constants/UIKitConstants";
import { MessageUtils } from "./MessageUtils";

export class CometChatConversationUtils {

    static getDefaultOptions(): CometChatOptions[] {
        let options: CometChatOptions[] = [];
        options.push({
            id: "1",
            title: localize("DELETE"),
            backgroundColor: "rgb(255, 59, 48)",
        });
        return options;
    }

    static getLastMessage(conversation: CometChat.Conversation): CometChat.BaseMessage | undefined {
        let msg = conversation?.getLastMessage && conversation?.getLastMessage();
        if (!msg) {
            return undefined;
        }
        switch (msg['category']) {
            case "message":
                break;
            case "custom":
                break;
            case "action":
                break;
            case "call":
                break;
            default:
                break;
        }
        return msg;
    }



    static getMessagePreview = (lastMessage: CometChat.BaseMessage): string => {

        if (lastMessage != undefined) {

            if (lastMessage.getDeletedAt() !== undefined) {
                return localize("THIS_MESSAGE_DELETED");
            }

            let groupText = "", msgText = "";
            if (lastMessage.getCategory() == 'message') {
                switch (lastMessage.getType()) {
                    case "text":
                        msgText = (lastMessage as CometChat.TextMessage).getText();
                        break;
                    case 'image':
                        msgText = localize('MESSAGE_IMAGE');
                        break;
                    case 'audio':
                        msgText = localize('MESSAGE_AUDIO');
                        break;
                    case 'video':
                        msgText = localize('VIDEOS');
                        break;
                    case 'file':
                        msgText = localize('MESSAGE_FILE');
                        break;
                }
            } else if (lastMessage.getCategory() == CometChat.CATEGORY_CUSTOM as CometChat.MessageCategory) {
                msgText = lastMessage.getType();
            } else if (lastMessage.getCategory() == CometChat.CATEGORY_ACTION as CometChat.MessageCategory) {
                if ((lastMessage as CometChat.Action)?.getAction() === CometChat.ACTION_TYPE.MESSSAGE_DELETED) {
                    return localize("THIS_MESSAGE_DELETED");
                }
                msgText = MessageUtils.getActionMessage(lastMessage);
            } else if (lastMessage.getCategory() === CometChat.CATEGORY_INTERACTIVE) {
                msgText = lastMessage.getType() === "form" 
                    ? `${localize('FORM')} 📋` 
                    : lastMessage.getType() === MessageTypeConstants.scheduler 
                    ? ((lastMessage as any)?.interactiveData?.title ? 
                        `🗓️ ${(lastMessage as any)?.interactiveData?.title}` 
                        : `🗓️ ${localize('MEET_WITH')} ${lastMessage?.getSender()?.getName()}`)
                    : `${localize('CARD')} 🪧`;
            }
            else {
                msgText = (lastMessage as any)['metaData']?.pushNotification;
            }
            return (msgText)
        } else {
            return "";
        }
    }




}