@singi-labs/sifa-sdk 0.19.44 → 0.19.45
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.
- package/dist/atproto/index.js +9 -3
- package/dist/atproto/index.js.map +1 -1
- package/dist/badge/index.js +5 -141
- package/dist/badge/index.js.map +1 -1
- package/dist/cards/adult-content.js +14 -0
- package/dist/cards/adult-content.js.map +1 -0
- package/dist/cards/app-url-patterns.js +369 -0
- package/dist/cards/app-url-patterns.js.map +1 -0
- package/dist/cards/index.js +24 -0
- package/dist/cards/index.js.map +1 -0
- package/dist/cards/resolve-card-url.js +198 -0
- package/dist/cards/resolve-card-url.js.map +1 -0
- package/dist/cards/visibility.js +45 -0
- package/dist/cards/visibility.js.map +1 -0
- package/dist/flags/index.js +4 -3
- package/dist/flags/index.js.map +1 -1
- package/dist/format/collapse-contributors.js +19 -0
- package/dist/format/collapse-contributors.js.map +1 -0
- package/dist/format/company-name.js +61 -0
- package/dist/format/company-name.js.map +1 -0
- package/dist/format/compare-text.js +9 -0
- package/dist/format/compare-text.js.map +1 -0
- package/dist/format/doi.js +8 -0
- package/dist/format/doi.js.map +1 -0
- package/dist/format/embed.js +131 -0
- package/dist/format/embed.js.map +1 -0
- package/dist/format/endorsement-context.js +35 -0
- package/dist/format/endorsement-context.js.map +1 -0
- package/dist/format/format-display-url.js +42 -0
- package/dist/format/format-display-url.js.map +1 -0
- package/dist/format/format-duration.js +13 -0
- package/dist/format/format-duration.js.map +1 -0
- package/dist/format/format-time.js +30 -0
- package/dist/format/format-time.js.map +1 -0
- package/dist/format/handle-utils.js +19 -0
- package/dist/format/handle-utils.js.map +1 -0
- package/dist/format/index.js +100 -0
- package/dist/format/index.js.map +1 -0
- package/dist/format/location-segments.js +29 -0
- package/dist/format/location-segments.js.map +1 -0
- package/dist/format/location-utils.js +42 -0
- package/dist/format/location-utils.js.map +1 -0
- package/dist/format/meta-description.js +35 -0
- package/dist/format/meta-description.js.map +1 -0
- package/dist/format/normalize-company-key.js +12 -0
- package/dist/format/normalize-company-key.js.map +1 -0
- package/dist/format/normalize-legal-form.js +71 -0
- package/dist/format/normalize-legal-form.js.map +1 -0
- package/dist/format/pds-utils.js +73 -0
- package/dist/format/pds-utils.js.map +1 -0
- package/dist/format/sort-by-date.js +39 -0
- package/dist/format/sort-by-date.js.map +1 -0
- package/dist/format/summarize-deliveries.js +37 -0
- package/dist/format/summarize-deliveries.js.map +1 -0
- package/dist/format/talk-slug.js +21 -0
- package/dist/format/talk-slug.js.map +1 -0
- package/dist/format/text-sanitize.js +29 -0
- package/dist/format/text-sanitize.js.map +1 -0
- package/dist/format/text-truncate.js +14 -0
- package/dist/format/text-truncate.js.map +1 -0
- package/dist/format/time-utils.js +19 -0
- package/dist/format/time-utils.js.map +1 -0
- package/dist/format/timeline.js +29 -0
- package/dist/format/timeline.js.map +1 -0
- package/dist/format/wcag-contrast.js +34 -0
- package/dist/format/wcag-contrast.js.map +1 -0
- package/dist/import/index.js +22 -0
- package/dist/import/index.js.map +1 -0
- package/dist/import/presentation-csv.js +116 -0
- package/dist/import/presentation-csv.js.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.js +675 -7086
- package/dist/index.js.map +1 -1
- package/dist/jev/index.js +18 -5
- package/dist/jev/index.js.map +1 -1
- package/dist/jsonld/index.js +30 -987
- package/dist/jsonld/index.js.map +1 -1
- package/dist/jsonld/profile.js +222 -0
- package/dist/jsonld/profile.js.map +1 -0
- package/dist/jsonld/terms.js +496 -0
- package/dist/jsonld/terms.js.map +1 -0
- package/dist/jsonld/url.js +17 -0
- package/dist/jsonld/url.js.map +1 -0
- package/dist/jsonld/works-graph.js +41 -0
- package/dist/jsonld/works-graph.js.map +1 -0
- package/dist/jsonld/works.js +178 -0
- package/dist/jsonld/works.js.map +1 -0
- package/dist/logic/actor-identity.js +8 -0
- package/dist/logic/actor-identity.js.map +1 -0
- package/dist/logic/agent-ref.js +24 -0
- package/dist/logic/agent-ref.js.map +1 -0
- package/dist/logic/company-page-indexable.js +23 -0
- package/dist/logic/company-page-indexable.js.map +1 -0
- package/dist/logic/date-lookahead.js +31 -0
- package/dist/logic/date-lookahead.js.map +1 -0
- package/dist/logic/domain-detect.js +43 -0
- package/dist/logic/domain-detect.js.map +1 -0
- package/dist/logic/entity-disambiguation.js +24 -0
- package/dist/logic/entity-disambiguation.js.map +1 -0
- package/dist/logic/entity-ref-anchor.js +33 -0
- package/dist/logic/entity-ref-anchor.js.map +1 -0
- package/dist/logic/index.js +91 -0
- package/dist/logic/index.js.map +1 -0
- package/dist/logic/org-floor.js +66 -0
- package/dist/logic/org-floor.js.map +1 -0
- package/dist/logic/primary-item.js +9 -0
- package/dist/logic/primary-item.js.map +1 -0
- package/dist/logic/primary-position.js +16 -0
- package/dist/logic/primary-position.js.map +1 -0
- package/dist/logic/profile-completeness.js +21 -0
- package/dist/logic/profile-completeness.js.map +1 -0
- package/dist/logic/profile-dimensions.js +50 -0
- package/dist/logic/profile-dimensions.js.map +1 -0
- package/dist/logic/profile-summary.js +23 -0
- package/dist/logic/profile-summary.js.map +1 -0
- package/dist/logic/pseudo-employer.js +34 -0
- package/dist/logic/pseudo-employer.js.map +1 -0
- package/dist/logic/recent-activity.js +10 -0
- package/dist/logic/recent-activity.js.map +1 -0
- package/dist/logic/self-app.js +10 -0
- package/dist/logic/self-app.js.map +1 -0
- package/dist/{org-BCrvebcf.d.ts → org-CxTEjjrm.d.ts} +1 -1
- package/dist/{org-settings-C73Sin5E.d.ts → org-settings-BShvhyFp.d.ts} +1 -1
- package/dist/profile/headline-role-dedupe.js +12 -0
- package/dist/profile/headline-role-dedupe.js.map +1 -0
- package/dist/profile/highlights.js +200 -0
- package/dist/profile/highlights.js.map +1 -0
- package/dist/profile/index.js +66 -0
- package/dist/profile/index.js.map +1 -0
- package/dist/profile/involvement-grouping.js +31 -0
- package/dist/profile/involvement-grouping.js.map +1 -0
- package/dist/profile/language-sort.js +24 -0
- package/dist/profile/language-sort.js.map +1 -0
- package/dist/profile/publication-versions.js +98 -0
- package/dist/profile/publication-versions.js.map +1 -0
- package/dist/profile/range-sort.js +14 -0
- package/dist/profile/range-sort.js.map +1 -0
- package/dist/profile/section-model.js +122 -0
- package/dist/profile/section-model.js.map +1 -0
- package/dist/profile/section-sorts.js +33 -0
- package/dist/profile/section-sorts.js.map +1 -0
- package/dist/publishers/index.js +16 -0
- package/dist/publishers/index.js.map +1 -0
- package/dist/publishers/registry.js +87 -0
- package/dist/publishers/registry.js.map +1 -0
- package/dist/publishing/index.js +46 -184
- package/dist/publishing/index.js.map +1 -1
- package/dist/publishing/linkblog.js +42 -0
- package/dist/publishing/linkblog.js.map +1 -0
- package/dist/publishing/registry.js +32 -0
- package/dist/publishing/registry.js.map +1 -0
- package/dist/publishing/schemas.js +74 -0
- package/dist/publishing/schemas.js.map +1 -0
- package/dist/publishing/types.js +32 -0
- package/dist/publishing/types.js.map +1 -0
- package/dist/query/client.js +119 -0
- package/dist/query/client.js.map +1 -0
- package/dist/query/config.js +23 -0
- package/dist/query/config.js.map +1 -0
- package/dist/query/fetchers/accounts.js +29 -0
- package/dist/query/fetchers/accounts.js.map +1 -0
- package/dist/query/fetchers/activity-items-hide.js +31 -0
- package/dist/query/fetchers/activity-items-hide.js.map +1 -0
- package/dist/query/fetchers/activity.js +61 -0
- package/dist/query/fetchers/activity.js.map +1 -0
- package/dist/query/fetchers/actor.js +30 -0
- package/dist/query/fetchers/actor.js.map +1 -0
- package/dist/query/fetchers/admin-feature-allowlists.js +41 -0
- package/dist/query/fetchers/admin-feature-allowlists.js.map +1 -0
- package/dist/query/fetchers/admin-review-queues.js +30 -0
- package/dist/query/fetchers/admin-review-queues.js.map +1 -0
- package/dist/query/fetchers/apps.js +31 -0
- package/dist/query/fetchers/apps.js.map +1 -0
- package/dist/query/fetchers/bsky-preferences.js +55 -0
- package/dist/query/fetchers/bsky-preferences.js.map +1 -0
- package/dist/query/fetchers/confirmations.js +55 -0
- package/dist/query/fetchers/confirmations.js.map +1 -0
- package/dist/query/fetchers/destructive.js +34 -0
- package/dist/query/fetchers/destructive.js.map +1 -0
- package/dist/query/fetchers/discovery.js +67 -0
- package/dist/query/fetchers/discovery.js.map +1 -0
- package/dist/query/fetchers/education.js +23 -0
- package/dist/query/fetchers/education.js.map +1 -0
- package/dist/query/fetchers/endorsement-inbox.js +36 -0
- package/dist/query/fetchers/endorsement-inbox.js.map +1 -0
- package/dist/query/fetchers/endorsement.js +23 -0
- package/dist/query/fetchers/endorsement.js.map +1 -0
- package/dist/query/fetchers/endorsements.js +20 -0
- package/dist/query/fetchers/endorsements.js.map +1 -0
- package/dist/query/fetchers/entities.js +65 -0
- package/dist/query/fetchers/entities.js.map +1 -0
- package/dist/query/fetchers/external-accounts.js +74 -0
- package/dist/query/fetchers/external-accounts.js.map +1 -0
- package/dist/query/fetchers/follow-extras.js +38 -0
- package/dist/query/fetchers/follow-extras.js.map +1 -0
- package/dist/query/fetchers/follow.js +105 -0
- package/dist/query/fetchers/follow.js.map +1 -0
- package/dist/query/fetchers/get-profile-view.js +21 -0
- package/dist/query/fetchers/get-profile-view.js.map +1 -0
- package/dist/query/fetchers/github-prs.js +45 -0
- package/dist/query/fetchers/github-prs.js.map +1 -0
- package/dist/query/fetchers/inbox.js +29 -0
- package/dist/query/fetchers/inbox.js.map +1 -0
- package/dist/query/fetchers/index.d.ts +2 -2
- package/dist/query/fetchers/index.js +360 -2045
- package/dist/query/fetchers/index.js.map +1 -1
- package/dist/query/fetchers/investments.js +18 -0
- package/dist/query/fetchers/investments.js.map +1 -0
- package/dist/query/fetchers/keytrace-claims.js +23 -0
- package/dist/query/fetchers/keytrace-claims.js.map +1 -0
- package/dist/query/fetchers/marque-domains.js +23 -0
- package/dist/query/fetchers/marque-domains.js.map +1 -0
- package/dist/query/fetchers/network-map.js +36 -0
- package/dist/query/fetchers/network-map.js.map +1 -0
- package/dist/query/fetchers/org.js +48 -0
- package/dist/query/fetchers/org.js.map +1 -0
- package/dist/query/fetchers/positions.js +77 -0
- package/dist/query/fetchers/positions.js.map +1 -0
- package/dist/query/fetchers/profile-completeness.js +45 -0
- package/dist/query/fetchers/profile-completeness.js.map +1 -0
- package/dist/query/fetchers/profile-items-hide.js +36 -0
- package/dist/query/fetchers/profile-items-hide.js.map +1 -0
- package/dist/query/fetchers/profile-locations.js +23 -0
- package/dist/query/fetchers/profile-locations.js.map +1 -0
- package/dist/query/fetchers/profile-mutations.js +82 -0
- package/dist/query/fetchers/profile-mutations.js.map +1 -0
- package/dist/query/fetchers/profile-summary.js +14 -0
- package/dist/query/fetchers/profile-summary.js.map +1 -0
- package/dist/query/fetchers/profile.js +31 -0
- package/dist/query/fetchers/profile.js.map +1 -0
- package/dist/query/fetchers/publications.js +66 -0
- package/dist/query/fetchers/publications.js.map +1 -0
- package/dist/query/fetchers/quoted-posts.js +40 -0
- package/dist/query/fetchers/quoted-posts.js.map +1 -0
- package/dist/query/fetchers/reactions.js +85 -0
- package/dist/query/fetchers/reactions.js.map +1 -0
- package/dist/query/fetchers/received-endorsements.js +20 -0
- package/dist/query/fetchers/received-endorsements.js.map +1 -0
- package/dist/query/fetchers/reciprocity.js +23 -0
- package/dist/query/fetchers/reciprocity.js.map +1 -0
- package/dist/query/fetchers/records.js +27 -0
- package/dist/query/fetchers/records.js.map +1 -0
- package/dist/query/fetchers/repo-inventory.js +23 -0
- package/dist/query/fetchers/repo-inventory.js.map +1 -0
- package/dist/query/fetchers/roadmap.js +73 -0
- package/dist/query/fetchers/roadmap.js.map +1 -0
- package/dist/query/fetchers/rpg.js +36 -0
- package/dist/query/fetchers/rpg.js.map +1 -0
- package/dist/query/fetchers/search.js +78 -0
- package/dist/query/fetchers/search.js.map +1 -0
- package/dist/query/fetchers/section-primary.js +23 -0
- package/dist/query/fetchers/section-primary.js.map +1 -0
- package/dist/query/fetchers/skills.js +30 -0
- package/dist/query/fetchers/skills.js.map +1 -0
- package/dist/query/fetchers/speakers.js +42 -0
- package/dist/query/fetchers/speakers.js.map +1 -0
- package/dist/query/fetchers/stats.js +16 -0
- package/dist/query/fetchers/stats.js.map +1 -0
- package/dist/query/fetchers/stream.js +30 -0
- package/dist/query/fetchers/stream.js.map +1 -0
- package/dist/query/fetchers/unlinked-positions.js +30 -0
- package/dist/query/fetchers/unlinked-positions.js.map +1 -0
- package/dist/query/hooks/index.d.ts +3 -3
- package/dist/query/hooks/index.js +283 -3555
- package/dist/query/hooks/index.js.map +1 -1
- package/dist/query/hooks/use-accounts.js +19 -0
- package/dist/query/hooks/use-accounts.js.map +1 -0
- package/dist/query/hooks/use-activity-items-hide.js +52 -0
- package/dist/query/hooks/use-activity-items-hide.js.map +1 -0
- package/dist/query/hooks/use-activity.js +44 -0
- package/dist/query/hooks/use-activity.js.map +1 -0
- package/dist/query/hooks/use-admin-review-queues.js +21 -0
- package/dist/query/hooks/use-admin-review-queues.js.map +1 -0
- package/dist/query/hooks/use-apps.js +31 -0
- package/dist/query/hooks/use-apps.js.map +1 -0
- package/dist/query/hooks/use-bsky-content-prefs.js +45 -0
- package/dist/query/hooks/use-bsky-content-prefs.js.map +1 -0
- package/dist/query/hooks/use-confirmations.js +121 -0
- package/dist/query/hooks/use-confirmations.js.map +1 -0
- package/dist/query/hooks/use-create-position.js +28 -0
- package/dist/query/hooks/use-create-position.js.map +1 -0
- package/dist/query/hooks/use-destructive.js +63 -0
- package/dist/query/hooks/use-destructive.js.map +1 -0
- package/dist/query/hooks/use-discovery.js +53 -0
- package/dist/query/hooks/use-discovery.js.map +1 -0
- package/dist/query/hooks/use-education-mutations.js +67 -0
- package/dist/query/hooks/use-education-mutations.js.map +1 -0
- package/dist/query/hooks/use-endorsement-inbox.js +80 -0
- package/dist/query/hooks/use-endorsement-inbox.js.map +1 -0
- package/dist/query/hooks/use-endorsement-mutations.js +33 -0
- package/dist/query/hooks/use-endorsement-mutations.js.map +1 -0
- package/dist/query/hooks/use-endorsement.js +20 -0
- package/dist/query/hooks/use-endorsement.js.map +1 -0
- package/dist/query/hooks/use-entity-search.js +73 -0
- package/dist/query/hooks/use-entity-search.js.map +1 -0
- package/dist/query/hooks/use-external-accounts.js +143 -0
- package/dist/query/hooks/use-external-accounts.js.map +1 -0
- package/dist/query/hooks/use-feature-allowlist.js +104 -0
- package/dist/query/hooks/use-feature-allowlist.js.map +1 -0
- package/dist/query/hooks/use-follow-extras.js +38 -0
- package/dist/query/hooks/use-follow-extras.js.map +1 -0
- package/dist/query/hooks/use-follow.js +113 -0
- package/dist/query/hooks/use-follow.js.map +1 -0
- package/dist/query/hooks/use-get-profile-view.js +20 -0
- package/dist/query/hooks/use-get-profile-view.js.map +1 -0
- package/dist/query/hooks/use-github-prs.js +21 -0
- package/dist/query/hooks/use-github-prs.js.map +1 -0
- package/dist/query/hooks/use-inbox.js +19 -0
- package/dist/query/hooks/use-inbox.js.map +1 -0
- package/dist/query/hooks/use-investment-mutations.js +65 -0
- package/dist/query/hooks/use-investment-mutations.js.map +1 -0
- package/dist/query/hooks/use-keytrace-claims.js +50 -0
- package/dist/query/hooks/use-keytrace-claims.js.map +1 -0
- package/dist/query/hooks/use-location-mutations.js +71 -0
- package/dist/query/hooks/use-location-mutations.js.map +1 -0
- package/dist/query/hooks/use-marque-domains.js +50 -0
- package/dist/query/hooks/use-marque-domains.js.map +1 -0
- package/dist/query/hooks/use-org-claim.js +29 -0
- package/dist/query/hooks/use-org-claim.js.map +1 -0
- package/dist/query/hooks/use-org-domains.js +28 -0
- package/dist/query/hooks/use-org-domains.js.map +1 -0
- package/dist/query/hooks/use-org-notification-emails.js +28 -0
- package/dist/query/hooks/use-org-notification-emails.js.map +1 -0
- package/dist/query/hooks/use-org-profile-settings.js +29 -0
- package/dist/query/hooks/use-org-profile-settings.js.map +1 -0
- package/dist/query/hooks/use-org-profile.js +21 -0
- package/dist/query/hooks/use-org-profile.js.map +1 -0
- package/dist/query/hooks/use-position-mutations.js +128 -0
- package/dist/query/hooks/use-position-mutations.js.map +1 -0
- package/dist/query/hooks/use-profile-completeness.js +21 -0
- package/dist/query/hooks/use-profile-completeness.js.map +1 -0
- package/dist/query/hooks/use-profile-items-hide.js +53 -0
- package/dist/query/hooks/use-profile-items-hide.js.map +1 -0
- package/dist/query/hooks/use-profile-mutations.js +143 -0
- package/dist/query/hooks/use-profile-mutations.js.map +1 -0
- package/dist/query/hooks/use-profile.js +30 -0
- package/dist/query/hooks/use-profile.js.map +1 -0
- package/dist/query/hooks/use-publication-mutations.js +90 -0
- package/dist/query/hooks/use-publication-mutations.js.map +1 -0
- package/dist/query/hooks/use-reaction-mutations.js +48 -0
- package/dist/query/hooks/use-reaction-mutations.js.map +1 -0
- package/dist/query/hooks/use-reactions.js +32 -0
- package/dist/query/hooks/use-reactions.js.map +1 -0
- package/dist/query/hooks/use-received-endorsements.js +23 -0
- package/dist/query/hooks/use-received-endorsements.js.map +1 -0
- package/dist/query/hooks/use-reciprocity.js +19 -0
- package/dist/query/hooks/use-reciprocity.js.map +1 -0
- package/dist/query/hooks/use-record-mutations.js +67 -0
- package/dist/query/hooks/use-record-mutations.js.map +1 -0
- package/dist/query/hooks/use-repo-inventory.js +43 -0
- package/dist/query/hooks/use-repo-inventory.js.map +1 -0
- package/dist/query/hooks/use-roadmap-mutations.js +51 -0
- package/dist/query/hooks/use-roadmap-mutations.js.map +1 -0
- package/dist/query/hooks/use-roadmap.js +31 -0
- package/dist/query/hooks/use-roadmap.js.map +1 -0
- package/dist/query/hooks/use-search.js +63 -0
- package/dist/query/hooks/use-search.js.map +1 -0
- package/dist/query/hooks/use-section-primary-mutations.js +53 -0
- package/dist/query/hooks/use-section-primary-mutations.js.map +1 -0
- package/dist/query/hooks/use-skill-mutations.js +91 -0
- package/dist/query/hooks/use-skill-mutations.js.map +1 -0
- package/dist/query/hooks/use-stats.js +19 -0
- package/dist/query/hooks/use-stats.js.map +1 -0
- package/dist/query/hooks/use-stream.js +20 -0
- package/dist/query/hooks/use-stream.js.map +1 -0
- package/dist/query/hooks/use-unlinked-positions.js +45 -0
- package/dist/query/hooks/use-unlinked-positions.js.map +1 -0
- package/dist/query/index.d.ts +4 -4
- package/dist/query/index.js +685 -3744
- package/dist/query/index.js.map +1 -1
- package/dist/query/keys.js +138 -0
- package/dist/query/keys.js.map +1 -0
- package/dist/repo/groups.js +81 -0
- package/dist/repo/groups.js.map +1 -0
- package/dist/repo/index.js +9 -0
- package/dist/repo/index.js.map +1 -0
- package/dist/repo/labels.js +121 -0
- package/dist/repo/labels.js.map +1 -0
- package/dist/repo/types.js +1 -0
- package/dist/repo/types.js.map +1 -0
- package/dist/resume/index.js +5 -179
- package/dist/resume/index.js.map +1 -1
- package/dist/resume/json-resume.js +153 -0
- package/dist/resume/json-resume.js.map +1 -0
- package/dist/roadmap/index.js +101 -0
- package/dist/roadmap/index.js.map +1 -0
- package/dist/rpg/catalog.js +101 -0
- package/dist/rpg/catalog.js.map +1 -0
- package/dist/rpg/index.js +13 -116
- package/dist/rpg/index.js.map +1 -1
- package/dist/rpg/unlocks.js +21 -0
- package/dist/rpg/unlocks.js.map +1 -0
- package/dist/schemas/blob-ref.js +12 -0
- package/dist/schemas/blob-ref.js.map +1 -0
- package/dist/schemas/confirmation.js +23 -0
- package/dist/schemas/confirmation.js.map +1 -0
- package/dist/schemas/endorsement-confirmation.js +18 -0
- package/dist/schemas/endorsement-confirmation.js.map +1 -0
- package/dist/schemas/endorsement.js +19 -0
- package/dist/schemas/endorsement.js.map +1 -0
- package/dist/schemas/entity.js +74 -0
- package/dist/schemas/entity.js.map +1 -0
- package/dist/schemas/feed.js +73 -0
- package/dist/schemas/feed.js.map +1 -0
- package/dist/schemas/follow-profile.js +32 -0
- package/dist/schemas/follow-profile.js.map +1 -0
- package/dist/schemas/graph-follow.js +19 -0
- package/dist/schemas/graph-follow.js.map +1 -0
- package/dist/schemas/index.js +164 -629
- package/dist/schemas/index.js.map +1 -1
- package/dist/schemas/org-employment-attestation.js +28 -0
- package/dist/schemas/org-employment-attestation.js.map +1 -0
- package/dist/schemas/org-profile.js +64 -0
- package/dist/schemas/org-profile.js.map +1 -0
- package/dist/schemas/profile-certification.js +28 -0
- package/dist/schemas/profile-certification.js.map +1 -0
- package/dist/schemas/profile-course.js +32 -0
- package/dist/schemas/profile-course.js.map +1 -0
- package/dist/schemas/profile-education.js +33 -0
- package/dist/schemas/profile-education.js.map +1 -0
- package/dist/schemas/profile-external-account.js +15 -0
- package/dist/schemas/profile-external-account.js.map +1 -0
- package/dist/schemas/profile-honor.js +18 -0
- package/dist/schemas/profile-honor.js.map +1 -0
- package/dist/schemas/profile-investment.js +48 -0
- package/dist/schemas/profile-investment.js.map +1 -0
- package/dist/schemas/profile-involvement.js +47 -0
- package/dist/schemas/profile-involvement.js.map +1 -0
- package/dist/schemas/profile-language.js +12 -0
- package/dist/schemas/profile-language.js.map +1 -0
- package/dist/schemas/profile-position.js +42 -0
- package/dist/schemas/profile-position.js.map +1 -0
- package/dist/schemas/profile-presentation-delivery.js +38 -0
- package/dist/schemas/profile-presentation-delivery.js.map +1 -0
- package/dist/schemas/profile-presentation.js +36 -0
- package/dist/schemas/profile-presentation.js.map +1 -0
- package/dist/schemas/profile-project.js +48 -0
- package/dist/schemas/profile-project.js.map +1 -0
- package/dist/schemas/profile-publication.js +30 -0
- package/dist/schemas/profile-publication.js.map +1 -0
- package/dist/schemas/profile-self.js +22 -0
- package/dist/schemas/profile-self.js.map +1 -0
- package/dist/schemas/profile-skill.js +13 -0
- package/dist/schemas/profile-skill.js.map +1 -0
- package/dist/schemas/profile-volunteering.js +20 -0
- package/dist/schemas/profile-volunteering.js.map +1 -0
- package/dist/schemas/shared.js +56 -0
- package/dist/schemas/shared.js.map +1 -0
- package/dist/schemas/write/certification.js +16 -0
- package/dist/schemas/write/certification.js.map +1 -0
- package/dist/schemas/write/course.js +36 -0
- package/dist/schemas/write/course.js.map +1 -0
- package/dist/schemas/write/education.js +18 -0
- package/dist/schemas/write/education.js.map +1 -0
- package/dist/schemas/write/external-account.js +13 -0
- package/dist/schemas/write/external-account.js.map +1 -0
- package/dist/schemas/write/honor.js +14 -0
- package/dist/schemas/write/honor.js.map +1 -0
- package/dist/schemas/write/index.d.ts +1 -1
- package/dist/schemas/write/index.js +89 -593
- package/dist/schemas/write/index.js.map +1 -1
- package/dist/schemas/write/investment.js +32 -0
- package/dist/schemas/write/investment.js.map +1 -0
- package/dist/schemas/write/involvement.js +34 -0
- package/dist/schemas/write/involvement.js.map +1 -0
- package/dist/schemas/write/language.js +10 -0
- package/dist/schemas/write/language.js.map +1 -0
- package/dist/schemas/write/org-claim.js +56 -0
- package/dist/schemas/write/org-claim.js.map +1 -0
- package/dist/schemas/write/org-employment-attestation.js +19 -0
- package/dist/schemas/write/org-employment-attestation.js.map +1 -0
- package/dist/schemas/write/org-profile.js +54 -0
- package/dist/schemas/write/org-profile.js.map +1 -0
- package/dist/schemas/write/org-settings.js +81 -0
- package/dist/schemas/write/org-settings.js.map +1 -0
- package/dist/schemas/write/position.js +24 -0
- package/dist/schemas/write/position.js.map +1 -0
- package/dist/schemas/write/presentation-delivery.js +34 -0
- package/dist/schemas/write/presentation-delivery.js.map +1 -0
- package/dist/schemas/write/presentation.js +23 -0
- package/dist/schemas/write/presentation.js.map +1 -0
- package/dist/schemas/write/profile-location.js +21 -0
- package/dist/schemas/write/profile-location.js.map +1 -0
- package/dist/schemas/write/profile-self.js +27 -0
- package/dist/schemas/write/profile-self.js.map +1 -0
- package/dist/schemas/write/project.js +27 -0
- package/dist/schemas/write/project.js.map +1 -0
- package/dist/schemas/write/publication.js +41 -0
- package/dist/schemas/write/publication.js.map +1 -0
- package/dist/schemas/write/shared.js +96 -0
- package/dist/schemas/write/shared.js.map +1 -0
- package/dist/schemas/write/skill.js +18 -0
- package/dist/schemas/write/skill.js.map +1 -0
- package/dist/schemas/write/volunteering.js +16 -0
- package/dist/schemas/write/volunteering.js.map +1 -0
- package/dist/stream/activity-item.js +1 -0
- package/dist/stream/activity-item.js.map +1 -0
- package/dist/stream/index.js +49 -0
- package/dist/stream/index.js.map +1 -0
- package/dist/stream/stream-card-vm-schema.js +265 -0
- package/dist/stream/stream-card-vm-schema.js.map +1 -0
- package/dist/stream/stream-card-vm.js +1 -0
- package/dist/stream/stream-card-vm.js.map +1 -0
- package/dist/stream/to-stream-card-vm.js +793 -0
- package/dist/stream/to-stream-card-vm.js.map +1 -0
- package/dist/stream/two-tier.js +30 -0
- package/dist/stream/two-tier.js.map +1 -0
- package/dist/stream/verbs.js +120 -0
- package/dist/stream/verbs.js.map +1 -0
- package/dist/taxonomy/activity-tiers.js +956 -0
- package/dist/taxonomy/activity-tiers.js.map +1 -0
- package/dist/taxonomy/app-categories.js +42 -0
- package/dist/taxonomy/app-categories.js.map +1 -0
- package/dist/taxonomy/app-category-map.js +166 -0
- package/dist/taxonomy/app-category-map.js.map +1 -0
- package/dist/taxonomy/artifact-link-kind.js +29 -0
- package/dist/taxonomy/artifact-link-kind.js.map +1 -0
- package/dist/taxonomy/calendar-event.js +28 -0
- package/dist/taxonomy/calendar-event.js.map +1 -0
- package/dist/taxonomy/continents.js +215 -0
- package/dist/taxonomy/continents.js.map +1 -0
- package/dist/taxonomy/countries.js +203 -0
- package/dist/taxonomy/countries.js.map +1 -0
- package/dist/taxonomy/course-role.js +37 -0
- package/dist/taxonomy/course-role.js.map +1 -0
- package/dist/taxonomy/employment-type.js +82 -0
- package/dist/taxonomy/employment-type.js.map +1 -0
- package/dist/taxonomy/eqf-level.js +59 -0
- package/dist/taxonomy/eqf-level.js.map +1 -0
- package/dist/taxonomy/index.js +263 -0
- package/dist/taxonomy/index.js.map +1 -0
- package/dist/taxonomy/industry-taxonomy.js +281 -0
- package/dist/taxonomy/industry-taxonomy.js.map +1 -0
- package/dist/taxonomy/investment.js +54 -0
- package/dist/taxonomy/investment.js.map +1 -0
- package/dist/taxonomy/involvement-kind.js +30 -0
- package/dist/taxonomy/involvement-kind.js.map +1 -0
- package/dist/taxonomy/open-to.js +128 -0
- package/dist/taxonomy/open-to.js.map +1 -0
- package/dist/taxonomy/platforms.js +56 -0
- package/dist/taxonomy/platforms.js.map +1 -0
- package/dist/taxonomy/presentation-link-type.js +22 -0
- package/dist/taxonomy/presentation-link-type.js.map +1 -0
- package/dist/taxonomy/presentation-role.js +21 -0
- package/dist/taxonomy/presentation-role.js.map +1 -0
- package/dist/taxonomy/publication-type.js +54 -0
- package/dist/taxonomy/publication-type.js.map +1 -0
- package/dist/taxonomy/relational.js +25 -0
- package/dist/taxonomy/relational.js.map +1 -0
- package/dist/taxonomy/search-filter-defs.js +66 -0
- package/dist/taxonomy/search-filter-defs.js.map +1 -0
- package/dist/taxonomy/skill-categories.js +28 -0
- package/dist/taxonomy/skill-categories.js.map +1 -0
- package/dist/taxonomy/skill-display-groups.js +12 -0
- package/dist/taxonomy/skill-display-groups.js.map +1 -0
- package/dist/taxonomy/skill-grouping.js +90 -0
- package/dist/taxonomy/skill-grouping.js.map +1 -0
- package/dist/taxonomy/verification-providers.js +69 -0
- package/dist/taxonomy/verification-providers.js.map +1 -0
- package/dist/taxonomy/workplace-type.js +38 -0
- package/dist/taxonomy/workplace-type.js.map +1 -0
- package/dist/tokens/colors.js +11 -0
- package/dist/tokens/colors.js.map +1 -0
- package/dist/tokens/icons.js +15 -0
- package/dist/tokens/icons.js.map +1 -0
- package/dist/tokens/index.js +10 -39
- package/dist/tokens/index.js.map +1 -1
- package/dist/tokens/typography.js +23 -0
- package/dist/tokens/typography.js.map +1 -0
- package/dist/types/index.js +10 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/profile-view.js +1 -0
- package/dist/types/profile-view.js.map +1 -0
- package/dist/{use-org-notification-emails-0hjt-dEw.d.ts → use-org-notification-emails-CWWi1D8t.d.ts} +2 -2
- package/package.json +4 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/query/hooks/use-org-profile-settings.ts"],"sourcesContent":["'use client';\n\nimport { useMutation, useQueryClient, type UseMutationOptions } from '@tanstack/react-query';\n\nimport type { WriteResult } from '../client.js';\nimport { useSifaConfig } from '../config.js';\nimport { updateOrgProfile, type OrgProfileUpdateResult } from '../fetchers/org.js';\nimport type { OrgProfileUpdateRequestInput } from '../../schemas/write/org-settings.js';\nimport { sifaQueryKeys } from '../keys.js';\n\ntype OrgProfileUpdateMutationResult = WriteResult & Partial<OrgProfileUpdateResult>;\n\n/**\n * Edit the org record (`PUT /api/org/profile`). Pass the org's handle/DID to\n * invalidate the profile cache (org floor verdict + fields) on success.\n */\nexport function useUpdateOrgProfile(\n handleOrDid: string | null,\n options?: Omit<\n UseMutationOptions<OrgProfileUpdateMutationResult, Error, OrgProfileUpdateRequestInput>,\n 'mutationFn'\n >,\n) {\n const config = useSifaConfig();\n const queryClient = useQueryClient();\n return useMutation({\n // Spread first: a consumer-supplied onSuccess would otherwise replace the\n // handler below and silently drop cache invalidation (#453).\n ...options,\n mutationFn: (body: OrgProfileUpdateRequestInput) => updateOrgProfile(config, body),\n onSuccess: async (result, variables, onMutateResult, context) => {\n if (result.success && handleOrDid) {\n await queryClient.invalidateQueries({\n queryKey: sifaQueryKeys.profile.byHandle(handleOrDid),\n });\n }\n await options?.onSuccess?.(result, variables, onMutateResult, context);\n },\n });\n}\n"],"mappings":";;;AAEA,SAAS,aAAa,sBAA+C;AAGrE,SAAS,qBAAqB;AAC9B,SAAS,wBAAqD;AAE9D,SAAS,qBAAqB;AAQvB,SAAS,oBACd,aACA,SAIA;AACA,QAAM,SAAS,cAAc;AAC7B,QAAM,cAAc,eAAe;AACnC,SAAO,YAAY;AAAA;AAAA;AAAA,IAGjB,GAAG;AAAA,IACH,YAAY,CAAC,SAAuC,iBAAiB,QAAQ,IAAI;AAAA,IACjF,WAAW,OAAO,QAAQ,WAAW,gBAAgB,YAAY;AAC/D,UAAI,OAAO,WAAW,aAAa;AACjC,cAAM,YAAY,kBAAkB;AAAA,UAClC,UAAU,cAAc,QAAQ,SAAS,WAAW;AAAA,QACtD,CAAC;AAAA,MACH;AACA,YAAM,SAAS,YAAY,QAAQ,WAAW,gBAAgB,OAAO;AAAA,IACvE;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// src/query/hooks/use-org-profile.ts
|
|
4
|
+
import { useQuery } from "@tanstack/react-query";
|
|
5
|
+
import { useSifaConfig } from "../config.js";
|
|
6
|
+
import { fetchProfile } from "../fetchers/profile.js";
|
|
7
|
+
import { sifaQueryKeys } from "../keys.js";
|
|
8
|
+
function useOrgProfile(handleOrDid, options) {
|
|
9
|
+
const config = useSifaConfig();
|
|
10
|
+
return useQuery({
|
|
11
|
+
queryKey: sifaQueryKeys.profile.byHandle(handleOrDid ?? ""),
|
|
12
|
+
queryFn: () => fetchProfile(config, handleOrDid ?? ""),
|
|
13
|
+
enabled: Boolean(handleOrDid) && (options?.enabled ?? true),
|
|
14
|
+
select: (profile) => profile?.org ?? null,
|
|
15
|
+
...options
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
export {
|
|
19
|
+
useOrgProfile
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=use-org-profile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/query/hooks/use-org-profile.ts"],"sourcesContent":["'use client';\n\nimport { useQuery, type UseQueryOptions } from '@tanstack/react-query';\n\nimport type { OrgFloorVerdict, Profile } from '../../types/index.js';\nimport { useSifaConfig } from '../config.js';\nimport { fetchProfile } from '../fetchers/profile.js';\nimport { sifaQueryKeys } from '../keys.js';\n\n/**\n * Read the server-computed org rendering-floor verdict for a handle or DID.\n *\n * The verdict rides the profile resolve (`GET /api/profile/:handleOrDid`), so\n * this hook reuses the `profile.byHandle` query key -- it shares the cache with\n * {@link useProfile} and never triggers a second round-trip. Returns\n * `OrgFloorVerdict | null` (`null` when the profile is missing or predates the\n * `org` field).\n */\nexport function useOrgProfile(\n handleOrDid: string | undefined | null,\n options?: Omit<\n UseQueryOptions<\n Profile | null,\n Error,\n OrgFloorVerdict | null,\n ReturnType<typeof sifaQueryKeys.profile.byHandle>\n >,\n 'queryKey' | 'queryFn' | 'select'\n >,\n) {\n const config = useSifaConfig();\n return useQuery({\n queryKey: sifaQueryKeys.profile.byHandle(handleOrDid ?? ''),\n queryFn: () => fetchProfile(config, handleOrDid ?? ''),\n enabled: Boolean(handleOrDid) && (options?.enabled ?? true),\n select: (profile) => profile?.org ?? null,\n ...options,\n });\n}\n"],"mappings":";;;AAEA,SAAS,gBAAsC;AAG/C,SAAS,qBAAqB;AAC9B,SAAS,oBAAoB;AAC7B,SAAS,qBAAqB;AAWvB,SAAS,cACd,aACA,SASA;AACA,QAAM,SAAS,cAAc;AAC7B,SAAO,SAAS;AAAA,IACd,UAAU,cAAc,QAAQ,SAAS,eAAe,EAAE;AAAA,IAC1D,SAAS,MAAM,aAAa,QAAQ,eAAe,EAAE;AAAA,IACrD,SAAS,QAAQ,WAAW,MAAM,SAAS,WAAW;AAAA,IACtD,QAAQ,CAAC,YAAY,SAAS,OAAO;AAAA,IACrC,GAAG;AAAA,EACL,CAAC;AACH;","names":[]}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// src/query/hooks/use-position-mutations.ts
|
|
4
|
+
import { useMutation, useQueryClient } from "@tanstack/react-query";
|
|
5
|
+
import "../client.js";
|
|
6
|
+
import { useSifaConfig } from "../config.js";
|
|
7
|
+
import {
|
|
8
|
+
deletePosition,
|
|
9
|
+
linkSkillToPosition,
|
|
10
|
+
setPositionPrimary,
|
|
11
|
+
unlinkSkillFromPosition,
|
|
12
|
+
unsetPositionPrimary,
|
|
13
|
+
updatePosition
|
|
14
|
+
} from "../fetchers/positions.js";
|
|
15
|
+
import { sifaQueryKeys } from "../keys.js";
|
|
16
|
+
async function invalidatePositionCaches(queryClient, ownerHandleOrDid) {
|
|
17
|
+
await queryClient.invalidateQueries({
|
|
18
|
+
queryKey: sifaQueryKeys.profile.byHandle(ownerHandleOrDid)
|
|
19
|
+
});
|
|
20
|
+
await queryClient.invalidateQueries({
|
|
21
|
+
queryKey: sifaQueryKeys.position.byOwner(ownerHandleOrDid)
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
function useUpdatePosition(ownerHandleOrDid, options) {
|
|
25
|
+
const config = useSifaConfig();
|
|
26
|
+
const queryClient = useQueryClient();
|
|
27
|
+
return useMutation({
|
|
28
|
+
// Spread first: a consumer-supplied onSuccess would otherwise replace the
|
|
29
|
+
// handler below and silently drop cache invalidation (#453).
|
|
30
|
+
...options,
|
|
31
|
+
mutationFn: ({ rkey, data }) => updatePosition(config, rkey, data),
|
|
32
|
+
onSuccess: async (result, variables, onMutateResult, context) => {
|
|
33
|
+
if (result.success) {
|
|
34
|
+
await invalidatePositionCaches(queryClient, ownerHandleOrDid);
|
|
35
|
+
}
|
|
36
|
+
await options?.onSuccess?.(result, variables, onMutateResult, context);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
function useDeletePosition(ownerHandleOrDid, options) {
|
|
41
|
+
const config = useSifaConfig();
|
|
42
|
+
const queryClient = useQueryClient();
|
|
43
|
+
return useMutation({
|
|
44
|
+
// Spread first: a consumer-supplied onSuccess would otherwise replace the
|
|
45
|
+
// handler below and silently drop cache invalidation (#453).
|
|
46
|
+
...options,
|
|
47
|
+
mutationFn: (rkey) => deletePosition(config, rkey),
|
|
48
|
+
onSuccess: async (result, variables, onMutateResult, context) => {
|
|
49
|
+
if (result.success) {
|
|
50
|
+
await invalidatePositionCaches(queryClient, ownerHandleOrDid);
|
|
51
|
+
}
|
|
52
|
+
await options?.onSuccess?.(result, variables, onMutateResult, context);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
function useSetPositionPrimary(ownerHandleOrDid, options) {
|
|
57
|
+
const config = useSifaConfig();
|
|
58
|
+
const queryClient = useQueryClient();
|
|
59
|
+
return useMutation({
|
|
60
|
+
// Spread first: a consumer-supplied onSuccess would otherwise replace the
|
|
61
|
+
// handler below and silently drop cache invalidation (#453).
|
|
62
|
+
...options,
|
|
63
|
+
mutationFn: (rkey) => setPositionPrimary(config, rkey),
|
|
64
|
+
onSuccess: async (result, variables, onMutateResult, context) => {
|
|
65
|
+
if (result.success) {
|
|
66
|
+
await invalidatePositionCaches(queryClient, ownerHandleOrDid);
|
|
67
|
+
}
|
|
68
|
+
await options?.onSuccess?.(result, variables, onMutateResult, context);
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
function useUnsetPositionPrimary(ownerHandleOrDid, options) {
|
|
73
|
+
const config = useSifaConfig();
|
|
74
|
+
const queryClient = useQueryClient();
|
|
75
|
+
return useMutation({
|
|
76
|
+
// Spread first: a consumer-supplied onSuccess would otherwise replace the
|
|
77
|
+
// handler below and silently drop cache invalidation (#453).
|
|
78
|
+
...options,
|
|
79
|
+
mutationFn: (rkey) => unsetPositionPrimary(config, rkey),
|
|
80
|
+
onSuccess: async (result, variables, onMutateResult, context) => {
|
|
81
|
+
if (result.success) {
|
|
82
|
+
await invalidatePositionCaches(queryClient, ownerHandleOrDid);
|
|
83
|
+
}
|
|
84
|
+
await options?.onSuccess?.(result, variables, onMutateResult, context);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
function useLinkSkillToPosition(ownerHandleOrDid, options) {
|
|
89
|
+
const config = useSifaConfig();
|
|
90
|
+
const queryClient = useQueryClient();
|
|
91
|
+
return useMutation({
|
|
92
|
+
// Spread first: a consumer-supplied onSuccess would otherwise replace the
|
|
93
|
+
// handler below and silently drop cache invalidation (#453).
|
|
94
|
+
...options,
|
|
95
|
+
mutationFn: ({ position, skillRef }) => linkSkillToPosition(config, position, skillRef),
|
|
96
|
+
onSuccess: async (result, variables, onMutateResult, context) => {
|
|
97
|
+
if (result.success) {
|
|
98
|
+
await invalidatePositionCaches(queryClient, ownerHandleOrDid);
|
|
99
|
+
}
|
|
100
|
+
await options?.onSuccess?.(result, variables, onMutateResult, context);
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
function useUnlinkSkillFromPosition(ownerHandleOrDid, options) {
|
|
105
|
+
const config = useSifaConfig();
|
|
106
|
+
const queryClient = useQueryClient();
|
|
107
|
+
return useMutation({
|
|
108
|
+
// Spread first: a consumer-supplied onSuccess would otherwise replace the
|
|
109
|
+
// handler below and silently drop cache invalidation (#453).
|
|
110
|
+
...options,
|
|
111
|
+
mutationFn: ({ position, skillRef }) => unlinkSkillFromPosition(config, position, skillRef),
|
|
112
|
+
onSuccess: async (result, variables, onMutateResult, context) => {
|
|
113
|
+
if (result.success) {
|
|
114
|
+
await invalidatePositionCaches(queryClient, ownerHandleOrDid);
|
|
115
|
+
}
|
|
116
|
+
await options?.onSuccess?.(result, variables, onMutateResult, context);
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
export {
|
|
121
|
+
useDeletePosition,
|
|
122
|
+
useLinkSkillToPosition,
|
|
123
|
+
useSetPositionPrimary,
|
|
124
|
+
useUnlinkSkillFromPosition,
|
|
125
|
+
useUnsetPositionPrimary,
|
|
126
|
+
useUpdatePosition
|
|
127
|
+
};
|
|
128
|
+
//# sourceMappingURL=use-position-mutations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/query/hooks/use-position-mutations.ts"],"sourcesContent":["'use client';\n\nimport { useMutation, useQueryClient, type UseMutationOptions } from '@tanstack/react-query';\n\nimport { type WriteResult } from '../client.js';\nimport { useSifaConfig } from '../config.js';\nimport {\n deletePosition,\n linkSkillToPosition,\n setPositionPrimary,\n unlinkSkillFromPosition,\n unsetPositionPrimary,\n updatePosition,\n} from '../fetchers/positions.js';\nimport { sifaQueryKeys } from '../keys.js';\nimport type { ProfilePosition, SkillRef } from '../../types/index.js';\n\nasync function invalidatePositionCaches(\n queryClient: ReturnType<typeof useQueryClient>,\n ownerHandleOrDid: string,\n): Promise<void> {\n await queryClient.invalidateQueries({\n queryKey: sifaQueryKeys.profile.byHandle(ownerHandleOrDid),\n });\n await queryClient.invalidateQueries({\n queryKey: sifaQueryKeys.position.byOwner(ownerHandleOrDid),\n });\n}\n\n/** Variables for {@link useUpdatePosition}. */\nexport interface UpdatePositionVariables {\n rkey: string;\n data: Record<string, unknown>;\n}\n\n/** React hook for updating a position record. */\nexport function useUpdatePosition(\n ownerHandleOrDid: string,\n options?: Omit<UseMutationOptions<WriteResult, Error, UpdatePositionVariables>, 'mutationFn'>,\n) {\n const config = useSifaConfig();\n const queryClient = useQueryClient();\n return useMutation({\n // Spread first: a consumer-supplied onSuccess would otherwise replace the\n // handler below and silently drop cache invalidation (#453).\n ...options,\n mutationFn: ({ rkey, data }: UpdatePositionVariables) => updatePosition(config, rkey, data),\n onSuccess: async (result, variables, onMutateResult, context) => {\n if (result.success) {\n await invalidatePositionCaches(queryClient, ownerHandleOrDid);\n }\n await options?.onSuccess?.(result, variables, onMutateResult, context);\n },\n });\n}\n\n/** React hook for deleting a position record. Variable: the `rkey` string. */\nexport function useDeletePosition(\n ownerHandleOrDid: string,\n options?: Omit<UseMutationOptions<WriteResult, Error, string>, 'mutationFn'>,\n) {\n const config = useSifaConfig();\n const queryClient = useQueryClient();\n return useMutation({\n // Spread first: a consumer-supplied onSuccess would otherwise replace the\n // handler below and silently drop cache invalidation (#453).\n ...options,\n mutationFn: (rkey: string) => deletePosition(config, rkey),\n onSuccess: async (result, variables, onMutateResult, context) => {\n if (result.success) {\n await invalidatePositionCaches(queryClient, ownerHandleOrDid);\n }\n await options?.onSuccess?.(result, variables, onMutateResult, context);\n },\n });\n}\n\n/** React hook for marking a position as primary. Variable: the `rkey` string. */\nexport function useSetPositionPrimary(\n ownerHandleOrDid: string,\n options?: Omit<UseMutationOptions<WriteResult, Error, string>, 'mutationFn'>,\n) {\n const config = useSifaConfig();\n const queryClient = useQueryClient();\n return useMutation({\n // Spread first: a consumer-supplied onSuccess would otherwise replace the\n // handler below and silently drop cache invalidation (#453).\n ...options,\n mutationFn: (rkey: string) => setPositionPrimary(config, rkey),\n onSuccess: async (result, variables, onMutateResult, context) => {\n if (result.success) {\n await invalidatePositionCaches(queryClient, ownerHandleOrDid);\n }\n await options?.onSuccess?.(result, variables, onMutateResult, context);\n },\n });\n}\n\n/** React hook for clearing the primary flag on a position. */\nexport function useUnsetPositionPrimary(\n ownerHandleOrDid: string,\n options?: Omit<UseMutationOptions<WriteResult, Error, string>, 'mutationFn'>,\n) {\n const config = useSifaConfig();\n const queryClient = useQueryClient();\n return useMutation({\n // Spread first: a consumer-supplied onSuccess would otherwise replace the\n // handler below and silently drop cache invalidation (#453).\n ...options,\n mutationFn: (rkey: string) => unsetPositionPrimary(config, rkey),\n onSuccess: async (result, variables, onMutateResult, context) => {\n if (result.success) {\n await invalidatePositionCaches(queryClient, ownerHandleOrDid);\n }\n await options?.onSuccess?.(result, variables, onMutateResult, context);\n },\n });\n}\n\n/** Variables for {@link useLinkSkillToPosition} / {@link useUnlinkSkillFromPosition}. */\nexport interface PositionSkillLinkVariables {\n position: ProfilePosition;\n skillRef: SkillRef;\n}\n\n/** React hook for linking a skill to a position. Idempotent. */\nexport function useLinkSkillToPosition(\n ownerHandleOrDid: string,\n options?: Omit<UseMutationOptions<WriteResult, Error, PositionSkillLinkVariables>, 'mutationFn'>,\n) {\n const config = useSifaConfig();\n const queryClient = useQueryClient();\n return useMutation({\n // Spread first: a consumer-supplied onSuccess would otherwise replace the\n // handler below and silently drop cache invalidation (#453).\n ...options,\n mutationFn: ({ position, skillRef }: PositionSkillLinkVariables) =>\n linkSkillToPosition(config, position, skillRef),\n onSuccess: async (result, variables, onMutateResult, context) => {\n if (result.success) {\n await invalidatePositionCaches(queryClient, ownerHandleOrDid);\n }\n await options?.onSuccess?.(result, variables, onMutateResult, context);\n },\n });\n}\n\n/** React hook for unlinking a skill from a position. */\nexport function useUnlinkSkillFromPosition(\n ownerHandleOrDid: string,\n options?: Omit<UseMutationOptions<WriteResult, Error, PositionSkillLinkVariables>, 'mutationFn'>,\n) {\n const config = useSifaConfig();\n const queryClient = useQueryClient();\n return useMutation({\n // Spread first: a consumer-supplied onSuccess would otherwise replace the\n // handler below and silently drop cache invalidation (#453).\n ...options,\n mutationFn: ({ position, skillRef }: PositionSkillLinkVariables) =>\n unlinkSkillFromPosition(config, position, skillRef),\n onSuccess: async (result, variables, onMutateResult, context) => {\n if (result.success) {\n await invalidatePositionCaches(queryClient, ownerHandleOrDid);\n }\n await options?.onSuccess?.(result, variables, onMutateResult, context);\n },\n });\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// src/query/hooks/use-profile-completeness.ts
|
|
4
|
+
import { useQuery } from "@tanstack/react-query";
|
|
5
|
+
import { useSifaConfig } from "../config.js";
|
|
6
|
+
import {
|
|
7
|
+
fetchProfileCompleteness
|
|
8
|
+
} from "../fetchers/profile-completeness.js";
|
|
9
|
+
import { sifaQueryKeys } from "../keys.js";
|
|
10
|
+
function useProfileCompleteness(options) {
|
|
11
|
+
const config = useSifaConfig();
|
|
12
|
+
return useQuery({
|
|
13
|
+
queryKey: sifaQueryKeys.profile.completeness(),
|
|
14
|
+
queryFn: () => fetchProfileCompleteness(config),
|
|
15
|
+
...options
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
export {
|
|
19
|
+
useProfileCompleteness
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=use-profile-completeness.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/query/hooks/use-profile-completeness.ts"],"sourcesContent":["'use client';\n\nimport { useQuery, type UseQueryOptions } from '@tanstack/react-query';\n\nimport { useSifaConfig } from '../config.js';\nimport {\n fetchProfileCompleteness,\n type ProfileCompleteness,\n} from '../fetchers/profile-completeness.js';\nimport { sifaQueryKeys } from '../keys.js';\n\n/**\n * Completeness of the signed-in user's own profile (which tracked signals are\n * missing), for the unified Inbox checklist. Returns a complete result when\n * signed out or on error.\n */\nexport function useProfileCompleteness(\n options?: Omit<\n UseQueryOptions<\n ProfileCompleteness,\n Error,\n ProfileCompleteness,\n ReturnType<typeof sifaQueryKeys.profile.completeness>\n >,\n 'queryKey' | 'queryFn'\n >,\n) {\n const config = useSifaConfig();\n return useQuery({\n queryKey: sifaQueryKeys.profile.completeness(),\n queryFn: () => fetchProfileCompleteness(config),\n ...options,\n });\n}\n"],"mappings":";;;AAEA,SAAS,gBAAsC;AAE/C,SAAS,qBAAqB;AAC9B;AAAA,EACE;AAAA,OAEK;AACP,SAAS,qBAAqB;AAOvB,SAAS,uBACd,SASA;AACA,QAAM,SAAS,cAAc;AAC7B,SAAO,SAAS;AAAA,IACd,UAAU,cAAc,QAAQ,aAAa;AAAA,IAC7C,SAAS,MAAM,yBAAyB,MAAM;AAAA,IAC9C,GAAG;AAAA,EACL,CAAC;AACH;","names":[]}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// src/query/hooks/use-profile-items-hide.ts
|
|
4
|
+
import { useMutation, useQueryClient } from "@tanstack/react-query";
|
|
5
|
+
import "../client.js";
|
|
6
|
+
import { useSifaConfig } from "../config.js";
|
|
7
|
+
import {
|
|
8
|
+
bulkHideProfileItems,
|
|
9
|
+
bulkUnhideProfileItems,
|
|
10
|
+
hideProfileItem,
|
|
11
|
+
unhideProfileItem
|
|
12
|
+
} from "../fetchers/profile-items-hide.js";
|
|
13
|
+
import { sifaQueryKeys } from "../keys.js";
|
|
14
|
+
async function invalidateProfile(queryClient, ownerHandleOrDid) {
|
|
15
|
+
await queryClient.invalidateQueries({
|
|
16
|
+
queryKey: sifaQueryKeys.profile.byHandle(ownerHandleOrDid)
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
function makeWriteHook(fetcher) {
|
|
20
|
+
return function useHook(ownerHandleOrDid, options) {
|
|
21
|
+
const config = useSifaConfig();
|
|
22
|
+
const queryClient = useQueryClient();
|
|
23
|
+
return useMutation({
|
|
24
|
+
mutationFn: (v) => fetcher(config, v),
|
|
25
|
+
onSuccess: async (result, variables, onMutateResult, context) => {
|
|
26
|
+
if (result.success) {
|
|
27
|
+
await invalidateProfile(queryClient, ownerHandleOrDid);
|
|
28
|
+
}
|
|
29
|
+
await options?.onSuccess?.(result, variables, onMutateResult, context);
|
|
30
|
+
},
|
|
31
|
+
...options
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
var useHideProfileItem = makeWriteHook(
|
|
36
|
+
(config, input) => hideProfileItem(config, input)
|
|
37
|
+
);
|
|
38
|
+
var useUnhideProfileItem = makeWriteHook(
|
|
39
|
+
(config, input) => unhideProfileItem(config, input)
|
|
40
|
+
);
|
|
41
|
+
var useBulkHideProfileItems = makeWriteHook(
|
|
42
|
+
(config, input) => bulkHideProfileItems(config, input)
|
|
43
|
+
);
|
|
44
|
+
var useBulkUnhideProfileItems = makeWriteHook(
|
|
45
|
+
(config, input) => bulkUnhideProfileItems(config, input)
|
|
46
|
+
);
|
|
47
|
+
export {
|
|
48
|
+
useBulkHideProfileItems,
|
|
49
|
+
useBulkUnhideProfileItems,
|
|
50
|
+
useHideProfileItem,
|
|
51
|
+
useUnhideProfileItem
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=use-profile-items-hide.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/query/hooks/use-profile-items-hide.ts"],"sourcesContent":["'use client';\n\nimport { useMutation, useQueryClient, type UseMutationOptions } from '@tanstack/react-query';\n\nimport { type WriteResult } from '../client.js';\nimport { useSifaConfig } from '../config.js';\nimport {\n bulkHideProfileItems,\n bulkUnhideProfileItems,\n hideProfileItem,\n unhideProfileItem,\n type BulkHideProfileItemInput,\n type HideProfileItemInput,\n} from '../fetchers/profile-items-hide.js';\nimport { sifaQueryKeys } from '../keys.js';\n\nasync function invalidateProfile(\n queryClient: ReturnType<typeof useQueryClient>,\n ownerHandleOrDid: string,\n): Promise<void> {\n await queryClient.invalidateQueries({\n queryKey: sifaQueryKeys.profile.byHandle(ownerHandleOrDid),\n });\n}\n\nfunction makeWriteHook<TVariable>(\n fetcher: (config: ReturnType<typeof useSifaConfig>, v: TVariable) => Promise<WriteResult>,\n) {\n return function useHook(\n ownerHandleOrDid: string,\n options?: Omit<UseMutationOptions<WriteResult, Error, TVariable>, 'mutationFn'>,\n ) {\n const config = useSifaConfig();\n const queryClient = useQueryClient();\n return useMutation({\n mutationFn: (v: TVariable) => fetcher(config, v),\n onSuccess: async (result, variables, onMutateResult, context) => {\n if (result.success) {\n await invalidateProfile(queryClient, ownerHandleOrDid);\n }\n await options?.onSuccess?.(result, variables, onMutateResult, context);\n },\n ...options,\n });\n };\n}\n\n/**\n * Hide one profile item across any supported section. The underlying\n * record stays on the user's PDS; only its display on sifa.id is\n * suppressed.\n */\nexport const useHideProfileItem = makeWriteHook<HideProfileItemInput>((config, input) =>\n hideProfileItem(config, input),\n);\n\n/** Restore a previously-hidden profile item. */\nexport const useUnhideProfileItem = makeWriteHook<HideProfileItemInput>((config, input) =>\n unhideProfileItem(config, input),\n);\n\n/** Bulk-hide profile items sharing the same `itemType` + `source`. */\nexport const useBulkHideProfileItems = makeWriteHook<BulkHideProfileItemInput>((config, input) =>\n bulkHideProfileItems(config, input),\n);\n\n/** Bulk-unhide profile items sharing the same `itemType` + `source`. */\nexport const useBulkUnhideProfileItems = makeWriteHook<BulkHideProfileItemInput>((config, input) =>\n bulkUnhideProfileItems(config, input),\n);\n"],"mappings":";;;AAEA,SAAS,aAAa,sBAA+C;AAErE,OAAiC;AACjC,SAAS,qBAAqB;AAC9B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AACP,SAAS,qBAAqB;AAE9B,eAAe,kBACb,aACA,kBACe;AACf,QAAM,YAAY,kBAAkB;AAAA,IAClC,UAAU,cAAc,QAAQ,SAAS,gBAAgB;AAAA,EAC3D,CAAC;AACH;AAEA,SAAS,cACP,SACA;AACA,SAAO,SAAS,QACd,kBACA,SACA;AACA,UAAM,SAAS,cAAc;AAC7B,UAAM,cAAc,eAAe;AACnC,WAAO,YAAY;AAAA,MACjB,YAAY,CAAC,MAAiB,QAAQ,QAAQ,CAAC;AAAA,MAC/C,WAAW,OAAO,QAAQ,WAAW,gBAAgB,YAAY;AAC/D,YAAI,OAAO,SAAS;AAClB,gBAAM,kBAAkB,aAAa,gBAAgB;AAAA,QACvD;AACA,cAAM,SAAS,YAAY,QAAQ,WAAW,gBAAgB,OAAO;AAAA,MACvE;AAAA,MACA,GAAG;AAAA,IACL,CAAC;AAAA,EACH;AACF;AAOO,IAAM,qBAAqB;AAAA,EAAoC,CAAC,QAAQ,UAC7E,gBAAgB,QAAQ,KAAK;AAC/B;AAGO,IAAM,uBAAuB;AAAA,EAAoC,CAAC,QAAQ,UAC/E,kBAAkB,QAAQ,KAAK;AACjC;AAGO,IAAM,0BAA0B;AAAA,EAAwC,CAAC,QAAQ,UACtF,qBAAqB,QAAQ,KAAK;AACpC;AAGO,IAAM,4BAA4B;AAAA,EAAwC,CAAC,QAAQ,UACxF,uBAAuB,QAAQ,KAAK;AACtC;","names":[]}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// src/query/hooks/use-profile-mutations.ts
|
|
4
|
+
import { useMutation, useQueryClient } from "@tanstack/react-query";
|
|
5
|
+
import { useSifaConfig } from "../config.js";
|
|
6
|
+
import "../client.js";
|
|
7
|
+
import {
|
|
8
|
+
deleteAvatarOverride,
|
|
9
|
+
deleteNamePronunciationAudio,
|
|
10
|
+
refreshPds,
|
|
11
|
+
updateProfileOverride,
|
|
12
|
+
updateProfileSelf,
|
|
13
|
+
uploadAvatar,
|
|
14
|
+
uploadNamePronunciationAudio
|
|
15
|
+
} from "../fetchers/profile-mutations.js";
|
|
16
|
+
import { sifaQueryKeys } from "../keys.js";
|
|
17
|
+
async function invalidateProfile(queryClient, ownerHandleOrDid) {
|
|
18
|
+
await queryClient.invalidateQueries({
|
|
19
|
+
queryKey: sifaQueryKeys.profile.byHandle(ownerHandleOrDid)
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
function useUpdateProfileSelf(ownerHandleOrDid, options) {
|
|
23
|
+
const config = useSifaConfig();
|
|
24
|
+
const queryClient = useQueryClient();
|
|
25
|
+
return useMutation({
|
|
26
|
+
// Spread first: a consumer-supplied onSuccess would otherwise replace the
|
|
27
|
+
// handler below and silently drop cache invalidation (#453).
|
|
28
|
+
...options,
|
|
29
|
+
mutationFn: (data) => updateProfileSelf(config, data),
|
|
30
|
+
onSuccess: async (result, variables, onMutateResult, context) => {
|
|
31
|
+
if (result.success) {
|
|
32
|
+
await invalidateProfile(queryClient, ownerHandleOrDid);
|
|
33
|
+
}
|
|
34
|
+
await options?.onSuccess?.(result, variables, onMutateResult, context);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
function useUpdateProfileOverride(ownerHandleOrDid, options) {
|
|
39
|
+
const config = useSifaConfig();
|
|
40
|
+
const queryClient = useQueryClient();
|
|
41
|
+
return useMutation({
|
|
42
|
+
// Spread first: a consumer-supplied onSuccess would otherwise replace the
|
|
43
|
+
// handler below and silently drop cache invalidation (#453).
|
|
44
|
+
...options,
|
|
45
|
+
mutationFn: (data) => updateProfileOverride(config, data),
|
|
46
|
+
onSuccess: async (result, variables, onMutateResult, context) => {
|
|
47
|
+
if (result.success) {
|
|
48
|
+
await invalidateProfile(queryClient, ownerHandleOrDid);
|
|
49
|
+
}
|
|
50
|
+
await options?.onSuccess?.(result, variables, onMutateResult, context);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
function useRefreshPds(ownerHandleOrDid, options) {
|
|
55
|
+
const config = useSifaConfig();
|
|
56
|
+
const queryClient = useQueryClient();
|
|
57
|
+
return useMutation({
|
|
58
|
+
// Spread first: a consumer-supplied onSuccess would otherwise replace the
|
|
59
|
+
// handler below and silently drop cache invalidation (#453).
|
|
60
|
+
...options,
|
|
61
|
+
mutationFn: () => refreshPds(config),
|
|
62
|
+
onSuccess: async (result, variables, onMutateResult, context) => {
|
|
63
|
+
if (result.success) {
|
|
64
|
+
await invalidateProfile(queryClient, ownerHandleOrDid);
|
|
65
|
+
}
|
|
66
|
+
await options?.onSuccess?.(result, variables, onMutateResult, context);
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
function useUploadAvatar(ownerHandleOrDid, options) {
|
|
71
|
+
const config = useSifaConfig();
|
|
72
|
+
const queryClient = useQueryClient();
|
|
73
|
+
return useMutation({
|
|
74
|
+
// Spread first: a consumer-supplied onSuccess would otherwise replace the
|
|
75
|
+
// handler below and silently drop cache invalidation (#453).
|
|
76
|
+
...options,
|
|
77
|
+
mutationFn: (file) => uploadAvatar(config, file),
|
|
78
|
+
onSuccess: async (result, variables, onMutateResult, context) => {
|
|
79
|
+
if (result.success) {
|
|
80
|
+
await invalidateProfile(queryClient, ownerHandleOrDid);
|
|
81
|
+
}
|
|
82
|
+
await options?.onSuccess?.(result, variables, onMutateResult, context);
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
function useDeleteAvatarOverride(ownerHandleOrDid, options) {
|
|
87
|
+
const config = useSifaConfig();
|
|
88
|
+
const queryClient = useQueryClient();
|
|
89
|
+
return useMutation({
|
|
90
|
+
// Spread first: a consumer-supplied onSuccess would otherwise replace the
|
|
91
|
+
// handler below and silently drop cache invalidation (#453).
|
|
92
|
+
...options,
|
|
93
|
+
mutationFn: () => deleteAvatarOverride(config),
|
|
94
|
+
onSuccess: async (result, variables, onMutateResult, context) => {
|
|
95
|
+
if (result.success) {
|
|
96
|
+
await invalidateProfile(queryClient, ownerHandleOrDid);
|
|
97
|
+
}
|
|
98
|
+
await options?.onSuccess?.(result, variables, onMutateResult, context);
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
function useUploadNamePronunciationAudio(ownerHandleOrDid, options) {
|
|
103
|
+
const config = useSifaConfig();
|
|
104
|
+
const queryClient = useQueryClient();
|
|
105
|
+
return useMutation({
|
|
106
|
+
// Spread first: a consumer-supplied onSuccess would otherwise replace the
|
|
107
|
+
// handler below and silently drop cache invalidation (#453).
|
|
108
|
+
...options,
|
|
109
|
+
mutationFn: (file) => uploadNamePronunciationAudio(config, file),
|
|
110
|
+
onSuccess: async (result, variables, onMutateResult, context) => {
|
|
111
|
+
if (result.success) {
|
|
112
|
+
await invalidateProfile(queryClient, ownerHandleOrDid);
|
|
113
|
+
}
|
|
114
|
+
await options?.onSuccess?.(result, variables, onMutateResult, context);
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
function useDeleteNamePronunciationAudio(ownerHandleOrDid, options) {
|
|
119
|
+
const config = useSifaConfig();
|
|
120
|
+
const queryClient = useQueryClient();
|
|
121
|
+
return useMutation({
|
|
122
|
+
// Spread first: a consumer-supplied onSuccess would otherwise replace the
|
|
123
|
+
// handler below and silently drop cache invalidation (#453).
|
|
124
|
+
...options,
|
|
125
|
+
mutationFn: () => deleteNamePronunciationAudio(config),
|
|
126
|
+
onSuccess: async (result, variables, onMutateResult, context) => {
|
|
127
|
+
if (result.success) {
|
|
128
|
+
await invalidateProfile(queryClient, ownerHandleOrDid);
|
|
129
|
+
}
|
|
130
|
+
await options?.onSuccess?.(result, variables, onMutateResult, context);
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
export {
|
|
135
|
+
useDeleteAvatarOverride,
|
|
136
|
+
useDeleteNamePronunciationAudio,
|
|
137
|
+
useRefreshPds,
|
|
138
|
+
useUpdateProfileOverride,
|
|
139
|
+
useUpdateProfileSelf,
|
|
140
|
+
useUploadAvatar,
|
|
141
|
+
useUploadNamePronunciationAudio
|
|
142
|
+
};
|
|
143
|
+
//# sourceMappingURL=use-profile-mutations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/query/hooks/use-profile-mutations.ts"],"sourcesContent":["'use client';\n\nimport { useMutation, useQueryClient, type UseMutationOptions } from '@tanstack/react-query';\n\nimport { useSifaConfig } from '../config.js';\nimport { type WriteResult } from '../client.js';\nimport {\n deleteAvatarOverride,\n deleteNamePronunciationAudio,\n refreshPds,\n updateProfileOverride,\n updateProfileSelf,\n uploadAvatar,\n uploadNamePronunciationAudio,\n type RefreshPdsResult,\n type UpdateProfileOverrideInput,\n type UpdateProfileSelfInput,\n type UploadAvatarResult,\n type UploadPronunciationAudioResult,\n} from '../fetchers/profile-mutations.js';\nimport { sifaQueryKeys } from '../keys.js';\n\n/**\n * Invalidate the owner's profile cache after a profile-edit mutation\n * succeeds. Shared helper for the hooks in this file -- the owner DID\n * (or handle) is required so the mutation can target the correct cache\n * entry.\n */\nasync function invalidateProfile(\n queryClient: ReturnType<typeof useQueryClient>,\n ownerHandleOrDid: string,\n): Promise<void> {\n await queryClient.invalidateQueries({\n queryKey: sifaQueryKeys.profile.byHandle(ownerHandleOrDid),\n });\n}\n\n/**\n * React hook for updating the authenticated user's profile self record.\n * On success, invalidates the owner's profile cache.\n *\n * The owner identifier (handle or DID) is required so the mutation can\n * target the right profile cache entry for invalidation.\n */\nexport function useUpdateProfileSelf(\n ownerHandleOrDid: string,\n options?: Omit<UseMutationOptions<WriteResult, Error, UpdateProfileSelfInput>, 'mutationFn'>,\n) {\n const config = useSifaConfig();\n const queryClient = useQueryClient();\n return useMutation({\n // Spread first: a consumer-supplied onSuccess would otherwise replace the\n // handler below and silently drop cache invalidation (#453).\n ...options,\n mutationFn: (data: UpdateProfileSelfInput) => updateProfileSelf(config, data),\n onSuccess: async (result, variables, onMutateResult, context) => {\n if (result.success) {\n await invalidateProfile(queryClient, ownerHandleOrDid);\n }\n await options?.onSuccess?.(result, variables, onMutateResult, context);\n },\n });\n}\n\n/** React hook for updating the authenticated user's profile override fields. */\nexport function useUpdateProfileOverride(\n ownerHandleOrDid: string,\n options?: Omit<UseMutationOptions<WriteResult, Error, UpdateProfileOverrideInput>, 'mutationFn'>,\n) {\n const config = useSifaConfig();\n const queryClient = useQueryClient();\n return useMutation({\n // Spread first: a consumer-supplied onSuccess would otherwise replace the\n // handler below and silently drop cache invalidation (#453).\n ...options,\n mutationFn: (data: UpdateProfileOverrideInput) => updateProfileOverride(config, data),\n onSuccess: async (result, variables, onMutateResult, context) => {\n if (result.success) {\n await invalidateProfile(queryClient, ownerHandleOrDid);\n }\n await options?.onSuccess?.(result, variables, onMutateResult, context);\n },\n });\n}\n\n/** React hook for re-pulling the authenticated user's PDS-side profile. */\nexport function useRefreshPds(\n ownerHandleOrDid: string,\n options?: Omit<UseMutationOptions<RefreshPdsResult, Error, void>, 'mutationFn'>,\n) {\n const config = useSifaConfig();\n const queryClient = useQueryClient();\n return useMutation({\n // Spread first: a consumer-supplied onSuccess would otherwise replace the\n // handler below and silently drop cache invalidation (#453).\n ...options,\n mutationFn: () => refreshPds(config),\n onSuccess: async (result, variables, onMutateResult, context) => {\n if (result.success) {\n await invalidateProfile(queryClient, ownerHandleOrDid);\n }\n await options?.onSuccess?.(result, variables, onMutateResult, context);\n },\n });\n}\n\n/**\n * React hook for uploading a new avatar. Pass a `File` (browser) or\n * `Blob` (Expo) as the mutation variable.\n */\nexport function useUploadAvatar(\n ownerHandleOrDid: string,\n options?: Omit<UseMutationOptions<UploadAvatarResult, Error, Blob>, 'mutationFn'>,\n) {\n const config = useSifaConfig();\n const queryClient = useQueryClient();\n return useMutation({\n // Spread first: a consumer-supplied onSuccess would otherwise replace the\n // handler below and silently drop cache invalidation (#453).\n ...options,\n mutationFn: (file: Blob) => uploadAvatar(config, file),\n onSuccess: async (result, variables, onMutateResult, context) => {\n if (result.success) {\n await invalidateProfile(queryClient, ownerHandleOrDid);\n }\n await options?.onSuccess?.(result, variables, onMutateResult, context);\n },\n });\n}\n\n/** React hook for deleting the avatar override (revert to PDS avatar). */\nexport function useDeleteAvatarOverride(\n ownerHandleOrDid: string,\n options?: Omit<UseMutationOptions<WriteResult, Error, void>, 'mutationFn'>,\n) {\n const config = useSifaConfig();\n const queryClient = useQueryClient();\n return useMutation({\n // Spread first: a consumer-supplied onSuccess would otherwise replace the\n // handler below and silently drop cache invalidation (#453).\n ...options,\n mutationFn: () => deleteAvatarOverride(config),\n onSuccess: async (result, variables, onMutateResult, context) => {\n if (result.success) {\n await invalidateProfile(queryClient, ownerHandleOrDid);\n }\n await options?.onSuccess?.(result, variables, onMutateResult, context);\n },\n });\n}\n\n/**\n * React hook for uploading a name-pronunciation audio clip. Pass a `File`\n * (browser) or `Blob` (Expo) as the mutation variable.\n */\nexport function useUploadNamePronunciationAudio(\n ownerHandleOrDid: string,\n options?: Omit<UseMutationOptions<UploadPronunciationAudioResult, Error, Blob>, 'mutationFn'>,\n) {\n const config = useSifaConfig();\n const queryClient = useQueryClient();\n return useMutation({\n // Spread first: a consumer-supplied onSuccess would otherwise replace the\n // handler below and silently drop cache invalidation (#453).\n ...options,\n mutationFn: (file: Blob) => uploadNamePronunciationAudio(config, file),\n onSuccess: async (result, variables, onMutateResult, context) => {\n if (result.success) {\n await invalidateProfile(queryClient, ownerHandleOrDid);\n }\n await options?.onSuccess?.(result, variables, onMutateResult, context);\n },\n });\n}\n\n/** React hook for deleting the name-pronunciation audio clip. */\nexport function useDeleteNamePronunciationAudio(\n ownerHandleOrDid: string,\n options?: Omit<UseMutationOptions<WriteResult, Error, void>, 'mutationFn'>,\n) {\n const config = useSifaConfig();\n const queryClient = useQueryClient();\n return useMutation({\n // Spread first: a consumer-supplied onSuccess would otherwise replace the\n // handler below and silently drop cache invalidation (#453).\n ...options,\n mutationFn: () => deleteNamePronunciationAudio(config),\n onSuccess: async (result, variables, onMutateResult, context) => {\n if (result.success) {\n await invalidateProfile(queryClient, ownerHandleOrDid);\n }\n await options?.onSuccess?.(result, variables, onMutateResult, context);\n },\n });\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// src/query/hooks/use-profile.ts
|
|
4
|
+
import { useQuery } from "@tanstack/react-query";
|
|
5
|
+
import { useSifaConfig } from "../config.js";
|
|
6
|
+
import { fetchAtFundLink, fetchProfile } from "../fetchers/profile.js";
|
|
7
|
+
import { sifaQueryKeys } from "../keys.js";
|
|
8
|
+
function useProfile(handleOrDid, options) {
|
|
9
|
+
const config = useSifaConfig();
|
|
10
|
+
return useQuery({
|
|
11
|
+
queryKey: sifaQueryKeys.profile.byHandle(handleOrDid ?? ""),
|
|
12
|
+
queryFn: () => fetchProfile(config, handleOrDid ?? ""),
|
|
13
|
+
enabled: Boolean(handleOrDid) && (options?.enabled ?? true),
|
|
14
|
+
...options
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
function useAtFundLink(did, options) {
|
|
18
|
+
const config = useSifaConfig();
|
|
19
|
+
return useQuery({
|
|
20
|
+
queryKey: sifaQueryKeys.profile.atFundLink(did ?? ""),
|
|
21
|
+
queryFn: () => fetchAtFundLink(config, did ?? ""),
|
|
22
|
+
enabled: Boolean(did) && (options?.enabled ?? true),
|
|
23
|
+
...options
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
export {
|
|
27
|
+
useAtFundLink,
|
|
28
|
+
useProfile
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=use-profile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/query/hooks/use-profile.ts"],"sourcesContent":["'use client';\n\nimport { useQuery, type UseQueryOptions } from '@tanstack/react-query';\n\nimport type { Profile } from '../../types/index.js';\nimport { useSifaConfig } from '../config.js';\nimport { fetchAtFundLink, fetchProfile } from '../fetchers/profile.js';\nimport { sifaQueryKeys } from '../keys.js';\n\n/**\n * React hook that reads an aggregated profile by handle or DID via\n * TanStack Query. Returns `null` data when the profile does not exist.\n *\n * Pass `{ enabled: false }` (or an empty `handleOrDid`) to defer the\n * fetch.\n */\nexport function useProfile(\n handleOrDid: string | undefined | null,\n options?: Omit<\n UseQueryOptions<\n Profile | null,\n Error,\n Profile | null,\n ReturnType<typeof sifaQueryKeys.profile.byHandle>\n >,\n 'queryKey' | 'queryFn'\n >,\n) {\n const config = useSifaConfig();\n return useQuery({\n queryKey: sifaQueryKeys.profile.byHandle(handleOrDid ?? ''),\n queryFn: () => fetchProfile(config, handleOrDid ?? ''),\n enabled: Boolean(handleOrDid) && (options?.enabled ?? true),\n ...options,\n });\n}\n\n/**\n * React hook for a profile's AT Fund link. Returns `null` data on error\n * or when the profile has no link configured.\n */\nexport function useAtFundLink(\n did: string | undefined | null,\n options?: Omit<\n UseQueryOptions<\n string | null,\n Error,\n string | null,\n ReturnType<typeof sifaQueryKeys.profile.atFundLink>\n >,\n 'queryKey' | 'queryFn'\n >,\n) {\n const config = useSifaConfig();\n return useQuery({\n queryKey: sifaQueryKeys.profile.atFundLink(did ?? ''),\n queryFn: () => fetchAtFundLink(config, did ?? ''),\n enabled: Boolean(did) && (options?.enabled ?? true),\n ...options,\n });\n}\n"],"mappings":";;;AAEA,SAAS,gBAAsC;AAG/C,SAAS,qBAAqB;AAC9B,SAAS,iBAAiB,oBAAoB;AAC9C,SAAS,qBAAqB;AASvB,SAAS,WACd,aACA,SASA;AACA,QAAM,SAAS,cAAc;AAC7B,SAAO,SAAS;AAAA,IACd,UAAU,cAAc,QAAQ,SAAS,eAAe,EAAE;AAAA,IAC1D,SAAS,MAAM,aAAa,QAAQ,eAAe,EAAE;AAAA,IACrD,SAAS,QAAQ,WAAW,MAAM,SAAS,WAAW;AAAA,IACtD,GAAG;AAAA,EACL,CAAC;AACH;AAMO,SAAS,cACd,KACA,SASA;AACA,QAAM,SAAS,cAAc;AAC7B,SAAO,SAAS;AAAA,IACd,UAAU,cAAc,QAAQ,WAAW,OAAO,EAAE;AAAA,IACpD,SAAS,MAAM,gBAAgB,QAAQ,OAAO,EAAE;AAAA,IAChD,SAAS,QAAQ,GAAG,MAAM,SAAS,WAAW;AAAA,IAC9C,GAAG;AAAA,EACL,CAAC;AACH;","names":[]}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// src/query/hooks/use-publication-mutations.ts
|
|
4
|
+
import { useMutation, useQueryClient } from "@tanstack/react-query";
|
|
5
|
+
import "../client.js";
|
|
6
|
+
import { useSifaConfig } from "../config.js";
|
|
7
|
+
import {
|
|
8
|
+
bulkHideStandardPublications,
|
|
9
|
+
bulkUnhideStandardPublications,
|
|
10
|
+
hideOrcidPublication,
|
|
11
|
+
hideSifaPublication,
|
|
12
|
+
hideStandardPublication,
|
|
13
|
+
refreshOrcidPublications,
|
|
14
|
+
unhideOrcidPublication,
|
|
15
|
+
unhideSifaPublication,
|
|
16
|
+
unhideStandardPublication
|
|
17
|
+
} from "../fetchers/publications.js";
|
|
18
|
+
import { sifaQueryKeys } from "../keys.js";
|
|
19
|
+
async function invalidateProfile(queryClient, ownerHandleOrDid) {
|
|
20
|
+
await queryClient.invalidateQueries({
|
|
21
|
+
queryKey: sifaQueryKeys.profile.byHandle(ownerHandleOrDid)
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
function makeWriteHook(fetcher) {
|
|
25
|
+
return function useHook(ownerHandleOrDid, options) {
|
|
26
|
+
const config = useSifaConfig();
|
|
27
|
+
const queryClient = useQueryClient();
|
|
28
|
+
return useMutation({
|
|
29
|
+
// Spread first: a consumer-supplied onSuccess would otherwise replace the
|
|
30
|
+
// handler below and silently drop cache invalidation (#453).
|
|
31
|
+
...options,
|
|
32
|
+
mutationFn: (v) => fetcher(config, v),
|
|
33
|
+
onSuccess: async (result, variables, onMutateResult, context) => {
|
|
34
|
+
if (result.success) {
|
|
35
|
+
await invalidateProfile(queryClient, ownerHandleOrDid);
|
|
36
|
+
}
|
|
37
|
+
await options?.onSuccess?.(result, variables, onMutateResult, context);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
var useHideOrcidPublication = makeWriteHook(
|
|
43
|
+
(config, putCode) => hideOrcidPublication(config, putCode)
|
|
44
|
+
);
|
|
45
|
+
var useUnhideOrcidPublication = makeWriteHook(
|
|
46
|
+
(config, putCode) => unhideOrcidPublication(config, putCode)
|
|
47
|
+
);
|
|
48
|
+
var useHideStandardPublication = makeWriteHook(
|
|
49
|
+
(config, uri) => hideStandardPublication(config, uri)
|
|
50
|
+
);
|
|
51
|
+
var useUnhideStandardPublication = makeWriteHook(
|
|
52
|
+
(config, uri) => unhideStandardPublication(config, uri)
|
|
53
|
+
);
|
|
54
|
+
var useBulkHideStandardPublications = makeWriteHook(
|
|
55
|
+
(config, uris) => bulkHideStandardPublications(config, uris)
|
|
56
|
+
);
|
|
57
|
+
var useBulkUnhideStandardPublications = makeWriteHook(
|
|
58
|
+
(config, uris) => bulkUnhideStandardPublications(config, uris)
|
|
59
|
+
);
|
|
60
|
+
var useHideSifaPublication = makeWriteHook(
|
|
61
|
+
(config, rkey) => hideSifaPublication(config, rkey)
|
|
62
|
+
);
|
|
63
|
+
var useUnhideSifaPublication = makeWriteHook(
|
|
64
|
+
(config, rkey) => unhideSifaPublication(config, rkey)
|
|
65
|
+
);
|
|
66
|
+
function useRefreshOrcidPublications(ownerHandleOrDid, options) {
|
|
67
|
+
const config = useSifaConfig();
|
|
68
|
+
const queryClient = useQueryClient();
|
|
69
|
+
return useMutation({
|
|
70
|
+
mutationFn: () => refreshOrcidPublications(config),
|
|
71
|
+
onSuccess: async (result, variables, onMutateResult, context) => {
|
|
72
|
+
if (result.success) {
|
|
73
|
+
await invalidateProfile(queryClient, ownerHandleOrDid);
|
|
74
|
+
}
|
|
75
|
+
await options?.onSuccess?.(result, variables, onMutateResult, context);
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
export {
|
|
80
|
+
useBulkHideStandardPublications,
|
|
81
|
+
useBulkUnhideStandardPublications,
|
|
82
|
+
useHideOrcidPublication,
|
|
83
|
+
useHideSifaPublication,
|
|
84
|
+
useHideStandardPublication,
|
|
85
|
+
useRefreshOrcidPublications,
|
|
86
|
+
useUnhideOrcidPublication,
|
|
87
|
+
useUnhideSifaPublication,
|
|
88
|
+
useUnhideStandardPublication
|
|
89
|
+
};
|
|
90
|
+
//# sourceMappingURL=use-publication-mutations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/query/hooks/use-publication-mutations.ts"],"sourcesContent":["'use client';\n\nimport { useMutation, useQueryClient, type UseMutationOptions } from '@tanstack/react-query';\n\nimport { type WriteResult } from '../client.js';\nimport { useSifaConfig } from '../config.js';\nimport {\n bulkHideStandardPublications,\n bulkUnhideStandardPublications,\n hideOrcidPublication,\n hideSifaPublication,\n hideStandardPublication,\n refreshOrcidPublications,\n unhideOrcidPublication,\n unhideSifaPublication,\n unhideStandardPublication,\n type RefreshOrcidPublicationsResult,\n} from '../fetchers/publications.js';\nimport { sifaQueryKeys } from '../keys.js';\n\nasync function invalidateProfile(\n queryClient: ReturnType<typeof useQueryClient>,\n ownerHandleOrDid: string,\n): Promise<void> {\n await queryClient.invalidateQueries({\n queryKey: sifaQueryKeys.profile.byHandle(ownerHandleOrDid),\n });\n}\n\nfunction makeWriteHook<TVariable>(\n fetcher: (config: ReturnType<typeof useSifaConfig>, v: TVariable) => Promise<WriteResult>,\n) {\n return function useHook(\n ownerHandleOrDid: string,\n options?: Omit<UseMutationOptions<WriteResult, Error, TVariable>, 'mutationFn'>,\n ) {\n const config = useSifaConfig();\n const queryClient = useQueryClient();\n return useMutation({\n // Spread first: a consumer-supplied onSuccess would otherwise replace the\n // handler below and silently drop cache invalidation (#453).\n ...options,\n mutationFn: (v: TVariable) => fetcher(config, v),\n onSuccess: async (result, variables, onMutateResult, context) => {\n if (result.success) {\n await invalidateProfile(queryClient, ownerHandleOrDid);\n }\n await options?.onSuccess?.(result, variables, onMutateResult, context);\n },\n });\n };\n}\n\n/** React hook for hiding an ORCID publication. Variable: the `putCode` number. */\nexport const useHideOrcidPublication = makeWriteHook<number>((config, putCode) =>\n hideOrcidPublication(config, putCode),\n);\n\n/** React hook for unhiding an ORCID publication. Variable: the `putCode` number. */\nexport const useUnhideOrcidPublication = makeWriteHook<number>((config, putCode) =>\n unhideOrcidPublication(config, putCode),\n);\n\n/** React hook for hiding a standard publication. Variable: the AT URI string. */\nexport const useHideStandardPublication = makeWriteHook<string>((config, uri) =>\n hideStandardPublication(config, uri),\n);\n\n/** React hook for unhiding a standard publication. Variable: the AT URI string. */\nexport const useUnhideStandardPublication = makeWriteHook<string>((config, uri) =>\n unhideStandardPublication(config, uri),\n);\n\n/** React hook for bulk-hiding standard publications. Variable: the URI list. */\nexport const useBulkHideStandardPublications = makeWriteHook<string[]>((config, uris) =>\n bulkHideStandardPublications(config, uris),\n);\n\n/** React hook for bulk-unhiding standard publications. Variable: the URI list. */\nexport const useBulkUnhideStandardPublications = makeWriteHook<string[]>((config, uris) =>\n bulkUnhideStandardPublications(config, uris),\n);\n\n/** React hook for hiding a Sifa-authored publication. Variable: the `rkey` string. */\nexport const useHideSifaPublication = makeWriteHook<string>((config, rkey) =>\n hideSifaPublication(config, rkey),\n);\n\n/** React hook for unhiding a Sifa-authored publication. Variable: the `rkey` string. */\nexport const useUnhideSifaPublication = makeWriteHook<string>((config, rkey) =>\n unhideSifaPublication(config, rkey),\n);\n\n/** React hook for re-pulling ORCID publications. */\nexport function useRefreshOrcidPublications(\n ownerHandleOrDid: string,\n options?: Omit<UseMutationOptions<RefreshOrcidPublicationsResult, Error, void>, 'mutationFn'>,\n) {\n const config = useSifaConfig();\n const queryClient = useQueryClient();\n return useMutation({\n mutationFn: () => refreshOrcidPublications(config),\n onSuccess: async (result, variables, onMutateResult, context) => {\n if (result.success) {\n await invalidateProfile(queryClient, ownerHandleOrDid);\n }\n await options?.onSuccess?.(result, variables, onMutateResult, context);\n },\n });\n}\n"],"mappings":";;;AAEA,SAAS,aAAa,sBAA+C;AAErE,OAAiC;AACjC,SAAS,qBAAqB;AAC9B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AACP,SAAS,qBAAqB;AAE9B,eAAe,kBACb,aACA,kBACe;AACf,QAAM,YAAY,kBAAkB;AAAA,IAClC,UAAU,cAAc,QAAQ,SAAS,gBAAgB;AAAA,EAC3D,CAAC;AACH;AAEA,SAAS,cACP,SACA;AACA,SAAO,SAAS,QACd,kBACA,SACA;AACA,UAAM,SAAS,cAAc;AAC7B,UAAM,cAAc,eAAe;AACnC,WAAO,YAAY;AAAA;AAAA;AAAA,MAGjB,GAAG;AAAA,MACH,YAAY,CAAC,MAAiB,QAAQ,QAAQ,CAAC;AAAA,MAC/C,WAAW,OAAO,QAAQ,WAAW,gBAAgB,YAAY;AAC/D,YAAI,OAAO,SAAS;AAClB,gBAAM,kBAAkB,aAAa,gBAAgB;AAAA,QACvD;AACA,cAAM,SAAS,YAAY,QAAQ,WAAW,gBAAgB,OAAO;AAAA,MACvE;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAGO,IAAM,0BAA0B;AAAA,EAAsB,CAAC,QAAQ,YACpE,qBAAqB,QAAQ,OAAO;AACtC;AAGO,IAAM,4BAA4B;AAAA,EAAsB,CAAC,QAAQ,YACtE,uBAAuB,QAAQ,OAAO;AACxC;AAGO,IAAM,6BAA6B;AAAA,EAAsB,CAAC,QAAQ,QACvE,wBAAwB,QAAQ,GAAG;AACrC;AAGO,IAAM,+BAA+B;AAAA,EAAsB,CAAC,QAAQ,QACzE,0BAA0B,QAAQ,GAAG;AACvC;AAGO,IAAM,kCAAkC;AAAA,EAAwB,CAAC,QAAQ,SAC9E,6BAA6B,QAAQ,IAAI;AAC3C;AAGO,IAAM,oCAAoC;AAAA,EAAwB,CAAC,QAAQ,SAChF,+BAA+B,QAAQ,IAAI;AAC7C;AAGO,IAAM,yBAAyB;AAAA,EAAsB,CAAC,QAAQ,SACnE,oBAAoB,QAAQ,IAAI;AAClC;AAGO,IAAM,2BAA2B;AAAA,EAAsB,CAAC,QAAQ,SACrE,sBAAsB,QAAQ,IAAI;AACpC;AAGO,SAAS,4BACd,kBACA,SACA;AACA,QAAM,SAAS,cAAc;AAC7B,QAAM,cAAc,eAAe;AACnC,SAAO,YAAY;AAAA,IACjB,YAAY,MAAM,yBAAyB,MAAM;AAAA,IACjD,WAAW,OAAO,QAAQ,WAAW,gBAAgB,YAAY;AAC/D,UAAI,OAAO,SAAS;AAClB,cAAM,kBAAkB,aAAa,gBAAgB;AAAA,MACvD;AACA,YAAM,SAAS,YAAY,QAAQ,WAAW,gBAAgB,OAAO;AAAA,IACvE;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// src/query/hooks/use-reaction-mutations.ts
|
|
4
|
+
import { useMutation, useQueryClient } from "@tanstack/react-query";
|
|
5
|
+
import "../client.js";
|
|
6
|
+
import { useSifaConfig } from "../config.js";
|
|
7
|
+
import {
|
|
8
|
+
createReaction,
|
|
9
|
+
deleteReaction
|
|
10
|
+
} from "../fetchers/reactions.js";
|
|
11
|
+
import { sifaQueryKeys } from "../keys.js";
|
|
12
|
+
function useCreateReaction(options) {
|
|
13
|
+
const config = useSifaConfig();
|
|
14
|
+
const queryClient = useQueryClient();
|
|
15
|
+
return useMutation({
|
|
16
|
+
// Spread first: a consumer-supplied onSuccess would otherwise replace the
|
|
17
|
+
// handler below and silently drop cache invalidation (#453).
|
|
18
|
+
...options,
|
|
19
|
+
mutationFn: ({ targetUri, appId, targetCid }) => createReaction(config, targetUri, appId, targetCid),
|
|
20
|
+
onSuccess: async (result, variables, onMutateResult, context) => {
|
|
21
|
+
if (result.ok) {
|
|
22
|
+
await queryClient.invalidateQueries({ queryKey: sifaQueryKeys.reactions.all() });
|
|
23
|
+
}
|
|
24
|
+
await options?.onSuccess?.(result, variables, onMutateResult, context);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
function useDeleteReaction(options) {
|
|
29
|
+
const config = useSifaConfig();
|
|
30
|
+
const queryClient = useQueryClient();
|
|
31
|
+
return useMutation({
|
|
32
|
+
// Spread first: a consumer-supplied onSuccess would otherwise replace the
|
|
33
|
+
// handler below and silently drop cache invalidation (#453).
|
|
34
|
+
...options,
|
|
35
|
+
mutationFn: ({ targetUri, appId }) => deleteReaction(config, targetUri, appId),
|
|
36
|
+
onSuccess: async (result, variables, onMutateResult, context) => {
|
|
37
|
+
if (result.success) {
|
|
38
|
+
await queryClient.invalidateQueries({ queryKey: sifaQueryKeys.reactions.all() });
|
|
39
|
+
}
|
|
40
|
+
await options?.onSuccess?.(result, variables, onMutateResult, context);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
export {
|
|
45
|
+
useCreateReaction,
|
|
46
|
+
useDeleteReaction
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=use-reaction-mutations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/query/hooks/use-reaction-mutations.ts"],"sourcesContent":["'use client';\n\nimport { useMutation, useQueryClient, type UseMutationOptions } from '@tanstack/react-query';\n\nimport { type WriteResult } from '../client.js';\nimport { useSifaConfig } from '../config.js';\nimport {\n createReaction,\n deleteReaction,\n type ReactionError,\n type ReactionResult,\n} from '../fetchers/reactions.js';\nimport { sifaQueryKeys } from '../keys.js';\n\n/** Variables for {@link useCreateReaction}. */\nexport interface CreateReactionVariables {\n targetUri: string;\n appId: string;\n targetCid?: string;\n}\n\ntype CreateReactionMutationResult =\n { ok: true; data: ReactionResult } | { ok: false; error: ReactionError };\n\n/**\n * React hook for creating a reaction. Returns the discriminated-union\n * result so the caller can detect `scope_insufficient` and trigger an\n * OAuth scope-upgrade flow.\n *\n * Invalidates the entire `sifaQueryKeys.reactions.all()` subtree on\n * success (any cached `useReactionStatus` view that includes the new\n * URI needs a refresh).\n */\nexport function useCreateReaction(\n options?: Omit<\n UseMutationOptions<CreateReactionMutationResult, Error, CreateReactionVariables>,\n 'mutationFn'\n >,\n) {\n const config = useSifaConfig();\n const queryClient = useQueryClient();\n return useMutation({\n // Spread first: a consumer-supplied onSuccess would otherwise replace the\n // handler below and silently drop cache invalidation (#453).\n ...options,\n mutationFn: ({ targetUri, appId, targetCid }: CreateReactionVariables) =>\n createReaction(config, targetUri, appId, targetCid),\n onSuccess: async (result, variables, onMutateResult, context) => {\n if (result.ok) {\n await queryClient.invalidateQueries({ queryKey: sifaQueryKeys.reactions.all() });\n }\n await options?.onSuccess?.(result, variables, onMutateResult, context);\n },\n });\n}\n\n/** Variables for {@link useDeleteReaction}. */\nexport interface DeleteReactionVariables {\n targetUri: string;\n appId: string;\n}\n\n/** React hook for deleting a reaction. */\nexport function useDeleteReaction(\n options?: Omit<UseMutationOptions<WriteResult, Error, DeleteReactionVariables>, 'mutationFn'>,\n) {\n const config = useSifaConfig();\n const queryClient = useQueryClient();\n return useMutation({\n // Spread first: a consumer-supplied onSuccess would otherwise replace the\n // handler below and silently drop cache invalidation (#453).\n ...options,\n mutationFn: ({ targetUri, appId }: DeleteReactionVariables) =>\n deleteReaction(config, targetUri, appId),\n onSuccess: async (result, variables, onMutateResult, context) => {\n if (result.success) {\n await queryClient.invalidateQueries({ queryKey: sifaQueryKeys.reactions.all() });\n }\n await options?.onSuccess?.(result, variables, onMutateResult, context);\n },\n });\n}\n"],"mappings":";;;AAEA,SAAS,aAAa,sBAA+C;AAErE,OAAiC;AACjC,SAAS,qBAAqB;AAC9B;AAAA,EACE;AAAA,EACA;AAAA,OAGK;AACP,SAAS,qBAAqB;AAqBvB,SAAS,kBACd,SAIA;AACA,QAAM,SAAS,cAAc;AAC7B,QAAM,cAAc,eAAe;AACnC,SAAO,YAAY;AAAA;AAAA;AAAA,IAGjB,GAAG;AAAA,IACH,YAAY,CAAC,EAAE,WAAW,OAAO,UAAU,MACzC,eAAe,QAAQ,WAAW,OAAO,SAAS;AAAA,IACpD,WAAW,OAAO,QAAQ,WAAW,gBAAgB,YAAY;AAC/D,UAAI,OAAO,IAAI;AACb,cAAM,YAAY,kBAAkB,EAAE,UAAU,cAAc,UAAU,IAAI,EAAE,CAAC;AAAA,MACjF;AACA,YAAM,SAAS,YAAY,QAAQ,WAAW,gBAAgB,OAAO;AAAA,IACvE;AAAA,EACF,CAAC;AACH;AASO,SAAS,kBACd,SACA;AACA,QAAM,SAAS,cAAc;AAC7B,QAAM,cAAc,eAAe;AACnC,SAAO,YAAY;AAAA;AAAA;AAAA,IAGjB,GAAG;AAAA,IACH,YAAY,CAAC,EAAE,WAAW,MAAM,MAC9B,eAAe,QAAQ,WAAW,KAAK;AAAA,IACzC,WAAW,OAAO,QAAQ,WAAW,gBAAgB,YAAY;AAC/D,UAAI,OAAO,SAAS;AAClB,cAAM,YAAY,kBAAkB,EAAE,UAAU,cAAc,UAAU,IAAI,EAAE,CAAC;AAAA,MACjF;AACA,YAAM,SAAS,YAAY,QAAQ,WAAW,gBAAgB,OAAO;AAAA,IACvE;AAAA,EACF,CAAC;AACH;","names":[]}
|