EVOLUTION-MANAGER
Edit File: 9.5c4c311f2864e808335c.js
(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{1168:function(e,t,a){"use strict";a.d(t,"a",(function(){return m}));var s=a(33),n=a.n(s),o=a(7),r=a.n(o),i=a(1137),l=a(27);function c(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class m extends r.a.PureComponent{render(){const e="fa fa-1x fa-angle-right"+(this.props.additionalClassName?" "+this.props.additionalClassName:"");return r.a.createElement(i.a,{className:e,title:{id:Object(l.b)("generic_icons.next"),defaultMessage:"Next Icon"}})}}c(m,"propTypes",{additionalClassName:n.a.oneOfType([n.a.string,n.a.oneOf([null])])}),c(m,"defaultProps",{additionalClassName:null})},1195:function(e,t,a){"use strict";a.d(t,"a",(function(){return m}));var s=a(33),n=a.n(s),o=a(7),r=a.n(o),i=a(1137),l=a(27);function c(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class m extends r.a.PureComponent{render(){const e="fa fa-1x fa-angle-left"+(this.props.additionalClassName?" "+this.props.additionalClassName:"");return r.a.createElement(i.a,{className:e,title:{id:Object(l.b)("generic_icons.previous"),defaultMessage:"Previous Icon"}})}}c(m,"propTypes",{additionalClassName:n.a.oneOfType([n.a.string,n.a.oneOf([null])])}),c(m,"defaultProps",{additionalClassName:null})},1207:function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s=a(4),n=s.__importStar(a(21)),o=a(16);function r(e){return e.entities.integrations.outgoingHooks}function i(e){return e.entities.integrations.commands}function l(e){return e.entities.integrations.systemCommands}t.getIncomingHooks=function(e){return e.entities.integrations.incomingHooks},t.getOutgoingHooks=r,t.getCommands=i,t.getOAuthApps=function(e){return e.entities.integrations.oauthApps},t.getSystemCommands=l,t.getOutgoingHooksInCurrentTeam=n.createSelector(o.getCurrentTeamId,r,(function(e,t){return Object.values(t).filter((function(t){return t.team_id===e}))})),t.getAllCommands=n.createSelector(i,l,(function(e,t){return s.__assign(s.__assign({},e),t)})),t.getAutocompleteCommandsList=n.createSelector(t.getAllCommands,o.getCurrentTeamId,(function(e,t){return Object.values(e).filter((function(e){return e&&(!e.team_id||e.team_id===t)&&e.auto_complete})).sort((function(e,t){return e.display_name.localeCompare(t.display_name)}))}))},1235:function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getBotAccounts=function(e){return e.entities.bots.accounts}},1266:function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s=a(18),n=a(5),o=a(62),r=20;t.createBot=function(e){return o.bindClientFunc({clientFunc:s.Client4.createBot,onSuccess:n.BotTypes.RECEIVED_BOT_ACCOUNT,params:[e]})},t.patchBot=function(e,t){return o.bindClientFunc({clientFunc:s.Client4.patchBot,onSuccess:n.BotTypes.RECEIVED_BOT_ACCOUNT,params:[e,t]})},t.loadBot=function(e){return o.bindClientFunc({clientFunc:s.Client4.getBot,onSuccess:n.BotTypes.RECEIVED_BOT_ACCOUNT,params:[e]})},t.loadBots=function(e,t){return void 0===e&&(e=0),void 0===t&&(t=r),o.bindClientFunc({clientFunc:s.Client4.getBotsIncludeDeleted,onSuccess:n.BotTypes.RECEIVED_BOT_ACCOUNTS,params:[e,t]})},t.disableBot=function(e){return o.bindClientFunc({clientFunc:s.Client4.disableBot,onSuccess:n.BotTypes.RECEIVED_BOT_ACCOUNT,params:[e]})},t.enableBot=function(e){return o.bindClientFunc({clientFunc:s.Client4.enableBot,onSuccess:n.BotTypes.RECEIVED_BOT_ACCOUNT,params:[e]})},t.assignBot=function(e,t){return o.bindClientFunc({clientFunc:s.Client4.assignBot,onSuccess:n.BotTypes.RECEIVED_BOT_ACCOUNT,params:[e,t]})}},1483:function(e,t,a){e.exports=a.p+"files/6d99c23db16f87ca2477c7af583a633c.png"},1928:function(e,t,a){e.exports=a.p+"files/fd69f7891f867c2aa14011da92b728ac.jpg"},1929:function(e,t,a){e.exports=a.p+"files/ce81936d829c1ac530749ba2fe913de0.png"},1930:function(e,t,a){e.exports=a.p+"files/2aa264fb1956b8be41f2047d428a1a1e.jpg"},1931:function(e,t,a){e.exports=a.p+"files/d184fcdb23c1e24bfd7132950ceb4f68.jpg"},1964:function(e,t,a){"use strict";a.r(t);a(34);var s=a(309),n=a(1105),o=a(10),r=a(16),i=a(15),l=a(61),c=a(12),m=(a(138),a(7)),d=a.n(m),u=a(33),p=a.n(u),h=a(6),g=a(1235),b=a(1266),f=a(20),E=(a(52),a(1106)),_=a(172),k=a(14),v=(a(170),a(1104)),y=a(1119);class N extends d.a.PureComponent{render(){return d.a.createElement(E.a,{id:"generic_icons.search",defaultMessage:"Search Icon"},e=>d.a.createElement("i",{className:"fa fa-search",title:e}))}}function O(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class C extends d.a.Component{constructor(e){super(e),O(this,"updateFilter",e=>{this.setState({filter:e.target.value})}),this.state={filter:""}}render(){const e=this.state.filter.toLowerCase();let t;if(this.props.loading)t=d.a.createElement(y.a,null);else{let a=!0;"function"==typeof(t=this.props.children)&&([t,a]=t(e)),0!==(t=d.a.Children.map(t,t=>d.a.cloneElement(t,{filter:e}))).length&&a||(e?this.props.emptyTextSearch&&(t=d.a.createElement("div",{className:"backstage-list__item backstage-list__empty",id:"emptySearchResultsMessage"},d.a.cloneElement(this.props.emptyTextSearch,{values:{searchTerm:e}}))):this.props.emptyText&&(t=d.a.createElement("div",{className:"backstage-list__item backstage-list__empty"},this.props.emptyText)))}let a=null;return this.props.addLink&&this.props.addText&&(a=d.a.createElement(v.a,{className:"add-link",to:this.props.addLink},d.a.createElement("button",{type:"button",className:"btn btn-primary",id:this.props.addButtonId},d.a.createElement("span",null,this.props.addText)))),d.a.createElement("div",{className:"backstage-content"},d.a.createElement("div",{className:"backstage-header"},d.a.createElement("h1",null,this.props.header),a),d.a.createElement("div",{className:"backstage-filters"},d.a.createElement("div",{className:"backstage-filter__search"},d.a.createElement(N,null),d.a.createElement("input",{type:"search",className:"form-control",placeholder:this.props.searchPlaceholder,value:this.state.filter,onChange:this.updateFilter,style:w.search,id:"searchInput"}))),d.a.createElement("span",{className:"backstage-list__help"},this.props.helpText),d.a.createElement("div",{className:"backstage-list"},t))}}O(C,"propTypes",{children:p.a.oneOfType([p.a.node,p.a.func]),header:p.a.node.isRequired,addLink:p.a.string,addText:p.a.node,addButtonId:p.a.string,emptyText:p.a.node,emptyTextSearch:p.a.node,helpText:p.a.node,loading:p.a.bool.isRequired,searchPlaceholder:p.a.string}),O(C,"defaultProps",{searchPlaceholder:k.gb("backstage_list.search","Search")});const w={search:{flexGrow:0,flexShrink:0}};var M=a(0),j=a(1114),A=(a(591),a(1121)),T=a(1159),S=a(1150),R=a(1163);function P(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function x(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 I extends d.a.PureComponent{constructor(e){super(e),P(this,"enableBot",()=>{this.props.actions.enableBot(this.props.bot.user_id)}),P(this,"disableBot",()=>{this.props.actions.disableBot(this.props.bot.user_id)}),P(this,"enableUserAccessToken",e=>{this.props.actions.enableUserAccessToken(e)}),P(this,"disableUserAccessToken",e=>{this.props.actions.disableUserAccessToken(e)}),P(this,"confirmRevokeToken",e=>{this.setState({confirmingId:e})}),P(this,"revokeTokenConfirmed",()=>{this.props.actions.revokeUserAccessToken(this.state.confirmingId),this.closeConfirm()}),P(this,"closeConfirm",()=>{this.setState({confirmingId:""})}),P(this,"openCreateToken",()=>{this.setState({creatingTokenState:"OPEN",token:{description:""}})}),P(this,"closeCreateToken",()=>{this.setState({creatingTokenState:"CLOSED",token:{description:""}})}),P(this,"handleUpdateDescription",e=>{this.setState({token:Object.assign({},this.state.token,{description:e.target.value})})}),P(this,"handleCreateToken",async e=>{if(e.preventDefault(),""===this.state.token.description)return void this.setState({error:d.a.createElement(E.a,{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.owner&&this.props.owner.username&&(s=this.props.owner.username);const n=this.props.filter?this.props.filter.toLowerCase():"";if(!x(this.props.bot,n,this.props.owner))return null;const o=[];let r;Object.values(this.props.accessTokens).forEach(e=>{let t,a,s="";e.is_active?t=d.a.createElement("a",{name:e.id+"_deactivate",href:"#",onClick:t=>{t.preventDefault(),this.disableUserAccessToken(e.id)}},d.a.createElement(E.a,{id:"user.settings.tokens.deactivate",defaultMessage:"Disable"})):(s="light",a=d.a.createElement("span",{className:"margin-right light"},d.a.createElement(E.a,{id:"user.settings.tokens.deactivatedWarning",defaultMessage:"(Disabled)"})),t=d.a.createElement("a",{name:e.id+"_activate",href:"#",onClick:t=>{t.preventDefault(),this.enableUserAccessToken(e.id)}},d.a.createElement(E.a,{id:"user.settings.tokens.activate",defaultMessage:"Enable"}))),o.push(d.a.createElement("div",{key:e.id,className:"bot-list__item"},d.a.createElement("div",{className:"item-details__row d-flex justify-content-between"},d.a.createElement("div",{className:s},d.a.createElement("div",{className:"whitespace--nowrap overflow--ellipsis"},d.a.createElement("b",null,d.a.createElement(E.a,{id:"user.settings.tokens.tokenDesc",defaultMessage:"Token Description: "})),e.description),d.a.createElement("div",{className:"setting-box__token-id whitespace--nowrap overflow--ellipsis"},d.a.createElement("b",null,d.a.createElement(E.a,{id:"user.settings.tokens.tokenId",defaultMessage:"Token ID: "})),e.id)),d.a.createElement("div",null,a,t," - ",d.a.createElement("a",{name:e.id+"_delete",href:"#",onClick:t=>{t.preventDefault(),this.confirmRevokeToken(e.id)}},d.a.createElement(E.a,{id:"user.settings.tokens.delete",defaultMessage:"Delete"}))))))}),"plugin"!==s&&(r=d.a.createElement("div",{className:"item-actions"},d.a.createElement("button",{id:"createToken",className:"style--none color--link",onClick:this.openCreateToken},d.a.createElement(E.a,{id:"bot.manage.create_token",defaultMessage:"Create New Token"}))," - ",d.a.createElement(v.a,{to:"/".concat(this.props.team.name,"/integrations/bots/edit?id=").concat(this.props.bot.user_id)},d.a.createElement(E.a,{id:"bots.manage.edit",defaultMessage:"Edit"}))," - ",d.a.createElement("button",{className:"style--none color--link",onClick:this.disableBot},d.a.createElement(E.a,{id:"bot.manage.disable",defaultMessage:"Disable"})))),0!==this.props.bot.delete_at&&(r=d.a.createElement("div",{className:"item-actions"},d.a.createElement("button",{className:"style--none color--link",onClick:this.enableBot},d.a.createElement(E.a,{id:"bot.manage.enable",defaultMessage:"Enable"})))),"OPEN"===this.state.creatingTokenState?o.push(d.a.createElement("div",{key:"create",className:"bot-list__item"},d.a.createElement("div",{key:"create"},d.a.createElement("form",{className:"form-horizontal",onSubmit:this.handleCreateToken},d.a.createElement("div",{className:"row"},d.a.createElement("label",{className:"col-sm-auto control-label"},d.a.createElement(E.a,{id:"user.settings.tokens.name",defaultMessage:"Token Description: "})),d.a.createElement("div",{className:"col-sm-4"},d.a.createElement("input",{autoFocus:!0,className:"form-control form-sm",type:"text",maxLength:64,value:this.state.token.description,onChange:this.handleUpdateDescription}))),d.a.createElement("div",null,d.a.createElement("div",{className:"padding-top padding-bottom"},d.a.createElement(E.a,{id:"user.settings.tokens.nameHelp",defaultMessage:"Enter a description for your token to remember what it does."})),d.a.createElement("label",{id:"clientError",className:"has-error is-empty"},this.state.error),d.a.createElement("div",{className:"margin-top"},d.a.createElement(S.a,{btnClass:"btn-sm btn-primary",savingMessage:d.a.createElement(E.a,{id:"user.settings.tokens.save",defaultMessage:"Save"}),saving:!1}),d.a.createElement("button",{className:"btn btn-sm btn-link",onClick:this.closeCreateToken},d.a.createElement(E.a,{id:"user.settings.tokens.cancel",defaultMessage:"Cancel"})))))))):"CREATED"===this.state.creatingTokenState&&o.push(d.a.createElement("div",{key:"created",className:"bot-list__item alert alert-warning"},d.a.createElement("div",{className:"margin-bottom"},d.a.createElement(R.a,{additionalClassName:"margin-right"}),d.a.createElement(E.a,{id:"user.settings.tokens.copy",defaultMessage:"Please copy the access token below. You won't be able to see it again!"})),d.a.createElement("div",{className:"whitespace--nowrap overflow--ellipsis"},d.a.createElement(E.a,{id:"user.settings.tokens.name",defaultMessage:"Token Description: "}),this.state.token.description),d.a.createElement("div",{className:"whitespace--nowrap overflow--ellipsis"},d.a.createElement(E.a,{id:"user.settings.tokens.id",defaultMessage:"Token ID: "}),this.state.token.id),d.a.createElement("strong",{className:"word-break--all"},d.a.createElement(E.a,{id:"user.settings.tokens.token",defaultMessage:"Access Token: "}),this.state.token.token),d.a.createElement("div",{className:"margin-top"},d.a.createElement("button",{className:"btn btn-sm btn-primary",onClick:this.closeCreateToken},d.a.createElement(E.a,{id:"bot.create_token.close",defaultMessage:"Close"})))));const i=k.M(this.props.bot.user_id);return d.a.createElement("div",{className:"backstage-list__item"},d.a.createElement("div",{className:"bot-list-img-container"},d.a.createElement("img",{className:"bot-list-img",alt:"bot image",src:i})),d.a.createElement("div",{className:"item-details"},d.a.createElement("div",{className:"item-details__row d-flex flex-column flex-md-row justify-content-between"},d.a.createElement("strong",{className:"item-details__name"},a+" (@"+e+")"),r),d.a.createElement("div",{className:"bot-details__description"},d.a.createElement(T.a,{message:t})),d.a.createElement("div",{className:"light small"},d.a.createElement(E.a,{id:"bots.managed_by",defaultMessage:"Managed by "}),s),d.a.createElement("div",{className:"bot-list is-empty"},o)),d.a.createElement(A.a,{title:d.a.createElement(E.a,{id:"bots.token.delete",defaultMessage:"Delete Token"}),message:d.a.createElement(E.a,{id:"bots.token.confirm_text",defaultMessage:"Are you sure you want to delete the token?"}),confirmButtonText:d.a.createElement(E.a,{id:"bots.token.confirm",defaultMessage:"Delete"}),show:""!==this.state.confirmingId,onConfirm:this.revokeTokenConfirmed,onCancel:this.closeConfirm}))}}function U(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}P(I,"propTypes",{bot:p.a.object.isRequired,owner:p.a.object,accessTokens:p.a.object.isRequired,filter:p.a.string,actions:p.a.shape({disableBot:p.a.func.isRequired,enableBot:p.a.func.isRequired,createUserAccessToken:p.a.func.isRequired,revokeUserAccessToken:p.a.func.isRequired,enableUserAccessToken:p.a.func.isRequired,disableUserAccessToken:p.a.func.isRequired}),team:p.a.object.isRequired});class q extends d.a.PureComponent{constructor(e){super(e),U(this,"botToJSX",e=>d.a.createElement(I,{key:e.user_id,bot:e,owner:this.props.owners[e.user_id],accessTokens:this.props.accessTokens[e.user_id]||{},actions:this.props.actions,team:this.props.team})),U(this,"bots",e=>{const t=Object.values(this.props.bots).sort((e,t)=>e.username.localeCompare(t.username)),a=t=>x(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[d.a.createElement("div",{key:"sections"},d.a.createElement(this.EnabledSection,{enabledBots:s}),d.a.createElement(this.DisabledSection,{hasDisabled:n.length>0,disabledBots:n})),s.length>0||n.length>0]}),this.state={loading:!0}}componentDidMount(){this.props.actions.loadBots(M.Q.Integrations.START_PAGE_NUM,M.Q.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})})}})}DisabledSection(e){if(!e.hasDisabled)return null;const t=d.a.Children.map(e.disabledBots,t=>d.a.cloneElement(t,{filter:e.filter}));return d.a.createElement(d.a.Fragment,null,d.a.createElement("div",{className:"bot-disabled"},d.a.createElement(E.a,{id:"bots.disabled",defaultMessage:"Disabled"})),d.a.createElement("div",{className:"bot-list__disabled"},t))}EnabledSection(e){const t=d.a.Children.map(e.enabledBots,t=>d.a.cloneElement(t,{filter:e.filter}));return d.a.createElement("div",null,t)}render(){return d.a.createElement(C,{header:d.a.createElement(E.a,{id:"bots.manage.header",defaultMessage:"Bot Accounts"}),addText:this.props.createBots&&d.a.createElement(E.a,{id:"bots.manage.add",defaultMessage:"Add Bot Account"}),addLink:"/"+this.props.team.name+"/integrations/bots/add",addButtonId:"addBotAccount",emptyText:d.a.createElement(E.a,{id:"bots.manage.empty",defaultMessage:"No bot accounts found"}),emptyTextSearch:d.a.createElement(j.b,{id:"bots.manage.emptySearch",defaultMessage:"No bot accounts match **{searchTerm}**"}),helpText:d.a.createElement(d.a.Fragment,null,d.a.createElement(E.a,{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:d.a.createElement("a",{target:"_blank",rel:"noopener noreferrer",href:"https://mattermost.com/pl/default-bot-accounts"},d.a.createElement(E.a,{id:"bots.manage.bot_accounts",defaultMessage:"Bot Accounts"}))}}),d.a.createElement(j.b,{id:"bots.manage.help2",defaultMessage:"Enable bot account creation in the [System Console]({siteURL}/admin_console/integrations/bot_accounts).",values:{siteURL:Object(_.e)()}})),searchPlaceholder:k.gb("bots.manage.search","Search Bot Accounts"),loading:this.state.loading},this.bots)}}U(q,"propTypes",{bots:p.a.object.isRequired,accessTokens:p.a.object.isRequired,owners:p.a.object.isRequired,createBots:p.a.bool,actions:p.a.shape({loadBots:p.a.func.isRequired,getUserAccessTokensForUser:p.a.func.isRequired,createUserAccessToken:p.a.func.isRequired,revokeUserAccessToken:p.a.func.isRequired,enableUserAccessToken:p.a.func.isRequired,disableUserAccessToken:p.a.func.isRequired,getUser:p.a.func.isRequired,disableBot:p.a.func.isRequired,enableBot:p.a.func.isRequired}),team:p.a.object.isRequired});var D,L,W,H=Object(s.connect)((function(e){const t="true"===Object(i.getConfig)(e).EnableBotAccountCreation,a=Object(g.getBotAccounts)(e),s=Object.values(a).reduce((t,a)=>(t[a.user_id]=o.getUser(e,a.owner_id),t),{});return{createBots:t,bots:a,accessTokens:e.entities.admin.userAccessTokensByUser,owners:s}}),(function(e){return{actions:Object(h.bindActionCreators)({loadBots:b.loadBots,getUserAccessTokensForUser:f.getUserAccessTokensForUser,createUserAccessToken:f.createUserAccessToken,revokeUserAccessToken:f.revokeUserAccessToken,enableUserAccessToken:f.enableUserAccessToken,disableUserAccessToken:f.disableUserAccessToken,getUser:f.getUser,disableBot:b.disableBot,enableBot:b.enableBot},e)}}))(q),B=(a(592),a(101)),F=(a(113),a(72),a(1390)),G=a(54),Y=a(1483),z=a.n(Y),K=a(95),Q=a(1137),J=a(27);class V extends d.a.Component{render(){const e=[];return d.a.Children.forEach(this.props.children,(t,a)=>{0!==a&&e.push(d.a.createElement("span",{key:"divider"+a,className:"backstage-header__divider"},d.a.createElement(Q.a,{className:"fa fa-angle-right",title:{id:Object(J.b)("generic_icons.breadcrumb"),defaultMessage:"Breadcrumb Icon"}}))),e.push(t)}),d.a.createElement("div",{className:"backstage-header"},d.a.createElement("h1",null,e))}}D=V,L="propTypes",W={children:p.a.node},L in D?Object.defineProperty(D,L,{value:W,enumerable:!0,configurable:!0,writable:!0}):D[L]=W;var X=a(1117),Z=a(1184),$=a(1129),ee=a(1166);function te(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}const ae="System Admin",se="Member";class ne extends d.a.Component{constructor(e){super(e),te(this,"updateUsername",e=>{this.setState({username:e.target.value})}),te(this,"updateDisplayName",e=>{this.setState({displayName:e.target.value})}),te(this,"updateDescription",e=>{this.setState({description:e.target.value})}),te(this,"updateRole",e=>{this.setState({role:e.target.value})}),te(this,"updatePostAll",e=>{this.setState({postAll:e.target.checked})}),te(this,"updatePostChannels",e=>{this.setState({postChannels:e.target.checked})}),te(this,"updatePicture",e=>{if(e.target.files&&e.target.files[0]){const a=e.target.files[0];this.previewBlob=URL.createObjectURL(a);var t=new FileReader;t.onload=e=>{const t=ee.c(e.target.result),a=ee.e(t);this.setState({image:this.previewBlob,orientationStyles:a})},t.readAsArrayBuffer(a),e.target.value=null,this.setState({pictureFile:a})}else this.setState({pictureFile:null,image:null})}),te(this,"setDefault",()=>{this.setState({pictureFile:"default",image:z.a})}),te(this,"updateRoles",async e=>{let t=c.General.SYSTEM_USER_ROLE;this.state.role===ae?t+=" "+c.General.SYSTEM_ADMIN_ROLE:this.state.postAll?t+=" "+c.General.SYSTEM_POST_ALL_ROLE:this.state.postChannels&&(t+=" "+c.General.SYSTEM_POST_ALL_PUBLIC_ROLE);const a=await this.props.actions.updateUserRoles(e.user_id,t);return a?a.error:null}),te(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:d.a.createElement(E.a,{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."})});this.state.pictureFile&&(M.e.includes(this.state.pictureFile.type)?this.state.pictureFile.size>this.props.maxFileSize&&this.setState({error:d.a.createElement(E.a,{id:"user.settings.general.imageTooLarge",defaultMessage:"Unable to upload profile image. File is too large."})}):this.setState({error:d.a.createElement(E.a,{id:"user.settings.general.validImage",defaultMessage:"Only BMP, JPG or PNG images may be used for profile pictures"})})),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=k.gb("bot.edit_failed","Failed to edit bot"),!s)if(this.state.pictureFile&&"default"!==this.state.pictureFile){s=(await this.props.actions.uploadProfileImage(a.user_id,this.state.pictureFile)).error}else this.state.pictureFile&&"default"===this.state.pictureFile&&await this.props.actions.setDefaultProfileImage(a.user_id);if(!s&&a&&(s=this.updateRoles(a)),a)return void K.a.push("/".concat(this.props.team.name,"/integrations/bots"))}else{const e=k.cb(t.username);if(e)return void this.setState({adding:!1,error:e});const n=await this.props.actions.createBot(t);n?(a=n.data,s=n.error):s=k.gb("bot.create_failed","Failed to create bot");let o="";if(!s){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,k.gb("bot.token.default.description","Default Token"));if(!e||e.error)return void K.a.push("/".concat(this.props.team.name,"/integrations/bots"));o=e.data.token}if(!s&&a&&(s=this.updateRoles(a)),a)return void K.a.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:"",displayName:"",description:"",adding:!1,image:z.a,role:se,postAll:!1,postChannels:!1},this.props.bot&&(this.state.username=this.props.bot.username,this.state.displayName=this.props.bot.display_name,this.state.description=this.props.bot.description,this.state.role=G.isSystemAdmin(this.props.roles||"")?ae:se,this.state.postAll=G.hasPostAllRole(this.props.roles||""),this.state.postChannels=G.hasPostAllPublicRole(this.props.roles||""))}render(){let e=d.a.createElement(E.a,{id:"bots.manage.add",defaultMessage:"Add"}),t=d.a.createElement(E.a,{id:"bots.manage.add.create",defaultMessage:"Create Bot Account"}),a=d.a.createElement(E.a,{id:"bots.manage.add.creating",defaultMessage:"Creating..."});this.props.bot&&(e=d.a.createElement(E.a,{id:"bots.manage.edit",defaultMessage:"Edit"}),t=d.a.createElement(E.a,{id:"bots.manage.edit.title",defaultMessage:"Update"}),a=d.a.createElement(E.a,{id:"bots.manage.edit.editing",defaultMessage:"Updating..."}));let s="",n=d.a.createElement(X.a,{delayShow:M.j.OVERLAY_TIME_DELAY,placement:"right",overlay:d.a.createElement(F.a,{id:"removeIcon"},d.a.createElement(E.a,{id:"bot.remove_profile_picture",defaultMessage:"Remove Bot Icon"}))},d.a.createElement("a",{className:"bot-profile__remove",onClick:this.setDefault},d.a.createElement("span",null,"×"))),o=null;return this.props.bot&&!this.state.pictureFile?s=k.M(this.props.bot.user_id):(s=this.state.image,o=this.state.orientationStyles,this.state.image===z.a&&(n=null)),d.a.createElement("div",{className:"backstage-content"},d.a.createElement(V,null,d.a.createElement(v.a,{to:"/".concat(this.props.team.name,"/integrations/bots")},d.a.createElement(E.a,{id:"bots.manage.header",defaultMessage:"Bot Accounts"})),e),d.a.createElement("div",{className:"backstage-form"},d.a.createElement("form",{className:"form-horizontal",onSubmit:this.handleSubmit},d.a.createElement("div",{className:"form-group"},d.a.createElement("label",{className:"control-label col-sm-4",htmlFor:"username"},d.a.createElement(E.a,{id:"bots.add.username",defaultMessage:"Username"})),d.a.createElement("div",{className:"col-md-5 col-sm-8"},d.a.createElement("input",{id:"username",type:"text",maxLength:"22",className:"form-control",value:this.state.username,onChange:this.updateUsername}),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"bot.add.username.help",defaultMessage:"You can use lowercase letters, numbers, periods, dashes, and underscores."})))),d.a.createElement("div",{className:"form-group"},d.a.createElement("label",{className:"control-label col-sm-4",htmlFor:"boticon"},d.a.createElement(E.a,{id:"bots.add.icon",defaultMessage:"Bot Icon"})),d.a.createElement("div",{className:"col-md-5 col-sm-8"},d.a.createElement("div",{className:"bot-img-container"},d.a.createElement("img",{className:"bot-img",alt:"bot image",src:s,style:o}),n),d.a.createElement("div",{className:"btn btn-sm btn-primary btn-file sel-btn"},d.a.createElement(E.a,{id:"bots.image.upload",defaultMessage:"Upload Image"}),d.a.createElement("input",{accept:".jpg,.png,.bmp",type:"file",onChange:this.updatePicture})))),d.a.createElement("div",{className:"form-group"},d.a.createElement("label",{className:"control-label col-sm-4",htmlFor:"displayName"},d.a.createElement(E.a,{id:"bots.add.displayName",defaultMessage:"Display Name"})),d.a.createElement("div",{className:"col-md-5 col-sm-8"},d.a.createElement("input",{id:"displayName",type:"text",maxLength:"64",className:"form-control",value:this.state.displayName,onChange:this.updateDisplayName}),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"bot.add.display_name.help",defaultMessage:"(Optional) You can choose to display your bot's full name rather than its username."})))),d.a.createElement("div",{className:"form-group"},d.a.createElement("label",{className:"control-label col-sm-4",htmlFor:"description"},d.a.createElement(E.a,{id:"bot.add.description",defaultMessage:"Description"})),d.a.createElement("div",{className:"col-md-5 col-sm-8"},d.a.createElement("input",{id:"description",type:"text",maxLength:"1024",className:"form-control",value:this.state.description,onChange:this.updateDescription}),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"bot.add.description.help",defaultMessage:"(Optional) Let others know what this bot does."})))),d.a.createElement("div",{className:"form-group"},d.a.createElement("label",{className:"control-label col-sm-4",htmlFor:"role"},d.a.createElement(E.a,{id:"bot.add.role",defaultMessage:"Role"})),d.a.createElement("div",{className:"col-md-5 col-sm-8"},d.a.createElement("select",{className:"form-control",value:this.state.role,disabled:!this.props.editingUserHasManageSystem,onChange:this.updateRole},d.a.createElement("option",{value:se},se),d.a.createElement("option",{value:ae},ae)),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"bot.add.role.help",defaultMessage:"Choose what role the bot should have."})))),d.a.createElement("div",{className:"row bot-profile__section"},d.a.createElement("div",{className:"col-md-5 col-sm-8 col-sm-offset-4"},d.a.createElement(j.b,{id:"admin.manage_roles.additionalRoles",defaultMessage:"Select additional permissions for the account. [Read more about roles and permissions](!https://about.mattermost.com/default-permissions)."}))),d.a.createElement("div",{className:"form-group"},d.a.createElement("label",{className:"control-label col-sm-4",htmlFor:"postAll"},d.a.createElement(E.a,{id:"bot.add.post_all",defaultMessage:"post:all"})),d.a.createElement("div",{className:"col-md-5 col-sm-8 checkbox"},d.a.createElement("div",{className:"checkbox no-padding"},d.a.createElement("label",{htmlFor:"postAll"},d.a.createElement("input",{id:"postAll",type:"checkbox",checked:this.state.postAll||this.state.role===ae,onChange:this.updatePostAll,disabled:!this.props.editingUserHasManageSystem||this.state.role===ae}),d.a.createElement(E.a,{id:"bot.add.post_all.enabled",defaultMessage:"Enabled"}))),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"bot.add.post_all.help",defaultMessage:"Bot will have access to post to all Mattermost channels including direct messages."})))),d.a.createElement("div",{className:"form-group"},d.a.createElement("label",{className:"control-label col-sm-4",htmlFor:"postChannels"},d.a.createElement(E.a,{id:"bot.add.post_channels",defaultMessage:"post:channels"})),d.a.createElement("div",{className:"col-md-5 col-sm-8 checkbox"},d.a.createElement("div",{className:"checkbox no-padding"},d.a.createElement("label",{htmlFor:"postChannels"},d.a.createElement("input",{id:"postChannels",type:"checkbox",checked:this.state.postChannels||this.state.role===ae||this.state.postAll,onChange:this.updatePostChannels,disabled:!this.props.editingUserHasManageSystem||this.state.role===ae||this.state.postAll}),d.a.createElement(E.a,{id:"bot.add.post_channels.enabled",defaultMessage:"Enabled"}))),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"bot.add.post_channels.help",defaultMessage:"Bot will have access to post to all Mattermost public channels."})))),d.a.createElement("div",{className:"backstage-form__footer"},d.a.createElement($.a,{type:"backstage",errors:[this.state.error]}),d.a.createElement(v.a,{className:"btn btn-link btn-sm",to:"/".concat(this.props.team.name,"/integrations/bots")},d.a.createElement(E.a,{id:"bots.manage.add.cancel",defaultMessage:"Cancel"})),d.a.createElement(Z.a,{className:"btn btn-primary",type:"submit",spinning:this.state.adding,spinningText:a,onClick:this.handleSubmit,id:"saveBot"},t)))))}}te(ne,"propTypes",{team:p.a.object.isRequired,bot:p.a.object,roles:p.a.string,maxFileSize:p.a.number.isRequired,editingUserHasManageSystem:p.a.bool.isRequired,actions:p.a.shape({createBot:p.a.func.isRequired,patchBot:p.a.func.isRequired,uploadProfileImage:p.a.func.isRequired,setDefaultProfileImage:p.a.func.isRequired,createUserAccessToken:p.a.func.isRequired,updateUserRoles:p.a.func.isRequired})});var oe=Object(s.connect)((function(e,t){const a=Object(i.getConfig)(e),s=new URLSearchParams(t.location.search).get("id"),n=Object(g.getBotAccounts)(e),o=n?n[s]:null,r=o?Object(B.getUsers)(e)[o.user_id]:null,m=r?r.roles:null;return{maxFileSize:parseInt(a.MaxFileSize,10),bot:o,roles:m,editingUserHasManageSystem:Object(l.haveISystemPermission)(e,{permission:c.Permissions.MANAGE_SYSTEM})}}),(function(e){return{actions:Object(h.bindActionCreators)({createBot:b.createBot,patchBot:b.patchBot,uploadProfileImage:f.uploadProfileImage,setDefaultProfileImage:f.setDefaultProfileImage,createUserAccessToken:f.createUserAccessToken,updateUserRoles:f.updateUserRoles},e)}}))(ne),re=a(1172),ie=a(1181),le=a(1347),ce=a(1928),me=a.n(ce),de=a(1929),ue=a.n(de),pe=a(1930),he=a.n(pe),ge=a(1931),be=a.n(ge),fe=a(1182),Ee=a(1183);class _e extends d.a.Component{static get propTypes(){return{image:p.a.string.isRequired,title:p.a.node.isRequired,description:p.a.node.isRequired,link:p.a.string.isRequired}}render(){const{image:e,title:t,description:a,link:s}=this.props;return d.a.createElement(v.a,{to:s,className:"integration-option"},d.a.createElement("img",{alt:"integration image",className:"integration-option__image",src:e}),d.a.createElement("div",{className:"integration-option__title"},t),d.a.createElement("div",{className:"integration-option__description"},a))}}class ke extends d.a.Component{constructor(...e){super(...e),function(e,t,a){t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a}(this,"updateTitle",()=>{const e=this.props.siteName||"";document.title=k.gb("admin.sidebar.integrations","Integrations")+" - "+this.props.team.display_name+" "+e})}static get propTypes(){return{team:p.a.object,user:p.a.object,siteName:p.a.string,enableIncomingWebhooks:p.a.bool,enableOutgoingWebhooks:p.a.bool,enableCommands:p.a.bool,enableOAuthServiceProvider:p.a.bool}}componentDidMount(){this.updateTitle()}render(){const e=[];return this.props.enableIncomingWebhooks&&e.push(d.a.createElement(Ee.a,{teamId:this.props.team.id,permissions:[c.Permissions.MANAGE_INCOMING_WEBHOOKS],key:"incomingWebhookPermission"},d.a.createElement(_e,{key:"incomingWebhook",image:me.a,title:d.a.createElement(E.a,{id:"integrations.incomingWebhook.title",defaultMessage:"Incoming Webhooks"}),description:d.a.createElement(E.a,{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(d.a.createElement(Ee.a,{teamId:this.props.team.id,permissions:[c.Permissions.MANAGE_OUTGOING_WEBHOOKS],key:"outgoingWebhookPermission"},d.a.createElement(_e,{key:"outgoingWebhook",image:he.a,title:d.a.createElement(E.a,{id:"integrations.outgoingWebhook.title",defaultMessage:"Outgoing Webhooks"}),description:d.a.createElement(E.a,{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(d.a.createElement(Ee.a,{teamId:this.props.team.id,permissions:[c.Permissions.MANAGE_SLASH_COMMANDS],key:"commandPermission"},d.a.createElement(_e,{key:"command",image:be.a,title:d.a.createElement(E.a,{id:"integrations.command.title",defaultMessage:"Slash Commands"}),description:d.a.createElement(E.a,{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(d.a.createElement(fe.a,{permissions:[c.Permissions.MANAGE_OAUTH],key:"oauth2AppsPermission"},d.a.createElement(_e,{key:"oauth2Apps",image:ue.a,title:d.a.createElement(E.a,{id:"integrations.oauthApps.title",defaultMessage:"OAuth 2.0 Applications"}),description:d.a.createElement(E.a,{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"}))),e.push(d.a.createElement(fe.a,{permissions:["manage_bots"],key:"botsPermissions"},d.a.createElement(_e,{image:z.a,title:d.a.createElement(E.a,{id:"bots.manage.header",defaultMessage:"Bot Accounts"}),description:d.a.createElement(E.a,{id:"bots.manage.description",defaultMessage:"Use bot accounts to integrate with Mattermost through plugins or the API"}),link:"/"+this.props.team.name+"/integrations/bots"}))),d.a.createElement("div",{className:"backstage-content row"},d.a.createElement("div",{className:"backstage-header"},d.a.createElement("h1",null,d.a.createElement(E.a,{id:"integrations.header",defaultMessage:"Integrations"}))),d.a.createElement("div",{className:"backstage-list__help"},d.a.createElement(E.a,{id:"integrations.help",defaultMessage:"Visit the {appDirectory} to find self-hosted, third-party apps and integrations for Mattermost.",values:{appDirectory:d.a.createElement("a",{target:"_blank",rel:"noopener noreferrer",href:"https://about.mattermost.com/default-app-directory/"},d.a.createElement(E.a,{id:"integrations.help.appDirectory",defaultMessage:"App Directory"}))}})),d.a.createElement("div",{className:"integrations-list d-flex flex-wrap"},e))}}var ve=Object(s.connect)((function(e){const t=Object(i.getConfig)(e);return{siteName:t.SiteName,enableIncomingWebhooks:"true"===t.EnableIncomingWebhooks,enableOutgoingWebhooks:"true"===t.EnableOutgoingWebhooks,enableCommands:"true"===t.EnableCommands,enableOAuthServiceProvider:"true"===t.EnableOAuthServiceProvider}}))(ke),ye=a(140),Ne=a(3),Oe=a.n(Ne);function Ce(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class we extends d.a.Component{render(){return this.props.hasPermission&&!this.props.invert?this.props.children:!this.props.hasPermission&&this.props.invert?this.props.children:null}}Ce(we,"defaultProps",{invert:!1}),Ce(we,"propTypes",{permissions:p.a.arrayOf(p.a.string).isRequired,hasPermission:p.a.bool.isRequired,invert:p.a.bool.isRequired,children:p.a.node.isRequired});var Me=Object(s.connect)((function(e,t){const a=Object(r.getMyTeams)(e);for(const s of a)for(const a of t.permissions)if(Object(l.haveITeamPermission)(e,{team:s.id,permission:a}))return{hasPermission:!0};return{hasPermission:!1}}))(we),je=a(143),Ae=a(139),Te=a(18);function Se(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class Re extends d.a.PureComponent{constructor(e){if(super(e),Se(this,"handleOpenModal",e=>{e.preventDefault(),this.setState({showDeleteModal:!0})}),Se(this,"handleConfirm",()=>{this.props.onDelete()}),Se(this,"handleCancel",()=>{this.setState({showDeleteModal:!1})}),Se(this,"handleKeyDown",e=>{k.W(e,M.Q.KeyCodes.ENTER)&&this.handleConfirm(e)}),this.constructor===Re)throw new TypeError("Can not construct abstract class.");this.state={showDeleteModal:!1}}render(){return d.a.createElement("span",null,d.a.createElement("button",{className:"color--link style--none",onClick:this.handleOpenModal},this.triggerTitle),d.a.createElement(A.a,{show:this.state.showDeleteModal,title:this.modalTitle,message:this.modalMessage,confirmButtonText:this.modalConfirmButton,onConfirm:this.handleConfirm,onCancel:this.handleCancel,onKeyDown:this.handleKeyDown}))}}Se(Re,"propTypes",{onDelete:p.a.func.isRequired});class Pe extends Re{get triggerTitle(){return d.a.createElement(E.a,{id:"emoji_list.delete",defaultMessage:"Delete"})}get modalTitle(){return d.a.createElement(E.a,{id:"emoji_list.delete.confirm.title",defaultMessage:"Delete Custom Emoji"})}get modalMessage(){return d.a.createElement("div",{className:"alert alert-warning"},d.a.createElement(R.a,{additionalClassName:"fa-margin--right"}),d.a.createElement(E.a,{id:"emoji_list.delete.confirm.msg",defaultMessage:"This action permanently deletes the custom emoji. Are you sure you want to delete it?"}))}get modalConfirmButton(){return d.a.createElement(E.a,{id:"emoji_list.delete.confirm.button",defaultMessage:"Delete"})}}function xe(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}!function(e,t,a){t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a}(Pe,"propTypes",{onDelete:p.a.func.isRequired});class Ie extends d.a.Component{constructor(...e){super(...e),xe(this,"handleDelete",()=>{this.props.onDelete&&this.props.onDelete(this.props.emoji.id),this.props.actions.deleteCustomEmoji(this.props.emoji.id)})}render(){const e=this.props.emoji,t=this.props.creatorUsername;let a=this.props.creatorDisplayName;t&&t!==a&&(a+=" (@"+t+")");let s=null;return s=e.creator_id===this.props.currentUserId?d.a.createElement(Me,{permissions:[Oe.a.DELETE_EMOJIS]},d.a.createElement(Pe,{onDelete:this.handleDelete})):d.a.createElement(Me,{permissions:[Oe.a.DELETE_EMOJIS]},d.a.createElement(Me,{permissions:[Oe.a.DELETE_OTHERS_EMOJIS]},d.a.createElement(Pe,{onDelete:this.handleDelete}))),d.a.createElement("tr",{className:"backstage-list__item"},d.a.createElement("td",{className:"emoji-list__name"},":"+e.name+":"),d.a.createElement("td",{className:"emoji-list__image"},d.a.createElement("span",{className:"emoticon",style:{backgroundImage:"url("+Te.Client4.getCustomEmojiImageUrl(e.id)+")"}})),d.a.createElement("td",{className:"emoji-list__creator"},a),d.a.createElement("td",{className:"emoji-list-item_actions"},s))}}xe(Ie,"propTypes",{emoji:p.a.object.isRequired,currentUserId:p.a.string.isRequired,creatorDisplayName:p.a.string.isRequired,creatorUsername:p.a.string,currentTeam:p.a.object,onDelete:p.a.func,actions:p.a.shape({deleteCustomEmoji:p.a.func.isRequired}).isRequired}),xe(Ie,"defaultProps",{emoji:{},currentUserId:"",currentTeam:{},creatorDisplayName:""});var Ue=Object(s.connect)((function(e,t){const a=e.entities.emojis.customEmoji[t.emojiId],s=Object(o.getUser)(e,a.creator_id);return{emoji:a,creatorDisplayName:Object(k.v)(s),creatorUsername:s?s.username:"",currentUserId:Object(o.getCurrentUserId)(e),currentTeam:Object(r.getCurrentTeam)(e)}}),(function(e){return{actions:Object(h.bindActionCreators)({deleteCustomEmoji:Ae.deleteCustomEmoji},e)}}))(Ie),qe=a(1168),De=a(1195),Le=a(1127);function We(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}const He=50,Be=200;class Fe extends d.a.Component{constructor(e){super(e),We(this,"nextPage",e=>{e&&e.preventDefault();const t=this.state.page+1;this.setState({nextLoading:!0}),this.props.actions.getCustomEmojis(t,He,c.Emoji.SORT_BY_NAME,!0).then(({data:e})=>{this.setState({page:t,nextLoading:!1}),e&&e.length<He&&this.setState({missingPages:!1}),this.props.scrollToTop()})}),We(this,"previousPage",e=>{e&&e.preventDefault(),this.setState({page:this.state.page-1,nextLoading:!1}),this.props.scrollToTop()}),We(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})},Be)}),We(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}}componentDidMount(){this.props.actions.getCustomEmojis(0,He+1,c.Emoji.SORT_BY_NAME,!0).then(({data:e})=>{this.setState({loading:!1}),e&&e.length<He&&this.setState({missingPages:!1})})}render(){const e=this.state.searchEmojis,t=[];let a,s;if(this.state.loading)t.push(d.a.createElement("tr",{key:"loading",className:"backstage-list__item backstage-list__empty"},d.a.createElement("td",{colSpan:"4"},d.a.createElement(y.a,{key:"loading"}))));else if(0===this.props.emojiIds.length||e&&0===e.length)t.push(d.a.createElement("tr",{key:"empty",className:"backstage-list__item backstage-list__empty"},d.a.createElement("td",{colSpan:"4"},d.a.createElement(E.a,{id:"emoji_list.empty",defaultMessage:"No custom emoji found"}))));else if(e)e.forEach(e=>{t.push(d.a.createElement(Ue,{key:"emoji_search_item"+e,emojiId:e,onDelete:this.deleteFromSearch}))});else{const e=this.state.page*He,n=e+He;if(this.props.emojiIds.slice(e,n).forEach(e=>{t.push(d.a.createElement(Ue,{key:"emoji_list_item"+e,emojiId:e}))}),this.state.missingPages){const e=d.a.createElement("span",null,d.a.createElement(E.a,{id:"filtered_user_list.next",defaultMessage:"Next"}),d.a.createElement(qe.a,{additionalClassName:"margin-left"}));a=d.a.createElement(S.a,{btnClass:"btn-link",extraClasses:"pull-right",onClick:this.nextPage,saving:this.state.nextLoading,disabled:this.state.nextLoading,defaultMessage:e,savingMessage:e})}this.state.page>0&&(s=d.a.createElement("button",{className:"btn btn-link",onClick:this.previousPage},d.a.createElement(De.a,{additionalClassName:"margin-right"}),d.a.createElement(E.a,{id:"filtered_user_list.prev",defaultMessage:"Previous"})))}return d.a.createElement("div",null,d.a.createElement("div",{className:"backstage-filters"},d.a.createElement("div",{className:"backstage-filter__search"},d.a.createElement(N,null),d.a.createElement(Le.a,{type:"search",className:"form-control",placeholder:{id:Object(J.b)("emoji_list.search"),defaultMessage:"Search Custom Emoji"},onChange:this.onSearchChange,style:Ge.search}))),d.a.createElement("span",{className:"backstage-list__help"},d.a.createElement("p",null,d.a.createElement(E.a,{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."})),d.a.createElement("p",null,d.a.createElement(E.a,{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:'."}))),d.a.createElement("div",{className:"backstage-list"},d.a.createElement("table",{className:"emoji-list__table"},d.a.createElement("thead",null,d.a.createElement("tr",{className:"backstage-list__item emoji-list__table-header"},d.a.createElement("th",{className:"emoji-list__name"},d.a.createElement(E.a,{id:"emoji_list.name",defaultMessage:"Name"})),d.a.createElement("th",{className:"emoji-list__image"},d.a.createElement(E.a,{id:"emoji_list.image",defaultMessage:"Image"})),d.a.createElement("th",{className:"emoji-list__creator"},d.a.createElement(E.a,{id:"emoji_list.creator",defaultMessage:"Creator"})),d.a.createElement("th",{className:"emoji-list_actions"},d.a.createElement(E.a,{id:"emoji_list.actions",defaultMessage:"Actions"})))),d.a.createElement("tbody",null,t))),d.a.createElement("div",{className:"filter-controls padding-top x2"},s,a))}}We(Fe,"propTypes",{emojiIds:p.a.arrayOf(p.a.string).isRequired,scrollToTop:p.a.func.isRequired,actions:p.a.shape({getCustomEmojis:p.a.func.isRequired,searchCustomEmojis:p.a.func.isRequired}).isRequired});const Ge={search:{flexGrow:0,flexShrink:0}};var Ye=Object(s.connect)((function(e){return{emojiIds:Object(je.getCustomEmojiIdsSortedByName)(e)||[]}}),(function(e){return{actions:Object(h.bindActionCreators)({getCustomEmojis:Ae.getCustomEmojis,searchCustomEmojis:Ae.searchCustomEmojis},e)}}))(Fe);function ze(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class Ke extends d.a.Component{constructor(...e){super(...e),ze(this,"updateTitle",()=>{document.title=k.gb("custom_emoji.header","Custom Emoji")+" - "+this.props.teamDisplayName+" "+this.props.siteName})}componentDidMount(){this.updateTitle(),this.props.actions.loadRolesIfNeeded(["system_admin","team_admin","system_user","team_user"])}componentDidUpdate(e){this.props.siteName!==e.siteName&&this.updateTitle()}render(){return d.a.createElement("div",{className:"backstage-content emoji-list"},d.a.createElement("div",{className:"backstage-header"},d.a.createElement("h1",null,d.a.createElement(E.a,{id:"emoji_list.header",defaultMessage:"Custom Emoji"})),d.a.createElement(Me,{permissions:[Oe.a.CREATE_EMOJIS]},d.a.createElement(v.a,{className:"add-link",to:"/"+this.props.teamName+"/emoji/add"},d.a.createElement("button",{type:"button",className:"btn btn-primary"},d.a.createElement(E.a,{id:"emoji_list.add",defaultMessage:"Add Custom Emoji"}))))),d.a.createElement(Ye,{scrollToTop:this.props.scrollToTop}))}}ze(Ke,"propTypes",{teamId:p.a.string.isRequired,teamName:p.a.string.isRequired,teamDisplayName:p.a.string.isRequired,siteName:p.a.string,scrollToTop:p.a.func.isRequired,actions:p.a.shape({loadRolesIfNeeded:p.a.func.isRequired}).isRequired}),ze(Ke,"defaultProps",{teamName:"",teamDisplayName:"",siteName:""});var Qe=Object(s.connect)((function(e){const t=Object(r.getCurrentTeam)(e)||{};return{teamId:t.id,teamName:t.name,teamDisplayName:t.display_name,siteName:e.entities.general.config.SiteName}}),(function(e){return{actions:Object(h.bindActionCreators)({loadRolesIfNeeded:ye.loadRolesIfNeeded},e)}}))(Ke),Je=a(69);a(183),a(99);function Ve(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class Xe extends d.a.Component{constructor(e){super(e),Ve(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:d.a.createElement(E.a,{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:d.a.createElement(E.a,{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:d.a.createElement(E.a,{id:"add_emoji.nameTaken",defaultMessage:"This name is already in use by a system emoji. Please choose another name."})});if(!o)return void this.setState({saving:!1,error:d.a.createElement(E.a,{id:"add_emoji.imageRequired",defaultMessage:"An image is required for the emoji"})});const{error:c}=await t.createCustomEmoji(l,o);c?this.setState({saving:!1,error:c.message}):K.a.push("/"+n.name+"/emoji")}),Ve(this,"updateName",e=>{this.setState({name:e.target.value})}),Ve(this,"updateImage",e=>{if(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=d.a.createElement("span",{className:"add-emoji__filename"},this.state.image.name));let t=null;return this.state.imageUrl&&(t=d.a.createElement("div",{className:"form-group"},d.a.createElement("label",{className:"control-label col-sm-4",htmlFor:"preview"},d.a.createElement(E.a,{id:"add_emoji.preview",defaultMessage:"Preview"})),d.a.createElement("div",{className:"col-md-5 col-sm-8 add-emoji__preview"},d.a.createElement(E.a,{id:"add_emoji.preview.sentence",defaultMessage:"This is a sentence with {image} in it.",values:{image:d.a.createElement("span",{className:"emoticon",style:{backgroundImage:"url("+this.state.imageUrl+")"}})}})))),d.a.createElement("div",{className:"backstage-content row"},d.a.createElement(V,null,d.a.createElement(v.a,{to:"/"+this.props.team.name+"/emoji"},d.a.createElement(E.a,{id:"emoji_list.header",defaultMessage:"Custom Emoji"})),d.a.createElement(E.a,{id:"add_emoji.header",defaultMessage:"Add"})),d.a.createElement("div",{className:"backstage-form"},d.a.createElement("form",{className:"form-horizontal",onSubmit:this.handleSubmit},d.a.createElement("div",{className:"form-group"},d.a.createElement("label",{className:"control-label col-sm-4",htmlFor:"name"},d.a.createElement(E.a,{id:"add_emoji.name",defaultMessage:"Name"})),d.a.createElement("div",{className:"col-md-5 col-sm-8"},d.a.createElement("input",{id:"name",type:"text",maxLength:"64",className:"form-control",value:this.state.name,onChange:this.updateName}),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"add_emoji.name.help",defaultMessage:"Choose a name for your emoji made of up to 64 characters consisting of lowercase letters, numbers, and the symbols '-' and '_'."})))),d.a.createElement("div",{className:"form-group"},d.a.createElement("label",{className:"control-label col-sm-4",htmlFor:"image"},d.a.createElement(E.a,{id:"add_emoji.image",defaultMessage:"Image"})),d.a.createElement("div",{className:"col-md-5 col-sm-8"},d.a.createElement("div",null,d.a.createElement("div",{className:"add-emoji__upload"},d.a.createElement("button",{className:"btn btn-primary"},d.a.createElement(E.a,{id:"add_emoji.image.button",defaultMessage:"Select"})),d.a.createElement("input",{id:"select-emoji",type:"file",accept:".jpg,.png,.gif",multiple:!1,onChange:this.updateImage})),e,d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"add_emoji.image.help",defaultMessage:"Choose the image for your emoji. The image can be a gif, png, or jpeg file with a max size of 64 KB and dimensions up to 128 by 128 pixels."}))))),t,d.a.createElement("div",{className:"backstage-form__footer"},d.a.createElement($.a,{type:"backstage",error:this.state.error}),d.a.createElement(v.a,{className:"btn btn-link btn-sm",to:"/"+this.props.team.name+"/emoji"},d.a.createElement(E.a,{id:"add_emoji.cancel",defaultMessage:"Cancel"})),d.a.createElement(Z.a,{className:"btn btn-primary",type:"submit",spinning:this.state.saving,spinningText:Object(k.gb)("add_emoji.saving","Saving..."),onClick:this.handleSubmit},d.a.createElement(E.a,{id:"add_emoji.save",defaultMessage:"Save"}))))))}}Ve(Xe,"propTypes",{actions:p.a.shape({createCustomEmoji:p.a.func.isRequired}).isRequired,emojiMap:p.a.object.isRequired,team:p.a.object,user:p.a.object}),Ve(Xe,"contextTypes",{router:p.a.object.isRequired});var Ze=Object(s.connect)((function(e){return{emojiMap:Object(Je.a)(e)}}),(function(e){return{actions:Object(h.bindActionCreators)({createCustomEmoji:Ae.createCustomEmoji},e)}}))(Xe),$e=a(1139),et=a(13),tt=a(1207);a(1405);const at=100;function st(e,t=0,a=at){return async s=>{const{data:n}=await s($e.getIncomingHooks(e,t,a));n&&s(function(e){return async(t,a)=>{const s=a(),n={};for(let t=0;t<e.length;t++){const a=e[t];Object(o.getUser)(s,a.user_id)||(n[a.user_id]=!0)}const r=Object.keys(n);0!==r.length&&t(Object(f.getProfilesByIds)(r))}}(n))}}function nt(e,t=0,a=at){return async s=>{const{data:n}=await s($e.getOutgoingHooks("",e,t,a));n&&s(function(e){return async(t,a)=>{const s=a(),n={};for(let t=0;t<e.length;t++){const a=e[t];Object(o.getUser)(s,a.creator_id)||(n[a.creator_id]=!0)}const r=Object.keys(n);0!==r.length&&t(Object(f.getProfilesByIds)(r))}}(n))}}function ot(e){return async t=>{const{data:a}=await t($e.getCustomTeamCommands(e));a&&t(function(e){return async(t,a)=>{const s=a(),n={};for(let t=0;t<e.length;t++){const a=e[t];Object(o.getUser)(s,a.creator_id)||(n[a.creator_id]=!0)}const r=Object.keys(n);0!==r.length&&t(Object(f.getProfilesByIds)(r))}}(a))}}function rt(e=0,t=at){return async a=>{const{data:s}=await a($e.getOAuthApps(e,t));s&&a(function(e){return async(t,a)=>{const s=a(),n={};for(let t=0;t<e.length;t++){const a=e[t];Object(o.getUser)(s,a.creator_id)||(n[a.creator_id]=!0)}const r=Object.keys(n);0!==r.length&&t(Object(f.getProfilesByIds)(r))}}(s))}}function it(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class lt extends d.a.PureComponent{constructor(...e){super(...e),it(this,"copyText",e=>{e.preventDefault(),Object(k.g)(this.props.value)})}render(){if(!document.queryCommandSupported("copy"))return null;const e=d.a.createElement(F.a,{id:"copy"},d.a.createElement(E.a,{id:this.props.idMessage,defaultMessage:this.props.defaultMessage}));return d.a.createElement(X.a,{delayShow:M.Q.OVERLAY_TIME_DELAY,placement:"top",overlay:e},d.a.createElement("a",{href:"#",className:"fa fa-copy margin-left",onClick:this.copyText}))}}it(lt,"propTypes",{value:p.a.string.isRequired,defaultMessage:p.a.string,idMessage:p.a.string}),it(lt,"defaultProps",{defaultMessage:"Copy",idMessage:"integrations.copy"});class ct extends Re{get triggerTitle(){return d.a.createElement(E.a,{id:"installed_integrations.delete",defaultMessage:"Delete"})}get modalTitle(){return d.a.createElement(E.a,{id:"integrations.delete.confirm.title",defaultMessage:"Delete Integration"})}get modalMessage(){return d.a.createElement("div",{className:"alert alert-warning"},d.a.createElement(R.a,{additionalClassName:"fa-margin--right"}),d.a.createElement(E.a,{id:this.props.messageId,defaultMessage:"This action permanently deletes the integration and breaks any integrations using it. Are you sure you want to delete it?"}))}get modalConfirmButton(){return d.a.createElement(E.a,{id:"integrations.delete.confirm.button",defaultMessage:"Delete"})}}function mt(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function dt(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)))}ct.propTypes={messageId:p.a.string.isRequired,onDelete:p.a.func.isRequired};class ut extends d.a.PureComponent{constructor(...e){super(...e),mt(this,"handleDelete",()=>{this.props.onDelete(this.props.incomingWebhook)})}render(){const e=this.props.incomingWebhook,t=this.props.channel;if(!dt(e,t,this.props.filter?this.props.filter.toLowerCase():""))return null;let a;a=e.display_name?e.display_name:t?t.display_name:d.a.createElement(E.a,{id:"installed_incoming_webhooks.unknown_channel",defaultMessage:"A Private Webhook"});let s=null;e.description&&(s=d.a.createElement("div",{className:"item-details__row"},d.a.createElement("span",{className:"item-details__description"},e.description)));let n=null;this.props.canChange&&(n=d.a.createElement("div",{className:"item-actions"},d.a.createElement(v.a,{to:"/".concat(this.props.team.name,"/integrations/incoming_webhooks/edit?id=").concat(e.id)},d.a.createElement(E.a,{id:"installed_integrations.edit",defaultMessage:"Edit"}))," - ",d.a.createElement(ct,{messageId:Object(J.b)("installed_incoming_webhooks.delete.confirm"),onDelete:this.handleDelete})));const o=Object(_.e)()+"/hooks/"+e.id;return d.a.createElement("div",{className:"backstage-list__item"},d.a.createElement("div",{className:"item-details"},d.a.createElement("div",{className:"item-details__row d-flex flex-column flex-md-row justify-content-between"},d.a.createElement("strong",{className:"item-details__name"},a),n),s,d.a.createElement("div",{className:"item-details__row"},d.a.createElement("span",{className:"item-details__url word-break--all"},d.a.createElement(E.a,{id:"installed_integrations.url",defaultMessage:"URL: {url}",values:{url:o}}),d.a.createElement("span",null,d.a.createElement(lt,{value:o})))),d.a.createElement("div",{className:"item-details__row"},d.a.createElement("span",{className:"item-details__creation"},d.a.createElement(E.a,{id:"installed_integrations.creation",defaultMessage:"Created by {creator} on {createAt, date, full}",values:{creator:this.props.creator.username,createAt:e.create_at}})))))}}function pt(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}mt(ut,"propTypes",{incomingWebhook:p.a.object.isRequired,onDelete:p.a.func.isRequired,filter:p.a.string,creator:p.a.object.isRequired,canChange:p.a.bool.isRequired,team:p.a.object.isRequired,channel:p.a.object});class ht extends d.a.PureComponent{constructor(e){super(e),pt(this,"deleteIncomingWebhook",e=>{this.props.actions.removeIncomingHook(e.id)}),pt(this,"incomingWebhookCompare",(e,t)=>{let a=e.display_name;if(!a){const t=this.props.channels[e.channel_id];a=t?t.display_name:k.gb("installed_incoming_webhooks.unknown_channel","A Private Webhook")}const s=t.display_name;return a.localeCompare(s)}),pt(this,"incomingWebhooks",e=>this.props.incomingWebhooks.sort(this.incomingWebhookCompare).filter(t=>dt(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 d.a.createElement(ut,{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={loading:!0}}componentDidMount(){this.props.enableIncomingWebhooks&&this.props.actions.loadIncomingHooksAndProfilesForTeam(this.props.teamId,M.Q.Integrations.START_PAGE_NUM,M.Q.Integrations.PAGE_SIZE).then(()=>this.setState({loading:!1}))}render(){return d.a.createElement(C,{header:d.a.createElement(E.a,{id:"installed_incoming_webhooks.header",defaultMessage:"Installed Incoming Webhooks"}),addText:d.a.createElement(E.a,{id:"installed_incoming_webhooks.add",defaultMessage:"Add Incoming Webhook"}),addLink:"/"+this.props.team.name+"/integrations/incoming_webhooks/add",addButtonId:"addIncomingWebhook",emptyText:d.a.createElement(E.a,{id:"installed_incoming_webhooks.empty",defaultMessage:"No incoming webhooks found"}),emptyTextSearch:d.a.createElement(j.b,{id:"installed_incoming_webhooks.emptySearch",defaultMessage:"No incoming webhooks match {searchTerm}"}),helpText:d.a.createElement(E.a,{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:d.a.createElement("a",{target:"_blank",rel:"noopener noreferrer",href:"http://docs.mattermost.com/developer/webhooks-incoming.html"},d.a.createElement(E.a,{id:"installed_incoming_webhooks.help.buildYourOwn",defaultMessage:"Build Your Own"})),appDirectory:d.a.createElement("a",{target:"_blank",rel:"noopener noreferrer",href:"https://about.mattermost.com/default-app-directory/"},d.a.createElement(E.a,{id:"installed_incoming_webhooks.help.appDirectory",defaultMessage:"App Directory"}))}}),searchPlaceholder:k.gb("installed_incoming_webhooks.search","Search Incoming Webhooks"),loading:this.state.loading},e=>{const t=this.incomingWebhooks(e);return[t,t.length>0]})}}pt(ht,"propTypes",{team:p.a.object,user:p.a.object,canManageOthersWebhooks:p.a.bool,incomingWebhooks:p.a.array,channels:p.a.object,users:p.a.object,teamId:p.a.string,actions:p.a.shape({removeIncomingHook:p.a.func,loadIncomingHooksAndProfilesForTeam:p.a.func}),enableIncomingWebhooks:p.a.bool});var gt=Object(s.connect)((function(e){const t=Object(i.getConfig)(e),a=Object(r.getCurrentTeamId)(e),s=Object(l.haveITeamPermission)(e,{team:a,permission:c.Permissions.MANAGE_OTHERS_INCOMING_WEBHOOKS}),n=Object(tt.getIncomingHooks)(e),m=Object.keys(n).map(e=>n[e]).filter(e=>e.team_id===a),d="true"===t.EnableIncomingWebhooks;return{incomingWebhooks:m,channels:Object(et.getAllChannels)(e),users:Object(o.getUsers)(e),teamId:a,canManageOthersWebhooks:s,enableIncomingWebhooks:d}}),(function(e){return{actions:Object(h.bindActionCreators)({loadIncomingHooksAndProfilesForTeam:st,removeIncomingHook:$e.removeIncomingHook},e)}}))(ht),bt=a(21),ft=a(324),Et=a(100);class _t extends d.a.PureComponent{static get propTypes(){return{channels:p.a.array.isRequired,onChange:p.a.func,value:p.a.string,selectOpen:p.a.bool.isRequired,selectPrivate:p.a.bool.isRequired,selectDm:p.a.bool.isRequired}}static get defaultProps(){return{selectOpen:!1,selectPrivate:!1,selectDm:!1}}render(){const e=[d.a.createElement("option",{key:"",value:""},k.gb("channel_select.placeholder","--- Select a channel ---"))];return this.props.channels.forEach(t=>{const a=t.display_name||t.name;t.type===M.Q.OPEN_CHANNEL&&this.props.selectOpen?e.push(d.a.createElement("option",{key:t.id,value:t.id},a)):t.type===M.Q.PRIVATE_CHANNEL&&this.props.selectPrivate?e.push(d.a.createElement("option",{key:t.id,value:t.id},a)):t.type===M.Q.DM_CHANNEL&&this.props.selectDm&&e.push(d.a.createElement("option",{key:t.id,value:t.id},a))}),d.a.createElement("select",{className:"form-control",value:this.props.value,onChange:this.props.onChange,id:"channelSelect"},e)}}const kt=Object(bt.createSelector)(et.getMyChannels,ft.getCurrentUserLocale,(e,t)=>[...e].sort(Et.sortChannelsByTypeAndDisplayName.bind(null,t)));var vt=Object(s.connect)((function(e){return{channels:kt(e)}}))(_t);function yt(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class Nt extends d.a.Component{constructor(e){super(e),yt(this,"getStateFromHook",e=>({displayName:e.display_name||"",description:e.description||"",channelId:e.channel_id||"",channelLocked:e.channel_locked||!1,username:e.username||"",iconURL:e.icon_url||"",saving:!1,serverError:"",clientError:null})),yt(this,"handleSubmit",e=>{if(e.preventDefault(),this.state.saving)return;if(this.setState({saving:!0,serverError:"",clientError:""}),!this.state.channelId)return void this.setState({saving:!1,clientError:d.a.createElement(E.a,{id:"add_incoming_webhook.channelRequired",defaultMessage:"A valid channel is required"})});const t={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};this.props.action(t).then(()=>this.setState({saving:!1}))}),yt(this,"updateDisplayName",e=>{this.setState({displayName:e.target.value})}),yt(this,"updateDescription",e=>{this.setState({description:e.target.value})}),yt(this,"updateChannelId",e=>{this.setState({channelId:e.target.value})}),yt(this,"updateChannelLocked",e=>{this.setState({channelLocked:e.target.checked})}),yt(this,"updateUsername",e=>{this.setState({username:e.target.value})}),yt(this,"updateIconURL",e=>{this.setState({iconURL:e.target.value})}),this.state=this.getStateFromHook(this.props.initialHook||{})}render(){var e=this.props.header,t=this.props.footer;return d.a.createElement("div",{className:"backstage-content"},d.a.createElement(V,null,d.a.createElement(v.a,{to:"/".concat(this.props.team.name,"/integrations/incoming_webhooks")},d.a.createElement(E.a,{id:"installed_incoming_webhooks.header",defaultMessage:"Incoming Webhooks"})),d.a.createElement(E.a,{id:e.id,defaultMessage:e.defaultMessage})),d.a.createElement("div",{className:"backstage-form"},d.a.createElement("form",{className:"form-horizontal",onSubmit:this.handleSubmit},d.a.createElement("div",{className:"form-group"},d.a.createElement("label",{className:"control-label col-sm-4",htmlFor:"displayName"},d.a.createElement(E.a,{id:"add_incoming_webhook.displayName",defaultMessage:"Title"})),d.a.createElement("div",{className:"col-md-5 col-sm-8"},d.a.createElement("input",{id:"displayName",type:"text",maxLength:"64",className:"form-control",value:this.state.displayName,onChange:this.updateDisplayName}),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"add_incoming_webhook.displayName.help",defaultMessage:"Choose a title to be displayed on the webhook settings page. Maximum 64 characters."})))),d.a.createElement("div",{className:"form-group"},d.a.createElement("label",{className:"control-label col-sm-4",htmlFor:"description"},d.a.createElement(E.a,{id:"add_incoming_webhook.description",defaultMessage:"Description"})),d.a.createElement("div",{className:"col-md-5 col-sm-8"},d.a.createElement("input",{id:"description",type:"text",maxLength:"500",className:"form-control",value:this.state.description,onChange:this.updateDescription}),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"add_incoming_webhook.description.help",defaultMessage:"Description for your incoming webhook."})))),d.a.createElement("div",{className:"form-group"},d.a.createElement("label",{className:"control-label col-sm-4",htmlFor:"channelId"},d.a.createElement(E.a,{id:"add_incoming_webhook.channel",defaultMessage:"Channel"})),d.a.createElement("div",{className:"col-md-5 col-sm-8"},d.a.createElement(vt,{id:"channelId",value:this.state.channelId,onChange:this.updateChannelId,selectOpen:!0,selectPrivate:!0}),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"add_incoming_webhook.channel.help",defaultMessage:"The default public or private channel that receives the webhook payloads. You must belong to the private channel when setting up the webhook."})))),d.a.createElement("div",{className:"form-group"},d.a.createElement("label",{className:"control-label col-sm-4",htmlFor:"channelLocked"},d.a.createElement(E.a,{id:"add_incoming_webhook.channelLocked",defaultMessage:"Lock to this channel"})),d.a.createElement("div",{className:"col-md-5 col-sm-8 checkbox"},d.a.createElement("input",{id:"channelLocked",type:"checkbox",checked:this.state.channelLocked,onChange:this.updateChannelLocked}),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"add_incoming_webhook.channelLocked.help",defaultMessage:"If set, the incoming webhook can only post to the channel selected above."})))),this.props.enablePostUsernameOverride&&d.a.createElement("div",{className:"form-group"},d.a.createElement("label",{className:"control-label col-sm-4",htmlFor:"username"},d.a.createElement(E.a,{id:"add_incoming_webhook.username",defaultMessage:"Username"})),d.a.createElement("div",{className:"col-md-5 col-sm-8"},d.a.createElement("input",{id:"username",type:"text",maxLength:"22",className:"form-control",value:this.state.username,onChange:this.updateUsername}),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"add_incoming_webhook.username.help",defaultMessage:'Choose the username this integration will post as. Usernames can be up to 22 characters, and may contain lowercase letters, numbers and the symbols "-", "_", and ".".'})))),this.props.enablePostIconOverride&&d.a.createElement("div",{className:"form-group"},d.a.createElement("label",{className:"control-label col-sm-4",htmlFor:"iconURL"},d.a.createElement(E.a,{id:"add_incoming_webhook.icon_url",defaultMessage:"Profile Picture"})),d.a.createElement("div",{className:"col-md-5 col-sm-8"},d.a.createElement("input",{id:"iconURL",type:"text",maxLength:"1024",className:"form-control",value:this.state.iconURL,onChange:this.updateIconURL}),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"add_incoming_webhook.icon_url.help",defaultMessage:"Choose the profile picture this integration will use when posting. Enter the URL of a .png or .jpg file at least 128 pixels by 128 pixels."})))),d.a.createElement("div",{className:"backstage-form__footer"},d.a.createElement($.a,{type:"backstage",errors:[this.props.serverError,this.state.clientError]}),d.a.createElement(v.a,{className:"btn btn-link btn-sm",to:"/".concat(this.props.team.name,"/integrations/incoming_webhooks")},d.a.createElement(E.a,{id:"add_incoming_webhook.cancel",defaultMessage:"Cancel"})),d.a.createElement(Z.a,{className:"btn btn-primary",type:"submit",spinning:this.state.saving,spinningText:Object(k.gb)(this.props.loading.id,this.props.loading.defaultMessage),onClick:this.handleSubmit,id:"saveWebhook"},d.a.createElement(E.a,{id:t.id,defaultMessage:t.defaultMessage}))))))}}function Ot(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}yt(Nt,"propTypes",{team:p.a.object.isRequired,header:p.a.object.isRequired,footer:p.a.object.isRequired,loading:p.a.object.isRequired,serverError:p.a.string.isRequired,initialHook:p.a.object,enablePostUsernameOverride:p.a.bool.isRequired,enablePostIconOverride:p.a.bool.isRequired,action:p.a.func.isRequired});const Ct={id:Object(J.b)("integrations.add"),defaultMessage:"Add"},wt={id:Object(J.b)("add_incoming_webhook.save"),defaultMessage:"Save"},Mt={id:Object(J.b)("add_incoming_webhook.saving"),defaultMessage:"Saving..."};class jt extends d.a.PureComponent{constructor(e){super(e),Ot(this,"addIncomingHook",async e=>{this.setState({serverError:""});const{data:t,error:a}=await this.props.actions.createIncomingHook(e);t?K.a.push("/".concat(this.props.team.name,"/integrations/confirm?type=incoming_webhooks&id=").concat(t.id)):a&&this.setState({serverError:a.message})}),this.state={serverError:""}}render(){return d.a.createElement(Nt,{team:this.props.team,header:Ct,footer:wt,loading:Mt,enablePostUsernameOverride:this.props.enablePostUsernameOverride,enablePostIconOverride:this.props.enablePostIconOverride,action:this.addIncomingHook,serverError:this.state.serverError})}}Ot(jt,"propTypes",{team:p.a.object.isRequired,enablePostUsernameOverride:p.a.bool.isRequired,enablePostIconOverride:p.a.bool.isRequired,actions:p.a.shape({createIncomingHook:p.a.func.isRequired}).isRequired});var At=Object(s.connect)((function(e){const t=Object(i.getConfig)(e);return{enablePostUsernameOverride:"true"===t.EnablePostUsernameOverride,enablePostIconOverride:"true"===t.EnablePostIconOverride}}),(function(e){return{actions:Object(h.bindActionCreators)({createIncomingHook:$e.createIncomingHook},e)}}))(jt);function Tt(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}const St={id:Object(J.b)("integrations.edit"),defaultMessage:"Edit"},Rt={id:Object(J.b)("update_incoming_webhook.update"),defaultMessage:"Update"},Pt={id:Object(J.b)("update_incoming_webhook.updating"),defaultMessage:"Updating..."};class xt extends d.a.PureComponent{constructor(e){super(e),Tt(this,"editIncomingHook",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),await this.submitHook()}),Tt(this,"submitHook",async()=>{this.setState({serverError:""});const{data:e,error:t}=await this.props.actions.updateIncomingHook(this.newHook);e?K.a.push("/".concat(this.props.team.name,"/integrations/incoming_webhooks")):t&&this.setState({serverError:t.message})}),this.state={showConfirmModal:!1,serverError:""}}componentDidMount(){this.props.enableIncomingWebhooks&&this.props.actions.getIncomingHook(this.props.hookId)}render(){return this.props.hook?d.a.createElement(Nt,{team:this.props.team,header:St,footer:Rt,loading:Pt,enablePostUsernameOverride:this.props.enablePostUsernameOverride,enablePostIconOverride:this.props.enablePostIconOverride,action:this.editIncomingHook,serverError:this.state.serverError,initialHook:this.props.hook}):d.a.createElement(y.a,null)}}Tt(xt,"propTypes",{team:p.a.object.isRequired,hook:p.a.object,hookId:p.a.string.isRequired,enableIncomingWebhooks:p.a.bool.isRequired,enablePostUsernameOverride:p.a.bool.isRequired,enablePostIconOverride:p.a.bool.isRequired,actions:p.a.shape({updateIncomingHook:p.a.func.isRequired,getIncomingHook:p.a.func.isRequired}).isRequired});var It=Object(s.connect)((function(e,t){const a=Object(i.getConfig)(e),s="true"===a.EnableIncomingWebhooks,n="true"===a.EnablePostUsernameOverride,o="true"===a.EnablePostIconOverride,r=new URLSearchParams(t.location.search).get("id");return{hookId:r,hook:e.entities.integrations.incomingHooks[r],enableIncomingWebhooks:s,enablePostUsernameOverride:n,enablePostIconOverride:o}}),(function(e){return{actions:Object(h.bindActionCreators)({updateIncomingHook:$e.updateIncomingHook,getIncomingHook:$e.getIncomingHook},e)}}))(xt);function Ut(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function qt(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 Dt extends d.a.PureComponent{constructor(...e){super(...e),Ut(this,"handleRegenToken",e=>{e.preventDefault(),this.props.onRegenToken(this.props.outgoingWebhook)}),Ut(this,"handleDelete",()=>{this.props.onDelete(this.props.outgoingWebhook)})}makeDisplayName(e,t){return e.display_name?e.display_name:t?t.display_name:d.a.createElement(E.a,{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&&!qt(e,t,a))return null;const s=this.makeDisplayName(e,t);let n=null;e.description&&(n=d.a.createElement("div",{className:"item-details__row"},d.a.createElement("span",{className:"item-details__description"},e.description)));let o=null;e.trigger_words&&e.trigger_words.length>0&&(o=d.a.createElement("div",{className:"item-details__row"},d.a.createElement("span",{className:"item-details__trigger-words"},d.a.createElement(E.a,{id:"installed_integrations.triggerWords",defaultMessage:"Trigger Words: {triggerWords}",values:{triggerWords:e.trigger_words.join(", ")}}))));const r=d.a.createElement("div",{className:"item-details__row"},d.a.createElement("span",{className:"item-details__url word-break--all"},d.a.createElement(E.a,{id:"installed_integrations.callback_urls",defaultMessage:"Callback URLs: {urls}",values:{urls:e.callback_urls.join(", ")}})));let i;0===e.trigger_when?i=d.a.createElement(E.a,{id:"add_outgoing_webhook.triggerWordsTriggerWhenFullWord",defaultMessage:"First word matches a trigger word exactly"}):1===e.trigger_when&&(i=d.a.createElement(E.a,{id:"add_outgoing_webhook.triggerWordsTriggerWhenStartsWith",defaultMessage:"First word starts with a trigger word"}));let l=null;return this.props.canChange&&(l=d.a.createElement("div",{className:"item-actions"},d.a.createElement("button",{className:"style--none color--link",onClick:this.handleRegenToken},d.a.createElement(E.a,{id:"installed_integrations.regenToken",defaultMessage:"Regen Token"}))," - ",d.a.createElement(v.a,{to:"/".concat(this.props.team.name,"/integrations/outgoing_webhooks/edit?id=").concat(e.id)},d.a.createElement(E.a,{id:"installed_integrations.edit",defaultMessage:"Edit"}))," - ",d.a.createElement(ct,{messageId:Object(J.b)("installed_outgoing_webhooks.delete.confirm"),onDelete:this.handleDelete}))),d.a.createElement("div",{className:"backstage-list__item"},d.a.createElement("div",{className:"item-details"},d.a.createElement("div",{className:"item-details__row d-flex flex-column flex-md-row justify-content-between"},d.a.createElement("strong",{className:"item-details__name"},s),l),n,d.a.createElement("div",{className:"item-details__row"},d.a.createElement("span",{className:"item-details__content_type"},d.a.createElement(E.a,{id:"installed_integrations.content_type",defaultMessage:"Content-Type: {contentType}",values:{contentType:e.content_type||"application/x-www-form-urlencoded"}}))),o,d.a.createElement("div",{className:"item-details__row"},d.a.createElement("span",{className:"item-details__trigger-when"},d.a.createElement(E.a,{id:"installed_integrations.triggerWhen",defaultMessage:"Trigger When: {triggerWhen}",values:{triggerWhen:i}}))),d.a.createElement("div",{className:"item-details__row"},d.a.createElement("span",{className:"item-details__token"},d.a.createElement(E.a,{id:"installed_integrations.token",defaultMessage:"Token: {token}",values:{token:e.token}}),d.a.createElement(lt,{value:e.token}))),d.a.createElement("div",{className:"item-details__row"},d.a.createElement("span",{className:"item-details__creation"},d.a.createElement(E.a,{id:"installed_integrations.creation",defaultMessage:"Created by {creator} on {createAt, date, full}",values:{creator:this.props.creator.username,createAt:e.create_at}}))),r))}}function Lt(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}Ut(Dt,"propTypes",{outgoingWebhook:p.a.object.isRequired,onRegenToken:p.a.func.isRequired,onDelete:p.a.func.isRequired,filter:p.a.string,creator:p.a.object.isRequired,canChange:p.a.bool.isRequired,team:p.a.object.isRequired,channel:p.a.object});class Wt extends d.a.PureComponent{constructor(e){super(e),Lt(this,"regenOutgoingWebhookToken",e=>{this.props.actions.regenOutgoingHookToken(e.id)}),Lt(this,"removeOutgoingHook",e=>{this.props.actions.removeOutgoingHook(e.id)}),Lt(this,"outgoingWebhookCompare",(e,t)=>{let a=e.display_name;if(!a){const t=this.props.channels[e.channel_id];a=t?t.display_name:k.gb("installed_outgoing_webhooks.unknown_channel","A Private Webhook")}let s=t.display_name;if(!s){const e=this.props.channels[t.channel_id];s=e?e.display_name:k.gb("installed_outgoing_webhooks.unknown_channel","A Private Webhook")}return a.localeCompare(s)}),Lt(this,"outgoingWebhooks",e=>this.props.outgoingWebhooks.sort(this.outgoingWebhookCompare).filter(t=>qt(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 d.a.createElement(Dt,{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,M.Q.Integrations.START_PAGE_NUM,M.Q.Integrations.PAGE_SIZE).then(()=>this.setState({loading:!1}))}render(){return d.a.createElement(C,{header:d.a.createElement(E.a,{id:"installed_outgoing_webhooks.header",defaultMessage:"Installed Outgoing Webhooks"}),addText:d.a.createElement(E.a,{id:"installed_outgoing_webhooks.add",defaultMessage:"Add Outgoing Webhook"}),addLink:"/"+this.props.team.name+"/integrations/outgoing_webhooks/add",addButtonId:"addOutgoingWebhook",emptyText:d.a.createElement(E.a,{id:"installed_outgoing_webhooks.empty",defaultMessage:"No outgoing webhooks found"}),emptyTextSearch:d.a.createElement(j.b,{id:"installed_outgoing_webhooks.emptySearch",defaultMessage:"No outgoing webhooks match {searchTerm}"}),helpText:d.a.createElement(E.a,{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:d.a.createElement("a",{target:"_blank",rel:"noopener noreferrer",href:"http://docs.mattermost.com/developer/webhooks-outgoing.html"},d.a.createElement(E.a,{id:"installed_outgoing_webhooks.help.buildYourOwn",defaultMessage:"Build your own"})),appDirectory:d.a.createElement("a",{target:"_blank",rel:"noopener noreferrer",href:"https://about.mattermost.com/default-app-directory/"},d.a.createElement(E.a,{id:"installed_outgoing_webhooks.help.appDirectory",defaultMessage:"App Directory"}))}}),searchPlaceholder:k.gb("installed_outgoing_webhooks.search","Search Outgoing Webhooks"),loading:this.state.loading},e=>{const t=this.outgoingWebhooks(e);return[t,t.length>0]})}}Lt(Wt,"propTypes",{team:p.a.object,user:p.a.object,canManageOthersWebhooks:p.a.bool,outgoingWebhooks:p.a.array,channels:p.a.object,users:p.a.object,teamId:p.a.string,actions:p.a.shape({removeOutgoingHook:p.a.func,loadOutgoingHooksAndProfilesForTeam:p.a.func,regenOutgoingHookToken:p.a.func}),enableOutgoingWebhooks:p.a.bool});var Ht=Object(s.connect)((function(e){const t=Object(i.getConfig)(e),a=Object(r.getCurrentTeamId)(e),s=Object(l.haveITeamPermission)(e,{team:a,permission:c.Permissions.MANAGE_OTHERS_OUTGOING_WEBHOOKS}),n=Object(tt.getOutgoingHooks)(e),m=Object.keys(n).map(e=>n[e]).filter(e=>e.team_id===a),d="true"===t.EnableOutgoingWebhooks;return{outgoingWebhooks:m,channels:Object(et.getAllChannels)(e),users:Object(o.getUsers)(e),teamId:a,canManageOthersWebhooks:s,enableOutgoingWebhooks:d}}),(function(e){return{actions:Object(h.bindActionCreators)({loadOutgoingHooksAndProfilesForTeam:nt,removeOutgoingHook:$e.removeOutgoingHook,regenOutgoingHookToken:$e.regenOutgoingHookToken},e)}}))(Wt);a(98);function Bt(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class Ft extends d.a.Component{constructor(e){super(e),Bt(this,"getStateFromHook",e=>{let t="";if(e.trigger_words){let a=0;for(a=0;a<e.trigger_words.length;a++)t+=e.trigger_words[a]+"\n"}let a="";if(e.callback_urls){let t=0;for(t=0;t<e.callback_urls.length;t++)a+=e.callback_urls[t]+"\n"}return{displayName:e.display_name||"",description:e.description||"",contentType:e.content_type||"application/x-www-form-urlencoded",channelId:e.channel_id||"",triggerWords:t,triggerWhen:e.trigger_when||0,callbackUrls:a,saving:!1,clientError:null,username:e.username||"",iconURL:e.icon_url||""}}),Bt(this,"handleSubmit",e=>{if(e.preventDefault(),this.state.saving)return;this.setState({saving:!0,clientError:""});const t=[];if(this.state.triggerWords)for(let e of this.state.triggerWords.split("\n"))(e=e.trim()).length>0&&t.push(e);if(!this.state.channelId&&0===t.length)return void this.setState({saving:!1,clientError:d.a.createElement(E.a,{id:"add_outgoing_webhook.triggerWordsOrChannelRequired",defaultMessage:"A valid channel or a list of trigger words is required"})});const a=[];for(let e of this.state.callbackUrls.split("\n"))(e=e.trim()).length>0&&a.push(e);if(0===a.length)return void this.setState({saving:!1,clientError:d.a.createElement(E.a,{id:"add_outgoing_webhook.callbackUrlsRequired",defaultMessage:"One or more callback URLs are required"})});const s={team_id:this.props.team.id,channel_id:this.state.channelId,trigger_words:t,trigger_when:parseInt(this.state.triggerWhen,10),callback_urls:a,display_name:this.state.displayName,content_type:this.state.contentType,description:this.state.description,username:this.state.username,icon_url:this.state.iconURL};this.props.action(s).then(()=>this.setState({saving:!1}))}),Bt(this,"updateDisplayName",e=>{this.setState({displayName:e.target.value})}),Bt(this,"updateDescription",e=>{this.setState({description:e.target.value})}),Bt(this,"updateContentType",e=>{this.setState({contentType:e.target.value})}),Bt(this,"updateChannelId",e=>{this.setState({channelId:e.target.value})}),Bt(this,"updateTriggerWords",e=>{this.setState({triggerWords:e.target.value})}),Bt(this,"updateTriggerWhen",e=>{this.setState({triggerWhen:e.target.value})}),Bt(this,"updateCallbackUrls",e=>{this.setState({callbackUrls:e.target.value})}),Bt(this,"updateUsername",e=>{this.setState({username:e.target.value})}),Bt(this,"updateIconURL",e=>{this.setState({iconURL:e.target.value})}),this.state=this.getStateFromHook(this.props.initialHook||{})}render(){var e=this.props.header,t=this.props.footer,a=this.props.renderExtra;return d.a.createElement("div",{className:"backstage-content"},d.a.createElement(V,null,d.a.createElement(v.a,{to:"/".concat(this.props.team.name,"/integrations/outgoing_webhooks")},d.a.createElement(E.a,{id:"installed_outgoing_webhooks.header",defaultMessage:"Outgoing Webhooks"})),d.a.createElement(E.a,{id:e.id,defaultMessage:e.defaultMessage})),d.a.createElement("div",{className:"backstage-form"},d.a.createElement("form",{className:"form-horizontal",onSubmit:this.handleSubmit},d.a.createElement("div",{className:"form-group"},d.a.createElement("label",{className:"control-label col-sm-4",htmlFor:"displayName"},d.a.createElement(E.a,{id:"add_outgoing_webhook.displayName",defaultMessage:"Title"})),d.a.createElement("div",{className:"col-md-5 col-sm-8"},d.a.createElement("input",{id:"displayName",type:"text",maxLength:"64",className:"form-control",value:this.state.displayName,onChange:this.updateDisplayName}),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"add_outgoing_webhook.displayName.help",defaultMessage:"Choose a title to be displayed on the webhook settings page. Maximum 64 characters."})))),d.a.createElement("div",{className:"form-group"},d.a.createElement("label",{className:"control-label col-sm-4",htmlFor:"description"},d.a.createElement(E.a,{id:"add_outgoing_webhook.description",defaultMessage:"Description"})),d.a.createElement("div",{className:"col-md-5 col-sm-8"},d.a.createElement("input",{id:"description",type:"text",maxLength:"500",className:"form-control",value:this.state.description,onChange:this.updateDescription}),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"add_outgoing_webhook.description.help",defaultMessage:"Description for your incoming webhook."})))),d.a.createElement("div",{className:"form-group"},d.a.createElement("label",{className:"control-label col-sm-4",htmlFor:"contentType"},d.a.createElement(E.a,{id:"add_outgoing_webhook.content_Type",defaultMessage:"Content Type"})),d.a.createElement("div",{className:"col-md-5 col-sm-8"},d.a.createElement("select",{className:"form-control",value:this.state.contentType,onChange:this.updateContentType},d.a.createElement("option",{value:"application/x-www-form-urlencoded"},"application/x-www-form-urlencoded"),d.a.createElement("option",{value:"application/json"},"application/json")),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"add_outgoing_webhook.contentType.help1",defaultMessage:"Choose the content type by which the request will be sent."})),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"add_outgoing_webhook.contentType.help2",defaultMessage:"If application/x-www-form-urlencoded is chosen, the server will encode the parameters in a URL format in the request body."})),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"add_outgoing_webhook.contentType.help3",defaultMessage:"If application/json is chosen, the server will format the request body as JSON."})))),d.a.createElement("div",{className:"form-group"},d.a.createElement("label",{className:"control-label col-sm-4",htmlFor:"channelId"},d.a.createElement(E.a,{id:"add_outgoing_webhook.channel",defaultMessage:"Channel"})),d.a.createElement("div",{className:"col-md-5 col-sm-8"},d.a.createElement(vt,{id:"channelId",value:this.state.channelId,onChange:this.updateChannelId,selectOpen:!0}),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"add_outgoing_webhook.channel.help",defaultMessage:"Public channel that delivers payload to webhook. Optional if at least one Trigger Word is specified."})))),d.a.createElement("div",{className:"form-group"},d.a.createElement("label",{className:"control-label col-sm-4",htmlFor:"triggerWords"},d.a.createElement(E.a,{id:"add_outgoing_webhook.triggerWords",defaultMessage:"Trigger Words (One Per Line)"})),d.a.createElement("div",{className:"col-md-5 col-sm-8"},d.a.createElement("textarea",{id:"triggerWords",rows:"3",maxLength:"1000",className:"form-control",value:this.state.triggerWords,onChange:this.updateTriggerWords}),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"add_outgoing_webhook.triggerWords.help",defaultMessage:"Messages that start with one of the specified words will trigger the outgoing webhook. Optional if Channel is selected."})))),d.a.createElement("div",{className:"form-group"},d.a.createElement("label",{className:"control-label col-sm-4",htmlFor:"triggerWords"},d.a.createElement(E.a,{id:"add_outgoing_webhook.triggerWordsTriggerWhen",defaultMessage:"Trigger When"})),d.a.createElement("div",{className:"col-md-5 col-sm-8"},d.a.createElement("select",{className:"form-control",value:this.state.triggerWhen,onChange:this.updateTriggerWhen},d.a.createElement("option",{value:"0"},Object(k.gb)("add_outgoing_webhook.triggerWordsTriggerWhenFullWord","First word matches a trigger word exactly")),d.a.createElement("option",{value:"1"},Object(k.gb)("add_outgoing_webhook.triggerWordsTriggerWhenStartsWith","First word starts with a trigger word"))),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"add_outgoing_webhook.triggerWordsTriggerWhen.help",defaultMessage:"Choose when to trigger the outgoing webhook; if the first word of a message matches a Trigger Word exactly, or if it starts with a Trigger Word."})))),d.a.createElement("div",{className:"form-group"},d.a.createElement("label",{className:"control-label col-sm-4",htmlFor:"callbackUrls"},d.a.createElement(E.a,{id:"add_outgoing_webhook.callbackUrls",defaultMessage:"Callback URLs (One Per Line)"})),d.a.createElement("div",{className:"col-md-5 col-sm-8"},d.a.createElement("textarea",{id:"callbackUrls",rows:"3",maxLength:"1000",className:"form-control",value:this.state.callbackUrls,onChange:this.updateCallbackUrls}),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"add_outgoing_webhook.callbackUrls.help",defaultMessage:"The URL that messages will be sent to. If the URL is private, add it as a {link}.",values:{link:d.a.createElement("a",{href:"https://about.mattermost.com/default-allow-internal-connections-settings-documentation/",target:"_blank",rel:"noopener noreferrer"},d.a.createElement(E.a,{id:"add_outgoing_webhook.callbackUrls.helpLinkText",defaultMessage:"trusted internal connection"}))}})))),this.props.enablePostUsernameOverride&&d.a.createElement("div",{className:"form-group"},d.a.createElement("label",{className:"control-label col-sm-4",htmlFor:"username"},d.a.createElement(E.a,{id:"add_outgoing_webhook.username",defaultMessage:"Username"})),d.a.createElement("div",{className:"col-md-5 col-sm-8"},d.a.createElement("input",{id:"username",type:"text",maxLength:"22",className:"form-control",value:this.state.username,onChange:this.updateUsername}),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"add_outgoing_webhook.username.help",defaultMessage:'Choose the username this integration will post as. Usernames can be up to 22 characters, and may contain lowercase letters, numbers and the symbols "-", "_", and ".".'})))),this.props.enablePostIconOverride&&d.a.createElement("div",{className:"form-group"},d.a.createElement("label",{className:"control-label col-sm-4",htmlFor:"iconURL"},d.a.createElement(E.a,{id:"add_outgoing_webhook.icon_url",defaultMessage:"Profile Picture"})),d.a.createElement("div",{className:"col-md-5 col-sm-8"},d.a.createElement("input",{id:"iconURL",type:"text",maxLength:"1024",className:"form-control",value:this.state.iconURL,onChange:this.updateIconURL}),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"add_outgoing_webhook.icon_url.help",defaultMessage:"Choose the profile picture this integration will use when posting. Enter the URL of a .png or .jpg file at least 128 pixels by 128 pixels."})))),d.a.createElement("div",{className:"backstage-form__footer"},d.a.createElement($.a,{type:"backstage",errors:[this.props.serverError,this.state.clientError]}),d.a.createElement(v.a,{className:"btn btn-link btn-sm",to:"/".concat(this.props.team.name,"/integrations/outgoing_webhooks")},d.a.createElement(E.a,{id:"add_outgoing_webhook.cancel",defaultMessage:"Cancel"})),d.a.createElement(Z.a,{className:"btn btn-primary",type:"submit",spinning:this.state.saving,spinningText:Object(k.gb)(this.props.loading.id,this.props.loading.defaultMessage),onClick:this.handleSubmit,id:"saveWebhook"},d.a.createElement(E.a,{id:t.id,defaultMessage:t.defaultMessage})),a))))}}function Gt(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}Bt(Ft,"propTypes",{team:p.a.object.isRequired,header:p.a.object.isRequired,footer:p.a.object.isRequired,loading:p.a.object.isRequired,renderExtra:p.a.node.isRequired,serverError:p.a.string.isRequired,initialHook:p.a.object,action:p.a.func.isRequired,enablePostUsernameOverride:p.a.bool.isRequired,enablePostIconOverride:p.a.bool.isRequired});const Yt={id:Object(J.b)("integrations.add"),defaultMessage:"Add"},zt={id:Object(J.b)("add_outgoing_webhook.save"),defaultMessage:"Save"},Kt={id:Object(J.b)("add_outgoing_webhook.saving"),defaultMessage:"Saving..."};class Qt extends d.a.PureComponent{constructor(e){super(e),Gt(this,"addOutgoingHook",async e=>{this.setState({serverError:""});const{data:t,error:a}=await this.props.actions.createOutgoingHook(e);t?K.a.push("/".concat(this.props.team.name,"/integrations/confirm?type=outgoing_webhooks&id=").concat(t.id)):a&&this.setState({serverError:a.message})}),this.state={serverError:""}}render(){return d.a.createElement(Ft,{team:this.props.team,header:Yt,footer:zt,loading:Kt,renderExtra:"",action:this.addOutgoingHook,serverError:this.state.serverError,enablePostUsernameOverride:this.props.enablePostUsernameOverride,enablePostIconOverride:this.props.enablePostIconOverride})}}Gt(Qt,"propTypes",{team:p.a.object.isRequired,actions:p.a.shape({createOutgoingHook:p.a.func.isRequired}).isRequired,enablePostUsernameOverride:p.a.bool.isRequired,enablePostIconOverride:p.a.bool.isRequired});var Jt=Object(s.connect)((function(e){const t=Object(i.getConfig)(e);return{enablePostUsernameOverride:"true"===t.EnablePostUsernameOverride,enablePostIconOverride:"true"===t.EnablePostIconOverride}}),(function(e){return{actions:Object(h.bindActionCreators)({createOutgoingHook:$e.createOutgoingHook},e)}}))(Qt);function Vt(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}const Xt={id:"integrations.edit",defaultMessage:"Edit"},Zt={id:"update_outgoing_webhook.update",defaultMessage:"Update"},$t={id:"update_outgoing_webhook.updating",defaultMessage:"Updating..."};class ea extends d.a.PureComponent{constructor(e){super(e),Vt(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()}),Vt(this,"handleConfirmModal",()=>{this.setState({showConfirmModal:!0})}),Vt(this,"confirmModalDismissed",()=>{this.setState({showConfirmModal:!1})}),Vt(this,"submitHook",async()=>{this.setState({serverError:""});const{data:e,error:t}=await this.props.actions.updateOutgoingHook(this.newHook);e?K.a.push("/".concat(this.props.team.name,"/integrations/outgoing_webhooks")):(this.setState({showConfirmModal:!1}),t&&this.setState({serverError:t.message}))}),Vt(this,"renderExtra",()=>{const e=d.a.createElement(E.a,{id:"update_outgoing_webhook.update",defaultMessage:"Update"}),t=d.a.createElement(E.a,{id:"update_outgoing_webhook.confirm",defaultMessage:"Edit Outgoing Webhook"}),a=d.a.createElement(E.a,{id:"update_outgoing_webhook.question",defaultMessage:"Your changes may break the existing outgoing webhook. Are you sure you would like to update it?"});return d.a.createElement(A.a,{title:t,message:a,confirmButtonText:e,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?d.a.createElement(Ft,{team:this.props.team,header:Xt,footer:Zt,loading:$t,renderExtra:this.renderExtra(),action:this.editOutgoingHook,serverError:this.state.serverError,initialHook:this.props.hook,enablePostUsernameOverride:this.props.enablePostUsernameOverride,enablePostIconOverride:this.props.enablePostIconOverride}):d.a.createElement(y.a,null)}}Vt(ea,"propTypes",{team:p.a.object.isRequired,hook:p.a.object,hookId:p.a.string.isRequired,actions:p.a.shape({updateOutgoingHook:p.a.func.isRequired,getOutgoingHook:p.a.func.isRequired}).isRequired,enableOutgoingWebhooks:p.a.bool,enablePostUsernameOverride:p.a.bool.isRequired,enablePostIconOverride:p.a.bool.isRequired});var ta=Object(s.connect)((function(e,t){const a=Object(i.getConfig)(e),s=new URLSearchParams(t.location.search).get("id"),n="true"===a.EnableOutgoingWebhooks,o="true"===a.EnablePostUsernameOverride,r="true"===a.EnablePostIconOverride;return{hookId:s,hook:e.entities.integrations.outgoingHooks[s],enableOutgoingWebhooks:n,enablePostUsernameOverride:o,enablePostIconOverride:r}}),(function(e){return{actions:Object(h.bindActionCreators)({updateOutgoingHook:$e.updateOutgoingHook,getOutgoingHook:$e.getOutgoingHook},e)}}))(ea);function aa(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}const sa="***************";function na(e,t){return!t||-1!==e.name.toLowerCase().indexOf(t)}class oa extends d.a.PureComponent{constructor(e){super(e),aa(this,"handleShowClientSecret",e=>{e&&e.preventDefault&&e.preventDefault(),this.setState({clientSecret:this.props.oauthApp.client_secret})}),aa(this,"handleHideClientSecret",e=>{e.preventDefault(),this.setState({clientSecret:sa})}),aa(this,"handleRegenerate",e=>{e.preventDefault(),this.props.onRegenerateSecret(this.props.oauthApp.id).then(({error:e})=>{e?this.setState({error:e.message}):(this.setState({error:null}),this.handleShowClientSecret())})}),aa(this,"handleDelete",()=>{this.props.onDelete(this.props.oauthApp)}),this.state={clientSecret:sa}}render(){const{oauthApp:e,creatorName:t}=this.props;let a,s,n;if(this.state.error&&(a=d.a.createElement($.a,{error:this.state.error})),!na(e,this.props.filter))return null;s=e.name?e.name:d.a.createElement(E.a,{id:"installed_integrations.unnamed_oauth_app",defaultMessage:"Unnamed OAuth 2.0 Application"}),e.description&&(n=d.a.createElement("div",{className:"item-details__row"},d.a.createElement("span",{className:"item-details__description"},e.description)));const o=d.a.createElement("div",{className:"item-details__row"},d.a.createElement("span",{className:"item-details__url word-break--all"},d.a.createElement(E.a,{id:"installed_integrations.callback_urls",defaultMessage:"Callback URLs: {urls}",values:{urls:e.callback_urls.join(", ")}})));let r,i,l;r=e.is_trusted?k.gb("installed_oauth_apps.trusted.yes","Yes"):k.gb("installed_oauth_apps.trusted.no","No"),this.state.clientSecret===sa?(i=d.a.createElement("button",{id:"showSecretButton",className:"style--none color--link",onClick:this.handleShowClientSecret},d.a.createElement(E.a,{id:"installed_integrations.showSecret",defaultMessage:"Show Secret"})),l=d.a.createElement("span",{className:"item-details__token"},d.a.createElement(E.a,{id:"installed_integrations.client_secret",defaultMessage:"Client Secret: **{clientSecret}**",values:{clientSecret:this.state.clientSecret}}))):(i=d.a.createElement("button",{id:"hideSecretButton",className:"style--none color--link",onClick:this.handleHideClientSecret},d.a.createElement(E.a,{id:"installed_integrations.hideSecret",defaultMessage:"Hide Secret"})),l=d.a.createElement("span",{className:"item-details__token"},d.a.createElement(j.b,{id:"installed_integrations.client_secret",defaultMessage:"Client Secret: **{clientSecret}**",values:{clientSecret:this.state.clientSecret}}),d.a.createElement(lt,{idMessage:"integrations.copy_client_secret",defaultMessage:"Copy Client Secret",value:this.state.clientSecret})));const c=d.a.createElement("button",{id:"regenerateSecretButton",className:"style--none color--link",onClick:this.handleRegenerate},d.a.createElement(E.a,{id:"installed_integrations.regenSecret",defaultMessage:"Regenerate Secret"}));let m;return e.icon_url&&(m=d.a.createElement("div",{className:"integration__icon integration-list__icon"},d.a.createElement("img",{alt:"get app screenshot",src:e.icon_url}))),d.a.createElement("div",{className:"backstage-list__item"},m,d.a.createElement("div",{className:"item-details"},d.a.createElement("div",{className:"item-details__row d-flex flex-column flex-md-row justify-content-between"},d.a.createElement("strong",{className:"item-details__name"},s),d.a.createElement("div",{className:"item-actions"},i," - ",c," - ",d.a.createElement(v.a,{to:"/".concat(this.props.team.name,"/integrations/oauth2-apps/edit?id=").concat(e.id)},d.a.createElement(E.a,{id:"installed_integrations.edit",defaultMessage:"Edit"}))," - ",d.a.createElement(ct,{messageId:Object(J.b)("installed_oauth_apps.delete.confirm"),onDelete:this.handleDelete}))),a,n,d.a.createElement("div",{className:"item-details__row"},d.a.createElement("span",{className:"item-details__url word-break--all"},d.a.createElement(j.b,{id:"installed_oauth_apps.is_trusted",defaultMessage:"Is Trusted: **{isTrusted}**",values:{isTrusted:r}}))),d.a.createElement("div",{className:"item-details__row"},d.a.createElement("span",{className:"item-details__token"},d.a.createElement(j.b,{id:"installed_integrations.client_id",defaultMessage:"Client ID: **{clientId}**",values:{clientId:e.id}}),d.a.createElement(lt,{idMessage:"integrations.copy_client_id",defaultMessage:"Copy Client Id",value:e.id}))),d.a.createElement("div",{className:"item-details__row"},l),o,d.a.createElement("div",{className:"item-details__row"},d.a.createElement("span",{className:"item-details__creation"},d.a.createElement(E.a,{id:"installed_integrations.creation",defaultMessage:"Created by {creator} on {createAt, date, full}",values:{creator:t,createAt:e.create_at}})))))}}aa(oa,"propTypes",{team:p.a.object,oauthApp:p.a.object.isRequired,creatorName:p.a.string.isRequired,onRegenerateSecret:p.a.func.isRequired,onDelete:p.a.func.isRequired,filter:p.a.string});var ra=Object(s.connect)((function(e,t){const a=t.oauthApp||{};return{creatorName:Object(k.v)(Object(o.getUser)(e,a.creator_id))}}))(oa);function ia(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class la extends d.a.PureComponent{constructor(e){super(e),ia(this,"deleteOAuthApp",e=>{e&&e.id&&this.props.actions.deleteOAuthApp(e.id)}),ia(this,"oauthApps",e=>Object.values(this.props.oauthApps).filter(t=>na(t,e)).sort(this.oauthAppCompare).map(e=>d.a.createElement(ra,{key:e.id,team:this.props.team,oauthApp:e,onRegenerateSecret:this.props.actions.regenOAuthAppSecret,onDelete:this.deleteOAuthApp}))),this.state={loading:!0}}componentDidMount(){this.props.enableOAuthServiceProvider&&this.props.actions.loadOAuthAppsAndProfiles().then(()=>this.setState({loading:!1}))}oauthAppCompare(e,t){let a=e.name;a||(a=Object(k.gb)("installed_integrations.unnamed_oauth_app","Unnamed OAuth 2.0 Application"));let s=t.name;return s||(s=Object(k.gb)("installed_integrations.unnamed_oauth_app","Unnamed OAuth 2.0 Application")),a.localeCompare(s)}render(){let e;return this.props.enableOAuthServiceProvider&&this.props.canManageOauth&&(e={addLink:"/"+this.props.team.name+"/integrations/oauth2-apps/add",addText:Object(k.gb)("installed_oauth_apps.add","Add OAuth 2.0 Application"),addButtonId:"addOauthApp"}),d.a.createElement(C,Object.assign({header:d.a.createElement(E.a,{id:"installed_oauth_apps.header",defaultMessage:"OAuth 2.0 Applications"}),helpText:d.a.createElement(E.a,{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:d.a.createElement("a",{target:"_blank",rel:"noopener noreferrer",href:"https://docs.mattermost.com/developer/oauth-2-0-applications.html"},d.a.createElement(E.a,{id:"installed_oauth_apps.help.oauthApplications",defaultMessage:"OAuth 2.0 applications"})),appDirectory:d.a.createElement("a",{target:"_blank",rel:"noopener noreferrer",href:"https://about.mattermost.com/default-app-directory/"},d.a.createElement(E.a,{id:"installed_oauth_apps.help.appDirectory",defaultMessage:"App Directory"}))}}),emptyText:d.a.createElement(E.a,{id:"installed_oauth_apps.empty",defaultMessage:"No OAuth 2.0 Applications found"}),emptyTextSearch:d.a.createElement(j.b,{id:"installed_oauth_apps.emptySearch",defaultMessage:"No OAuth 2.0 Applications match {searchTerm}"}),searchPlaceholder:Object(k.gb)("installed_oauth_apps.search","Search OAuth 2.0 Applications"),loading:this.state.loading},e),e=>{const t=this.oauthApps(e);return[t,t.length>0]})}}ia(la,"propTypes",{team:p.a.object,oauthApps:p.a.object,canManageOauth:p.a.bool,actions:p.a.shape({loadOAuthAppsAndProfiles:p.a.func.isRequired,regenOAuthAppSecret:p.a.func.isRequired,deleteOAuthApp:p.a.func.isRequired}).isRequired,enableOAuthServiceProvider:p.a.bool});var ca=Object(s.connect)((function(e){const t="true"===Object(i.getConfig)(e).EnableOAuthServiceProvider;return{canManageOauth:Object(l.haveISystemPermission)(e,{permission:c.Permissions.MANAGE_OAUTH}),oauthApps:Object(tt.getOAuthApps)(e),enableOAuthServiceProvider:t}}),(function(e){return{actions:Object(h.bindActionCreators)({loadOAuthAppsAndProfiles:rt,regenOAuthAppSecret:$e.regenOAuthAppSecret,deleteOAuthApp:$e.deleteOAuthApp},e)}}))(la);function ma(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class da extends d.a.PureComponent{constructor(e){super(e),ma(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})),ma(this,"imageLoaded",()=>{this.setState({has_icon:!0,icon_url:this.refs.icon_url.value})}),ma(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:d.a.createElement(E.a,{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:d.a.createElement(E.a,{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:d.a.createElement(E.a,{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()).length>0&&t.push(e);if(0===t.length)return void this.setState({saving:!1,clientError:d.a.createElement(E.a,{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}))}),ma(this,"updateName",e=>{this.setState({name:e.target.value})}),ma(this,"updateTrusted",e=>{this.setState({is_trusted:"true"===e.target.value})}),ma(this,"updateDescription",e=>{this.setState({description:e.target.value})}),ma(this,"updateHomepage",e=>{this.setState({homepage:e.target.value})}),ma(this,"updateIconUrl",e=>{this.setState({has_icon:!1,icon_url:e.target.value}),this.image.src=e.target.value}),ma(this,"updateCallbackUrls",e=>{this.setState({callbackUrls:e.target.value})}),this.image=new Image,this.image.onload=this.imageLoaded,this.state=this.getStateFromApp(this.props.initialApp||{})}render(){const e=this.props.header,t=this.props.footer,a=this.props.renderExtra;let s;this.state.has_icon&&(s=d.a.createElement("div",{className:"integration__icon"},d.a.createElement("img",{alt:"integration icon",src:this.state.icon_url})));const n=d.a.createElement(fe.a,{permissions:[c.Permissions.MANAGE_SYSTEM]},d.a.createElement("div",{className:"form-group"},d.a.createElement("label",{className:"control-label col-sm-4",htmlFor:"is_trusted"},d.a.createElement(E.a,{id:"installed_oauth_apps.trusted",defaultMessage:"Is Trusted"})),d.a.createElement("div",{className:"col-md-5 col-sm-8"},d.a.createElement("label",{className:"radio-inline"},d.a.createElement("input",{type:"radio",value:"true",name:"is_trusted",checked:this.state.is_trusted,onChange:this.updateTrusted}),d.a.createElement(E.a,{id:"installed_oauth_apps.trusted.yes",defaultMessage:"Yes"})),d.a.createElement("label",{className:"radio-inline"},d.a.createElement("input",{type:"radio",value:"false",name:"is_trusted",checked:!this.state.is_trusted,onChange:this.updateTrusted}),d.a.createElement(E.a,{id:"installed_oauth_apps.trusted.no",defaultMessage:"No"})),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"add_oauth_app.trusted.help",defaultMessage:"When true, the OAuth 2.0 application is considered trusted by the Mattermost server and doesn't require the user to accept authorization. When false, an additional window will appear, asking the user to accept or deny the authorization."})))));return d.a.createElement("div",{className:"backstage-content"},d.a.createElement(V,null,d.a.createElement(v.a,{to:"/".concat(this.props.team.name,"/integrations/oauth2-apps")},d.a.createElement(E.a,{id:"installed_oauth_apps.header",defaultMessage:"Installed OAuth2 Apps"})),d.a.createElement(E.a,{id:e.id,defaultMessage:e.defaultMessage})),d.a.createElement("div",{className:"backstage-form"},s,d.a.createElement("form",{className:"form-horizontal"},n,d.a.createElement("div",{className:"form-group"},d.a.createElement("label",{className:"control-label col-sm-4",htmlFor:"name"},d.a.createElement(E.a,{id:"installed_oauth_apps.name",defaultMessage:"Display Name"})),d.a.createElement("div",{className:"col-md-5 col-sm-8"},d.a.createElement("input",{id:"name",type:"text",maxLength:"64",className:"form-control",value:this.state.name,onChange:this.updateName}),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"add_oauth_app.name.help",defaultMessage:"Display name for your OAuth 2.0 application made of up to 64 characters."})))),d.a.createElement("div",{className:"form-group"},d.a.createElement("label",{className:"control-label col-sm-4",htmlFor:"description"},d.a.createElement(E.a,{id:"installed_oauth_apps.description",defaultMessage:"Description"})),d.a.createElement("div",{className:"col-md-5 col-sm-8"},d.a.createElement("input",{id:"description",type:"text",maxLength:"512",className:"form-control",value:this.state.description,onChange:this.updateDescription}),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"add_oauth_app.description.help",defaultMessage:"Description for your OAuth 2.0 application."})))),d.a.createElement("div",{className:"form-group"},d.a.createElement("label",{className:"control-label col-sm-4",htmlFor:"homepage"},d.a.createElement(E.a,{id:"installed_oauth_apps.homepage",defaultMessage:"Homepage"})),d.a.createElement("div",{className:"col-md-5 col-sm-8"},d.a.createElement("input",{id:"homepage",type:"url",maxLength:"256",className:"form-control",value:this.state.homepage,onChange:this.updateHomepage}),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"add_oauth_app.homepage.help",defaultMessage:"The URL for the homepage of the OAuth 2.0 application. Make sure you use HTTP or HTTPS in your URL depending on your server configuration."})))),d.a.createElement("div",{className:"form-group"},d.a.createElement("label",{className:"control-label col-sm-4",htmlFor:"icon_url"},d.a.createElement(E.a,{id:"installed_oauth_apps.iconUrl",defaultMessage:"Icon URL"})),d.a.createElement("div",{className:"col-md-5 col-sm-8"},d.a.createElement("input",{id:"icon_url",ref:"icon_url",type:"url",maxLength:"512",className:"form-control",value:this.state.icon_url,onChange:this.updateIconUrl}),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"add_oauth_app.icon.help",defaultMessage:"The URL for the homepage of the OAuth 2.0 application. Make sure you use HTTP or HTTPS in your URL depending on your server configuration."})))),d.a.createElement("div",{className:"form-group"},d.a.createElement("label",{className:"control-label col-sm-4",htmlFor:"callbackUrls"},d.a.createElement(E.a,{id:"installed_oauth_apps.callbackUrls",defaultMessage:"Callback URLs (One Per Line)"})),d.a.createElement("div",{className:"col-md-5 col-sm-8"},d.a.createElement("textarea",{id:"callbackUrls",rows:"3",maxLength:"1024",className:"form-control",value:this.state.callbackUrls,onChange:this.updateCallbackUrls}),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{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://."})))),d.a.createElement("div",{className:"backstage-form__footer"},d.a.createElement($.a,{type:"backstage",errors:[this.props.serverError,this.state.clientError]}),d.a.createElement(v.a,{className:"btn btn-link btn-sm",to:"/".concat(this.props.team.name,"/integrations/oauth2-apps")},d.a.createElement(E.a,{id:"installed_oauth_apps.cancel",defaultMessage:"Cancel"})),d.a.createElement(Z.a,{className:"btn btn-primary",type:"submit",spinning:this.state.saving,spinningText:Object(k.gb)(this.props.loading.id,this.props.loading.defaultMessage),onClick:this.handleSubmit,id:"saveOauthApp"},d.a.createElement(E.a,{id:t.id,defaultMessage:t.defaultMessage})),a))))}}function ua(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}ma(da,"propTypes",{team:p.a.object.isRequired,header:p.a.object.isRequired,footer:p.a.object.isRequired,loading:p.a.object.isRequired,renderExtra:p.a.node.isRequired,serverError:p.a.string.isRequired,initialApp:p.a.object,action:p.a.func.isRequired});const pa={id:Object(J.b)("add_oauth_app.header"),defaultMessage:"Add"},ha={id:Object(J.b)("installed_oauth_apps.save"),defaultMessage:"Save"},ga={id:Object(J.b)("installed_oauth_apps.saving"),defaultMessage:"Saving..."};class ba extends d.a.PureComponent{constructor(e){super(e),ua(this,"addOAuthApp",async e=>{this.setState({serverError:""});const{data:t,error:a}=await this.props.actions.addOAuthApp(e);t?K.a.push("/".concat(this.props.team.name,"/integrations/confirm?type=oauth2-apps&id=").concat(t.id)):a&&this.setState({serverError:a.message})}),this.state={serverError:""}}render(){return d.a.createElement(da,{team:this.props.team,header:pa,footer:ha,loading:ga,renderExtra:"",action:this.addOAuthApp,serverError:this.state.serverError})}}ua(ba,"propTypes",{team:p.a.object,addOAuthAppRequest:p.a.object.isRequired,actions:p.a.shape({addOAuthApp:p.a.func.isRequired}).isRequired});var fa=Object(s.connect)(null,(function(e){return{actions:Object(h.bindActionCreators)({addOAuthApp:$e.addOAuthApp},e)}}))(ba);function Ea(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}const _a={id:"integrations.edit",defaultMessage:"Edit"},ka={id:"update_incoming_webhook.update",defaultMessage:"Update"},va={id:"update_incoming_webhook.updating",defaultMessage:"Updating..."};class ya extends d.a.PureComponent{constructor(e){super(e),Ea(this,"editOAuthApp",async e=>{this.newApp=e,this.props.oauthApp.id&&(e.id=this.props.oauthApp.id),this.props.oauthApp.token&&(e.token=this.props.oauthApp.token),!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()}),Ea(this,"handleConfirmModal",()=>{this.setState({showConfirmModal:!0})}),Ea(this,"confirmModalDismissed",()=>{this.setState({showConfirmModal:!1})}),Ea(this,"submitOAuthApp",async()=>{this.setState({serverError:""});const{data:e,error:t}=await this.props.actions.editOAuthApp(this.newApp);e?K.a.push("/".concat(this.props.team.name,"/integrations/oauth2-apps")):(this.setState({showConfirmModal:!1}),t&&this.setState({serverError:t.message}))}),Ea(this,"renderExtra",()=>{const e=d.a.createElement(E.a,{id:"update_command.update",defaultMessage:"Update"}),t=d.a.createElement(E.a,{id:"update_oauth_app.confirm",defaultMessage:"Edit OAuth 2.0 application"}),a=d.a.createElement(E.a,{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 d.a.createElement(A.a,{title:t,message:a,confirmButtonText:e,show:this.state.showConfirmModal,onConfirm:this.submitOAuthApp,onCancel:this.confirmModalDismissed})}),this.state={showConfirmModal:!1,serverError:""}}componentDidMount(){this.props.enableOAuthServiceProvider&&this.props.actions.getOAuthApp(this.props.oauthAppId)}render(){return this.props.oauthApp?d.a.createElement(da,{team:this.props.team,header:_a,footer:ka,loading:va,renderExtra:this.renderExtra(),action:this.editOAuthApp,serverError:this.state.serverError,initialApp:this.props.oauthApp}):d.a.createElement(y.a,null)}}Ea(ya,"propTypes",{team:p.a.object.isRequired,oauthAppId:p.a.string.isRequired,oauthApp:p.a.object,actions:p.a.shape({getOAuthApp:p.a.func.isRequired,editOAuthApp:p.a.func.isRequired}).isRequired,enableOAuthServiceProvider:p.a.bool});var Na=Object(s.connect)((function(e,t){const a=Object(i.getConfig)(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:Object(h.bindActionCreators)({getOAuthApp:$e.getOAuthApp,editOAuthApp:$e.editOAuthApp},e)}}))(ya);function Oa(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function Ca(e,t){return!t||(-1!==e.display_name.toLowerCase().indexOf(t)||-1!==e.description.toLowerCase().indexOf(t)||-1!==e.trigger.toLowerCase().indexOf(t))}class wa extends d.a.PureComponent{constructor(...e){super(...e),Oa(this,"handleRegenToken",e=>{e.preventDefault(),this.props.onRegenToken(this.props.command)}),Oa(this,"handleDelete",()=>{this.props.onDelete(this.props.command)})}render(){const e=this.props.command;if(!Ca(e,this.props.filter?this.props.filter.toLowerCase():""))return null;let t;t=e.display_name?e.display_name:d.a.createElement(E.a,{id:"installed_commands.unnamed_command",defaultMessage:"Unnamed Slash Command"});let a=null;e.description&&(a=d.a.createElement("div",{className:"item-details__row"},d.a.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 n=null;this.props.canChange&&(n=d.a.createElement("div",{className:"item-actions"},d.a.createElement("button",{className:"style--none color--link",onClick:this.handleRegenToken},d.a.createElement(E.a,{id:"installed_integrations.regenToken",defaultMessage:"Regenerate Token"}))," - ",d.a.createElement(v.a,{to:"/".concat(this.props.team.name,"/integrations/commands/edit?id=").concat(e.id)},d.a.createElement(E.a,{id:"installed_integrations.edit",defaultMessage:"Edit"}))," - ",d.a.createElement(ct,{messageId:Object(J.b)("installed_commands.delete.confirm"),onDelete:this.handleDelete})));const o=e.token;return d.a.createElement("div",{className:"backstage-list__item"},d.a.createElement("div",{className:"item-details"},d.a.createElement("div",{className:"item-details__row d-flex flex-column flex-md-row justify-content-between"},d.a.createElement("div",null,d.a.createElement("strong",{className:"item-details__name"},t),d.a.createElement("span",{className:"item-details__trigger"},s)),n),a,d.a.createElement("div",{className:"item-details__row"},d.a.createElement("span",{className:"item-details__token"},d.a.createElement(E.a,{id:"installed_integrations.token",defaultMessage:"Token: {token}",values:{token:o}}),d.a.createElement(lt,{value:o}))),d.a.createElement("div",{className:"item-details__row"},d.a.createElement("span",{className:"item-details__creation"},d.a.createElement(E.a,{id:"installed_integrations.creation",defaultMessage:"Created by {creator} on {createAt, date, full}",values:{creator:this.props.creator.username,createAt:e.create_at}})))))}}function Ma(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}Oa(wa,"propTypes",{team:p.a.object.isRequired,command:p.a.object.isRequired,onRegenToken:p.a.func.isRequired,onDelete:p.a.func.isRequired,filter:p.a.string,creator:p.a.object.isRequired,canChange:p.a.bool.isRequired});class ja extends d.a.PureComponent{constructor(...e){super(...e),Ma(this,"regenCommandToken",e=>{this.props.actions.regenCommandToken(e.id)}),Ma(this,"deleteCommand",e=>{this.props.actions.deleteCommand(e.id)})}commandCompare(e,t){let a=e.display_name;a||(a=k.gb("installed_commands.unnamed_command","Unnamed Slash Command"));let s=t.display_name;return s||(s=k.gb("installed_commands.unnamed_command","Unnamed Slash Command")),a.localeCompare(s)}render(){const e=e=>this.props.commands.filter(e=>e.team_id===this.props.team.id).filter(t=>Ca(t,e)).sort(this.commandCompare).map(e=>{const t=this.props.canManageOthersSlashCommands||this.props.user.id===e.creator_id;return d.a.createElement(wa,{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 d.a.createElement(C,{header:d.a.createElement(E.a,{id:"installed_commands.header",defaultMessage:"Installed Slash Commands"}),addText:d.a.createElement(E.a,{id:"installed_commands.add",defaultMessage:"Add Slash Command"}),addLink:"/"+this.props.team.name+"/integrations/commands/add",addButtonId:"addSlashCommand",emptyText:d.a.createElement(E.a,{id:"installed_commands.empty",defaultMessage:"No slash commands found"}),emptyTextSearch:d.a.createElement(j.b,{id:"installed_commands.emptySearch",defaultMessage:"No slash commands match {searchTerm}"}),helpText:d.a.createElement(E.a,{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:d.a.createElement("a",{target:"_blank",rel:"noopener noreferrer",href:"http://docs.mattermost.com/developer/slash-commands.html"},d.a.createElement(E.a,{id:"installed_commands.help.buildYourOwn",defaultMessage:"Build Your Own"})),appDirectory:d.a.createElement("a",{target:"_blank",rel:"noopener noreferrer",href:"https://about.mattermost.com/default-app-directory/"},d.a.createElement(E.a,{id:"installed_commands.help.appDirectory",defaultMessage:"App Directory"}))}}),searchPlaceholder:k.gb("installed_commands.search","Search Slash Commands"),loading:this.props.loading},t=>{const a=e(t);return[a,a.length>0]})}}Ma(ja,"propTypes",{team:p.a.object,user:p.a.object,users:p.a.object,commands:p.a.array,loading:p.a.bool,canManageOthersSlashCommands:p.a.bool,actions:p.a.shape({regenCommandToken:p.a.func.isRequired,deleteCommand:p.a.func.isRequired}).isRequired});var Aa=Object(s.connect)((function(e,t){return{canManageOthersSlashCommands:Object(l.haveITeamPermission)(e,{team:t.team.id,permission:c.Permissions.MANAGE_OTHERS_SLASH_COMMANDS})}}),(function(e){return{actions:Object(h.bindActionCreators)({regenCommandToken:$e.regenCommandToken,deleteCommand:$e.deleteCommand},e)}}))(ja);function Ta(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}const Sa="P",Ra="G";class Pa extends d.a.PureComponent{constructor(e){super(e),Ta(this,"getStateFromCommand",e=>({displayName:e.display_name||"",description:e.description||"",trigger:e.trigger||"",url:e.url||"",method:e.method||Sa,username:e.username||"",iconUrl:e.icon_url||"",autocomplete:e.auto_complete||!1,autocompleteHint:e.auto_complete_hint||"",autocompleteDescription:e.auto_complete_desc||"",saving:!1,clientError:null})),Ta(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};a.auto_complete&&(a.auto_complete_desc=this.state.autocompleteDescription,a.auto_complete_hint=this.state.autocompleteHint),a.trigger?0!==a.trigger.indexOf("/")?-1===a.trigger.indexOf(" ")?a.trigger.length<M.Q.MIN_TRIGGER_LENGTH||a.trigger.length>M.Q.MAX_TRIGGER_LENGTH?this.setState({saving:!1,clientError:d.a.createElement(E.a,{id:"add_command.triggerInvalidLength",defaultMessage:"A trigger word must contain between {min} and {max} characters",values:{min:M.Q.MIN_TRIGGER_LENGTH,max:M.Q.MAX_TRIGGER_LENGTH}})}):a.url?this.props.action(a).then(()=>this.setState({saving:!1})):this.setState({saving:!1,clientError:d.a.createElement(E.a,{id:"add_command.urlRequired",defaultMessage:"A request URL is required"})}):this.setState({saving:!1,clientError:d.a.createElement(E.a,{id:"add_command.triggerInvalidSpace",defaultMessage:"A trigger word must not contain spaces"})}):this.setState({saving:!1,clientError:d.a.createElement(E.a,{id:"add_command.triggerInvalidSlash",defaultMessage:"A trigger word cannot begin with a /"})}):this.setState({saving:!1,clientError:d.a.createElement(E.a,{id:"add_command.triggerRequired",defaultMessage:"A trigger word is required"})})}),Ta(this,"updateDisplayName",e=>{this.setState({displayName:e.target.value})}),Ta(this,"updateDescription",e=>{this.setState({description:e.target.value})}),Ta(this,"updateTrigger",e=>{this.setState({trigger:e.target.value})}),Ta(this,"updateUrl",e=>{this.setState({url:e.target.value})}),Ta(this,"updateMethod",e=>{this.setState({method:e.target.value})}),Ta(this,"updateUsername",e=>{this.setState({username:e.target.value})}),Ta(this,"updateIconUrl",e=>{this.setState({iconUrl:e.target.value})}),Ta(this,"updateAutocomplete",e=>{this.setState({autocomplete:e.target.checked})}),Ta(this,"updateAutocompleteHint",e=>{this.setState({autocompleteHint:e.target.value})}),Ta(this,"updateAutocompleteDescription",e=>{this.setState({autocompleteDescription:e.target.value})}),this.state=this.getStateFromCommand(this.props.initialCommand||{})}render(){let e=null,t=null;return this.state.autocomplete&&(e=d.a.createElement("div",{className:"form-group"},d.a.createElement("label",{className:"control-label col-sm-4",htmlFor:"autocompleteHint"},d.a.createElement(E.a,{id:"add_command.autocompleteHint",defaultMessage:"Autocomplete Hint"})),d.a.createElement("div",{className:"col-md-5 col-sm-8"},d.a.createElement(Le.a,{id:"autocompleteHint",type:"text",maxLength:"1024",className:"form-control",value:this.state.autocompleteHint,onChange:this.updateAutocompleteHint,placeholder:{id:Object(J.b)("add_command.autocompleteHint.placeholder"),defaultMessage:"Example: [Patient Name]"}}),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"add_command.autocompleteHint.help",defaultMessage:"(Optional) Arguments associated with your slash command, displayed as help in the autocomplete list."})))),t=d.a.createElement("div",{className:"form-group"},d.a.createElement("label",{className:"control-label col-sm-4",htmlFor:"autocompleteDescription"},d.a.createElement(E.a,{id:"add_command.autocompleteDescription",defaultMessage:"Autocomplete Description"})),d.a.createElement("div",{className:"col-md-5 col-sm-8"},d.a.createElement(Le.a,{id:"description",type:"text",maxLength:"128",className:"form-control",value:this.state.autocompleteDescription,onChange:this.updateAutocompleteDescription,placeholder:{id:Object(J.b)("add_command.autocompleteDescription.placeholder"),defaultMessage:'Example: "Returns search results for patient records"'}}),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"add_command.autocompleteDescription.help",defaultMessage:"(Optional) Short description of slash command for the autocomplete list."}))))),d.a.createElement("div",{className:"backstage-content row"},d.a.createElement(V,null,d.a.createElement(v.a,{to:"/"+this.props.team.name+"/integrations/commands"},d.a.createElement(E.a,{id:"installed_command.header",defaultMessage:"Slash Commands"})),d.a.createElement(E.a,{id:this.props.header.id,defaultMessage:this.props.header.defaultMessage})),d.a.createElement("div",{className:"backstage-form"},d.a.createElement("form",{className:"form-horizontal",onSubmit:this.handleSubmit},d.a.createElement("div",{className:"form-group"},d.a.createElement("label",{className:"control-label col-sm-4",htmlFor:"displayName"},d.a.createElement(E.a,{id:"add_command.displayName",defaultMessage:"Title"})),d.a.createElement("div",{className:"col-md-5 col-sm-8"},d.a.createElement("input",{id:"displayName",type:"text",maxLength:"64",className:"form-control",value:this.state.displayName,onChange:this.updateDisplayName}),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"add_command.displayName.help",defaultMessage:"Choose a title to be displayed on the slash command settings page. Maximum 64 characters."})))),d.a.createElement("div",{className:"form-group"},d.a.createElement("label",{className:"control-label col-sm-4",htmlFor:"description"},d.a.createElement(E.a,{id:"add_command.description",defaultMessage:"Description"})),d.a.createElement("div",{className:"col-md-5 col-sm-8"},d.a.createElement("input",{id:"description",type:"text",maxLength:"128",className:"form-control",value:this.state.description,onChange:this.updateDescription}),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"add_command.description.help",defaultMessage:"Description for your incoming webhook."})))),d.a.createElement("div",{className:"form-group"},d.a.createElement("label",{className:"control-label col-sm-4",htmlFor:"trigger"},d.a.createElement(E.a,{id:"add_command.trigger",defaultMessage:"Command Trigger Word"})),d.a.createElement("div",{className:"col-md-5 col-sm-8"},d.a.createElement(Le.a,{id:"trigger",type:"text",maxLength:M.Q.MAX_TRIGGER_LENGTH,className:"form-control",value:this.state.trigger,onChange:this.updateTrigger,placeholder:{id:Object(J.b)("add_command.trigger.placeholder"),defaultMessage:'Command trigger e.g. "hello" not including the slash'}}),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"add_command.trigger.help",defaultMessage:"Trigger word must be unique, and cannot begin with a slash or contain any spaces."})),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"add_command.trigger.helpExamples",defaultMessage:"Examples: client, employee, patient, weather"})),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"add_command.trigger.helpReserved",defaultMessage:"Reserved: {link}",values:{link:d.a.createElement("a",{href:"https://docs.mattermost.com/help/messaging/executing-commands.html#built-in-commands",target:"_blank",rel:"noopener noreferrer"},d.a.createElement(E.a,{id:"add_command.trigger.helpReservedLinkText",defaultMessage:"See built-in slash commands"}))}})))),d.a.createElement("div",{className:"form-group"},d.a.createElement("label",{className:"control-label col-sm-4",htmlFor:"url"},d.a.createElement(E.a,{id:"add_command.url",defaultMessage:"Request URL"})),d.a.createElement("div",{className:"col-md-5 col-sm-8"},d.a.createElement(Le.a,{id:"url",type:"text",maxLength:"1024",className:"form-control",value:this.state.url,onChange:this.updateUrl,placeholder:{id:Object(J.b)("add_command.url.placeholder"),defaultMessage:"Must start with http:// or https://"}}),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"add_command.url.help",defaultMessage:"The callback URL to receive the HTTP POST or GET event request when the slash command is run."})))),d.a.createElement("div",{className:"form-group"},d.a.createElement("label",{className:"control-label col-sm-4",htmlFor:"method"},d.a.createElement(E.a,{id:"add_command.method",defaultMessage:"Request Method"})),d.a.createElement("div",{className:"col-md-5 col-sm-8"},d.a.createElement("select",{id:"method",className:"form-control",value:this.state.method,onChange:this.updateMethod},d.a.createElement("option",{value:Sa},k.gb("add_command.method.post","POST")),d.a.createElement("option",{value:Ra},k.gb("add_command.method.get","GET"))),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"add_command.method.help",defaultMessage:"The type of command request issued to the Request URL."})))),d.a.createElement("div",{className:"form-group"},d.a.createElement("label",{className:"control-label col-sm-4",htmlFor:"username"},d.a.createElement(E.a,{id:"add_command.username",defaultMessage:"Response Username"})),d.a.createElement("div",{className:"col-md-5 col-sm-8"},d.a.createElement(Le.a,{id:"username",type:"text",maxLength:"64",className:"form-control",value:this.state.username,onChange:this.updateUsername,placeholder:{id:Object(J.b)("add_command.username.placeholder"),defaultMessage:"Username"}}),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"add_command.username.help",defaultMessage:'(Optional) Choose a username override for responses for this slash command. Usernames can consist of up to 22 characters consisting of lowercase letters, numbers and they symbols "-", "_", and "." .'})))),d.a.createElement("div",{className:"form-group"},d.a.createElement("label",{className:"control-label col-sm-4",htmlFor:"iconUrl"},d.a.createElement(E.a,{id:"add_command.iconUrl",defaultMessage:"Response Icon"})),d.a.createElement("div",{className:"col-md-5 col-sm-8"},d.a.createElement(Le.a,{id:"iconUrl",type:"text",maxLength:"1024",className:"form-control",value:this.state.iconUrl,onChange:this.updateIconUrl,placeholder:{id:Object(J.b)("add_command.iconUrl.placeholder"),defaultMessage:"https://www.example.com/myicon.png"}}),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"add_command.iconUrl.help",defaultMessage:"(Optional) Choose a profile picture override for the post responses to this slash command. Enter the URL of a .png or .jpg file at least 128 pixels by 128 pixels."})))),d.a.createElement("div",{className:"form-group"},d.a.createElement("label",{className:"control-label col-sm-4",htmlFor:"autocomplete"},d.a.createElement(E.a,{id:"add_command.autocomplete",defaultMessage:"Autocomplete"})),d.a.createElement("div",{className:"col-md-5 col-sm-8 checkbox"},d.a.createElement("input",{id:"autocomplete",type:"checkbox",checked:this.state.autocomplete,onChange:this.updateAutocomplete}),d.a.createElement("div",{className:"form__help"},d.a.createElement(E.a,{id:"add_command.autocomplete.help",defaultMessage:"(Optional) Show slash command in autocomplete list."})))),e,t,d.a.createElement("div",{className:"backstage-form__footer"},d.a.createElement($.a,{type:"backstage",errors:[this.props.serverError,this.state.clientError]}),d.a.createElement(v.a,{className:"btn btn-link btn-sm",to:"/"+this.props.team.name+"/integrations/commands"},d.a.createElement(E.a,{id:"add_command.cancel",defaultMessage:"Cancel"})),d.a.createElement(Z.a,{className:"btn btn-primary",type:"submit",spinning:this.state.saving,spinningText:k.gb(this.props.loading.id,this.props.loading.defaultMessage),onClick:this.handleSubmit,id:"saveCommand"},d.a.createElement(E.a,{id:this.props.footer.id,defaultMessage:this.props.footer.defaultMessage})),this.props.renderExtra))))}}function xa(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}Ta(Pa,"propTypes",{team:p.a.object.isRequired,header:p.a.object.isRequired,footer:p.a.object.isRequired,loading:p.a.object.isRequired,renderExtra:p.a.node.isRequired,serverError:p.a.string.isRequired,initialCommand:p.a.object,action:p.a.func.isRequired});const Ia={id:Object(J.b)("integrations.add"),defaultMessage:"Add"},Ua={id:Object(J.b)("add_command.save"),defaultMessage:"Save"},qa={id:Object(J.b)("add_command.saving"),defaultMessage:"Saving..."};class Da extends d.a.PureComponent{constructor(e){super(e),xa(this,"addCommand",async e=>{this.setState({serverError:""});const{data:t,error:a}=await this.props.actions.addCommand(e);t?K.a.push("/".concat(this.props.team.name,"/integrations/commands/confirm?type=commands&id=").concat(t.id)):a&&this.setState({serverError:a.message})}),this.state={serverError:""}}render(){return d.a.createElement(Pa,{team:this.props.team,header:Ia,footer:Ua,loading:qa,renderExtra:"",action:this.addCommand,serverError:this.state.serverError})}}xa(Da,"propTypes",{team:p.a.object,actions:p.a.shape({addCommand:p.a.func.isRequired}).isRequired});var La=Object(s.connect)(null,(function(e){return{actions:Object(h.bindActionCreators)({addCommand:$e.addCommand},e)}}))(Da);function Wa(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}const Ha={id:Object(J.b)("integrations.edit"),defaultMessage:"Edit"},Ba={id:Object(J.b)("edit_command.update"),defaultMessage:"Update"},Fa={id:Object(J.b)("edit_command.updating"),defaultMessage:"Updating..."};class Ga extends d.a.PureComponent{constructor(e){super(e),Wa(this,"editCommand",async e=>{this.newCommand=e,this.state.originalCommand.id&&(e.id=this.state.originalCommand.id),this.state.originalCommand.url!==this.newCommand.url||this.state.originalCommand.trigger!==this.newCommand.trigger||this.state.originalCommand.method!==this.newCommand.method?this.handleConfirmModal():await this.submitCommand()}),Wa(this,"handleConfirmModal",()=>{this.setState({showConfirmModal:!0})}),Wa(this,"confirmModalDismissed",()=>{this.setState({showConfirmModal:!1})}),Wa(this,"submitCommand",async()=>{this.setState({serverError:""});const{data:e,error:t}=await this.props.actions.editCommand(this.newCommand);e?K.a.push("/".concat(this.props.team.name,"/integrations/commands")):(this.setState({showConfirmModal:!1}),t&&this.setState({serverError:t.message}))}),Wa(this,"renderExtra",()=>{const e=d.a.createElement(E.a,{id:"update_command.update",defaultMessage:"Update"}),t=d.a.createElement(E.a,{id:"update_command.confirm",defaultMessage:"Edit Slash Command"}),a=d.a.createElement(E.a,{id:"update_command.question",defaultMessage:"Your changes may break the existing slash command. Are you sure you would like to update it?"});return d.a.createElement(A.a,{title:t,message:a,confirmButtonText:e,show:this.state.showConfirmModal,onConfirm:this.submitCommand,onCancel:this.confirmModalDismissed})}),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?d.a.createElement(Pa,{team:this.props.team,header:Ha,footer:Ba,loading:Fa,renderExtra:this.renderExtra(),action:this.editCommand,serverError:this.state.serverError,initialCommand:this.state.originalCommand}):d.a.createElement(y.a,null)}}Wa(Ga,"propTypes",{team:p.a.object.isRequired,commandId:p.a.string.isRequired,commands:p.a.object,actions:p.a.shape({getCustomTeamCommands:p.a.func.isRequired,editCommand:p.a.func.isRequired}).isRequired,enableCommands:p.a.bool});var Ya=Object(s.connect)((function(e,t){const a=Object(i.getConfig)(e),s=new URLSearchParams(t.location.search).get("id"),n="true"===a.EnableCommands;return{commandId:s,commands:Object(tt.getCommands)(e),enableCommands:n}}),(function(e){return{actions:Object(h.bindActionCreators)({getCustomTeamCommands:$e.getCustomTeamCommands,editCommand:$e.editCommand},e)}}))(Ga);a(60);class za extends d.a.Component{static get propTypes(){return{team:p.a.object,location:p.a.object,commands:p.a.object,oauthApps:p.a.object,incomingHooks:p.a.object,outgoingHooks:p.a.object,bots:p.a.object}}constructor(e){super(e),function(e,t,a){t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a}(this,"handleKeyPress",e=>{"Enter"===e.key&&K.a.push("/"+this.props.team.name+"/integrations/"+this.state.type)}),this.state={type:new URLSearchParams(this.props.location.search).get("type"),id:new URLSearchParams(this.props.location.search).get("id")}}componentDidMount(){window.addEventListener("keypress",this.handleKeyPress)}componentWillUnmount(){window.removeEventListener("keypress",this.handleKeyPress)}render(){let e=null,t=null,a=null;const s=this.props.commands[this.state.id],n=this.props.incomingHooks[this.state.id],o=this.props.outgoingHooks[this.state.id],r=this.props.oauthApps[this.state.id],i=this.props.bots[this.state.id];if(this.state.type===M.j.Integrations.COMMAND&&s){const n=s.token;e=d.a.createElement(E.a,{id:"installed_commands.header",defaultMessage:"Slash Commands"}),t=d.a.createElement("p",null,d.a.createElement(j.b,{id:"add_command.doneHelp",defaultMessage:"Your slash command has been set up. The following token will be sent in the outgoing payload. Please use it to verify the request came from your Mattermost team (see [documentation](!https://docs.mattermost.com/developer/slash-commands.html) for further details)."})),a=d.a.createElement("p",{className:"word-break--all"},d.a.createElement(j.b,{id:"add_command.token",defaultMessage:"**Token**: {token}",values:{token:n}}),d.a.createElement(lt,{value:n}))}else if(this.state.type===M.j.Integrations.INCOMING_WEBHOOK&&n){const s=Object(_.e)()+"/hooks/"+n.id;e=d.a.createElement(E.a,{id:"installed_incoming_webhooks.header",defaultMessage:"Incoming Webhooks"}),t=d.a.createElement("p",null,d.a.createElement(j.b,{id:"add_incoming_webhook.doneHelp",defaultMessage:"Your incoming webhook has been set up. Please send data to the following URL (see [documentation](!https://docs.mattermost.com/developer/webhooks-incoming.html) for further details)."})),a=d.a.createElement("p",{className:"word-break--all"},d.a.createElement(j.b,{id:"add_incoming_webhook.url",defaultMessage:"**URL**: {url}",values:{url:"`"+s+"`"}}),d.a.createElement(lt,{idMessage:"integrations.copy_client_secret",defaultMessage:"Copy Client Secret",value:s}))}else if(this.state.type===M.j.Integrations.OUTGOING_WEBHOOK&&o){const s=o.token;e=d.a.createElement(E.a,{id:"installed_outgoing_webhooks.header",defaultMessage:"Outgoing Webhooks"}),t=d.a.createElement("p",null,d.a.createElement(j.b,{id:"add_outgoing_webhook.doneHelp",defaultMessage:"Your outgoing webhook has been set up. The following token will be sent in the outgoing payload. Please use it to verify the request came from your Mattermost team (see [documentation](!https://docs.mattermost.com/developer/webhooks-outgoing.html) for further details)."})),a=d.a.createElement("p",{className:"word-break--all"},d.a.createElement(j.b,{id:"add_outgoing_webhook.token",defaultMessage:"**Token**: {token}",values:{token:s}}),d.a.createElement(lt,{value:s}))}else if(this.state.type===M.j.Integrations.OAUTH_APP&&r){const s=r.id,n=r.client_secret;e=d.a.createElement(E.a,{id:"installed_oauth_apps.header",defaultMessage:"OAuth 2.0 Applications"}),(t=[]).push(d.a.createElement("p",{key:"add_oauth_app.doneHelp"},d.a.createElement(j.b,{id:"add_oauth_app.doneHelp",defaultMessage:"Your OAuth 2.0 application has been set up. Please use the following Client ID and Client Secret when requesting authorization for your application (see [documentation](!https://docs.mattermost.com/developer/oauth-2-0-applications.html) for further details)."}))),t.push(d.a.createElement("p",{key:"add_oauth_app.clientId"},d.a.createElement(j.b,{id:"add_oauth_app.clientId",defaultMessage:"**Client ID**: {id}",values:{id:s}}),d.a.createElement(lt,{idMessage:"integrations.copy_client_id",defaultMessage:"Copy Client Id",value:s}),d.a.createElement("br",null),d.a.createElement(j.b,{id:"add_oauth_app.clientSecret",defaultMessage:"**Client Secret**: {secret}",values:{secret:n}}),d.a.createElement(lt,{idMessage:"integrations.copy_client_secret",defaultMessage:"Copy Client Secret",value:n}))),t.push(d.a.createElement("p",{key:"add_oauth_app.doneUrlHelp"},d.a.createElement(E.a,{id:"add_oauth_app.doneUrlHelp",defaultMessage:"The following are your authorized redirect URL(s)."}))),a=d.a.createElement("p",{className:"word-break--all"},d.a.createElement(j.b,{id:"add_oauth_app.url",defaultMessage:"**URL(s)**: {url}",values:{url:r.callback_urls.join(", ")}}))}else{if(this.state.type!==M.j.Integrations.BOT||!i)return K.a.replace("/error?type=".concat(M.l.PAGE_NOT_FOUND)),"";{const s=new URLSearchParams(this.props.location.search).get("token");e=d.a.createElement(E.a,{id:"bots.manage.header",defaultMessage:"Bot Accounts"}),t=d.a.createElement("p",null,d.a.createElement(j.b,{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:i.display_name||i.username}})),a=d.a.createElement("p",{className:"word-break--all"},d.a.createElement(j.b,{id:"add_outgoing_webhook.token",defaultMessage:"**Token**: {token}",values:{token:s}}),d.a.createElement(lt,{value:s}),d.a.createElement("br",null),d.a.createElement("br",null),d.a.createElement(j.b,{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](https://mattermost.com/pl/default-bot-accounts) to learn more."}))}}return d.a.createElement("div",{className:"backstage-content row"},d.a.createElement(V,null,d.a.createElement(v.a,{to:"/"+this.props.team.name+"/integrations/"+this.state.type},e),d.a.createElement(E.a,{id:"integrations.add",defaultMessage:"Add"})),d.a.createElement("div",{className:"backstage-form backstage-form__confirmation"},d.a.createElement("h4",{className:"backstage-form__title",id:"formTitle"},d.a.createElement(E.a,{id:"integrations.successful",defaultMessage:"Setup Successful"})),t,a,d.a.createElement("div",{className:"backstage-form__footer"},d.a.createElement(v.a,{className:"btn btn-primary",type:"submit",to:"/"+this.props.team.name+"/integrations/"+this.state.type,id:"doneButton"},d.a.createElement(E.a,{id:"integrations.done",defaultMessage:"Done"})))))}}var Ka=Object(s.connect)((function(e){return{commands:Object(tt.getCommands)(e),oauthApps:Object(tt.getOAuthApps)(e),incomingHooks:Object(tt.getIncomingHooks)(e),outgoingHooks:Object(tt.getOutgoingHooks)(e),bots:Object(g.getBotAccounts)(e)}}))(za);function Qa(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<o.length;s++)a=o[s],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(s=0;s<o.length;s++)a=o[s],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}const Ja=e=>{let{component:t,extraProps:a}=e,s=Qa(e,["component","extraProps"]);return(d.a.createElement(n.b,Object.assign({},s,{render:e=>d.a.createElement(t,Object.assign({},a,e))})))};class Va extends d.a.PureComponent{constructor(e){super(e),this.state={loading:!0}}componentDidMount(){this.props.enableCommands&&this.props.actions.loadCommandsAndProfilesForTeam(this.props.team.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 d.a.createElement("div",null,d.a.createElement(n.d,null,d.a.createElement(n.b,{exact:!0,path:"".concat(this.props.match.url,"/"),render:()=>d.a.createElement(n.a,{to:"".concat(this.props.match.url,"/installed")})}),d.a.createElement(Ja,{extraProps:e,path:"".concat(this.props.match.url,"/installed"),component:Aa}),d.a.createElement(Ja,{extraProps:e,path:"".concat(this.props.match.url,"/add"),component:La}),d.a.createElement(Ja,{extraProps:e,path:"".concat(this.props.match.url,"/edit"),component:Ya}),d.a.createElement(Ja,{extraProps:e,path:"".concat(this.props.match.url,"/confirm"),component:Ka})))}}!function(e,t,a){t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a}(Va,"propTypes",{team:p.a.object,user:p.a.object,users:p.a.object,commands:p.a.array,match:p.a.shape({url:p.a.string.isRequired}).isRequired,actions:p.a.shape({loadCommandsAndProfilesForTeam:p.a.func.isRequired}).isRequired,enableCommands:p.a.bool});var Xa=Object(s.connect)((function(e){const t="true"===Object(i.getConfig)(e).EnableCommands;return{commands:Object.values(Object(tt.getCommands)(e)),users:Object(o.getUsers)(e),enableCommands:t}}),(function(e){return{actions:Object(h.bindActionCreators)({loadCommandsAndProfilesForTeam:ot},e)}}))(Va);class Za extends d.a.Component{static get propTypes(){return{name:p.a.string.isRequired,title:p.a.node.isRequired,icon:p.a.string.isRequired,parentLink:p.a.string,children:p.a.arrayOf(p.a.element)}}static get defaultProps(){return{parentLink:"",children:[]}}static get contextTypes(){return{router:p.a.object.isRequired}}render(){const{name:e,title:t,icon:a,parentLink:s,children:o}=this.props,r=s+"/"+e;return d.a.createElement("li",{className:"backstage-sidebar__category"},d.a.createElement(v.b,{to:r,className:"category-title",activeClassName:"category-title--active"},d.a.createElement("i",{className:"fa "+a}),d.a.createElement("span",{className:"category-title__text"},t)),o&&o.length>0&&d.a.createElement(n.b,{path:r,render:()=>d.a.createElement("ul",{className:"sections"},d.a.Children.map(o,e=>e?d.a.cloneElement(e,{parentLink:r}):e))}))}}class $a extends d.a.Component{static get propTypes(){return{name:p.a.string.isRequired,title:p.a.node.isRequired,parentLink:p.a.string,subsection:p.a.bool,children:p.a.arrayOf(p.a.element),id:p.a.string}}static get defaultProps(){return{parentLink:"",subsection:!1,children:[]}}static get contextTypes(){return{router:p.a.object.isRequired}}getLink(){return this.props.parentLink+"/"+this.props.name}render(){const{title:e,subsection:t,children:a}=this.props,s=this.getLink();let n=null;a.length>0&&(n=d.a.createElement("ul",{className:"subsections"},d.a.Children.map(a,e=>d.a.cloneElement(e,{parentLink:s,subsection:!0}))));let o="section";return t&&(o="subsection"),d.a.createElement("li",{className:o,id:this.props.id},d.a.createElement(v.b,{className:"".concat(o,"-title"),activeClassName:"".concat(o,"-title--active"),to:s},d.a.createElement("span",{className:"".concat(o,"-title__text")},e)),n)}}class es extends d.a.Component{static get propTypes(){return{team:p.a.object.isRequired,user:p.a.object.isRequired,enableCustomEmoji:p.a.bool.isRequired,enableIncomingWebhooks:p.a.bool.isRequired,enableOutgoingWebhooks:p.a.bool.isRequired,enableCommands:p.a.bool.isRequired,enableOAuthServiceProvider:p.a.bool.isRequired,canCreateOrDeleteCustomEmoji:p.a.bool.isRequired}}renderCustomEmoji(){return this.props.enableCustomEmoji&&this.props.canCreateOrDeleteCustomEmoji?d.a.createElement(Za,{name:"emoji",parentLink:"/"+this.props.team.name,icon:"fa-smile-o",title:d.a.createElement(E.a,{id:"backstage_sidebar.emoji",defaultMessage:"Custom Emoji"})}):null}renderIntegrations(){let e=null;this.props.enableIncomingWebhooks&&(e=d.a.createElement(Ee.a,{permissions:[c.Permissions.MANAGE_INCOMING_WEBHOOKS],teamId:this.props.team.id},d.a.createElement($a,{name:"incoming_webhooks",parentLink:"/"+this.props.team.name+"/integrations",title:d.a.createElement(E.a,{id:"backstage_sidebar.integrations.incoming_webhooks",defaultMessage:"Incoming Webhooks"}),id:"incomingWebhooks"})));let t=null;this.props.enableOutgoingWebhooks&&(t=d.a.createElement(Ee.a,{permissions:[c.Permissions.MANAGE_OUTGOING_WEBHOOKS],teamId:this.props.team.id},d.a.createElement($a,{name:"outgoing_webhooks",parentLink:"/"+this.props.team.name+"/integrations",title:d.a.createElement(E.a,{id:"backstage_sidebar.integrations.outgoing_webhooks",defaultMessage:"Outgoing Webhooks"}),id:"outgoingWebhooks"})));let a=null;this.props.enableCommands&&(a=d.a.createElement(Ee.a,{permissions:[c.Permissions.MANAGE_SLASH_COMMANDS],teamId:this.props.team.id},d.a.createElement($a,{name:"commands",parentLink:"/"+this.props.team.name+"/integrations",title:d.a.createElement(E.a,{id:"backstage_sidebar.integrations.commands",defaultMessage:"Slash Commands"}),id:"slashCommands"})));let s=null;this.props.enableOAuthServiceProvider&&(s=d.a.createElement(fe.a,{permissions:[c.Permissions.MANAGE_OAUTH]},d.a.createElement($a,{name:"oauth2-apps",parentLink:"/"+this.props.team.name+"/integrations",title:d.a.createElement(E.a,{id:"backstage_sidebar.integrations.oauthApps",defaultMessage:"OAuth 2.0 Applications"}),id:"oauthApps"})));const n=d.a.createElement(fe.a,{permissions:["manage_bots"]},d.a.createElement($a,{name:"bots",parentLink:"/"+this.props.team.name+"/integrations",title:d.a.createElement(E.a,{id:"backstage_sidebar.bots",defaultMessage:"Bot Accounts"}),id:"botAccounts"}));return d.a.createElement(Ee.a,{permissions:[c.Permissions.MANAGE_INCOMING_WEBHOOKS,c.Permissions.MANAGE_OUTGOING_WEBHOOKS,c.Permissions.MANAGE_SLASH_COMMANDS,c.Permissions.MANAGE_OAUTH],teamId:this.props.team.id},d.a.createElement(Za,{name:"integrations",icon:"fa-link",parentLink:"/"+this.props.team.name,title:d.a.createElement(E.a,{id:"backstage_sidebar.integrations",defaultMessage:"Integrations"})},e,t,a,s,n))}render(){return d.a.createElement("div",{className:"backstage-sidebar"},d.a.createElement("ul",null,this.renderCustomEmoji(),this.renderIntegrations()))}}var ts=a(1222);class as extends d.a.Component{static get propTypes(){return{team:p.a.object.isRequired,siteName:p.a.string}}render(){return this.props.team?d.a.createElement("div",{className:"backstage-navbar"},d.a.createElement(v.a,{className:"backstage-navbar__back",to:"/".concat(this.props.team.name)},d.a.createElement(ts.a,null),d.a.createElement("span",null,d.a.createElement(E.a,{id:"backstage_navbar.backToMattermost",defaultMessage:"Back to {siteName}",values:{siteName:this.props.siteName}})))):null}}function ss(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function ns(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<o.length;s++)a=o[s],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(s=0;s<o.length;s++)a=o[s],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}const os=e=>{let{component:t,extraProps:a}=e,s=ns(e,["component","extraProps"]);return(d.a.createElement(n.b,Object.assign({},s,{render:e=>d.a.createElement(t,Object.assign({},a,e))})))};class rs extends d.a.Component{constructor(...e){super(...e),ss(this,"scrollToTop",()=>{this.listRef&&(this.listRef.scrollTop=0)}),ss(this,"setListRef",e=>{this.listRef=e})}render(){if(null==this.props.team||null==this.props.user)return d.a.createElement("div",null);const e={team:this.props.team,user:this.props.user,scrollToTop:this.scrollToTop};return d.a.createElement("div",{className:"backstage"},d.a.createElement(ie.a,null),d.a.createElement(le.a,null),d.a.createElement(as,{team:this.props.team,siteName:this.props.siteName}),d.a.createElement(re.a,{pluggableName:"Root"}),d.a.createElement("div",{className:"backstage-body",ref:this.setListRef},d.a.createElement(es,{team:this.props.team,user:this.props.user,enableCustomEmoji:this.props.enableCustomEmoji,enableIncomingWebhooks:this.props.enableIncomingWebhooks,enableOutgoingWebhooks:this.props.enableOutgoingWebhooks,enableCommands:this.props.enableCommands,enableOAuthServiceProvider:this.props.enableOAuthServiceProvider,canCreateOrDeleteCustomEmoji:this.props.canCreateOrDeleteCustomEmoji}),d.a.createElement(n.d,null,d.a.createElement(os,{extraProps:e,exact:!0,path:"/:team/integrations",component:ve}),d.a.createElement(os,{extraProps:e,exact:!0,path:"".concat(this.props.match.url,"/incoming_webhooks"),component:gt}),d.a.createElement(os,{extraProps:e,path:"".concat(this.props.match.url,"/incoming_webhooks/add"),component:At}),d.a.createElement(os,{extraProps:e,path:"".concat(this.props.match.url,"/incoming_webhooks/edit"),component:It}),d.a.createElement(os,{extraProps:e,exact:!0,path:"".concat(this.props.match.url,"/outgoing_webhooks"),component:Ht}),d.a.createElement(os,{extraProps:e,path:"".concat(this.props.match.url,"/outgoing_webhooks/add"),component:Jt}),d.a.createElement(os,{extraProps:e,path:"".concat(this.props.match.url,"/outgoing_webhooks/edit"),component:ta}),d.a.createElement(os,{extraProps:e,path:"".concat(this.props.match.url,"/commands"),component:Xa}),d.a.createElement(os,{extraProps:e,exact:!0,path:"".concat(this.props.match.url,"/oauth2-apps"),component:ca}),d.a.createElement(os,{extraProps:e,path:"".concat(this.props.match.url,"/oauth2-apps/add"),component:fa}),d.a.createElement(os,{extraProps:e,path:"".concat(this.props.match.url,"/oauth2-apps/edit"),component:Na}),d.a.createElement(os,{extraProps:e,path:"".concat(this.props.match.url,"/confirm"),component:Ka}),d.a.createElement(os,{extraProps:e,exact:!0,path:"/:team/emoji",component:Qe}),d.a.createElement(os,{extraProps:e,path:"".concat(this.props.match.url,"/add"),component:Ze}),d.a.createElement(os,{extraProps:e,path:"".concat(this.props.match.url,"/bots/add"),component:oe}),d.a.createElement(os,{extraProps:e,path:"".concat(this.props.match.url,"/bots/edit"),component:oe}),d.a.createElement(os,{extraProps:e,path:"".concat(this.props.match.url,"/bots"),component:H}))))}}ss(rs,"propTypes",{user:p.a.object,team:p.a.object,match:p.a.shape({url:p.a.string.isRequired}).isRequired,siteName:p.a.string,enableCustomEmoji:p.a.bool.isRequired,enableIncomingWebhooks:p.a.bool.isRequired,enableOutgoingWebhooks:p.a.bool.isRequired,enableCommands:p.a.bool.isRequired,enableOAuthServiceProvider:p.a.bool.isRequired,canCreateOrDeleteCustomEmoji:p.a.bool.isRequired});t.default=Object(n.g)(Object(s.connect)((function(e){const t=Object(o.getCurrentUser)(e),a=Object(r.getCurrentTeam)(e),s=Object(i.getConfig)(e),n=s.SiteName,m="true"===s.EnableCustomEmoji,d="true"===s.EnableIncomingWebhooks,u="true"===s.EnableOutgoingWebhooks,p="true"===s.EnableCommands,h="true"===s.EnableOAuthServiceProvider;let g=Object(l.haveISystemPermission)(e,{permission:c.Permissions.CREATE_EMOJIS})||Object(l.haveISystemPermission)(e,{permission:c.Permissions.DELETE_EMOJIS});if(!g)for(const t of Object(r.getMyTeams)(e))if(Object(l.haveITeamPermission)(e,{team:t.id,permission:c.Permissions.CREATE_EMOJIS})||Object(l.haveITeamPermission)(e,{team:t.id,permission:c.Permissions.DELETE_EMOJIS})){g=!0;break}return{user:t,team:a,siteName:n,enableCustomEmoji:m,enableIncomingWebhooks:d,enableOutgoingWebhooks:u,enableCommands:p,enableOAuthServiceProvider:h,canCreateOrDeleteCustomEmoji:g}}))(rs))}}]); //# sourceMappingURL=9.5c4c311f2864e808335c.js.map