@strapi/admin 4.10.6 → 4.10.7

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.
Files changed (96) hide show
  1. package/admin/src/hooks/index.js +1 -1
  2. package/admin/src/hooks/useAdminUsers/__mocks__/index.js +5 -0
  3. package/admin/src/hooks/useAdminUsers/index.js +1 -0
  4. package/admin/src/hooks/useAdminUsers/useAdminUsers.js +38 -0
  5. package/admin/src/hooks/useContentTypes/__mocks__/index.js +6 -0
  6. package/admin/src/hooks/useContentTypes/index.js +1 -0
  7. package/admin/src/hooks/useContentTypes/useContentTypes.js +45 -0
  8. package/admin/src/pages/HomePage/index.js +3 -2
  9. package/admin/src/pages/MarketplacePage/components/NpmPackageCard/InstallPluginButton.js +12 -8
  10. package/admin/src/pages/SettingsPage/components/Tokens/TokenBox/index.js +28 -26
  11. package/admin/src/pages/SettingsPage/pages/Users/EditPage/index.js +36 -26
  12. package/admin/src/pages/SettingsPage/pages/Users/EditPage/utils/api.js +1 -8
  13. package/admin/src/pages/SettingsPage/pages/Users/ListPage/ModalForm/index.js +6 -7
  14. package/admin/src/pages/SettingsPage/pages/Users/ListPage/index.js +54 -63
  15. package/admin/src/pages/SettingsPage/pages/Users/components/MagicLink/MagicLinkWrapper.js +11 -9
  16. package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/index.js +2 -2
  17. package/admin/src/translations/ar.json +684 -1
  18. package/admin/src/translations/en.json +1 -0
  19. package/build/{1657.ca8562dd.chunk.js → 1657.3f2b2c11.chunk.js} +1 -9
  20. package/build/3081.7e9329cb.chunk.js +105 -0
  21. package/build/462.6f8cbd19.chunk.js +71 -0
  22. package/build/5542.64b623c9.chunk.js +63 -0
  23. package/build/5563.79950369.chunk.js +79 -0
  24. package/build/617.1591eeb0.chunk.js +155 -0
  25. package/build/6970.6a329e15.chunk.js +1 -0
  26. package/build/7259.5cc67413.chunk.js +1 -0
  27. package/build/9036.f7ce35cc.chunk.js +211 -0
  28. package/build/{Admin-authenticatedApp.0318dfb3.chunk.js → Admin-authenticatedApp.ad8a8a15.chunk.js} +1 -1
  29. package/build/{Admin_homePage.e15dcf28.chunk.js → Admin_homePage.94dc81b1.chunk.js} +16 -16
  30. package/build/Admin_marketplace.1b0c3d3b.chunk.js +55 -0
  31. package/build/Admin_pluginsPage.a28b96d5.chunk.js +6 -0
  32. package/build/{Admin_profilePage.1687246a.chunk.js → Admin_profilePage.a8fa3a56.chunk.js} +1 -1
  33. package/build/Admin_settingsPage.ee76d19e.chunk.js +79 -0
  34. package/build/admin-app.bd209f08.chunk.js +63 -0
  35. package/build/{admin-edit-roles-page.02c3b136.chunk.js → admin-edit-roles-page.0d12b741.chunk.js} +3 -3
  36. package/build/admin-edit-users.f9ce7844.chunk.js +10 -0
  37. package/build/admin-roles-list.af53b372.chunk.js +23 -0
  38. package/build/admin-users.0fc77b35.chunk.js +26 -0
  39. package/build/ar-json.f530bc3f.chunk.js +1 -0
  40. package/build/audit-logs-settings-page.dc07596e.chunk.js +121 -0
  41. package/build/{content-manager.cd71cb6e.chunk.js → content-manager.70548048.chunk.js} +1 -1
  42. package/build/content-type-builder-list-view.26aab6f3.chunk.js +215 -0
  43. package/build/email-settings-page.63f269ff.chunk.js +11 -0
  44. package/build/{en-json.d965e364.chunk.js → en-json.ba3290b8.chunk.js} +1 -1
  45. package/build/i18n-settings-page.f84c4782.chunk.js +114 -0
  46. package/build/index.html +1 -1
  47. package/build/main.4016f4ad.js +2630 -0
  48. package/build/review-workflows-settings.56cab253.chunk.js +61 -0
  49. package/build/{runtime~main.0201a49b.js → runtime~main.d7e177e4.js} +2 -2
  50. package/build/{sso-settings-page.c9d7c8df.chunk.js → sso-settings-page.265e3d72.chunk.js} +1 -1
  51. package/build/upload-settings.1d187578.chunk.js +14 -0
  52. package/build/upload.bc340679.chunk.js +26 -0
  53. package/build/users-advanced-settings-page.7b4bf63a.chunk.js +9 -0
  54. package/build/users-email-settings-page.035a026c.chunk.js +24 -0
  55. package/build/users-providers-settings-page.6873dce9.chunk.js +29 -0
  56. package/build/{webhook-edit-page.cb2cf1a5.chunk.js → webhook-edit-page.ddd5963d.chunk.js} +13 -13
  57. package/build/webhook-list-page.0861d3e9.chunk.js +63 -0
  58. package/ee/admin/content-manager/pages/EditView/InformationBox/InformationBoxEE.js +1 -2
  59. package/ee/admin/pages/SettingsPage/pages/AuditLogs/ListView/hooks/useAuditLogsData.js +36 -28
  60. package/ee/admin/pages/SettingsPage/pages/AuditLogs/ListView/utils/getDisplayedFilters.js +1 -1
  61. package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/ReviewWorkflows.js +3 -3
  62. package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/hooks/useReviewWorkflows.js +32 -21
  63. package/ee/server/services/audit-logs.js +5 -1
  64. package/package.json +16 -17
  65. package/webpack.alias.js +0 -1
  66. package/admin/src/hooks/useModels/index.js +0 -58
  67. package/admin/src/hooks/useModels/reducer.js +0 -45
  68. package/admin/src/pages/SettingsPage/pages/Users/ListPage/utils/api.js +0 -20
  69. package/build/3081.c2cdfac8.chunk.js +0 -108
  70. package/build/3816.60f858cf.chunk.js +0 -211
  71. package/build/462.a073ff1f.chunk.js +0 -71
  72. package/build/5542.002522eb.chunk.js +0 -71
  73. package/build/5563.2c8334ef.chunk.js +0 -79
  74. package/build/617.87b2fe96.chunk.js +0 -155
  75. package/build/6970.36d3ffff.chunk.js +0 -1
  76. package/build/7259.116a9960.chunk.js +0 -1
  77. package/build/Admin_marketplace.f446ba2b.chunk.js +0 -55
  78. package/build/Admin_pluginsPage.7df6b5a9.chunk.js +0 -6
  79. package/build/Admin_settingsPage.f8c46a9a.chunk.js +0 -79
  80. package/build/admin-app.6d48536c.chunk.js +0 -63
  81. package/build/admin-edit-users.49363035.chunk.js +0 -10
  82. package/build/admin-roles-list.a323aa9f.chunk.js +0 -31
  83. package/build/admin-users.69f4900a.chunk.js +0 -34
  84. package/build/ar-json.39e54aba.chunk.js +0 -1
  85. package/build/audit-logs-settings-page.482909d7.chunk.js +0 -129
  86. package/build/content-type-builder-list-view.1e821eb9.chunk.js +0 -215
  87. package/build/email-settings-page.dba83275.chunk.js +0 -11
  88. package/build/i18n-settings-page.55628f74.chunk.js +0 -114
  89. package/build/main.adab8b96.js +0 -2630
  90. package/build/review-workflows-settings.26409ce4.chunk.js +0 -61
  91. package/build/upload-settings.63d99bf5.chunk.js +0 -14
  92. package/build/upload.c50d8c7a.chunk.js +0 -34
  93. package/build/users-advanced-settings-page.4f49ca57.chunk.js +0 -9
  94. package/build/users-email-settings-page.d2429d0a.chunk.js +0 -24
  95. package/build/users-providers-settings-page.50c5ba27.chunk.js +0 -29
  96. package/build/webhook-list-page.e2fca9f8.chunk.js +0 -71
