UNPKG

@frank-auth/react

Version:

Flexible and customizable React UI components for Frank Authentication

3 lines (2 loc) 6.95 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("react"),V=require("./use-auth.cjs"),X=require("../provider/auth-provider.cjs"),Y=require("../provider/config-provider.cjs");function m(){const{organization:l,organizationMemberships:g,activeOrganization:e,switchOrganization:z,session:v,reload:c}=V.useAuth(),{sdk:a}=X.useAuth(),{apiUrl:O,publishableKey:M,userType:b}=Y.useConfig(),[w,h]=i.useState([]),[y,tn]=i.useState([]),[I,r]=i.useState(!1),[p,u]=i.useState(null),o=i.useCallback(n=>{const t={code:n.code||"UNKNOWN_ERROR",message:n.message||"An unknown error occurred",details:n.details,field:n.field};throw u(t),t},[]),s=i.useCallback(async()=>{try{r(!0),u(null);const n=await a.organization.listOrganizations({fields:[]});h(n.data??[])}catch(n){console.error("Failed to load organizations:",n),u({code:"ORGANIZATIONS_LOAD_FAILED",message:"Failed to load organizations"})}finally{r(!1)}},[a.organization]);i.useEffect(()=>{s()},[s]);const C=i.useCallback(async n=>{if(!a.organization)throw new Error("Organization service not available");try{r(!0),u(null);const t={name:n.name,slug:n.slug,logoUrl:n.logoUrl,websiteUrl:n.websiteUrl,settings:n.settings,plan:n.planId??"free"},d=await a.organization.createOrganization(t);return await s(),await c(),d}catch(t){return o(t)}finally{r(!1)}},[a.organization,s,c,o]),E=i.useCallback(async(n,t)=>{if(!a.organization)throw new Error("Organization service not available");try{r(!0),u(null);const d={name:t.name,slug:t.slug,description:t.description,logoUrl:t.logoUrl,websiteUrl:t.websiteUrl,settings:t.settings},Q=await a.organization.updateOrganization(n,d);return await s(),await c(),Q}catch(d){return o(d)}finally{r(!1)}},[a.organization,s,c,o]),k=i.useCallback(async n=>{if(!a.organization)throw new Error("Organization service not available");try{r(!0),u(null),await a.organization.deleteOrganization(n,{notifyMembers:!0,confirm:!0,dataRetention:0}),await s(),await c()}catch(t){o(t)}finally{r(!1)}},[a.organization,s,c,o]),A=i.useCallback(async n=>{await z(n),await s()},[z,s]),S=i.useCallback(async n=>{if(!a.organization||!e)throw new Error("Organization service not available");try{r(!0),u(null);const t={emailAddress:n.emailAddress,role:n.role,redirectUrl:n.redirectUrl,publicMetadata:n.publicMetadata,privateMetadata:n.privateMetadata,isBillingContact:!1,isPrimaryContact:!1,roleId:n.role,sendInvitationEmail:!1};await a.organization.addMember(e.id,t),await s()}catch(t){o(t)}finally{r(!1)}},[a.organization,e,s,o]),R=i.useCallback(async n=>{if(!a.organization||!e)throw new Error("Organization service not available");try{r(!0),u(null),await a.organization.removeMember(e.id,n,{notifyUser:!0}),await s()}catch(t){o(t)}finally{r(!1)}},[a.organization,e,s,o]),U=i.useCallback(async(n,t)=>{if(!a.organization||!e)throw new Error("Organization service not available");try{r(!0),u(null),await a.organization.updateMemberRole(e.id,n,{roleId:t}),await s()}catch(d){o(d)}finally{r(!1)}},[a.organization,e,s,o]),q=i.useCallback(async()=>{if(!a.organization||!e)throw new Error("Organization service not available");try{return((await a.organization.listMembers(e.id)).data??[]).map(t=>({id:t.userId,userId:t.userId,organizationId:t.organizationId,role:t.role,status:t.status,joinedAt:t.joinedAt,invitedBy:t.invitedBy}))}catch(n){return o(n),[]}},[a.organization,e,o]),L=i.useCallback(async(n,t)=>{if(!a.organization)throw new Error("Organization service not available");try{r(!0),u(null);const d={...t??{},token:n,acceptTerms:!0};await a.organization.acceptInvitation(d),await s(),await c()}catch(d){o(d)}finally{r(!1)}},[a.organization,s,c,o]),N=i.useCallback(async n=>{if(!a.organization)throw new Error("Organization service not available");try{r(!0),u(null);const t={token:n};await a.organization.declineInvitation(t),await s()}catch(t){o(t)}finally{r(!1)}},[a.organization,s,o]),j=i.useCallback(async n=>{if(!a.organization)throw new Error("Organization service not available");try{r(!0),u(null),await a.organization.cancelInvitation(n),await s()}catch(t){o(t)}finally{r(!1)}},[a.organization,s,o]),P=i.useCallback(async n=>{if(!a.organization)throw new Error("Organization service not available");try{r(!0),u(null),await a.organization.resendInvitation(n)}catch(t){o(t)}finally{r(!1)}},[a.organization,o]),T=i.useCallback(async n=>{if(!a.organization||!e)throw new Error("Organization service not available");try{r(!0),u(null);const t=await a.organization.updateOrganizationSettings(e.id,n);return await s(),await c(),t}catch(t){return o(t)}finally{r(!1)}},[a.organization,e,s,c,o]),x=i.useMemo(()=>e?.id||null,[e]),B=i.useMemo(()=>e?.name||null,[e]),D=i.useMemo(()=>e?.slug||null,[e]),f=i.useMemo(()=>e?g.find(n=>n.organization.id===e.id):null,[e,g]),F=i.useMemo(()=>f?.role==="owner",[f]),_=i.useMemo(()=>["owner","admin"].includes(f?.role||""),[f]),K=i.useMemo(()=>!!f,[f]),G=i.useMemo(()=>e?.memberCount||0,[e]),W=i.useMemo(()=>y.filter(n=>n.status==="pending").length,[y]),Z=i.useMemo(()=>w.length>0,[w]),H=i.useMemo(()=>b==="internal"?!0:b==="external"?g.some(n=>n.role==="owner"):!1,[b,g]),J=i.useMemo(()=>w.length>1,[w]);return{organization:l,organizations:w,activeOrganization:e,memberships:g,invitations:y,isLoaded:!!a.organization,isLoading:I,error:p,createOrganization:C,updateOrganization:E,deleteOrganization:k,switchOrganization:A,inviteMember:S,removeMember:R,updateMemberRole:U,getMembers:q,acceptInvitation:L,declineInvitation:N,cancelInvitation:j,resendInvitation:P,updateSettings:T,organizationId:x,organizationName:B,organizationSlug:D,isOwner:F,isAdmin:_,isMember:K,memberCount:G,pendingInvitations:W,hasOrganizations:Z,canCreateOrganization:H,canSwitchOrganization:J}}function $(){const{activeOrganization:l,memberships:g,isOwner:e,isAdmin:z,isMember:v,memberCount:c}=m(),a=i.useMemo(()=>l?g.find(O=>O.organization.id===l.id):null,[l,g]);return{organization:l,membership:a,role:a?.role||null,isOwner:e,isAdmin:z,isMember:v,memberCount:c,joinedAt:a?.joinedAt||null,status:a?.status||null}}function nn(){const{invitations:l,acceptInvitation:g,declineInvitation:e,cancelInvitation:z,resendInvitation:v,inviteMember:c,isAdmin:a,isLoading:O,error:M}=m(),b=i.useMemo(()=>l.filter(h=>h.status==="pending"),[l]),w=i.useMemo(()=>l.filter(h=>h.status==="expired"),[l]);return{invitations:l,pendingInvitations:b,expiredInvitations:w,acceptInvitation:g,declineInvitation:e,cancelInvitation:a?z:void 0,resendInvitation:a?v:void 0,inviteMember:a?c:void 0,canManageInvitations:a,isLoading:O,error:M}}function an(){const{organizations:l,activeOrganization:g,switchOrganization:e,canSwitchOrganization:z,isLoading:v}=m();return{organizations:l,activeOrganization:g,switchOrganization:e,canSwitchOrganization:z,isLoading:v,hasMultipleOrganizations:l.length>1}}exports.useOrganization=m;exports.useOrganizationInvitations=nn;exports.useOrganizationMembership=$;exports.useOrganizationSwitcher=an; //# sourceMappingURL=use-organization.cjs.map