@capxul/sdk-react 4.1.3 → 4.2.0-rc.1

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.
@@ -0,0 +1,11 @@
1
+ {
2
+ "source": {
3
+ "commit": "efa1ae30674425e4db92020bfad513fb6cf36011",
4
+ "tree": "91f805524a7c7b53e6c28cf484b549b0c1dbd9dd",
5
+ "branch": "codex/programme-rc",
6
+ "repository": "https://github.com/Xelmar-tech/infrastructure",
7
+ "lockfileSha256": "5870f53b72706d103220c1bcf733cb4fb71196aea32a9cfbdc277d73cc959264"
8
+ },
9
+ "name": "@capxul/sdk-react",
10
+ "version": "4.2.0-rc.1"
11
+ }
@@ -201,13 +201,15 @@ function normalizeOrganization(organization) {
201
201
  if (name.length === 0) return null;
202
202
  if (organization.bio !== void 0 && typeof organization.bio !== "string") return null;
203
203
  if (organization.size !== void 0 && typeof organization.size !== "string") return null;
204
+ if (organization.logoStorageId !== void 0 && (typeof organization.logoStorageId !== "string" || organization.logoStorageId.length === 0)) return null;
204
205
  try {
205
206
  return {
206
207
  name,
207
208
  handle: toHandle(handle),
208
209
  country: toCountryCode(organization.country),
209
210
  ...organization.bio === void 0 ? {} : { bio: organization.bio },
210
- ...organization.size === void 0 ? {} : { size: organization.size }
211
+ ...organization.size === void 0 ? {} : { size: organization.size },
212
+ ...organization.logoStorageId === void 0 ? {} : { logoStorageId: organization.logoStorageId }
211
213
  };
212
214
  } catch {
213
215
  return null;
@@ -25,6 +25,12 @@ interface OrganizationDetails {
25
25
  readonly country: string;
26
26
  readonly bio?: string;
27
27
  readonly size?: string;
28
+ /**
29
+ * #1955: the storage id `useCapxulUploadImage` handed back on file pick. The
30
+ * create call carries it, so the backend records the logo on the `orgs`
31
+ * insert instead of the app binding it afterwards.
32
+ */
33
+ readonly logoStorageId?: string;
28
34
  }
29
35
  interface CreateOrganizationSubmission {
30
36
  readonly profileDetails: ProfileDetails;
package/dist/index.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { A as entered, C as CreateOrganizationFailure, D as OrganizationDetails, E as InvocationOptions, F as useCapxulTransitions, M as useCapxulDestination, N as useCapxulIdentity, O as ProfileDetails, P as useCapxulSend, S as CapxulSend, T as Destination, _ as ReadyDestination, a as AuthenticationSlots, b as Slot, c as ControllerAction, d as OnboardingControllerProps, f as OrgFailure, g as ProfileSlotProps, h as PendingAuthState, i as AuthenticatedState, j as useCapxulAuth, k as SendResult, l as FaultedState, m as OtpPendingState, n as AccountProgress, o as CapxulAuthenticationController, p as OrgProgress, r as ActionResult, s as CapxulOnboardingController, t as AccountFailure, u as NavigationAction, v as RetryAction, w as CreateOrganizationSubmission, x as CapxulAuth, y as SignedOutState } from "./controllers-DIf8elqQ.mjs";
1
+ import { A as entered, C as CreateOrganizationFailure, D as OrganizationDetails, E as InvocationOptions, F as useCapxulTransitions, M as useCapxulDestination, N as useCapxulIdentity, O as ProfileDetails, P as useCapxulSend, S as CapxulSend, T as Destination, _ as ReadyDestination, a as AuthenticationSlots, b as Slot, c as ControllerAction, d as OnboardingControllerProps, f as OrgFailure, g as ProfileSlotProps, h as PendingAuthState, i as AuthenticatedState, j as useCapxulAuth, k as SendResult, l as FaultedState, m as OtpPendingState, n as AccountProgress, o as CapxulAuthenticationController, p as OrgProgress, r as ActionResult, s as CapxulOnboardingController, t as AccountFailure, u as NavigationAction, v as RetryAction, w as CreateOrganizationSubmission, x as CapxulAuth, y as SignedOutState } from "./controllers-BWmKRFy6.mjs";
2
2
  import { ReactNode, RefCallback } from "react";
3
3
  import { QueryClient, UseMutationResult, UseQueryResult } from "@tanstack/react-query";
4
4
  import { Account, AccountRequirement, ActivityAnnotation, ActivityAnnotationInput, ActivityDetail, ActivityKind, ActivityListParams, ActivityPage, ActivityPhase, ActivityRange, ActivityReference, ActorReference, AddressBookEntry, BudgetId, CapxulClient, CapxulError, CapxulResult, CapxulSigner, CreateOrgInput, CurrentHoldings, HostObservability, IdentityDestination, InviteMemberInput, MemberView, Money, MoneyParseErrorReason, OrgId, OrgView, OrganizationPaymentBatchInput, OrganizationPaymentInput, PartyId, Payment, PaymentDirection, PaymentDocumentRef, PaymentDocumentRender, PaymentStatus, PaymentTiming, PaymentType, PaymentsPayInput, PayrollGroupId, PayrollGroupInput, PayrollRunId, PayrollRunStatus, Permission, PermissionMethods, PermissionReadResult, Profile, RoleView, SubmittedPermissionExecution, isClaimed, isRestoring } from "@capxul/sdk";
@@ -222,6 +222,7 @@ type ProfileDraft = {
222
222
  readonly withdrawalAddress: string;
223
223
  readonly handle?: string;
224
224
  readonly payoutAddresses?: readonly PayoutDraftEntry[];
225
+ readonly imageStorageId?: string;
225
226
  };
226
227
  type OrganizationDraft = {
227
228
  readonly name: string;
@@ -229,6 +230,7 @@ type OrganizationDraft = {
229
230
  readonly country: string;
230
231
  readonly bio?: string;
231
232
  readonly size?: string;
233
+ readonly logoStorageId?: string;
232
234
  };
233
235
  type OnboardingOrigin = {
234
236
  readonly kind: "personal";
@@ -251,6 +253,8 @@ type OnboardingJourney = {
251
253
  readonly organization?: OrganizationDraft;
252
254
  readonly stableHandle?: string;
253
255
  readonly organizationId?: string;
256
+ /** #1955: what the organization submit sent, kept for resume. */
257
+ readonly submission?: CreateOrganizationSubmission;
254
258
  };
255
259
  /**
256
260
  * The app-facing projection input: where a resumed journey stands. Consumers
@@ -335,6 +339,21 @@ type UseCapxulImageUploadReturn = UseMutationResult<{
335
339
  */
336
340
  declare function useCapxulImageUpload(): UseCapxulImageUploadReturn;
337
341
  //#endregion
342
+ //#region src/headless/media/use-capxul-upload-image.d.ts
343
+ type UseCapxulUploadImageReturn = UseMutationResult<{
344
+ readonly storageId: string;
345
+ }, CapxulError, Blob>;
346
+ /**
347
+ * #1955: upload only. Hands back the storage id for a CREATE call to carry
348
+ * (`ProfileDetails.imageStorageId`, `OrganizationDetails.logoStorageId`).
349
+ *
350
+ * `useCapxulImageUpload` is upload+bind and stays as it is for the settings
351
+ * pages. It cannot serve onboarding: the row it binds to does not exist yet.
352
+ * Nothing is bound here, so nothing is invalidated either — the create call
353
+ * that carries the id owns the cache change.
354
+ */
355
+ declare function useCapxulUploadImage(): UseCapxulUploadImageReturn;
356
+ //#endregion
338
357
  //#region src/headless/contacts/use-contacts.d.ts
339
358
  type ContactsActor = {
340
359
  readonly kind: "personal";
@@ -1032,4 +1051,4 @@ declare const capxulKeys: {
1032
1051
  payment: (paymentId: string | undefined) => readonly ["capxul", "payments", string];
1033
1052
  };
1034
1053
  //#endregion
1035
- export { type AccountFailure, type AccountProgress, type ActionResult, type ActivityDetailSlice, type ActivityExportSlice, type ActivityFilterValues, type ActivityFiltersSlice, type ActivityLoadMoreSlice, type ActivityReceipt, type ActivityRow, type ActivityRowsSlice, type ActivitySearchSlice, type ActivitySummarySlice, type AuthenticatedState, type AuthenticationSlots, type CanReason, CapxulActivity, type CapxulActivityProps, type CapxulAuth, CapxulAuthenticationController, type CapxulBootstrapState, type CapxulBootstrapStatus, CapxulContacts, type CapxulContactsProps, CapxulDashboardAccess, type CapxulDashboardAccessProps, CapxulOnboardingController, CapxulOrgMember, type CapxulOrgMemberProps, CapxulPayroll, type CapxulPayrollProps, CapxulPayrollRun, type CapxulPayrollRunBlockedReason, type CapxulPayrollRunProps, CapxulProvider, type CapxulProviderProps, type CapxulSend, CapxulSendMoney, type CapxulSendMoneyBlockedReason, type CapxulSendMoneyProps, type Contact, type ContactRelationship, type ContactRow, type ContactsActor, type ContactsAddBlockedReason, type ContactsAddError, type ContactsAddSlice, type ContactsListOptions, type ContactsListSlice, type ContactsRefusal, type ContactsSummarySlice, type ControllerAction, type CreateOrganizationFailure, type CreateOrganizationSubmission, type CsvExport, type DashboardAccessErrorSlice, type DashboardAccessPhase, type DashboardAccessRedirectSlice, type DashboardScope, type Destination, type FaultedState, type HandleAvailability, type ImageUploadInput, type ImageUploadTarget, type InvocationOptions, type NavigationAction, type OnboardingControllerProps, type OnboardingIntent, type OnboardingJourney, type OnboardingJourneyPosition, type OnboardingOrigin, type OnboardingStep, type OrgFailure, type OrgMemberAction, type OrgMemberCanSlice, type OrgMemberStanding, type OrgMemberStandingSlice, type OrgProgress, type OrganizationDetails, type OrganizationDraft, type OtpPendingState, type PayoutDraftChain, type PayoutDraftEntry, type PayrollGroupRow, type PayrollGroupsSlice, type PayrollRecipientOption, type PayrollRunActionsSlice, type PayrollRunAmountEntry, type PayrollRunAmountsSlice, type PayrollRunAssetSlice, type PayrollRunGroupOption, type PayrollRunPrefill, type PayrollRunRecipientsSlice, type PayrollRunStatus, type PayrollRunSummarySlice, type PayrollSummarySlice, type PendingAuthState, type ProfileDetails, type ProfileDraft, type ProfileSlotProps, type ReadyDestination, type RetryAction, type SendActor, type SendMoneyActionsSlice, type SendMoneyAmountSlice, type SendMoneyAssetError, type SendMoneyAssetOption, type SendMoneyAssetSlice, type SendMoneyRecipientSlice, type SendMoneyRecipientStatus, type SendMoneySourceError, type SendMoneySourceOption, type SendMoneySourceSlice, type SendResult, type SentPayment, type SentPayrollRun, type SignedOutState, type Slot, type SummaryWindow, type UseCapxulAccountBalanceOptions, type UseCapxulAccountBalanceReturn, type UseCapxulAccountFundReturn, type UseCapxulCreateCommitmentReturn, type UseCapxulCreateOrgReturn, type UseCapxulHandleAvailabilityReturn, type UseCapxulImageUploadReturn, type UseCapxulInviteMemberReturn, type UseCapxulOrgMembersOptions, type UseCapxulOrgMembersReturn, type UseCapxulOrgRolesOptions, type UseCapxulOrgRolesReturn, type UseCapxulOrgTreasuryOptions, type UseCapxulOrgTreasuryReturn, type UseCapxulOrgsReturn, type UseCapxulPayReturn, type UseCapxulPaymentReturn, type UseCapxulPaymentsReturn, type UseCapxulProfileReturn, type UseCapxulRedirectPaymentReturn, acknowledgeOnboardingDestination, activeOnboardingRecovery, capxulKeys, clearOnboardingJourney, currentOnboardingJourneyId, entered, invalidateOnboardingJourneyObservation, isClaimed, isRestoring, loadOnboardingJourney, onboardingJourneyPosition, saveOnboardingJourney, startOnboardingJourney, useCapxul, useCapxulAccountBalance, useCapxulAccountFund, useCapxulActivity, useCapxulActivityDetail, useCapxulAnnotateMovement, useCapxulAuth, useCapxulCancelPayment, useCapxulClaimPayment, useCapxulClientOrNull, useCapxulCreateCommitment, useCapxulCreateOrg, useCapxulDestination, useCapxulHandleAvailability, useCapxulHoldings, useCapxulIdentity, useCapxulImageUpload, useCapxulInviteMember, useCapxulOrgMembers, useCapxulOrgRoles, useCapxulOrgTreasury, useCapxulOrganizationPay, useCapxulOrganizationPayBatch, useCapxulOrgs, useCapxulPay, useCapxulPayment, useCapxulPayments, useCapxulPermission, useCapxulPermissionAssign, useCapxulPermissionChange, useCapxulPermissionCreate, useCapxulPermissionReplace, useCapxulPermissionRevoke, useCapxulPermissions, useCapxulProfile, useCapxulRedirectPayment, useCapxulSend, useCapxulTransitions };
1054
+ export { type AccountFailure, type AccountProgress, type ActionResult, type ActivityDetailSlice, type ActivityExportSlice, type ActivityFilterValues, type ActivityFiltersSlice, type ActivityLoadMoreSlice, type ActivityReceipt, type ActivityRow, type ActivityRowsSlice, type ActivitySearchSlice, type ActivitySummarySlice, type AuthenticatedState, type AuthenticationSlots, type CanReason, CapxulActivity, type CapxulActivityProps, type CapxulAuth, CapxulAuthenticationController, type CapxulBootstrapState, type CapxulBootstrapStatus, CapxulContacts, type CapxulContactsProps, CapxulDashboardAccess, type CapxulDashboardAccessProps, CapxulOnboardingController, CapxulOrgMember, type CapxulOrgMemberProps, CapxulPayroll, type CapxulPayrollProps, CapxulPayrollRun, type CapxulPayrollRunBlockedReason, type CapxulPayrollRunProps, CapxulProvider, type CapxulProviderProps, type CapxulSend, CapxulSendMoney, type CapxulSendMoneyBlockedReason, type CapxulSendMoneyProps, type Contact, type ContactRelationship, type ContactRow, type ContactsActor, type ContactsAddBlockedReason, type ContactsAddError, type ContactsAddSlice, type ContactsListOptions, type ContactsListSlice, type ContactsRefusal, type ContactsSummarySlice, type ControllerAction, type CreateOrganizationFailure, type CreateOrganizationSubmission, type CsvExport, type DashboardAccessErrorSlice, type DashboardAccessPhase, type DashboardAccessRedirectSlice, type DashboardScope, type Destination, type FaultedState, type HandleAvailability, type ImageUploadInput, type ImageUploadTarget, type InvocationOptions, type NavigationAction, type OnboardingControllerProps, type OnboardingIntent, type OnboardingJourney, type OnboardingJourneyPosition, type OnboardingOrigin, type OnboardingStep, type OrgFailure, type OrgMemberAction, type OrgMemberCanSlice, type OrgMemberStanding, type OrgMemberStandingSlice, type OrgProgress, type OrganizationDetails, type OrganizationDraft, type OtpPendingState, type PayoutDraftChain, type PayoutDraftEntry, type PayrollGroupRow, type PayrollGroupsSlice, type PayrollRecipientOption, type PayrollRunActionsSlice, type PayrollRunAmountEntry, type PayrollRunAmountsSlice, type PayrollRunAssetSlice, type PayrollRunGroupOption, type PayrollRunPrefill, type PayrollRunRecipientsSlice, type PayrollRunStatus, type PayrollRunSummarySlice, type PayrollSummarySlice, type PendingAuthState, type ProfileDetails, type ProfileDraft, type ProfileSlotProps, type ReadyDestination, type RetryAction, type SendActor, type SendMoneyActionsSlice, type SendMoneyAmountSlice, type SendMoneyAssetError, type SendMoneyAssetOption, type SendMoneyAssetSlice, type SendMoneyRecipientSlice, type SendMoneyRecipientStatus, type SendMoneySourceError, type SendMoneySourceOption, type SendMoneySourceSlice, type SendResult, type SentPayment, type SentPayrollRun, type SignedOutState, type Slot, type SummaryWindow, type UseCapxulAccountBalanceOptions, type UseCapxulAccountBalanceReturn, type UseCapxulAccountFundReturn, type UseCapxulCreateCommitmentReturn, type UseCapxulCreateOrgReturn, type UseCapxulHandleAvailabilityReturn, type UseCapxulImageUploadReturn, type UseCapxulInviteMemberReturn, type UseCapxulOrgMembersOptions, type UseCapxulOrgMembersReturn, type UseCapxulOrgRolesOptions, type UseCapxulOrgRolesReturn, type UseCapxulOrgTreasuryOptions, type UseCapxulOrgTreasuryReturn, type UseCapxulOrgsReturn, type UseCapxulPayReturn, type UseCapxulPaymentReturn, type UseCapxulPaymentsReturn, type UseCapxulProfileReturn, type UseCapxulRedirectPaymentReturn, type UseCapxulUploadImageReturn, acknowledgeOnboardingDestination, activeOnboardingRecovery, capxulKeys, clearOnboardingJourney, currentOnboardingJourneyId, entered, invalidateOnboardingJourneyObservation, isClaimed, isRestoring, loadOnboardingJourney, onboardingJourneyPosition, saveOnboardingJourney, startOnboardingJourney, useCapxul, useCapxulAccountBalance, useCapxulAccountFund, useCapxulActivity, useCapxulActivityDetail, useCapxulAnnotateMovement, useCapxulAuth, useCapxulCancelPayment, useCapxulClaimPayment, useCapxulClientOrNull, useCapxulCreateCommitment, useCapxulCreateOrg, useCapxulDestination, useCapxulHandleAvailability, useCapxulHoldings, useCapxulIdentity, useCapxulImageUpload, useCapxulInviteMember, useCapxulOrgMembers, useCapxulOrgRoles, useCapxulOrgTreasury, useCapxulOrganizationPay, useCapxulOrganizationPayBatch, useCapxulOrgs, useCapxulPay, useCapxulPayment, useCapxulPayments, useCapxulPermission, useCapxulPermissionAssign, useCapxulPermissionChange, useCapxulPermissionCreate, useCapxulPermissionReplace, useCapxulPermissionRevoke, useCapxulPermissions, useCapxulProfile, useCapxulRedirectPayment, useCapxulSend, useCapxulTransitions, useCapxulUploadImage };
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { a as useCapxulAuth, c as useCapxulIdentityOrNull, d as capxulKeys, f as useCapxulClientOrNull, i as entered, l as useCapxulSend, n as CapxulOnboardingController, o as useCapxulDestination, p as useCapxul, r as CapxulProvider, s as useCapxulIdentity, t as CapxulAuthenticationController, u as useCapxulTransitions } from "./controllers-Dzk5AvfL.mjs";
2
+ import { a as useCapxulAuth, c as useCapxulIdentityOrNull, d as capxulKeys, f as useCapxulClientOrNull, i as entered, l as useCapxulSend, n as CapxulOnboardingController, o as useCapxulDestination, p as useCapxul, r as CapxulProvider, s as useCapxulIdentity, t as CapxulAuthenticationController, u as useCapxulTransitions } from "./controllers-BPEhjKX9.mjs";
3
3
  import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
4
4
  import { useInfiniteQuery, useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
5
5
  import { CAPXUL_OPERATIONS, CapxulError, EVM_ADDRESS_RE, Errors, HANDLE_RE, PAYMENT_DIRECTIONS, PAYMENT_STATUSES, fingerprintPaymentIntent, formatMoney, isCapxulError, isClaimed, isClaimed as isClaimed$1, isMoneyParseError, isRestoring, isRestoring as isRestoring$1, parseMoney, paymentPhase, resolveIdentityDestination, toEvmAddress, toPartyId } from "@capxul/sdk";
@@ -702,7 +702,8 @@ function isValidJourney(value) {
702
702
  "profile",
703
703
  "organization",
704
704
  "stableHandle",
705
- "organizationId"
705
+ "organizationId",
706
+ "submission"
706
707
  ])) return false;
707
708
  if (!isBoundedId(value.ownerId)) return false;
708
709
  if (!isBoundedId(value.journeyId) || !value.journeyId.startsWith("journey_")) return false;
@@ -712,6 +713,7 @@ function isValidJourney(value) {
712
713
  if (value.origin !== void 0 && !isOrigin(value.origin)) return false;
713
714
  if (value.profile !== void 0 && !isProfileDraft(value.profile)) return false;
714
715
  if (value.organization !== void 0 && !isOrganizationDraft(value.organization)) return false;
716
+ if (value.submission !== void 0 && !isCreateOrganizationSubmission(value.submission)) return false;
715
717
  if (value.stableHandle !== void 0 && !isDraftText(value.stableHandle)) return false;
716
718
  if (value.organizationId !== void 0 && !isBoundedId(value.organizationId)) return false;
717
719
  if (value.organization !== void 0 && value.stableHandle !== value.organization.handle) return false;
@@ -734,12 +736,33 @@ function isProfileDraft(value) {
734
736
  "country",
735
737
  "withdrawalAddress",
736
738
  "handle",
737
- "payoutAddresses"
739
+ "payoutAddresses",
740
+ "imageStorageId"
738
741
  ]) || !isDraftText(value.displayName) || !isDraftText(value.country) || !isDraftText(value.withdrawalAddress)) return false;
739
742
  if (value.handle !== void 0 && !isDraftText(value.handle)) return false;
740
743
  if (value.payoutAddresses !== void 0 && !isPayoutDraftList(value.payoutAddresses)) return false;
744
+ if (value.imageStorageId !== void 0 && !isBoundedId(value.imageStorageId)) return false;
741
745
  return true;
742
746
  }
747
+ /**
748
+ * The submitted organization (#1955). ONE validator now — the app's duplicate
749
+ * of it is deleted, so a submit cannot be written by two writers with
750
+ * disagreeing rules and then rejected here.
751
+ */
752
+ function isCreateOrganizationSubmission(value) {
753
+ if (!isRecord(value) || !hasOnlyKeys(value, ["profileDetails", "organization"])) return false;
754
+ const { profileDetails, organization } = value;
755
+ if (!isRecord(profileDetails) || !hasOnlyKeys(profileDetails, [
756
+ "displayName",
757
+ "country",
758
+ "handle",
759
+ "imageStorageId",
760
+ "payoutAddresses"
761
+ ]) || !isDraftText(profileDetails.displayName) || !isDraftText(profileDetails.country) || !isDraftText(profileDetails.handle)) return false;
762
+ if (profileDetails.imageStorageId !== void 0 && !isBoundedId(profileDetails.imageStorageId)) return false;
763
+ if (profileDetails.payoutAddresses !== void 0 && !isPayoutDraftList(profileDetails.payoutAddresses)) return false;
764
+ return isOrganizationDraft(organization);
765
+ }
743
766
  function isPayoutDraftList(value) {
744
767
  return Array.isArray(value) && value.length <= MAX_PAYOUT_DRAFT_ENTRIES && value.every((entry) => isRecord(entry) && hasOnlyKeys(entry, ["chain", "address"]) && (entry.chain === "evm" || entry.chain === "solana" || entry.chain === "starknet") && isDraftText(entry.address));
745
768
  }
@@ -749,10 +772,12 @@ function isOrganizationDraft(value) {
749
772
  "handle",
750
773
  "country",
751
774
  "bio",
752
- "size"
775
+ "size",
776
+ "logoStorageId"
753
777
  ]) || !isDraftText(value.name) || !isDraftText(value.handle) || !isDraftText(value.country)) return false;
754
778
  if (value.bio !== void 0 && !isDraftText(value.bio)) return false;
755
779
  if (value.size !== void 0 && !isDraftText(value.size)) return false;
780
+ if (value.logoStorageId !== void 0 && !isBoundedId(value.logoStorageId)) return false;
756
781
  return true;
757
782
  }
