@sendbird/chat
Version:
Sendbird SDK for JavaScript
2 lines (1 loc) • 25.3 kB
JavaScript
Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./lib/__bundle-846135d7.cjs"),n=require("./lib/__bundle-a756336f.cjs"),t=require("./lib/__bundle-a59763e3.cjs"),a=require("./lib/__bundle-39bf2463.cjs"),s=require("./lib/__bundle-58c4c7b0.cjs");require("./lib/__bundle-dae7bdf2.cjs");class i extends e.InstancedObject{constructor(){super(...arguments),this._channels=new Map,this._enteredChannelUrls=[]}get enteredChannels(){return this._enteredChannelUrls.map((e=>this._channels.get(e))).filter((e=>!!e))}isEnteredChannel(e){return this._enteredChannelUrls.includes(e)}enter(e){this._enteredChannelUrls.indexOf(e)<0&&this._enteredChannelUrls.push(e)}exit(e){const n=this._enteredChannelUrls.indexOf(e);n>=0&&this._enteredChannelUrls.splice(n,1)}exitAll(){this._enteredChannelUrls=[]}get(n){return e.__awaiter(this,void 0,void 0,(function*(){return this._channels.get(n)}))}upsert(n){return e.__awaiter(this,void 0,void 0,(function*(){const e=[];return n.forEach((n=>{if(this._channels.has(n.url)){const t=this._channels.get(n.url);Object.assign(t,n),e.push(t)}else this._channels.set(n.url,n),e.push(n)})),e}))}remove(n){return e.__awaiter(this,void 0,void 0,(function*(){this._channels.delete(n),this.exit(n)}))}clear(){return e.__awaiter(this,void 0,void 0,(function*(){this._channels.clear(),this._enteredChannelUrls=[]}))}}const r={channelUrl:void 0,name:void 0,coverUrlOrImage:void 0,data:void 0,customType:void 0,operatorUserIds:void 0,isEphemeral:void 0};class o extends e.APIRequestCommand{constructor({channelUrl:n,isInternalCall:t}){super(),this.method=e.APIRequestMethod.GET,this.path=`${t?e.API_PATH_OPEN_CHANNELS_INTERNAL:e.API_PATH_OPEN_CHANNELS}/${encodeURIComponent(n)}`,this.params={show_pinned_messages:!0}}}class l extends e.APIResponseCommand{constructor(e,n){super(e,n),this.channel=new P(e,n)}}class d extends e.APIRequestCommand{constructor(n){const{channelUrl:t,coverUrlOrImage:a,name:s,data:i,customType:r,operatorUserIds:o,isEphemeral:l}=n;super(),this.method=e.APIRequestMethod.POST,this.path=e.API_PATH_OPEN_CHANNELS,this.params=e.deundefined(e.undefineNullProps({channel_url:t,cover_url:e.isTypeOf("string",a)?a:null,cover_file:e.isFile(a)?a:null,name:s,data:i,custom_type:r,operators:o,is_ephemeral:l}))}}class h extends e.WebSocketRequestCommand{constructor({channelUrl:e}){super({code:"ENTR",payload:{channel_url:e},ackRequired:!0})}}class c extends t.ChannelEventCommand{constructor(n,t,a){var s,i;super(n,"SYEV",a),a.data&&(this.participantCount=null!==(s=a.data.participant_count)&&void 0!==s?s:0,this.user=new e.User(n,a.data),this.ts=null!==(i=a.data.edge_ts)&&void 0!==i?i:0)}}class u extends e.WebSocketRequestCommand{constructor({channelUrl:e}){super({code:"EXIT",payload:{channel_url:e},ackRequired:!0})}}class p extends t.ChannelEventCommand{constructor(n,t,a){var s,i;super(n,"EXIT",a),a.data&&(this.participantCount=null!==(s=a.data.participant_count)&&void 0!==s?s:0,this.user=new e.User(n,a.data),this.ts=null!==(i=a.data.edge_ts)&&void 0!==i?i:0)}}const C={};class _ extends t.BaseChannelManager{constructor(n,t){super(n,Object.assign(Object.assign({},t),{channelType:e.ChannelType.OPEN})),this.subscribeChannelEvent=e.noop,this.unsubscribeChannelEvent=e.noop,this.refreshChannel=()=>e.__awaiter(this,void 0,void 0,(function*(){return e.noop()})),this._openChannelCache=new i(n),this._openChannelHandlers=new Map,this._dispatcher.on((n=>{if(n instanceof e.WebSocketEventCommand)this._handleEvent(n).catch((n=>{if(e.isThrowingOutside(n)&&"foreground"===this._sdkState.appState)throw n}));else if(n instanceof e.ConnectionStateChangeCommand&&n.stateType===e.ConnectionStateType.CONNECTED){const{enteredChannels:e}=this._openChannelCache;for(const n of e)n.enter()}})),C[n]||(C[n]=this)}static of(e){return C[e]}buildOpenChannelFromSerializedData(n){const t=e.deserialize(n);return new P(this._iid,P.payloadify(t))}getChannelFromCache(n){var t;return e.__awaiter(this,void 0,void 0,(function*(){return null!==(t=yield this._openChannelCache.get(n))&&void 0!==t?t:null}))}upsertChannelsToCache(n){return e.__awaiter(this,void 0,void 0,(function*(){return yield this._openChannelCache.upsert(n)}))}removeChannelsFromCache(n){return e.__awaiter(this,void 0,void 0,(function*(){for(const e of n)yield this._openChannelCache.remove(e)}))}setEnteredToCache(e){this._openChannelCache.enter(e.url)}setExitedToCache(e){this._openChannelCache.exit(e.url)}get handlers(){return[...this._openChannelHandlers.values()]}_handleEvent(a){return e.__awaiter(this,void 0,void 0,(function*(){try{switch(a.code){case"MESG":case"FILE":case"ADMM":case"BRDM":{let s=null;if("MESG"===a.code?s=a.as(n.UserMessageEventCommand):"FILE"===a.code?s=a.as(n.FileMessageEventCommand):"ADMM"!==a.code&&"BRDM"!=a.code||(s=a.as(t.AdminMessageEventCommand)),s){const{message:n,isMentioned:t}=s;if(n.channelType===e.ChannelType.OPEN){const a=yield this.getChannel(n.channelUrl,!0);e.runAsCallback((()=>e.__awaiter(this,void 0,void 0,(function*(){for(const e of this._openChannelHandlers.values())this._openChannelCache.isEnteredChannel(a.url)&&(e.onMessageReceived&&e.onMessageReceived(a,n),t&&e.onMentionReceived&&e.onMentionReceived(a,n))}))))}}break}case"MEDI":case"FEDI":case"AEDI":{let s=null;if("MEDI"===a.code?s=a.as(n.UpdateUserMessageEventCommand):"FEDI"===a.code?s=a.as(n.UpdateFileMessageEventCommand):"AEDI"===a.code&&(s=a.as(t.UpdateAdminMessageEventCommand)),s){const{message:n,mentionCountChange:t}=s;if(n.channelType===e.ChannelType.OPEN){const a=yield this.getChannel(n.channelUrl,!0);let s=!1;if(a.lastPinnedMessage&&a.lastPinnedMessage.messageId===n.messageId&&a.lastPinnedMessage.updatedAt<n.updatedAt){a.lastPinnedMessage=n,s=!0;const{requestDeduplicator:t}=e.Vault.of(this._iid);t.updatePendingResponse(a,Date.now())}e.runAsCallback((()=>e.__awaiter(this,void 0,void 0,(function*(){var e,i;for(const r of this._openChannelHandlers.values())this._openChannelCache.isEnteredChannel(a.url)&&(s&&(null===(e=r.onPinnedMessageUpdated)||void 0===e||e.call(r,a),null===(i=r.onChannelChanged)||void 0===i||i.call(r,a)),r.onMessageUpdated&&r.onMessageUpdated(a,n),t>0&&r.onMentionReceived&&r.onMentionReceived(a,n))}))))}}break}case"DELM":{const{channelUrl:n,channelType:t,messageId:s}=a.as(e.DeleteMessageEventCommand);if(t===e.ChannelType.OPEN){const t=yield this.getChannel(n,!0);e.runAsCallback((()=>e.__awaiter(this,void 0,void 0,(function*(){for(const e of this._openChannelHandlers.values())this._openChannelCache.isEnteredChannel(t.url)&&e.onMessageDeleted&&e.onMessageDeleted(t,s)}))))}break}case"MRCT":{const{channelUrl:n,channelType:s,event:i}=a.as(t.ReactionEventCommand);if(s===e.ChannelType.OPEN){const t=yield this.getChannel(n,!0);e.runAsCallback((()=>e.__awaiter(this,void 0,void 0,(function*(){for(const e of this._openChannelHandlers.values())this._openChannelCache.isEnteredChannel(t.url)&&e.onReactionUpdated&&e.onReactionUpdated(t,i)}))))}break}case"MTHD":{const{event:n}=a.as(t.ThreadInfoUpdateEventCommand);if(n.channelType===e.ChannelType.OPEN){const t=yield this.getChannel(n.channelUrl,!0);e.runAsCallback((()=>e.__awaiter(this,void 0,void 0,(function*(){for(const e of this._openChannelHandlers.values())this._openChannelCache.isEnteredChannel(t.url)&&e.onThreadInfoUpdated&&e.onThreadInfoUpdated(t,n)}))))}break}case"MCNT":{const{openChannelMemberCounts:n}=a.as(t.MemberCountUpdateEventCommand),s=[];for(const e of n){const{channelUrl:n,participantCount:t,updatedAt:a}=e,i=yield this.getChannelFromCache(n);i&&i._updateParticipantCount(t,a)&&s.push(i)}if(s.length>0){const n=yield this.upsertChannelsToCache(s);e.runAsCallback((()=>e.__awaiter(this,void 0,void 0,(function*(){for(const e of this._openChannelHandlers.values())e.onChannelMemberCountChanged&&e.onChannelMemberCountChanged(n)}))))}break}case"PEDI":{const{event:n,status:s,channelUrl:i,channelType:r}=a.as(t.PollUpdateEventCommand);if(i&&r===e.ChannelType.OPEN){const t=yield this.getChannel(i,!0);this._dispatcher.dispatch(new e.PollUpdateInternalEventCommand({event:n,source:e.CollectionEventSource.EVENT_POLL_UPDATED})),s===e.POLL_REMOVED_STATUS?e.runAsCallback((()=>e.__awaiter(this,void 0,void 0,(function*(){for(const e of this._openChannelHandlers.values())e.onPollDeleted&&e.onPollDeleted(t,n.pollId)})))):e.runAsCallback((()=>e.__awaiter(this,void 0,void 0,(function*(){for(const e of this._openChannelHandlers.values())e.onPollUpdated&&e.onPollUpdated(t,n)}))))}break}case"VOTE":{const{event:t,channelUrl:s,channelType:i}=a.as(n.PollVoteEventCommand);if(s&&i===e.ChannelType.OPEN){const n=yield this.getChannel(s,!0);this._dispatcher.dispatch(new e.PollVoteInternalEventCommand({event:t,source:e.CollectionEventSource.EVENT_POLL_VOTED})),e.runAsCallback((()=>e.__awaiter(this,void 0,void 0,(function*(){for(const e of this._openChannelHandlers.values())e.onPollVoted&&e.onPollVoted(n,t)}))))}break}case"SYEV":{const{event:s}=a.as(t.ChannelEventCommand);if(s.isOpenChannelEvent)switch(s.category){case t.ChannelEventCategory.CHANNEL_ENTER:{const n=yield this.getChannel(s.channelUrl,!0),{participantCount:t,user:i}=a.as(c),r=n._updateParticipantCount(t,s.ts),{requestDeduplicator:o}=e.Vault.of(this._iid);o.updatePendingResponse(n,Date.now()),e.runAsCallback((()=>e.__awaiter(this,void 0,void 0,(function*(){this._openChannelHandlers.forEach((e=>{e.onUserEntered&&e.onUserEntered(n,i),r&&e.onChannelParticipantCountChanged&&e.onChannelParticipantCountChanged(n)}))}))));break}case t.ChannelEventCategory.CHANNEL_EXIT:{const n=yield this.getChannel(s.channelUrl,!0),{participantCount:t,user:i}=a.as(p),r=n._updateParticipantCount(t,s.ts),{requestDeduplicator:o}=e.Vault.of(this._iid);o.updatePendingResponse(n,Date.now()),e.runAsCallback((()=>e.__awaiter(this,void 0,void 0,(function*(){this._openChannelHandlers.forEach((e=>{e.onUserExited&&e.onUserExited(n,i),r&&e.onChannelParticipantCountChanged&&e.onChannelParticipantCountChanged(n)}))}))));break}case t.ChannelEventCategory.CHANNEL_OPERATOR_UPDATE:{const n=yield this.getChannel(s.channelUrl,!0),{operators:i}=a.as(t.OperatorUpdateEventCommand);n.operators=i;const{requestDeduplicator:r}=e.Vault.of(this._iid);r.updatePendingResponse(n,Date.now()),yield this.upsertChannelsToCache([n]),e.runAsCallback((()=>e.__awaiter(this,void 0,void 0,(function*(){this._openChannelHandlers.forEach((e=>{e.onOperatorUpdated&&e.onOperatorUpdated(n,i)}))}))));break}case t.ChannelEventCategory.USER_CHANNEL_MUTE:case t.ChannelEventCategory.USER_CHANNEL_UNMUTE:{const i=yield this.getChannel(s.channelUrl,!0),r=s.category===t.ChannelEventCategory.USER_CHANNEL_MUTE,{user:o}=a.as(r?n.MuteUserEventCommand:n.UnmuteUserEventCommand);e.runAsCallback((()=>e.__awaiter(this,void 0,void 0,(function*(){this._openChannelHandlers.forEach((e=>{r?e.onUserMuted&&e.onUserMuted(i,o):e.onUserUnmuted&&e.onUserUnmuted(i,o)}))}))));break}case t.ChannelEventCategory.USER_CHANNEL_BAN:case t.ChannelEventCategory.USER_CHANNEL_UNBAN:{const i=yield this.getChannel(s.channelUrl,!0),r=s.category===t.ChannelEventCategory.USER_CHANNEL_BAN,{user:o}=a.as(r?n.BanUserEventCommand:n.UnbanUserEventCommand);e.runAsCallback((()=>e.__awaiter(this,void 0,void 0,(function*(){this._openChannelHandlers.forEach((e=>{r?e.onUserBanned&&e.onUserBanned(i,o):e.onUserUnbanned&&e.onUserUnbanned(i,o)}))}))));break}case t.ChannelEventCategory.CHANNEL_FREEZE:case t.ChannelEventCategory.CHANNEL_UNFREEZE:{const t=yield this.getChannel(s.channelUrl,!0),{freeze:i}=a.as(n.FreezeEventCommand);t.isFrozen=i;const{requestDeduplicator:r}=e.Vault.of(this._iid);r.updatePendingResponse(t,Date.now()),yield this.upsertChannelsToCache([t]),e.runAsCallback((()=>e.__awaiter(this,void 0,void 0,(function*(){this._openChannelHandlers.forEach((e=>{i?e.onChannelFrozen&&e.onChannelFrozen(t):e.onChannelUnfrozen&&e.onChannelUnfrozen(t)}))}))));break}case t.ChannelEventCategory.CHANNEL_DELETED:yield this.removeChannelsFromCache([s.channelUrl]),e.runAsCallback((()=>e.__awaiter(this,void 0,void 0,(function*(){this._openChannelHandlers.forEach((n=>{n.onChannelDeleted&&n.onChannelDeleted(s.channelUrl,e.ChannelType.OPEN)}))}))));break;case t.ChannelEventCategory.CHANNEL_PROP_CHANGED:{const n=yield this.getChannelWithoutCache(s.channelUrl,!0,!1);e.runAsCallback((()=>e.__awaiter(this,void 0,void 0,(function*(){this._openChannelHandlers.forEach((e=>{e.onChannelChanged&&e.onChannelChanged(n)}))}))));break}case t.ChannelEventCategory.CHANNEL_META_DATA_CHANGED:{const t=yield this.getChannel(s.channelUrl,!0),{created:i,updated:r,deleted:o}=a.as(n.UpdateMetaDataEventCommand);if(i&&t._upsertCachedMetaData(i,s.ts),r&&t._upsertCachedMetaData(r,s.ts),o&&t._removeFromCachedMetaData(o,s.ts),i||r||o){const{requestDeduplicator:n}=e.Vault.of(this._iid);n.updatePendingResponse(t,Date.now())}e.runAsCallback((()=>e.__awaiter(this,void 0,void 0,(function*(){this._openChannelHandlers.forEach((e=>{i&&e.onMetaDataCreated&&e.onMetaDataCreated(t,i),r&&e.onMetaDataUpdated&&e.onMetaDataUpdated(t,r),o&&e.onMetaDataDeleted&&e.onMetaDataDeleted(t,o)}))}))));break}case t.ChannelEventCategory.CHANNEL_META_COUNTERS_CHANGED:{const t=yield this.getChannel(s.channelUrl,!0),{created:i,updated:r,deleted:o}=a.as(n.UpdateMetaCounterEventCommand);e.runAsCallback((()=>e.__awaiter(this,void 0,void 0,(function*(){this._openChannelHandlers.forEach((e=>{i&&e.onMetaCounterCreated&&e.onMetaCounterCreated(t,i),r&&e.onMetaCounterUpdated&&e.onMetaCounterUpdated(t,r),o&&e.onMetaCounterDeleted&&e.onMetaCounterDeleted(t,o)}))}))));break}case t.ChannelEventCategory.PINNED_MESSAGE_CHANGED:{const n=yield this.getChannel(s.channelUrl,!0),{pinnedMessageIds:i,latestPinnedMessage:r,ts:o}=a.as(t.UpdatePinnedMessageEventCommand);if(o>n._pinnedMessagesUpdatedAt){n.pinnedMessageIds=i,n.lastPinnedMessage=r,n._pinnedMessagesUpdatedAt=o;const{requestDeduplicator:t}=e.Vault.of(this._iid);t.updatePendingResponse(n,Date.now()),yield this.upsertChannelsToCache([n]),e.runAsCallback((()=>e.__awaiter(this,void 0,void 0,(function*(){for(const e of this._openChannelHandlers.values())e.onChannelChanged&&e.onChannelChanged(n)})))),e.runAsCallback((()=>e.__awaiter(this,void 0,void 0,(function*(){this._openChannelHandlers.forEach((e=>{e.onPinnedMessageUpdated&&e.onPinnedMessageUpdated(n)}))}))))}break}}break}}}catch(n){if(e.isThrowingOutside(n))throw n}}))}addHandler(e,n){this._openChannelHandlers.set(e,n)}removeHandler(e){this._openChannelHandlers.delete(e)}clearHandler(){this._openChannelHandlers.clear()}getChannel(n,t=!1){return e.__awaiter(this,void 0,void 0,(function*(){e.unless(e.isTypeOf("string",n)).throw(e.SendbirdError.invalidParameters);try{const e=yield this.getChannelFromCache(n);if(e)return e}catch(e){}return yield this.getChannelWithoutCache(n,t)}))}getChannelWithoutCache(n,t=!1,a=!0){return e.__awaiter(this,void 0,void 0,(function*(){e.unless(e.isTypeOf("string",n)).throw(e.SendbirdError.invalidParameters);const{requestDeduplicator:s}=e.Vault.of(this._iid),i=new o({channelUrl:n,isInternalCall:t}),r=yield s.requestGetChannel(i.path,(()=>this._requestQueue.send(i)),i.params,a),{channel:d}=r.as(l);return(yield this.upsertChannelsToCache([d]))[0]}))}createChannel(n){return e.__awaiter(this,void 0,void 0,(function*(){const t=Object.assign(Object.assign({},r),n);e.unless((n=>e.isArrayOf("string",n.operatorUserIds,!0)&&(e.isTypeOf("string",n.coverUrlOrImage,!0)||e.isFile(n.coverUrlOrImage,!0))&&e.isTypeOf("string",n.name,!0)&&e.isTypeOf("string",n.data,!0)&&e.isTypeOf("string",n.customType,!0)&&(e.isTypeOf("string",n.channelUrl)&&/^\w+$/.test(n.channelUrl)||null===n.channelUrl||void 0===n.channelUrl)&&e.isTypeOf("boolean",n.isEphemeral,!0))(t)).throw(e.SendbirdError.invalidParameters);const a=new d(t),s=yield this._requestQueue.send(a),{channel:i}=s.as(l);return yield this.upsertChannelsToCache([i]),i}))}}const v={name:void 0,coverUrlOrImage:void 0,data:void 0,customType:void 0,operatorUserIds:void 0};class g extends e.APIRequestCommand{constructor(n){const{channelUrl:t,token:a,limit:s}=n;super(),this.method=e.APIRequestMethod.GET,this.path=`${e.API_PATH_OPEN_CHANNELS}/${encodeURIComponent(t)}/participants`,this.params={token:a,limit:s}}}class m extends e.APIResponseCommand{constructor(e,n){super(e,n),this.participants=[];const{next:t,participants:s}=n;this.token=t,this.participants=s.map((n=>new a.Participant(e,n)))}}class f extends e.ChannelDataListQuery{constructor(n,t,a){super(n,t,e.ChannelType.OPEN,a)}_validate(){return super._validate()}next(){return e.__awaiter(this,void 0,void 0,(function*(){if(this._validate()){if(this._isLoading)throw e.SendbirdError.queryInProgress;if(this._hasNext){this._isLoading=!0;const{requestQueue:n}=e.Vault.of(this._iid),t=new g(Object.assign(Object.assign({},this),{token:this._token})),a=yield n.send(t),{participants:s,token:i}=a.as(m);return this._token=i,this._hasNext=!!i,this._isLoading=!1,s}return[]}throw e.SendbirdError.invalidParameters}))}}class E extends e.APIRequestCommand{constructor(n){const{channelUrl:t,coverUrlOrImage:a,name:s,data:i,customType:r,operatorUserIds:o}=n;super(),this.method=e.APIRequestMethod.PUT,this.path=`${e.API_PATH_OPEN_CHANNELS}/${encodeURIComponent(t)}`,this.params=e.deundefined(e.undefineNullProps({cover_url:e.isTypeOf("string",a)?a:null,cover_file:e.isFile(a)?a:null,name:s,data:i,custom_type:r,operators:o}))}}class U extends e.APIResponseCommand{constructor(e,n){super(e,n),this.channel=new P(e,n)}}class y extends e.APIRequestCommand{constructor(n){const{channelUrl:t}=n;super(),this.method=e.APIRequestMethod.DELETE,this.path=`${e.API_PATH_OPEN_CHANNELS}/${encodeURIComponent(t)}`}}class P extends n.BaseChannel{constructor(t,a){var s;super(t,a),this._lastParticipantCountUpdated=0,this.participantCount=0,this.operators=[],this.lastPinnedMessage=null,this._pinnedMessagesUpdatedAt=0,this.channelType=e.ChannelType.OPEN,this.participantCount=null!==(s=a.participant_count)&&void 0!==s?s:0,this.operators=Array.isArray(a.operators)?a.operators.map((n=>new e.User(t,n))):[],this.lastPinnedMessage=a.latest_pinned_message?n.parseMessagePayload(this._iid,Object.assign({channel_type:this.channelType},a.latest_pinned_message)):null}static payloadify(t,a=!1){const s=Object.assign(Object.assign({},n.BaseChannel.payloadify(t,a)),{participant_count:t.participantCount,operators:t.operators.map((n=>e.User.payloadify(n))),latest_pinned_message:t.lastPinnedMessage?n.payloadifyMessage(t.lastPinnedMessage):null});return a?s:e.deundefined(e.undefineNullProps(s))}serialize(){return e.serialize(this)}isOperator(n){return n instanceof e.User?this.isOperator(n.userId):this.operators.some((e=>e.userId===n))}_updateParticipantCount(e,n){return n>this._lastParticipantCountUpdated&&(this.participantCount=e,this._lastParticipantCountUpdated=n,!0)}createParticipantListQuery(e){return new f(this._iid,this.url,e)}refresh(){return e.__awaiter(this,void 0,void 0,(function*(){const e=_.of(this._iid);return yield e.getChannelWithoutCache(this.url)}))}enter(){return e.__awaiter(this,void 0,void 0,(function*(){const{requestQueue:n}=e.Vault.of(this._iid),t=new h({channelUrl:this.url}),a=yield n.send(t),{participantCount:s,ts:i}=a.as(c);this._updateParticipantCount(s,i);_.of(this._iid).setEnteredToCache(this)}))}exit(){return e.__awaiter(this,void 0,void 0,(function*(){const{requestQueue:t}=e.Vault.of(this._iid),a=new u({channelUrl:this.url}),s=yield t.send(a),{participantCount:i,ts:r}=s.as(p);this._updateParticipantCount(i,r);_.of(this._iid).setExitedToCache(this);n.MessageManager.of(this._iid).fileMessageQueue.cancel(this)}))}updateChannel(n){return e.__awaiter(this,void 0,void 0,(function*(){const t=Object.assign(Object.assign({},v),n);e.unless((n=>e.isArrayOf("string",n.operatorUserIds,!0)&&(e.isTypeOf("string",n.coverUrlOrImage,!0)||e.isFile(n.coverUrlOrImage,!0))&&e.isTypeOf("string",n.name,!0)&&e.isTypeOf("string",n.data,!0)&&e.isTypeOf("string",n.customType,!0))(t)).throw(e.SendbirdError.invalidParameters);const{requestQueue:a}=e.Vault.of(this._iid),s=new E(Object.assign({channelUrl:this.url},t)),i=yield a.send(s),{channel:r}=i.as(U);this._update(r);const o=_.of(this._iid);return yield o.upsertChannelsToCache([r]),this}))}updateChannelWithOperatorUserIds(n,t,a,s,i){return e.__awaiter(this,void 0,void 0,(function*(){const e=Object.assign(Object.assign({},v),{name:n,coverUrlOrImage:t,data:a,operatorUserIds:s,customType:i});return this.updateChannel(e)}))}delete(){return e.__awaiter(this,void 0,void 0,(function*(){const{requestQueue:n}=e.Vault.of(this._iid),t=new y({channelUrl:this.url});yield n.send(t);const a=_.of(this._iid);yield a.removeChannelsFromCache([this.url])}))}updateUserMessage(n,t){const a=Object.create(null,{updateUserMessage:{get:()=>super.updateUserMessage}});return e.__awaiter(this,void 0,void 0,(function*(){const e=yield a.updateUserMessage.call(this,n,t);let s=!1,i=!1;if(this.lastPinnedMessage&&this.lastPinnedMessage.messageId===e.messageId&&(this.lastPinnedMessage=e,s=!0,i=!0),s){_.of(this._iid).handlers.map((e=>{e.onChannelChanged&&e.onChannelChanged(this)}))}if(i){_.of(this._iid).handlers.map((e=>{e.onPinnedMessageUpdated&&e.onPinnedMessageUpdated(this)}))}return e}))}updateFileMessage(n,t){const a=Object.create(null,{updateFileMessage:{get:()=>super.updateFileMessage}});return e.__awaiter(this,void 0,void 0,(function*(){const e=yield a.updateFileMessage.call(this,n,t);let s=!1,i=!1;if(this.lastPinnedMessage&&this.lastPinnedMessage.messageId===e.messageId&&(this.lastPinnedMessage=e,s=!0,i=!0),s){_.of(this._iid).handlers.map((e=>{e.onChannelChanged&&e.onChannelChanged(this)}))}if(i){_.of(this._iid).handlers.map((e=>{e.onPinnedMessageUpdated&&e.onPinnedMessageUpdated(this)}))}return e}))}}class M extends s.BaseChannelHandlerParams{constructor(){super(...arguments),this.onUserEntered=e.noop,this.onUserExited=e.noop,this.onChannelParticipantCountChanged=e.noop,this.onPollUpdated=e.noop,this.onPollVoted=e.noop,this.onPollDeleted=e.noop,this.onPinnedMessageUpdated=e.noop}}class T extends e.APIRequestCommand{constructor(n){const{token:t,limit:a,nameKeyword:s,urlKeyword:i,customTypes:r,includeFrozen:o,includeMetaData:l}=n;super(),this.method=e.APIRequestMethod.GET,this.path=e.API_PATH_OPEN_CHANNELS,this.params=e.deundefined({token:t,limit:a,name_contains:s,url_contains:i,custom_types:r,show_frozen:o,show_metadata:l,show_pinned_messages:!0})}}class A extends e.APIResponseCommand{constructor(e,n){super(e,n),this.channels=[];const{next:t,channels:a,ts:s}=n;this.token=t,a&&a.length>0&&(this.channels=a.map((n=>new P(e,n)))),this.ts="number"==typeof s?s:null}}class b extends e.BaseListQuery{constructor(e,n){var t,a,s,i,r;super(e,n),this.includeFrozen=!0,this.includeMetaData=!0,this.nameKeyword=null,this.urlKeyword=null,this.customTypes=null,this.includeFrozen=null===(t=n.includeFrozen)||void 0===t||t,this.includeMetaData=null===(a=n.includeMetaData)||void 0===a||a,this.nameKeyword=null!==(s=n.nameKeyword)&&void 0!==s?s:null,this.urlKeyword=null!==(i=n.urlKeyword)&&void 0!==i?i:null,this.customTypes=null!==(r=n.customTypes)&&void 0!==r?r:null}_validate(){return super._validate()&&e.isTypeOf("boolean",this.includeFrozen)&&e.isTypeOf("boolean",this.includeMetaData)&&e.isTypeOf("string",this.nameKeyword,!0)&&e.isTypeOf("string",this.urlKeyword,!0)&&e.isArrayOf("string",this.customTypes,!0)}next(){return e.__awaiter(this,void 0,void 0,(function*(){if(this._validate()){if(this._isLoading)throw e.SendbirdError.queryInProgress;if(this._hasNext){this._isLoading=!0;const{requestQueue:n}=e.Vault.of(this._iid),t=new T(e.undefineNullProps(Object.assign(Object.assign({},this),{token:this._token}))),a=yield n.send(t),{channels:s,token:i}=a.as(A);this._token=i,this._hasNext=!!i;const r=_.of(this._iid);return yield r.upsertChannelsToCache(s),this._isLoading=!1,s}return[]}throw e.SendbirdError.invalidParameters}))}}class w extends e.Module{constructor(){super(...arguments),this.name="openChannel"}init(e,{sdkState:n,dispatcher:t,sessionManager:a,requestQueue:s,logger:i,onlineDetector:r,cacheContext:o}){super.init(e,{sdkState:n,dispatcher:t,sessionManager:a,requestQueue:s,logger:i,onlineDetector:r,cacheContext:o}),this._manager=new _(e,{sdkState:n,dispatcher:t,requestQueue:s,logger:i,cacheContext:o,sessionManager:a})}createOpenChannelListQuery(e={}){return new b(this._iid,e)}addOpenChannelHandler(e,n){this._manager.addHandler(e,n)}removeOpenChannelHandler(e){this._manager.removeHandler(e)}removeAllOpenChannelHandlers(){this._manager.clearHandler()}buildOpenChannelFromSerializedData(e){return this._manager.buildOpenChannelFromSerializedData(e)}getChannel(n){return e.__awaiter(this,void 0,void 0,(function*(){return this._manager.getChannel(n)}))}getChannelWithoutCache(n){return e.__awaiter(this,void 0,void 0,(function*(){return this._manager.getChannelWithoutCache(n)}))}createChannel(n={}){return e.__awaiter(this,void 0,void 0,(function*(){return this._manager.createChannel(n)}))}createChannelWithOperatorUserIds(n,t,a,s,i){return e.__awaiter(this,void 0,void 0,(function*(){const e=Object.assign({},r);return e.name=n,e.coverUrlOrImage=t,e.data=a,e.operatorUserIds=s,e.customType=i,this._manager.createChannel(e)}))}}exports.OpenChannel=P,exports.OpenChannelHandler=class extends M{constructor(e={}){super(),Object.keys(e).forEach((n=>{this.hasOwnProperty(n)&&(this[n]=e[n])}))}},exports.OpenChannelListQuery=b,exports.OpenChannelModule=w,exports.ParticipantListQuery=f;