PageSourceSearch

https://ihaqdonate.com/assets/StreamSettingsPage-lBbW4cP-.js

js ihaqdonate.com collected 2026-10-07 15:10:11 UTC 8,101 bytes, 1 lines download raw bytes

1import{w as v,o as M,r as f,R as g,j as e,c as x}from"./vendor-react-DgOz2jQd.js";import{w as b,T as a,b as l,n as W,B as A,I as F,A as L}from"./index-DayLiz0y.js";import{m as j,o,d,e as i,f as h}from"./vendor-mobx-DziDysUD.js";import{S as D}from"./SettingsPageHeaderGlass-ZbuGBrQD.js";import{S as k}from"./SettingsFooterGlass-ByNI82Tb.js";import{T as m}from"./TextInputGlass-Buf8bN9v.js";import{F as _}from"./FormErrors-CIHowU4q.js";import{w as N}from"./withOnFirstError-hAsdbznp.js";import{W as c}from"./WidgetSettingsSectionGlass-CemLUDNY.js";import"./vendor-forms-CeN62axY.js";import"./vendor-query-CCb-kr4I.js";import"./pluralize-BqhPSiJS.js";import"./copyToClipboard-CMgYcUjS.js";const s="glass_stream-settings",E=30;class T extends f.Component{constructor(t){super(t),this.errors=new _,this.minAmountDonation="",this.isModerateMode=!1,this.blackWords=new Map,this.filterString="",this.initialSettingsStr="",this.isSaving=!1,this.minDonateAmountRef=g.createRef(),this.filterListRef=g.createRef(),this.handleResize=()=>{},this.onEnterFilterWords=()=>this.handleFilterWords(),this.settings=t.store.streamSettings,this.profile=t.store.profile,j(this,{minAmountDonation:o,isModerateMode:o,blackWords:o,filterString:o,initialSettingsStr:o,isSaving:o,hasChanges:d,blackWordsList:d,minAmountDonationValue:d,setModerateMode:i.bound,setFilterString:i.bound,setDonateValue:i.bound,handleFilterWords:i.bound,addFilterWord:i.bound,deleteFilterWord:i.bound,onSave:i.bound,onCancel:i.bound}),this.getStreamSettings()}componentDidMount(){window.addEventListener("resize",this.handleResize)}componentWillUnmount(){window.removeEventListener("resize",this.handleResize)}get minAmountDonationValue(){return this.minAmountDonation?Number(this.minAmountDonation):0}get blackWordsList(){const t=[];return this.blackWords.forEach((r,n)=>t.push(n)),t}get hasChanges(){if(!this.initialSettingsStr)return!1;const t=JSON.stringify({minAmountDonation:this.minAmountDonation,isModerateMode:this.isModerateMode,blackWordsList:this.blackWordsList.slice()});return this.initialSettingsStr!==t}handleFilterWords(){const t=this.filterString.split(",");t.length&&t.forEach(r=>{const n=r.toLowerCase().trim();n&&this.addFilterWord(n)}),this.filterString=""}setDonateValue(t){this.errors.setError("minAmountDonation",""),Number(t)<=this.settings.MAX_DONATE_AMOUNT&&(this.minAmountDonation=t)}setFilterString(t){this.isValidFilterString(t.target.value)&&(this.filterString=t.target.value)}setModerateMode(t){this.isModerateMode=t}addFilterWord(t){this.blackWords.set(t,!0)}deleteFilterWord(t){this.blackWords.delete(t),this.errors.setError("filterList","")}onSave(){if(this.validateForm(),this.errors.hasErrors){this.focusFirstErrorIfHas();return}const t={settings:{minAmountDonation:Number(this.minAmountDonation).toFixed(2),blackListWord:this.blackWordsList.slice()||[],isModerateMode:this.isModerateMode,isTTSEnable:this.settings.isTTSEnable,voiceLimit:Number(this.settings.voiceLimit),voiceVolume:this.settings.voiceVolume}};this.isSaving=!0,this.props.store.updateStreamSettings(t).then(()=>{h(()=>{this.syncSettings(t),this.initialSettingsStr=JSON.stringify({minAmountDonation:this.minAmountDonation,isModerateMode:this.isModerateMode,blackWordsList:this.blackWordsList.slice()})}),b(this.props.t("general:successSaveSettings"),{variant:"success"})}).finally(()=>{h(()=>{this.isSaving=!1})})}onCancel(){this.initForm()}render(){return e.jsxs("div",{className:s,children:[e.jsx(D,{title:this.props.t("streamSettings:form:title")}),e.jsxs("div",{className:`${s}__content`,children:[e.jsx("div",{className:`${s}__left-col`,children:this.renderLeftColumn()}),e.jsx("div",{className:`${s}__right-col`,children:this.renderRightColumn()})]}),e.jsx(k,{hasChanges:this.hasChanges,isDisabled:!this.hasChanges||this.isSaving,onSave:this.onSave,onCancel:this.onCancel,isSaving:this.isSaving,saveButtonText:this.props.t("streamSettings:form:saveButtonText"),cancelButtonText:this.props.t("streamSettings:form:cancelButtonText")})]})}isValidFilterString(t){return t.split(",").every(r=>r.trim().length<=E)}focusFirstErrorIfHas(){N(this.errors,[[this.minDonateAmountRef.current,"minAmountDonation"],[this.filterListRef.current,"filterList"]])(t=>{t==null||t.scrollIntoView({block:"center",behavior:"smooth"}),t==null||t.focus({preventScroll:!0})})}validateForm(){this.errors.clear(),Number(this.minAmountDonation)<this.settings.MIN_DONATE_AMOUNT&&this.errors.setError("minAmountDonation",this.props.t("validation:minAmount",{amount:this.settings.MIN_DONATE_AMOUNT}))}getStreamSettings(){this.props.store.getStreamSettings().then(()=>this.initForm())}initForm(){h(()=>{this.setDonateValue(String(this.settings.minAmountDonationValue)),this.setModerateMode(this.settings.isModerateMode),this.blackWords.clear(),this.settings.blackListWord.forEach(t=>this.addFilterWord(t)),this.initialSettingsStr=JSON.stringify({minAmountDonation:this.minAmountDonation,isModerateMode:this.isModerateMode,blackWordsList:this.blackWordsList.slice()})})}syncSettings(t){this.settings.setMinAmountDonation(t.settings.minAmountDonation),this.settings.setFilterWords(t.settings.blackListWord),this.settings.setModerateMode(t.settings.isModerateMode)}renderLeftColumn(){const{t}=this.props,r=this.errors.getErrorBy("filterList"),n=r?e.jsx(a,{size:"s",color:"red",children:r}):null,S=e.jsxs("div",{ref:this.filterListRef,className:`${s}__filter-wrapper`,children:[this.blackWordsList.length>0&&e.jsxs("div",{className:`${s}__filter-list`,children:[e.jsx(a,{size:"sm",color:"secondary",children:t("streamSettings:form:section2:badWordsListTitle")}),this.blackWordsList.map(p=>this.renderFilterWord(p))]}),n]});return e.jsxs(e.Fragment,{children:[e.jsxs(c,{children:[e.jsx(l,{value:t("streamSettings:form:moderationGroup:title",{defaultValue:"Модерация"}),size:"m"}),this.settings.isLoading?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:`${s}__skeleton-item`}),e.jsx("div",{className:`${s}__skeleton-item`,style:{height:"74px"}})]}):e.jsxs(e.Fragment,{children:[e.jsx(W,{isChecked:this.isModerateMode,onChange:this.setModerateMode,text:t("streamSettings:form:moderateMode:titleOverride",{defaultValue:"Полная премодерация"}),hintText:t("streamSettings:form:moderateMode:hintOverride",{defaultValue:"Донаты появятся на экране только после вашего одобрения (нажатия Play в панели управления)."})}),this.isModerateMode&&e.jsx(m,{isCopyonly:!0,title:t("streamSettings:form:moderatorUrl",{defaultValue:"Панель для модераторов"}),value:this.settings.moderateURL})]})]}),!this.settings.isLoading&&e.jsxs(c,{children:[e.jsx(l,{value:t("streamSettings:form:section2:title"),size:"m"}),e.jsx(m,{placeholder:t("streamSettings:form:section2:field1:placeholder"),title:t("streamSettings:form:section2:field1:title"),hintText:t("streamSettings:form:section2:field1:hintOverride",{defaultValue:"Запрещенные слова будут заменяться звёздочками."}),onChange:this.setFilterString,onEnter:this.onEnterFilterWords,value:this.filterString,renderCustomButton:e.jsx(A,{size:"m",theme:"secondary",icon:"add",onClick:this.handleFilterWords})}),S]})]})}renderFilterWord(t){return e.jsxs("div",{className:`${s}__filter-chip`,children:[e.jsx(a,{size:"sm",color:"primary",children:t}),e.jsx("button",{"aria-label":this.props.t("streamSettings:form:section2:removeBadWordLabel"),onClick:()=>this.deleteFilterWord(t),className:`${s}__filter-chip-remove`,children:e.jsx(F,{type:"close"})})]},t)}renderRightColumn(){const{t}=this.props;return e.jsx(e.Fragment,{children:e.jsxs(c,{children:[e.jsx(l,{value:t("streamSettings:form:integrationGroup:title",{defaultValue:"Интеграция"}),size:"m"}),this.settings.isLoading?e.jsx("div",{className:`${s}__skeleton-item`,style:{height:"74px"}}):e.jsx(m,{isCopyonly:!0,title:t("streamSettings:form:obs:token:title"),value:this.settings.OBSToken})]})})}}const C=v()(M(T)),P=()=>{const{store:u}=f.useContext(L),t=x();return e.jsx(C,{store:u,navigate:t})};export{P as StreamSettingsPage};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.