758
783
  function isDraftText(value) {
@@ -836,6 +861,23 @@ function useCapxulImageUpload() {
836
861
  });
837
862
  }
838
863
  //#endregion
864
+ //#region src/headless/media/use-capxul-upload-image.ts
865
+ /**
866
+ * #1955: upload only. Hands back the storage id for a CREATE call to carry
867
+ * (`ProfileDetails.imageStorageId`, `OrganizationDetails.logoStorageId`).
868
+ *
869
+ * `useCapxulImageUpload` is upload+bind and stays as it is for the settings
870
+ * pages. It cannot serve onboarding: the row it binds to does not exist yet.
871
+ * Nothing is bound here, so nothing is invalidated either — the create call
872
+ * that carries the id owns the cache change.
873
+ */
874
+ function useCapxulUploadImage() {
875
+ const client = useCapxulClientOrNull();
876
+ return useMutation({ mutationFn: async (blob) => {
877
+ return { storageId: unwrapCapxulResult(await requireBootstrappedClient(client, CAPXUL_OPERATIONS.media.uploadImage).media.uploadImage(blob)).storageId };
878
+ } });
879
+ }
880
+ //#endregion
839
881
  //#region src/headless/contacts/use-contacts.ts
840
882
  function useContacts(input) {
841
883
  const { actor, onAdded, onFailed } = input;
@@ -2763,7 +2805,9 @@ async function executeRunDraft(candidate, work) {
2763
2805
  localStorage.setItem(storageKey(draft.scope), JSON.stringify(next));
2764
2806
  draft = next;
2765
2807
  }, clear);
