@cometchat/chat-uikit-react-native
Version:
Ready-to-use Chat UI Components for React Native
67 lines • 3.32 kB
JavaScript
import { CometChat } from "@cometchat/chat-sdk-react-native";
import React from "react";
import { MessageEvents } from "../../../shared/events";
import { CometChatUIEventHandler } from "../../../shared/events/CometChatUIEventHandler/CometChatUIEventHandler";
import { localize } from "../../../shared/resources/CometChatLocalize";
import { ExtensionConstants, ExtensionURLs } from "../../ExtensionConstants";
export const Hooks = (props, // Adjust type based on actual usage
stickerList, stickerSet, activeStickerSetName, setStickerList, setStickerSet, setActiveStickerList, setActiveStickerSetName, setLoading, setError) => {
React.useEffect(() => {
setLoading(true); // Start loading
CometChat.callExtension(ExtensionConstants.stickers, "GET", ExtensionURLs.stickers, {})
.then((stickers) => {
// Stickers received
const customStickers = stickers.hasOwnProperty(ExtensionConstants.customStickers)
? stickers[ExtensionConstants.customStickers]
: [];
const defaultStickers = stickers.hasOwnProperty(ExtensionConstants.defaultStickers)
? stickers[ExtensionConstants.defaultStickers]
: [];
defaultStickers.sort((a, b) => a.stickerSetOrder - b.stickerSetOrder);
customStickers.sort((a, b) => a.stickerSetOrder - b.stickerSetOrder);
const combinedStickers = [...defaultStickers, ...customStickers];
setStickerList(combinedStickers);
if (combinedStickers.length === 0) {
// Handle empty sticker list if necessary
}
setLoading(false); // End loading
})
.catch((error) => {
console.log(error);
setError(props?.errorText || localize("SOMETHING_WENT_WRONG"));
setLoading(false); // End loading even if there's an error
CometChatUIEventHandler.emitMessageEvent(MessageEvents.ccMessageError, error);
});
}, []);
React.useEffect(() => {
if (stickerList.length > 0) {
const groupedStickers = stickerList.reduce((acc, sticker) => {
const { stickerSetName } = sticker;
if (!acc[stickerSetName]) {
acc[stickerSetName] = [];
}
acc[stickerSetName].push(sticker);
return acc;
}, {});
setStickerSet(groupedStickers);
// Set the first sticker set as active if not already set
if (!activeStickerSetName) {
const firstSetName = Object.keys(groupedStickers)[0];
setActiveStickerSetName(firstSetName);
setActiveStickerList(groupedStickers[firstSetName]);
}
}
else {
setStickerSet({});
setActiveStickerList([]);
setActiveStickerSetName(undefined);
}
}, [stickerList]);
React.useEffect(() => {
if (stickerSet && Object.keys(stickerSet).length && activeStickerSetName) {
const sortedStickerSet = stickerSet[activeStickerSetName].sort((a, b) => a.stickerOrder - b.stickerOrder);
setActiveStickerList(sortedStickerSet);
}
}, [stickerSet, activeStickerSetName]);
};
//# sourceMappingURL=hooks.js.map