cometchat-react-ui-kit2
Version:
CometChat UI Kit for React App
94 lines (92 loc) • 4.07 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Hooks = void 0;
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _react = _interopRequireDefault(require("react"));
var _chat = require("@cometchat-pro/chat");
var _ = require("..");
var _2 = require("../..");
var getUser = function getUser(uid) {
return new Promise(function (resolve, reject) {
_chat.CometChat.getUser(uid).then(function (user) {
return resolve(user);
})["catch"](function (error) {
return reject(error);
});
});
};
var getGroup = function getGroup(guid) {
return new Promise(function (resolve, reject) {
_chat.CometChat.getGroup(guid).then(function (group) {
return resolve(group);
})["catch"](function (error) {
return reject(error);
});
});
};
var Hooks = function Hooks(props, loggedInUser, setChatWith, setChatWithType, setMessageHeaderStatus, setUserPresence, messageHeaderManager, messageHeaderCallback, handlers, callbackData, errorHandler) {
//fetch logged in user
_react["default"].useEffect(function () {
_chat.CometChat.getLoggedinUser().then(function (user) {
var _messageHeaderManager;
loggedInUser.current = user;
(_messageHeaderManager = messageHeaderManager.current) === null || _messageHeaderManager === void 0 ? void 0 : _messageHeaderManager.attachListeners(messageHeaderCallback);
})["catch"](function (error) {
return errorHandler(error);
});
}, []);
var updateMessageHeaderStatusForUser = _react["default"].useCallback(function (user) {
if (user.status === _2.UserStatusConstants.offline) {
setMessageHeaderStatus((0, _2.localize)("OFFLINE"));
setUserPresence(_2.UserStatusConstants.offline);
} else if (user.status === _2.UserStatusConstants.online) {
setMessageHeaderStatus((0, _2.localize)("ONLINE"));
setUserPresence(_2.UserStatusConstants.online);
}
}, [setMessageHeaderStatus, setUserPresence]);
var updateMessageHeaderStatusForGroup = _react["default"].useCallback(function (group) {
var status = "".concat(group.membersCount, " ").concat((0, _2.localize)("MEMBERS"));
setMessageHeaderStatus(status);
//setUserPresence(CometChat.USER_STATUS.OFFLINE);
}, [setMessageHeaderStatus]);
//update receiver user
_react["default"].useEffect(function () {
if (props.user && props.user.uid) {
if (props.user.name) {
setChatWithType(_.CometChatMessageReceiverType.user);
setChatWith(props.user);
updateMessageHeaderStatusForUser(props.user);
} else {
getUser(props.user.uid).then(function (user) {
setChatWithType(_.CometChatMessageReceiverType.user);
setChatWith(user);
updateMessageHeaderStatusForUser(user);
})["catch"](function (error) {
return errorHandler(error);
});
}
} else if (props.group && props.group.guid) {
if (props.group.name) {
setChatWithType(_.CometChatMessageReceiverType.group);
setChatWith(props.group);
updateMessageHeaderStatusForGroup(props.group);
} else {
getGroup(props.group.guid).then(function (group) {
setChatWithType(_.CometChatMessageReceiverType.group);
setChatWith(group);
updateMessageHeaderStatusForGroup(group);
})["catch"](function (error) {
return errorHandler(error);
});
}
}
}, [props.user, props.group, setChatWith, setChatWithType, updateMessageHeaderStatusForUser, updateMessageHeaderStatusForGroup]);
_react["default"].useEffect(function () {
var handler = handlers[callbackData === null || callbackData === void 0 ? void 0 : callbackData.name];
if (handler) return handler.apply(void 0, (0, _toConsumableArray2["default"])(callbackData === null || callbackData === void 0 ? void 0 : callbackData.args));
}, [callbackData, handlers]);
};
exports.Hooks = Hooks;