2766
- clear();
2808
+ try {
2809
+ clear();
2810
+ } catch {}
2767
2811
  return run;
2768
2812
  });
2769
2813
  } catch (cause) {
@@ -3297,4 +3341,4 @@ const CapxulPayrollRun = Object.assign(Root, {
3297
3341
  Actions
3298
3342
  });
3299
3343
  //#endregion
3300
- export { CapxulActivity, CapxulAuthenticationController, CapxulContacts, CapxulDashboardAccess, CapxulOnboardingController, CapxulOrgMember, CapxulPayroll, CapxulPayrollRun, CapxulProvider, CapxulSendMoney, acknowledgeOnboardingDestination, activeOnboardingRecovery, capxulKeys, clearOnboardingJourney, currentOnboardingJourneyId, entered, invalidateOnboardingJourneyObservation, isClaimed, isRestoring, loadOnboardingJourney, onboardingJourneyPosition, saveOnboardingJourney, startOnboardingJourney, useCapxul, useCapxulAccountBalance, useCapxulAccountFund, useCapxulActivity, useCapxulActivityDetail, useCapxulAnnotateMovement, useCapxulAuth, useCapxulCancelPayment, useCapxulClaimPayment, useCapxulClientOrNull, useCapxulCreateCommitment, useCapxulCreateOrg, useCapxulDestination, useCapxulHandleAvailability, useCapxulHoldings, useCapxulIdentity, useCapxulImageUpload, useCapxulInviteMember, useCapxulOrgMembers, useCapxulOrgRoles, useCapxulOrgTreasury, useCapxulOrganizationPay, useCapxulOrganizationPayBatch, useCapxulOrgs, useCapxulPay, useCapxulPayment, useCapxulPayments, useCapxulPermission, useCapxulPermissionAssign, useCapxulPermissionChange, useCapxulPermissionCreate, useCapxulPermissionReplace, useCapxulPermissionRevoke, useCapxulPermissions, useCapxulProfile, useCapxulRedirectPayment, useCapxulSend, useCapxulTransitions };
3344
+ export { CapxulActivity, CapxulAuthenticationController, CapxulContacts, CapxulDashboardAccess, CapxulOnboardingController, CapxulOrgMember, CapxulPayroll, CapxulPayrollRun, CapxulProvider, CapxulSendMoney, acknowledgeOnboardingDestination, activeOnboardingRecovery, capxulKeys, clearOnboardingJourney, currentOnboardingJourneyId, entered, invalidateOnboardingJourneyObservation, isClaimed, isRestoring, loadOnboardingJourney, onboardingJourneyPosition, saveOnboardingJourney, startOnboardingJourney, useCapxul, useCapxulAccountBalance, useCapxulAccountFund, useCapxulActivity, useCapxulActivityDetail, useCapxulAnnotateMovement, useCapxulAuth, useCapxulCancelPayment, useCapxulClaimPayment, useCapxulClientOrNull, useCapxulCreateCommitment, useCapxulCreateOrg, useCapxulDestination, useCapxulHandleAvailability, useCapxulHoldings, useCapxulIdentity, useCapxulImageUpload, useCapxulInviteMember, useCapxulOrgMembers, useCapxulOrgRoles, useCapxulOrgTreasury, useCapxulOrganizationPay, useCapxulOrganizationPayBatch, useCapxulOrgs, useCapxulPay, useCapxulPayment, useCapxulPayments, useCapxulPermission, useCapxulPermissionAssign, useCapxulPermissionChange, useCapxulPermissionCreate, useCapxulPermissionReplace, useCapxulPermissionRevoke, useCapxulPermissions, useCapxulProfile, useCapxulRedirectPayment, useCapxulSend, useCapxulTransitions, useCapxulUploadImage };
@@ -1,4 +1,4 @@
1
- import { a as AuthenticationSlots, d as OnboardingControllerProps } from "../controllers-DIf8elqQ.mjs";
1
+ import { a as AuthenticationSlots, d as OnboardingControllerProps } from "../controllers-BWmKRFy6.mjs";
2
2
  import * as React from "react";
3
3
  import { ReactNode } from "react";
4
4
  import { CapxulTestClient, CapxulTestClock, CapxulTestObservation, CreateCapxulTestClientOptions, SeedTestIdentityInput, createCapxulTestClient } from "@capxul/sdk/testing";
@@ -1,4 +1,4 @@
1
- import { n as CapxulOnboardingController, r as CapxulProvider, t as CapxulAuthenticationController } from "../controllers-Dzk5AvfL.mjs";
1
+ import { n as CapxulOnboardingController, r as CapxulProvider, t as CapxulAuthenticationController } from "../controllers-BPEhjKX9.mjs";
2
2
  import "react";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  import { createCapxulTestClient } from "@capxul/sdk/testing";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@capxul/sdk-react",
3
- "version": "4.1.3",
3
+ "version": "4.2.0-rc.1",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/Xelmar-tech/infrastructure.git",
@@ -26,7 +26,7 @@
26
26
  "access": "public"
27
27
  },
28
28
  "dependencies": {
29
- "@capxul/sdk": "4.1.3"
29
+ "@capxul/sdk": "4.2.0-rc.1"
30
30
  },
31
31
  "devDependencies": {
32
32
  "@tanstack/react-query": "^5.66.9",