@adminide-stack/yantra-mobile 12.0.126 → 12.0.127

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.
@@ -1,25 +1,22 @@
1
- import {useEffect,useMemo}from'react';import {useSelector,useDispatch}from'react-redux';import {useQuery,gql}from'@apollo/client/index.js';import {userSelector,setUserAccountDetails}from'@adminide-stack/user-auth0-client';import {pickPrimaryDisplayName,pickAuthPicture}from'../../utils/authUserDisplay.js';import {useYantraChatMembership}from'./useYantraChatMembership.js';import {YANTRA_CHAT_ORG_SLUG}from'./yantraChatOrg.js';const VIEWER_ACCOUNT_QUERY = gql`
2
- query ChatViewerAccount($auth0Id: String!) {
3
- currentUser(auth0Id: $auth0Id) {
4
- id
5
- }
6
- }
7
- `;
1
+ import {useEffect,useMemo}from'react';import {useSelector,useDispatch}from'react-redux';import {userSelector,setUserAccountDetails}from'@adminide-stack/user-auth0-client';import {useAccountProfileQuery}from'common/graphql';import {pickPrimaryDisplayName,pickAuthPicture}from'../../utils/authUserDisplay.js';import {useYantraChatMembership}from'./useYantraChatMembership.js';import {YANTRA_CHAT_ORG_SLUG}from'./yantraChatOrg.js';function toRegistrationStatus(phoneE164, loading) {
2
+ if (phoneE164) return "registered";
3
+ return loading ? "registering" : "not-registered";
4
+ }
5
+ function describeAccountError(auth0Id, error) {
6
+ if (!auth0Id) return "You are signed out. Sign in again to use Chat.";
7
+ return error ? `Could not load your account: ${error.message}` : "Could not load your account.";
8
+ }
8
9
  function useChatViewer() {
9
- var _a, _b;
10
+ var _a, _b, _c;
10
11
  const authUser = useSelector(userSelector);
11
12
  const rehydrated = useSelector((state) => state._persist ? Boolean(state._persist.rehydrated) : true);
12
13
  const dispatch = useDispatch();
13
14
  const storedUserId = (authUser == null ? void 0 : authUser.id) || null;
14
15
  const auth0Id = (authUser == null ? void 0 : authUser.authUserId) || null;
15
- const account = useQuery(VIEWER_ACCOUNT_QUERY, {
16
- variables: {
17
- auth0Id
18
- },
19
- skip: !rehydrated || Boolean(storedUserId) || !auth0Id,
20
- fetchPolicy: "network-only"
16
+ const account = useAccountProfileQuery({
17
+ skip: !rehydrated || Boolean(storedUserId) || !auth0Id
21
18
  });
22
- const recoveredUserId = ((_b = (_a = account.data) == null ? void 0 : _a.currentUser) == null ? void 0 : _b.id) || null;
19
+ const recoveredUserId = ((_c = (_b = (_a = account.data) == null ? void 0 : _a.accountProfile) == null ? void 0 : _b.user) == null ? void 0 : _c.id) || null;
23
20
  useEffect(() => {
24
21
  if (!storedUserId && recoveredUserId) dispatch(setUserAccountDetails({
25
22
  id: recoveredUserId
@@ -29,7 +26,7 @@ function useChatViewer() {
29
26
  const displayName = useMemo(() => pickPrimaryDisplayName(authUser), [authUser]);
30
27
  const avatarUrl = useMemo(() => pickAuthPicture(authUser), [authUser]);
31
28
  const membership = useYantraChatMembership(userId, displayName);
32
- const registrationStatus = membership.phoneE164 ? "registered" : membership.loading ? "registering" : "not-registered";
29
+ const registrationStatus = toRegistrationStatus(membership.phoneE164, membership.loading);
33
30
  const viewer = useMemo(() => userId ? {
34
31
  userId,
35
32
  displayName,
@@ -39,8 +36,7 @@ function useChatViewer() {
39
36
  registrationStatus
40
37
  } : null, [userId, displayName, avatarUrl, membership.phoneE164, registrationStatus]);
41
38
  const ready = Boolean(authUser) && rehydrated && !membership.loading && !account.loading;
42
- const accountError = !auth0Id ? "You are signed out. Sign in again to use Chat." : account.error ? `Could not load your account: ${account.error.message}` : "Could not load your account.";
43
- const error = membership.error || (!viewer && ready ? accountError : null);
39
+ const error = membership.error || (!viewer && ready ? describeAccountError(auth0Id, account.error) : null);
44
40
  return {
45
41
  viewer,
46
42
  error,
@@ -1 +1 @@
1
- {"version":3,"file":"useChatViewer.js","sources":["../../../src/features/messaging/useChatViewer.ts"],"sourcesContent":["import { useEffect, useMemo } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { gql, useQuery } from '@apollo/client';\nimport type { IUserState } from '@adminide-stack/core';\nimport { Store, setUserAccountDetails, userSelector } from '@adminide-stack/user-auth0-client';\nimport { pickAuthPicture, pickPrimaryDisplayName } from '../../utils/authUserDisplay';\nimport type { ChatViewer, ChatRegistrationStatus } from './chatHost';\nimport { useYantraChatMembership } from './useYantraChatMembership';\nimport { YANTRA_CHAT_ORG_SLUG } from './yantraChatOrg';\n\nexport interface ChatViewerState {\n viewer: ChatViewer | null;\n error: string | null;\n ready: boolean;\n needsRegistration: boolean;\n membershipLoading: boolean;\n registerForChat: (phoneE164: string) => Promise<string>;\n refreshMembership: () => Promise<void>;\n}\n\n/**\n * The account id for the signed-in Auth0 user. The Login screen stores it in `user.id`, and the\n * store is persisted - so a session restored without it (an older build, or a lookup that failed\n * at login) keeps `id: ''` for good. Chat asks the server instead of failing.\n */\nconst VIEWER_ACCOUNT_QUERY = gql`\n query ChatViewerAccount($auth0Id: String!) {\n currentUser(auth0Id: $auth0Id) {\n id\n }\n }\n`;\n\nexport function useChatViewer(): ChatViewerState {\n const authUser = useSelector<Store.Auth, IUserState>(userSelector);\n // The store is restored from disk after launch (redux-persist, no gate in front of the UI):\n // until then `user` is the empty initial state, which must not read as \"no account\".\n const rehydrated = useSelector((state: { _persist?: { rehydrated?: boolean } }) =>\n state._persist ? Boolean(state._persist.rehydrated) : true,\n );\n const dispatch = useDispatch();\n const storedUserId = authUser?.id || null;\n const auth0Id = (authUser as { authUserId?: string | null } | undefined)?.authUserId || null;\n\n const account = useQuery<{ currentUser?: { id?: string | null } | null }>(VIEWER_ACCOUNT_QUERY, {\n variables: { auth0Id },\n skip: !rehydrated || Boolean(storedUserId) || !auth0Id,\n fetchPolicy: 'network-only',\n });\n const recoveredUserId = account.data?.currentUser?.id || null;\n\n // Repair the store, so every screen reading `user.id` (not only Chat) gets the account.\n useEffect(() => {\n if (!storedUserId && recoveredUserId) dispatch(setUserAccountDetails({ id: recoveredUserId }));\n }, [storedUserId, recoveredUserId, dispatch]);\n\n const userId = storedUserId || recoveredUserId;\n const displayName = useMemo(() => pickPrimaryDisplayName(authUser), [authUser]);\n const avatarUrl = useMemo(() => pickAuthPicture(authUser), [authUser]);\n\n const membership = useYantraChatMembership(userId, displayName);\n\n const registrationStatus: ChatRegistrationStatus = membership.phoneE164\n ? 'registered'\n : membership.loading\n ? 'registering'\n : 'not-registered';\n\n const viewer = useMemo<ChatViewer | null>(\n () =>\n userId\n ? {\n userId,\n displayName,\n avatarUrl,\n orgName: YANTRA_CHAT_ORG_SLUG,\n phoneE164: membership.phoneE164,\n registrationStatus,\n }\n : null,\n [userId, displayName, avatarUrl, membership.phoneE164, registrationStatus],\n );\n\n const ready = Boolean(authUser) && rehydrated && !membership.loading && !account.loading;\n\n const accountError = !auth0Id\n ? 'You are signed out. Sign in again to use Chat.'\n : account.error\n ? `Could not load your account: ${account.error.message}`\n : 'Could not load your account.';\n const error = membership.error || (!viewer && ready ? accountError : null);\n\n return {\n viewer,\n error,\n ready,\n needsRegistration: membership.needsRegistration,\n membershipLoading: membership.loading,\n registerForChat: membership.register,\n refreshMembership: membership.refresh,\n };\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useChatViewer.js","sources":["../../../src/features/messaging/useChatViewer.ts"],"sourcesContent":["import { useEffect, useMemo } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport type { IUserState } from '@adminide-stack/core';\nimport { Store, setUserAccountDetails, userSelector } from '@adminide-stack/user-auth0-client';\nimport { useAccountProfileQuery } from 'common/graphql';\nimport { pickAuthPicture, pickPrimaryDisplayName } from '../../utils/authUserDisplay';\nimport type { ChatViewer, ChatRegistrationStatus } from './chatHost';\nimport { useYantraChatMembership } from './useYantraChatMembership';\nimport { YANTRA_CHAT_ORG_SLUG } from './yantraChatOrg';\n\nexport interface ChatViewerState {\n viewer: ChatViewer | null;\n error: string | null;\n ready: boolean;\n needsRegistration: boolean;\n membershipLoading: boolean;\n registerForChat: (phoneE164: string) => Promise<string>;\n refreshMembership: () => Promise<void>;\n}\n\nfunction toRegistrationStatus(phoneE164: string | null, loading: boolean): ChatRegistrationStatus {\n if (phoneE164) return 'registered';\n return loading ? 'registering' : 'not-registered';\n}\n\nfunction describeAccountError(auth0Id: string | null, error?: { message: string }): string {\n if (!auth0Id) return 'You are signed out. Sign in again to use Chat.';\n return error ? `Could not load your account: ${error.message}` : 'Could not load your account.';\n}\n\n/**\n * The account id for the signed-in user. The Login screen stores it in `user.id`, and the store is\n * persisted - so a session restored without it (an older build, or a lookup that failed at login)\n * keeps `id: ''` for good. Chat then asks the server for the session's own account, through the\n * same `accountProfile` query Home resolves it from (usePrerequisiteIds), so the cache is usually\n * warm by the time Chat opens.\n */\nexport function useChatViewer(): ChatViewerState {\n const authUser = useSelector<Store.Auth, IUserState>(userSelector);\n // The store is restored from disk after launch (redux-persist, no gate in front of the UI):\n // until then `user` is the empty initial state, which must not read as \"no account\".\n const rehydrated = useSelector((state: { _persist?: { rehydrated?: boolean } }) =>\n state._persist ? Boolean(state._persist.rehydrated) : true,\n );\n const dispatch = useDispatch();\n const storedUserId = authUser?.id || null;\n const auth0Id = (authUser as { authUserId?: string | null } | undefined)?.authUserId || null;\n\n const account = useAccountProfileQuery({\n skip: !rehydrated || Boolean(storedUserId) || !auth0Id,\n });\n const recoveredUserId = account.data?.accountProfile?.user?.id || null;\n\n // Repair the store, so every screen reading `user.id` (not only Chat) gets the account.\n useEffect(() => {\n if (!storedUserId && recoveredUserId) dispatch(setUserAccountDetails({ id: recoveredUserId }));\n }, [storedUserId, recoveredUserId, dispatch]);\n\n const userId = storedUserId || recoveredUserId;\n const displayName = useMemo(() => pickPrimaryDisplayName(authUser), [authUser]);\n const avatarUrl = useMemo(() => pickAuthPicture(authUser), [authUser]);\n\n const membership = useYantraChatMembership(userId, displayName);\n\n const registrationStatus = toRegistrationStatus(membership.phoneE164, membership.loading);\n\n const viewer = useMemo<ChatViewer | null>(\n () =>\n userId\n ? {\n userId,\n displayName,\n avatarUrl,\n orgName: YANTRA_CHAT_ORG_SLUG,\n phoneE164: membership.phoneE164,\n registrationStatus,\n }\n : null,\n [userId, displayName, avatarUrl, membership.phoneE164, registrationStatus],\n );\n\n const ready = Boolean(authUser) && rehydrated && !membership.loading && !account.loading;\n\n const error = membership.error || (!viewer && ready ? describeAccountError(auth0Id, account.error) : null);\n\n return {\n viewer,\n error,\n ready,\n needsRegistration: membership.needsRegistration,\n membershipLoading: membership.loading,\n registerForChat: membership.register,\n refreshMembership: membership.refresh,\n };\n}\n"],"names":[],"mappings":"4aAkBA,SAAS,oBAAA,CAAqB,WAA0B,OAA0C,EAAA;AAChG,EAAA,IAAI,WAAkB,OAAA,YAAA;AACtB,EAAA,OAAO,UAAU,aAAgB,GAAA,gBAAA;AACnC;AACA,SAAS,oBAAA,CAAqB,SAAwB,KAE3C,EAAA;AACT,EAAI,IAAA,CAAC,SAAgB,OAAA,gDAAA;AACrB,EAAA,OAAO,KAAQ,GAAA,CAAA,6BAAA,EAAgC,KAAM,CAAA,OAAO,CAAK,CAAA,GAAA,8BAAA;AACnE;AASO,SAAS,aAAiC,GAAA;AApCjD,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAqCE,EAAM,MAAA,QAAA,GAAW,YAAoC,YAAY,CAAA;AAGjE,EAAM,MAAA,UAAA,GAAa,WAAY,CAAA,CAAC,KAI1B,KAAA,KAAA,CAAM,QAAW,GAAA,OAAA,CAAQ,KAAM,CAAA,QAAA,CAAS,UAAU,CAAA,GAAI,IAAI,CAAA;AAChE,EAAA,MAAM,WAAW,WAAY,EAAA;AAC7B,EAAM,MAAA,YAAA,GAAA,CAAe,qCAAU,EAAM,KAAA,IAAA;AACrC,EAAM,MAAA,OAAA,GAAA,CAAW,qCAED,UAAc,KAAA,IAAA;AAC9B,EAAA,MAAM,UAAU,sBAAuB,CAAA;AAAA,IACrC,MAAM,CAAC,UAAA,IAAc,OAAQ,CAAA,YAAY,KAAK,CAAC;AAAA,GAChD,CAAA;AACD,EAAM,MAAA,eAAA,GAAA,CAAA,CAAkB,yBAAQ,IAAR,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAc,mBAAd,IAA8B,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,KAA9B,mBAAoC,EAAM,KAAA,IAAA;AAGlE,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,YAAA,IAAgB,eAAiB,EAAA,QAAA,CAAS,qBAAsB,CAAA;AAAA,MACnE,EAAI,EAAA;AAAA,KACL,CAAC,CAAA;AAAA,GACD,EAAA,CAAC,YAAc,EAAA,eAAA,EAAiB,QAAQ,CAAC,CAAA;AAC5C,EAAA,MAAM,SAAS,YAAgB,IAAA,eAAA;AAC/B,EAAM,MAAA,WAAA,GAAc,QAAQ,MAAM,sBAAA,CAAuB,QAAQ,CAAG,EAAA,CAAC,QAAQ,CAAC,CAAA;AAC9E,EAAM,MAAA,SAAA,GAAY,QAAQ,MAAM,eAAA,CAAgB,QAAQ,CAAG,EAAA,CAAC,QAAQ,CAAC,CAAA;AACrE,EAAM,MAAA,UAAA,GAAa,uBAAwB,CAAA,MAAA,EAAQ,WAAW,CAAA;AAC9D,EAAA,MAAM,kBAAqB,GAAA,oBAAA,CAAqB,UAAW,CAAA,SAAA,EAAW,WAAW,OAAO,CAAA;AACxF,EAAM,MAAA,MAAA,GAAS,OAA2B,CAAA,MAAM,MAAS,GAAA;AAAA,IACvD,MAAA;AAAA,IACA,WAAA;AAAA,IACA,SAAA;AAAA,IACA,OAAS,EAAA,oBAAA;AAAA,IACT,WAAW,UAAW,CAAA,SAAA;AAAA,IACtB;AAAA,GACF,GAAI,MAAM,CAAC,MAAA,EAAQ,aAAa,SAAW,EAAA,UAAA,CAAW,SAAW,EAAA,kBAAkB,CAAC,CAAA;AACpF,EAAM,MAAA,KAAA,GAAQ,QAAQ,QAAQ,CAAA,IAAK,cAAc,CAAC,UAAA,CAAW,OAAW,IAAA,CAAC,OAAQ,CAAA,OAAA;AACjF,EAAM,MAAA,KAAA,GAAQ,UAAW,CAAA,KAAA,KAAU,CAAC,MAAA,IAAU,QAAQ,oBAAqB,CAAA,OAAA,EAAS,OAAQ,CAAA,KAAK,CAAI,GAAA,IAAA,CAAA;AACrG,EAAO,OAAA;AAAA,IACL,MAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,mBAAmB,UAAW,CAAA,iBAAA;AAAA,IAC9B,mBAAmB,UAAW,CAAA,OAAA;AAAA,IAC9B,iBAAiB,UAAW,CAAA,QAAA;AAAA,IAC5B,mBAAmB,UAAW,CAAA;AAAA,GAChC;AACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adminide-stack/yantra-mobile",
3
- "version": "12.0.126",
3
+ "version": "12.0.127",
4
4
  "description": "Sample core for higher packages to depend on",
5
5
  "license": "ISC",
6
6
  "author": "CDMBase LLC",
@@ -27,7 +27,7 @@
27
27
  "uuid": "^9.0.0"
28
28
  },
29
29
  "devDependencies": {
30
- "common": "12.0.125",
30
+ "common": "^12.0.127",
31
31
  "libphonenumber-js": "^1.13.3"
32
32
  },
33
33
  "peerDependencies": {
@@ -67,5 +67,5 @@
67
67
  "typescript": {
68
68
  "definition": "lib/index.d.ts"
69
69
  },
70
- "gitHead": "f553a24aace625627285946087727625b292da23"
70
+ "gitHead": "07be045ad296039ba529fa9314b72a355e0a3294"
71
71
  }