@@ -1,4 +1,4 @@
1
- "use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[5162],{55734:function(G,C,t){t.d(C,{Z:function(){return ge}});var e=t(32735),o=t(24989),A=t(27649),M=t(20108),p=t(53038),k=t(67927),me=t(60216),i=t.n(me),ne=t(2438),re=t(66456),Ee=t(29439),pe=t(82055),m=t(87933),S=t(41415),fe=t(17e3),j=t(72850),J=t(15335),D=t(5803),Y=t(10369),I=t(92802),$=t(67879),se=t(28847),O=t(49372),le=t(8471),ve=t(8284),be=t(82884),Ce=t(23940),Me=t.n(Ce);const W=({disabledEvents:n,name:r,events:s,inputValue:l,handleChange:c,handleChangeAll:f})=>{const d=s.filter(h=>!n.includes(h)),u=l.length===d.length,E=l.length>0,x=({target:{name:h}})=>{f({target:{name:h,value:!u}})};return e.createElement("tr",null,e.createElement("td",null,e.createElement(ve.X,{indeterminate:E&&!u,"aria-label":"Select all entries",name:r,onChange:x,value:u},Me()(r))),s.map(h=>e.createElement("td",{key:h},e.createElement(be.C,{disabled:n.includes(h),"aria-label":h,name:h,value:l.includes(h),onValueChange:v=>c({target:{name:h,value:v}})}))))};W.defaultProps={disabledEvents:[],events:[],inputValue:[],handleChange(){},handleChangeAll(){}},W.propTypes={disabledEvents:i().array,events:i().array,inputValue:i().array,handleChange:i().func,handleChangeAll:i().func,name:i().string.isRequired};var a=W;const P=n=>n.reduce((r,s)=>{const l=s.split(".")[0];return r[l]||(r[l]=[]),r[l].push(s),r},{}),U=le.ZP.table`
1
+ "use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[5162],{55734:function(G,b,t){t.d(b,{Z:function(){return ge}});var e=t(32735),o=t(24989),A=t(27649),M=t(20108),p=t(53038),j=t(70166),me=t(60216),i=t.n(me),ne=t(2438),re=t(66456),Ee=t(29439),pe=t(82055),m=t(87933),S=t(41415),fe=t(17e3),k=t(72850),J=t(15335),D=t(5803),Y=t(10369),I=t(92802),$=t(67879),se=t(28847),O=t(49372),le=t(8471),ve=t(8284),Ce=t(82884),be=t(23940),Me=t.n(be);const W=({disabledEvents:n,name:r,events:s,inputValue:l,handleChange:c,handleChangeAll:f})=>{const d=s.filter(h=>!n.includes(h)),u=l.length===d.length,E=l.length>0,x=({target:{name:h}})=>{f({target:{name:h,value:!u}})};return e.createElement("tr",null,e.createElement("td",null,e.createElement(ve.X,{indeterminate:E&&!u,"aria-label":"Select all entries",name:r,onChange:x,value:u},Me()(r))),s.map(h=>e.createElement("td",{key:h},e.createElement(Ce.C,{disabled:n.includes(h),"aria-label":h,name:h,value:l.includes(h),onValueChange:v=>c({target:{name:h,value:v}})}))))};W.defaultProps={disabledEvents:[],events:[],inputValue:[],handleChange(){},handleChangeAll(){}},W.propTypes={disabledEvents:i().array,events:i().array,inputValue:i().array,handleChange:i().func,handleChangeAll:i().func,name:i().string.isRequired};var a=W;const y=n=>n.reduce((r,s)=>{const l=s.split(".")[0];return r[l]||(r[l]=[]),r[l].push(s),r},{}),U=le.ZP.table`
2
2
  td {
3
3
  height: ${52/16}rem;
4
4
  width: 10%;
@@ -13,14 +13,14 @@
13
13
  tbody tr td:first-child {
14
14
  padding-left: ${({theme:n})=>n.spaces[7]};
15
15
  }
16
- `,Z={headers:{default:[{id:"Settings.webhooks.events.create",defaultMessage:"Create"},{id:"Settings.webhooks.events.update",defaultMessage:"Update"},{id:"app.utils.delete",defaultMessage:"Delete"}],draftAndPublish:[{id:"Settings.webhooks.events.create",defaultMessage:"Create"},{id:"Settings.webhooks.events.update",defaultMessage:"Update"},{id:"app.utils.delete",defaultMessage:"Delete"},{id:"app.utils.publish",defaultMessage:"Publish"},{id:"app.utils.unpublish",defaultMessage:"Unpublish"}]},events:{default:{entry:["entry.create","entry.update","entry.delete"],media:["media.create","media.update","media.delete"]},draftAndPublish:{entry:["entry.create","entry.update","entry.delete","entry.publish","entry.unpublish"],media:["media.create","media.update","media.delete"]}}},K=({isDraftAndPublish:n})=>{const r=n?Z.headers.draftAndPublish:Z.headers.default,s=n?Z.events.draftAndPublish:Z.events.default,{formatMessage:l}=(0,$.Z)(),{values:c,handleChange:f}=(0,I.u6)(),d="events",u=c.events,E=[],x=P(u),h=({target:{name:g,value:B}})=>{let R=new Set(u);B?R.add(g):R.delete(g),f({target:{name:d,value:Array.from(R)}})},v=({target:{name:g,value:B}})=>{let R=new Set(u);B?s[g].forEach(L=>{E.includes(L)||R.add(L)}):s[g].forEach(L=>R.delete(L)),f({target:{name:d,value:Array.from(R)}})};return e.createElement(m.k,{direction:"column",alignItems:"stretch",gap:1},e.createElement(se.Q,null,l({id:"Settings.webhooks.form.events",defaultMessage:"Events"})),e.createElement(U,null,e.createElement("thead",null,e.createElement("tr",null,e.createElement("td",null),r.map(g=>g==="app.utils.publish"||g==="app.utils.unpublish"?e.createElement("td",{key:g.id,title:l({id:"Settings.webhooks.event.publish-tooltip",defaultMessage:"This event only exists for content with draft & publish enabled"})},e.createElement(O.Z,{variant:"sigma",textColor:"neutral600"},l(g))):e.createElement("td",{key:g.id},e.createElement(O.Z,{variant:"sigma",textColor:"neutral600"},l(g)))))),e.createElement("tbody",null,Object.keys(s).map(g=>e.createElement(a,{disabledEvents:E,key:g,name:g,events:s[g],inputValue:x[g],handleChange:h,handleChangeAll:v})))))};K.propTypes={isDraftAndPublish:i().bool.isRequired};var q=K,Pe=t(19406),ye=t(7563),xe=t(21428),ee=t(90333),ie=["A-IM","Accept","Accept-Charset","Accept-Encoding","Accept-Language","Accept-Datetime","Access-Control-Request-Method","Access-Control-Request-Headers","Authorization","Cache-Control","Connection","Content-Length","Content-Type","Cookie","Date","Expect","Forwarded","From","Host","If-Match","If-Modified-Since","If-None-Match","If-Range","If-Unmodified-Since","Max-Forwards","Origin","Pragma","Proxy-Authorization","Range","Referer","TE","User-Agent","Upgrade","Via","Warning"];const te=({name:n,onChange:r,value:s,...l})=>{const[c,f]=(0,e.useState)(s?[...ie,s]:ie),d=E=>{r({target:{name:n,value:E}})},u=E=>{f(x=>[...x,E]),r({target:{name:n,value:E}})};return e.createElement(xe.XU,{...l,onChange:d,onCreateOption:u,placeholder:"",value:s},c.map(E=>e.createElement(ee.O,{value:E,key:E},E)))};te.defaultProps={value:void 0},te.propTypes={name:i().string.isRequired,onChange:i().func.isRequired,value:i().string};var Ie=te,Oe=()=>{const{formatMessage:n}=(0,$.Z)(),{values:r,errors:s}=(0,I.u6)();return e.createElement(m.k,{direction:"column",alignItems:"stretch",gap:1},e.createElement(se.Q,null,n({id:"Settings.webhooks.form.headers",defaultMessage:"Headers"})),e.createElement(j.x,{padding:8,background:"neutral100",hasRadius:!0},e.createElement(I.F2,{validateOnChange:!1,name:"headers",render:({push:l,remove:c})=>e.createElement(J.r,{gap:4},r.headers?.map((f,d)=>e.createElement(e.Fragment,{key:d},e.createElement(D.P,{col:6},e.createElement(I.gN,{as:Ie,name:`headers.${d}.key`,"aria-label":`row ${d+1} key`,label:n({id:"Settings.webhooks.key",defaultMessage:"Key"}),error:s.headers?.[d]?.key&&n({id:s.headers[d]?.key,defaultMessage:s.headers[d]?.key})})),e.createElement(D.P,{col:6},e.createElement(m.k,{alignItems:"flex-end"},e.createElement(j.x,{style:{flex:1}},e.createElement(I.gN,{as:Y.o,"aria-label":`row ${d+1} value`,label:n({id:"Settings.webhooks.value",defaultMessage:"Value"}),name:`headers.${d}.value`,error:s.headers?.[d]?.value&&n({id:s.headers[d]?.value,defaultMessage:s.headers[d]?.value})})),e.createElement(m.k,{paddingLeft:2,style:{alignSelf:"center"},paddingTop:s.headers?.[d]?.value?0:5},e.createElement(o.fG,{onClick:()=>r.headers.length!==1&&c(d),label:n({id:"Settings.webhooks.headers.remove",defaultMessage:"Remove header row {number}"},{number:d+1})})))))),e.createElement(D.P,{col:12},e.createElement(ye.A,{type:"button",onClick:()=>{l({key:"",value:""})},startIcon:e.createElement(Pe.Z,null)},n({id:"Settings.webhooks.create.header",defaultMessage:"Create new header"}))))})))},Re=t(27169),F=t(35331);const Q=le.ZP.svg(({theme:n,color:r})=>`
16
+ `,Z={headers:{default:[{id:"Settings.webhooks.events.create",defaultMessage:"Create"},{id:"Settings.webhooks.events.update",defaultMessage:"Update"},{id:"app.utils.delete",defaultMessage:"Delete"}],draftAndPublish:[{id:"Settings.webhooks.events.create",defaultMessage:"Create"},{id:"Settings.webhooks.events.update",defaultMessage:"Update"},{id:"app.utils.delete",defaultMessage:"Delete"},{id:"app.utils.publish",defaultMessage:"Publish"},{id:"app.utils.unpublish",defaultMessage:"Unpublish"}]},events:{default:{entry:["entry.create","entry.update","entry.delete"],media:["media.create","media.update","media.delete"]},draftAndPublish:{entry:["entry.create","entry.update","entry.delete","entry.publish","entry.unpublish"],media:["media.create","media.update","media.delete"]}}},K=({isDraftAndPublish:n})=>{const r=n?Z.headers.draftAndPublish:Z.headers.default,s=n?Z.events.draftAndPublish:Z.events.default,{formatMessage:l}=(0,$.Z)(),{values:c,handleChange:f}=(0,I.u6)(),d="events",u=c.events,E=[],x=y(u),h=({target:{name:g,value:B}})=>{let R=new Set(u);B?R.add(g):R.delete(g),f({target:{name:d,value:Array.from(R)}})},v=({target:{name:g,value:B}})=>{let R=new Set(u);B?s[g].forEach(L=>{E.includes(L)||R.add(L)}):s[g].forEach(L=>R.delete(L)),f({target:{name:d,value:Array.from(R)}})};return e.createElement(m.k,{direction:"column",alignItems:"stretch",gap:1},e.createElement(se.Q,null,l({id:"Settings.webhooks.form.events",defaultMessage:"Events"})),e.createElement(U,null,e.createElement("thead",null,e.createElement("tr",null,e.createElement("td",null),r.map(g=>g==="app.utils.publish"||g==="app.utils.unpublish"?e.createElement("td",{key:g.id,title:l({id:"Settings.webhooks.event.publish-tooltip",defaultMessage:"This event only exists for content with draft & publish enabled"})},e.createElement(O.Z,{variant:"sigma",textColor:"neutral600"},l(g))):e.createElement("td",{key:g.id},e.createElement(O.Z,{variant:"sigma",textColor:"neutral600"},l(g)))))),e.createElement("tbody",null,Object.keys(s).map(g=>e.createElement(a,{disabledEvents:E,key:g,name:g,events:s[g],inputValue:x[g],handleChange:h,handleChangeAll:v})))))};K.propTypes={isDraftAndPublish:i().bool.isRequired};var q=K,ye=t(19406),Pe=t(7563),xe=t(21428),ee=t(90333),ie=["A-IM","Accept","Accept-Charset","Accept-Encoding","Accept-Language","Accept-Datetime","Access-Control-Request-Method","Access-Control-Request-Headers","Authorization","Cache-Control","Connection","Content-Length","Content-Type","Cookie","Date","Expect","Forwarded","From","Host","If-Match","If-Modified-Since","If-None-Match","If-Range","If-Unmodified-Since","Max-Forwards","Origin","Pragma","Proxy-Authorization","Range","Referer","TE","User-Agent","Upgrade","Via","Warning"];const te=({name:n,onChange:r,value:s,...l})=>{const[c,f]=(0,e.useState)(s?[...ie,s]:ie),d=E=>{r({target:{name:n,value:E}})},u=E=>{f(x=>[...x,E]),r({target:{name:n,value:E}})};return e.createElement(xe.XU,{...l,onChange:d,onCreateOption:u,placeholder:"",value:s},c.map(E=>e.createElement(ee.O,{value:E,key:E},E)))};te.defaultProps={value:void 0},te.propTypes={name:i().string.isRequired,onChange:i().func.isRequired,value:i().string};var Ie=te,Oe=()=>{const{formatMessage:n}=(0,$.Z)(),{values:r,errors:s}=(0,I.u6)();return e.createElement(m.k,{direction:"column",alignItems:"stretch",gap:1},e.createElement(se.Q,null,n({id:"Settings.webhooks.form.headers",defaultMessage:"Headers"})),e.createElement(k.x,{padding:8,background:"neutral100",hasRadius:!0},e.createElement(I.F2,{validateOnChange:!1,name:"headers",render:({push:l,remove:c})=>e.createElement(J.r,{gap:4},r.headers?.map((f,d)=>e.createElement(e.Fragment,{key:d},e.createElement(D.P,{col:6},e.createElement(I.gN,{as:Ie,name:`headers.${d}.key`,"aria-label":`row ${d+1} key`,label:n({id:"Settings.webhooks.key",defaultMessage:"Key"}),error:s.headers?.[d]?.key&&n({id:s.headers[d]?.key,defaultMessage:s.headers[d]?.key})})),e.createElement(D.P,{col:6},e.createElement(m.k,{alignItems:"flex-end"},e.createElement(k.x,{style:{flex:1}},e.createElement(I.gN,{as:Y.o,"aria-label":`row ${d+1} value`,label:n({id:"Settings.webhooks.value",defaultMessage:"Value"}),name:`headers.${d}.value`,error:s.headers?.[d]?.value&&n({id:s.headers[d]?.value,defaultMessage:s.headers[d]?.value})})),e.createElement(m.k,{paddingLeft:2,style:{alignSelf:"center"},paddingTop:s.headers?.[d]?.value?0:5},e.createElement(o.fG,{onClick:()=>r.headers.length!==1&&c(d),label:n({id:"Settings.webhooks.headers.remove",defaultMessage:"Remove header row {number}"},{number:d+1})})))))),e.createElement(D.P,{col:12},e.createElement(Pe.A,{type:"button",onClick:()=>{l({key:"",value:""})},startIcon:e.createElement(ye.Z,null)},n({id:"Settings.webhooks.create.header",defaultMessage:"Create new header"}))))})))},Re=t(27169),F=t(35331);const Q=le.ZP.svg(({theme:n,color:r})=>`
17
17
  width: ${12/16}rem;
18
18
  height: ${12/16}rem;
19
19
 
20
20
  path {
21
21
  fill: ${n.colors[r]};
22
22
  }
23
- `),ae=({isPending:n,statusCode:r})=>{const{formatMessage:s}=(0,$.Z)();return n?e.createElement(m.k,{gap:2,alignItems:"center"},e.createElement(Q,{as:Re.Z}),e.createElement(O.Z,null,s({id:"Settings.webhooks.trigger.pending",defaultMessage:"pending"}))):r>=200&&r<300?e.createElement(m.k,{gap:2,alignItems:"center"},e.createElement(Q,{as:re.Z,color:"success700"}),e.createElement(O.Z,null,s({id:"Settings.webhooks.trigger.success",defaultMessage:"success"}))):r>=300?e.createElement(m.k,{gap:2,alignItems:"center"},e.createElement(Q,{as:F.Z,color:"danger700"}),e.createElement(O.Z,null,s({id:"Settings.error",defaultMessage:"error"})," ",r)):null};ae.propTypes={isPending:i().bool.isRequired,statusCode:i().number},ae.defaultProps={statusCode:void 0};const H=({statusCode:n,message:r})=>{const{formatMessage:s}=(0,$.Z)();return n>=200&&n<300?e.createElement(m.k,{justifyContent:"flex-end"},e.createElement(O.Z,{textColor:"neutral600",ellipsis:!0},s({id:"Settings.webhooks.trigger.success.label",defaultMessage:"Trigger succeeded"}))):n>=300?e.createElement(m.k,{justifyContent:"flex-end"},e.createElement(m.k,{maxWidth:(0,o.Q1)(250),justifyContent:"flex-end",title:r},e.createElement(O.Z,{ellipsis:!0,textColor:"neutral600"},r))):null};H.propTypes={statusCode:i().number,message:i().string},H.defaultProps={statusCode:void 0,message:void 0};const N=({onCancel:n})=>{const{formatMessage:r}=(0,$.Z)();return e.createElement(m.k,{justifyContent:"flex-end"},e.createElement("button",{onClick:n,type:"button"},e.createElement(m.k,{gap:2,alignItems:"center"},e.createElement(O.Z,{textColor:"neutral400"},r({id:"Settings.webhooks.trigger.cancel",defaultMessage:"cancel"})),e.createElement(Q,{as:F.Z,color:"neutral400"}))))};N.propTypes={onCancel:i().func.isRequired};const z=({isPending:n,onCancel:r,response:s})=>{const{statusCode:l,message:c}=s,{formatMessage:f}=(0,$.Z)();return e.createElement(j.x,{background:"neutral0",padding:5,shadow:"filterShadow",hasRadius:!0},e.createElement(J.r,{gap:4,style:{alignItems:"center"}},e.createElement(D.P,{col:3},e.createElement(O.Z,null,f({id:"Settings.webhooks.trigger.test",defaultMessage:"Test-trigger"}))),e.createElement(D.P,{col:3},e.createElement(ae,{isPending:n,statusCode:l})),e.createElement(D.P,{col:6},n?e.createElement(N,{onCancel:r}):e.createElement(H,{statusCode:l,message:c}))))};z.defaultProps={isPending:!1,onCancel(){},response:{}},z.propTypes={isPending:i().bool,onCancel:i().func,response:i().object};var Te=z,y=t(24346);const De=/(^$)|(^[A-Za-z][_0-9A-Za-z ]*$)/,de=/(^$)|((https?:\/\/.*)(d*)\/?(.*))/;var ce=y.Ry().shape({name:y.Z_(o.I0.string).required(o.I0.required).matches(De,o.I0.regex),url:y.Z_(o.I0.string).required(o.I0.required).matches(de,o.I0.regex),headers:y.Vo(n=>{let r=y.IX();if(n.length===1){const{key:s,value:l}=n[0];if(!s&&!l)return r}return r.of(y.Ry().shape({key:y.Z_().required(o.I0.required),value:y.Z_().required(o.I0.required)}))}),events:y.IX()});const _=({handleSubmit:n,data:r,triggerWebhook:s,isCreating:l,isTriggering:c,triggerResponse:f,isDraftAndPublishEvents:d})=>{const{formatMessage:u}=(0,$.Z)(),[E,x]=(0,e.useState)(!1);return e.createElement(I.J9,{onSubmit:n,initialValues:{name:r?.name||"",url:r?.url||"",headers:Object.keys(r?.headers||[]).length?Object.entries(r.headers).map(([h,v])=>({key:h,value:v})):[{key:"",value:""}],events:r?.events||[]},validationSchema:ce,validateOnChange:!1,validateOnBlur:!1},({handleSubmit:h,errors:v})=>e.createElement(o.l0,{noValidate:!0},e.createElement(pe.T,{primaryAction:e.createElement(m.k,{gap:2},e.createElement(S.z,{onClick:()=>{s(),x(!0)},variant:"tertiary",startIcon:e.createElement(ne.Z,null),disabled:l||c,size:"L"},u({id:"Settings.webhooks.trigger",defaultMessage:"Trigger"})),e.createElement(S.z,{startIcon:e.createElement(re.Z,null),onClick:h,type:"submit",size:"L"},u({id:"global.save",defaultMessage:"Save"}))),title:l?u({id:"Settings.webhooks.create",defaultMessage:"Create a webhook"}):r?.name,navigationAction:e.createElement(o.rU,{startIcon:e.createElement(Ee.Z,null),to:"/settings/webhooks"},u({id:"global.back",defaultMessage:"Back"}))}),e.createElement(fe.D,null,e.createElement(m.k,{direction:"column",alignItems:"stretch",gap:4},E&&e.createElement("div",{className:"trigger-wrapper"},e.createElement(Te,{isPending:c,response:f,onCancel:()=>x(!1)})),e.createElement(j.x,{background:"neutral0",padding:8,shadow:"filterShadow",hasRadius:!0},e.createElement(m.k,{direction:"column",alignItems:"stretch",gap:6},e.createElement(J.r,{gap:6},e.createElement(D.P,{col:6},e.createElement(I.gN,{as:Y.o,name:"name",error:v.name&&u({id:v.name}),label:u({id:"global.name",defaultMessage:"Name"}),required:!0})),e.createElement(D.P,{col:12},e.createElement(I.gN,{as:Y.o,name:"url",error:v.url&&u({id:v.url}),label:u({id:"Settings.roles.form.input.url",defaultMessage:"Url"}),required:!0}))),e.createElement(Oe,null),e.createElement(q,{isDraftAndPublish:d})))))))};_.propTypes={data:i().object,handleSubmit:i().func.isRequired,triggerWebhook:i().func.isRequired,isCreating:i().bool.isRequired,isDraftAndPublishEvents:i().bool.isRequired,isTriggering:i().bool.isRequired,triggerResponse:i().object},_.defaultProps={data:void 0,triggerResponse:void 0};var Ae=_;const ue=n=>({...n,headers:X(n.headers)}),X=n=>n.reduce((r,s)=>{const{key:l,value:c}=s;return l!==""?{...r,[l]:c}:r},{});var he=ue,ge=()=>{const{params:{id:n}}=(0,p.$B)("/settings/webhooks/:id"),{replace:r}=(0,p.k6)(),{lockApp:s,unlockApp:l}=(0,o.o1)(),c=(0,o.lm)(),f=(0,M.useQueryClient)(),{isLoading:d,collectionTypes:u}=(0,k.bP)(),{put:E,get:x,post:h}=(0,o.kY)(),v=n==="create",{isLoading:g,data:B}=(0,M.useQuery)(["get-webhook",n],async()=>{try{const{data:{data:T}}=await x(`/admin/webhooks/${n}`);return T}catch{return c({type:"warning",message:{id:"notification.error"}}),null}},{enabled:!v}),{isLoading:R,data:L,isIdle:ke,mutate:je}=(0,M.useMutation)(()=>h(`/admin/webhooks/${n}/trigger`)),b=()=>je(null,{onError(){c({type:"warning",message:{id:"notification.error"}})}}),Se=(0,M.useMutation)(T=>h("/admin/webhooks",T)),Ze=(0,M.useMutation)(({id:T,body:V})=>E(`/admin/webhooks/${T}`,V)),Be=async T=>{v?(s(),Se.mutate(he(T),{onSuccess({data:V}){c({type:"success",message:{id:"Settings.webhooks.created"}}),r(`/settings/webhooks/${V.data.id}`),l()},onError(V){c({type:"warning",message:{id:"notification.error"}}),console.log(V),l()}})):(s(),Ze.mutate({id:n,body:he(T)},{onSuccess(){f.invalidateQueries(["get-webhook",n]),c({type:"success",message:{id:"notification.form.success.fields"}}),l()},onError(V){c({type:"warning",message:{id:"notification.error"}}),console.log(V),l()}}))},We=e.useMemo(()=>u.some(T=>T.options.draftAndPublish===!0),[u]);return g||d?e.createElement(o.dO,null):e.createElement(A.o,null,e.createElement(o.SL,{name:"Webhooks"}),e.createElement(Ae,{handleSubmit:Be,data:B,triggerWebhook:b,isCreating:v,isTriggering:R,isTriggerIdle:ke,triggerResponse:L?.data.data,isDraftAndPublishEvents:We}))}},33238:function(G,C,t){t.r(C);var e=t(32735),o=t(24989),A=t(83983),M=t(55734);const p=()=>e.createElement(o.O4,{permissions:A.Z.settings.webhooks.create},e.createElement(M.Z,null));C.default=p},59021:function(G,C,t){t.r(C);var e=t(32735),o=t(24989),A=t(83983),M=t(55734);const p=()=>e.createElement(o.O4,{permissions:A.Z.settings.webhooks.update},e.createElement(M.Z,null));C.default=p},21428:function(G,C,t){t.d(C,{Wx:function(){return Me},XU:function(){return $},hQ:function(){return I}});var e=t(74512),o=t(32735),A=t(35331),M=t(16899),p=t(42345),k=t(8471),me=t(14268),i=t(95976),ne=t(74971),re=t(36971),Ee=t(30350),pe=t(23866),m=t(72850),S=t(49372),fe=t(87107),j=t(87933),J=t(28847),D=t(67014),Y=t(47851);const I=({children:a,clearLabel:P="clear",creatable:U=!1,createMessage:Z=X=>`Create "${X}"`,defaultFilterValue:K,defaultTextValue:q,defaultOpen:Pe=!1,open:ye,onOpenChange:xe,disabled:ee=!1,error:oe,filterValue:ie,hasMoreItems:te=!1,hint:Ie,id:$e,label:Oe,labelAction:Re,loading:F=!1,loadingMessage:Q="Loading content...",noOptionsMessage:ae=()=>"No results found",onChange:H,onClear:N,onCreateOption:z,onFilterValueChange:Te,onInputChange:y,onTextValueChange:De,onLoadMore:de,placeholder:Le="Select or enter a value",required:ce=!1,startIcon:_,textValue:Ae,value:ue})=>{const[X,he]=(0,i.T)({prop:ye,defaultProp:Pe,onChange:xe}),[w,ge]=(0,i.T)({prop:Ae,defaultProp:q,onChange:De}),[n,r]=(0,i.T)({prop:ie,defaultProp:K,onChange:Te}),s=o.useRef(null),l=o.useRef(null),c=o.useRef(null),f=(0,ne.M)($e),d=b=>{N&&!ee&&(ge(""),r(""),N(b),l.current.focus())},u=b=>{he(b)},E=b=>{ge(b)},x=b=>{r(b)},h=b=>{y&&y(b)},v=b=>{H&&H(b)},g=(0,ne.M)(),B=`intersection-${(0,me.B)(g)}`,R=b=>{de&&te&&!F&&de(b)},L=()=>{z&&w&&z(w)};(0,re.s)(s,R,{selectorToWatch:`#${B}`,skipWhen:!X});const ke=`${f}-hint`,je=`${f}-error`;return(0,e.jsx)(fe.g,{hint:Ie,error:oe,id:f,required:ce,children:(0,e.jsxs)(j.k,{direction:"column",alignItems:"stretch",gap:1,children:[(0,e.jsx)(J.Q,{action:Re,children:Oe}),(0,e.jsxs)(p.hQ.Root,{autocomplete:U?"list":"both",open:X,onOpenChange:u,onTextValueChange:E,textValue:w,allowCustomValue:!0,disabled:ee,required:ce,value:ue===null?void 0:ue,onValueChange:v,filterValue:n,onFilterValueChange:x,children:[(0,e.jsxs)(O,{$hasError:!!oe,children:[(0,e.jsxs)(j.k,{flex:"1",as:"span",gap:3,children:[_?(0,e.jsx)(m.x,{as:"span","aria-hidden":!0,children:_}):null,(0,e.jsx)(le,{placeholder:Le,id:f,"aria-invalid":!!oe,"aria-labelledby":`${ke} ${je}`,onChange:h,ref:l})]}),(0,e.jsxs)(j.k,{as:"span",gap:3,children:[w&&N?(0,e.jsx)(se,{as:"button",hasRadius:!0,background:"transparent",type:"button",onClick:d,"aria-disabled":ee,"aria-label":P,title:P,ref:c,children:(0,e.jsx)(A.Z,{})}):null,(0,e.jsx)(ve,{children:(0,e.jsx)(M.Z,{})})]})]}),(0,e.jsx)(p.hQ.Portal,{children:(0,e.jsx)(be,{sideOffset:4,children:(0,e.jsxs)(Ce,{ref:s,children:[a,U?(0,e.jsx)(p.hQ.CreateItem,{onPointerUp:L,onClick:L,asChild:!0,children:(0,e.jsx)(W,{children:(0,e.jsx)(S.Z,{children:Z(w??"")})})}):null,!U&&!F?(0,e.jsx)(p.hQ.NoValueFound,{asChild:!0,children:(0,e.jsx)(W,{$hasHover:!1,children:(0,e.jsx)(S.Z,{children:ae(w??"")})})}):null,F?(0,e.jsx)(j.k,{justifyContent:"center",alignItems:"center",paddingTop:2,paddingBottom:2,children:(0,e.jsx)(pe.a,{small:!0,children:Q})}):null,(0,e.jsx)(m.x,{id:B,width:"100%",height:"1px"})]})})})]}),(0,e.jsx)(D.J,{}),(0,e.jsx)(Y.c,{})]})})},$=a=>(0,e.jsx)(I,{...a,creatable:!0}),se=(0,k.ZP)(m.x)`
23
+ `),ae=({isPending:n,statusCode:r})=>{const{formatMessage:s}=(0,$.Z)();return n?e.createElement(m.k,{gap:2,alignItems:"center"},e.createElement(Q,{as:Re.Z}),e.createElement(O.Z,null,s({id:"Settings.webhooks.trigger.pending",defaultMessage:"pending"}))):r>=200&&r<300?e.createElement(m.k,{gap:2,alignItems:"center"},e.createElement(Q,{as:re.Z,color:"success700"}),e.createElement(O.Z,null,s({id:"Settings.webhooks.trigger.success",defaultMessage:"success"}))):r>=300?e.createElement(m.k,{gap:2,alignItems:"center"},e.createElement(Q,{as:F.Z,color:"danger700"}),e.createElement(O.Z,null,s({id:"Settings.error",defaultMessage:"error"})," ",r)):null};ae.propTypes={isPending:i().bool.isRequired,statusCode:i().number},ae.defaultProps={statusCode:void 0};const H=({statusCode:n,message:r})=>{const{formatMessage:s}=(0,$.Z)();return n>=200&&n<300?e.createElement(m.k,{justifyContent:"flex-end"},e.createElement(O.Z,{textColor:"neutral600",ellipsis:!0},s({id:"Settings.webhooks.trigger.success.label",defaultMessage:"Trigger succeeded"}))):n>=300?e.createElement(m.k,{justifyContent:"flex-end"},e.createElement(m.k,{maxWidth:(0,o.Q1)(250),justifyContent:"flex-end",title:r},e.createElement(O.Z,{ellipsis:!0,textColor:"neutral600"},r))):null};H.propTypes={statusCode:i().number,message:i().string},H.defaultProps={statusCode:void 0,message:void 0};const N=({onCancel:n})=>{const{formatMessage:r}=(0,$.Z)();return e.createElement(m.k,{justifyContent:"flex-end"},e.createElement("button",{onClick:n,type:"button"},e.createElement(m.k,{gap:2,alignItems:"center"},e.createElement(O.Z,{textColor:"neutral400"},r({id:"Settings.webhooks.trigger.cancel",defaultMessage:"cancel"})),e.createElement(Q,{as:F.Z,color:"neutral400"}))))};N.propTypes={onCancel:i().func.isRequired};const z=({isPending:n,onCancel:r,response:s})=>{const{statusCode:l,message:c}=s,{formatMessage:f}=(0,$.Z)();return e.createElement(k.x,{background:"neutral0",padding:5,shadow:"filterShadow",hasRadius:!0},e.createElement(J.r,{gap:4,style:{alignItems:"center"}},e.createElement(D.P,{col:3},e.createElement(O.Z,null,f({id:"Settings.webhooks.trigger.test",defaultMessage:"Test-trigger"}))),e.createElement(D.P,{col:3},e.createElement(ae,{isPending:n,statusCode:l})),e.createElement(D.P,{col:6},n?e.createElement(N,{onCancel:r}):e.createElement(H,{statusCode:l,message:c}))))};z.defaultProps={isPending:!1,onCancel(){},response:{}},z.propTypes={isPending:i().bool,onCancel:i().func,response:i().object};var Te=z,P=t(24346);const De=/(^$)|(^[A-Za-z][_0-9A-Za-z ]*$)/,de=/(^$)|((https?:\/\/.*)(d*)\/?(.*))/;var ce=P.Ry().shape({name:P.Z_(o.I0.string).required(o.I0.required).matches(De,o.I0.regex),url:P.Z_(o.I0.string).required(o.I0.required).matches(de,o.I0.regex),headers:P.Vo(n=>{let r=P.IX();if(n.length===1){const{key:s,value:l}=n[0];if(!s&&!l)return r}return r.of(P.Ry().shape({key:P.Z_().required(o.I0.required),value:P.Z_().required(o.I0.required)}))}),events:P.IX()});const _=({handleSubmit:n,data:r,triggerWebhook:s,isCreating:l,isTriggering:c,triggerResponse:f,isDraftAndPublishEvents:d})=>{const{formatMessage:u}=(0,$.Z)(),[E,x]=(0,e.useState)(!1);return e.createElement(I.J9,{onSubmit:n,initialValues:{name:r?.name||"",url:r?.url||"",headers:Object.keys(r?.headers||[]).length?Object.entries(r.headers).map(([h,v])=>({key:h,value:v})):[{key:"",value:""}],events:r?.events||[]},validationSchema:ce,validateOnChange:!1,validateOnBlur:!1},({handleSubmit:h,errors:v})=>e.createElement(o.l0,{noValidate:!0},e.createElement(pe.T,{primaryAction:e.createElement(m.k,{gap:2},e.createElement(S.z,{onClick:()=>{s(),x(!0)},variant:"tertiary",startIcon:e.createElement(ne.Z,null),disabled:l||c,size:"L"},u({id:"Settings.webhooks.trigger",defaultMessage:"Trigger"})),e.createElement(S.z,{startIcon:e.createElement(re.Z,null),onClick:h,type:"submit",size:"L"},u({id:"global.save",defaultMessage:"Save"}))),title:l?u({id:"Settings.webhooks.create",defaultMessage:"Create a webhook"}):r?.name,navigationAction:e.createElement(o.rU,{startIcon:e.createElement(Ee.Z,null),to:"/settings/webhooks"},u({id:"global.back",defaultMessage:"Back"}))}),e.createElement(fe.D,null,e.createElement(m.k,{direction:"column",alignItems:"stretch",gap:4},E&&e.createElement("div",{className:"trigger-wrapper"},e.createElement(Te,{isPending:c,response:f,onCancel:()=>x(!1)})),e.createElement(k.x,{background:"neutral0",padding:8,shadow:"filterShadow",hasRadius:!0},e.createElement(m.k,{direction:"column",alignItems:"stretch",gap:6},e.createElement(J.r,{gap:6},e.createElement(D.P,{col:6},e.createElement(I.gN,{as:Y.o,name:"name",error:v.name&&u({id:v.name}),label:u({id:"global.name",defaultMessage:"Name"}),required:!0})),e.createElement(D.P,{col:12},e.createElement(I.gN,{as:Y.o,name:"url",error:v.url&&u({id:v.url}),label:u({id:"Settings.roles.form.input.url",defaultMessage:"Url"}),required:!0}))),e.createElement(Oe,null),e.createElement(q,{isDraftAndPublish:d})))))))};_.propTypes={data:i().object,handleSubmit:i().func.isRequired,triggerWebhook:i().func.isRequired,isCreating:i().bool.isRequired,isDraftAndPublishEvents:i().bool.isRequired,isTriggering:i().bool.isRequired,triggerResponse:i().object},_.defaultProps={data:void 0,triggerResponse:void 0};var Ae=_;const ue=n=>({...n,headers:X(n.headers)}),X=n=>n.reduce((r,s)=>{const{key:l,value:c}=s;return l!==""?{...r,[l]:c}:r},{});var he=ue,ge=()=>{const{params:{id:n}}=(0,p.$B)("/settings/webhooks/:id"),{replace:r}=(0,p.k6)(),{lockApp:s,unlockApp:l}=(0,o.o1)(),c=(0,o.lm)(),f=(0,M.useQueryClient)(),{isLoading:d,collectionTypes:u}=(0,j.G)(),{put:E,get:x,post:h}=(0,o.kY)(),v=n==="create",{isLoading:g,data:B}=(0,M.useQuery)(["get-webhook",n],async()=>{try{const{data:{data:T}}=await x(`/admin/webhooks/${n}`);return T}catch{return c({type:"warning",message:{id:"notification.error"}}),null}},{enabled:!v}),{isLoading:R,data:L,isIdle:je,mutate:ke}=(0,M.useMutation)(()=>h(`/admin/webhooks/${n}/trigger`)),C=()=>ke(null,{onError(){c({type:"warning",message:{id:"notification.error"}})}}),Se=(0,M.useMutation)(T=>h("/admin/webhooks",T)),Ze=(0,M.useMutation)(({id:T,body:V})=>E(`/admin/webhooks/${T}`,V)),Be=async T=>{v?(s(),Se.mutate(he(T),{onSuccess({data:V}){c({type:"success",message:{id:"Settings.webhooks.created"}}),r(`/settings/webhooks/${V.data.id}`),l()},onError(V){c({type:"warning",message:{id:"notification.error"}}),console.log(V),l()}})):(s(),Ze.mutate({id:n,body:he(T)},{onSuccess(){f.invalidateQueries(["get-webhook",n]),c({type:"success",message:{id:"notification.form.success.fields"}}),l()},onError(V){c({type:"warning",message:{id:"notification.error"}}),console.log(V),l()}}))},We=e.useMemo(()=>u.some(T=>T.options.draftAndPublish===!0),[u]);return g||d?e.createElement(o.dO,null):e.createElement(A.o,null,e.createElement(o.SL,{name:"Webhooks"}),e.createElement(Ae,{handleSubmit:Be,data:B,triggerWebhook:C,isCreating:v,isTriggering:R,isTriggerIdle:je,triggerResponse:L?.data.data,isDraftAndPublishEvents:We}))}},33238:function(G,b,t){t.r(b);var e=t(32735),o=t(24989),A=t(83983),M=t(55734);const p=()=>e.createElement(o.O4,{permissions:A.Z.settings.webhooks.create},e.createElement(M.Z,null));b.default=p},59021:function(G,b,t){t.r(b);var e=t(32735),o=t(24989),A=t(83983),M=t(55734);const p=()=>e.createElement(o.O4,{permissions:A.Z.settings.webhooks.update},e.createElement(M.Z,null));b.default=p},21428:function(G,b,t){t.d(b,{Wx:function(){return Me},XU:function(){return $},hQ:function(){return I}});var e=t(74512),o=t(32735),A=t(35331),M=t(16899),p=t(42345),j=t(8471),me=t(14268),i=t(95976),ne=t(74971),re=t(36971),Ee=t(30350),pe=t(23866),m=t(72850),S=t(49372),fe=t(87107),k=t(87933),J=t(28847),D=t(67014),Y=t(47851);const I=({children:a,clearLabel:y="clear",creatable:U=!1,createMessage:Z=X=>`Create "${X}"`,defaultFilterValue:K,defaultTextValue:q,defaultOpen:ye=!1,open:Pe,onOpenChange:xe,disabled:ee=!1,error:oe,filterValue:ie,hasMoreItems:te=!1,hint:Ie,id:$e,label:Oe,labelAction:Re,loading:F=!1,loadingMessage:Q="Loading content...",noOptionsMessage:ae=()=>"No results found",onChange:H,onClear:N,onCreateOption:z,onFilterValueChange:Te,onInputChange:P,onTextValueChange:De,onLoadMore:de,placeholder:Le="Select or enter a value",required:ce=!1,startIcon:_,textValue:Ae,value:ue})=>{const[X,he]=(0,i.T)({prop:Pe,defaultProp:ye,onChange:xe}),[w,ge]=(0,i.T)({prop:Ae,defaultProp:q,onChange:De}),[n,r]=(0,i.T)({prop:ie,defaultProp:K,onChange:Te}),s=o.useRef(null),l=o.useRef(null),c=o.useRef(null),f=(0,ne.M)($e),d=C=>{N&&!ee&&(ge(""),r(""),N(C),l.current.focus())},u=C=>{he(C)},E=C=>{ge(C)},x=C=>{r(C)},h=C=>{P&&P(C)},v=C=>{H&&H(C)},g=(0,ne.M)(),B=`intersection-${(0,me.B)(g)}`,R=C=>{de&&te&&!F&&de(C)},L=()=>{z&&w&&z(w)};(0,re.s)(s,R,{selectorToWatch:`#${B}`,skipWhen:!X});const je=`${f}-hint`,ke=`${f}-error`;return(0,e.jsx)(fe.g,{hint:Ie,error:oe,id:f,required:ce,children:(0,e.jsxs)(k.k,{direction:"column",alignItems:"stretch",gap:1,children:[(0,e.jsx)(J.Q,{action:Re,children:Oe}),(0,e.jsxs)(p.hQ.Root,{autocomplete:U?"list":"both",open:X,onOpenChange:u,onTextValueChange:E,textValue:w,allowCustomValue:!0,disabled:ee,required:ce,value:ue===null?void 0:ue,onValueChange:v,filterValue:n,onFilterValueChange:x,children:[(0,e.jsxs)(O,{$hasError:!!oe,children:[(0,e.jsxs)(k.k,{flex:"1",as:"span",gap:3,children:[_?(0,e.jsx)(m.x,{as:"span","aria-hidden":!0,children:_}):null,(0,e.jsx)(le,{placeholder:Le,id:f,"aria-invalid":!!oe,"aria-labelledby":`${je} ${ke}`,onChange:h,ref:l})]}),(0,e.jsxs)(k.k,{as:"span",gap:3,children:[w&&N?(0,e.jsx)(se,{as:"button",hasRadius:!0,background:"transparent",type:"button",onClick:d,"aria-disabled":ee,"aria-label":y,title:y,ref:c,children:(0,e.jsx)(A.Z,{})}):null,(0,e.jsx)(ve,{children:(0,e.jsx)(M.Z,{})})]})]}),(0,e.jsx)(p.hQ.Portal,{children:(0,e.jsx)(Ce,{sideOffset:4,children:(0,e.jsxs)(be,{ref:s,children:[a,U?(0,e.jsx)(p.hQ.CreateItem,{onPointerUp:L,onClick:L,asChild:!0,children:(0,e.jsx)(W,{children:(0,e.jsx)(S.Z,{children:Z(w??"")})})}):null,!U&&!F?(0,e.jsx)(p.hQ.NoValueFound,{asChild:!0,children:(0,e.jsx)(W,{$hasHover:!1,children:(0,e.jsx)(S.Z,{children:ae(w??"")})})}):null,F?(0,e.jsx)(k.k,{justifyContent:"center",alignItems:"center",paddingTop:2,paddingBottom:2,children:(0,e.jsx)(pe.a,{small:!0,children:Q})}):null,(0,e.jsx)(m.x,{id:B,width:"100%",height:"1px"})]})})})]}),(0,e.jsx)(D.J,{}),(0,e.jsx)(Y.c,{})]})})},$=a=>(0,e.jsx)(I,{...a,creatable:!0}),se=(0,j.ZP)(m.x)`
24
24
  border: none;
25
25
 
26
26
  svg {
@@ -31,9 +31,9 @@
31
31
  svg path {
32
32
  fill: ${({theme:a})=>a.colors.neutral600};
33
33
  }
34
- `,O=(0,k.ZP)(p.hQ.Trigger)`
34
+ `,O=(0,j.ZP)(p.hQ.Trigger)`
35
35
  position: relative;
36
- border: 1px solid ${({theme:a,$hasError:P})=>P?a.colors.danger600:a.colors.neutral200};
36
+ border: 1px solid ${({theme:a,$hasError:y})=>y?a.colors.danger600:a.colors.neutral200};
37
37
  padding-right: ${({theme:a})=>a.spaces[3]};
38
38
  padding-left: ${({theme:a})=>a.spaces[3]};
39
39
  border-radius: ${({theme:a})=>a.borderRadius};
@@ -55,8 +55,8 @@
55
55
  outline: none;
56
56
  }
57
57
 
58
- ${({theme:a,$hasError:P})=>(0,Ee.k3)()({theme:a,hasError:P})};
59
- `,le=(0,k.ZP)(p.hQ.TextInput)`
58
+ ${({theme:a,$hasError:y})=>(0,Ee.k3)()({theme:a,hasError:y})};
59
+ `,le=(0,j.ZP)(p.hQ.TextInput)`
60
60
  width: 100%;
61
61
  font-size: ${14/16}rem;
62
62
  color: ${({theme:a})=>a.colors.neutral800};
@@ -71,7 +71,7 @@
71
71
  &[aria-disabled='true'] {
72
72
  cursor: inherit;
73
73
  }
74
- `,ve=(0,k.ZP)(p.hQ.Icon)`
74
+ `,ve=(0,j.ZP)(p.hQ.Icon)`
75
75
  & > svg {
76
76
  width: ${6/16}rem;
77
77
 
@@ -83,7 +83,7 @@
83
83
  &[aria-disabled='true'] {
84
84
  cursor: inherit;
85
85
  }
86
- `,be=(0,k.ZP)(p.hQ.Content)`
86
+ `,Ce=(0,j.ZP)(p.hQ.Content)`
87
87
  background: ${({theme:a})=>a.colors.neutral0};
88
88
  box-shadow: ${({theme:a})=>a.shadows.filterShadow};
89
89
  border: 1px solid ${({theme:a})=>a.colors.neutral150};
@@ -92,9 +92,9 @@
92
92
  /* This is from the design-system figma file. */
93
93
  max-height: 15rem;
94
94
  z-index: ${({theme:a})=>a.zIndices[1]};
95
- `,Ce=(0,k.ZP)(p.hQ.Viewport)`
95
+ `,be=(0,j.ZP)(p.hQ.Viewport)`
96
96
  padding: ${({theme:a})=>a.spaces[1]};
97
- `,Me=o.forwardRef(({children:a,value:P,disabled:U,textValue:Z,...K},q)=>(0,e.jsx)(p.hQ.ComboboxItem,{asChild:!0,value:P,disabled:U,textValue:Z,children:(0,e.jsx)(W,{ref:q,...K,children:(0,e.jsx)(p.hQ.ItemText,{asChild:!0,children:(0,e.jsx)(S.Z,{children:a})})})})),W=k.ZP.div`
97
+ `,Me=o.forwardRef(({children:a,value:y,disabled:U,textValue:Z,...K},q)=>(0,e.jsx)(p.hQ.ComboboxItem,{asChild:!0,value:y,disabled:U,textValue:Z,children:(0,e.jsx)(W,{ref:q,...K,children:(0,e.jsx)(p.hQ.ItemText,{asChild:!0,children:(0,e.jsx)(S.Z,{children:a})})})})),W=j.ZP.div`
98
98
  width: 100%;
99
99
  border: none;
100
100
  text-align: left;
@@ -116,7 +116,7 @@
116
116
  &:hover,
117
117
  &[data-highlighted] {
118
118
  outline: none;
119
- background-color: ${({theme:a,$hasHover:P=!0})=>P?a.colors.primary100:a.colors.neutral0};
119
+ background-color: ${({theme:a,$hasHover:y=!0})=>y?a.colors.primary100:a.colors.neutral0};
120
120
  }
121
121
 
122
122
  &[data-highlighted] {
@@ -125,4 +125,4 @@
125
125
  font-weight: bold;
126
126
  }
127
127
  }
128
- `},90333:function(G,C,t){t.d(C,{O:function(){return o}});var e=t(21428);const o=e.Wx},29439:function(G,C,t){t.d(C,{Z:function(){return A}});var e=t(74512);const o=M=>(0,e.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"1rem",height:"1rem",fill:"none",viewBox:"0 0 24 24",...M,children:(0,e.jsx)("path",{fill:"#212134",d:"M24 13.3a.2.2 0 0 1-.2.2H5.74l8.239 8.239a.2.2 0 0 1 0 .282L12.14 23.86a.2.2 0 0 1-.282 0L.14 12.14a.2.2 0 0 1 0-.282L11.86.14a.2.2 0 0 1 .282 0L13.98 1.98a.2.2 0 0 1 0 .282L5.74 10.5H23.8c.11 0 .2.09.2.2v2.6Z"})}),A=o}}]);
128
+ `},90333:function(G,b,t){t.d(b,{O:function(){return o}});var e=t(21428);const o=e.Wx},29439:function(G,b,t){t.d(b,{Z:function(){return A}});var e=t(74512);const o=M=>(0,e.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"1rem",height:"1rem",fill:"none",viewBox:"0 0 24 24",...M,children:(0,e.jsx)("path",{fill:"#212134",d:"M24 13.3a.2.2 0 0 1-.2.2H5.74l8.239 8.239a.2.2 0 0 1 0 .282L12.14 23.86a.2.2 0 0 1-.282 0L.14 12.14a.2.2 0 0 1 0-.282L11.86.14a.2.2 0 0 1 .282 0L13.98 1.98a.2.2 0 0 1 0 .282L5.74 10.5H23.8c.11 0 .2.09.2.2v2.6Z"})}),A=o}}]);
@@ -0,0 +1,63 @@
1
+ "use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[4121],{32393:function(R,E,t){t.r(E),t.d(E,{default:function(){return ce}});var e=t(32735),s=t(24989),c=t(83983),h=t(53038),f=t(67879),p=t(20108),T=t(94638),D=t(96709),S=t(27649),i=t(82055),P=t(99223),m=t(49372),I=t(41415),q=t(17e3),U=t(72850),_=t(56755),ee=t(73269),te=t(33827),K=t(94547),r=t(19786),V=t(82884),ne=t(3685),ae=t(35658),k=t(87933),b=t(74512),F=t(8471);const j=F.ZP.div`
2
+ background: ${({theme:o})=>o.colors.danger500};
3
+ border: none;
4
+ border-radius: 16px;
5
+ position: relative;
6
+ height: ${24/16}rem;
7
+ width: ${40/16}rem;
8
+
9
+ & span {
10
+ font-size: ${({visibleLabels:o})=>o?"1rem":0};
11
+ }
12
+
13
+ &:before {
14
+ content: '';
15
+ background: ${({theme:o})=>o.colors.neutral0};
16
+ width: 1rem;
17
+ height: 1rem;
18
+ border-radius: 50%;
19
+ position: absolute;
20
+ transition: all 0.5s;
21
+ left: ${({theme:o})=>o.spaces[1]};
22
+ top: ${({theme:o})=>o.spaces[1]};
23
+ }
24
+
25
+ @media (prefers-reduced-motion: reduce) {
26
+ &:before {
27
+ transition: none;
28
+ }
29
+ }
30
+ `,se=F.ZP.button`
31
+ background: transparent;
32
+ padding: 0;
33
+ border: none;
34
+
35
+ &[aria-checked='true'] ${j} {
36
+ background: ${({theme:o})=>o.colors.success500};
37
+ }
38
+
39
+ &[aria-checked='true'] ${j}:before {
40
+ transform: translateX(1rem);
41
+ }
42
+ `,oe=e.forwardRef(({label:o,onChange:u,onLabel:v="On",offLabel:d="Off",selected:a,visibleLabels:g=!1,...x},$)=>(0,b.jsx)(se,{ref:$,role:"switch","aria-checked":a,"aria-label":o,onClick:u,visibleLabels:g,type:"button",...x,children:(0,b.jsxs)(k.k,{children:[(0,b.jsxs)(j,{children:[(0,b.jsx)("span",{children:v}),(0,b.jsx)("span",{children:d})]}),g&&(0,b.jsx)(U.x,{as:"span","aria-hidden":!0,paddingLeft:2,color:a?"success600":"danger600",children:a?v:d})]})}));var z=t(50563),le=t(9695),w=t(19406),H=t(4038),re=t(68625),ie=t(54725),de=()=>{const[o,u]=(0,e.useState)(!1),[v,d]=(0,e.useState)([]),{formatMessage:a}=(0,f.Z)(),{formatAPIError:g}=(0,s.So)(),x=(0,s.lm)();(0,s.go)();const{push:$}=(0,h.k6)(),{pathname:N}=(0,h.TH)(),{isLoading:me,allowedActions:{canCreate:O,canUpdate:Q,canDelete:Y}}=(0,s.ss)(c.Z.settings.webhooks),{get:he,post:ue,put:ge}=(0,s.kY)(),{notifyStatus:G}=(0,T.G)(),Ee="webhooks",{isLoading:fe,data:M,error:Z,refetch:X}=(0,p.useQuery)(Ee,async()=>{const{data:{data:n}}=await he("/admin/webhooks");return n});(0,e.useEffect)(()=>{if(Z){x({type:"warning",message:g(Z)});return}M&&G(a({id:"Settings.webhooks.list.loading.success",defaultMessage:"Webhooks have been loaded"}))},[M,Z,x,a,G,g]);const J=(0,p.useMutation)(async()=>{await ue("/admin/webhooks/batch-delete",{ids:v})},{onError(n){x({type:"warning",message:g(n)}),u(!1)},onSuccess(){d([]),u(!1),X()}}),be=(0,p.useMutation)(async({isEnabled:n,id:l})=>{const{id:L,...W}=M.find(Ce=>Ce.id===l)??{},pe={...W,isEnabled:n};await ge(`/admin/webhooks/${l}`,pe)},{onError(n){x({type:"warning",message:g(n)})},onSuccess(){X()}}),ve=()=>J.mutate(),xe=n=>d(n?M.map(l=>l.id):[]),Me=(n,l)=>d(n?L=>[...L,l]:L=>L.filter(W=>W!==l)),A=n=>$(`${N}/${n}`),B=me||fe,y=M?.length??0,C=v.length;return e.createElement(D.A,null,e.createElement(s.SL,{name:"Webhooks"}),e.createElement(S.o,{"aria-busy":B},e.createElement(i.T,{title:a({id:"Settings.webhooks.title",defaultMessage:"Webhooks"}),subtitle:a({id:"Settings.webhooks.list.description",defaultMessage:"Get POST changes notifications"}),primaryAction:O&&!B&&e.createElement(s.Qj,{startIcon:e.createElement(w.Z,null),variant:"default",to:`${N}/create`,size:"S"},a({id:"Settings.webhooks.list.button.add",defaultMessage:"Create new webhook"}))}),C>0&&Y&&e.createElement(P.Z,{startActions:e.createElement(e.Fragment,null,e.createElement(m.Z,{variant:"epsilon",textColor:"neutral600"},a({id:"Settings.webhooks.to.delete",defaultMessage:"{webhooksToDeleteLength, plural, one {# webhook} other {# webhooks}} selected"},{webhooksToDeleteLength:C})),e.createElement(I.z,{onClick:()=>u(!0),startIcon:e.createElement(H.Z,null),size:"L",variant:"danger-light"},a({id:"global.delete",defaultMessage:"Delete"})))}),e.createElement(q.D,null,B?e.createElement(U.x,{background:"neutral0",padding:6,shadow:"filterShadow",hasRadius:!0},e.createElement(s.dO,null)):y>0?e.createElement(_.i,{colCount:5,rowCount:y+1,footer:e.createElement(ee.c,{onClick:()=>O?A("create"):{},icon:e.createElement(w.Z,null)},a({id:"Settings.webhooks.list.button.add",defaultMessage:"Create new webhook"}))},e.createElement(te.h,null,e.createElement(K.Tr,null,e.createElement(r.Th,null,e.createElement(V.C,{"aria-label":a({id:"global.select-all-entries",defaultMessage:"Select all entries"}),indeterminate:C>0&&C<y,value:C===y,onValueChange:xe})),e.createElement(r.Th,{width:"20%"},e.createElement(m.Z,{variant:"sigma",textColor:"neutral600"},a({id:"global.name",defaultMessage:"Name"}))),e.createElement(r.Th,{width:"60%"},e.createElement(m.Z,{variant:"sigma",textColor:"neutral600"},a({id:"Settings.webhooks.form.url",defaultMessage:"URL"}))),e.createElement(r.Th,{width:"20%"},e.createElement(m.Z,{variant:"sigma",textColor:"neutral600"},a({id:"Settings.webhooks.list.th.status",defaultMessage:"Status"}))),e.createElement(r.Th,null,e.createElement(ne.T,null,a({id:"Settings.webhooks.list.th.actions",defaultMessage:"Actions"}))))),e.createElement(ae.p,null,M.map(n=>e.createElement(K.Tr,{key:n.id,...(0,s.X7)({fn:()=>A(n.id),condition:Q})},e.createElement(r.Td,{...s.UW},e.createElement(V.C,{"aria-label":`${a({id:"global.select",defaultMessage:"Select"})} ${n.name}`,value:v?.includes(n.id),onValueChange:l=>Me(l,n.id),name:"select"})),e.createElement(r.Td,null,e.createElement(m.Z,{fontWeight:"semiBold",textColor:"neutral800"},n.name)),e.createElement(r.Td,null,e.createElement(m.Z,{textColor:"neutral800"},n.url)),e.createElement(r.Td,null,e.createElement(k.k,null,e.createElement(oe,{onLabel:a({id:"global.enabled",defaultMessage:"Enabled"}),offLabel:a({id:"global.disabled",defaultMessage:"Disabled"}),label:`${n.name} ${a({id:"Settings.webhooks.list.th.status",defaultMessage:"Status"})}`,selected:n.isEnabled,onChange:l=>{l.stopPropagation(),be.mutate({isEnabled:!n.isEnabled,id:n.id})},visibleLabels:!0}))),e.createElement(r.Td,null,e.createElement(k.k,{gap:1},Q&&e.createElement(z.h,{label:a({id:"Settings.webhooks.events.update",defaultMessage:"Update"}),icon:e.createElement(re.Z,null),noBorder:!0}),Y&&e.createElement(z.h,{onClick:l=>{l.stopPropagation(),d([n.id]),u(!0)},label:a({id:"Settings.webhooks.events.delete",defaultMessage:"Delete webhook"}),icon:e.createElement(H.Z,null),noBorder:!0}))))))):e.createElement(le.x,{icon:e.createElement(ie.Z,{width:"160px"}),content:a({id:"Settings.webhooks.list.empty.description",defaultMessage:"No webhooks found"}),action:e.createElement(I.z,{variant:"secondary",startIcon:e.createElement(w.Z,null),onClick:()=>O?A("create"):{}},a({id:"Settings.webhooks.list.button.add",defaultMessage:"Create new webhook"}))}))),e.createElement(s.QH,{isOpen:o,onToggleDialog:()=>u(n=>!n),onConfirm:ve,isConfirmButtonLoading:J.isLoading}))},ce=()=>e.createElement(s.O4,{permissions:c.Z.settings.webhooks.main},e.createElement(de,null))},99223:function(R,E,t){t.d(E,{Z:function(){return c}});var e=t(74512),s=t(87933);const c=({startActions:h,endActions:f})=>!h&&!f?null:(0,e.jsxs)(s.k,{justifyContent:"space-between",alignItems:"flex-start",paddingBottom:4,paddingLeft:10,paddingRight:10,children:[(0,e.jsx)(s.k,{gap:2,wrap:"wrap",children:h}),(0,e.jsx)(s.k,{gap:2,shrink:0,wrap:"wrap",children:f})]})},73269:function(R,E,t){t.d(E,{c:function(){return S}});var e=t(74512),s=t(8471),c=t(72850),h=t(9026),f=t(87933),p=t(49372);const T=(0,s.ZP)(c.x)`
43
+ height: ${24/16}rem;
44
+ width: ${24/16}rem;
45
+ border-radius: 50%;
46
+ display: flex;
47
+ justify-content: center;
48
+ align-items: center;
49
+
50
+ svg {
51
+ height: ${10/16}rem;
52
+ width: ${10/16}rem;
53
+ }
54
+
55
+ svg path {
56
+ fill: ${({theme:i})=>i.colors.primary600};
57
+ }
58
+ `,D=(0,s.ZP)(c.x)`
59
+ border-radius: 0 0 ${({theme:i})=>i.borderRadius} ${({theme:i})=>i.borderRadius};
60
+ display: block;
61
+ width: 100%;
62
+ border: none;
63
+ `,S=({children:i,icon:P,...m})=>(0,e.jsxs)("div",{children:[(0,e.jsx)(h.i,{}),(0,e.jsx)(D,{as:"button",background:"primary100",padding:5,...m,children:(0,e.jsxs)(f.k,{children:[(0,e.jsx)(T,{"aria-hidden":!0,background:"primary200",children:P}),(0,e.jsx)(c.x,{paddingLeft:3,children:(0,e.jsx)(p.Z,{variant:"pi",fontWeight:"bold",textColor:"primary600",children:i})})]})})]})}}]);
@@ -38,8 +38,7 @@ export function InformationBoxEE() {
38
38
  const { formatAPIError } = useAPIErrorHandler();
39
39
  const toggleNotification = useNotification();
40
40
 
41
- const { workflows: { data: workflows, isLoading: workflowIsLoading } = {} } =
42
- useReviewWorkflows();
41
+ const { workflows, isLoading: workflowIsLoading } = useReviewWorkflows();
43
42
  // TODO: this works only as long as we support one workflow
44
43
  const workflow = workflows?.[0] ?? null;
45
44
 
@@ -2,24 +2,13 @@ import { useQuery } from 'react-query';
2
2
  import { useNotification, useFetchClient } from '@strapi/helper-plugin';
3
3
  import { useLocation } from 'react-router-dom';
4
4
 
5
+ import { useAdminUsers } from '../../../../../../../../admin/src/hooks/useAdminUsers';
6
+
5
7
  const useAuditLogsData = ({ canReadAuditLogs, canReadUsers }) => {
6
8
  const { get } = useFetchClient();
7
9
  const { search } = useLocation();
8
10
  const toggleNotification = useNotification();
9
11
 
10
- const fetchAuditLogsPage = async ({ queryKey }) => {
11
- const search = queryKey[1];
12
- const { data } = await get(`/admin/audit-logs${search}`);
13
-
14
- return data;
15
- };
16
-
17
- const fetchAllUsers = async () => {
18
- const { data } = await get(`/admin/users`);
19
-
20
- return data;
21
- };
22
-
23
12
  const queryOptions = {
24
13
  keepPreviousData: true,
25
14
  retry: false,
@@ -27,24 +16,43 @@ const useAuditLogsData = ({ canReadAuditLogs, canReadUsers }) => {
27
16
  onError: (error) => toggleNotification({ type: 'warning', message: error.message }),
28
17
  };
29
18
 
19
+ const {
20
+ users,
21
+ isError: isUsersError,
22
+ isLoading: isLoadingUsers,
23
+ } = useAdminUsers(
24
+ {},
25
+ {
26
+ ...queryOptions,
27
+ enabled: canReadUsers,
28
+ staleTime: 2 * (1000 * 60), // 2 minutes
29
+ }
30
+ );
31
+
30
32
  const {
31
33
  data: auditLogs,
32
- isLoading,
34
+ isLoading: isLoadingAuditLogs,
33
35
  isError: isAuditLogsError,
34
- } = useQuery(['auditLogs', search], fetchAuditLogsPage, {
35
- ...queryOptions,
36
- enabled: canReadAuditLogs,
37
- });
38
-
39
- const { data: users, isError: isUsersError } = useQuery(['auditLogsUsers'], fetchAllUsers, {
40
- ...queryOptions,
41
- enabled: canReadUsers,
42
- staleTime: 2 * (1000 * 60), // 2 minutes
43
- });
44
-
45
- const hasError = isAuditLogsError || isUsersError;
46
-
47
- return { auditLogs, users: users?.data, isLoading, hasError };
36
+ } = useQuery(
37
+ ['auditLogs', search],
38
+ async ({ queryKey }) => {
39
+ const search = queryKey[1];
40
+ const { data } = await get(`/admin/audit-logs${search}`);
41
+
42
+ return data;
43
+ },
44
+ {
45
+ ...queryOptions,
46
+ enabled: canReadAuditLogs,
47
+ }
48
+ );
49
+
50
+ return {
51
+ auditLogs,
52
+ users,
53
+ isLoading: isLoadingUsers || isLoadingAuditLogs,
54
+ hasError: isAuditLogsError || isUsersError,
55
+ };
48
56
  };
49
57
 
50
58
  export default useAuditLogsData;
@@ -74,7 +74,7 @@ const getDisplayedFilters = ({ formatMessage, users, canReadUsers }) => {
74
74
  return user.email;
75
75
  };
76
76
 
77
- const userOptions = users.results.map((user) => {
77
+ const userOptions = users.map((user) => {
78
78
  return {
79
79
  label: getDisplayNameFromUser(user),
80
80
  // Combobox expects a string value
@@ -44,7 +44,7 @@ export function ReviewWorkflowsPage() {
44
44
  const { put } = useFetchClient();
45
45
  const { formatAPIError } = useAPIErrorHandler();
46
46
  const toggleNotification = useNotification();
47
- const { workflows: workflowsData, refetchWorkflow } = useReviewWorkflows();
47
+ const { workflows, status: workflowStatus, refetch: refetchWorkflow } = useReviewWorkflows();
48
48
  const {
49
49
  status,
50
50
  clientState: {
@@ -124,8 +124,8 @@ export function ReviewWorkflowsPage() {
124
124
  useInjectReducer(REDUX_NAMESPACE, reducer);
125
125
 
126
126
  useEffect(() => {
127
- dispatch(setWorkflows({ status: workflowsData.status, data: workflowsData.data }));
128
- }, [workflowsData.status, workflowsData.data, dispatch]);
127
+ dispatch(setWorkflows({ status: workflowStatus, data: workflows }));
128
+ }, [workflowStatus, workflows, dispatch]);
129
129
 
130
130
  useEffect(() => {
131
131
  trackUsage('didViewWorkflow');
@@ -1,35 +1,46 @@
1
- import { useQuery, useQueryClient } from 'react-query';
1
+ import { useQuery } from 'react-query';
2
2
  import { useFetchClient } from '@strapi/helper-plugin';
3
+ import { stringify } from 'qs';
3
4
 
4
- const QUERY_BASE_KEY = 'review-workflows';
5
- const API_BASE_URL = '/admin/review-workflows';
5
+ export function useReviewWorkflows(params = {}) {
6
+ const { id = '', ...queryParams } = params;
7
+ const defaultQueryParams = {
8
+ populate: 'stages',
9
+ };
6
10
 
7
- export function useReviewWorkflows(workflowId) {
8
11
  const { get } = useFetchClient();
9
- const client = useQueryClient();
10
- const workflowQueryKey = [QUERY_BASE_KEY, workflowId ?? 'default'];
12
+ const queryString = stringify({ ...defaultQueryParams, ...queryParams }, { encode: false });
11
13
 
12
- async function fetchWorkflows({ params = { populate: 'stages' } }) {
13
- try {
14
- const {
15
- data: { data },
16
- } = await get(`${API_BASE_URL}/workflows/${workflowId ?? ''}`, { params });
14
+ const { data, isLoading, status, refetch } = useQuery(
15
+ ['review-workflows', 'workflows', id],
16
+ async () => {
17
+ try {
18
+ const {
19
+ data: { data },
20
+ } = await get(
21
+ `/admin/review-workflows/workflows/${id}${queryString ? `?${queryString}` : ''}`
22
+ );
17
23
 
18
- return data;
19
- } catch (err) {
20
- // silence
21
- return null;
24
+ return data;
25
+ } catch (err) {
26
+ // silence
27
+ return null;
28
+ }
22
29
  }
23
- }
30
+ );
24
31
 
25
- async function refetchWorkflow() {
26
- await client.refetchQueries(workflowQueryKey);
27
- }
32
+ let workflows = [];
28
33
 
29
- const workflows = useQuery(workflowQueryKey, fetchWorkflows);
34
+ if (id && data) {
35
+ workflows = [data];
36
+ } else if (Array.isArray(data)) {
37
+ workflows = data;
38
+ }
30
39
 
31
40
  return {
32
41
  workflows,
33
- refetchWorkflow,
42
+ isLoading,
43
+ status,
44
+ refetch,
34
45
  };
35
46
  }
@@ -124,7 +124,11 @@ const createAuditLogsService = (strapi) => {
124
124
  const processedEvent = processEvent(name, ...args);
125
125
 
126
126
  if (processedEvent) {
127
- await state.provider.saveEvent(processedEvent);
127
+ // This stores the event when after the transaction is committed,
128
+ // so it's not stored if the transaction is rolled back
129
+ await strapi.db.transaction(({ onCommit }) => {
130
+ onCommit(() => state.provider.saveEvent(processedEvent));
131
+ });
128
132
  }
129
133
  }
130
134
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strapi/admin",
3
- "version": "4.10.6",
3
+ "version": "4.10.7",
4
4
  "description": "Strapi Admin",
5
5
  "repository": {
6
6
  "type": "git",
@@ -48,16 +48,16 @@
48
48
  "@casl/ability": "^5.4.3",
49
49
  "@fingerprintjs/fingerprintjs": "3.4.1",
50
50
  "@pmmmwh/react-refresh-webpack-plugin": "0.5.10",
51
- "@strapi/babel-plugin-switch-ee-ce": "4.10.6",
52
- "@strapi/data-transfer": "4.10.6",
53
- "@strapi/design-system": "1.7.7",
54
- "@strapi/helper-plugin": "4.10.6",
55
- "@strapi/icons": "1.7.7",
56
- "@strapi/permissions": "4.10.6",
57
- "@strapi/provider-audit-logs-local": "4.10.6",
58
- "@strapi/typescript-utils": "4.10.6",
59
- "@strapi/utils": "4.10.6",
60
- "axios": "1.3.4",
51
+ "@strapi/babel-plugin-switch-ee-ce": "4.10.7",
52
+ "@strapi/data-transfer": "4.10.7",
53
+ "@strapi/design-system": "1.7.9",
54
+ "@strapi/helper-plugin": "4.10.7",
55
+ "@strapi/icons": "1.7.9",
56
+ "@strapi/permissions": "4.10.7",
57
+ "@strapi/provider-audit-logs-local": "4.10.7",
58
+ "@strapi/typescript-utils": "4.10.7",
59
+ "@strapi/utils": "4.10.7",
60
+ "axios": "1.4.0",
61
61
  "babel-loader": "^9.1.2",
62
62
  "babel-plugin-styled-components": "2.1.1",
63
63
  "bcryptjs": "2.4.3",
@@ -74,8 +74,8 @@
74
74
  "execa": "^1.0.0",
75
75
  "fast-deep-equal": "3.1.3",
76
76
  "find-root": "1.1.0",
77
- "fork-ts-checker-webpack-plugin": "7.2.1",
78
- "formik": "^2.2.6",
77
+ "fork-ts-checker-webpack-plugin": "7.3.0",
78
+ "formik": "^2.4.0",
79
79
  "fractional-indexing": "3.2.0",
80
80
  "fs-extra": "10.0.0",
81
81
  "highlight.js": "^10.4.1",
@@ -110,7 +110,6 @@
110
110
  "prop-types": "^15.7.2",
111
111
  "qs": "6.11.1",
112
112
  "react": "^17.0.2",
113
- "react-copy-to-clipboard": "^5.1.0",
114
113
  "react-dnd": "15.1.2",
115
114
  "react-dnd-html5-backend": "15.1.3",
116
115
  "react-dom": "^17.0.2",
@@ -118,7 +117,7 @@
118
117
  "react-helmet": "^6.1.0",
119
118
  "react-intl": "6.4.1",
120
119
  "react-is": "^17.0.2",
121
- "react-query": "3.24.3",
120
+ "react-query": "3.39.3",
122
121
  "react-redux": "8.0.5",
123
122
  "react-refresh": "0.14.0",
124
123
  "react-router-dom": "5.3.4",
@@ -140,7 +139,7 @@
140
139
  "yup": "^0.32.9"
141
140
  },
142
141
  "devDependencies": {
143
- "@testing-library/dom": "8.19.0",
142
+ "@testing-library/dom": "8.20.0",
144
143
  "@testing-library/react": "12.1.4",
145
144
  "@testing-library/react-hooks": "8.0.1",
146
145
  "@testing-library/user-event": "14.4.3",
@@ -166,5 +165,5 @@
166
165
  }
167
166
  }
168
167
  },
169
- "gitHead": "7dbae9d05d765b85927e1ccff282ac9d82d0a9eb"
168
+ "gitHead": "da080df32b85cdd59d46bdda5c984a346cad0860"
170
169
  }
package/webpack.alias.js CHANGED
@@ -14,7 +14,6 @@ const aliasExactMatch = [
14
14
  'qs',
15
15
  'lodash',
16
16
  'react',
17
- 'react-copy-to-clipboard',
18
17
  'react-dnd',
19
18
  'react-dnd-html5-backend',
20
19
  'react-dom',
@@ -1,58 +0,0 @@
1
- import { useReducer, useEffect, useCallback } from 'react';
2
- import { useFetchClient, useNotification } from '@strapi/helper-plugin';
3
- import reducer, { initialState } from './reducer';
4
-
5
- /**
6
- * TODO: refactor this to not use the `useReducer` hook,
7
- * it's not really necessary. Also use `useQuery`?
8
- */
9
- const useModels = () => {
10
- const toggleNotification = useNotification();
11
- const [state, dispatch] = useReducer(reducer, initialState);
12
-
13
- const { get } = useFetchClient();
14
-
15
- const fetchModels = useCallback(async () => {
16
- dispatch({
17
- type: 'GET_MODELS',
18
- });
19
-
20
- try {
21
- const [
22
- {
23
- data: { data: components },
24
- },
25
- {
26
- data: { data: contentTypes },
27
- },
28
- ] = await Promise.all(
29
- ['components', 'content-types'].map((endPoint) => get(`/content-manager/${endPoint}`))
30
- );
31
-
32
- dispatch({
33
- type: 'GET_MODELS_SUCCEDED',
34
- contentTypes,
35
- components,
36
- });
37
- } catch (err) {
38
- dispatch({
39
- type: 'GET_MODELS_ERROR',
40
- });
41
- toggleNotification({
42
- type: 'warning',
43
- message: { id: 'notification.error' },
44
- });
45
- }
46
- }, [toggleNotification, get]);
47
-
48
- useEffect(() => {
49
- fetchModels();
50
- }, [fetchModels]);
51
-
52
- return {
53
- ...state,
54
- getData: fetchModels,
55
- };
56
- };
57
-
58
- export default useModels;
@@ -1,45 +0,0 @@
1
- /* eslint-disable consistent-return */
2
- import produce from 'immer';
3
-
4
- export const initialState = {
5
- collectionTypes: [],
6
- components: [],
7
- isLoading: true,
8
- singleTypes: [],
9
- };
10
-
11
- const reducer = (state, action) =>
12
- produce(state, (draftState) => {
13
- switch (action.type) {
14
- case 'GET_MODELS': {
15
- draftState.collectionTypes = initialState.collectionTypes;
16
- draftState.singleTypes = initialState.singleTypes;
17
- draftState.components = initialState.components;
18
- draftState.isLoading = true;
19
- break;
20
- }
21
- case 'GET_MODELS_ERROR': {
22
- draftState.collectionTypes = initialState.collectionTypes;
23
- draftState.singleTypes = initialState.singleTypes;
24
- draftState.components = initialState.components;
25
- draftState.isLoading = false;
26
- break;
27
- }
28
- case 'GET_MODELS_SUCCEDED': {
29
- const getContentTypeByKind = (kind) =>
30
- action.contentTypes.filter(
31
- (contentType) => contentType.isDisplayed && contentType.kind === kind
32
- );
33
-
34
- draftState.isLoading = false;
35
- draftState.collectionTypes = getContentTypeByKind('collectionType');
36
- draftState.singleTypes = getContentTypeByKind('singleType');
37
- draftState.components = action.components;
38
- break;
39
- }
40
- default:
41
- return draftState;
42
- }
43
- });
44
-
45
- export default reducer;