@hiver/connector-agent 4.22.10-mondayEmailLog-beta.7 → 4.22.10-mondayEmailLog-beta.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -22,6 +22,9 @@ export declare const getOtherAppLoggingName: (status: unknown, currentConnectorI
|
|
|
22
22
|
/**
|
|
23
23
|
* The current logging state of an already-linked task, so the Edit form opens
|
|
24
24
|
* with the toggle reflecting it. Undefined when the task is not enrolled.
|
|
25
|
+
* A conversation paused from the popover header (autoLogEnabled false) reads as
|
|
26
|
+
* off even when the task's own flag is on: otherwise the toggle opened ON and
|
|
27
|
+
* saving any field resumed every task on the conversation (review finding 2).
|
|
25
28
|
*/
|
|
26
29
|
export declare const getLinkedTaskLogState: (status: unknown, externalResourceId?: string | null) => boolean | undefined;
|
|
27
30
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logEmails.d.ts","sourceRoot":"","sources":["../../../../src/features/write-form/utils/logEmails.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAkB,WAAW,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAIjD;;;;;GAKG;AACH,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,0BAA0B,EAC1B,0BAA0B,EAC1B,0BAA0B,EAC1B,iBAAiB,EAClB,MAAM,eAAe,CAAC;AAEvB,KAAK,SAAS,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjD;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,WAAY,OAAO,uBAAuB,MAAM,GAAG,IAAI,KAAG,MAAM,GAAG,IAcrG,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"logEmails.d.ts","sourceRoot":"","sources":["../../../../src/features/write-form/utils/logEmails.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAkB,WAAW,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAIjD;;;;;GAKG;AACH,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,0BAA0B,EAC1B,0BAA0B,EAC1B,0BAA0B,EAC1B,iBAAiB,EAClB,MAAM,eAAe,CAAC;AAEvB,KAAK,SAAS,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjD;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,WAAY,OAAO,uBAAuB,MAAM,GAAG,IAAI,KAAG,MAAM,GAAG,IAcrG,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,WAAY,OAAO,uBAAuB,MAAM,GAAG,IAAI,KAAG,OAAO,GAAG,SAMrG,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAAI,CAAC,SAAS,WAAW,WAAW,CAAC,EAAE,KAAG,CAAC,EAS5E,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,SACrB,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,UAC1B,eAAe,UACf,SAAS,EAAE,GAAG,SAAS,WACtB,OAAO,KACf,MAAM,CAAC,MAAM,EAAE,YAAY,CAG7B,CAAC;AAEF;;;;;;GAMG;AACH;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,uDAKhC;IACD,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,KAAG,OAAmE,CAAC;AAExE,eAAO,MAAM,uBAAuB,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,KAAG,CAKtF,CAAC"}
|
package/index.es.js
CHANGED
|
@@ -23599,7 +23599,7 @@ const oO = w(_s)`
|
|
|
23599
23599
|
const n = (e.selectedEntities ?? []).find(
|
|
23600
23600
|
(r) => r.externalResourceId != null && String(r.externalResourceId) === String(t)
|
|
23601
23601
|
);
|
|
23602
|
-
return n ? Ss(n) : void 0;
|
|
23602
|
+
return n ? e.autoLogEnabled !== !1 && Ss(n) : void 0;
|
|
23603
23603
|
}, xO = (e) => e.some((n) => Zc(n.formFields)) ? e.map((n) => ({
|
|
23604
23604
|
...n,
|
|
23605
23605
|
formFields: n.formFields.filter(
|
package/index.umd.js
CHANGED
|
@@ -2933,7 +2933,7 @@ Do you want to continue?`,Ok="Select an object to create",Nk="Select an object t
|
|
|
2933
2933
|
height: 20px;
|
|
2934
2934
|
flex-shrink: 0;
|
|
2935
2935
|
}
|
|
2936
|
-
`,Q8=({cardData:e,cardDataApiStatus:t,objectToLink:n,args:u})=>{const r=Gt(),[o,f]=g.useState(!1),[i,c]=g.useState(!0),{id:l="",cardTitle:D="",logoUrl:A}=e||{},m=t===Ae.LOADING,b=p=>{p.stopPropagation();const d=p.currentTarget.offsetWidth<p.currentTarget.scrollWidth;f(!!d)},C=p=>{r(oo({id:n,args:u,isRefresh:!0}));const d=p.currentTarget.querySelector("svg");d==null||d.classList.remove("selected"),setTimeout(()=>d==null?void 0:d.classList.add("selected"),1)};return a.jsxs(aM,{children:[a.jsxs(sM,{direction:"row",justifyContent:"space-between",children:[m?a.jsxs(s.Stack,{gap:"6px",direction:"row",children:[a.jsx(bn,{width:"16px",height:"24px"}),a.jsx(bn,{width:"100px",height:"24px"})]}):a.jsxs(iM,{children:[A&&a.jsx("img",{src:A,alt:D}),a.jsx(s.Tooltip,{title:o?D:"",children:a.jsx(s.Typography,{variant:"h4",onMouseOver:p=>b(p),onMouseLeave:p=>b(p),children:D})})]}),a.jsxs(s.Stack,{direction:"row",alignItems:"center",children:[i?a.jsx(s.Tooltip,{title:WD,placement:"bottom",children:a.jsx(Vr,{onClick:p=>C(p),children:a.jsx(d8,{"aria-hidden":!0})})}):null,a.jsx(s.Tooltip,{title:i?GD:X0,placement:"bottom",children:a.jsx(Vr,{onClick:()=>c(p=>!p),children:a.jsx(n1,{className:i?"":"hiver-up"})})})]})]}),a.jsx(l8,{id:l,cardTitle:D,specificCardData:{[l]:e},specificConnectorApiStatus:{[l]:t},isOpen:i})]})},_8={values:{},errors:{}},nn={SET_FIELD_VALUE:"SET_FIELD_VALUE",CLEAR_ERROR:"CLEAR_ERROR",SET_FIELD_ERROR:"SET_FIELD_ERROR",SET_FIELDS:"SET_FIELDS",SET_FORM_DEFAULTS:"SET_FORM_DEFAULTS",CLEAR_FIELDS:"CLEAR_FIELDS",RESET_STATE:"RESET_STATE"},cM=(e,t)=>{const{type:n,payload:u}=t;switch(n){case nn.SET_FIELD_VALUE:{if(!(u!=null&&u.value))return e;const{name:r,value:o}=u.value;return{...e,values:{...e.values,[r]:o}}}case nn.SET_FIELD_ERROR:{if(!(u!=null&&u.value))return e;const{name:r,value:o}=u.value;return typeof o=="boolean"||typeof o=="string"?{...e,errors:{...e.errors,[r]:o}}:e}case nn.CLEAR_ERROR:{if(!(u!=null&&u.value))return e;const{name:r}=u.value;return{...e,errors:{...e.errors,[r]:""}}}case nn.SET_FIELDS:{if(!(u!=null&&u.values))return e;const{values:r}=u;return{...e,values:r}}case nn.SET_FORM_DEFAULTS:{if(!(u!=null&&u.values))return e;const{values:r}=u,o={...e.errors};for(const f in r??{})r[f]&&delete o[f];return{...e,errors:o,values:{...e.values,...r}}}case nn.CLEAR_FIELDS:{const{fieldNames:r}=u??{};if(!Array.isArray(r))return e;const o={...e.values},f={...e.errors};for(const i of r)delete o[i],delete f[i];return{...e,values:o,errors:f}}case nn.RESET_STATE:return _8}return e},P8=()=>g.useReducer(cM,_8),R8=({state:e,dispatch:t,validations:n,dynamicFields:u})=>{const r=e.errors,o=(b,C)=>{t({type:nn.SET_FIELD_VALUE,payload:{value:{value:C,name:b}}})},f=g.useCallback(b=>{t({type:nn.SET_FORM_DEFAULTS,payload:{values:b}})},[t]),i=g.useCallback(()=>Object.keys(r).filter(C=>!!r[C]).length>0,[r]),c=b=>{b.stopPropagation();const{name:C,value:p}=(b==null?void 0:b.target)||{};o(C,p)},l=(b,C)=>{b.stopPropagation();const{name:p}=(b==null?void 0:b.target)||{};o(p,C)},D=(b,C)=>{o(b,C||"")},A=(b,C)=>{e.errors[b]!==C&&t({type:nn.SET_FIELD_ERROR,payload:{value:{name:b,value:C}}})},m=(b,C)=>{if(C){const p=C[b];p==null||p.forEach(d=>{var h;o(d,""),C[d]&&m(d,C),(h=n[d])!=null&&h.isRequired&&A(d,!0)})}};return g.useEffect(()=>{if(Array.isArray(u))return()=>{const b=u.map(C=>C.name);t({type:nn.CLEAR_FIELDS,payload:{fieldNames:b}})}},[u,t]),{setValue:o,setFormDefaults:f,isErrorInValidations:i,inputChangeHandler:c,checkboxChangeHandler:l,dateChangeHandler:D,handleValidationError:A,clearDependentFields:m}},H8=({formFields:e,formId:t,formState:n,appDispatch:u})=>e.reduce((r,o)=>{if(o.type!=="async-select"||!o.interfaceDetails)return r;const f=o.interfaceDetails,i={loadOptions:(c,l,D,A)=>{let m=f;o.searchInterfaceDetails&&typeof c=="string"&&c.trim().length>0&&!D&&(m=o.searchInterfaceDetails);const b=VI(n,m==null?void 0:m.args),C=Object.values((m==null?void 0:m.args)||{});if(b.length===C.length){u(gr({fieldName:o.name,formId:String(t),searchTerm:c,fieldConfig:o,interfaceId:m==null?void 0:m.id,pagination:m==null?void 0:m.pagination,callback:l,args:{...la(n,m==null?void 0:m.args),...la(n,m==null?void 0:m.optionalArgs)},isScrollToBottomEvent:D,controller:A}));return}return l([])}};return{...r,[o.name]:i}},{}),W8=({formFields:e,formId:t,formState:n,conversationId:u,appDispatch:r})=>e.reduce((o,f)=>{if(!f.createOptionInterfaceDetails)return o;const i=f.createOptionInterfaceDetails;return{...o,[f.name]:{createOption:(c,l)=>{var A,m;if(!c)return;const D={values:{name:f.name,value:c},errors:{}};r(Df({fieldName:f.name,formId:String(t),interfaceId:i.id,conversationId:u,label:c,callback:l,args:{...la(n,(A=f==null?void 0:f.interfaceDetails)==null?void 0:A.args),...la(n,(m=f==null?void 0:f.interfaceDetails)==null?void 0:m.optionalArgs)},createArgs:{...la(D,i.args)}}))}}}},{}),G8=({formFields:e,formState:t,formId:n,conversationId:u})=>{const r=Gt(),o=g.useMemo(()=>{if(e&&e.length){const i=H8({formFields:e,formId:n,formState:t,appDispatch:r});return e.reduce((l,D)=>{const A=D.columns;if(!A)return l;const m=H8({formFields:A,formId:n,formState:t,appDispatch:r});return{...l,[D.name]:{loadOptionsList:m}}},i)}return null},[e,t,n,r]),f=g.useMemo(()=>{const i=W8({formFields:e,formId:n,formState:t,conversationId:u,appDispatch:r});return e.reduce((l,D)=>{const A=D.columns;if(!A)return l;const m=W8({formFields:A,formId:n,formState:t,conversationId:u,appDispatch:r});return{...l,[D.name]:{createOptionList:m}}},i)},[e,n,t,u,r]);return{fetchConfig:o,createConfig:f}},lM=async({formId:e})=>{try{const t=await Fe({url:lt(U2,{formId:e}),method:xe.GET}),n=t==null?void 0:t.data;return n.enabled?a2(n.defaults):{}}catch(t){throw Ne.error(t),t}},V8=({formId:e})=>["Global","WriteForm","FormDefaults",e],DM=({formId:e,enabled:t})=>{const n=g.useRef(!1),u=g.useRef(void 0);e&&e!==u.current&&(n.current=!0,u.current=e);const r=at({queryKey:V8({formId:e}),queryFn:async()=>{const o=await lM({formId:e});return n.current=!1,o},refetchOnMount:!0,enabled:n.current&&t,staleTime:0});return{enabledRef:n,...r}},AM=new Set(["monday"]),dM=e=>!!e&&AM.has(e.toLowerCase()),Si=e=>!!e&&typeof e=="object"&&!Array.isArray(e)&&"emailLogSettings"in e,Bf=e=>e.logEmailsEnabled!==!1,pM=e=>({...e,perTaskLogging:!0,conversationAutoLogEnabled:!!e.autoLogEnabled,autoLogEnabled:!!e.autoLogEnabled&&(e.selectedEntities??[]).some(Bf)}),gM=e=>e.displayValue||(e.externalResourceId?`Task ${e.externalResourceId}`:"Untitled task"),z8="all",CM=(e,t)=>e.id||e.externalResourceId||`${e.entityType}::${e.displayValue}::${t}`,X8=(e,t)=>({...e.id?{id:e.id}:{},...e.externalResourceId?{externalResourceId:e.externalResourceId}:{},logEmailsEnabled:t}),hM=(e,t)=>{if(!Si(e))return null;const n=e.emailLoggingBlockedBy;if(n!=null&&n.name&&(!t||n.id!==t))return n.name;const{enabled:u,connectorId:r,connectorName:o}=e.emailLogSettings??{};return!u||!r||t&&r===t?null:o||"another app"},FM=(e,t)=>{if(!t||!Si(e))return;const n=(e.selectedEntities??[]).find(u=>u.externalResourceId!=null&&String(u.externalResourceId)===String(t));return n?Bf(n):void 0},mM=e=>e.some(n=>Ci(n.formFields))?e.map(n=>({...n,formFields:n.formFields.filter(u=>!(u.name===Ot&&u.type==="checkbox"))})):e,Z8=(e,t,n,u)=>Ci(n)?{...e,[Ot]:u?!1:!!t[Ot]}:e,EM=({isEdit:e,hasToggle:t,logEmailsDefault:n,blockedBy:u})=>!e&&t&&!!n&&!u,bM=e=>{if(!e||!(Ot in e))return e;const t={...e};return delete t[Ot],t},J8=e=>Array.isArray(e)&&e.length>0,xM=async({formId:e,conversationId:t,inboxIds:n})=>{try{const u=new URLSearchParams;if(t&&u.set("conversation_id",String(t)),J8(n))for(const f of n)u.append("inbox_id",String(f));const r=await Fe({url:lt(gk,{formId:e})+"?"+u.toString(),method:xe.GET}),o=r==null?void 0:r.data;if(!o.enabled)throw new Error("Form default values are not enabled");return a2(o.defaults,!0)}catch(u){throw Ne.error(u),u}},Y8=({formId:e,conversationId:t,inboxIds:n})=>["Global","WriteForm","FormDefaults",e,t,n],q8=({formId:e,conversationId:t,inboxIds:n,enabled:u,fetchOnMount:r=!0})=>{const o=g.useRef(!0),f=g.useRef();e!==f.current&&(o.current=!0,f.current=e);const i=at({queryKey:Y8({formId:e,conversationId:t,inboxIds:n}),queryFn:async()=>{const l=await xM({formId:e,conversationId:t,inboxIds:n});return o.current=!1,l},refetchOnMount:r,enabled:o.current&&!!e&&!!t&&J8(n)&&u,staleTime:0}),c=g.useMemo(()=>{if(Object.keys(i.data??{}).length===0&&i.isSuccess)return!0},[i.data,i.isSuccess]);return{enabledRef:o,isNudgeRequired:c,...i}},yM=async({formId:e,data:t})=>{try{return await Fe({url:lt(U2,{formId:e}),data:{defaults:t},method:xe.PUT}),{formId:e,data:t}}catch(n){throw Ne.error(n),n}},BM=({formId:e,conversationId:t,inboxIds:n,onSuccess:u,onError:r})=>{const o=Et();return fn({mutationFn:f=>yM({formId:e,data:f}),onSuccess:f=>{o.invalidateQueries({queryKey:V8({formId:e})}),o.invalidateQueries({queryKey:Y8({formId:e,conversationId:t,inboxIds:n})}),u==null||u(f),He({message:"Form defaults updated successfully",type:Mn})},onError:()=>{r==null||r(),He({message:"Failed to update form defaults",type:ft})}})},vM=({open:e,isEdit:t,formId:n,fields:u,connectorLogo:r,variables:o,customFormArgsEnabled:f,customFormArgsMap:i,title:c="Pre-fill fields",isLoading:l=!1,onSuccess:D,onClose:A})=>{const[m,b]=g.useState({}),{conversationId:C,currentSmIds:p}=g.useContext(tt),d=g.useMemo(()=>i??{},[i]),{data:h}=wv({formId:n,formData:m,argsMap:d,enabled:!!n&&!!f,delay:500}),{data:E,isLoading:F,enabledRef:x}=DM({formId:n,enabled:!t&&!!e&&!!n}),{mutate:B,isPending:S}=BM({formId:n,conversationId:C,inboxIds:p,onSuccess:T=>{x.current=!0,D==null||D(T)}}),v=g.useMemo(()=>u.filter(T=>T.name!==Ot),[u]),w=g.useMemo(()=>h!=null&&h.length?[...v,...h]:v,[v,h]);g.useEffect(()=>{E&&b(E)},[E]);const k=T=>{const M=w.map(_=>({name:_.name,type:_.isMultiSelect?"multi-select":_.type})),j=Pv(T,M);B(j)},L=async({args:T,pagination:M},{formId:j,fieldName:_})=>{const R=await J2({formId:j,fieldName:_},{pagination:M,args:T}),X=Array.isArray(R==null?void 0:R.data.data)?R.data.data:[];return{options:X,hasMore:!!X.length}},N=T=>{if(T.type==="multi-select"){b(j=>({...j,[T.name]:T.value}));return}const M=Kd(T.value)?T.value.value:T.value;b(j=>({...j,[T.name]:M}))};return a.jsx(xI,{open:e,defaultValues:E,formId:n,fields:w,connectorLogo:r,variables:o,title:`Pre-fill fields for ${c}`,isLoading:l||F,isSaving:S,fetchOptions:L,onSave:k,onClose:()=>A==null?void 0:A(),onCancel:()=>A==null?void 0:A(),onFieldChange:N})},wM=async({formId:e,args:t})=>{try{const n=await Fe({url:lt(dk,{formId:e}),data:{args:t},method:xe.POST});return(n==null?void 0:n.data).fieldList.map(r=>Af(r))}catch(n){throw Ne.error(n),n}},SM=({formId:e,args:t,enabled:n,delay:u=500})=>{const[r,o]=g.useState(t);g.useEffect(()=>{const i=setTimeout(()=>o(t),u);return()=>clearTimeout(i)},[t,u]);const f=JSON.stringify(r)===JSON.stringify(t);return at({queryKey:["Global","WriteForm","CustomFields",e,r],queryFn:()=>wM({formId:e,args:r}),refetchOnMount:!1,enabled:n&&f})},IM=async({formId:e,fieldName:t,args:n})=>{try{const u=await Fe({url:lt(pk,{formId:e,fieldName:t}),data:{args:n},method:xe.POST});return(u==null?void 0:u.data).fieldList.map(o=>Af(o,{loadOptionsOnFocus:!0,defaultOptions:!1}))}catch(u){throw Ne.error(u),u}},kM=({formId:e,specs:t,delay:n=500})=>{const[u,r]=g.useState(t);g.useEffect(()=>{const i=setTimeout(()=>r(t),n);return()=>clearTimeout(i)},[t,n]);const o=JSON.stringify(u)===JSON.stringify(t),f=g.useCallback(i=>{const c={};return u.forEach((l,D)=>{var m;const A=(m=i[D])==null?void 0:m.data;A!=null&&A.length&&(c[l.fieldName]=A)}),c},[u]);return dl({queries:u.map(i=>({queryKey:["Global","WriteForm","FieldCustomFields",e,i.fieldName,i.args],queryFn:()=>IM({formId:e,fieldName:i.fieldName,args:i.args}),refetchOnMount:!1,enabled:i.enabled&&o})),combine:f})},TM=(e,t,n)=>["Global","WriteForm","ConversationSummary",e,t,n];function LM(e,t,n,u=!0){return at({queryKey:TM(e,t,n),queryFn:async()=>{const r=new URLSearchParams;e&&r.set("conversation_id",String(e)),t&&r.set("sm_id",t),n&&r.set("max_chars",String(n));const o=await Fe({url:`${Ck}?${r.toString()}`,method:xe.GET}),f=(o==null?void 0:o.data)??{summary:""};if(!f.summary&&f.retryable)throw new Error("conversation summary temporarily unavailable");return f},enabled:u&&!!e&&!!t,staleTime:1/0,refetchOnWindowFocus:!1,retry:2,retryDelay:r=>1e3*2**r})}const Ii="{{conversation_summary}}",MM="Generating summary…",OM=e=>{if(!e)return[];const t=[];for(const n in e){const u=e[n];typeof u=="string"&&u.includes(Ii)&&t.push(n)}return t},U8=(e,t)=>e.split(Ii).join(t),NM=(e,t)=>e.filter(n=>{const u=t[n];return typeof u=="string"&&u.includes(Ii)}),jM=(e,t)=>{if(!t.length)return e;const n={...e};return t.forEach(u=>{const r=n[u];typeof r=="string"&&(n[u]=U8(r,""))}),n},QM=(e,t,n,u)=>new Promise((r,o)=>{const f=new XMLHttpRequest;f.open("PUT",e,!0),Object.entries(n??{}).forEach(([i,c])=>f.setRequestHeader(i,c)),f.upload&&(f.upload.onprogress=i=>{i.lengthComputable&&(u==null||u(Math.round(i.loaded/i.total*100)))}),f.onload=()=>{if(f.status>=200&&f.status<300){r();return}o(Object.assign(new Error(`Upload failed (${f.status})`),{status:f.status}))},f.onerror=()=>o(new Error("upload network error")),f.onabort=()=>o(new Error("upload aborted")),f.send(t)}),_M=async(e,t,n)=>{try{const u=await Fe({url:hk,data:{filename:e.name,size:e.size,...n!=null&&n.formId?{formId:n.formId}:{},...n!=null&&n.key?{key:n.key}:{}},method:xe.POST}),{attachmentId:r,presignedUrl:o,headers:f}=(u==null?void 0:u.data)??{};return await QM(o,e,f,t),{attachmentId:r,filename:e.name,size:e.size,mimeType:e.type||"application/octet-stream"}}catch(u){throw Ne.error(u),u}},PM=()=>fn({mutationFn:({file:e,onProgress:t,formId:n,key:u})=>_M(e,t,{formId:n,key:u})}),Qu="/v1/api",K8=`${Qu}/connector/conversation/:conversationId/email_log_status`,RM=`${Qu}/connector/conversation/:conversationId/entity_recommendations`,HM=`${Qu}/connector/conversation/:conversationId/retry_emails_log`,WM=`${Qu}/connector/conversation/:conversationId/validate_entity`,GM=`${Qu}/connectors/forms/:formId/search`,VM=`${Qu}/connector/conversation/:conversationId/log_emails`,zM=`${Qu}/connector/feedback/conversation/:conversationId`,$8=`${Qu}/connector/conversation/:conversationId/log_emails`,XM=e=>["Global","WriteForm","EmailLoggingState",e],ZM=({conversationId:e,enabled:t})=>at({queryKey:XM(e),queryFn:async()=>{const n=await Fe({url:lt(K8,{conversationId:e}),method:xe.GET});return(n==null?void 0:n.data)??null},enabled:t&&!!e,retry:!1,refetchOnWindowFocus:!1}),JM="Turn off to stop syncing this conversation.",YM="Turn on to continue syncing this conversation.",ki="Authentication failed",qM="Re-authenticate to resume syncing conversations to :connectorName.",UM="Reach out to your admin to reauthenticate :connectorName.",KM="Retry authentication to use this functionality and save in ':connectorName'",$M="Reach out to your admin to reauthenticate :connectorName",eO="Syncing this conversation to :connectorName. Refresh the page to see updates.",tO="Something went wrong while syncing this conversation. Please try again.",nO="No recommendations found",uO="Already synced email cannot be removed",rO="Log email as a comment",oO="In these tasks",aO="Tasks",sO="Sync replies as comments",fO="Sync paused",iO="Log emails as comments on :taskName",cO="Log emails as comments on all linked tasks",lO="Couldn't update email logging for this task. Please try again.",DO="https://cdn.hiverhq.com/connectors-module/assets/sync_conversation_preview.png",AO="Log this email thread to your CRM",dO="Automatically sync Hiver conversations with your CRM to unify and audit customer records easily.",ep="connector-agent_email-logger_welcomed",tp="connector-agent_email-logger_welcome_shown",pO="Tell us how we can improve",gO="Everything looks good",CO="Something is not working",hO="Please provide your feedback",np="Share your feedback",FO="Feedback submitted",mO="Failed to submit feedback",up="email-logging",EO=[{label:"Records are not accurate",value:"not_accurate"},{label:"Search is not working",value:"search_not_working"},{label:"Other",value:"other"}],Nt={email_logging_intro_popup_shown:"email_logging_intro_popup_shown",email_logging_intro_popup_continue_clicked:"email_logging_intro_popup_continue_clicked",email_logging_intro_popup_learn_more_clicked:"email_logging_intro_popup_learn_more_clicked",email_logging_log_config_saved:"email_logging_log_config_saved",email_logging_log_config_canceled:"email_logging_log_config_canceled",email_logging_auto_log_enabled:"email_logging_auto_log_enabled",email_logging_auto_log_disabled:"email_logging_auto_log_disabled",email_logging_search_initiated:"email_logging_search_initiated",email_logging_search_results_found:"email_logging_search_results_found",email_logging_search_result_selected:"email_logging_search_result_selected",email_logging_smart_suggestion_initiated:"email_logging_smart_suggestion_initiated",email_logging_smart_suggestion_selected:"email_logging_smart_suggestion_selected",email_logging_smart_suggestion_not_found:"email_logging_smart_suggestion_not_found",email_logging_failed_clicked:"email_logging_failed_clicked"},rp=async({payload:e,conversationId:t})=>{try{if(!t)throw new Error("Conversation ID is required to toggle task logging");const n=await Fe({url:lt($8,{conversationId:t}),data:e,method:xe.PATCH}),u=n==null?void 0:n.data;if((u==null?void 0:u.status)==="failed")throw new Error("Task logging update was refused");return u}catch(n){throw He({message:lO,type:ft}),Ne.error(n),n}},bO=({onSettled:e})=>fn({mutationFn:rp,onSettled:e}),Ti="connector-agent-email-log-status-changed",Li=e=>{typeof window>"u"||typeof window.dispatchEvent!="function"||window.dispatchEvent(new CustomEvent(Ti,{detail:{conversationId:e}}))},op=(e,t)=>{g.useEffect(()=>{if(typeof window>"u"||!e)return;const n=u=>{const r=u.detail,o=r==null?void 0:r.conversationId;(o==null||String(o)===String(e))&&t()};return window.addEventListener(Ti,n),()=>window.removeEventListener(Ti,n)},[e,t])},xO=s.styled("div")`
|
|
2936
|
+
`,Q8=({cardData:e,cardDataApiStatus:t,objectToLink:n,args:u})=>{const r=Gt(),[o,f]=g.useState(!1),[i,c]=g.useState(!0),{id:l="",cardTitle:D="",logoUrl:A}=e||{},m=t===Ae.LOADING,b=p=>{p.stopPropagation();const d=p.currentTarget.offsetWidth<p.currentTarget.scrollWidth;f(!!d)},C=p=>{r(oo({id:n,args:u,isRefresh:!0}));const d=p.currentTarget.querySelector("svg");d==null||d.classList.remove("selected"),setTimeout(()=>d==null?void 0:d.classList.add("selected"),1)};return a.jsxs(aM,{children:[a.jsxs(sM,{direction:"row",justifyContent:"space-between",children:[m?a.jsxs(s.Stack,{gap:"6px",direction:"row",children:[a.jsx(bn,{width:"16px",height:"24px"}),a.jsx(bn,{width:"100px",height:"24px"})]}):a.jsxs(iM,{children:[A&&a.jsx("img",{src:A,alt:D}),a.jsx(s.Tooltip,{title:o?D:"",children:a.jsx(s.Typography,{variant:"h4",onMouseOver:p=>b(p),onMouseLeave:p=>b(p),children:D})})]}),a.jsxs(s.Stack,{direction:"row",alignItems:"center",children:[i?a.jsx(s.Tooltip,{title:WD,placement:"bottom",children:a.jsx(Vr,{onClick:p=>C(p),children:a.jsx(d8,{"aria-hidden":!0})})}):null,a.jsx(s.Tooltip,{title:i?GD:X0,placement:"bottom",children:a.jsx(Vr,{onClick:()=>c(p=>!p),children:a.jsx(n1,{className:i?"":"hiver-up"})})})]})]}),a.jsx(l8,{id:l,cardTitle:D,specificCardData:{[l]:e},specificConnectorApiStatus:{[l]:t},isOpen:i})]})},_8={values:{},errors:{}},nn={SET_FIELD_VALUE:"SET_FIELD_VALUE",CLEAR_ERROR:"CLEAR_ERROR",SET_FIELD_ERROR:"SET_FIELD_ERROR",SET_FIELDS:"SET_FIELDS",SET_FORM_DEFAULTS:"SET_FORM_DEFAULTS",CLEAR_FIELDS:"CLEAR_FIELDS",RESET_STATE:"RESET_STATE"},cM=(e,t)=>{const{type:n,payload:u}=t;switch(n){case nn.SET_FIELD_VALUE:{if(!(u!=null&&u.value))return e;const{name:r,value:o}=u.value;return{...e,values:{...e.values,[r]:o}}}case nn.SET_FIELD_ERROR:{if(!(u!=null&&u.value))return e;const{name:r,value:o}=u.value;return typeof o=="boolean"||typeof o=="string"?{...e,errors:{...e.errors,[r]:o}}:e}case nn.CLEAR_ERROR:{if(!(u!=null&&u.value))return e;const{name:r}=u.value;return{...e,errors:{...e.errors,[r]:""}}}case nn.SET_FIELDS:{if(!(u!=null&&u.values))return e;const{values:r}=u;return{...e,values:r}}case nn.SET_FORM_DEFAULTS:{if(!(u!=null&&u.values))return e;const{values:r}=u,o={...e.errors};for(const f in r??{})r[f]&&delete o[f];return{...e,errors:o,values:{...e.values,...r}}}case nn.CLEAR_FIELDS:{const{fieldNames:r}=u??{};if(!Array.isArray(r))return e;const o={...e.values},f={...e.errors};for(const i of r)delete o[i],delete f[i];return{...e,values:o,errors:f}}case nn.RESET_STATE:return _8}return e},P8=()=>g.useReducer(cM,_8),R8=({state:e,dispatch:t,validations:n,dynamicFields:u})=>{const r=e.errors,o=(b,C)=>{t({type:nn.SET_FIELD_VALUE,payload:{value:{value:C,name:b}}})},f=g.useCallback(b=>{t({type:nn.SET_FORM_DEFAULTS,payload:{values:b}})},[t]),i=g.useCallback(()=>Object.keys(r).filter(C=>!!r[C]).length>0,[r]),c=b=>{b.stopPropagation();const{name:C,value:p}=(b==null?void 0:b.target)||{};o(C,p)},l=(b,C)=>{b.stopPropagation();const{name:p}=(b==null?void 0:b.target)||{};o(p,C)},D=(b,C)=>{o(b,C||"")},A=(b,C)=>{e.errors[b]!==C&&t({type:nn.SET_FIELD_ERROR,payload:{value:{name:b,value:C}}})},m=(b,C)=>{if(C){const p=C[b];p==null||p.forEach(d=>{var h;o(d,""),C[d]&&m(d,C),(h=n[d])!=null&&h.isRequired&&A(d,!0)})}};return g.useEffect(()=>{if(Array.isArray(u))return()=>{const b=u.map(C=>C.name);t({type:nn.CLEAR_FIELDS,payload:{fieldNames:b}})}},[u,t]),{setValue:o,setFormDefaults:f,isErrorInValidations:i,inputChangeHandler:c,checkboxChangeHandler:l,dateChangeHandler:D,handleValidationError:A,clearDependentFields:m}},H8=({formFields:e,formId:t,formState:n,appDispatch:u})=>e.reduce((r,o)=>{if(o.type!=="async-select"||!o.interfaceDetails)return r;const f=o.interfaceDetails,i={loadOptions:(c,l,D,A)=>{let m=f;o.searchInterfaceDetails&&typeof c=="string"&&c.trim().length>0&&!D&&(m=o.searchInterfaceDetails);const b=VI(n,m==null?void 0:m.args),C=Object.values((m==null?void 0:m.args)||{});if(b.length===C.length){u(gr({fieldName:o.name,formId:String(t),searchTerm:c,fieldConfig:o,interfaceId:m==null?void 0:m.id,pagination:m==null?void 0:m.pagination,callback:l,args:{...la(n,m==null?void 0:m.args),...la(n,m==null?void 0:m.optionalArgs)},isScrollToBottomEvent:D,controller:A}));return}return l([])}};return{...r,[o.name]:i}},{}),W8=({formFields:e,formId:t,formState:n,conversationId:u,appDispatch:r})=>e.reduce((o,f)=>{if(!f.createOptionInterfaceDetails)return o;const i=f.createOptionInterfaceDetails;return{...o,[f.name]:{createOption:(c,l)=>{var A,m;if(!c)return;const D={values:{name:f.name,value:c},errors:{}};r(Df({fieldName:f.name,formId:String(t),interfaceId:i.id,conversationId:u,label:c,callback:l,args:{...la(n,(A=f==null?void 0:f.interfaceDetails)==null?void 0:A.args),...la(n,(m=f==null?void 0:f.interfaceDetails)==null?void 0:m.optionalArgs)},createArgs:{...la(D,i.args)}}))}}}},{}),G8=({formFields:e,formState:t,formId:n,conversationId:u})=>{const r=Gt(),o=g.useMemo(()=>{if(e&&e.length){const i=H8({formFields:e,formId:n,formState:t,appDispatch:r});return e.reduce((l,D)=>{const A=D.columns;if(!A)return l;const m=H8({formFields:A,formId:n,formState:t,appDispatch:r});return{...l,[D.name]:{loadOptionsList:m}}},i)}return null},[e,t,n,r]),f=g.useMemo(()=>{const i=W8({formFields:e,formId:n,formState:t,conversationId:u,appDispatch:r});return e.reduce((l,D)=>{const A=D.columns;if(!A)return l;const m=W8({formFields:A,formId:n,formState:t,conversationId:u,appDispatch:r});return{...l,[D.name]:{createOptionList:m}}},i)},[e,n,t,u,r]);return{fetchConfig:o,createConfig:f}},lM=async({formId:e})=>{try{const t=await Fe({url:lt(U2,{formId:e}),method:xe.GET}),n=t==null?void 0:t.data;return n.enabled?a2(n.defaults):{}}catch(t){throw Ne.error(t),t}},V8=({formId:e})=>["Global","WriteForm","FormDefaults",e],DM=({formId:e,enabled:t})=>{const n=g.useRef(!1),u=g.useRef(void 0);e&&e!==u.current&&(n.current=!0,u.current=e);const r=at({queryKey:V8({formId:e}),queryFn:async()=>{const o=await lM({formId:e});return n.current=!1,o},refetchOnMount:!0,enabled:n.current&&t,staleTime:0});return{enabledRef:n,...r}},AM=new Set(["monday"]),dM=e=>!!e&&AM.has(e.toLowerCase()),Si=e=>!!e&&typeof e=="object"&&!Array.isArray(e)&&"emailLogSettings"in e,Bf=e=>e.logEmailsEnabled!==!1,pM=e=>({...e,perTaskLogging:!0,conversationAutoLogEnabled:!!e.autoLogEnabled,autoLogEnabled:!!e.autoLogEnabled&&(e.selectedEntities??[]).some(Bf)}),gM=e=>e.displayValue||(e.externalResourceId?`Task ${e.externalResourceId}`:"Untitled task"),z8="all",CM=(e,t)=>e.id||e.externalResourceId||`${e.entityType}::${e.displayValue}::${t}`,X8=(e,t)=>({...e.id?{id:e.id}:{},...e.externalResourceId?{externalResourceId:e.externalResourceId}:{},logEmailsEnabled:t}),hM=(e,t)=>{if(!Si(e))return null;const n=e.emailLoggingBlockedBy;if(n!=null&&n.name&&(!t||n.id!==t))return n.name;const{enabled:u,connectorId:r,connectorName:o}=e.emailLogSettings??{};return!u||!r||t&&r===t?null:o||"another app"},FM=(e,t)=>{if(!t||!Si(e))return;const n=(e.selectedEntities??[]).find(u=>u.externalResourceId!=null&&String(u.externalResourceId)===String(t));return n?e.autoLogEnabled!==!1&&Bf(n):void 0},mM=e=>e.some(n=>Ci(n.formFields))?e.map(n=>({...n,formFields:n.formFields.filter(u=>!(u.name===Ot&&u.type==="checkbox"))})):e,Z8=(e,t,n,u)=>Ci(n)?{...e,[Ot]:u?!1:!!t[Ot]}:e,EM=({isEdit:e,hasToggle:t,logEmailsDefault:n,blockedBy:u})=>!e&&t&&!!n&&!u,bM=e=>{if(!e||!(Ot in e))return e;const t={...e};return delete t[Ot],t},J8=e=>Array.isArray(e)&&e.length>0,xM=async({formId:e,conversationId:t,inboxIds:n})=>{try{const u=new URLSearchParams;if(t&&u.set("conversation_id",String(t)),J8(n))for(const f of n)u.append("inbox_id",String(f));const r=await Fe({url:lt(gk,{formId:e})+"?"+u.toString(),method:xe.GET}),o=r==null?void 0:r.data;if(!o.enabled)throw new Error("Form default values are not enabled");return a2(o.defaults,!0)}catch(u){throw Ne.error(u),u}},Y8=({formId:e,conversationId:t,inboxIds:n})=>["Global","WriteForm","FormDefaults",e,t,n],q8=({formId:e,conversationId:t,inboxIds:n,enabled:u,fetchOnMount:r=!0})=>{const o=g.useRef(!0),f=g.useRef();e!==f.current&&(o.current=!0,f.current=e);const i=at({queryKey:Y8({formId:e,conversationId:t,inboxIds:n}),queryFn:async()=>{const l=await xM({formId:e,conversationId:t,inboxIds:n});return o.current=!1,l},refetchOnMount:r,enabled:o.current&&!!e&&!!t&&J8(n)&&u,staleTime:0}),c=g.useMemo(()=>{if(Object.keys(i.data??{}).length===0&&i.isSuccess)return!0},[i.data,i.isSuccess]);return{enabledRef:o,isNudgeRequired:c,...i}},yM=async({formId:e,data:t})=>{try{return await Fe({url:lt(U2,{formId:e}),data:{defaults:t},method:xe.PUT}),{formId:e,data:t}}catch(n){throw Ne.error(n),n}},BM=({formId:e,conversationId:t,inboxIds:n,onSuccess:u,onError:r})=>{const o=Et();return fn({mutationFn:f=>yM({formId:e,data:f}),onSuccess:f=>{o.invalidateQueries({queryKey:V8({formId:e})}),o.invalidateQueries({queryKey:Y8({formId:e,conversationId:t,inboxIds:n})}),u==null||u(f),He({message:"Form defaults updated successfully",type:Mn})},onError:()=>{r==null||r(),He({message:"Failed to update form defaults",type:ft})}})},vM=({open:e,isEdit:t,formId:n,fields:u,connectorLogo:r,variables:o,customFormArgsEnabled:f,customFormArgsMap:i,title:c="Pre-fill fields",isLoading:l=!1,onSuccess:D,onClose:A})=>{const[m,b]=g.useState({}),{conversationId:C,currentSmIds:p}=g.useContext(tt),d=g.useMemo(()=>i??{},[i]),{data:h}=wv({formId:n,formData:m,argsMap:d,enabled:!!n&&!!f,delay:500}),{data:E,isLoading:F,enabledRef:x}=DM({formId:n,enabled:!t&&!!e&&!!n}),{mutate:B,isPending:S}=BM({formId:n,conversationId:C,inboxIds:p,onSuccess:T=>{x.current=!0,D==null||D(T)}}),v=g.useMemo(()=>u.filter(T=>T.name!==Ot),[u]),w=g.useMemo(()=>h!=null&&h.length?[...v,...h]:v,[v,h]);g.useEffect(()=>{E&&b(E)},[E]);const k=T=>{const M=w.map(_=>({name:_.name,type:_.isMultiSelect?"multi-select":_.type})),j=Pv(T,M);B(j)},L=async({args:T,pagination:M},{formId:j,fieldName:_})=>{const R=await J2({formId:j,fieldName:_},{pagination:M,args:T}),X=Array.isArray(R==null?void 0:R.data.data)?R.data.data:[];return{options:X,hasMore:!!X.length}},N=T=>{if(T.type==="multi-select"){b(j=>({...j,[T.name]:T.value}));return}const M=Kd(T.value)?T.value.value:T.value;b(j=>({...j,[T.name]:M}))};return a.jsx(xI,{open:e,defaultValues:E,formId:n,fields:w,connectorLogo:r,variables:o,title:`Pre-fill fields for ${c}`,isLoading:l||F,isSaving:S,fetchOptions:L,onSave:k,onClose:()=>A==null?void 0:A(),onCancel:()=>A==null?void 0:A(),onFieldChange:N})},wM=async({formId:e,args:t})=>{try{const n=await Fe({url:lt(dk,{formId:e}),data:{args:t},method:xe.POST});return(n==null?void 0:n.data).fieldList.map(r=>Af(r))}catch(n){throw Ne.error(n),n}},SM=({formId:e,args:t,enabled:n,delay:u=500})=>{const[r,o]=g.useState(t);g.useEffect(()=>{const i=setTimeout(()=>o(t),u);return()=>clearTimeout(i)},[t,u]);const f=JSON.stringify(r)===JSON.stringify(t);return at({queryKey:["Global","WriteForm","CustomFields",e,r],queryFn:()=>wM({formId:e,args:r}),refetchOnMount:!1,enabled:n&&f})},IM=async({formId:e,fieldName:t,args:n})=>{try{const u=await Fe({url:lt(pk,{formId:e,fieldName:t}),data:{args:n},method:xe.POST});return(u==null?void 0:u.data).fieldList.map(o=>Af(o,{loadOptionsOnFocus:!0,defaultOptions:!1}))}catch(u){throw Ne.error(u),u}},kM=({formId:e,specs:t,delay:n=500})=>{const[u,r]=g.useState(t);g.useEffect(()=>{const i=setTimeout(()=>r(t),n);return()=>clearTimeout(i)},[t,n]);const o=JSON.stringify(u)===JSON.stringify(t),f=g.useCallback(i=>{const c={};return u.forEach((l,D)=>{var m;const A=(m=i[D])==null?void 0:m.data;A!=null&&A.length&&(c[l.fieldName]=A)}),c},[u]);return dl({queries:u.map(i=>({queryKey:["Global","WriteForm","FieldCustomFields",e,i.fieldName,i.args],queryFn:()=>IM({formId:e,fieldName:i.fieldName,args:i.args}),refetchOnMount:!1,enabled:i.enabled&&o})),combine:f})},TM=(e,t,n)=>["Global","WriteForm","ConversationSummary",e,t,n];function LM(e,t,n,u=!0){return at({queryKey:TM(e,t,n),queryFn:async()=>{const r=new URLSearchParams;e&&r.set("conversation_id",String(e)),t&&r.set("sm_id",t),n&&r.set("max_chars",String(n));const o=await Fe({url:`${Ck}?${r.toString()}`,method:xe.GET}),f=(o==null?void 0:o.data)??{summary:""};if(!f.summary&&f.retryable)throw new Error("conversation summary temporarily unavailable");return f},enabled:u&&!!e&&!!t,staleTime:1/0,refetchOnWindowFocus:!1,retry:2,retryDelay:r=>1e3*2**r})}const Ii="{{conversation_summary}}",MM="Generating summary…",OM=e=>{if(!e)return[];const t=[];for(const n in e){const u=e[n];typeof u=="string"&&u.includes(Ii)&&t.push(n)}return t},U8=(e,t)=>e.split(Ii).join(t),NM=(e,t)=>e.filter(n=>{const u=t[n];return typeof u=="string"&&u.includes(Ii)}),jM=(e,t)=>{if(!t.length)return e;const n={...e};return t.forEach(u=>{const r=n[u];typeof r=="string"&&(n[u]=U8(r,""))}),n},QM=(e,t,n,u)=>new Promise((r,o)=>{const f=new XMLHttpRequest;f.open("PUT",e,!0),Object.entries(n??{}).forEach(([i,c])=>f.setRequestHeader(i,c)),f.upload&&(f.upload.onprogress=i=>{i.lengthComputable&&(u==null||u(Math.round(i.loaded/i.total*100)))}),f.onload=()=>{if(f.status>=200&&f.status<300){r();return}o(Object.assign(new Error(`Upload failed (${f.status})`),{status:f.status}))},f.onerror=()=>o(new Error("upload network error")),f.onabort=()=>o(new Error("upload aborted")),f.send(t)}),_M=async(e,t,n)=>{try{const u=await Fe({url:hk,data:{filename:e.name,size:e.size,...n!=null&&n.formId?{formId:n.formId}:{},...n!=null&&n.key?{key:n.key}:{}},method:xe.POST}),{attachmentId:r,presignedUrl:o,headers:f}=(u==null?void 0:u.data)??{};return await QM(o,e,f,t),{attachmentId:r,filename:e.name,size:e.size,mimeType:e.type||"application/octet-stream"}}catch(u){throw Ne.error(u),u}},PM=()=>fn({mutationFn:({file:e,onProgress:t,formId:n,key:u})=>_M(e,t,{formId:n,key:u})}),Qu="/v1/api",K8=`${Qu}/connector/conversation/:conversationId/email_log_status`,RM=`${Qu}/connector/conversation/:conversationId/entity_recommendations`,HM=`${Qu}/connector/conversation/:conversationId/retry_emails_log`,WM=`${Qu}/connector/conversation/:conversationId/validate_entity`,GM=`${Qu}/connectors/forms/:formId/search`,VM=`${Qu}/connector/conversation/:conversationId/log_emails`,zM=`${Qu}/connector/feedback/conversation/:conversationId`,$8=`${Qu}/connector/conversation/:conversationId/log_emails`,XM=e=>["Global","WriteForm","EmailLoggingState",e],ZM=({conversationId:e,enabled:t})=>at({queryKey:XM(e),queryFn:async()=>{const n=await Fe({url:lt(K8,{conversationId:e}),method:xe.GET});return(n==null?void 0:n.data)??null},enabled:t&&!!e,retry:!1,refetchOnWindowFocus:!1}),JM="Turn off to stop syncing this conversation.",YM="Turn on to continue syncing this conversation.",ki="Authentication failed",qM="Re-authenticate to resume syncing conversations to :connectorName.",UM="Reach out to your admin to reauthenticate :connectorName.",KM="Retry authentication to use this functionality and save in ':connectorName'",$M="Reach out to your admin to reauthenticate :connectorName",eO="Syncing this conversation to :connectorName. Refresh the page to see updates.",tO="Something went wrong while syncing this conversation. Please try again.",nO="No recommendations found",uO="Already synced email cannot be removed",rO="Log email as a comment",oO="In these tasks",aO="Tasks",sO="Sync replies as comments",fO="Sync paused",iO="Log emails as comments on :taskName",cO="Log emails as comments on all linked tasks",lO="Couldn't update email logging for this task. Please try again.",DO="https://cdn.hiverhq.com/connectors-module/assets/sync_conversation_preview.png",AO="Log this email thread to your CRM",dO="Automatically sync Hiver conversations with your CRM to unify and audit customer records easily.",ep="connector-agent_email-logger_welcomed",tp="connector-agent_email-logger_welcome_shown",pO="Tell us how we can improve",gO="Everything looks good",CO="Something is not working",hO="Please provide your feedback",np="Share your feedback",FO="Feedback submitted",mO="Failed to submit feedback",up="email-logging",EO=[{label:"Records are not accurate",value:"not_accurate"},{label:"Search is not working",value:"search_not_working"},{label:"Other",value:"other"}],Nt={email_logging_intro_popup_shown:"email_logging_intro_popup_shown",email_logging_intro_popup_continue_clicked:"email_logging_intro_popup_continue_clicked",email_logging_intro_popup_learn_more_clicked:"email_logging_intro_popup_learn_more_clicked",email_logging_log_config_saved:"email_logging_log_config_saved",email_logging_log_config_canceled:"email_logging_log_config_canceled",email_logging_auto_log_enabled:"email_logging_auto_log_enabled",email_logging_auto_log_disabled:"email_logging_auto_log_disabled",email_logging_search_initiated:"email_logging_search_initiated",email_logging_search_results_found:"email_logging_search_results_found",email_logging_search_result_selected:"email_logging_search_result_selected",email_logging_smart_suggestion_initiated:"email_logging_smart_suggestion_initiated",email_logging_smart_suggestion_selected:"email_logging_smart_suggestion_selected",email_logging_smart_suggestion_not_found:"email_logging_smart_suggestion_not_found",email_logging_failed_clicked:"email_logging_failed_clicked"},rp=async({payload:e,conversationId:t})=>{try{if(!t)throw new Error("Conversation ID is required to toggle task logging");const n=await Fe({url:lt($8,{conversationId:t}),data:e,method:xe.PATCH}),u=n==null?void 0:n.data;if((u==null?void 0:u.status)==="failed")throw new Error("Task logging update was refused");return u}catch(n){throw He({message:lO,type:ft}),Ne.error(n),n}},bO=({onSettled:e})=>fn({mutationFn:rp,onSettled:e}),Ti="connector-agent-email-log-status-changed",Li=e=>{typeof window>"u"||typeof window.dispatchEvent!="function"||window.dispatchEvent(new CustomEvent(Ti,{detail:{conversationId:e}}))},op=(e,t)=>{g.useEffect(()=>{if(typeof window>"u"||!e)return;const n=u=>{const r=u.detail,o=r==null?void 0:r.conversationId;(o==null||String(o)===String(e))&&t()};return window.addEventListener(Ti,n),()=>window.removeEventListener(Ti,n)},[e,t])},xO=s.styled("div")`
|
|
2937
2937
|
width: 100%;
|
|
2938
2938
|
/* FormWrapper already spaces children 24px; 24 + 16 = the 40px gap above the divider. */
|
|
2939
2939
|
margin-top: 16px;
|