UNPKG

@sendbird/uikit-react

Version:

Sendbird UIKit for React: A feature-rich and customizable chat UI kit with messaging, channel management, and user authentication.

556 lines (553 loc) 20.2 kB
import { p as pubSubTopics } from './chunks/bundle-D9lZlE3H.js'; import { n as noop } from './chunks/bundle-CaW4IP0_.js'; /** * 1. UIKit Instances * a. getSdk * b. getPubSub * 2. Chat & Connection * a. getConnect * b. getDisconnect * c. getUpdateUserInfo * 3. Channel * a. getCreateGroupChannel * b. getCreateOpenChannel * c. getGetGroupChannel * d. getGetOpenChannel * e. getLeaveGroupChannel * f. getEnterOpenChannel * g. getExitOpenChannel * h. getFreezeChannel * i. getUnfreezeChannel * 4. Message * a. getSendUserMessage * b. getSendFileMessage * c. getUpdateUserMessage * d. x - getUpdateFileMessage * e. getDeleteMessage * f. getResendUserMessage * g. getResendFileMessage */ /** * import useSendbirdStateContext from '@sendbird-uikit/useSendbirdStateContext' * import selectors from '@sendbird-uikit/send' * const state = useSendbirdStateContext(); */ // 1. UIKit Instances /** * const sdk = selectors.getSdk(state); */ var getSdk = function (state) { var _a = state.stores, stores = _a === void 0 ? {} : _a; var _b = stores.sdkStore, sdkStore = _b === void 0 ? {} : _b; var sdk = sdkStore.sdk; return sdk; }; /** * const pubSub = selectors.getPubSub(state); */ var getPubSub = function (state) { var _a = state.config, config = _a === void 0 ? {} : _a; var pubSub = config.pubSub; return pubSub; }; // 2. Chat & Connection /** * const connect = selectors.getConnect(state); * connect('user-id-sendbirdian', 'access-token-0000') * .then((user) => {}) * .catch((error) => {}) */ var getConnect = function (state) { return (function (userId, accessToken) { return (new Promise(function (resolve, reject) { var sdk = getSdk(state); if (!sdk) { reject(new Error('Sdk not found')); } if (!((sdk === null || sdk === void 0 ? void 0 : sdk.connect) && typeof sdk.connect === 'function')) { reject(new Error('Not found the function "connect')); } if (!accessToken) { sdk.connect(userId) .then(function (res) { return resolve(res); }) .catch(function (err) { return reject(err); }); } else { sdk.connect(userId, accessToken) .then(function (res) { return resolve(res); }) .catch(function (err) { return reject(err); }); } })); }); }; /** * const disconnect = selectors.getDisconnect(state); * disconnect() * .then(() => {}) * .catch((error) => {}) */ var getDisconnect = function (state) { return (function () { return (new Promise(function (resolve, reject) { var sdk = getSdk(state); if (!sdk) { reject(new Error('Sdk not found')); } if (!(sdk.disconnect && typeof sdk.disconnect === 'function')) { reject(new Error('Not found the function "disconnect')); } sdk.disconnect() .then(function (res) { return resolve(res); }) .catch(function (err) { return reject(err); }); })); }); }; /** * const updateUserInfo = selectors.getUpdateUserInfo(state); * updateUserInfo('new-nickname', 'new-profile-url') * .then((user) => {}) * .catch((error) => {}) */ var getUpdateUserInfo = function (state) { return (function (nickname, profileUrl) { return (new Promise(function (resolve, reject) { var sdk = getSdk(state); if (!sdk) { reject(new Error('Sdk not found')); } if (!(sdk.updateCurrentUserInfo && typeof sdk.updateCurrentUserInfo === 'function')) { reject(new Error('Not found the function "updateCurrentUserInfo"')); } var userParams = { nickname: nickname }; if (profileUrl) { userParams.profileUrl = profileUrl; } sdk.updateCurrentUserInfo(userParams) .then(function (res) { return resolve(res); }) .catch(function (err) { return reject(err); }); })); }); }; // 3. Channel /** * const createGroupChannel = selectors.getCreateGroupChannel(state); * createGroupChannel(channelParams: GroupChannelCreateParams) * .then((channel) => {}) * .catch((error) => {}) */ var getCreateGroupChannel = function (state) { return (function (params) { return (new Promise(function (resolve, reject) { var sdk = getSdk(state); var pubSub = getPubSub(state); if (!sdk) { reject(new Error('Sdk not found')); } if (!sdk.groupChannel) { reject(new Error('Not found GroupChannelModule')); } if (!(sdk.groupChannel.createChannel && typeof sdk.groupChannel.createChannel === 'function')) { reject(new Error('Not found the function "createChannel"')); } sdk.groupChannel.createChannel(params) .then(function (channel) { resolve(channel); pubSub.publish(pubSubTopics.CREATE_CHANNEL, { channel: channel }); }) .catch(reject); })); }); }; /** * const createOpenChannel = selectors.getCreateOpenChannel(state); * createOpenChannel(channelParams: OpenChannelCreateParams) * .then((channel) => {}) * .catch((error) => {}) */ var getCreateOpenChannel = function (state) { return (function (params) { return (new Promise(function (resolve, reject) { var sdk = getSdk(state); // const pubSub = getPubSub(state); if (!sdk) { reject(new Error('Sdk not found')); } if (!sdk.openChannel) { reject(new Error('Not found OpenChannelModule')); } if (!(sdk.openChannel.createChannel && typeof sdk.openChannel.createChannel === 'function')) { reject(new Error('Not found the function "createChannel"')); } sdk.openChannel.createChannel(params) .then(function (channel) { resolve(channel); // Consider pubSub process }) .catch(reject); })); }); }; /** * const getGroupChannel = selectors.getGetGroupChannel(state); * getGroupChannel('channel-url-1234', isSelected) * .then((channel) => { * // groupChannel = channel; * // or * // setCurrentChannel(channel); * }) * .catch((error) => {}) */ var getGetGroupChannel = function (state) { return (function (channelUrl) { return (new Promise(function (resolve, reject) { var sdk = getSdk(state); // const pubSub = getPubSub(state); if (!sdk) { reject(new Error('Sdk not found')); } if (!sdk.groupChannel) { reject(new Error('Not found GroupChannelModule')); } if (!(sdk.groupChannel.getChannel && typeof sdk.groupChannel.getChannel === 'function')) { reject(new Error('Not found the function "getChannel"')); } sdk.groupChannel.getChannel(channelUrl) .then(function (channel) { resolve(channel); // Add pubSub with isSelected }) .catch(reject); })); }); }; /** * const getOpenChannel = selectors.getGetOpenChannel(state); * getOpenChannel('channel-url-12345') * .then((channel) => { * // openChannel = channel; * // or * // setCurrentChannel(channel); * }) * .catch((error) => {}) */ var getGetOpenChannel = function (state) { return (function (channelUrl) { return (new Promise(function (resolve, reject) { var sdk = getSdk(state); // const pubSub = getPubSub(state); if (!sdk) { reject(new Error('Sdk not found')); } if (!sdk.openChannel) { reject(new Error('Not found OpenChannelModule')); } if (!(sdk.openChannel.getChannel && typeof sdk.openChannel.getChannel === 'function')) { reject(new Error('Not found the function "getChannel"')); } sdk.openChannel.getChannel(channelUrl) .then(function (channel) { resolve(channel); // Add pubSub with isSelected }) .catch(reject); })); }); }; /** * const leaveChannel = selectors.getLeaveGroupChannel(state); * leaveChannel('group-channel-url') * .then((channel) => {}) * .catch((error) => {}) */ var getLeaveGroupChannel = function (state) { return (function (channelUrl) { return (new Promise(function (resolve, reject) { var _a; (_a = getGetGroupChannel(state)) === null || _a === void 0 ? void 0 : _a(channelUrl).then(function (channel) { channel.leave() .then(function () { resolve(); // Add pubSub process }) .catch(reject); }).catch(reject); })); }); }; /** * const enterChannel = selectors.getEnterOpenChannel(state); * enterChannel('open-channel-url') * .then((channel) => {}) * .catch((error) => {}) */ var getEnterOpenChannel = function (state) { return (function (channelUrl) { return (new Promise(function (resolve, reject) { var _a; (_a = getGetOpenChannel(state)) === null || _a === void 0 ? void 0 : _a(channelUrl).then(function (channel) { channel.enter() .then(function () { resolve(channel); // Add pubSub process }) .catch(reject); }).catch(reject); })); }); }; /** * const exitChannel = selectors.getExitOpenChannel(state); * exitChannel('open-channel-url') * .then((channel) => {}) * .catch((error) => {}) */ var getExitOpenChannel = function (state) { return (function (channelUrl) { return (new Promise(function (resolve, reject) { var _a; (_a = getGetOpenChannel(state)) === null || _a === void 0 ? void 0 : _a(channelUrl).then(function (channel) { channel.exit() .then(function () { resolve(channel); // Add pubSub process }) .catch(reject); }).catch(reject); })); }); }; /** * const freezeChannel = selectors.getFreezeChannel(currentChannel); * freezeChannel() * .then(() => {}) * .catch((error) => {}) */ var getFreezeChannel = function () { return (function (channel) { return (new Promise(function (resolve, reject) { if (!(channel.freeze && typeof (channel === null || channel === void 0 ? void 0 : channel.freeze) === 'function')) { reject(new Error('Not found the function "freeze"')); } channel.freeze() .then(function () { resolve(); // Add pubSub process /** * consider divide the logic to * _freezeGroupChannel and _freezeOpenChannel */ }) .catch(reject); })); }); }; /** * const unfreezeChannel = selectors.getUnfreezeChannel(currentChannel); * unfreezeChannel() * .then((channel) => {}) * .catch((error) => {}) */ var getUnfreezeChannel = function () { return (function (channel) { return (new Promise(function (resolve, reject) { if (!(channel.unfreeze && typeof (channel === null || channel === void 0 ? void 0 : channel.unfreeze) === 'function')) { reject(new Error('Not found the function "unfreeze"')); } channel.unfreeze() .then(function () { resolve(); // Add pubSub process /** * consider divide the logic to * _unfreezeGroupChannel and _unfreezeOpenChannel */ }) .catch(reject); })); }); }; // 4. Message var UikitMessageHandler = /** @class */ (function () { function UikitMessageHandler() { this._onPending = noop; this._onFailed = noop; this._onSucceeded = noop; } UikitMessageHandler.prototype.triggerPending = function (message) { this._onPending(message); }; UikitMessageHandler.prototype.triggerFailed = function (error, message) { this._onFailed(error, (message === null || message === void 0 ? void 0 : message.isResendable) ? message : null); }; UikitMessageHandler.prototype.triggerSucceeded = function (message) { this._onSucceeded(message); }; UikitMessageHandler.prototype.onPending = function (handler) { if (typeof handler === 'function') { this._onPending = handler; } return this; }; UikitMessageHandler.prototype.onFailed = function (handler) { if (typeof handler === 'function') { this._onFailed = handler; } return this; }; UikitMessageHandler.prototype.onSucceeded = function (handler) { if (typeof handler === 'function') { this._onSucceeded = handler; } return this; }; return UikitMessageHandler; }()); /** * const sendUserMessage = selectors.getSendUserMessage(state); * sendUserMessage( * channel: GroupChannel | OpenChannel, * params: UserMessageCreateParams, * ) * .onPending((message) => {}) * .onFailed((error, message) => {}) * .onSucceeded((message) => {}) */ var getSendUserMessage = function (state, publishingModules) { if (publishingModules === void 0) { publishingModules = []; } return (function (channel, params) { var handler = new UikitMessageHandler(); var pubSub = getPubSub(state); channel.sendUserMessage(params) .onFailed(function (error, message) { pubSub.publish(pubSubTopics.SEND_MESSAGE_FAILED, { error: error, message: message, channel: channel, publishingModules: publishingModules }); handler.triggerFailed(error, message); }) .onPending(function (message) { pubSub.publish(pubSubTopics.SEND_MESSAGE_START, { message: message, channel: channel, publishingModules: publishingModules }); handler.triggerPending(message); }) .onSucceeded(function (message) { pubSub.publish(pubSubTopics.SEND_USER_MESSAGE, { message: message, channel: channel, publishingModules: publishingModules }); handler.triggerSucceeded(message); }); return handler; }); }; /** * const sendFileMessage = selectors.getSendFileMessage(state); * sendFileMessage( * channel: GroupChannel | OpenChannel, * params: FileMessageCreateParams, * ) * .onPending((message) => {}) * .onFailed((error, message) => {}) * .onSucceeded((message) => {}) */ var getSendFileMessage = function (state, publishingModules) { if (publishingModules === void 0) { publishingModules = []; } return (function (channel, params) { var handler = new UikitMessageHandler(); var pubSub = getPubSub(state); channel.sendFileMessage(params) .onFailed(function (error, message) { pubSub.publish(pubSubTopics.SEND_MESSAGE_FAILED, { error: error, message: message, channel: channel, publishingModules: publishingModules }); handler.triggerFailed(error, message); }) .onPending(function (message) { pubSub.publish(pubSubTopics.SEND_MESSAGE_START, { message: message, channel: channel, publishingModules: publishingModules }); handler.triggerPending(message); }) .onSucceeded(function (message) { pubSub.publish(pubSubTopics.SEND_FILE_MESSAGE, { message: message, channel: channel, publishingModules: publishingModules }); handler.triggerSucceeded(message); }); return handler; }); }; /** * const updateUserMessage = selectors.getUpdateUserMessage(state); * updateUserMessage( * channel: GroupChannel | OpenChannel, * messageId: number, * messageParams: UserMessageUpdateParams, * ) * .then((message) => {}) * .catch((error) => {}) */ var getUpdateUserMessage = function (state, publishingModules) { if (publishingModules === void 0) { publishingModules = []; } return (function (channel, messageId, params) { return (new Promise(function (resolve, reject) { var pubSub = getPubSub(state); channel.updateUserMessage(messageId, params) .then(function (message) { pubSub.publish(pubSubTopics.UPDATE_USER_MESSAGE, { message: message, channel: channel, fromSelector: true, publishingModules: publishingModules }); resolve(message); }) .catch(reject); })); }); }; // TODO: We will provie this function in the future /** * const updateFileMessage = selectors.getUpdateFileMessage(state); * updateFileMessage( * channel: GroupChannel | OpenChannel, * messageId: number, * params: FileMessageUpdateParams, * ) * .then((message) => {}) * .catch((error) => {}) */ // const getUpdateFileMessage = (state: SendbirdState) => ( // (channel: GroupChannel | OpenChannel, messageId: number, params: FileMessageUpdateParams) => ( // new Promise((resolve, reject) => { // const pubSub = getPubSub(state); // channel.updateFileMessage(messageId, params) // .then((message) => { // pubSub.publish( // topics.UPDATE_USER_MESSAGE, // { message, channel, fromSelector: true }, // ); // resolve(message); // }) // .catch(reject); // }) // ) // ); /** * const deleteMessage = selectors.getDeleteMessage(state); * deleteMessage( * channel: GroupChannel | OpenChannel, * message: SendableMessage, * ) * .then((deletedMessage) => {}) * .catch((error) => {}) */ var getDeleteMessage = function (state) { return (function (channel, message) { return (new Promise(function (resolve, reject) { var pubSub = getPubSub(state); var messageId = message.messageId; channel.deleteMessage(message) .then(function () { pubSub.publish(pubSubTopics.DELETE_MESSAGE, { messageId: messageId, channel: channel }); resolve(message); }) .catch(reject); })); }); }; /** * const resendUserMessage = selectors.getResendUserMessage(state); * resendUserMessage( * channel: GroupChannel | OpenChannel, * failedMessage: UserMessage, * ) * .then(() => {}) * .catch((error) => {}) */ var getResendUserMessage = function (state, publishingModules) { if (publishingModules === void 0) { publishingModules = []; } return (function (channel, failedMessage) { return (new Promise(function (resolve, reject) { var pubSub = getPubSub(state); channel.resendUserMessage(failedMessage) .then(function (message) { pubSub.publish(pubSubTopics.SEND_USER_MESSAGE, { message: message, channel: channel, publishingModules: publishingModules }); resolve(message); }) .catch(reject); })); }); }; /** * const resendFileMessage = selectors.getResendFileMessage(state); * resendFileMessage( * channel: GroupChannel | OpenChannel, * failedMessage: FileMessage, * blob: Blob, * ) * .then(() => {}) * .catch((error) => {}) */ var getResendFileMessage = function (state, publishingModules) { if (publishingModules === void 0) { publishingModules = []; } return (function (channel, failedMessage, blob) { return (new Promise(function (resolve, reject) { var pubSub = getPubSub(state); channel.resendFileMessage(failedMessage, blob) .then(function (message) { pubSub.publish(pubSubTopics.SEND_FILE_MESSAGE, { message: message, channel: channel, publishingModules: publishingModules }); resolve(message); }) .catch(reject); })); }); }; var sendbirdSelectors = { getSdk: getSdk, getPubSub: getPubSub, getConnect: getConnect, getDisconnect: getDisconnect, getUpdateUserInfo: getUpdateUserInfo, getCreateGroupChannel: getCreateGroupChannel, getCreateOpenChannel: getCreateOpenChannel, getGetGroupChannel: getGetGroupChannel, getGetOpenChannel: getGetOpenChannel, getLeaveGroupChannel: getLeaveGroupChannel, getEnterOpenChannel: getEnterOpenChannel, getExitOpenChannel: getExitOpenChannel, getFreezeChannel: getFreezeChannel, getUnfreezeChannel: getUnfreezeChannel, getSendUserMessage: getSendUserMessage, getSendFileMessage: getSendFileMessage, getUpdateUserMessage: getUpdateUserMessage, getDeleteMessage: getDeleteMessage, getResendUserMessage: getResendUserMessage, getResendFileMessage: getResendFileMessage, }; export { UikitMessageHandler, sendbirdSelectors as default, getConnect, getCreateGroupChannel, getCreateOpenChannel, getDeleteMessage, getDisconnect, getEnterOpenChannel, getExitOpenChannel, getFreezeChannel, getGetGroupChannel, getGetOpenChannel, getLeaveGroupChannel, getPubSub, getResendFileMessage, getResendUserMessage, getSdk, getSendFileMessage, getSendUserMessage, getUnfreezeChannel, getUpdateUserInfo, getUpdateUserMessage }; //# sourceMappingURL=sendbirdSelectors.js.map