"use strict";(self.webpackChunkmattermost_webapp=self.webpackChunkmattermost_webapp||[]).push([[9252],{61274:(e,t,a)=>{a.d(t,{Z:()=>m});var s=a(23615),n=a.n(s),o=a(84390),r=a.n(o),i=a(72060),l=a(9448);function c(){const{formatMessage:e}=(0,i.useIntl)();return r().createElement("i",{className:"fa fa-angle-left",title:e({id:"generic_icons.back",defaultMessage:"Back Icon"})})}const d=e=>{let{team:t,siteName:a}=e;const s=0===(null==t?void 0:t.delete_at);return r().createElement("div",{className:"backstage-navbar"},r().createElement(l.Link,{className:"backstage-navbar__back",to:"/".concat(s?null==t?void 0:t.name:"")},r().createElement(c,null),r().createElement("span",null,s?r().createElement(i.FormattedMessage,{id:"backstage_navbar.backToMattermost",defaultMessage:"Back to {siteName}",values:{siteName:null!=a?a:null==t?void 0:t.name}}):r().createElement(i.FormattedMessage,{id:"backstage_navbar.back",defaultMessage:"Back"}))))};d.propTypes={siteName:n().string};const m=d},36840:(e,t,a)=>{a.r(t),a.d(t,{default:()=>Rs}),a(14078);var s=a(70314),n=a(9448),o=a(97042),r=a(19601),i=a(84073),l=a(11298),c=a(23894),d=(a(48410),a(52077),a(1203),a(84390)),m=a.n(d),u=a(85939),g=a(36891),p=a(92087),h=a(83905),f=a(23615),b=a.n(f),E=a(72060),_=a(52173),v=a(95887),M=a(70174),k=a(9684),y=a(90568),N=(a(61418),a(20266),a(83526),a(92189),a(80139)),w=a(40364),C=a(69717),O=a(7249);function S(e){const{confirmButtonText:t=m().createElement(E.FormattedMessage,{id:"integrations.delete.confirm.button",defaultMessage:"Yes, delete it"}),linkText:a=m().createElement(E.FormattedMessage,{id:"installed_integrations.delete",defaultMessage:"Delete"}),modalMessage:s,modalTitle:n=m().createElement(E.FormattedMessage,{id:"integrations.delete.confirm.title",defaultMessage:"Delete Integration"}),onDelete:o,openModal:r}=e,i=(0,d.useCallback)((()=>{r({modalId:"delete_integration_confirm",dialogProps:{confirmButtonText:t,confirmButtonClass:"btn btn-danger",modalClass:"integrations-backstage-modal",message:m().createElement(m().Fragment,null,e.subtitleText&&m().createElement("p",null,e.subtitleText),m().createElement("div",{className:"alert alert-danger"},m().createElement(O.Z,{additionalClassName:"mr-1"}),m().createElement("strong",null,e.modalMessage))),onConfirm:o,title:n},dialogType:C.Z})}),[t,s,n,o,r]);return m().createElement("button",{className:"color--link style--none",onClick:i},a)}S.propTypes={confirmButtonText:b().node,linkText:b().node,subtitleText:b().node,modalMessage:b().node,modalTitle:b().node,onDelete:b().func.isRequired,openModal:b().any.isRequired};const A={openModal:w.h},T=(0,s.connect)(null,A)(S);function F(e){return m().createElement(T,{confirmButtonText:m().createElement(E.FormattedMessage,{id:"emoji_list.delete.confirm.button",defaultMessage:"Delete"}),linkText:m().createElement(E.FormattedMessage,{id:"emoji_list.delete",defaultMessage:"Delete"}),modalMessage:m().createElement(E.FormattedMessage,{id:"emoji_list.delete.confirm.msg",defaultMessage:"This action permanently deletes the custom emoji. Are you sure you want to delete it?"}),modalTitle:m().createElement(E.FormattedMessage,{id:"emoji_list.delete.confirm.title",defaultMessage:"Delete Custom Emoji"}),onDelete:e.onDelete})}F.propTypes={onDelete:b().func.isRequired};const P=[_.Z.DELETE_EMOJIS],I=[_.Z.DELETE_OTHERS_EMOJIS],R=e=>{let{actions:{deleteCustomEmoji:t},onDelete:a,emoji:s={},creatorUsername:n,currentUserId:o="",creatorDisplayName:r=""}=e;const i=(0,d.useMemo)((()=>({backgroundImage:"url(".concat(N.je.getCustomEmojiImageUrl(s.id),")")})),[s.id]),l=(0,d.useCallback)((()=>{s&&(a&&a(s.id),t(s.id))}),[t,s,a]);let c=r;n&&n!==c&&(c+=" (@"+n+")");let u=m().createElement(F,{onDelete:l});return u=s.creator_id===o?m().createElement(v.Z,{permissions:P},u):m().createElement(v.Z,{permissions:P},m().createElement(v.Z,{permissions:I},u)),m().createElement("tr",{className:"backstage-list__item"},m().createElement("td",{className:"emoji-list__name"},":"+s.name+":"),m().createElement("td",{className:"emoji-list__image"},m().createElement("span",{className:"emoticon",style:i})),m().createElement("td",{className:"emoji-list__creator"},c),m().createElement("td",{className:"emoji-list-item_actions"},u))};R.propTypes={emojiId:b().string,currentUserId:b().string,creatorDisplayName:b().string,creatorUsername:b().string,onDelete:b().func,actions:b().shape({deleteCustomEmoji:b().func.isRequired}).isRequired};const x=m().memo(R),j=(0,s.connect)((function(e,t){const a=e.entities.emojis.customEmoji[t.emojiId],s=(0,c.PR)(e,a.creator_id);return{emoji:a,creatorDisplayName:(0,M.hI)(e,s),creatorUsername:s?s.username:"",currentUserId:(0,c.rc)(e),currentTeam:(0,l.kA)(e)}}),(function(e){return{actions:(0,g.bindActionCreators)({deleteCustomEmoji:k._2},e)}}))(x);var U=a(25598),D=a(45901),L=a(40791),q=a(28271),H=a(95104);function W(e,t,a){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var a=e[Symbol.toPrimitive];if(void 0!==a){var s=a.call(e,"string");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class B extends m().PureComponent{constructor(e){super(e),W(this,"nextPage",(e=>{e&&e.preventDefault();const t=this.state.page+1;this.setState({nextLoading:!0}),this.props.actions.getCustomEmojis(t,50,o.dy.SORT_BY_NAME,!0).then((e=>{let{data:a}=e;this.setState({page:t,nextLoading:!1}),a&&a.length<50&&this.setState({missingPages:!1}),this.props.scrollToTop()}))})),W(this,"previousPage",(e=>{e&&e.preventDefault(),this.setState({page:this.state.page-1,nextLoading:!1,missingPages:!0}),this.props.scrollToTop()})),W(this,"onSearchChange",(e=>{if(!e||!e.target)return;const t=e.target.value||"";clearTimeout(this.searchTimeout),this.searchTimeout=setTimeout((async()=>{if(""===t.trim())return void this.setState({searchEmojis:null,page:0});this.setState({loading:!0});const{data:e}=await this.props.actions.searchCustomEmojis(t,{},!0);e?this.setState({searchEmojis:e.map((e=>e.id)),loading:!1}):this.setState({searchEmojis:[],loading:!1})}),200)})),W(this,"deleteFromSearch",(e=>{if(!this.state.searchEmojis)return;const t=this.state.searchEmojis.indexOf(e);if(t<0)return;const a=[...this.state.searchEmojis];a.splice(t,1),this.setState({searchEmojis:a})})),this.searchTimeout=null,this.state={loading:!0,page:0,nextLoading:!1,searchEmojis:null,missingPages:!0}}async componentDidMount(){this.props.actions.getCustomEmojis(0,51,o.dy.SORT_BY_NAME,!0).then((e=>{let{data:t}=e;this.setState({loading:!1}),t&&t.length<50&&this.setState({missingPages:!1})}))}render(){const e=this.state.searchEmojis,t=[];let a,s;if(this.state.loading)t.push(m().createElement("tr",{key:"loading",className:"backstage-list__item backstage-list__empty"},m().createElement("td",{colSpan:4},m().createElement(U.Z,{key:"loading"}))));else if(0===this.props.emojiIds.length||e&&0===e.length)t.push(m().createElement("tr",{key:"empty",className:"backstage-list__item backstage-list__empty"},m().createElement("td",{colSpan:4},m().createElement(E.FormattedMessage,{id:"emoji_list.empty",defaultMessage:"No custom emoji found"}))));else if(e)e.forEach((e=>{t.push(m().createElement(j,{key:"emoji_search_item"+e,emojiId:e,onDelete:this.deleteFromSearch,actions:{deleteCustomEmoji:k._2}}))}));else{const e=50*this.state.page,n=e+50;if(this.props.emojiIds.slice(e,n).forEach((e=>{t.push(m().createElement(j,{key:"emoji_list_item"+e,emojiId:e,actions:{deleteCustomEmoji:k._2}}))})),this.state.missingPages){const e=m().createElement("span",null,m().createElement(E.FormattedMessage,{id:"filtered_user_list.next",defaultMessage:"Next"}),m().createElement(L.Z,{additionalClassName:"ml-2"}));a=m().createElement(D.Z,{btnClass:"btn-tertiary",extraClasses:"pull-right",onClick:this.nextPage,saving:this.state.nextLoading,disabled:this.state.nextLoading,defaultMessage:e,savingMessage:e})}this.state.page>0&&(s=m().createElement("button",{className:"btn btn-tertiary",onClick:this.previousPage},m().createElement(q.Z,{additionalClassName:"mr-2"}),m().createElement(E.FormattedMessage,{id:"filtered_user_list.prev",defaultMessage:"Previous"})))}return m().createElement("div",null,m().createElement("div",{className:"backstage-filters"},m().createElement("div",{className:"backstage-filter__search"},m().createElement(H.Z,null),m().createElement("input",{type:"search",className:"form-control",placeholder:this.props.intl.formatMessage({id:"emoji_list.search",defaultMessage:"Search Custom Emoji"}),onChange:this.onSearchChange,style:Z.search}))),m().createElement("span",{className:"backstage-list__help"},m().createElement("p",null,m().createElement(E.FormattedMessage,{id:"emoji_list.help",defaultMessage:"Custom emoji are available to everyone on your server. Type ':' followed by two characters in a message box to bring up the emoji selection menu."})),m().createElement("p",null,m().createElement(E.FormattedMessage,{id:"emoji_list.help2",defaultMessage:"Tip: If you add #, ##, or ### as the first character on a new line containing emoji, you can use larger sized emoji. To try it out, send a message such as: '# :smile:'."}))),m().createElement("div",{className:"backstage-list"},m().createElement("table",{className:"emoji-list__table"},m().createElement("thead",null,m().createElement("tr",{className:"backstage-list__item emoji-list__table-header"},m().createElement("th",{className:"emoji-list__name"},m().createElement(E.FormattedMessage,{id:"emoji_list.name",defaultMessage:"Name"})),m().createElement("th",{className:"emoji-list__image"},m().createElement(E.FormattedMessage,{id:"emoji_list.image",defaultMessage:"Image"})),m().createElement("th",{className:"emoji-list__creator"},m().createElement(E.FormattedMessage,{id:"emoji_list.creator",defaultMessage:"Creator"})),m().createElement("th",{className:"emoji-list_actions"},m().createElement(E.FormattedMessage,{id:"emoji_list.actions",defaultMessage:"Actions"})))),m().createElement("tbody",null,t))),m().createElement("div",{className:"filter-controls pt-3"},s,a))}}const Z={search:{flexGrow:0,flexShrink:0}},G=(0,E.injectIntl)(B),Y=(0,s.connect)((function(e){return{emojiIds:(0,y.pI)(e)||[]}}),(function(e){return{actions:(0,g.bindActionCreators)({getCustomEmojis:k.cc,searchCustomEmojis:k.pL},e)}}))(G),z=[_.Z.CREATE_EMOJIS],V=["system_admin","team_admin","system_user","team_user"];function J(e){let{teamDisplayName:t="",teamName:a="",siteName:s="",scrollToTop:o,currentTheme:r,actions:i}=e;const l=(0,E.useIntl)();(0,d.useEffect)((()=>(c(),i.loadRolesIfNeeded(V),M.CO(),()=>{M._v(r)})),[]),(0,d.useEffect)((()=>{c()}),[s]);const c=()=>{document.title=l.formatMessage({id:"custom_emoji.header",defaultMessage:"Custom Emoji"})+" - "+t+" "+s};return m().createElement("div",{className:"backstage-content emoji-list"},m().createElement("div",{className:"backstage-header"},m().createElement("h1",null,m().createElement(E.FormattedMessage,{id:"emoji_list.header",defaultMessage:"Custom Emoji"})),m().createElement(v.Z,{permissions:z},m().createElement(n.Link,{className:"add-link",to:"/"+a+"/emoji/add"},m().createElement("button",{type:"button",className:"btn btn-primary"},m().createElement(E.FormattedMessage,{id:"emoji_list.add",defaultMessage:"Add Custom Emoji"}))))),m().createElement(Y,{scrollToTop:o}))}J.propTypes={teamName:b().string,teamDisplayName:b().string,siteName:b().string,actions:b().shape({}).isRequired};const K=(0,s.connect)((function(e){const t=(0,l.kA)(e);return{teamName:null==t?void 0:t.name,teamDisplayName:null==t?void 0:t.display_name,siteName:e.entities.general.config.SiteName,currentTheme:(0,h.gh)(e)}}),(function(e){return{actions:(0,g.bindActionCreators)({loadRolesIfNeeded:p.k3},e)}}))(J);var Q=a(27103);a(90938),a(95289);const X=e=>{let{children:t}=e;const{formatMessage:a}=(0,E.useIntl)(),s=[];return m().Children.forEach(t,((e,t)=>{0!==t&&s.push(m().createElement("span",{key:"divider"+t,className:"backstage-header__divider"},m().createElement("i",{className:"fa fa-angle-right",title:a({id:"generic_icons.breadcrumb",defaultMessage:"Breadcrumb Icon"})}))),s.push(e)})),m().createElement("div",{className:"backstage-header"},m().createElement("h1",null,s))};var $=a(38210),ee=a(18736),te=a(8243),ae=a(23712);function se(e,t,a){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var a=e[Symbol.toPrimitive];if(void 0!==a){var s=a.call(e,"string");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class ne extends m().PureComponent{constructor(e){super(e),se(this,"handleFormSubmit",(async e=>this.handleSubmit(e))),se(this,"handleSaveButtonClick",(async e=>this.handleSubmit(e))),se(this,"handleSubmit",(async e=>{const{actions:t,emojiMap:a,user:s,team:n}=this.props,{image:o,name:r,saving:i}=this.state;if(e.preventDefault(),i)return;this.setState({saving:!0,error:null});const l={creator_id:s.id,name:r.trim().toLowerCase()};if(l.name.startsWith(":")&&l.name.endsWith(":")&&(l.name=l.name.substring(1,l.name.length-1)),!l.name)return void this.setState({saving:!1,error:m().createElement(E.FormattedMessage,{id:"add_emoji.nameRequired",defaultMessage:"A name is required for the emoji"})});if(/[^a-z0-9+_-]/.test(l.name))return void this.setState({saving:!1,error:m().createElement(E.FormattedMessage,{id:"add_emoji.nameInvalid",defaultMessage:"An emoji's name can only contain lowercase letters, numbers, and the symbols '-', '+' and '_'."})});if(a.hasSystemEmoji(l.name))return void this.setState({saving:!1,error:m().createElement(E.FormattedMessage,{id:"add_emoji.nameTaken",defaultMessage:"This name is already in use by a system emoji. Please choose another name."})});if(a.has(l.name))return void this.setState({saving:!1,error:m().createElement(E.FormattedMessage,{id:"add_emoji.customNameTaken",defaultMessage:"This name is already in use by a custom emoji. Please choose another name."})});if(!o)return void this.setState({saving:!1,error:m().createElement(E.FormattedMessage,{id:"add_emoji.imageRequired",defaultMessage:"An image is required for the emoji"})});if(o.size>1048576)return void this.setState({saving:!1,error:m().createElement(E.FormattedMessage,{id:"add_emoji.imageTooLarge",defaultMessage:"Unable to create emoji. Image must be less than 1 MB in size."})});const c=await t.createCustomEmoji(l,o);if("data"in c&&c&&c.data.name===l.name)return void(0,te.s)().push("/"+n.name+"/emoji");if("error"in c){const e=c;if(e)return void this.setState({saving:!1,error:e.error.message})}const d=m().createElement(E.FormattedMessage,{id:"add_emoji.failedToAdd",defaultMessage:"Something went wrong when adding the custom emoji."});this.setState({saving:!1,error:d})})),se(this,"updateName",(e=>{this.setState({name:e.target.value})})),se(this,"updateImage",(e=>{if(null==e.target.files||0===e.target.files.length)return void this.setState({image:null,imageUrl:""});const t=e.target.files[0],a=new FileReader;a.onload=()=>{this.setState({image:t,imageUrl:a.result})},a.readAsDataURL(t)})),this.state={name:"",image:null,imageUrl:"",saving:!1,error:null}}render(){let e=null;this.state.image&&(e=m().createElement("span",{className:"add-emoji__filename"},this.state.image.name));let t=null;return this.state.imageUrl&&(t=m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"preview"},m().createElement(E.FormattedMessage,{id:"add_emoji.preview",defaultMessage:"Preview"})),m().createElement("div",{className:"col-md-5 col-sm-8 add-emoji__preview"},m().createElement(E.FormattedMessage,{id:"add_emoji.preview.sentence",defaultMessage:"This is a sentence with {image} in it.",values:{image:m().createElement("span",{className:"emoticon",style:{backgroundImage:"url("+this.state.imageUrl+")"}})}})))),m().createElement("div",{className:"backstage-content row"},m().createElement(X,null,m().createElement(n.Link,{to:"/"+this.props.team.name+"/emoji"},m().createElement(E.FormattedMessage,{id:"emoji_list.header",defaultMessage:"Custom Emoji"})),m().createElement(E.FormattedMessage,{id:"add_emoji.header",defaultMessage:"Add"})),m().createElement("div",{className:"backstage-form"},m().createElement("form",{className:"form-horizontal",onSubmit:this.handleFormSubmit},m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"name"},m().createElement(E.FormattedMessage,{id:"add_emoji.name",defaultMessage:"Name"})),m().createElement("div",{className:"col-md-5 col-sm-8"},m().createElement("input",{id:"name",type:"text",maxLength:64,className:"form-control",value:this.state.name,onChange:this.updateName}),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_emoji.name.help",defaultMessage:"Name your emoji. The name can be up to 64 characters, and can contain lowercase letters, numbers, and the symbols '-' and '_'."})))),m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"image"},m().createElement(E.FormattedMessage,{id:"add_emoji.image",defaultMessage:"Image"})),m().createElement("div",{className:"col-md-5 col-sm-8"},m().createElement("div",null,m().createElement("div",{className:"add-emoji__upload"},m().createElement("button",{className:"btn btn-primary"},m().createElement(E.FormattedMessage,{id:"add_emoji.image.button",defaultMessage:"Select"})),m().createElement("input",{id:"select-emoji",type:"file",accept:ae.Constants.ACCEPT_EMOJI_IMAGE,multiple:!1,onChange:this.updateImage})),e,m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_emoji.image.help",defaultMessage:"Specify a .gif, .png, or .jpg file of up to 64 KB for your emoji. The dimensions can be up to 128 pixels by 128 pixels."}))))),t,m().createElement("div",{className:"backstage-form__footer"},m().createElement($.Z,{type:"backstage",error:this.state.error}),m().createElement(n.Link,{className:"btn btn-tertiary",to:"/"+this.props.team.name+"/emoji"},m().createElement(E.FormattedMessage,{id:"add_emoji.cancel",defaultMessage:"Cancel"})),m().createElement(ee.Z,{"data-testid":"save-button",className:"btn btn-primary",type:"submit",spinning:this.state.saving,spinningText:(0,M._u)({id:"add_emoji.saving",defaultMessage:"Saving..."}),onClick:this.handleSaveButtonClick},m().createElement(E.FormattedMessage,{id:"add_emoji.save",defaultMessage:"Save"}))))))}}const oe=(0,s.connect)((function(e){return{emojiMap:(0,Q.kM)(e)}}),(function(e){return{actions:(0,g.bindActionCreators)({createCustomEmoji:k.uK},e)}}))(ne);var re=a(35683),ie=a(51750),le=a(77800),ce=a(39141);const de=a.p+"files/357ed0208b2f0eab27a2.jpg",me=a.p+"files/445dd2ab20befc4a78c9.png",ue=a.p+"files/7199acab0ef555a345ba.png",ge=a.p+"files/4651fd92bdc643485b9e.jpg",pe=a.p+"files/8a9816ae9c0cd846ae78.jpg",he=e=>{let{image:t,title:a,description:s,link:o}=e;return m().createElement(n.Link,{to:o,className:"integration-option"},m().createElement("img",{alt:"integration image",className:"integration-option__image",src:t}),m().createElement("div",{className:"integration-option__title"},a),m().createElement("div",{className:"integration-option__description"},s))};he.propTypes={image:b().string.isRequired,title:b().element.isRequired,description:b().element.isRequired,link:b().string.isRequired};const fe=m().memo(he);function be(e,t,a){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var a=e[Symbol.toPrimitive];if(void 0!==a){var s=a.call(e,"string");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class Ee extends m().PureComponent{constructor(){super(...arguments),be(this,"updateTitle",(()=>{const e=this.props.siteName||"";document.title=M._u({id:"admin.sidebar.integrations",defaultMessage:"Integrations"})+" - "+this.props.team.display_name+" "+e}))}componentDidMount(){this.updateTitle()}render(){const e=[];return this.props.enableIncomingWebhooks&&e.push(m().createElement(le.Z,{teamId:this.props.team.id,permissions:[o.Pl.MANAGE_INCOMING_WEBHOOKS],key:"incomingWebhookPermission"},m().createElement(fe,{key:"incomingWebhook",image:de,title:m().createElement(E.FormattedMessage,{id:"integrations.incomingWebhook.title",defaultMessage:"Incoming Webhooks"}),description:m().createElement(E.FormattedMessage,{id:"integrations.incomingWebhook.description",defaultMessage:"Incoming webhooks allow external integrations to send messages"}),link:"/"+this.props.team.name+"/integrations/incoming_webhooks"}))),this.props.enableOutgoingWebhooks&&e.push(m().createElement(le.Z,{teamId:this.props.team.id,permissions:[o.Pl.MANAGE_OUTGOING_WEBHOOKS],key:"outgoingWebhookPermission"},m().createElement(fe,{key:"outgoingWebhook",image:ge,title:m().createElement(E.FormattedMessage,{id:"integrations.outgoingWebhook.title",defaultMessage:"Outgoing Webhooks"}),description:m().createElement(E.FormattedMessage,{id:"integrations.outgoingWebhook.description",defaultMessage:"Outgoing webhooks allow external integrations to receive and respond to messages"}),link:"/"+this.props.team.name+"/integrations/outgoing_webhooks"}))),this.props.enableCommands&&e.push(m().createElement(le.Z,{teamId:this.props.team.id,permissions:[o.Pl.MANAGE_SLASH_COMMANDS],key:"commandPermission"},m().createElement(fe,{key:"command",image:pe,title:m().createElement(E.FormattedMessage,{id:"integrations.command.title",defaultMessage:"Slash Commands"}),description:m().createElement(E.FormattedMessage,{id:"integrations.command.description",defaultMessage:"Slash commands send events to an external integration"}),link:"/"+this.props.team.name+"/integrations/commands"}))),this.props.enableOAuthServiceProvider&&e.push(m().createElement(ie.Z,{permissions:[o.Pl.MANAGE_OAUTH],key:"oauth2AppsPermission"},m().createElement(fe,{key:"oauth2Apps",image:me,title:m().createElement(E.FormattedMessage,{id:"integrations.oauthApps.title",defaultMessage:"OAuth 2.0 Applications"}),description:m().createElement(E.FormattedMessage,{id:"integrations.oauthApps.description",defaultMessage:"Auth 2.0 allows external applications to make authorized requests to the Mattermost API"}),link:"/"+this.props.team.name+"/integrations/oauth2-apps"}))),this.props.enableOutgoingOAuthConnections&&e.push(m().createElement(le.Z,{teamId:this.props.team.id,permissions:[o.Pl.MANAGE_OUTGOING_OAUTH_CONNECTIONS],key:"outgoingOAuthConnectionsPermission"},m().createElement(fe,{key:"outgoingOAuthConnections",image:ue,title:m().createElement(E.FormattedMessage,{id:"integrations.outgoingOAuthConnections.title",defaultMessage:"Outgoing OAuth Connections"}),description:m().createElement(E.FormattedMessage,{id:"integrations.outgoingOAuthConnections.description",defaultMessage:"Outgoing OAuth Connections allow custom integrations to communicate to external systems"}),link:"/"+this.props.team.name+"/integrations/outgoing-oauth2-connections"}))),e.push(m().createElement(ie.Z,{permissions:["manage_bots"],key:"botsPermissions"},m().createElement(fe,{image:ce,title:m().createElement(E.FormattedMessage,{id:"bots.manage.header",defaultMessage:"Bot Accounts"}),description:m().createElement(E.FormattedMessage,{id:"bots.manage.description",defaultMessage:"Use bot accounts to integrate with Mattermost through plugins or the API"}),link:"/"+this.props.team.name+"/integrations/bots"}))),m().createElement("div",{className:"backstage-content row"},m().createElement("div",{className:"backstage-header"},m().createElement("h1",null,m().createElement(E.FormattedMessage,{id:"integrations.header",defaultMessage:"Integrations"}))),m().createElement("div",{className:"backstage-list__help"},m().createElement(E.FormattedMessage,{id:"integrations.help",defaultMessage:"Visit the {appDirectory} to find self-hosted, third-party apps and integrations for Mattermost.",values:{appDirectory:m().createElement(re.Z,{href:"https://mattermost.com/marketplace",location:"integrations"},m().createElement(E.FormattedMessage,{id:"integrations.help.appDirectory",defaultMessage:"App Directory"}))}})),m().createElement("div",{className:"integrations-list d-flex flex-wrap"},e))}}be(Ee,"propTypes",{enableIncomingWebhooks:b().bool.isRequired,enableOutgoingWebhooks:b().bool.isRequired,enableCommands:b().bool.isRequired,enableOAuthServiceProvider:b().bool.isRequired,enableOutgoingOAuthConnections:b().bool.isRequired});const _e=(0,s.connect)((function(e){const t=(0,r.iE)(e);return{siteName:t.SiteName,enableIncomingWebhooks:"true"===t.EnableIncomingWebhooks,enableOutgoingWebhooks:"true"===t.EnableOutgoingWebhooks,enableCommands:"true"===t.EnableCommands,enableOAuthServiceProvider:"true"===t.EnableOAuthServiceProvider,enableOutgoingOAuthConnections:"true"===t.EnableOutgoingOAuthConnections}}))(Ee);var ve=a(72873),Me=(a(69217),a(4500)),ke=a(43618),ye=a(34381),Ne=a(39875);const we=e=>{let{channels:t,selectOpen:a,selectPrivate:s,selectDm:n,value:o,onChange:r}=e;const i=(0,E.useIntl)(),l=[m().createElement("option",{key:"",value:""},i.formatMessage({id:"channel_select.placeholder",defaultMessage:"--- Select a channel ---"}))];return t.forEach((e=>{const t=e.display_name||e.name;(e.type===ae.default.OPEN_CHANNEL&&a||e.type===ae.default.PRIVATE_CHANNEL&&s||e.type===ae.default.DM_CHANNEL&&n)&&l.push(m().createElement("option",{key:e.id,value:e.id},t))})),m().createElement("select",{className:"form-control",value:o,onChange:r,id:"channelSelect"},l)},Ce=(0,d.memo)(we),Oe=(0,Me.P1)("getMyChannelsSorted",ke.qB,ye.M,((e,t)=>[...e.filter((e=>0===e.delete_at))].sort(Ne.Ut.bind(null,t)))),Se=(0,s.connect)((function(e){return{channels:Oe(e)}}))(Ce);function Ae(e,t,a){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var a=e[Symbol.toPrimitive];if(void 0!==a){var s=a.call(e,"string");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class Te extends d.PureComponent{constructor(e){super(e),Ae(this,"getStateFromHook",(e=>({displayName:(null==e?void 0:e.display_name)||"",description:(null==e?void 0:e.description)||"",channelId:(null==e?void 0:e.channel_id)||"",channelLocked:(null==e?void 0:e.channel_locked)||!1,username:(null==e?void 0:e.username)||"",iconURL:(null==e?void 0:e.icon_url)||"",saving:!1,serverError:"",clientError:null}))),Ae(this,"handleSubmit",(e=>{var t,a,s,n,o,r;if(e.preventDefault(),this.state.saving)return;if(this.setState({saving:!0,serverError:"",clientError:null}),!this.state.channelId)return void this.setState({saving:!1,clientError:m().createElement(E.FormattedMessage,{id:"add_incoming_webhook.channelRequired",defaultMessage:"A valid channel is required"})});const i={channel_id:this.state.channelId,channel_locked:this.state.channelLocked,display_name:this.state.displayName,description:this.state.description,username:this.state.username,icon_url:this.state.iconURL,id:(null===(t=this.props.initialHook)||void 0===t?void 0:t.id)||"",create_at:(null===(a=this.props.initialHook)||void 0===a?void 0:a.create_at)||0,update_at:(null===(s=this.props.initialHook)||void 0===s?void 0:s.update_at)||0,delete_at:(null===(n=this.props.initialHook)||void 0===n?void 0:n.delete_at)||0,team_id:(null===(o=this.props.initialHook)||void 0===o?void 0:o.team_id)||"",user_id:(null===(r=this.props.initialHook)||void 0===r?void 0:r.user_id)||""};this.props.action(i).then((()=>this.setState({saving:!1})))})),Ae(this,"updateDisplayName",(e=>{this.setState({displayName:e.target.value})})),Ae(this,"updateDescription",(e=>{this.setState({description:e.target.value})})),Ae(this,"updateChannelId",(e=>{this.setState({channelId:e.target.value})})),Ae(this,"updateChannelLocked",(e=>{this.setState({channelLocked:e.target.checked})})),Ae(this,"updateUsername",(e=>{this.setState({username:e.target.value})})),Ae(this,"updateIconURL",(e=>{this.setState({iconURL:e.target.value})})),this.state=this.getStateFromHook(this.props.initialHook)}render(){const e=this.props.header,t=this.props.footer;return m().createElement("div",{className:"backstage-content"},m().createElement(X,null,m().createElement(n.Link,{to:"/".concat(this.props.team.name,"/integrations/incoming_webhooks")},m().createElement(E.FormattedMessage,{id:"incoming_webhooks.header",defaultMessage:"Incoming Webhooks"})),m().createElement(E.FormattedMessage,{id:e.id,defaultMessage:e.defaultMessage})),m().createElement("div",{className:"backstage-form"},m().createElement("form",{className:"form-horizontal",onSubmit:e=>this.handleSubmit(e)},m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"displayName"},m().createElement(E.FormattedMessage,{id:"add_incoming_webhook.displayName",defaultMessage:"Title"})),m().createElement("div",{className:"col-md-5 col-sm-8"},m().createElement("input",{id:"displayName",type:"text",maxLength:64,className:"form-control",value:this.state.displayName,onChange:this.updateDisplayName}),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_incoming_webhook.displayName.help",defaultMessage:"Specify a title, of up to 64 characters, for the webhook settings page."})))),m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"description"},m().createElement(E.FormattedMessage,{id:"add_incoming_webhook.description",defaultMessage:"Description"})),m().createElement("div",{className:"col-md-5 col-sm-8"},m().createElement("input",{id:"description",type:"text",maxLength:500,className:"form-control",value:this.state.description,onChange:this.updateDescription}),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_incoming_webhook.description.help",defaultMessage:"Describe your incoming webhook."})))),m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"channelId"},m().createElement(E.FormattedMessage,{id:"add_incoming_webhook.channel",defaultMessage:"Channel"})),m().createElement("div",{className:"col-md-5 col-sm-8"},m().createElement(Se,{value:this.state.channelId,onChange:this.updateChannelId,selectOpen:!0,selectPrivate:!0,selectDm:!1}),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_incoming_webhook.channel.help",defaultMessage:"This is the default public or private channel that receives the webhook payloads. When setting up the webhook, you must belong to the private channel."})))),m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"channelLocked"},m().createElement(E.FormattedMessage,{id:"add_incoming_webhook.channelLocked",defaultMessage:"Lock to this channel"})),m().createElement("div",{className:"col-md-5 col-sm-8 checkbox"},m().createElement("input",{id:"channelLocked",type:"checkbox",checked:this.state.channelLocked,onChange:this.updateChannelLocked}),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_incoming_webhook.channelLocked.help",defaultMessage:"If set, the incoming webhook can post only to the selected channel."})))),this.props.enablePostUsernameOverride&&m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"username"},m().createElement(E.FormattedMessage,{id:"add_incoming_webhook.username",defaultMessage:"Username"})),m().createElement("div",{className:"col-md-5 col-sm-8"},m().createElement("input",{id:"username",type:"text",maxLength:22,className:"form-control",value:this.state.username,onChange:this.updateUsername}),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_incoming_webhook.username.help",defaultMessage:'Specify the username this integration will post as. Usernames can be up to 22 characters, and can contain lowercase letters, numbers and the symbols \\"-\\", \\"_\\", and \\".\\". If left blank, the name specified by the webhook creator is used.'})))),this.props.enablePostIconOverride&&m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"iconURL"},m().createElement(E.FormattedMessage,{id:"add_incoming_webhook.icon_url",defaultMessage:"Profile Picture"})),m().createElement("div",{className:"col-md-5 col-sm-8"},m().createElement("input",{id:"iconURL",type:"text",maxLength:1024,className:"form-control",value:this.state.iconURL,onChange:this.updateIconURL}),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_incoming_webhook.icon_url.help",defaultMessage:"Enter the URL of a .png or .jpg file for the profile picture of this integration when posting. The file should be at least 128 pixels by 128 pixels. If left blank, the profile picture specified by the webhook creator is used."})))),m().createElement("div",{className:"backstage-form__footer"},m().createElement($.Z,{type:"backstage",errors:[this.props.serverError,this.state.clientError]}),m().createElement(n.Link,{className:"btn btn-tertiary",to:"/".concat(this.props.team.name,"/integrations/incoming_webhooks")},m().createElement(E.FormattedMessage,{id:"add_incoming_webhook.cancel",defaultMessage:"Cancel"})),m().createElement(ee.Z,{className:"btn btn-primary",type:"submit",spinning:this.state.saving,spinningText:(0,M._u)({id:this.props.loading.id,defaultMessage:this.props.loading.defaultMessage}),onClick:e=>this.handleSubmit(e),id:"saveWebhook"},m().createElement(E.FormattedMessage,{id:t.id,defaultMessage:t.defaultMessage}))))))}}const Fe=(0,E.defineMessages)({footer:{id:"add_incoming_webhook.save",defaultMessage:"Save"},header:{id:"integrations.add",defaultMessage:"Add"},loading:{id:"add_incoming_webhook.saving",defaultMessage:"Saving..."}}),Pe=e=>{let{team:t,enablePostUsernameOverride:a,enablePostIconOverride:s,actions:n}=e;const[o,r]=(0,d.useState)(""),i=(0,d.useCallback)((async e=>{r("");const{data:a,error:s}=await n.createIncomingHook(e);a?(0,te.s)().push("/".concat(t.name,"/integrations/confirm?type=incoming_webhooks&id=").concat(a.id)):s&&r(s.message)}),[n,t.name]);return m().createElement(Te,{team:t,header:Fe.header,footer:Fe.footer,loading:Fe.loading,enablePostUsernameOverride:a,enablePostIconOverride:s,action:i,serverError:o})};Pe.propTypes={enablePostUsernameOverride:b().bool.isRequired,enablePostIconOverride:b().bool.isRequired,actions:b().shape({createIncomingHook:b().func.isRequired}).isRequired};const Ie=(0,d.memo)(Pe),Re=(0,s.connect)((function(e){const t=(0,r.iE)(e);return{enablePostUsernameOverride:"true"===t.EnablePostUsernameOverride,enablePostIconOverride:"true"===t.EnablePostIconOverride}}),(function(e){return{actions:(0,g.bindActionCreators)({createIncomingHook:ve.ct},e)}}))(Ie);function xe(e,t,a){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var a=e[Symbol.toPrimitive];if(void 0!==a){var s=a.call(e,"string");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class je extends m().PureComponent{constructor(e){super(e),xe(this,"getStateFromApp",(e=>({name:e.name||"",description:e.description||"",homepage:e.homepage||"",icon_url:e.icon_url||"",callbackUrls:e.callback_urls?e.callback_urls.join("\n"):"",is_trusted:e.is_trusted||!1,has_icon:Boolean(e.icon_url),saving:!1,clientError:null}))),xe(this,"imageLoaded",(()=>{var e;null!==(e=this.icon_url.current)&&void 0!==e&&e.value&&this.setState({has_icon:!0,icon_url:this.icon_url.current.value})})),xe(this,"handleSubmit",(e=>{if(e.preventDefault(),this.state.saving)return;if(this.setState({saving:!0,clientError:""}),!this.state.name)return void this.setState({saving:!1,clientError:m().createElement(E.FormattedMessage,{id:"add_oauth_app.nameRequired",defaultMessage:"Name for the OAuth 2.0 application is required."})});if(!this.state.description)return void this.setState({saving:!1,clientError:m().createElement(E.FormattedMessage,{id:"add_oauth_app.descriptionRequired",defaultMessage:"Description for the OAuth 2.0 application is required."})});if(!this.state.homepage)return void this.setState({saving:!1,clientError:m().createElement(E.FormattedMessage,{id:"add_oauth_app.homepageRequired",defaultMessage:"Homepage for the OAuth 2.0 application is required."})});const t=[];for(let e of this.state.callbackUrls.split("\n"))e=e.trim(),e.length>0&&t.push(e);if(0===t.length)return void this.setState({saving:!1,clientError:m().createElement(E.FormattedMessage,{id:"add_oauth_app.callbackUrlsRequired",defaultMessage:"One or more callback URLs are required."})});const a={name:this.state.name,callback_urls:t,homepage:this.state.homepage,description:this.state.description,is_trusted:this.state.is_trusted,icon_url:this.state.icon_url};this.props.action(a).then((()=>this.setState({saving:!1})))})),xe(this,"updateName",(e=>{this.setState({name:e.target.value})})),xe(this,"updateTrusted",(e=>{this.setState({is_trusted:"true"===e.target.value})})),xe(this,"updateDescription",(e=>{this.setState({description:e.target.value})})),xe(this,"updateHomepage",(e=>{this.setState({homepage:e.target.value})})),xe(this,"updateIconUrl",(e=>{this.setState({has_icon:!1,icon_url:e.target.value}),this.image.src=e.target.value})),xe(this,"updateCallbackUrls",(e=>{this.setState({callbackUrls:e.target.value})})),this.image=new Image,this.image.onload=this.imageLoaded,this.icon_url=m().createRef(),this.state=this.getStateFromApp(this.props.initialApp||{})}render(){var e,t;const a=this.props.header,s=this.props.footer,r=this.props.renderExtra;let i;this.state.has_icon&&(i=m().createElement("div",{className:"integration__icon"},m().createElement("img",{alt:"integration icon",src:this.state.icon_url})));const l=m().createElement(ie.Z,{permissions:[o.Pl.MANAGE_SYSTEM]},m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"is_trusted"},m().createElement(E.FormattedMessage,{id:"installed_oauth_apps.trusted",defaultMessage:"Is Trusted"})),m().createElement("div",{className:"col-md-5 col-sm-8"},m().createElement("label",{className:"radio-inline"},m().createElement("input",{type:"radio",value:"true",name:"is_trusted",checked:this.state.is_trusted,onChange:this.updateTrusted}),m().createElement(E.FormattedMessage,{id:"installed_oauth_apps.trusted.yes",defaultMessage:"Yes"})),m().createElement("label",{className:"radio-inline"},m().createElement("input",{type:"radio",value:"false",name:"is_trusted",checked:!this.state.is_trusted,onChange:this.updateTrusted}),m().createElement(E.FormattedMessage,{id:"installed_oauth_apps.trusted.no",defaultMessage:"No"})),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_oauth_app.trusted.help",defaultMessage:"If true, the OAuth 2.0 application is considered trusted by the Mattermost server and does not require the user to accept authorization. If false, a window opens to ask the user to accept or deny the authorization."})))));return m().createElement("div",{className:"backstage-content"},m().createElement(X,null,m().createElement(n.Link,{to:"/".concat(this.props.team.name,"/integrations/oauth2-apps")},m().createElement(E.FormattedMessage,{id:"installed_oauth_apps.header",defaultMessage:"Installed OAuth2 Apps"})),m().createElement(E.FormattedMessage,{id:a.id,defaultMessage:a.defaultMessage})),m().createElement("div",{className:"backstage-form"},i,m().createElement("form",{className:"form-horizontal"},l,m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"name"},m().createElement(E.FormattedMessage,{id:"installed_oauth_apps.name",defaultMessage:"Display Name"})),m().createElement("div",{className:"col-md-5 col-sm-8"},m().createElement("input",{id:"name",type:"text",maxLength:64,className:"form-control",value:this.state.name,onChange:this.updateName}),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_oauth_app.name.help",defaultMessage:"Specify the display name, of up to 64 characters, for your OAuth 2.0 application."})))),m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"description"},m().createElement(E.FormattedMessage,{id:"installed_oauth_apps.description",defaultMessage:"Description"})),m().createElement("div",{className:"col-md-5 col-sm-8"},m().createElement("input",{id:"description",type:"text",maxLength:512,className:"form-control",value:this.state.description,onChange:this.updateDescription}),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_oauth_app.description.help",defaultMessage:"Describe your OAuth 2.0 application."})))),m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"homepage"},m().createElement(E.FormattedMessage,{id:"installed_oauth_apps.homepage",defaultMessage:"Homepage"})),m().createElement("div",{className:"col-md-5 col-sm-8"},m().createElement("input",{id:"homepage",type:"url",maxLength:256,className:"form-control",value:this.state.homepage,onChange:this.updateHomepage}),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_oauth_app.homepage.help",defaultMessage:"This is the URL for the homepage of the OAuth 2.0 application. Depending on your server configuration, use HTTP or HTTPS in the URL."})))),m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"icon_url"},m().createElement(E.FormattedMessage,{id:"installed_oauth_apps.iconUrl",defaultMessage:"Icon URL"})),m().createElement("div",{className:"col-md-5 col-sm-8"},m().createElement("input",{id:"icon_url",ref:this.icon_url,type:"url",maxLength:512,className:"form-control",value:this.state.icon_url,onChange:this.updateIconUrl}),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_oauth_app.icon.help",defaultMessage:"(Optional) The URL of the image used for your OAuth 2.0 application. Make sure you use HTTP or HTTPS in your URL."})))),m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"callbackUrls"},m().createElement(E.FormattedMessage,{id:"installed_oauth_apps.callbackUrls",defaultMessage:"Callback URLs (One Per Line)"})),m().createElement("div",{className:"col-md-5 col-sm-8"},m().createElement("textarea",{id:"callbackUrls",rows:3,maxLength:1024,className:"form-control",value:this.state.callbackUrls,onChange:this.updateCallbackUrls}),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_oauth_app.callbackUrls.help",defaultMessage:"The redirect URIs to which the service will redirect users after accepting or denying authorization of your application, and which will handle authorization codes or access tokens. Must be a valid URL and start with http:// or https://."})))),m().createElement("div",{className:"backstage-form__footer"},m().createElement($.Z,{type:"backstage",errors:[this.props.serverError,this.state.clientError]}),m().createElement(n.Link,{className:"btn btn-tertiary",to:"/".concat(this.props.team.name,"/integrations/oauth2-apps")},m().createElement(E.FormattedMessage,{id:"installed_oauth_apps.cancel",defaultMessage:"Cancel"})),m().createElement(ee.Z,{className:"btn btn-primary",type:"submit",spinning:this.state.saving,spinningText:(0,M._u)({id:(null===(e=this.props.loading)||void 0===e?void 0:e.id)||"",defaultMessage:(null===(t=this.props.loading)||void 0===t?void 0:t.defaultMessage)||""}),onClick:this.handleSubmit,id:"saveOauthApp"},m().createElement(E.FormattedMessage,{id:s.id,defaultMessage:s.defaultMessage})),r))))}}xe(je,"propTypes",{renderExtra:b().element,serverError:b().string.isRequired,action:b().func.isRequired});const Ue=(0,E.defineMessages)({footer:{id:"installed_oauth_apps.save",defaultMessage:"Save"},header:{id:"add_oauth_app.header",defaultMessage:"Add"},loading:{id:"installed_oauth_apps.saving",defaultMessage:"Saving..."}}),De=e=>{let{team:t,actions:a}=e;const s=(0,n.useHistory)(),[o,r]=(0,d.useState)("");return m().createElement(je,{team:t,header:Ue.header,footer:Ue.footer,loading:Ue.loading,action:async e=>{r("");const{data:n,error:o}=await a.addOAuthApp(e);n?s.push("/".concat(t.name,"/integrations/confirm?type=oauth2-apps&id=").concat(n.id)):o&&r(o.message)},serverError:o})};De.propTypes={actions:b().shape({addOAuthApp:b().func.isRequired}).isRequired};const Le=De,qe=(0,s.connect)(null,(function(e){return{actions:(0,g.bindActionCreators)({addOAuthApp:ve.eo},e)}}))(Le);function He(e,t,a){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var a=e[Symbol.toPrimitive];if(void 0!==a){var s=a.call(e,"string");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}a(32081);class We extends m().PureComponent{constructor(e){super(e),He(this,"getStateFromHook",(e=>{let t="";if(null!=e&&e.trigger_words){let a=0;for(a=0;a{var t,a,s,n,o,r;if(e.preventDefault(),this.state.saving)return;this.setState({saving:!0,clientError:null});const i=[];if(this.state.triggerWords)for(let e of this.state.triggerWords.split("\n"))e=e.trim(),e.length>0&&i.push(e);if(!this.state.channelId&&0===i.length)return void this.setState({saving:!1,clientError:m().createElement(E.FormattedMessage,{id:"add_outgoing_webhook.triggerWordsOrChannelRequired",defaultMessage:"A valid channel or a list of trigger words is required"})});const l=[];for(let e of this.state.callbackUrls.split("\n"))e=e.trim(),e.length>0&&l.push(e);if(0===l.length)return void this.setState({saving:!1,clientError:m().createElement(E.FormattedMessage,{id:"add_outgoing_webhook.callbackUrlsRequired",defaultMessage:"One or more callback URLs are required"})});const c={team_id:this.props.team.id,channel_id:this.state.channelId,trigger_words:i,trigger_when:this.state.triggerWhen,callback_urls:l,display_name:this.state.displayName,content_type:this.state.contentType,description:this.state.description,username:this.state.username,icon_url:this.state.iconURL,id:(null===(t=this.props.initialHook)||void 0===t?void 0:t.id)||"",create_at:(null===(a=this.props.initialHook)||void 0===a?void 0:a.create_at)||0,update_at:(null===(s=this.props.initialHook)||void 0===s?void 0:s.update_at)||0,delete_at:(null===(n=this.props.initialHook)||void 0===n?void 0:n.delete_at)||0,creator_id:(null===(o=this.props.initialHook)||void 0===o?void 0:o.creator_id)||"",token:(null===(r=this.props.initialHook)||void 0===r?void 0:r.token)||""};this.props.action(c).then((()=>this.setState({saving:!1})))})),He(this,"updateDisplayName",(e=>{this.setState({displayName:e.target.value})})),He(this,"updateDescription",(e=>{this.setState({description:e.target.value})})),He(this,"updateContentType",(e=>{this.setState({contentType:e.target.value})})),He(this,"updateChannelId",(e=>{this.setState({channelId:e.target.value})})),He(this,"updateTriggerWords",(e=>{this.setState({triggerWords:e.target.value})})),He(this,"updateTriggerWhen",(e=>{this.setState({triggerWhen:parseInt(e.target.value,10)})})),He(this,"updateCallbackUrls",(e=>{this.setState({callbackUrls:e.target.value})})),He(this,"updateUsername",(e=>{this.setState({username:e.target.value})})),He(this,"updateIconURL",(e=>{this.setState({iconURL:e.target.value})})),this.state=this.getStateFromHook(this.props.initialHook)}render(){const e="application/x-www-form-urlencoded",t="application/json",a=this.props.header,s=this.props.footer,o=this.props.renderExtra;return m().createElement("div",{className:"backstage-content"},m().createElement(X,null,m().createElement(n.Link,{to:"/".concat(this.props.team.name,"/integrations/outgoing_webhooks")},m().createElement(E.FormattedMessage,{id:"add_outgoing_webhook.header",defaultMessage:"Outgoing Webhooks"})),m().createElement(E.FormattedMessage,{id:a.id,defaultMessage:a.defaultMessage})),m().createElement("div",{className:"backstage-form"},m().createElement("form",{className:"form-horizontal",onSubmit:this.handleSubmit},m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"displayName"},m().createElement(E.FormattedMessage,{id:"add_outgoing_webhook.displayName",defaultMessage:"Title"})),m().createElement("div",{className:"col-md-5 col-sm-8"},m().createElement("input",{id:"displayName",type:"text",maxLength:64,className:"form-control",value:this.state.displayName,onChange:this.updateDisplayName}),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_outgoing_webhook.displayName.help",defaultMessage:"Specify a title, of up to 64 characters, for the webhook settings page."})))),m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"description"},m().createElement(E.FormattedMessage,{id:"add_outgoing_webhook.description",defaultMessage:"Description"})),m().createElement("div",{className:"col-md-5 col-sm-8"},m().createElement("input",{id:"description",type:"text",maxLength:500,className:"form-control",value:this.state.description,onChange:this.updateDescription}),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_outgoing_webhook.description.help",defaultMessage:"Describe your outgoing webhook."})))),m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"contentType"},m().createElement(E.FormattedMessage,{id:"add_outgoing_webhook.content_Type",defaultMessage:"Content Type"})),m().createElement("div",{className:"col-md-5 col-sm-8"},m().createElement("select",{className:"form-control",value:this.state.contentType,onChange:this.updateContentType},m().createElement("option",{value:e},e),m().createElement("option",{value:t},t)),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_outgoing_webhook.contentType.help1",defaultMessage:"Specify the content type by which to send the request."})),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_outgoing_webhook.contentType.help2",defaultMessage:"For the server to encode the parameters in a URL format in the request body, select application/x-www-form-urlencoded."})),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_outgoing_webhook.contentType.help3",defaultMessage:"For the server to format the request body as JSON, select application/json."})))),m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"channelId"},m().createElement(E.FormattedMessage,{id:"add_outgoing_webhook.channel",defaultMessage:"Channel"})),m().createElement("div",{className:"col-md-5 col-sm-8"},m().createElement(Se,{value:this.state.channelId,onChange:this.updateChannelId,selectOpen:!0,selectPrivate:!1,selectDm:!1}),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_outgoing_webhook.channel.help",defaultMessage:"This field is optional if you specify at least one trigger word. Specify the public channel that delivers the payload to the webhook."})))),m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"triggerWords"},m().createElement(E.FormattedMessage,{id:"add_outgoing_webhook.triggerWords",defaultMessage:"Trigger Words (One Per Line)"})),m().createElement("div",{className:"col-md-5 col-sm-8"},m().createElement("textarea",{id:"triggerWords",rows:3,maxLength:1e3,className:"form-control",value:this.state.triggerWords,onChange:this.updateTriggerWords}),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_outgoing_webhook.triggerWords.help",defaultMessage:"Specify the trigger words that send an HTTP POST request to your application. The trigger can be for the channel, the outgoing webhook, or both. If you select only Channel, trigger words are optional. If you select both, the message must match both values."})))),m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"triggerWords"},m().createElement(E.FormattedMessage,{id:"add_outgoing_webhook.triggerWordsTriggerWhen",defaultMessage:"Trigger When"})),m().createElement("div",{className:"col-md-5 col-sm-8"},m().createElement("select",{id:"triggerWhen",className:"form-control",value:this.state.triggerWhen,onChange:this.updateTriggerWhen},m().createElement("option",{value:"0"},(0,M._u)({id:"add_outgoing_webhook.triggerWordsTriggerWhenFullWord",defaultMessage:"First word matches a trigger word exactly"})),m().createElement("option",{value:"1"},(0,M._u)({id:"add_outgoing_webhook.triggerWordsTriggerWhenStartsWith",defaultMessage:"First word starts with a trigger word"}))),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_outgoing_webhook.triggerWordsTriggerWhen.help",defaultMessage:"Specify when to trigger the outgoing webhook."})))),m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"callbackUrls"},m().createElement(E.FormattedMessage,{id:"add_outgoing_webhook.callbackUrls",defaultMessage:"Callback URLs (One Per Line)"})),m().createElement("div",{className:"col-md-5 col-sm-8"},m().createElement("textarea",{id:"callbackUrls",rows:3,maxLength:1e3,className:"form-control",value:this.state.callbackUrls,onChange:this.updateCallbackUrls}),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_outgoing_webhook.callbackUrls.help",defaultMessage:"Specify the URL that the messages will be sent to. If the URL is private, add it as a {link}.",values:{link:m().createElement(re.Z,{href:ae.qB.TRUSTED_CONNECTION,location:"abstract_outgoing_webhook"},m().createElement(E.FormattedMessage,{id:"add_outgoing_webhook.callbackUrls.helpLinkText",defaultMessage:"trusted internal connection"}))}})))),this.props.enablePostUsernameOverride&&m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"username"},m().createElement(E.FormattedMessage,{id:"add_outgoing_webhook.username",defaultMessage:"Username"})),m().createElement("div",{className:"col-md-5 col-sm-8"},m().createElement("input",{id:"username",type:"text",maxLength:22,className:"form-control",value:this.state.username,onChange:this.updateUsername}),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_outgoing_webhook.username.help",defaultMessage:'Specify the username this integration will post as. Usernames can be up to 22 characters, and contain lowercase letters, numbers and the symbols \\"-\\", \\"_\\", and \\".\\". If left blank, the name specified by the webhook creator is used.'})))),this.props.enablePostIconOverride&&m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"iconURL"},m().createElement(E.FormattedMessage,{id:"add_outgoing_webhook.icon_url",defaultMessage:"Profile Picture"})),m().createElement("div",{className:"col-md-5 col-sm-8"},m().createElement("input",{id:"iconURL",type:"text",maxLength:1024,className:"form-control",value:this.state.iconURL,onChange:this.updateIconURL}),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_outgoing_webhook.icon_url.help",defaultMessage:"Enter the URL of a .png or .jpg file for this integration to use as the profile picture when posting. The file should be at least 128 pixels by 128 pixels. If left blank, the profile picture specified by the webhook creator is used."})))),m().createElement("div",{className:"backstage-form__footer"},m().createElement($.Z,{type:"backstage",errors:[this.props.serverError,this.state.clientError]}),m().createElement(n.Link,{className:"btn btn-tertiary",to:"/".concat(this.props.team.name,"/integrations/outgoing_webhooks")},m().createElement(E.FormattedMessage,{id:"add_outgoing_webhook.cancel",defaultMessage:"Cancel"})),m().createElement(ee.Z,{className:"btn btn-primary",type:"submit",spinning:this.state.saving,spinningText:(0,M._u)({id:this.props.loading.id,defaultMessage:this.props.loading.defaultMessage}),onClick:this.handleSubmit,id:"saveWebhook"},m().createElement(E.FormattedMessage,{id:s.id,defaultMessage:s.defaultMessage})),o))))}}const Be=(0,E.defineMessages)({footer:{id:"add_outgoing_webhook.save",defaultMessage:"Save"},header:{id:"integrations.add",defaultMessage:"Add"},loading:{id:"add_outgoing_webhook.saving",defaultMessage:"Saving..."}}),Ze=e=>{let{team:t,actions:a,enablePostUsernameOverride:s,enablePostIconOverride:o}=e;const r=(0,n.useHistory)(),[i,l]=(0,d.useState)("");return m().createElement(We,{team:t,header:Be.header,footer:Be.footer,loading:Be.loading,renderExtra:"",action:async e=>{l("");const{data:s,error:n}=await a.createOutgoingHook(e);s?r.push("/".concat(t.name,"/integrations/confirm?type=outgoing_webhooks&id=").concat(s.id)):n&&l(n.message)},serverError:i,enablePostUsernameOverride:s,enablePostIconOverride:o})};Ze.propTypes={actions:b().shape({createOutgoingHook:b().func.isRequired}).isRequired,enablePostUsernameOverride:b().bool.isRequired,enablePostIconOverride:b().bool.isRequired};const Ge=Ze,Ye=(0,s.connect)((function(e){const t=(0,r.iE)(e);return{enablePostUsernameOverride:"true"===t.EnablePostUsernameOverride,enablePostIconOverride:"true"===t.EnablePostIconOverride}}),(function(e){return{actions:(0,g.bindActionCreators)({createOutgoingHook:ve.M1},e)}}))(Ge);a(73902);var ze=a(10883),Ve=a(98644);function Je(e){return(0,Ve.Vs)({clientFunc:N.je.createBot,onSuccess:ze.Jv.RECEIVED_BOT_ACCOUNT,params:[e]})}function Ke(e,t){return(0,Ve.Vs)({clientFunc:N.je.patchBot,onSuccess:ze.Jv.RECEIVED_BOT_ACCOUNT,params:[e,t]})}function Qe(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:20;return(0,Ve.Vs)({clientFunc:N.je.getBotsIncludeDeleted,onSuccess:ze.Jv.RECEIVED_BOT_ACCOUNTS,params:[e,t]})}function Xe(e){return(0,Ve.Vs)({clientFunc:N.je.disableBot,onSuccess:ze.Jv.RECEIVED_BOT_ACCOUNT,params:[e]})}function $e(e){return(0,Ve.Vs)({clientFunc:N.je.enableBot,onSuccess:ze.Jv.RECEIVED_BOT_ACCOUNT,params:[e]})}var et=a(31435),tt=a(4586),at=a(4514);function st(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,s)}return a}function nt(e){for(var t=1;tObject.keys(t).map((e=>t[e])).filter((t=>t.team_id===e)))),ut=(0,Me.P1)("getAppsOAuthAppIDs",tt.D8,(e=>e.entities.integrations.appsOAuthAppIDs),((e,t)=>e?t:[])),gt=(0,Me.P1)("getAppsBotIDs",tt.D8,(e=>e.entities.integrations.appsBotIDs),((e,t)=>e?t:[]));(0,Me.P1)("getOutgoingHooksInCurrentTeam",l.ev,it,((e,t)=>Object.values(t).filter((t=>t.team_id===e))));const pt=(0,Me.P1)("getAllCommands",lt,(function(e){return e.entities.integrations.systemCommands}),((e,t)=>nt(nt({},e),t)));(0,Me.P1)("getAutocompleteCommandsList",pt,l.ev,((e,t)=>Object.values(e).filter((e=>e&&(!e.team_id||e.team_id===t)&&e.auto_complete)).sort(((e,t)=>e.display_name.localeCompare(t.display_name))))),a(95623),a(61514);const ht=["searchPlaceholder"];function ft(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,s)}return a}function bt(e){for(var t=1;t{let{searchPlaceholder:t=(0,M._u)({id:"backstage_list.search",defaultMessage:"Search"})}=e,a=function(e,t){if(null==e)return{};var a,s,n=function(e,t){if(null==e)return{};var a,s,n={},o=Object.keys(e);for(s=0;s=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(s=0;s=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}(e,ht);const{formatMessage:s}=(0,E.useIntl)(),[o,r]=(0,d.useState)(""),i=o.toLowerCase();let l=[],c=0;if(a.loading)l=[m().createElement(U.Z,{key:"loading"})];else{let e=!0;"function"==typeof a.children?[l,e]=a.children(i):l=a.children,l=m().Children.map(l,(e=>m().cloneElement(e,{filterLowered:i}))),0!==l.length&&e?c=l.length:i?a.emptyTextSearch&&(l=[m().createElement("div",{className:"backstage-list__item backstage-list__empty",id:"emptySearchResultsMessage",key:"emptyTextSearch"},m().cloneElement(a.emptyTextSearch,{values:bt(bt({},a.emptyTextSearch.props.values),{},{searchTerm:i})}))]):a.emptyText&&(l=[m().createElement("div",{className:"backstage-list__item backstage-list__empty",key:"emptyText"},a.emptyText)])}let u=null;a.addLink&&a.addText&&(u=m().createElement(n.Link,{className:"add-link",to:a.addLink},m().createElement("button",{type:"button",className:"btn btn-primary",id:a.addButtonId},m().createElement("span",null,a.addText))));const g=o.length>0,{startCount:p,endCount:h,total:f,isFirstPage:b,isLastPage:_}=((e,t,a)=>{const s=a||!e.page?0:e.page,n=a||!e.pageSize?t:e.pageSize,o=a||!e.total?t:e.total;let r=s*n+1,i=(s+1)*n;return i=i>o?o:i,0===i&&(r=0),{startCount:r,endCount:i,total:o,isFirstPage:r<=1,isLastPage:i>=o}})(a,c,g),v=c>0?l.slice(p-1,h):l;let k=a.previousPage,y=a.nextPage;return b&&(k=()=>{}),_&&(y=()=>{}),m().createElement("div",{className:"backstage-content"},m().createElement("div",{className:"backstage-header"},m().createElement("h1",null,a.header),u),m().createElement("div",{className:"backstage-filters"},m().createElement("div",{className:"backstage-filter__search"},m().createElement(H.Z,null),m().createElement("input",{type:"search",className:"form-control",placeholder:t,value:o,onChange:e=>r(e.target.value),id:"searchInput"}))),m().createElement("span",{className:"backstage-list__help"},a.helpText),m().createElement("div",{className:"backstage-list"},v),m().createElement("div",{className:"backstage-footer"},m().createElement("div",{className:"backstage-footer__cell"},m().createElement(E.FormattedMessage,{id:"backstage_list.paginatorCount",defaultMessage:"{startCount, number} - {endCount, number} of {total, number}",values:{startCount:p,endCount:h,total:f}}),m().createElement("button",{type:"button",className:"btn btn-quaternary btn-icon btn-sm ml-2 prev "+(b?"disabled":""),onClick:k,"aria-label":s({id:"backstage_list.previousButton.ariaLabel",defaultMessage:"Previous"})},m().createElement(q.Z,null)),m().createElement("button",{type:"button",className:"btn btn-quaternary btn-icon btn-sm next "+(_?"disabled":""),onClick:y,"aria-label":s({id:"backstage_list.nextButton.ariaLabel",defaultMessage:"Next"})},m().createElement(L.Z,null)))))};var vt=a(6564),Mt=a(27468);function kt(e,t,a){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var a=e[Symbol.toPrimitive];if(void 0!==a){var s=a.call(e,"string");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function yt(e,t,a){if(!t)return!0;const s=e.username||"",n=e.description||"",o=e.display_name||"";let r="plugin";return a&&a.username&&(r=a.username),!(-1===s.toLowerCase().indexOf(t)&&-1===o.toLowerCase().indexOf(t)&&-1===n.toLowerCase().indexOf(t)&&-1===r.toLowerCase().indexOf(t))}class Nt extends m().PureComponent{constructor(e){super(e),kt(this,"enableBot",(()=>{this.props.actions.enableBot(this.props.bot.user_id)})),kt(this,"disableBot",(()=>{this.props.actions.disableBot(this.props.bot.user_id)})),kt(this,"enableUserAccessToken",(e=>{this.props.actions.enableUserAccessToken(e)})),kt(this,"disableUserAccessToken",(e=>{this.props.actions.disableUserAccessToken(e)})),kt(this,"confirmRevokeToken",(e=>{this.setState({confirmingId:e})})),kt(this,"revokeTokenConfirmed",(()=>{this.props.actions.revokeUserAccessToken(this.state.confirmingId),this.closeConfirm()})),kt(this,"closeConfirm",(()=>{this.setState({confirmingId:""})})),kt(this,"openCreateToken",(()=>{this.setState({creatingTokenState:"OPEN",token:{description:""}})})),kt(this,"closeCreateToken",(()=>{this.setState({creatingTokenState:"CLOSED",token:{description:""}})})),kt(this,"handleUpdateDescription",(e=>{const t=e.target;this.setState({token:Object.assign({},this.state.token,{description:t.value})})})),kt(this,"handleCreateToken",(async e=>{if(e.preventDefault(),""===this.state.token.description)return void this.setState({error:m().createElement(E.FormattedMessage,{id:"bot.token.error.description",defaultMessage:"Please enter a description."})});const{data:t,error:a}=await this.props.actions.createUserAccessToken(this.props.bot.user_id,this.state.token.description);t?this.setState({creatingTokenState:"CREATED",token:t}):a&&this.setState({error:a.message})})),this.state={confirmingId:"",creatingTokenState:"CLOSED",token:{},error:""}}render(){const e=this.props.bot.username||"",t=this.props.bot.description||"",a=this.props.bot.display_name||"";let s="plugin";this.props.fromApp?s="Apps Framework":this.props.owner&&this.props.owner.username&&(s=this.props.owner.username);const o=this.props.filter?this.props.filter.toLowerCase():"";if(!yt(this.props.bot,o,this.props.owner))return null;const r=[];let i;Object.values(this.props.accessTokens).forEach((e=>{let t,a,s="";e.is_active?t=m().createElement("a",{id:e.id+"_deactivate",href:"#",onClick:t=>{t.preventDefault(),this.disableUserAccessToken(e.id)}},m().createElement(E.FormattedMessage,{id:"user.settings.tokens.deactivate",defaultMessage:"Disable"})):(s="light",a=m().createElement("span",{className:"mr-2 light"},m().createElement(E.FormattedMessage,{id:"user.settings.tokens.deactivatedWarning",defaultMessage:"(Disabled)"})),t=m().createElement("a",{id:e.id+"_activate",href:"#",onClick:t=>{t.preventDefault(),this.enableUserAccessToken(e.id)}},m().createElement(E.FormattedMessage,{id:"user.settings.tokens.activate",defaultMessage:"Enable"}))),r.push(m().createElement("div",{key:e.id,className:"bot-list__item"},m().createElement("div",{className:"item-details__row d-flex justify-content-between"},m().createElement("div",{className:s},m().createElement("div",{className:"whitespace--nowrap overflow--ellipsis"},m().createElement("b",null,m().createElement(E.FormattedMessage,{id:"user.settings.tokens.tokenDesc",defaultMessage:"Token Description: "})),e.description),m().createElement("div",{className:"setting-box__token-id whitespace--nowrap overflow--ellipsis"},m().createElement("b",null,m().createElement(E.FormattedMessage,{id:"user.settings.tokens.tokenId",defaultMessage:"Token ID: "})),e.id)),m().createElement("div",null,a,t," - ",m().createElement("a",{id:e.id+"_delete",href:"#",onClick:t=>{t.preventDefault(),this.confirmRevokeToken(e.id)}},m().createElement(E.FormattedMessage,{id:"user.settings.tokens.delete",defaultMessage:"Delete"}))))))})),"plugin"!==s&&(i=m().createElement("div",{className:"item-actions"},m().createElement("button",{id:"createToken",className:"style--none color--link",onClick:this.openCreateToken},m().createElement(E.FormattedMessage,{id:"bot.manage.create_token",defaultMessage:"Create New Token"}))," - ",m().createElement(n.Link,{to:"/".concat(this.props.team.name,"/integrations/bots/edit?id=").concat(this.props.bot.user_id)},m().createElement(E.FormattedMessage,{id:"bots.manage.edit",defaultMessage:"Edit"}))," - ",m().createElement("button",{className:"style--none color--link",onClick:this.disableBot},m().createElement(E.FormattedMessage,{id:"bot.manage.disable",defaultMessage:"Disable"})))),0!==this.props.bot.delete_at&&(i=m().createElement("div",{className:"item-actions"},m().createElement("button",{className:"style--none color--link",onClick:this.enableBot},m().createElement(E.FormattedMessage,{id:"bot.manage.enable",defaultMessage:"Enable"})))),"OPEN"===this.state.creatingTokenState?r.push(m().createElement("div",{key:"create",className:"bot-list__item"},m().createElement("div",{key:"create"},m().createElement("form",{className:"form-horizontal",onSubmit:this.handleCreateToken},m().createElement("div",{className:"row"},m().createElement("label",{className:"col-sm-auto control-label"},m().createElement(E.FormattedMessage,{id:"user.settings.tokens.name",defaultMessage:"Token Description: "})),m().createElement("div",{className:"col-sm-4"},m().createElement("input",{autoFocus:!0,className:"form-control form-sm",type:"text",maxLength:64,value:this.state.token.description,onChange:this.handleUpdateDescription}))),m().createElement("div",null,m().createElement("div",{className:"pt-2 pb-2"},m().createElement(E.FormattedMessage,{id:"user.settings.tokens.nameHelp",defaultMessage:"Enter a description for your token to remember what it does."})),m().createElement("label",{id:"clientError",className:"has-error is-empty"},this.state.error),m().createElement("div",{className:"mt-2"},m().createElement(D.Z,{btnClass:"btn-sm btn-primary",savingMessage:m().createElement(E.FormattedMessage,{id:"user.settings.tokens.save",defaultMessage:"Save"}),saving:!1}),m().createElement("button",{className:"btn btn-sm btn-tertiary",onClick:this.closeCreateToken},m().createElement(E.FormattedMessage,{id:"user.settings.tokens.cancel",defaultMessage:"Cancel"})))))))):"CREATED"===this.state.creatingTokenState&&r.push(m().createElement("div",{key:"created",className:"bot-list__item alert alert-warning"},m().createElement("div",{className:"mb-2"},m().createElement(O.Z,{additionalClassName:"mr-2"}),m().createElement(E.FormattedMessage,{id:"user.settings.tokens.copy",defaultMessage:"Please copy the access token below. You won't be able to see it again!"})),m().createElement("div",{className:"whitespace--nowrap overflow--ellipsis"},m().createElement(E.FormattedMessage,{id:"user.settings.tokens.name",defaultMessage:"Token Description: "}),this.state.token.description),m().createElement("div",{className:"whitespace--nowrap overflow--ellipsis"},m().createElement(E.FormattedMessage,{id:"user.settings.tokens.id",defaultMessage:"Token ID: "}),this.state.token.id),m().createElement("strong",{className:"word-break--all"},m().createElement(E.FormattedMessage,{id:"user.settings.tokens.token",defaultMessage:"Access Token: "}),this.state.token.token),m().createElement("div",{className:"mt-2"},m().createElement("button",{className:"btn btn-sm btn-primary",onClick:this.closeCreateToken},m().createElement(E.FormattedMessage,{id:"bot.create_token.close",defaultMessage:"Close"})))));const l=M.bb(this.props.user.id,this.props.user.last_picture_update);return m().createElement("div",{className:"backstage-list__item"},m().createElement("div",{className:"bot-list-img-container"},m().createElement("img",{className:"bot-list-img",alt:"bot image",src:l})),m().createElement("div",{className:"item-details"},m().createElement("div",{className:"item-details__row d-flex flex-column flex-md-row justify-content-between"},m().createElement("strong",{className:"item-details__name"},a+" (@"+e+")"),i),m().createElement("div",{className:"bot-details__description"},m().createElement(Mt.Z,{message:t})),m().createElement("div",{className:"light small"},m().createElement(E.FormattedMessage,{id:"bots.managed_by",defaultMessage:"Managed by "}),s),m().createElement("div",{className:"bot-list is-empty"},r)),m().createElement(vt.Z,{title:m().createElement(E.FormattedMessage,{id:"bots.token.delete",defaultMessage:"Delete Token"}),message:m().createElement(E.FormattedMessage,{id:"bots.token.confirm_text",defaultMessage:"Are you sure you want to delete the token?"}),confirmButtonText:m().createElement(E.FormattedMessage,{id:"bots.token.confirm",defaultMessage:"Delete"}),modalClass:"integrations-backstage-modal",show:""!==this.state.confirmingId,onConfirm:this.revokeTokenConfirmed,onCancel:this.closeConfirm}))}}function wt(e,t,a){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var a=e[Symbol.toPrimitive];if(void 0!==a){var s=a.call(e,"string");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class Ct extends m().PureComponent{constructor(e){super(e),wt(this,"botToJSX",(e=>m().createElement(Nt,{key:e.user_id,bot:e,owner:this.props.owners[e.user_id],user:this.props.users[e.user_id],accessTokens:this.props.accessTokens&&this.props.accessTokens[e.user_id]||{},actions:this.props.actions,team:this.props.team,fromApp:this.props.appsBotIDs.includes(e.user_id)}))),wt(this,"bots",(e=>{const t=Object.values(this.props.bots).sort(((e,t)=>e.username.localeCompare(t.username))),a=t=>yt(t,e,this.props.owners[t.user_id]),s=t.filter((e=>0===e.delete_at)).filter(a).map(this.botToJSX),n=t.filter((e=>e.delete_at>0)).filter(a).map(this.botToJSX);return[[m().createElement("div",{key:"sections"},m().createElement(this.EnabledSection,{enabledBots:s}),m().createElement(this.DisabledSection,{hasDisabled:n.length>0,disabledBots:n}))],s.length>0||n.length>0]})),this.state={loading:!0}}componentDidMount(){this.props.actions.loadBots(ae.default.Integrations.START_PAGE_NUM,ae.default.Integrations.PAGE_SIZE).then((e=>{if(e.data){const t=[];for(const a of e.data)this.props.actions.getUser(a.owner_id),t.push(this.props.actions.getUser(a.user_id)),t.push(this.props.actions.getUserAccessTokensForUser(a.user_id));Promise.all(t).then((()=>{this.setState({loading:!1})}))}})),this.props.appsEnabled&&this.props.actions.fetchAppsBotIDs()}DisabledSection(e){if(!e.hasDisabled)return null;const t=m().Children.map(e.disabledBots,(t=>m().cloneElement(t,{filter:e.filter})));return m().createElement(m().Fragment,null,m().createElement("div",{className:"bot-disabled"},m().createElement(E.FormattedMessage,{id:"bots.disabled",defaultMessage:"Disabled"})),m().createElement("div",{className:"bot-list__disabled"},t))}EnabledSection(e){const t=m().Children.map(e.enabledBots,(t=>m().cloneElement(t,{filter:e.filter})));return m().createElement("div",null,t)}render(){return m().createElement(_t,{header:m().createElement(E.FormattedMessage,{id:"bots.manage.header",defaultMessage:"Bot Accounts"}),addText:this.props.createBots&&m().createElement(E.FormattedMessage,{id:"bots.manage.add",defaultMessage:"Add Bot Account"}),addLink:"/"+this.props.team.name+"/integrations/bots/add",addButtonId:"addBotAccount",emptyText:m().createElement(E.FormattedMessage,{id:"bots.manage.empty",defaultMessage:"No bot accounts found"}),emptyTextSearch:m().createElement(E.FormattedMessage,{id:"bots.emptySearch",defaultMessage:"No bot accounts match {searchTerm}",values:{b:e=>m().createElement("b",null,e)}}),helpText:m().createElement(m().Fragment,null,m().createElement(E.FormattedMessage,{id:"bots.manage.help1",defaultMessage:"Use {botAccounts} to integrate with Mattermost through plugins or the API. Bot accounts are available to everyone on your server. ",values:{botAccounts:m().createElement(re.Z,{href:"https://mattermost.com/pl/default-bot-accounts",location:"bots"},m().createElement(E.FormattedMessage,{id:"bots.manage.bot_accounts",defaultMessage:"Bot Accounts"}))}}),m().createElement(E.FormattedMessage,{id:"bots.help2",defaultMessage:"Enable bot account creation in the System Console.",values:{a:e=>m().createElement(n.Link,{to:"/admin_console/integrations/bot_accounts"},e)}})),searchPlaceholder:M._u({id:"bots.manage.search",defaultMessage:"Search Bot Accounts"}),loading:this.state.loading},this.bots)}}wt(Ct,"propTypes",{appsBotIDs:b().arrayOf(b().string).isRequired,appsEnabled:b().bool.isRequired,createBots:b().bool,actions:b().shape({loadBots:b().func.isRequired,getUserAccessTokensForUser:b().func.isRequired,createUserAccessToken:b().func.isRequired,revokeUserAccessToken:b().func.isRequired,enableUserAccessToken:b().func.isRequired,disableUserAccessToken:b().func.isRequired,getUser:b().func.isRequired,disableBot:b().func.isRequired,enableBot:b().func.isRequired,fetchAppsBotIDs:b().func.isRequired}).isRequired});const Ot=(0,s.connect)((function(e){const t="true"===(0,r.iE)(e).EnableBotAccountCreation,a=(0,at.Zh)(e),s=Object.values(a),n=s.reduce(((t,a)=>(t[a.user_id]=c.PR(e,a.owner_id),t)),{}),o=s.reduce(((t,a)=>(t[a.user_id]=c.PR(e,a.user_id),t)),{});return{createBots:t,bots:a,accessTokens:e.entities.admin.userAccessTokensByUser,owners:n,users:o,appsBotIDs:gt(e),appsEnabled:(0,tt.D8)(e)}}),(function(e){return{actions:(0,g.bindActionCreators)({fetchAppsBotIDs:ve.J4,loadBots:Qe,getUserAccessTokensForUser:et.fh,createUserAccessToken:et.CR,revokeUserAccessToken:et.ei,enableUserAccessToken:et.q9,disableUserAccessToken:et.Wv,getUser:et.PR,disableBot:Xe,enableBot:$e},e)}}))(Ct);a(68581),a(70684);var St=a(33115),At=a(34575),Tt=a(99566);function Ft(e,t,a){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var a=e[Symbol.toPrimitive];if(void 0!==a){var s=a.call(e,"string");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}const Pt="System Admin",It="Member";class Rt extends m().PureComponent{constructor(e){super(e),Ft(this,"previewBlob",null),Ft(this,"updateUsername",(e=>{this.setState({username:e.target.value})})),Ft(this,"updateDisplayName",(e=>{this.setState({displayName:e.target.value})})),Ft(this,"updateDescription",(e=>{this.setState({description:e.target.value})})),Ft(this,"updateRole",(e=>{this.setState({role:e.target.value})})),Ft(this,"updatePostAll",(e=>{this.setState({postAll:e.target.checked})})),Ft(this,"updatePostChannels",(e=>{this.setState({postChannels:e.target.checked})})),Ft(this,"updatePicture",(e=>{if(e.target.files&&e.target.files[0]){const t=e.target.files[0];this.previewBlob=URL.createObjectURL(t);const a=new FileReader;a.onload=e=>{var t;const a=Tt.Ii(null===(t=e.target)||void 0===t?void 0:t.result),s=Tt.vl(a);this.setState({image:this.previewBlob||"",orientationStyles:s})},a.readAsArrayBuffer(t),e.target.value="",this.setState({pictureFile:t})}else this.setState({pictureFile:null,image:""})})),Ft(this,"setDefault",(()=>{this.setState({pictureFile:"default",image:ce})})),Ft(this,"updateRoles",(async e=>{let t=o.LQ.SYSTEM_USER_ROLE;this.state.role===Pt?t+=" "+o.LQ.SYSTEM_ADMIN_ROLE:this.state.postAll?t+=" "+o.LQ.SYSTEM_POST_ALL_ROLE:this.state.postChannels&&(t+=" "+o.LQ.SYSTEM_POST_ALL_PUBLIC_ROLE);const a=await this.props.actions.updateUserRoles(e.user_id,t);return a?a.error:null})),Ft(this,"handleSubmit",(async e=>{if(e.preventDefault(),this.state.adding)return;if(!this.state.username||this.state.username.length<3)return void this.setState({error:m().createElement(E.FormattedMessage,{id:"bots.manage.add.invalid_username",defaultMessage:"Usernames have to begin with a lowercase letter and be 3-22 characters long. You can use lowercase letters, numbers, periods, dashes, and underscores."})});if(this.state.pictureFile&&this.isFile(this.state.pictureFile)){if(!ae.Ec.includes(this.state.pictureFile.type))return void this.setState({error:m().createElement(E.FormattedMessage,{id:"user.settings.general.validImage",defaultMessage:"Only BMP, JPG or PNG images may be used for profile pictures"})});if(this.state.pictureFile.size>this.props.maxFileSize)return void this.setState({error:m().createElement(E.FormattedMessage,{id:"user.settings.general.imageTooLarge",defaultMessage:"Unable to upload profile image. File is too large."})})}this.setState({adding:!0,error:""});const t={username:this.state.username.toLowerCase().trim(),display_name:this.state.displayName,description:this.state.description};let a,s;if(this.props.bot){const e=await this.props.actions.patchBot(this.props.bot.user_id,t);if(e?(a=e.data,s=e.error):s=M._u({id:"bot.edit_failed",defaultMessage:"Failed to edit bot"}),!s&&a&&(this.state.pictureFile&&"default"!==this.state.pictureFile?s=(await this.props.actions.uploadProfileImage(a.user_id,this.state.pictureFile)).error:this.state.pictureFile&&"default"===this.state.pictureFile&&await this.props.actions.setDefaultProfileImage(a.user_id)),!s&&a&&(s=this.updateRoles(a)),a)return void(0,te.s)().push("/".concat(this.props.team.name,"/integrations/bots"))}else{const e=M.LH(t.username);if(e){let t;return t=e.id===ae.qf.INVALID_LAST_CHARACTER?{adding:!1,error:m().createElement(E.FormattedMessage,{id:"bots.manage.add.invalid_last_char",defaultMessage:"Bot usernames cannot have a period as the last character"})}:{adding:!1,error:m().createElement(E.FormattedMessage,{id:"bots.manage.add.invalid_username",defaultMessage:"Usernames have to begin with a lowercase letter and be 3-22 characters long. You can use lowercase letters, numbers, periods, dashes, and underscores."})},void this.setState(t)}const n=await this.props.actions.createBot(t);n?(a=n.data,s=n.error):s=M._u({id:"bot.create_failed",defaultMessage:"Failed to create bot"});let o="";if(!s&&a){this.state.pictureFile&&"default"!==this.state.pictureFile?await this.props.actions.uploadProfileImage(a.user_id,this.state.pictureFile):await this.props.actions.setDefaultProfileImage(a.user_id);const e=await this.props.actions.createUserAccessToken(a.user_id,M._u({id:"bot.token.default.description",defaultMessage:"Default Token"}));if(!e||e.error)return void(0,te.s)().push("/".concat(this.props.team.name,"/integrations/bots"));o=e.data.token}if(!s&&a&&(s=this.updateRoles(a)),a)return void(0,te.s)().push("/".concat(this.props.team.name,"/integrations/confirm?type=bots&id=").concat(a.user_id,"&token=").concat(o))}this.setState({adding:!1}),s&&this.setState({error:s.message})})),this.state={error:"",username:this.props.bot?this.props.bot.username:"",displayName:this.props.bot?this.props.bot.display_name:"",description:this.props.bot?this.props.bot.description:"",adding:!1,image:ce,role:St.$O(this.props.roles||"")?Pt:It,postAll:!!this.props.bot&&St.dB(this.props.roles||""),postChannels:!!this.props.bot&&St.fG(this.props.roles||""),orientationStyles:{transform:"",transformOrigin:""},pictureFile:null}}isFile(e){return void 0!==e.size}render(){let e=m().createElement(E.FormattedMessage,{id:"bots.manage.add.add",defaultMessage:"Add"}),t=m().createElement(E.FormattedMessage,{id:"bots.manage.add.create",defaultMessage:"Create Bot Account"}),a=m().createElement(E.FormattedMessage,{id:"bots.manage.add.creating",defaultMessage:"Creating..."});this.props.bot&&(e=m().createElement(E.FormattedMessage,{id:"bots.manage.edit",defaultMessage:"Edit"}),t=m().createElement(E.FormattedMessage,{id:"bots.manage.edit.title",defaultMessage:"Update"}),a=m().createElement(E.FormattedMessage,{id:"bots.manage.edit.editing",defaultMessage:"Updating..."}));let s,o="",r=m().createElement(At.Z,{id:"removeIcon",placement:"right",title:m().createElement(E.FormattedMessage,{id:"bot.remove_profile_picture",defaultMessage:"Remove Bot Icon"})},m().createElement("a",{className:"bot-profile__remove",onClick:this.setDefault},m().createElement("span",null,"×")));return this.props.bot&&!this.state.pictureFile?o=this.props.user?M.bb(this.props.user.id,this.props.user.last_picture_update):M.bb(this.props.bot.user_id):(o=this.state.image,s=this.state.orientationStyles,this.state.image===ce&&(r=null)),m().createElement("div",{className:"backstage-content"},m().createElement(X,null,m().createElement(n.Link,{to:"/".concat(this.props.team.name,"/integrations/bots")},m().createElement(E.FormattedMessage,{id:"bots.manage.header",defaultMessage:"Bot Accounts"})),e),m().createElement("div",{className:"backstage-form"},m().createElement("form",{className:"form-horizontal",onSubmit:this.handleSubmit},m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"username"},m().createElement(E.FormattedMessage,{id:"bots.add.username",defaultMessage:"Username"})),m().createElement("div",{className:"col-md-5 col-sm-8"},m().createElement("input",{id:"username",type:"text",maxLength:22,className:"form-control",value:this.state.username,onChange:this.updateUsername}),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"bot.add.username.help",defaultMessage:"You can use lowercase letters, numbers, periods, dashes, and underscores."})))),m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"boticon"},m().createElement(E.FormattedMessage,{id:"bots.add.icon",defaultMessage:"Bot Icon"})),m().createElement("div",{className:"col-md-5 col-sm-8"},m().createElement("div",{className:"bot-img-container"},m().createElement("img",{className:"bot-img",alt:"bot image",src:o,style:s}),r),m().createElement("div",{className:"btn btn-primary btn-file"},m().createElement(E.FormattedMessage,{id:"bots.image.upload",defaultMessage:"Upload Image"}),m().createElement("input",{className:"btn-file__input",accept:ae.Constants.ACCEPT_STATIC_IMAGE,type:"file",onChange:this.updatePicture})))),m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"displayName"},m().createElement(E.FormattedMessage,{id:"bots.add.displayName",defaultMessage:"Display Name"})),m().createElement("div",{className:"col-md-5 col-sm-8"},m().createElement("input",{id:"displayName",type:"text",maxLength:64,className:"form-control",value:this.state.displayName,onChange:this.updateDisplayName}),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"bot.add.display_name.help",defaultMessage:"(Optional) You can choose to display your bot's full name rather than its username."})))),m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"description"},m().createElement(E.FormattedMessage,{id:"bot.add.description",defaultMessage:"Description"})),m().createElement("div",{className:"col-md-5 col-sm-8"},m().createElement("input",{id:"description",type:"text",maxLength:1024,className:"form-control",value:this.state.description,onChange:this.updateDescription}),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"bot.add.description.help",defaultMessage:"(Optional) Let others know what this bot does."})))),m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"role"},m().createElement(E.FormattedMessage,{id:"bot.add.role",defaultMessage:"Role"})),m().createElement("div",{className:"col-md-5 col-sm-8"},m().createElement("select",{className:"form-control",value:this.state.role,disabled:!this.props.editingUserHasManageSystem,onChange:this.updateRole},m().createElement("option",{value:It},M._u({id:"bot.add.role.member",defaultMessage:"Member"})),m().createElement("option",{value:Pt},M._u({id:"bot.add.role.admin",defaultMessage:"System Admin"}))),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"bot.add.role.help",defaultMessage:"Choose what role the bot should have."})))),m().createElement("div",{className:"row bot-profile__section"},m().createElement("div",{className:"col-md-5 col-sm-8 col-sm-offset-4"},m().createElement(E.FormattedMessage,{id:"admin.manage_roles.botAdditionalRoles",defaultMessage:"Select additional permissions for the account. Read more about roles and permissions.",values:{link:e=>m().createElement(re.Z,{href:ae.I9.PERSONAL_ACCESS_TOKENS,location:"add_bot"},e)}}))),m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"postAll"},m().createElement(E.FormattedMessage,{id:"bot.add.post_all",defaultMessage:"post:all"})),m().createElement("div",{className:"col-md-5 col-sm-8 checkbox"},m().createElement("div",{className:"checkbox no-padding"},m().createElement("label",{htmlFor:"postAll"},m().createElement("input",{id:"postAll",type:"checkbox",checked:this.state.postAll||this.state.role===Pt,onChange:this.updatePostAll,disabled:!this.props.editingUserHasManageSystem||this.state.role===Pt}),m().createElement(E.FormattedMessage,{id:"bot.add.post_all.enabled",defaultMessage:"Enabled"}))),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"bot.add.post_all.help",defaultMessage:"Bot will have access to post to all Mattermost channels including direct messages."})))),m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"postChannels"},m().createElement(E.FormattedMessage,{id:"bot.add.post_channels",defaultMessage:"post:channels"})),m().createElement("div",{className:"col-md-5 col-sm-8 checkbox"},m().createElement("div",{className:"checkbox no-padding"},m().createElement("label",{htmlFor:"postChannels"},m().createElement("input",{id:"postChannels",type:"checkbox",checked:this.state.postChannels||this.state.role===Pt||this.state.postAll,onChange:this.updatePostChannels,disabled:!this.props.editingUserHasManageSystem||this.state.role===Pt||this.state.postAll}),m().createElement(E.FormattedMessage,{id:"bot.add.post_channels.enabled",defaultMessage:"Enabled"}))),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"bot.add.post_channels.help",defaultMessage:"Bot will have access to post to all Mattermost public channels."})))),m().createElement("div",{className:"backstage-form__footer"},m().createElement($.Z,{type:"backstage",errors:[this.state.error]}),m().createElement(n.Link,{className:"btn btn-tertiary",to:"/".concat(this.props.team.name,"/integrations/bots")},m().createElement(E.FormattedMessage,{id:"bots.manage.add.cancel",defaultMessage:"Cancel"})),m().createElement(ee.Z,{className:"btn btn-primary",type:"submit",spinning:this.state.adding,spinningText:a,onClick:this.handleSubmit,id:"saveBot"},t)))))}}const xt=(0,s.connect)((function(e,t){const a=(0,r.iE)(e),s=new URLSearchParams(t.location.search).get("id"),n=(0,at.Gb)(e),l=n&&s?n[s]:void 0,d=l?(0,c.PR)(e,l.user_id):void 0,m=d?d.roles:void 0;return{maxFileSize:parseInt(a.MaxFileSize,10),bot:l,roles:m,editingUserHasManageSystem:(0,i.AN)(e,{permission:o.Pl.MANAGE_SYSTEM}),user:d}}),(function(e){return{actions:(0,g.bindActionCreators)({createBot:Je,patchBot:Ke,uploadProfileImage:et._p,setDefaultProfileImage:et.QJ,createUserAccessToken:et.CR,updateUserRoles:et.hB},e)}}))(Rt),jt=100;function Ut(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:jt,s=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return async n=>{const{data:o}=await n(ve.tJ(e,t,a,s));var r;return o&&n((r=ve.ht(o)?o.incoming_webhooks:o,async(e,t)=>{const a=t(),s={};for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:0,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:jt;return async s=>{const{data:n}=await s(ve.w9("",e,t,a));var o;return n&&s((o=n,async(e,t)=>{const a=t(),s={};for(let e=0;e{const{data:a}=await t(ve.cC(e));var s;return a&&t((s=a,async(e,t)=>{const a=t(),n={};for(let e=0;e0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:jt;return async(a,s)=>{(0,tt.D8)(s())&&a(ve.D());const{data:n}=await a(ve.i5(e,t));return n&&a(function(e){return async(t,a)=>{const s=a(),n={};for(let t=0;t{const t=(0,d.useRef)(!1),[a,n]=(0,d.useState)(null),[o,i]=(0,d.useState)(!1),c=(0,s.useSelector)(dt),u="true"===(0,s.useSelector)(r.iE).EnableOutgoingOAuthConnections,g=(0,s.useSelector)(l.ev),p=(0,s.useDispatch)(),h=(0,d.useCallback)((async e=>{const t=await p((0,ve.Cy)(g,e));i(!1),t.data&&t.data.length?n(t.data[0]):n(null)}),[p,g]),f=(0,d.useMemo)((()=>Wt()((e=>h(e)),1e3)),[h]);(0,d.useEffect)((()=>{t.current||(t.current=!0,u&&(p((0,ve.IS)(g)),e.value&&(i(!0),h(e.value))))}),[u,e.value,g,h,p,t]);const b=Object.values(c),_=m().createElement("input",{autoComplete:"off",id:"url",maxLength:1024,className:"form-control",value:e.value,onChange:t=>{e.onChange(t),u&&(i(!0),f(t.target.value))},placeholder:e.placeholder});if(!b.length)return _;let v;return v=o?m().createElement("span",null,m().createElement(Zt.Z,null)):a?m().createElement(m().Fragment,null,m().createElement("span",null,m().createElement(Bt.OauthIcon,{size:20})),m().createElement("span",{className:"outgoing-oauth-audience-match-message"},m().createElement(E.FormattedMessage,{id:"add_outgoing_oauth_connection.connected",defaultMessage:'Connected to "{connectionName}"',values:{connectionName:a.name}}))):m().createElement(m().Fragment,null,m().createElement("span",null,m().createElement(Bt.InformationOutlineIcon,{size:20})),m().createElement("span",{className:"outgoing-oauth-audience-match-message"},m().createElement(E.FormattedMessage,{id:"add_outgoing_oauth_connection.not_connected",defaultMessage:"Not linked to an OAuth connection"}))),m().createElement(m().Fragment,null,_,m().createElement("div",{className:"outgoing-oauth-audience-match-message-container"},v))};Gt.propTypes={value:b().string.isRequired,onChange:b().func.isRequired,placeholder:b().string.isRequired};const Yt=Gt;function zt(e,t,a){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var a=e[Symbol.toPrimitive];if(void 0!==a){var s=a.call(e,"string");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class Vt extends m().PureComponent{constructor(e){super(e),zt(this,"getStateFromCommand",(e=>{var t,a,s,n,o,r,i,l,c,d;return{displayName:null!==(t=null==e?void 0:e.display_name)&&void 0!==t?t:"",description:null!==(a=null==e?void 0:e.description)&&void 0!==a?a:"",trigger:null!==(s=null==e?void 0:e.trigger)&&void 0!==s?s:"",url:null!==(n=null==e?void 0:e.url)&&void 0!==n?n:"",method:null!==(o=null==e?void 0:e.method)&&void 0!==o?o:"P",username:null!==(r=null==e?void 0:e.username)&&void 0!==r?r:"",iconUrl:null!==(i=null==e?void 0:e.icon_url)&&void 0!==i?i:"",autocomplete:null!==(l=null==e?void 0:e.auto_complete)&&void 0!==l&&l,autocompleteHint:null!==(c=null==e?void 0:e.auto_complete_hint)&&void 0!==c?c:"",autocompleteDescription:null!==(d=null==e?void 0:e.auto_complete_desc)&&void 0!==d?d:"",saving:!1,clientError:null}})),zt(this,"getBackstageHeader",(()=>"string"==typeof this.props.header?m().createElement("span",null,this.props.header):m().createElement(E.FormattedMessage,{id:this.props.header.id,defaultMessage:this.props.header.defaultMessage}))),zt(this,"getBackstageFooter",(()=>"string"==typeof this.props.footer?m().createElement("span",null,this.props.footer):m().createElement(E.FormattedMessage,{id:this.props.footer.id,defaultMessage:this.props.footer.defaultMessage}))),zt(this,"handleSubmit",(e=>{if(e.preventDefault(),this.state.saving)return;this.setState({saving:!0,clientError:""});let t=this.state.trigger.trim().toLowerCase();0===t.indexOf("/")&&(t=t.substr(1));const a={display_name:this.state.displayName,description:this.state.description,trigger:t,url:this.state.url.trim(),method:this.state.method,username:this.state.username,icon_url:this.state.iconUrl,auto_complete:this.state.autocomplete,team_id:this.props.team.id,auto_complete_desc:"",auto_complete_hint:"",token:"",create_at:0,update_at:0,delete_at:0,id:"",creator_id:""};var s,n;a.auto_complete&&(a.auto_complete_desc=null!==(s=this.state.autocompleteDescription)&&void 0!==s?s:"",a.auto_complete_hint=null!==(n=this.state.autocompleteHint)&&void 0!==n?n:""),a.trigger?0!==a.trigger.indexOf("/")?-1===a.trigger.indexOf(" ")?a.trigger.lengthae.Constants.MAX_TRIGGER_LENGTH?this.setState({saving:!1,clientError:m().createElement(E.FormattedMessage,{id:"add_command.triggerInvalidLength",defaultMessage:"A trigger word must contain between {min} and {max} characters",values:{min:ae.Constants.MIN_TRIGGER_LENGTH,max:ae.Constants.MAX_TRIGGER_LENGTH}})}):a.url?this.props.action(a).then((()=>this.setState({saving:!1}))):this.setState({saving:!1,clientError:m().createElement(E.FormattedMessage,{id:"add_command.urlRequired",defaultMessage:"A request URL is required"})}):this.setState({saving:!1,clientError:m().createElement(E.FormattedMessage,{id:"add_command.triggerInvalidSpace",defaultMessage:"A trigger word must not contain spaces"})}):this.setState({saving:!1,clientError:m().createElement(E.FormattedMessage,{id:"add_command.triggerInvalidSlash",defaultMessage:"A trigger word cannot begin with a /"})}):this.setState({saving:!1,clientError:m().createElement(E.FormattedMessage,{id:"add_command.triggerRequired",defaultMessage:"A trigger word is required"})})})),zt(this,"updateDisplayName",(e=>{this.setState({displayName:e.target.value})})),zt(this,"updateDescription",(e=>{this.setState({description:e.target.value})})),zt(this,"updateTrigger",(e=>{this.setState({trigger:e.target.value})})),zt(this,"updateUrl",(e=>{this.setState({url:e.target.value})})),zt(this,"updateMethod",(e=>{const t=e.target.value;"P"!==t&&"G"!==t&&""!==t||this.setState({method:t})})),zt(this,"updateUsername",(e=>{this.setState({username:e.target.value})})),zt(this,"updateIconUrl",(e=>{this.setState({iconUrl:e.target.value})})),zt(this,"updateAutocomplete",(e=>{this.setState({autocomplete:e.target.checked})})),zt(this,"updateAutocompleteHint",(e=>{this.setState({autocompleteHint:e.target.value})})),zt(this,"updateAutocompleteDescription",(e=>{this.setState({autocompleteDescription:e.target.value})})),this.state=this.getStateFromCommand(this.props.initialCommand||{})}render(){var e,t,a;let s=null,o=null;return this.state.autocomplete&&(s=m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"autocompleteHint"},m().createElement(E.FormattedMessage,{id:"add_command.autocompleteHint",defaultMessage:"Autocomplete Hint"})),m().createElement("div",{className:"col-md-5 col-sm-8"},m().createElement("input",{id:"autocompleteHint",type:"text",maxLength:1024,className:"form-control",value:this.state.autocompleteHint,onChange:this.updateAutocompleteHint,placeholder:this.props.intl.formatMessage({id:"add_command.autocompleteHint.placeholder",defaultMessage:"Example: [Patient Name]"})}),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_command.autocompleteHint.help",defaultMessage:"(Optional) Specify the arguments associated with your slash command. These are displayed as help on the autocomplete list."})))),o=m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"autocompleteDescription"},m().createElement(E.FormattedMessage,{id:"add_command.autocompleteDescription",defaultMessage:"Autocomplete Description"})),m().createElement("div",{className:"col-md-5 col-sm-8"},m().createElement("input",{id:"description",type:"text",maxLength:128,className:"form-control",value:this.state.autocompleteDescription,onChange:this.updateAutocompleteDescription,placeholder:this.props.intl.formatMessage({id:"add_command.autocompleteDescription.placeholder",defaultMessage:'Example: "Returns search results for patient records"'})}),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_command.autocompleteDescription.help",defaultMessage:"(Optional) Describe your slash command for the autocomplete list."}))))),m().createElement("div",{className:"backstage-content row"},m().createElement(X,null,m().createElement(n.Link,{to:"/"+this.props.team.name+"/integrations/commands"},m().createElement(E.FormattedMessage,{id:"installed_command.header",defaultMessage:"Slash Commands"})),this.getBackstageHeader()),m().createElement("div",{className:"backstage-form"},m().createElement("form",{className:"form-horizontal",onSubmit:this.handleSubmit},m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"displayName"},m().createElement(E.FormattedMessage,{id:"add_command.displayName",defaultMessage:"Title"})),m().createElement("div",{className:"col-md-5 col-sm-8"},m().createElement("input",{id:"displayName",type:"text",maxLength:64,className:"form-control",value:this.state.displayName,onChange:this.updateDisplayName}),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_command.displayName.help",defaultMessage:"Specify a title, of up to 64 characters, for the slash command settings page."})))),m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"description"},m().createElement(E.FormattedMessage,{id:"add_command.description",defaultMessage:"Description"})),m().createElement("div",{className:"col-md-5 col-sm-8"},m().createElement("input",{id:"description",type:"text",maxLength:128,className:"form-control",value:this.state.description,onChange:this.updateDescription}),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_command.description.help",defaultMessage:"Describe your slash command."})))),m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"trigger"},m().createElement(E.FormattedMessage,{id:"add_command.trigger",defaultMessage:"Command Trigger Word"})),m().createElement("div",{className:"col-md-5 col-sm-8"},m().createElement("input",{id:"trigger",type:"text",maxLength:ae.Constants.MAX_TRIGGER_LENGTH,className:"form-control",value:this.state.trigger,onChange:this.updateTrigger,placeholder:this.props.intl.formatMessage({id:"add_command.trigger.placeholder",defaultMessage:'Command trigger e.g. "hello" not including the slash'})}),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_command.trigger.help",defaultMessage:"Specify a trigger word that is not a built-in command, does not contain spaces, and does not begin with the slash character."})),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_command.trigger.helpExamples",defaultMessage:"Examples: client, employee, patient, weather"})),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_command.trigger.helpReserved",defaultMessage:"Reserved: {link}",values:{link:m().createElement(re.Z,{href:ae.I9.CUSTOM_SLASH_COMMANDS,location:"abstract_command"},m().createElement(E.FormattedMessage,{id:"add_command.trigger.helpReservedLinkText",defaultMessage:"See built-in slash commands"}))}})))),m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"url"},m().createElement(E.FormattedMessage,{id:"add_command.url",defaultMessage:"Request URL"})),m().createElement("div",{className:"col-md-5 col-sm-8"},m().createElement(Yt,{value:this.state.url,onChange:this.updateUrl,placeholder:this.props.intl.formatMessage({id:"add_command.url.placeholder",defaultMessage:"Must start with http:// or https://"})}),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_command.url.help",defaultMessage:"Specify the callback URL to receive the HTTP POST or GET event request when the slash command is run."})),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_command.outgoing_oauth_connections.help_text",defaultMessage:"You can connect commands to outgoing OAuth connections.",values:{link:e=>m().createElement("a",{href:"https://mattermost.com/pl/outgoing-oauth-connections"},e)}})))),m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"method"},m().createElement(E.FormattedMessage,{id:"add_command.method",defaultMessage:"Request Method"})),m().createElement("div",{className:"col-md-5 col-sm-8"},m().createElement("select",{id:"method",className:"form-control",value:this.state.method,onChange:this.updateMethod},m().createElement("option",{value:"P"},M._u({id:"add_command.method.post",defaultMessage:"POST"})),m().createElement("option",{value:"G"},M._u({id:"add_command.method.get",defaultMessage:"GET"}))),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_command.method.help",defaultMessage:"Specify the type of request, either POST or GET, sent to the endpoint that Mattermost hits to reach your application."})))),m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"username"},m().createElement(E.FormattedMessage,{id:"add_command.username",defaultMessage:"Response Username"})),m().createElement("div",{className:"col-md-5 col-sm-8"},m().createElement("input",{id:"username",type:"text",maxLength:64,className:"form-control",value:this.state.username,onChange:this.updateUsername,placeholder:this.props.intl.formatMessage({id:"add_command.username.placeholder",defaultMessage:"Username"})}),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_command.username.help",defaultMessage:'(Optional) Specify the name to use when posting responses for this slash command. Usernames can be up to 22 characters, and contain lowercase letters, numbers, and the symbols \\"-\\", \\"_\\", and \\".\\". If left blank, your Mattermost username is used.'})))),m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"iconUrl"},m().createElement(E.FormattedMessage,{id:"add_command.iconUrl",defaultMessage:"Response Icon"})),m().createElement("div",{className:"col-md-5 col-sm-8"},m().createElement("input",{id:"iconUrl",type:"text",maxLength:1024,className:"form-control",value:this.state.iconUrl,onChange:this.updateIconUrl,placeholder:this.props.intl.formatMessage({id:"add_command.iconUrl.placeholder",defaultMessage:"https://www.example.com/myicon.png"})}),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_command.iconUrl.help",defaultMessage:"(Optional) Enter the URL of a .png or .jpg file to use as the icon when posting responses to this slash command. The file must be at least 128 pixels by 128 pixels. If left blank, your profile picture is used."})))),m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"autocomplete"},m().createElement(E.FormattedMessage,{id:"add_command.autocomplete",defaultMessage:"Autocomplete"})),m().createElement("div",{className:"col-md-5 col-sm-8 checkbox"},m().createElement("input",{id:"autocomplete",type:"checkbox",checked:this.state.autocomplete,onChange:this.updateAutocomplete}),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_command.autocomplete.help",defaultMessage:'(Optional) Show your slash command on the autocomplete list when someone types "/" in the input box.'})))),s,o,m().createElement("div",{className:"backstage-form__footer"},m().createElement($.Z,{type:"backstage",errors:[this.props.serverError,this.state.clientError]}),m().createElement(n.Link,{className:"btn btn-tertiary",to:"/"+this.props.team.name+"/integrations/commands"},m().createElement(E.FormattedMessage,{id:"add_command.cancel",defaultMessage:"Cancel"})),m().createElement(ee.Z,{className:"btn btn-primary",type:"submit",spinning:this.state.saving,spinningText:"string"==typeof this.props.loading?this.props.loading:M._u({id:null!==(e=null===(t=this.props.loading)||void 0===t?void 0:t.id)&&void 0!==e?e:"",defaultMessage:null===(a=this.props.loading)||void 0===a?void 0:a.defaultMessage}),onClick:this.handleSubmit,id:"saveCommand"},this.getBackstageFooter()),this.props.renderExtra))))}}const Jt=(0,E.injectIntl)(Vt),Kt=e=>{let{team:t,actions:a}=e;const s=(0,n.useHistory)(),{formatMessage:o}=(0,E.useIntl)(),r=o({id:"integrations.add",defaultMessage:"Add"}),i=o({id:"add_command.save",defaultMessage:"Save"}),l=o({id:"add_command.saving",defaultMessage:"Saving..."}),[c,u]=(0,d.useState)("");return m().createElement(Jt,{team:t,header:r,footer:i,loading:l,action:async e=>{u("");const{data:n,error:o}=await a.addCommand(e);n?s.push("/".concat(t.name,"/integrations/commands/confirm?type=commands&id=").concat(n.id)):o&&u(o.message)},serverError:c})};Kt.propTypes={actions:b().shape({addCommand:b().func.isRequired}).isRequired};const Qt=Kt,Xt=(0,s.connect)(null,(function(e){return{actions:(0,g.bindActionCreators)({addCommand:ve.OH},e)}}))(Qt);a(911);const $t=e=>{let{value:t,tooltip:a}=e;const s=(0,d.useCallback)((e=>{e.preventDefault(),(0,M.vQ)(t)}),[t]);return document.queryCommandSupported("copy")?m().createElement(At.Z,{id:"copyTextTooltip",placement:"top",title:a||m().createElement(E.FormattedMessage,{id:"copyTextTooltip.copy",defaultMessage:"Copy"})},m().createElement("a",{href:"#","data-testid":"copyText",className:"fa fa-copy ml-2",onClick:s})):null};$t.propTypes={value:b().string.isRequired,tooltip:b().node};const ea=m().memo($t);var ta=a(2664),aa=a(41894);const sa=e=>{let{team:t,location:a,commands:s,oauthApps:o,incomingHooks:r,outgoingHooks:i,bots:l,outgoingOAuthConnections:c}=e;const u=(0,n.useHistory)(),g=new URLSearchParams(a.search).get("type")||"",p=new URLSearchParams(a.search).get("id")||"";(0,d.useEffect)((()=>(window.addEventListener("keypress",h),()=>{window.removeEventListener("keypress",h)})));const h=e=>{"Enter"===e.key&&u.push("/"+t.name+"/integrations/"+g)};let f,b,_;const v=s[p],M=r[p],k=i[p],y=o[p],N=c[p],w=l[p];if(g===ae.Constants.Integrations.COMMAND&&v){const e=v.token;f=m().createElement(E.FormattedMessage,{id:"slash_commands.header",defaultMessage:"Slash Commands"}),b=m().createElement("p",null,m().createElement(E.FormattedMessage,{id:"add_command.doneHelp",defaultMessage:"Your slash command is set up. The following token will be sent in the outgoing payload. Please use it to verify the request came from your Mattermost team (details at Slash Commands).",values:{link:e=>m().createElement(re.Z,{href:ae.I9.SETUP_CUSTOM_SLASH_COMMANDS,location:"confirm_integration"},e)}})),_=m().createElement("p",{className:"word-break--all"},m().createElement(ta.Z,{id:"add_command.token",defaultMessage:"**Token**: {token}",values:{token:e}}),m().createElement(ea,{value:e}))}else if(g===ae.Constants.Integrations.INCOMING_WEBHOOK&&M){const e=(0,aa.fO)()+"/hooks/"+M.id;f=m().createElement(E.FormattedMessage,{id:"incoming_webhooks.header",defaultMessage:"Incoming Webhooks"}),b=m().createElement("p",null,m().createElement(E.FormattedMessage,{id:"add_incoming_webhook.doneHelp",defaultMessage:"Your incoming webhook is set up. Please send data to the following URL (details at Incoming Webhooks).",values:{link:e=>m().createElement(re.Z,{href:ae.I9.SETUP_INCOMING_WEBHOOKS,location:"confirm_integration"},e)}})),_=m().createElement("p",{className:"word-break--all"},m().createElement(ta.Z,{id:"add_incoming_webhook.url",defaultMessage:"**URL**: {url}",values:{url:"`"+e+"`"}}),m().createElement(ea,{value:e}))}else if(g===ae.Constants.Integrations.OUTGOING_WEBHOOK&&k){const e=k.token;f=m().createElement(E.FormattedMessage,{id:"add_outgoing_webhook.header",defaultMessage:"Outgoing Webhooks"}),b=m().createElement("p",null,m().createElement(E.FormattedMessage,{id:"add_outgoing_webhook.doneHelp",defaultMessage:"Your outgoing webhook is set up. The following token will be sent in the outgoing payload. Please use it to verify that the request came from your Mattermost team (details at Outgoing Webhooks).",values:{link:e=>m().createElement(re.Z,{href:ae.I9.SETUP_OUTGOING_WEBHOOKS,location:"confirm_integration"},e)}})),_=m().createElement("p",{className:"word-break--all"},m().createElement(ta.Z,{id:"add_outgoing_webhook.token",defaultMessage:"**Token**: {token}",values:{token:e}}),m().createElement(ea,{value:e}))}else if(g===ae.Constants.Integrations.OAUTH_APP&&y){const e=y.id,t=y.client_secret;f=m().createElement(E.FormattedMessage,{id:"installed_oauth2_apps.header",defaultMessage:"OAuth 2.0 Applications"}),b=[],b.push(m().createElement("p",{key:"add_oauth_app.doneHelp"},m().createElement(E.FormattedMessage,{id:"add_oauth_app.doneHelp",defaultMessage:"Your OAuth 2.0 application is set up. Please use the following Client ID and Client Secret when requesting authorization for your application (details at oAuth 2 Applications).",values:{link:e=>m().createElement(re.Z,{href:ae.I9.SETUP_OAUTH2,location:"confirm_integration"},e)}}))),b.push(m().createElement("p",{key:"add_oauth_app.clientId"},m().createElement(ta.Z,{id:"add_oauth_app.clientId",defaultMessage:"**Client ID**: {id}",values:{id:e}}),m().createElement(ea,{tooltip:m().createElement(E.FormattedMessage,{id:"integrations.copy_client_id",defaultMessage:"Copy Client Id"}),value:e}),m().createElement("br",null),m().createElement(ta.Z,{id:"add_oauth_app.clientSecret",defaultMessage:"**Client Secret**: {secret}",values:{secret:t}}),m().createElement(ea,{tooltip:m().createElement(E.FormattedMessage,{id:"integrations.copy_client_secret",defaultMessage:"Copy Client Secret"}),value:t}))),b.push(m().createElement("p",{key:"add_oauth_app.doneUrlHelp"},m().createElement(E.FormattedMessage,{id:"add_oauth_app.doneUrlHelp",defaultMessage:"Here are your authorized redirect URLs."}))),_=m().createElement("p",{className:"word-break--all"},m().createElement(ta.Z,{id:"add_oauth_app.url",defaultMessage:"**URL(s)**: {url}",values:{url:y.callback_urls.join(", ")}}))}else if(g===ae.Constants.Integrations.OUTGOING_OAUTH_CONNECTIONS&&N){const e=N.client_id,t=N.client_secret,a=N.credentials_username,s=N.credentials_password;f=m().createElement(E.FormattedMessage,{id:"installed_outgoing_oauth_connections.header",defaultMessage:"Outgoing OAuth 2.0 Connections"}),b=[],b.push(m().createElement("p",{key:"add_outgoing_oauth_connection.doneHelp"},m().createElement(E.FormattedMessage,{id:"add_outgoing_oauth_connection.doneHelp",defaultMessage:"Your Outgoing OAuth 2.0 Connection is set up. When a request is sent to one of the following Audience URLs, the Client ID and Client Secret will now be used to retrieve a token from the Token URL, before sending the integration request (details at Outgoing OAuth 2.0 Connections).",values:{link:e=>m().createElement(re.Z,{href:ae.I9.SETUP_OAUTH2,location:"confirm_integration"},e)}}))),b.push(m().createElement("p",{key:"add_outgoing_oauth_connection.clientId"},m().createElement(ta.Z,{id:"add_outgoing_oauth_connection.clientId",defaultMessage:"**Client ID**: {id}",values:{id:e}}),m().createElement("br",null),m().createElement(ta.Z,{id:"add_outgoing_oauth_connection.clientSecret",defaultMessage:"**Client Secret**: \\*\\*\\*\\*\\*\\*\\*\\*",values:{secret:t}}))),"password"===N.grant_type&&b.push(m().createElement("p",{key:"add_outgoing_oauth_connection.username"},m().createElement(ta.Z,{id:"add_outgoing_oauth_connection.username",defaultMessage:"**Username**: {username}",values:{username:a}}),m().createElement(ea,{tooltip:m().createElement(E.FormattedMessage,{id:"integrations.copy_username",defaultMessage:"Copy Username"}),value:a||""}),m().createElement("br",null),m().createElement(ta.Z,{id:"add_outgoing_oauth_connection.password",defaultMessage:"**Password**: {password}",values:{password:s}}))),_=m().createElement(m().Fragment,null,m().createElement("p",{className:"word-break--all"},m().createElement(ta.Z,{id:"add_outgoing_oauth_connection.token_url",defaultMessage:"**Token URL**: `{url}`",values:{url:N.oauth_token_url}})),m().createElement("p",{className:"word-break--all"},m().createElement(ta.Z,{id:"add_outgoing_oauth_connection.audience_urls",defaultMessage:"**Audience URL(s)**: `{url}`",values:{url:N.audiences.join(", ")}})))}else{if(g!==ae.Constants.Integrations.BOT||!w)return u.replace("/error?type=".concat(ae.vU.PAGE_NOT_FOUND)),null;{const e=new URLSearchParams(a.search).get("token")||"";f=m().createElement(E.FormattedMessage,{id:"bots.manage.header",defaultMessage:"Bot Accounts"}),b=m().createElement("p",null,m().createElement(E.FormattedMessage,{id:"bots.manage.created.text",defaultMessage:"Your bot account **{botname}** has been created successfully. Please use the following access token to connect to the bot (see [documentation](https://mattermost.com/pl/default-bot-accounts) for further details).",values:{botname:w.display_name||w.username,strong:e=>m().createElement("strong",null,e),link:e=>m().createElement(re.Z,{href:"https://mattermost.com/pl/default-bot-accounts",location:"confirm_integration"},e)}})),_=m().createElement("p",{className:"word-break--all"},m().createElement(ta.Z,{id:"add_outgoing_webhook.token",defaultMessage:"**Token**: {token}",values:{token:e}}),m().createElement(ea,{value:e}),m().createElement("br",null),m().createElement("br",null),m().createElement(E.FormattedMessage,{id:"add_outgoing_webhook.token.message",defaultMessage:"Make sure to add this bot account to teams and channels you want it to interact in. See documentation to learn more.",values:{link:e=>m().createElement(re.Z,{href:"https://mattermost.com/pl/default-bot-accounts",location:"confirm_integration"},e)}}))}}return m().createElement("div",{className:"backstage-content row"},m().createElement(X,null,m().createElement(n.Link,{to:"/"+t.name+"/integrations/"+g},f),m().createElement(E.FormattedMessage,{id:"integrations.add",defaultMessage:"Add"})),m().createElement("div",{className:"backstage-form backstage-form__confirmation"},m().createElement("h4",{className:"backstage-form__title",id:"formTitle"},m().createElement(E.FormattedMessage,{id:"integrations.successful",defaultMessage:"Setup Successful"})),b,_,m().createElement("div",{className:"backstage-form__footer"},m().createElement(n.Link,{className:"btn btn-primary",type:"submit",to:"/"+t.name+"/integrations/"+g,id:"doneButton"},m().createElement(E.FormattedMessage,{id:"integrations.done",defaultMessage:"Done"})))))};sa.propTypes={location:b().shape({search:b().string.isRequired}).isRequired};const na=sa,oa=(0,s.connect)((function(e){return{commands:lt(e),oauthApps:ct(e),incomingHooks:rt(e),outgoingHooks:it(e),bots:(0,at.Gb)(e),outgoingOAuthConnections:dt(e)}}))(na);function ra(e,t,a){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var a=e[Symbol.toPrimitive];if(void 0!==a){var s=a.call(e,"string");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}const ia=(0,E.defineMessages)({footer:{id:"edit_command.update",defaultMessage:"Update"},header:{id:"integrations.edit",defaultMessage:"Edit"},loading:{id:"edit_command.updating",defaultMessage:"Updating..."}});class la extends m().PureComponent{constructor(e){super(e),ra(this,"editCommand",(async e=>{var t,a,s,n;this.newCommand=e,null!==(t=this.state.originalCommand)&&void 0!==t&&t.id&&(e.id=this.state.originalCommand.id),(null===(a=this.state.originalCommand)||void 0===a?void 0:a.url)!==this.newCommand.url||(null===(s=this.state.originalCommand)||void 0===s?void 0:s.trigger)!==this.newCommand.trigger||(null===(n=this.state.originalCommand)||void 0===n?void 0:n.method)!==this.newCommand.method?this.handleConfirmModal():await this.submitCommand()})),ra(this,"handleConfirmModal",(()=>{this.setState({showConfirmModal:!0})})),ra(this,"confirmModalDismissed",(()=>{this.setState({showConfirmModal:!1})})),ra(this,"submitCommand",(async()=>{this.setState({serverError:""});const{data:e,error:t}=await this.props.actions.editCommand(this.newCommand);e?(0,te.s)().push("/".concat(this.props.team.name,"/integrations/commands")):(this.setState({showConfirmModal:!1}),t&&this.setState({serverError:t.message}))})),ra(this,"renderExtra",(()=>{const e=m().createElement(E.FormattedMessage,{id:"update_command.update",defaultMessage:"Update"}),t=m().createElement(E.FormattedMessage,{id:"update_command.confirm",defaultMessage:"Edit Slash Command"}),a=m().createElement(E.FormattedMessage,{id:"update_command.question",defaultMessage:"Your changes may break the existing slash command. Are you sure you would like to update it?"});return m().createElement(vt.Z,{title:t,message:a,confirmButtonText:e,modalClass:"integrations-backstage-modal",show:this.state.showConfirmModal,onConfirm:this.submitCommand,onCancel:this.confirmModalDismissed})})),this.newCommand=void 0,this.state={originalCommand:null,showConfirmModal:!1,serverError:""}}componentDidMount(){this.props.enableCommands&&this.props.actions.getCustomTeamCommands(this.props.team.id).then((()=>{this.setState({originalCommand:Object.values(this.props.commands).filter((e=>e.id===this.props.commandId))[0]})}))}render(){return this.state.originalCommand?m().createElement(Jt,{team:this.props.team,header:ia.header,footer:ia.footer,loading:ia.loading,renderExtra:this.renderExtra(),action:this.editCommand,serverError:this.state.serverError,initialCommand:this.state.originalCommand}):m().createElement(U.Z,null)}}ra(la,"propTypes",{commandId:b().oneOfType([b().string,b().oneOf([null])]),actions:b().shape({getCustomTeamCommands:b().func.isRequired,editCommand:b().func.isRequired}).isRequired,enableCommands:b().bool.isRequired});const ca=(0,s.connect)((function(e,t){const a=(0,r.iE)(e),s=new URLSearchParams(t.location.search).get("id"),n="true"===a.EnableCommands;return{commandId:s,commands:lt(e),enableCommands:n}}),(function(e){return{actions:(0,g.bindActionCreators)({getCustomTeamCommands:ve.cC,editCommand:ve.h0},e)}}))(la);function da(e,t,a){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var a=e[Symbol.toPrimitive];if(void 0!==a){var s=a.call(e,"string");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function ma(e,t){return!t||-1!==e.display_name.toLowerCase().indexOf(t)||-1!==e.description.toLowerCase().indexOf(t)||-1!==e.trigger.toLowerCase().indexOf(t)}class ua extends m().PureComponent{constructor(){super(...arguments),da(this,"handleRegenToken",(e=>{e.preventDefault(),this.props.onRegenToken(this.props.command)})),da(this,"handleDelete",(()=>{this.props.onDelete(this.props.command)}))}render(){const e=this.props.command;if(!ma(e,this.props.filter?this.props.filter.toLowerCase():""))return null;let t;t=e.display_name?e.display_name:m().createElement(E.FormattedMessage,{id:"installed_commands.unnamed_command",defaultMessage:"Unnamed Slash Command"});let a=null;e.description&&(a=m().createElement("div",{className:"item-details__row"},m().createElement("span",{className:"item-details__description"},e.description)));let s="- /"+e.trigger;e.auto_complete&&e.auto_complete_hint&&(s+=" "+e.auto_complete_hint);let o=null;this.props.canChange&&(o=m().createElement("div",{className:"item-actions"},m().createElement("button",{className:"style--none color--link",onClick:this.handleRegenToken},m().createElement(E.FormattedMessage,{id:"installed_integrations.regenToken",defaultMessage:"Regenerate Token"}))," - ",m().createElement(n.Link,{to:"/".concat(this.props.team.name,"/integrations/commands/edit?id=").concat(e.id)},m().createElement(E.FormattedMessage,{id:"installed_integrations.edit",defaultMessage:"Edit"}))," - ",m().createElement(T,{modalMessage:m().createElement(E.FormattedMessage,{id:"installed_commands.delete.confirm",defaultMessage:"This action permanently deletes the slash command and breaks any integrations using it. Are you sure you want to delete it?"}),onDelete:this.handleDelete})));const r=e.token;return m().createElement("div",{className:"backstage-list__item"},m().createElement("div",{className:"item-details"},m().createElement("div",{className:"item-details__row d-flex flex-column flex-md-row justify-content-between"},m().createElement("div",{className:"item-details__name"},m().createElement("strong",null,t)),m().createElement("span",{className:"item-details__trigger"},s),o),a,m().createElement("div",{className:"item-details__row"},m().createElement("span",{className:"item-details__token"},m().createElement(E.FormattedMessage,{id:"installed_integrations.token",defaultMessage:"Token: {token}",values:{token:r}}),m().createElement(ea,{value:r}))),m().createElement("div",{className:"item-details__row"},m().createElement("span",{className:"item-details__creation"},m().createElement(E.FormattedMessage,{id:"installed_integrations.creation",defaultMessage:"Created by {creator} on {createAt, date, full}",values:{creator:this.props.creator.username,createAt:e.create_at}})))))}}function ga(e,t,a){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var a=e[Symbol.toPrimitive];if(void 0!==a){var s=a.call(e,"string");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}da(ua,"propTypes",{onRegenToken:b().func.isRequired,onDelete:b().func.isRequired,filter:b().string,canChange:b().bool.isRequired});class pa extends m().PureComponent{constructor(){super(...arguments),ga(this,"regenCommandToken",(e=>{this.props.actions.regenCommandToken(e.id)})),ga(this,"deleteCommand",(e=>{this.props.actions.deleteCommand(e.id)}))}commandCompare(e,t){let a=e.display_name;a||(a=M._u({id:"installed_commands.unnamed_command",defaultMessage:"Unnamed Slash Command"}));let s=t.display_name;return s||(s=M._u({id:"installed_commands.unnamed_command",defaultMessage:"Unnamed Slash Command"})),a.localeCompare(s)}render(){const e=e=>this.props.commands.filter((e=>e.team_id===this.props.team.id)).filter((t=>ma(t,e))).sort(this.commandCompare).map((e=>{const t=this.props.canManageOthersSlashCommands||this.props.user.id===e.creator_id;return m().createElement(ua,{key:e.id,team:this.props.team,command:e,onRegenToken:this.regenCommandToken,onDelete:this.deleteCommand,creator:this.props.users[e.creator_id]||{},canChange:t})}));return m().createElement(_t,{header:m().createElement(E.FormattedMessage,{id:"installed_commands.header",defaultMessage:"Installed Slash Commands"}),addText:m().createElement(E.FormattedMessage,{id:"installed_commands.add",defaultMessage:"Add Slash Command"}),addLink:"/"+this.props.team.name+"/integrations/commands/add",addButtonId:"addSlashCommand",emptyText:m().createElement(E.FormattedMessage,{id:"installed_commands.empty",defaultMessage:"No slash commands found"}),emptyTextSearch:m().createElement(ta.Z,{id:"installed_commands.emptySearch",defaultMessage:"No slash commands match {searchTerm}"}),helpText:m().createElement(E.FormattedMessage,{id:"installed_commands.help",defaultMessage:"Use slash commands to connect external tools to Mattermost. {buildYourOwn} or visit the {appDirectory} to find self-hosted, third-party apps and integrations.",values:{buildYourOwn:m().createElement(re.Z,{href:ae.I9.SETUP_CUSTOM_SLASH_COMMANDS,location:"installed_commands"},m().createElement(E.FormattedMessage,{id:"installed_commands.help.buildYourOwn",defaultMessage:"Build Your Own"})),appDirectory:m().createElement(re.Z,{href:"https://mattermost.com/marketplace",location:"installed_commands"},m().createElement(E.FormattedMessage,{id:"installed_commands.help.appDirectory",defaultMessage:"App Directory"}))}}),searchPlaceholder:M._u({id:"installed_commands.search",defaultMessage:"Search Slash Commands"}),loading:this.props.loading},(t=>{const a=e(t);return[a,a.length>0]}))}}ga(pa,"propTypes",{commands:b().array.isRequired,loading:b().bool.isRequired,canManageOthersSlashCommands:b().bool.isRequired,actions:b().shape({regenCommandToken:b().func.isRequired,deleteCommand:b().func.isRequired}).isRequired});const ha=(0,s.connect)((function(e,t){return{canManageOthersSlashCommands:(0,i.Rm)(e,t.team.id,o.Pl.MANAGE_OTHERS_SLASH_COMMANDS)}}),(function(e){return{actions:(0,g.bindActionCreators)({regenCommandToken:ve.kq,deleteCommand:ve.JL},e)}}))(pa),fa=["component","extraProps"];const ba=e=>{let{component:t,extraProps:a}=e,s=function(e,t){if(null==e)return{};var a,s,n=function(e,t){if(null==e)return{};var a,s,n={},o=Object.keys(e);for(s=0;s=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(s=0;s=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}(e,fa);return m().createElement(n.Route,Object.assign({},s,{render:e=>m().createElement(t,Object.assign({},a,e))}))};ba.propTypes={component:b().any.isRequired,extraProps:b().shape({loading:b().bool.isRequired,commands:b().array.isRequired}).isRequired,path:b().string.isRequired};class Ea extends m().PureComponent{constructor(e){super(e),this.state={loading:!0}}componentDidMount(){var e;this.props.enableCommands&&this.props.actions.loadCommandsAndProfilesForTeam((null===(e=this.props.team)||void 0===e?void 0:e.id)||"").then((()=>this.setState({loading:!1})))}render(){const e={loading:this.state.loading,commands:this.props.commands||[],users:this.props.users,team:this.props.team,user:this.props.user};return m().createElement("div",null,m().createElement(n.Switch,null,m().createElement(n.Route,{exact:!0,path:"".concat(this.props.match.url,"/"),render:()=>m().createElement(n.Redirect,{to:"".concat(this.props.match.url,"/installed")})}),m().createElement(ba,{extraProps:e,path:"".concat(this.props.match.url,"/installed"),component:ha}),m().createElement(ba,{extraProps:e,path:"".concat(this.props.match.url,"/add"),component:Xt}),m().createElement(ba,{extraProps:e,path:"".concat(this.props.match.url,"/edit"),component:ca}),m().createElement(ba,{extraProps:e,path:"".concat(this.props.match.url,"/confirm"),component:oa})))}}var _a,va,Ma;_a=Ea,va="propTypes",Ma={commands:b().array.isRequired,match:b().shape({url:b().string.isRequired}).isRequired,actions:b().shape({loadCommandsAndProfilesForTeam:b().func.isRequired}).isRequired,enableCommands:b().bool},(va=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var a=e[Symbol.toPrimitive];if(void 0!==a){var s=a.call(e,"string");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(va))in _a?Object.defineProperty(_a,va,{value:Ma,enumerable:!0,configurable:!0,writable:!0}):_a[va]=Ma;const ka=(0,s.connect)((function(e){const t="true"===(0,r.iE)(e).EnableCommands;return{commands:Object.values(lt(e)),users:(0,c.Rf)(e),enableCommands:t}}),(function(e){return{actions:(0,g.bindActionCreators)({loadCommandsAndProfilesForTeam:Lt},e)}}))(Ea);function ya(e,t,a){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var a=e[Symbol.toPrimitive];if(void 0!==a){var s=a.call(e,"string");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}const Na=(0,E.defineMessages)({footer:{id:"update_incoming_webhook.update",defaultMessage:"Update"},header:{id:"integrations.edit",defaultMessage:"Edit"},loading:{id:"update_incoming_webhook.updating",defaultMessage:"Updating..."}});class wa extends m().PureComponent{constructor(e){super(e),ya(this,"editIncomingHook",(async e=>{var t;this.newHook=e,null!==(t=this.props.hook)&&void 0!==t&&t.id&&(e.id=this.props.hook.id),await this.submitHook()})),ya(this,"submitHook",(async()=>{if(this.setState({serverError:""}),!this.newHook)return;const e=await this.props.actions.updateIncomingHook(this.newHook);if("data"in e)(0,te.s)().push("/".concat(this.props.team.name,"/integrations/incoming_webhooks"));else if("error"in e){const{error:t}=e;this.setState({serverError:t.message})}})),this.state={serverError:""}}componentDidMount(){this.props.enableIncomingWebhooks&&this.props.actions.getIncomingHook(this.props.hookId)}render(){return this.props.hook?m().createElement(Te,{team:this.props.team,header:Na.header,footer:Na.footer,loading:Na.loading,enablePostUsernameOverride:this.props.enablePostUsernameOverride,enablePostIconOverride:this.props.enablePostIconOverride,action:this.editIncomingHook,serverError:this.state.serverError,initialHook:this.props.hook}):m().createElement(U.Z,null)}}ya(wa,"propTypes",{hookId:b().string.isRequired,enableIncomingWebhooks:b().bool.isRequired,enablePostUsernameOverride:b().bool.isRequired,enablePostIconOverride:b().bool.isRequired,actions:b().shape({updateIncomingHook:b().func.isRequired,getIncomingHook:b().func.isRequired}).isRequired});const Ca=(0,s.connect)((function(e,t){const a=(0,r.iE)(e),s="true"===a.EnableIncomingWebhooks,n="true"===a.EnablePostUsernameOverride,o="true"===a.EnablePostIconOverride,i=new URLSearchParams(t.location.search).get("id")||"";return{hookId:i,hook:e.entities.integrations.incomingHooks[i],enableIncomingWebhooks:s,enablePostUsernameOverride:n,enablePostIconOverride:o}}),(function(e){return{actions:(0,g.bindActionCreators)({updateIncomingHook:ve.V4,getIncomingHook:ve.kA},e)}}))(wa);function Oa(e,t,a){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var a=e[Symbol.toPrimitive];if(void 0!==a){var s=a.call(e,"string");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}const Sa={id:"integrations.edit",defaultMessage:"Edit"},Aa={id:"update_incoming_webhook.update",defaultMessage:"Update"},Ta={id:"update_incoming_webhook.updating",defaultMessage:"Updating..."};class Fa extends m().PureComponent{constructor(e){super(e),Oa(this,"editOAuthApp",(async e=>{this.newApp=e,this.props.oauthApp.id&&(e.id=this.props.oauthApp.id),!1===(this.props.oauthApp.callback_urls.length===e.callback_urls.length&&this.props.oauthApp.callback_urls.every(((t,a)=>t===e.callback_urls[a])))?this.handleConfirmModal():await this.submitOAuthApp()})),Oa(this,"handleConfirmModal",(()=>{this.setState({showConfirmModal:!0})})),Oa(this,"confirmModalDismissed",(()=>{this.setState({showConfirmModal:!1})})),Oa(this,"submitOAuthApp",(async()=>{this.setState({serverError:""});const e=await this.props.actions.editOAuthApp(this.newApp);if("data"in e&&e.data)(0,te.s)().push("/".concat(this.props.team.name,"/integrations/oauth2-apps"));else if(this.setState({showConfirmModal:!1}),"error"in e){const{error:t}=e;this.setState({serverError:t.message})}})),Oa(this,"renderExtra",(()=>{const e=m().createElement(E.FormattedMessage,{id:"update_command.update",defaultMessage:"Update"}),t=m().createElement(E.FormattedMessage,{id:"update_oauth_app.confirm",defaultMessage:"Edit OAuth 2.0 application"}),a=m().createElement(E.FormattedMessage,{id:"update_oauth_app.question",defaultMessage:"Your changes may break the existing OAuth 2.0 application. Are you sure you would like to update it?"});return m().createElement(vt.Z,{title:t,message:a,confirmButtonText:e,modalClass:"integrations-backstage-modal",show:this.state.showConfirmModal,onConfirm:this.submitOAuthApp,onCancel:this.confirmModalDismissed})})),this.state={showConfirmModal:!1,serverError:""},this.newApp=this.props.oauthApp}componentDidMount(){this.props.enableOAuthServiceProvider&&this.props.actions.getOAuthApp(this.props.oauthAppId)}render(){return this.props.oauthApp?m().createElement(je,{team:this.props.team,header:Sa,footer:Aa,loading:Ta,renderExtra:this.renderExtra(),action:this.editOAuthApp,serverError:this.state.serverError,initialApp:this.props.oauthApp}):m().createElement(U.Z,null)}}Oa(Fa,"propTypes",{oauthAppId:b().string.isRequired,actions:b().shape({getOAuthApp:b().func.isRequired,editOAuthApp:b().func.isRequired}).isRequired,enableOAuthServiceProvider:b().bool.isRequired});const Pa=(0,s.connect)((function(e,t){const a=(0,r.iE)(e),s=new URLSearchParams(t.location.search).get("id")||"",n="true"===a.EnableOAuthServiceProvider;return{oauthAppId:s,oauthApp:e.entities.integrations.oauthApps[s],enableOAuthServiceProvider:n}}),(function(e){return{actions:(0,g.bindActionCreators)({getOAuthApp:ve.oh,editOAuthApp:ve.N4},e)}}))(Fa);function Ia(e,t,a){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var a=e[Symbol.toPrimitive];if(void 0!==a){var s=a.call(e,"string");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}const Ra={id:"integrations.edit",defaultMessage:"Edit"},xa={id:"update_outgoing_webhook.update",defaultMessage:"Update"},ja={id:"update_outgoing_webhook.updating",defaultMessage:"Updating..."};class Ua extends m().PureComponent{constructor(e){super(e),Ia(this,"editOutgoingHook",(async e=>{this.newHook=e,this.props.hook.id&&(e.id=this.props.hook.id),this.props.hook.token&&(e.token=this.props.hook.token);const t=this.props.hook.trigger_words.length===e.trigger_words.length&&this.props.hook.trigger_words.every(((t,a)=>t===e.trigger_words[a])),a=this.props.hook.callback_urls.length===e.callback_urls.length&&this.props.hook.callback_urls.every(((t,a)=>t===e.callback_urls[a]));this.props.hook.content_type===e.content_type&&t&&a?await this.submitHook():this.handleConfirmModal()})),Ia(this,"handleConfirmModal",(()=>{this.setState({showConfirmModal:!0})})),Ia(this,"confirmModalDismissed",(()=>{this.setState({showConfirmModal:!1})})),Ia(this,"submitHook",(async()=>{this.setState({serverError:""});const{data:e,error:t}=await this.props.actions.updateOutgoingHook(this.newHook);e?(0,te.s)().push("/".concat(this.props.team.name,"/integrations/outgoing_webhooks")):(this.setState({showConfirmModal:!1}),t&&this.setState({serverError:t.message}))})),Ia(this,"renderExtra",(()=>{const e=m().createElement(E.FormattedMessage,{id:"update_outgoing_webhook.update",defaultMessage:"Update"}),t=m().createElement(E.FormattedMessage,{id:"update_outgoing_webhook.confirm",defaultMessage:"Edit Outgoing Webhook"}),a=m().createElement(E.FormattedMessage,{id:"update_outgoing_webhook.question",defaultMessage:"Your changes may break the existing outgoing webhook. Are you sure you would like to update it?"});return m().createElement(vt.Z,{title:t,message:a,confirmButtonText:e,modalClass:"integrations-backstage-modal",show:this.state.showConfirmModal,onConfirm:this.submitHook,onCancel:this.confirmModalDismissed})})),this.state={showConfirmModal:!1,serverError:""}}componentDidMount(){this.props.enableOutgoingWebhooks&&this.props.actions.getOutgoingHook(this.props.hookId)}render(){return this.props.hook?m().createElement(We,{team:this.props.team,header:Ra,footer:xa,loading:ja,renderExtra:this.renderExtra(),action:this.editOutgoingHook,serverError:this.state.serverError,initialHook:this.props.hook,enablePostUsernameOverride:this.props.enablePostUsernameOverride,enablePostIconOverride:this.props.enablePostIconOverride}):m().createElement(U.Z,null)}}Ia(Ua,"propTypes",{hookId:b().string.isRequired,actions:b().shape({updateOutgoingHook:b().func.isRequired,getOutgoingHook:b().func.isRequired}).isRequired,enableOutgoingWebhooks:b().bool,enablePostUsernameOverride:b().bool.isRequired,enablePostIconOverride:b().bool.isRequired});const Da=(0,s.connect)((function(e,t){const a=(0,r.iE)(e),s=new URLSearchParams(t.location.search).get("id"),n="true"===a.EnableOutgoingWebhooks,o="true"===a.EnablePostUsernameOverride,i="true"===a.EnablePostIconOverride;return{hookId:s,hook:e.entities.integrations.outgoingHooks[s],enableOutgoingWebhooks:n,enablePostUsernameOverride:o,enablePostIconOverride:i}}),(function(e){return{actions:(0,g.bindActionCreators)({updateOutgoingHook:ve.z0,getOutgoingHook:ve.f5},e)}}))(Ua);function La(e,t,a){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var a=e[Symbol.toPrimitive];if(void 0!==a){var s=a.call(e,"string");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function qa(e,t,a){return!a||-1!==e.display_name.toLowerCase().indexOf(a)||-1!==e.description.toLowerCase().indexOf(a)||!(!e.channel_id||!t||-1===t.name.toLowerCase().indexOf(a))}class Ha extends m().PureComponent{constructor(){super(...arguments),La(this,"handleDelete",(()=>{this.props.onDelete(this.props.incomingWebhook)}))}render(){const e=this.props.incomingWebhook,t=this.props.channel;if(!qa(e,t,this.props.filter?this.props.filter.toLowerCase():""))return null;let a;a=e.display_name?e.display_name:t?t.display_name:m().createElement(E.FormattedMessage,{id:"installed_incoming_webhooks.unknown_channel",defaultMessage:"A Private Webhook"});let s=null;e.description&&(s=m().createElement("div",{className:"item-details__row"},m().createElement("span",{className:"item-details__description"},e.description)));let o=null;this.props.canChange&&(o=m().createElement("div",{className:"item-actions"},m().createElement(n.Link,{to:"/".concat(this.props.team.name,"/integrations/incoming_webhooks/edit?id=").concat(e.id)},m().createElement(E.FormattedMessage,{id:"installed_integrations.edit",defaultMessage:"Edit"}))," - ",m().createElement(T,{modalMessage:m().createElement(E.FormattedMessage,{id:"installed_incoming_webhooks.delete.confirm",defaultMessage:"This action permanently deletes the incoming webhook and breaks any integrations using it. Are you sure you want to delete it?"}),onDelete:this.handleDelete})));const r=(0,aa.fO)()+"/hooks/"+e.id;return m().createElement("div",{className:"backstage-list__item"},m().createElement("div",{className:"item-details"},m().createElement("div",{className:"item-details__row d-flex flex-column flex-md-row justify-content-between"},m().createElement("strong",{className:"item-details__name"},a),o),s,m().createElement("div",{className:"item-details__row"},m().createElement("span",{className:"item-details__url word-break--all"},m().createElement(E.FormattedMessage,{id:"installed_integrations.url",defaultMessage:"URL: {url}",values:{url:r}}),m().createElement("span",null,m().createElement(ea,{value:r})))),m().createElement("div",{className:"item-details__row"},m().createElement("span",{className:"item-details__creation"},m().createElement(E.FormattedMessage,{id:"installed_integrations.creation",defaultMessage:"Created by {creator} on {createAt, date, full}",values:{creator:this.props.creator.username,createAt:e.create_at}})))))}}function Wa(e,t,a){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var a=e[Symbol.toPrimitive];if(void 0!==a){var s=a.call(e,"string");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}La(Ha,"propTypes",{onDelete:b().func.isRequired,filter:b().string,creator:b().shape({username:b().string.isRequired}).isRequired,canChange:b().bool.isRequired});class Ba extends m().PureComponent{constructor(e){super(e),Wa(this,"deleteIncomingWebhook",(e=>{this.props.actions.removeIncomingHook(e.id)})),Wa(this,"loadPage",(async e=>{this.props.enableIncomingWebhooks&&this.setState({loading:!0},(async()=>{await this.props.actions.loadIncomingHooksAndProfilesForTeam(this.props.team.id,e,200,!0),this.setState({page:e,loading:!1})}))})),Wa(this,"nextPage",(()=>{this.loadPage(this.state.page+1)})),Wa(this,"previousPage",(()=>{this.loadPage(this.state.page-1)})),Wa(this,"incomingWebhookCompare",((e,t)=>{let a=e.display_name;if(!a){const t=this.props.channels[e.channel_id];a=t?t.display_name:M._u({id:"installed_incoming_webhooks.unknown_channel",defaultMessage:"A Private Webhook"})}const s=t.display_name;return a.localeCompare(s)})),Wa(this,"incomingWebhooks",(e=>this.props.incomingHooks.sort(this.incomingWebhookCompare).filter((t=>qa(t,this.props.channels[t.channel_id],e))).map((e=>{const t=this.props.canManageOthersWebhooks||this.props.user.id===e.user_id,a=this.props.channels[e.channel_id];return m().createElement(Ha,{key:e.id,incomingWebhook:e,onDelete:this.deleteIncomingWebhook,creator:this.props.users[e.user_id]||{},canChange:t,team:this.props.team,channel:a})})))),this.state={page:0,loading:!0}}componentDidMount(){this.loadPage(0)}render(){return m().createElement(_t,{header:m().createElement(E.FormattedMessage,{id:"installed_incoming_webhooks.header",defaultMessage:"Installed Incoming Webhooks"}),addText:m().createElement(E.FormattedMessage,{id:"installed_incoming_webhooks.add",defaultMessage:"Add Incoming Webhook"}),addLink:"/"+this.props.team.name+"/integrations/incoming_webhooks/add",addButtonId:"addIncomingWebhook",emptyText:m().createElement(E.FormattedMessage,{id:"installed_incoming_webhooks.empty",defaultMessage:"No incoming webhooks found"}),emptyTextSearch:m().createElement(ta.Z,{id:"installed_incoming_webhooks.emptySearch",defaultMessage:"No incoming webhooks match {searchTerm}"}),helpText:m().createElement(E.FormattedMessage,{id:"installed_incoming_webhooks.help",defaultMessage:"Use incoming webhooks to connect external tools to Mattermost. {buildYourOwn} or visit the {appDirectory} to find self-hosted, third-party apps and integrations.",values:{buildYourOwn:m().createElement(re.Z,{location:"installed_incoming_webhooks",href:ae.I9.SETUP_INCOMING_WEBHOOKS},m().createElement(E.FormattedMessage,{id:"installed_incoming_webhooks.help.buildYourOwn",defaultMessage:"Build Your Own"})),appDirectory:m().createElement(re.Z,{href:"https://mattermost.com/marketplace",location:"installed_incoming_webhooks"},m().createElement(E.FormattedMessage,{id:"installed_incoming_webhooks.help.appDirectory",defaultMessage:"App Directory"}))}}),searchPlaceholder:M._u({id:"installed_incoming_webhooks.search",defaultMessage:"Search Incoming Webhooks"}),loading:this.state.loading,nextPage:this.nextPage,previousPage:this.previousPage,page:this.state.page,pageSize:200,total:this.props.incomingHooksTotalCount},(e=>{const t=this.incomingWebhooks(e);return[t,t.length>0]}))}}Wa(Ba,"propTypes",{incomingHooks:b().array.isRequired,incomingHooksTotalCount:b().number.isRequired,canManageOthersWebhooks:b().bool.isRequired,enableIncomingWebhooks:b().bool.isRequired,actions:b().shape({removeIncomingHook:b().func.isRequired,loadIncomingHooksAndProfilesForTeam:b().func.isRequired}).isRequired});const Za=(0,s.connect)((function(e){const t=(0,l.ev)(e),a=mt(e),s=function(e){return e.entities.integrations.incomingHooksTotalCount}(e),n=(0,r.iE)(e),d=(0,i.Rm)(e,t,o.Pl.MANAGE_OTHERS_INCOMING_WEBHOOKS),m="true"===n.EnableIncomingWebhooks;return{incomingHooks:a,incomingHooksTotalCount:s,channels:(0,ke.IU)(e),users:(0,c.Rf)(e),canManageOthersWebhooks:d,enableIncomingWebhooks:m}}),(function(e){return{actions:(0,g.bindActionCreators)({loadIncomingHooksAndProfilesForTeam:Ut,removeIncomingHook:ve.Ht},e)}}))(Ba);function Ga(e,t,a){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var a=e[Symbol.toPrimitive];if(void 0!==a){var s=a.call(e,"string");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}a(40895);const Ya="***************";function za(e,t){return!t||e.name.toLowerCase().includes(t)}class Va extends m().PureComponent{constructor(e){super(e),Ga(this,"handleShowClientSecret",(e=>{e&&e.preventDefault&&e.preventDefault(),this.setState({clientSecret:this.props.oauthApp.client_secret})})),Ga(this,"handleHideClientSecret",(e=>{e.preventDefault(),this.setState({clientSecret:Ya})})),Ga(this,"handleRegenerate",(e=>{e.preventDefault(),this.props.onRegenerateSecret(this.props.oauthApp.id).then((e=>{let{error:t}=e;t?this.setState({error:t.message}):(this.setState({error:null}),this.handleShowClientSecret())}))})),Ga(this,"handleDelete",(()=>{this.props.onDelete(this.props.oauthApp)})),this.state={clientSecret:Ya}}render(){const{oauthApp:e,creatorName:t}=this.props;let a,s,o;if(this.state.error&&(a=m().createElement($.Z,{error:this.state.error})),!za(e,this.props.filter))return null;s=e.name?e.name:m().createElement(E.FormattedMessage,{id:"installed_integrations.unnamed_oauth_app",defaultMessage:"Unnamed OAuth 2.0 Application"}),e.description&&(o=m().createElement("div",{className:"item-details__row"},m().createElement("span",{className:"item-details__description"},e.description)));const r=m().createElement("div",{className:"item-details__row"},m().createElement("span",{className:"item-details__url word-break--all"},m().createElement(E.FormattedMessage,{id:"installed_integrations.callback_urls",defaultMessage:"Callback URLs: {urls}",values:{urls:e.callback_urls.join(", ")}})));let i,l,c;i=e.is_trusted?M._u({id:"installed_oauth_apps.trusted.yes",defaultMessage:"Yes"}):M._u({id:"installed_oauth_apps.trusted.no",defaultMessage:"No"}),this.state.clientSecret===Ya?(l=m().createElement("button",{id:"showSecretButton",className:"style--none color--link",onClick:this.handleShowClientSecret},m().createElement(E.FormattedMessage,{id:"installed_integrations.showSecret",defaultMessage:"Show Secret"})),c=m().createElement("span",{className:"item-details__token"},m().createElement(E.FormattedMessage,{id:"installedIntegrations.clientSecret",defaultMessage:"Client Secret: {clientSecret}",values:{clientSecret:this.state.clientSecret,b:e=>m().createElement("b",null,e)}}))):(l=m().createElement("button",{id:"hideSecretButton",className:"style--none color--link",onClick:this.handleHideClientSecret},m().createElement(E.FormattedMessage,{id:"installed_integrations.hideSecret",defaultMessage:"Hide Secret"})),c=m().createElement("span",{className:"item-details__token"},m().createElement(E.FormattedMessage,{id:"installedIntegrations.clientSecret",defaultMessage:"Client Secret: {clientSecret}",values:{clientSecret:this.state.clientSecret,b:e=>m().createElement("b",null,e)}}),m().createElement(ea,{tooltip:m().createElement(E.FormattedMessage,{id:"integrations.copy_client_secret",defaultMessage:"Copy Client Secret"}),value:this.state.clientSecret})));const d=m().createElement("button",{id:"regenerateSecretButton",className:"style--none color--link",onClick:this.handleRegenerate},m().createElement(E.FormattedMessage,{id:"installed_integrations.regenSecret",defaultMessage:"Regenerate Secret"}));let u,g;var p;e.icon_url&&(u=m().createElement("div",{className:"integration__icon integration-list__icon"},m().createElement("img",{alt:"get app screenshot",src:e.icon_url}))),this.props.fromApp||(g=m().createElement("div",{className:"item-actions"},l," - ",d," - ",m().createElement(n.Link,{to:"/".concat(null===(p=this.props.team)||void 0===p?void 0:p.name,"/integrations/oauth2-apps/edit?id=").concat(e.id)},m().createElement(E.FormattedMessage,{id:"installed_integrations.edit",defaultMessage:"Edit"}))," - ",m().createElement(T,{modalMessage:m().createElement(E.FormattedMessage,{id:"installed_oauth_apps.delete.confirm",defaultMessage:"This action permanently deletes the OAuth 2.0 application and breaks any integrations using it. Are you sure you want to delete it?"}),onDelete:this.handleDelete})));let h=m().createElement("div",{className:"item-details__row"},m().createElement("span",{className:"item-details__creation"},m().createElement(E.FormattedMessage,{id:"installed_integrations.fromApp",defaultMessage:"Managed by Apps Framework"})));return this.props.fromApp||(h=m().createElement(m().Fragment,null,m().createElement("div",{className:"item-details__row"},m().createElement("span",{className:"item-details__url word-break--all"},m().createElement(E.FormattedMessage,{id:"installedOauthApps.isTrusted",defaultMessage:"Is Trusted: {isTrusted}",values:{isTrusted:i,b:e=>m().createElement("b",null,e)}}))),m().createElement("div",{className:"item-details__row"},m().createElement("span",{className:"item-details__token"},m().createElement(E.FormattedMessage,{id:"installedIntegrations.clientId",defaultMessage:"Client ID: {clientId}",values:{clientId:e.id,b:e=>m().createElement("b",null,e)}}),m().createElement(ea,{tooltip:m().createElement(E.FormattedMessage,{id:"integrations.copy_client_id",defaultMessage:"Copy Client Id"}),value:e.id}))),m().createElement("div",{className:"item-details__row"},c),r,m().createElement("div",{className:"item-details__row"},m().createElement("span",{className:"item-details__creation"},m().createElement(E.FormattedMessage,{id:"installed_integrations.creation",defaultMessage:"Created by {creator} on {createAt, date, full}",values:{creator:t,createAt:e.create_at}}))))),m().createElement("div",{className:"backstage-list__item"},u,m().createElement("div",{className:"item-details"},m().createElement("div",{className:"item-details__row d-flex flex-column flex-md-row justify-content-between"},m().createElement("strong",{className:"item-details__name"},s),g),a,o,h))}}Ga(Va,"propTypes",{fromApp:b().bool.isRequired,creatorName:b().string.isRequired,onRegenerateSecret:b().func.isRequired,onDelete:b().func.isRequired,filter:b().oneOfType([b().string,b().oneOf([null])])});const Ja=(0,s.connect)((function(e,t){const a=t.oauthApp||{};return{creatorName:(0,M.hI)(e,(0,c.PR)(e,a.creator_id))}}))(Va);function Ka(e,t,a){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var a=e[Symbol.toPrimitive];if(void 0!==a){var s=a.call(e,"string");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class Qa extends m().PureComponent{constructor(e){super(e),Ka(this,"deleteOAuthApp",(e=>{e&&e.id&&this.props.actions.deleteOAuthApp(e.id)})),Ka(this,"oauthApps",(e=>Object.values(this.props.oauthApps).filter((t=>za(t,e))).sort(this.oauthAppCompare).map((e=>m().createElement(Ja,{key:e.id,oauthApp:e,onRegenerateSecret:this.props.actions.regenOAuthAppSecret,onDelete:this.deleteOAuthApp,team:this.props.team,creatorName:"",fromApp:this.props.appsOAuthAppIDs.includes(e.id)}))))),this.state={loading:!0}}componentDidMount(){this.props.enableOAuthServiceProvider&&this.props.actions.loadOAuthAppsAndProfiles().then((()=>this.setState({loading:!1})))}oauthAppCompare(e,t){let a=e.name.toString();a||(a=(0,M._u)({id:"installed_integrations.unnamed_oauth_app",defaultMessage:"Unnamed OAuth 2.0 Application"}));let s=t.name.toString();return s||(s=(0,M._u)({id:"installed_integrations.unnamed_oauth_app",defaultMessage:"Unnamed OAuth 2.0 Application"})),a.localeCompare(s)}render(){if(!this.props.team)return null;let e;return this.props.enableOAuthServiceProvider&&this.props.canManageOauth&&(e={addLink:"/"+this.props.team.name+"/integrations/oauth2-apps/add",addText:(0,M._u)({id:"installed_oauth_apps.add",defaultMessage:"Add OAuth 2.0 Application"}),addButtonId:"addOauthApp"}),m().createElement(_t,Object.assign({header:m().createElement(E.FormattedMessage,{id:"installed_oauth2_apps.header",defaultMessage:"OAuth 2.0 Applications"}),helpText:m().createElement(E.FormattedMessage,{id:"installed_oauth_apps.help",defaultMessage:"Create {oauthApplications} to securely integrate bots and third-party apps with Mattermost. Visit the {appDirectory} to find available self-hosted apps.",values:{oauthApplications:m().createElement(re.Z,{href:ae.I9.SETUP_OAUTH2,location:"installed_oauth_apps"},m().createElement(E.FormattedMessage,{id:"installed_oauth_apps.help.oauthApplications",defaultMessage:"OAuth 2.0 applications"})),appDirectory:m().createElement(re.Z,{href:"https://mattermost.com/marketplace/",location:"installed_oauth_apps"},m().createElement(E.FormattedMessage,{id:"installed_oauth_apps.help.appDirectory",defaultMessage:"App Directory"}))}}),emptyText:m().createElement(E.FormattedMessage,{id:"installed_oauth_apps.empty",defaultMessage:"No OAuth 2.0 Applications found"}),emptyTextSearch:m().createElement(ta.Z,{id:"installed_oauth_apps.emptySearch",defaultMessage:"No OAuth 2.0 Applications match {searchTerm}"}),searchPlaceholder:(0,M._u)({id:"installed_oauth_apps.search",defaultMessage:"Search OAuth 2.0 Applications"}),loading:this.state.loading},e),(e=>{const t=this.oauthApps(e);return[t,t.length>0]}))}}Ka(Qa,"propTypes",{appsOAuthAppIDs:b().arrayOf(b().string).isRequired,canManageOauth:b().bool.isRequired,enableOAuthServiceProvider:b().bool.isRequired,actions:b().shape({loadOAuthAppsAndProfiles:b().func.isRequired,regenOAuthAppSecret:b().func.isRequired,deleteOAuthApp:b().func.isRequired}).isRequired});const Xa=(0,s.connect)((function(e){const t="true"===(0,r.iE)(e).EnableOAuthServiceProvider;return{canManageOauth:(0,i.AN)(e,{permission:o.Pl.MANAGE_OAUTH}),oauthApps:ct(e),appsOAuthAppIDs:ut(e),enableOAuthServiceProvider:t,team:(0,l.kA)(e)}}),(function(e){return{actions:(0,g.bindActionCreators)({loadOAuthAppsAndProfiles:qt,regenOAuthAppSecret:ve.H,deleteOAuthApp:ve.qu},e)}}))(Qa);function $a(e,t,a){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var a=e[Symbol.toPrimitive];if(void 0!==a){var s=a.call(e,"string");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function es(e,t,a){if(!a)return!0;const{display_name:s,description:n,trigger_words:o}=e;if(s&&-1!==s.toLowerCase().indexOf(a)||n&&-1!==n.toLowerCase().indexOf(a))return!0;if(o)for(const e of o)if(-1!==e.toLowerCase().indexOf(a))return!0;return!(!t||!t.name||-1===t.name.toLowerCase().indexOf(a))}class ts extends m().PureComponent{constructor(){super(...arguments),$a(this,"handleRegenToken",(e=>{e.preventDefault(),this.props.onRegenToken(this.props.outgoingWebhook)})),$a(this,"handleDelete",(()=>{this.props.onDelete(this.props.outgoingWebhook)}))}makeDisplayName(e,t){return e.display_name?e.display_name:t?t.display_name:m().createElement(E.FormattedMessage,{id:"installed_outgoing_webhooks.unknown_channel",defaultMessage:"A Private Webhook"})}render(){const e=this.props.outgoingWebhook,t=this.props.channel,a=this.props.filter?this.props.filter.toLowerCase():"";if(e&&!es(e,t,a))return null;const s=this.makeDisplayName(e,t);let o=null;e.description&&(o=m().createElement("div",{className:"item-details__row"},m().createElement("span",{className:"item-details__description"},e.description)));let r=null;e.trigger_words&&e.trigger_words.length>0&&(r=m().createElement("div",{className:"item-details__row"},m().createElement("span",{className:"item-details__trigger-words"},m().createElement(E.FormattedMessage,{id:"installed_integrations.triggerWords",defaultMessage:"Trigger Words: {triggerWords}",values:{triggerWords:e.trigger_words.join(", ")}}))));const i=m().createElement("div",{className:"item-details__row"},m().createElement("span",{className:"item-details__url word-break--all"},m().createElement(E.FormattedMessage,{id:"installed_integrations.callback_urls",defaultMessage:"Callback URLs: {urls}",values:{urls:e.callback_urls.join(", ")}})));let l;0===e.trigger_when?l=m().createElement(E.FormattedMessage,{id:"add_outgoing_webhook.triggerWordsTriggerWhenFullWord",defaultMessage:"First word matches a trigger word exactly"}):1===e.trigger_when&&(l=m().createElement(E.FormattedMessage,{id:"add_outgoing_webhook.triggerWordsTriggerWhenStartsWith",defaultMessage:"First word starts with a trigger word"}));let c=null;return this.props.canChange&&(c=m().createElement("div",{className:"item-actions"},m().createElement("button",{className:"style--none color--link",onClick:this.handleRegenToken},m().createElement(E.FormattedMessage,{id:"installed_integrations.regenToken",defaultMessage:"Regenerate Token"}))," - ",m().createElement(n.Link,{to:"/".concat(this.props.team.name,"/integrations/outgoing_webhooks/edit?id=").concat(e.id)},m().createElement(E.FormattedMessage,{id:"installed_integrations.edit",defaultMessage:"Edit"}))," - ",m().createElement(T,{modalMessage:m().createElement(E.FormattedMessage,{id:"installed_outgoing_webhooks.delete.confirm",defaultMessage:"This action permanently deletes the outgoing webhook and breaks any integrations using it. Are you sure you want to delete it?"}),onDelete:this.handleDelete}))),m().createElement("div",{className:"backstage-list__item"},m().createElement("div",{className:"item-details"},m().createElement("div",{className:"item-details__row d-flex flex-column flex-md-row justify-content-between"},m().createElement("strong",{className:"item-details__name"},s),c),o,m().createElement("div",{className:"item-details__row"},m().createElement("span",{className:"item-details__content_type"},m().createElement(E.FormattedMessage,{id:"installed_integrations.content_type",defaultMessage:"Content-Type: {contentType}",values:{contentType:e.content_type||"application/x-www-form-urlencoded"}}))),r,m().createElement("div",{className:"item-details__row"},m().createElement("span",{className:"item-details__trigger-when"},m().createElement(E.FormattedMessage,{id:"installed_integrations.triggerWhen",defaultMessage:"Trigger When: {triggerWhen}",values:{triggerWhen:l}}))),m().createElement("div",{className:"item-details__row"},m().createElement("span",{className:"item-details__token"},m().createElement(E.FormattedMessage,{id:"installed_integrations.token",defaultMessage:"Token: {token}",values:{token:e.token}}),m().createElement(ea,{value:e.token}))),m().createElement("div",{className:"item-details__row"},m().createElement("span",{className:"item-details__creation"},m().createElement(E.FormattedMessage,{id:"installed_integrations.creation",defaultMessage:"Created by {creator} on {createAt, date, full}",values:{creator:this.props.creator.username,createAt:e.create_at}}))),i))}}function as(e,t,a){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var a=e[Symbol.toPrimitive];if(void 0!==a){var s=a.call(e,"string");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}$a(ts,"propTypes",{onRegenToken:b().func.isRequired,onDelete:b().func.isRequired,canChange:b().bool.isRequired,filter:b().string});class ss extends m().PureComponent{constructor(e){super(e),as(this,"regenOutgoingWebhookToken",(e=>{this.props.actions.regenOutgoingHookToken(e.id)})),as(this,"removeOutgoingHook",(e=>{this.props.actions.removeOutgoingHook(e.id)})),as(this,"outgoingWebhookCompare",((e,t)=>{let a=e.display_name;if(!a){const t=this.props.channels[e.channel_id];a=t?t.display_name:(0,M._u)({id:"installed_outgoing_webhooks.unknown_channel",defaultMessage:"A Private Webhook"})}let s=t.display_name;if(!s){const e=this.props.channels[t.channel_id];s=e?e.display_name:(0,M._u)({id:"installed_outgoing_webhooks.unknown_channel",defaultMessage:"A Private Webhook"})}return a.localeCompare(s)})),as(this,"outgoingWebhooks",(e=>this.props.outgoingWebhooks.sort(this.outgoingWebhookCompare).filter((t=>es(t,this.props.channels[t.channel_id],e))).map((e=>{const t=this.props.canManageOthersWebhooks||this.props.user.id===e.creator_id,a=this.props.channels[e.channel_id];return m().createElement(ts,{key:e.id,outgoingWebhook:e,onRegenToken:this.regenOutgoingWebhookToken,onDelete:this.removeOutgoingHook,creator:this.props.users[e.creator_id]||{},canChange:t,team:this.props.team,channel:a})})))),this.state={loading:!0}}componentDidMount(){this.props.enableOutgoingWebhooks&&this.props.actions.loadOutgoingHooksAndProfilesForTeam(this.props.teamId,ae.Constants.Integrations.START_PAGE_NUM,ae.Constants.Integrations.PAGE_SIZE).then((()=>this.setState({loading:!1})))}render(){return m().createElement(_t,{header:m().createElement(E.FormattedMessage,{id:"installed_outgoing_webhooks.header",defaultMessage:"Installed Outgoing Webhooks"}),addText:m().createElement(E.FormattedMessage,{id:"installed_outgoing_webhooks.add",defaultMessage:"Add Outgoing Webhook"}),addLink:"/"+this.props.team.name+"/integrations/outgoing_webhooks/add",addButtonId:"addOutgoingWebhook",emptyText:m().createElement(E.FormattedMessage,{id:"installed_outgoing_webhooks.empty",defaultMessage:"No outgoing webhooks found"}),emptyTextSearch:m().createElement(ta.Z,{id:"installed_outgoing_webhooks.emptySearch",defaultMessage:"No outgoing webhooks match {searchTerm}"}),helpText:m().createElement(E.FormattedMessage,{id:"installed_outgoing_webhooks.help",defaultMessage:"Use outgoing webhooks to connect external tools to Mattermost. {buildYourOwn} or visit the {appDirectory} to find self-hosted, third-party apps and integrations.",values:{buildYourOwn:m().createElement(re.Z,{href:ae.I9.SETUP_OUTGOING_WEBHOOKS,location:"installed_outgoing_webhooks"},m().createElement(E.FormattedMessage,{id:"installed_outgoing_webhooks.help.buildYourOwn",defaultMessage:"Build your own"})),appDirectory:m().createElement(re.Z,{href:"https://mattermost.com/marketplace",location:"installed_outgoing_webhooks"},m().createElement(E.FormattedMessage,{id:"installed_outgoing_webhooks.help.appDirectory",defaultMessage:"App Directory"}))}}),searchPlaceholder:(0,M._u)({id:"installed_outgoing_webhooks.search",defaultMessage:"Search Outgoing Webhooks"}),loading:this.state.loading},(e=>{const t=this.outgoingWebhooks(e);return[t,t.length>0]}))}}as(ss,"propTypes",{canManageOthersWebhooks:b().bool.isRequired,outgoingWebhooks:b().array.isRequired,teamId:b().string.isRequired,actions:b().shape({removeOutgoingHook:b().func.isRequired,loadOutgoingHooksAndProfilesForTeam:b().func.isRequired,regenOutgoingHookToken:b().func.isRequired}).isRequired,enableOutgoingWebhooks:b().bool.isRequired});const ns=(0,s.connect)((function(e){const t=(0,r.iE)(e),a=(0,l.ev)(e),s=(0,i.Rm)(e,a,o.Pl.MANAGE_OTHERS_OUTGOING_WEBHOOKS),n=it(e),d=Object.keys(n).map((e=>n[e])).filter((e=>e.team_id===a)),m="true"===t.EnableOutgoingWebhooks;return{outgoingWebhooks:d,channels:(0,ke.IU)(e),users:(0,c.Rf)(e),teamId:a,canManageOthersWebhooks:s,enableOutgoingWebhooks:m}}),(function(e){return{actions:(0,g.bindActionCreators)({loadOutgoingHooksAndProfilesForTeam:Dt,removeOutgoingHook:ve.vn,regenOutgoingHookToken:ve.Bm},e)}}))(ss);function os(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,s)}return a}function rs(e){for(var t=1;t{const t={name:e.name||"",audienceUrls:e.audiences?e.audiences.join("\n"):"",oauthTokenUrl:e.oauth_token_url||"",clientId:e.client_id||"",clientSecret:e.client_secret||"",grantType:"client_credentials"},[a,s]=(0,d.useState)(t);return(0,d.useMemo)((()=>[a,e=>{s((t=>rs(rs({},t),e)))}]),[a])})(e.initialConnection||cs),[o,r]=(0,d.useState)(""),[i,l]=(0,d.useState)(""),[c,u]=(0,d.useState)(!1),[g,p]=(0,d.useState)(ls.INITIAL),[h,f]=(0,d.useState)(!1),[b,_]=(0,d.useState)(!1),v=(0,E.useIntl)(),M=(0,s.useDispatch)(),k=!e.initialConnection,y=e=>{if(!t.name)return u(!1),void r(m().createElement(E.FormattedMessage,{id:"add_outgoing_oauth_connection.name.required",defaultMessage:"Name for the OAuth connection is required."}));if(!t.clientId)return u(!1),void r(m().createElement(E.FormattedMessage,{id:"add_outgoing_oauth_connection.client_id.required",defaultMessage:"Client Id for the OAuth connection is required."}));if((k||h)&&!t.clientSecret)return u(!1),void r(m().createElement(E.FormattedMessage,{id:"add_outgoing_oauth_connection.client_secret.required",defaultMessage:"Client Secret for the OAuth connection is required."}));if(!t.grantType)return u(!1),void r(m().createElement(E.FormattedMessage,{id:"add_outgoing_oauth_connection.grant_type.required",defaultMessage:"Grant Type for the OAuth connection is required."}));if(!t.oauthTokenUrl)return u(!1),void r(m().createElement(E.FormattedMessage,{id:"add_outgoing_oauth_connection.oauth_token_url.required",defaultMessage:"OAuth Token URL for the OAuth connection is required."}));const a=[];for(let e of t.audienceUrls.split("\n"))e=e.trim(),e.length>0&&a.push(e);return e&&0===a.length?(u(!1),void r(m().createElement(E.FormattedMessage,{id:"add_outgoing_oauth_connection.audienceUrls.required",defaultMessage:"One or more audience URLs are required."}))):{name:t.name,audiences:a,client_id:t.clientId,client_secret:t.clientSecret,grant_type:t.grantType,oauth_token_url:t.oauthTokenUrl}},N=()=>{_(!1)},w=()=>{if(c)return;const t=y(!0);t&&(r(""),g===ls.VALIDATED||!k&&g===ls.INITIAL||b?(u(!0),e.submitAction(t).then((()=>u(!1)))):_(!0))},C=e=>{null==e||e.preventDefault(),g!==ls.DIRTY&&p(ls.DIRTY),i&&l("")},O=e.header,S=e.footer;let A=m().createElement("input",{id:"client_secret",type:"text",autoComplete:"off",className:"form-control",value:t.clientSecret,onChange:e=>{C(),a({clientSecret:e.target.value})}});return k||h||(A=m().createElement(m().Fragment,null,m().createElement("input",{id:"client_secret",disabled:!0,autoComplete:"off",type:"text",className:"form-control disabled",value:"•".repeat(40)}),m().createElement("span",{onClick:()=>{f(!0)},className:"outgoing-oauth-connections-edit-secret"},m().createElement("i",{className:"icon icon-pencil-outline"})))),m().createElement("div",{className:"backstage-content"},m().createElement(X,null,m().createElement(n.Link,{to:"/".concat(e.team.name,"/integrations/outgoing-oauth2-connections")},m().createElement(E.FormattedMessage,{id:"add_outgoing_oauth_connection.header",defaultMessage:"Outgoing OAuth Connections"})),m().createElement(E.FormattedMessage,{id:O.id,defaultMessage:O.defaultMessage})),m().createElement("div",{className:"backstage-form"},m().createElement("form",{className:"form-horizontal"},m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"name"},m().createElement(E.FormattedMessage,{id:"add_outgoing_oauth_connection.name.label",defaultMessage:"Name"})),m().createElement("div",{className:"col-md-5 col-sm-8"},m().createElement("input",{id:"name",type:"text",className:"form-control",value:t.name,onChange:e=>{a({name:e.target.value})}}),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_outgoing_oauth_connection.name.help",defaultMessage:"Specify the name for your OAuth connection."})))),m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"client_id"},m().createElement(E.FormattedMessage,{id:"add_outgoing_oauth_connection.client_id.label",defaultMessage:"Client ID"})),m().createElement("div",{className:"col-md-5 col-sm-8"},m().createElement("input",{id:"client_id",type:"text",autoComplete:"off",className:"form-control",value:t.clientId,onChange:e=>{C(),a({clientId:e.target.value})}}),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_outgoing_oauth_connection.client_id.help",defaultMessage:"Specify the Client ID for your OAuth connection."})))),m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"client_secret"},m().createElement(E.FormattedMessage,{id:"add_outgoing_oauth_connection.client_secret.label",defaultMessage:"Client Secret"})),m().createElement("div",{className:"col-md-5 col-sm-8"},A,m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_outgoing_oauth_connection.client_secret.help",defaultMessage:"Specify the Client Secret for your OAuth connection."})))),m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"oauth_token_url"},m().createElement(E.FormattedMessage,{id:"add_outgoing_oauth_connection.oauth_token_url.label",defaultMessage:"OAuth Token URL"})),m().createElement("div",{className:"col-md-5 col-sm-8"},m().createElement("input",{id:"token_url",type:"text",className:"form-control",value:t.oauthTokenUrl,onChange:e=>{C(),a({oauthTokenUrl:e.target.value})}}),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_outgoing_oauth_connection.oauth_token_url.help",defaultMessage:"Specify the OAuth Token URL for your OAuth connection."})),m().createElement("div",{className:"outgoing-oauth-connection-validate-button-container"},m().createElement(ms,{onClick:async t=>{var a;if(t.preventDefault(),g===ls.VALIDATING)return;r(""),p(ls.VALIDATING);const s=y(!1);if(!s)return void p(ls.INITIAL);null!==(a=e.initialConnection)&&void 0!==a&&a.id&&(s.id=e.initialConnection.id);const{error:n}=await M((0,ve.K7)(e.team.id,s));n?(p(ls.ERROR),l(n.message)):p(ls.VALIDATED)},setUnvalidated:C,status:g})))),m().createElement("div",{className:"form-group"},m().createElement("label",{className:"control-label col-sm-4",htmlFor:"audienceUrls"},m().createElement(E.FormattedMessage,{id:"add_outgoing_oauth_connection.audienceUrls.label",defaultMessage:"Audience URLs (One Per Line)"})),m().createElement("div",{className:"col-md-5 col-sm-8"},m().createElement("textarea",{id:"audienceUrls",rows:3,className:"form-control",value:t.audienceUrls,onChange:e=>{a({audienceUrls:e.target.value})}}),m().createElement("div",{className:"form__help"},m().createElement(E.FormattedMessage,{id:"add_outgoing_oauth_connection.audienceUrls.help",defaultMessage:"The URLs which will receive requests with the OAuth token, e.g. your custom slash command handler endpoint. Must be a valid URL and start with http:// or https://."})))),m().createElement("div",{className:"backstage-form__footer"},m().createElement($.Z,{type:"backstage",errors:[e.serverError,o]}),m().createElement(n.Link,{className:"btn btn-tertiary",to:"/".concat(e.team.name,"/integrations/outgoing-oauth2-connections")},m().createElement(E.FormattedMessage,{id:"add_outgoing_oauth_connection.cancel",defaultMessage:"Cancel"})),m().createElement(ee.Z,{className:"btn btn-primary",type:"submit",spinning:c,spinningText:v.formatMessage(e.loading),onClick:e=>{e.preventDefault(),w()},id:"saveConnection"},m().createElement(E.FormattedMessage,{id:S.id,defaultMessage:S.defaultMessage})),e.renderExtra))),m().createElement("div",{className:"outgoing-oauth-connections-docs-link"},m().createElement(E.FormattedMessage,{id:"add_outgoing_oauth_connection.documentation_link",defaultMessage:"Get help with configuring outgoing OAuth connections.",values:{link:e=>m().createElement("a",{href:"https://mattermost.com/pl/outgoing-oauth-connections"},e)}})),m().createElement(vt.Z,{show:b,message:v.formatMessage({id:"add_outgoing_oauth_connection.save_without_validation_warning",defaultMessage:"This connection has not been validated, Do you want to save anyway?"}),title:v.formatMessage({id:"add_outgoing_oauth_connection.confirm_save",defaultMessage:"Save Outgoing OAuth Connection"}),confirmButtonText:v.formatMessage({id:"add_outgoing_oauth_connection.save_anyway",defaultMessage:"Save anyway"}),onExited:N,onCancel:N,onConfirm:w}))}ds.propTypes={renderExtra:b().element,serverError:b().string.isRequired,submitAction:b().func.isRequired};const ms=e=>{let{status:t,onClick:a,setUnvalidated:s}=e;return t===ls.ERROR?m().createElement("span",{className:"outgoing-oauth-connection-validation-message validation-error"},m().createElement(Bt.AlertOutlineIcon,{size:20}),m().createElement(E.FormattedMessage,{id:"add_outgoing_oauth_connection.validation_error",defaultMessage:"Connection not validated. Please check the server logs for details or try again.",values:{link:e=>m().createElement("a",{onClick:s},e)}})):t===ls.VALIDATED?m().createElement("span",{className:"outgoing-oauth-connection-validation-message validation-success"},m().createElement(Bt.CheckCircleOutlineIcon,{size:20}),m().createElement(E.FormattedMessage,{id:"add_outgoing_oauth_connection.validated_connection",defaultMessage:"Validated connection"})):t===ls.VALIDATING?m().createElement("span",{className:"outgoing-oauth-connection-validation-message"},m().createElement(Zt.Z,{text:m().createElement(E.FormattedMessage,{id:"add_outgoing_oauth_connection.validating",defaultMessage:"Validating..."})})):m().createElement("button",{className:"btn btn-tertiary btn-sm",type:"button",onClick:a,id:"validateConnection"},m().createElement(E.FormattedMessage,{id:"add_outgoing_oauth_connection.validate",defaultMessage:"Validate Connection"}))};ms.propTypes={status:b().oneOf(["initial","dirty","validating","validated","error"]).isRequired,onClick:b().func.isRequired,setUnvalidated:b().func.isRequired};const us=(0,E.defineMessage)({id:"add_outgoing_oauth_connection.add",defaultMessage:"Add"}),gs=(0,E.defineMessage)({id:"add_outgoing_oauth_connection.save",defaultMessage:"Save"}),ps=(0,E.defineMessage)({id:"add_outgoing_oauth_connection.saving",defaultMessage:"Saving..."}),hs=e=>{let{team:t}=e;const a=(0,s.useDispatch)(),o=(0,n.useHistory)(),[r,i]=(0,d.useState)("");return m().createElement(ds,{team:t,header:us,footer:gs,loading:ps,submitAction:async e=>{i("");const{data:s,error:n}=await a((0,ve.VT)(t.id,e));s?o.push("/".concat(t.name,"/integrations/confirm?type=outgoing-oauth2-connections&id=").concat(s.id)):n&&i(n.message)},serverError:r})},fs=(0,E.defineMessage)({id:"integrations.edit",defaultMessage:"Edit"}),bs=(0,E.defineMessage)({id:"edit_outgoing_oauth_connection.update",defaultMessage:"Update"}),Es=(0,E.defineMessage)({id:"edit_outgoing_oauth_connection.updating",defaultMessage:"Updating..."}),_s=e=>{const t=(a=e.location.search,new URLSearchParams(a).get("id")||"");var a;const n=(0,s.useSelector)(dt)[t],[o,i]=(0,d.useState)(n),[l,c]=(0,d.useState)(!1),[u,g]=(0,d.useState)(""),p=(0,s.useSelector)(r.iE).EnableOAuthServiceProvider,h=(0,s.useDispatch)();(0,d.useEffect)((()=>{p&&h((0,ve.DV)(e.team.id,t))}),[t,p,e.team,h]);const f=()=>{c(!1)},b=async t=>{g("");const a=await h((0,ve.Pv)(e.team.id,t));if("data"in a&&a.data)(0,te.s)().push("/".concat(e.team.name,"/integrations/outgoing-oauth2-connections"));else if(f(),"error"in a){const{error:e}=a;g(e.message)}};return n?m().createElement(ds,{team:e.team,header:fs,footer:bs,loading:Es,renderExtra:(()=>{const e=m().createElement(E.FormattedMessage,{id:"update_command.update",defaultMessage:"Update"}),t=m().createElement(E.FormattedMessage,{id:"update_outgoing_oauth_connection.confirm",defaultMessage:"Edit Outgoing OAuth Connection"}),a=m().createElement(E.FormattedMessage,{id:"update_outgoing_oauth_connection.question",defaultMessage:"Your changes may break any existing integrations using this connection. Are you sure you would like to update it?"});return m().createElement(vt.Z,{title:t,message:a,confirmButtonText:e,modalClass:"integrations-backstage-modal",show:l,onConfirm:()=>b(o),onCancel:f})})(),submitAction:async e=>{i(e),n.id&&(e.id=n.id),n.audiences.length===e.audiences.length&&n.audiences.every(((t,a)=>t===e.audiences[a]))?await b(e):c(!0)},serverError:u,initialConnection:n}):m().createElement(U.Z,null)};function vs(e,t){return!t||e.name.toLowerCase().includes(t)}const Ms=e=>{const{outgoingOAuthConnection:t,creatorName:a}=e;if(!vs(t,e.filter))return null;let s;s=t.name?t.name:m().createElement(E.FormattedMessage,{id:"installed_integrations.unnamed_outgoing_oauth_connection",defaultMessage:"Unnamed Outgoing OAuth Connection"});const o=m().createElement(m().Fragment,null,m().createElement("div",{className:"item-details__row"},m().createElement("span",{className:"item-details__url word-break--all"},m().createElement(E.FormattedMessage,{id:"installed_integrations.audience_urls",defaultMessage:"Audience URLs: {urls}",values:{urls:t.audiences.join(", ")}}))),m().createElement("div",{className:"item-details__row"},m().createElement("span",{className:"item-details__url word-break--all"},m().createElement(E.FormattedMessage,{id:"installed_integrations.token_url",defaultMessage:"Token URL: {url}",values:{url:t.oauth_token_url}})))),r=m().createElement("div",{className:"item-actions"},m().createElement(n.Link,{to:"/".concat(e.team.name,"/integrations/outgoing-oauth2-connections/edit?id=").concat(t.id)},m().createElement(E.FormattedMessage,{id:"installed_integrations.edit",defaultMessage:"Edit"}))," - ",m().createElement(T,{subtitleText:m().createElement(E.FormattedMessage,{id:"installed_outgoing_oauth_connections.delete.confirm",defaultMessage:"Are you sure you want to delete {connectionName}?",values:{connectionName:m().createElement("strong",null,e.outgoingOAuthConnection.name)}}),modalMessage:m().createElement(E.FormattedMessage,{id:"installed_outgoing_oauth_connections.delete.wanring",defaultMessage:"Deleting this connection will break any integrations using it"}),onDelete:()=>{e.onDelete(e.outgoingOAuthConnection)}})),i=m().createElement(m().Fragment,null,m().createElement("div",{className:"item-details__row"},m().createElement("span",{className:"item-details__token"},m().createElement(E.FormattedMessage,{id:"installedIntegrations.clientId",defaultMessage:"Client ID: {clientId}",values:{clientId:t.client_id,b:e=>m().createElement("b",null,e)}}))),m().createElement("div",{className:"item-details__row"},m().createElement("span",{className:"item-details__token"},m().createElement(E.FormattedMessage,{id:"installed_outgoing_oauth_connections.client_secret",defaultMessage:"Client Secret: ********"}))),"password"===t.grant_type&&m().createElement(m().Fragment,null,m().createElement("div",{className:"item-details__row"},m().createElement("span",{className:"item-details__token"},m().createElement(ta.Z,{id:"installed_outgoing_oauth_connections.username",defaultMessage:"Username: **{username}**",values:{username:t.credentials_username}}))),m().createElement("div",{className:"item-details__row"},m().createElement("span",{className:"item-details__token"},m().createElement(E.FormattedMessage,{id:"installed_outgoing_oauth_connections.password",defaultMessage:"Password: ********"})))),o,m().createElement("div",{className:"item-details__row"},m().createElement("span",{className:"item-details__creation"},m().createElement(E.FormattedMessage,{id:"installed_integrations.creation",defaultMessage:"Created by {creator} on {createAt, date, full}",values:{creator:a,createAt:t.create_at}}))));return m().createElement("div",{className:"backstage-list__item"},m().createElement("div",{className:"item-details"},m().createElement("div",{className:"item-details__row d-flex flex-column flex-md-row justify-content-between"},m().createElement("strong",{className:"item-details__name"},s),r),i))};Ms.propTypes={creatorName:b().string.isRequired,filter:b().oneOfType([b().string,b().oneOf([null])]),onDelete:b().func.isRequired};const ks=Ms,ys=e=>{const[t,a]=(0,d.useState)(!0),n=(0,s.useSelector)((t=>(0,i.Rm)(t,e.team.id,o.Pl.MANAGE_OUTGOING_OAUTH_CONNECTIONS))),l="true"===(0,s.useSelector)(r.iE).EnableOutgoingOAuthConnections,u=(0,s.useSelector)(dt),g=(0,s.useDispatch)(),p=(0,E.useIntl)();(0,d.useEffect)((()=>{n&&g(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:jt;return async s=>{const{data:n}=await s(ve.IS(e,t,a));var o;return n&&s((o=n,async(e,t)=>{const a=t(),s={};for(let e=0;ea(!1)))}),[n,e.team,g]);const h=e=>{e&&e.id&&g((0,ve.pn)(e.id))},f=(e,t)=>{let a=e.name.toString();a||(a=p.formatMessage({id:"installed_integrations.unnamed_outgoing_oauth_connection",defaultMessage:"Unnamed Outgoing OAuth Connection"}));let s=t.name.toString();return s||(s=p.formatMessage({id:"installed_integrations.unnamed_outgoing_oauth_connection",defaultMessage:"Unnamed Outgoing OAuth Connection"})),a.localeCompare(s)};let b;return l&&n&&(b={addLink:"/"+e.team.name+"/integrations/outgoing-oauth2-connections/add",addText:p.formatMessage({id:"installed_outgoing_oauth_connections.add",defaultMessage:"Add Outgoing OAuth Connection"}),addButtonId:"addOutgoingOauthConnection"}),m().createElement(_t,Object.assign({header:m().createElement(E.FormattedMessage,{id:"installed_outgoing_oauth_connections.header",defaultMessage:"Outgoing OAuth Connections"}),helpText:m().createElement(E.FormattedMessage,{id:"installed_outgoing_oauth_connections.help",defaultMessage:"Create {outgoingOauthConnections} to securely integrate bots and third-party apps with Mattermost.",values:{outgoingOauthConnections:m().createElement(re.Z,{href:ae.I9.SETUP_OAUTH2,location:"installed_outgoing_oauth_connections"},m().createElement(E.FormattedMessage,{id:"installed_outgoing_oauth_connections.help.outgoingOauthConnections",defaultMessage:"Outgoing OAuth Connections"}))}}),emptyText:m().createElement(E.FormattedMessage,{id:"installed_outgoing_oauth_connections.empty",defaultMessage:"No Outgoing OAuth Connections found"}),emptyTextSearch:m().createElement(E.FormattedMessage,{id:"installed_outgoing_oauth_connections.emptySearch",defaultMessage:"No Outgoing OAuth Connections match {searchTerm}"}),searchPlaceholder:p.formatMessage({id:"installed_outgoing_oauth_connections.search",defaultMessage:"Search Outgoing OAuth Connections"}),loading:t},b),(t=>{const a=(t=>Object.values(u).filter((e=>vs(e,t))).sort(f).map((t=>m().createElement(ks,{key:t.id,outgoingOAuthConnection:t,onDelete:h,team:e.team,creatorName:""}))))(t);return[a,a.length>0]}))};var Ns=a(26742),ws=a(61274),Cs=a(60042),Os=a.n(Cs);const Ss=e=>{let{name:t,title:a,icon:s,parentLink:o,children:r=[]}=e;const i=o+"/"+t;return m().createElement("li",{className:"backstage-sidebar__category"},m().createElement(n.NavLink,{to:i,className:"category-title",activeClassName:"category-title--active"},m().createElement("i",{className:Os()("fa ",s)}),m().createElement("span",{className:"category-title__text"},a)),r&&r.length>0&&m().createElement(n.Route,{path:i,render:()=>m().createElement("ul",{className:"sections"},m().Children.map(r,(e=>e?m().cloneElement(e,{parentLink:i}):e)))}))},As=e=>{let{name:t,title:a,subsection:s=!1,parentLink:o="",children:r=[],id:i}=e;const l=o+"/"+t;let c=null;r.length>0&&(c=m().createElement("ul",{className:"subsections"},m().Children.map(r,(e=>m().cloneElement(e,{parentLink:l,subsection:!0})))));const d=s?"subsection":"section";return m().createElement("li",{className:d,id:i},m().createElement(n.NavLink,{className:"".concat(d,"-title"),activeClassName:"".concat(d,"-title--active"),to:l},m().createElement("span",{className:"".concat(d,"-title__text")},a)),c)};class Ts extends m().PureComponent{renderCustomEmoji(){return this.props.enableCustomEmoji&&this.props.canCreateOrDeleteCustomEmoji?m().createElement(Ss,{name:"emoji",parentLink:"/"+this.props.team.name,icon:"fa-smile-o",title:m().createElement(E.FormattedMessage,{id:"backstage_sidebar.emoji",defaultMessage:"Custom Emoji"})}):null}renderIntegrations(){if(!this.props.canManageIntegrations)return null;let e;this.props.enableIncomingWebhooks&&(e=m().createElement(le.Z,{permissions:[o.Pl.MANAGE_INCOMING_WEBHOOKS],teamId:this.props.team.id},m().createElement(As,{name:"incoming_webhooks",parentLink:"/"+this.props.team.name+"/integrations",title:m().createElement(E.FormattedMessage,{id:"backstage_sidebar.integrations.incoming_webhooks",defaultMessage:"Incoming Webhooks"}),id:"incomingWebhooks"})));let t=null;this.props.enableOutgoingWebhooks&&(t=m().createElement(le.Z,{permissions:[o.Pl.MANAGE_OUTGOING_WEBHOOKS],teamId:this.props.team.id},m().createElement(As,{name:"outgoing_webhooks",parentLink:"/"+this.props.team.name+"/integrations",title:m().createElement(E.FormattedMessage,{id:"backstage_sidebar.integrations.outgoing_webhooks",defaultMessage:"Outgoing Webhooks"}),id:"outgoingWebhooks"})));let a=null;this.props.enableCommands&&(a=m().createElement(le.Z,{permissions:[o.Pl.MANAGE_SLASH_COMMANDS],teamId:this.props.team.id},m().createElement(As,{name:"commands",parentLink:"/"+this.props.team.name+"/integrations",title:m().createElement(E.FormattedMessage,{id:"backstage_sidebar.integrations.commands",defaultMessage:"Slash Commands"}),id:"slashCommands"})));let s=null;this.props.enableOAuthServiceProvider&&(s=m().createElement(ie.Z,{permissions:[o.Pl.MANAGE_OAUTH]},m().createElement(As,{name:"oauth2-apps",parentLink:"/"+this.props.team.name+"/integrations",title:m().createElement(E.FormattedMessage,{id:"backstage_sidebar.integrations.oauthApps",defaultMessage:"OAuth 2.0 Applications"}),id:"oauthApps"})));const n=m().createElement(ie.Z,{permissions:["manage_bots","manage_others_bots"]},m().createElement(As,{name:"bots",parentLink:"/"+this.props.team.name+"/integrations",title:m().createElement(E.FormattedMessage,{id:"backstage_sidebar.bots",defaultMessage:"Bot Accounts"}),id:"botAccounts"}));let r=null;return this.props.enableOutgoingOAuthConnections&&(r=m().createElement(le.Z,{permissions:[o.Pl.MANAGE_OUTGOING_OAUTH_CONNECTIONS],teamId:this.props.team.id},m().createElement(As,{name:"outgoing-oauth2-connections",parentLink:"/"+this.props.team.name+"/integrations",title:m().createElement(E.FormattedMessage,{id:"backstage_sidebar.integrations.outgoingOauthConnections",defaultMessage:"Outgoing OAuth 2.0 Connections"}),id:"outgoingOauthConnections"}))),m().createElement(Ss,{name:"integrations",icon:"fa-link",parentLink:"/"+this.props.team.name,title:m().createElement(E.FormattedMessage,{id:"backstage_sidebar.integrations",defaultMessage:"Integrations"})},e,t,a,s,n,r)}render(){return m().createElement("div",{className:"backstage-sidebar"},m().createElement("ul",null,this.renderCustomEmoji(),this.renderIntegrations()))}}!function(e,t,a){(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var a=e[Symbol.toPrimitive];if(void 0!==a){var s=a.call(e,"string");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a}(Ts,"propTypes",{enableCustomEmoji:b().bool.isRequired,enableIncomingWebhooks:b().bool.isRequired,enableOutgoingWebhooks:b().bool.isRequired,enableCommands:b().bool.isRequired,enableOAuthServiceProvider:b().bool.isRequired,enableOutgoingOAuthConnections:b().bool.isRequired,canCreateOrDeleteCustomEmoji:b().bool.isRequired,canManageIntegrations:b().bool.isRequired});const Fs=["component","extraProps"];const Ps=e=>{let{component:t,extraProps:a}=e,s=function(e,t){if(null==e)return{};var a,s,n=function(e,t){if(null==e)return{};var a,s,n={},o=Object.keys(e);for(s=0;s=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(s=0;s=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}(e,Fs);return m().createElement(n.Route,Object.assign({},s,{render:e=>m().createElement(t,Object.assign({},a,e))}))},Is=(0,u.createGlobalStyle)(["#root{> #global-header,> .team-sidebar,> .main-wrapper .sidebar--right,> .app-bar{display:none;}}"]),Rs=(0,n.withRouter)((0,s.connect)((function(e){const t=(0,c.ts)(e),a=(0,l.kA)(e),s=(0,r.iE)(e),n=s.SiteName,d="true"===s.EnableCustomEmoji,m="true"===s.EnableIncomingWebhooks,u="true"===s.EnableOutgoingWebhooks,g="true"===s.EnableCommands,p="true"===s.EnableOAuthServiceProvider,h="true"===s.EnableOutgoingOAuthConnections;let f=(0,i.AN)(e,{permission:o.Pl.CREATE_EMOJIS})||(0,i.AN)(e,{permission:o.Pl.DELETE_EMOJIS});if(!f)for(const t of(0,l.Dc)(e))if((0,i.Rm)(e,t.id,o.Pl.CREATE_EMOJIS)||(0,i.Rm)(e,t.id,o.Pl.DELETE_EMOJIS)){f=!0;break}const b=(0,i.Rm)(e,null==a?void 0:a.id,o.Pl.MANAGE_SLASH_COMMANDS)||(0,i.Rm)(e,null==a?void 0:a.id,o.Pl.MANAGE_OAUTH)||(0,i.Rm)(e,null==a?void 0:a.id,o.Pl.MANAGE_INCOMING_WEBHOOKS)||(0,i.Rm)(e,null==a?void 0:a.id,o.Pl.MANAGE_OUTGOING_WEBHOOKS),E=(0,i.AN)(e,{permission:o.Pl.MANAGE_BOTS})||(0,i.AN)(e,{permission:o.Pl.MANAGE_OTHERS_BOTS});return{user:t,team:a,siteName:n,enableCustomEmoji:d,enableIncomingWebhooks:m,enableOutgoingWebhooks:u,enableCommands:g,enableOAuthServiceProvider:p,enableOutgoingOAuthConnections:h,canCreateOrDeleteCustomEmoji:f,canManageIntegrations:b||E}}))((e=>{const t=(0,d.useRef)(null);if(!e.team||!e.user)return null;const a={team:e.team,user:e.user,scrollToTop:()=>{t.current&&(t.current.scrollTop=0)}};return m().createElement(m().Fragment,null,m().createElement(ws.Z,{team:e.team,siteName:e.siteName}),m().createElement("div",{className:"backstage-body",ref:t},m().createElement(Ns.default,{pluggableName:"Root"}),m().createElement(Ts,{team:e.team,enableCustomEmoji:e.enableCustomEmoji,enableIncomingWebhooks:e.enableIncomingWebhooks,enableOutgoingWebhooks:e.enableOutgoingWebhooks,enableCommands:e.enableCommands,enableOAuthServiceProvider:e.enableOAuthServiceProvider,enableOutgoingOAuthConnections:e.enableOutgoingOAuthConnections,canCreateOrDeleteCustomEmoji:e.canCreateOrDeleteCustomEmoji,canManageIntegrations:e.canManageIntegrations}),m().createElement(n.Switch,null,m().createElement(Ps,{extraProps:a,exact:!0,path:"/:team/integrations",component:_e}),m().createElement(Ps,{extraProps:a,exact:!0,path:"".concat(e.match.url,"/incoming_webhooks"),component:Za}),m().createElement(Ps,{extraProps:a,path:"".concat(e.match.url,"/incoming_webhooks/add"),component:Re}),m().createElement(Ps,{extraProps:a,path:"".concat(e.match.url,"/incoming_webhooks/edit"),component:Ca}),m().createElement(Ps,{extraProps:a,exact:!0,path:"".concat(e.match.url,"/outgoing_webhooks"),component:ns}),m().createElement(Ps,{extraProps:a,path:"".concat(e.match.url,"/outgoing_webhooks/add"),component:Ye}),m().createElement(Ps,{extraProps:a,path:"".concat(e.match.url,"/outgoing_webhooks/edit"),component:Da}),m().createElement(Ps,{extraProps:a,path:"".concat(e.match.url,"/commands"),component:ka}),m().createElement(Ps,{extraProps:a,exact:!0,path:"".concat(e.match.url,"/oauth2-apps"),component:Xa}),m().createElement(Ps,{extraProps:a,path:"".concat(e.match.url,"/oauth2-apps/add"),component:qe}),m().createElement(Ps,{extraProps:a,path:"".concat(e.match.url,"/oauth2-apps/edit"),component:Pa}),m().createElement(Ps,{extraProps:a,exact:!0,path:"".concat(e.match.url,"/outgoing-oauth2-connections"),component:ys}),m().createElement(Ps,{extraProps:a,exact:!0,path:"".concat(e.match.url,"/outgoing-oauth2-connections/add"),component:hs}),m().createElement(Ps,{extraProps:a,exact:!0,path:"".concat(e.match.url,"/outgoing-oauth2-connections/edit"),component:_s}),m().createElement(Ps,{extraProps:a,path:"".concat(e.match.url,"/confirm"),component:oa}),m().createElement(Ps,{extraProps:a,exact:!0,path:"/:team/emoji",component:K}),m().createElement(Ps,{extraProps:a,path:"".concat(e.match.url,"/add"),component:oe}),m().createElement(Ps,{extraProps:a,path:"".concat(e.match.url,"/bots/add"),component:xt}),m().createElement(Ps,{extraProps:a,path:"".concat(e.match.url,"/bots/edit"),component:xt}),m().createElement(Ps,{extraProps:a,path:"".concat(e.match.url,"/bots"),component:Ot}))),m().createElement(Is,null))})))},38210:(e,t,a)=>{a.d(t,{Z:()=>c});var s=a(23615),n=a.n(s),o=(a(14078),a(84390)),r=a.n(o);const i=[],l=e=>{let{error:t=null,errors:a=i,iconClassName:s,margin:n,textClassName:o,type:l}=e;if(!t&&0===a.length)return null;let c=t;if(!c)for(const e of a)e&&(c=e);return c?"modal"===l?r().createElement("div",{className:"form-group"},r().createElement("label",{className:"col-sm-12 has-error"},c)):"backstage"===l?r().createElement("div",{className:"pull-left has-error"},r().createElement("label",{className:"control-label"},c)):n?r().createElement("div",{className:"form-group has-error"},r().createElement("label",{className:"control-label"},c)):r().createElement("div",{className:"col-sm-12 ".concat(o||"has-error")},r().createElement("label",{className:"control-label"},r().createElement("i",{className:"fa ".concat(s||"fa-exclamation-circle")})," ",c)):null};l.propTypes={type:n().node,error:n().node,textClassName:n().string,iconClassName:n().string,margin:n().bool,errors:n().arrayOf(n().node)};const c=r().memo(l)},40791:(e,t,a)=>{a.d(t,{Z:()=>m});var s=a(23615),n=a.n(s),o=a(60042),r=a.n(o),i=a(84390),l=a.n(i),c=a(72060);const d=e=>{let{additionalClassName:t}=e;const{formatMessage:a}=(0,c.useIntl)();return l().createElement("i",{className:r()("icon icon-chevron-right",t),title:a({id:"generic_icons.next",defaultMessage:"Next Icon"})})};d.propTypes={additionalClassName:n().string};const m=l().memo(d)},28271:(e,t,a)=>{a.d(t,{Z:()=>m});var s=a(23615),n=a.n(s),o=a(60042),r=a.n(o),i=a(84390),l=a.n(i),c=a(72060);const d=e=>{let{additionalClassName:t}=e;const{formatMessage:a}=(0,c.useIntl)();return l().createElement("i",{className:r()("icon icon-chevron-left",t),title:a({id:"generic_icons.previous",defaultMessage:"Previous Icon"})})};d.propTypes={additionalClassName:n().string};const m=l().memo(d)},95104:(e,t,a)=>{a.d(t,{Z:()=>r});var s=a(84390),n=a.n(s),o=a(72060);function r(){const{formatMessage:e}=(0,o.useIntl)();return n().createElement("i",{className:"fa fa-search",title:e({id:"generic_icons.search",defaultMessage:"Search Icon"})})}},7249:(e,t,a)=>{a.d(t,{Z:()=>m});var s=a(23615),n=a.n(s),o=a(60042),r=a.n(o),i=a(84390),l=a.n(i),c=a(72060);const d=e=>{let{additionalClassName:t}=e;const{formatMessage:a}=(0,c.useIntl)();return l().createElement("i",{className:r()("fa fa-warning",t),title:a({id:"generic_icons.warning",defaultMessage:"Warning Icon"})})};d.propTypes={additionalClassName:n().string};const m=l().memo(d)},4514:(e,t,a)=>{a.d(t,{Gb:()=>r,Zh:()=>i}),a(95623);var s=a(4500),n=a(66900);const o=["mattermost-advisor"];function r(e){return e.entities.bots.accounts}const i=(0,s.P1)("getExternalBotAccounts",r,n.Rf,((e,t)=>{const a={};return Object.values(e).forEach((e=>{const s=t[e.user_id];s&&!o.includes(s.username)&&(a[e.user_id]=e)})),a}))}}]); //# sourceMappingURL=9252.33f65ed95f89c8d65e20.js.map