@mezo-org/passport 0.4.0-dev.66 → 0.4.0-dev.67

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.
@@ -4,7 +4,6 @@ export * from "./useGetAccountByAddress";
4
4
  export * from "./useGetAccountByMezoId";
5
5
  export * from "./useGetCurrentAccount";
6
6
  export * from "./useGetSession";
7
- export * from "./useIsUsernameValid";
8
7
  export * from "./useLinkAccount";
9
8
  export * from "./useRefreshPassport";
10
9
  export * from "./useSignInWithDiscord";
@@ -13,4 +12,5 @@ export * from "./useSignOut";
13
12
  export * from "./useSignUpWithWallet";
14
13
  export { useInvalidateTokensBalances, useResetTokensBalances, } from "./useTokensBalances";
15
14
  export * from "./useUpdateMezoId";
15
+ export * from "./useUsernameValidation";
16
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,kDAAkD,EAClD,4BAA4B,EAC5B,oDAAoD,GACrD,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAC7E,cAAc,0BAA0B,CAAA;AACxC,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,cAAc,CAAA;AAC5B,cAAc,uBAAuB,CAAA;AACrC,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,qBAAqB,CAAA;AAC5B,cAAc,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,kDAAkD,EAClD,4BAA4B,EAC5B,oDAAoD,GACrD,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAC7E,cAAc,0BAA0B,CAAA;AACxC,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,cAAc,CAAA;AAC5B,cAAc,uBAAuB,CAAA;AACrC,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,qBAAqB,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA"}
@@ -4,7 +4,6 @@ export * from "./useGetAccountByAddress";
4
4
  export * from "./useGetAccountByMezoId";
5
5
  export * from "./useGetCurrentAccount";
6
6
  export * from "./useGetSession";
7
- export * from "./useIsUsernameValid";
8
7
  export * from "./useLinkAccount";
9
8
  export * from "./useRefreshPassport";
10
9
  export * from "./useSignInWithDiscord";
@@ -13,4 +12,5 @@ export * from "./useSignOut";
13
12
  export * from "./useSignUpWithWallet";
14
13
  export { useInvalidateTokensBalances, useResetTokensBalances, } from "./useTokensBalances";
15
14
  export * from "./useUpdateMezoId";
15
+ export * from "./useUsernameValidation";
16
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,kDAAkD,EAClD,4BAA4B,EAC5B,oDAAoD,GACrD,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAC7E,cAAc,0BAA0B,CAAA;AACxC,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,cAAc,CAAA;AAC5B,cAAc,uBAAuB,CAAA;AACrC,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,qBAAqB,CAAA;AAC5B,cAAc,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,kDAAkD,EAClD,4BAA4B,EAC5B,oDAAoD,GACrD,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAC7E,cAAc,0BAA0B,CAAA;AACxC,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,cAAc,CAAA;AAC5B,cAAc,uBAAuB,CAAA;AACrC,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,qBAAqB,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA"}
@@ -1,6 +1,9 @@
1
- import { skipToken, UseBaseQueryOptions } from "@tanstack/react-query";
1
+ import { UseBaseQueryOptions } from "@tanstack/react-query";
2
2
  import type { AuthApiClient, GetAccountByMezoIdOrAddressResponse } from "../api";
3
- export declare const getAccountByMezoIdQueryKeys: (mezoId?: string) => (string | undefined)[];
4
- export declare const getAccountByMezoIdQueryFunction: (authApiClient: AuthApiClient, mezoId?: string) => typeof skipToken | (() => Promise<GetAccountByMezoIdOrAddressResponse | null>);
3
+ export declare const getAccountByMezoIdQueryOptions: ({ authApiClient, mezoId, queryOptions, }: {
4
+ authApiClient: AuthApiClient;
5
+ mezoId?: string;
6
+ queryOptions?: Omit<UseBaseQueryOptions<GetAccountByMezoIdOrAddressResponse | null>, "queryKey" | "queryFn">;
7
+ }) => UseBaseQueryOptions<GetAccountByMezoIdOrAddressResponse | null>;
5
8
  export declare function useGetAccountByMezoId(mezoId?: string, queryOptions?: Omit<UseBaseQueryOptions<GetAccountByMezoIdOrAddressResponse | null>, "queryKey" | "queryFn">): import("@tanstack/react-query").UseQueryResult<GetAccountByMezoIdOrAddressResponse | null, Error>;
6
9
  //# sourceMappingURL=useGetAccountByMezoId.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useGetAccountByMezoId.d.ts","sourceRoot":"","sources":["../../../src/hooks/useGetAccountByMezoId.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,SAAS,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAIhF,OAAO,KAAK,EAAE,aAAa,EAAE,mCAAmC,EAAE,MAAM,QAAQ,CAAA;AAEhF,eAAO,MAAM,2BAA2B,GAAI,SAAS,MAAM,2BAG1D,CAAA;AAED,eAAO,MAAM,+BAA+B,GAC1C,eAAe,aAAa,EAC5B,SAAS,MAAM,mFAE6D,CAAA;AAE9E,wBAAgB,qBAAqB,CACnC,MAAM,CAAC,EAAE,MAAM,EACf,YAAY,GAAE,IAAI,CAChB,mBAAmB,CAAC,mCAAmC,GAAG,IAAI,CAAC,EAC/D,UAAU,GAAG,SAAS,CAClB,qGAWP"}
1
+ {"version":3,"file":"useGetAccountByMezoId.d.ts","sourceRoot":"","sources":["../../../src/hooks/useGetAccountByMezoId.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAIhF,OAAO,KAAK,EAAE,aAAa,EAAE,mCAAmC,EAAE,MAAM,QAAQ,CAAA;AAEhF,eAAO,MAAM,8BAA8B,GAAI,0CAI5C;IACD,aAAa,EAAE,aAAa,CAAA;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,IAAI,CACjB,mBAAmB,CAAC,mCAAmC,GAAG,IAAI,CAAC,EAC/D,UAAU,GAAG,SAAS,CACvB,CAAA;CACF,KAAG,mBAAmB,CAAC,mCAAmC,GAAG,IAAI,CAMhE,CAAA;AAEF,wBAAgB,qBAAqB,CACnC,MAAM,CAAC,EAAE,MAAM,EACf,YAAY,GAAE,IAAI,CAChB,mBAAmB,CAAC,mCAAmC,GAAG,IAAI,CAAC,EAC/D,UAAU,GAAG,SAAS,CAClB,qGAWP"}
@@ -2,19 +2,19 @@ import { useQuery, skipToken } from "@tanstack/react-query";
2
2
  import { useAuthApiClient } from "./useAuthApiClient";
3
3
  import { QUERY_KEYS } from "./constants";
4
4
  import { ONE_MINUTE_MS } from "../utils/time";
5
- export const getAccountByMezoIdQueryKeys = (mezoId) => [
6
- QUERY_KEYS.ACCOUNT,
7
- mezoId,
8
- ];
9
- export const getAccountByMezoIdQueryFunction = (authApiClient, mezoId) => mezoId ? () => authApiClient.getAccountByMezoIdOrAddress(mezoId) : skipToken;
5
+ export const getAccountByMezoIdQueryOptions = ({ authApiClient, mezoId, queryOptions = {}, }) => ({
6
+ queryKey: [QUERY_KEYS.ACCOUNT, mezoId],
7
+ queryFn: mezoId
8
+ ? () => authApiClient.getAccountByMezoIdOrAddress(mezoId)
9
+ : skipToken,
10
+ ...queryOptions,
11
+ });
10
12
  export function useGetAccountByMezoId(mezoId, queryOptions = {}) {
11
13
  const authApiClient = useAuthApiClient();
12
- return useQuery({
13
- queryKey: getAccountByMezoIdQueryKeys(mezoId),
14
- queryFn: getAccountByMezoIdQueryFunction(authApiClient, mezoId),
15
- staleTime: ONE_MINUTE_MS,
16
- retry: 1,
17
- ...queryOptions,
18
- });
14
+ return useQuery(getAccountByMezoIdQueryOptions({
15
+ authApiClient,
16
+ mezoId,
17
+ queryOptions: { staleTime: ONE_MINUTE_MS, retry: 1, ...queryOptions },
18
+ }));
19
19
  }
20
20
  //# sourceMappingURL=useGetAccountByMezoId.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useGetAccountByMezoId.js","sourceRoot":"","sources":["../../../src/hooks/useGetAccountByMezoId.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAuB,MAAM,uBAAuB,CAAA;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAG7C,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,MAAe,EAAE,EAAE,CAAC;IAC9D,UAAU,CAAC,OAAO;IAClB,MAAM;CACP,CAAA;AAED,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAC7C,aAA4B,EAC5B,MAAe,EACf,EAAE,CACF,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AAE9E,MAAM,UAAU,qBAAqB,CACnC,MAAe,EACf,eAGI,EAAE;IAEN,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAA;IAExC,OAAO,QAAQ,CAAC;QACd,QAAQ,EAAE,2BAA2B,CAAC,MAAM,CAAC;QAC7C,OAAO,EAAE,+BAA+B,CAAC,aAAa,EAAE,MAAM,CAAC;QAC/D,SAAS,EAAE,aAAa;QACxB,KAAK,EAAE,CAAC;QACR,GAAG,YAAY;KAChB,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"useGetAccountByMezoId.js","sourceRoot":"","sources":["../../../src/hooks/useGetAccountByMezoId.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAuB,MAAM,uBAAuB,CAAA;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAG7C,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,EAC7C,aAAa,EACb,MAAM,EACN,YAAY,GAAG,EAAE,GAQlB,EAAmE,EAAE,CAAC,CAAC;IACtE,QAAQ,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC;IACtC,OAAO,EAAE,MAAM;QACb,CAAC,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,2BAA2B,CAAC,MAAM,CAAC;QACzD,CAAC,CAAC,SAAS;IACb,GAAG,YAAY;CAChB,CAAC,CAAA;AAEF,MAAM,UAAU,qBAAqB,CACnC,MAAe,EACf,eAGI,EAAE;IAEN,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAA;IAExC,OAAO,QAAQ,CACb,8BAA8B,CAAC;QAC7B,aAAa;QACb,MAAM;QACN,YAAY,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,YAAY,EAAE;KACtE,CAAC,CACH,CAAA;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ export declare function useUsernameValidation(): {
2
+ validateUsername: (username: string) => Promise<{
3
+ isValid: boolean;
4
+ errors: string[];
5
+ }>;
6
+ };
7
+ //# sourceMappingURL=useUsernameValidation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useUsernameValidation.d.ts","sourceRoot":"","sources":["../../../src/hooks/useUsernameValidation.ts"],"names":[],"mappings":"AAOA,wBAAgB,qBAAqB;iCAKhB,MAAM;;;;EA6C1B"}
@@ -0,0 +1,48 @@
1
+ import { useCallback } from "react";
2
+ import { useQueryClient } from "@tanstack/react-query";
3
+ import { validateUsername } from "../utils/validation";
4
+ import { useAuthApiClient } from "./useAuthApiClient";
5
+ import { ONE_MINUTE_MS } from "../utils/time";
6
+ import { getAccountByMezoIdQueryOptions } from "./useGetAccountByMezoId";
7
+ export function useUsernameValidation() {
8
+ const queryClient = useQueryClient();
9
+ const authApiClient = useAuthApiClient();
10
+ const validateUsernameCallback = useCallback(async (username) => {
11
+ // Validate if username is correct
12
+ const errors = validateUsername(username);
13
+ if (errors.length > 0) {
14
+ return {
15
+ isValid: false,
16
+ errors,
17
+ };
18
+ }
19
+ const mezoId = `${username}.mezo`;
20
+ let foundUser;
21
+ // Find if user with given mezoId already exists in DB
22
+ try {
23
+ // Thanks to fetchQuery we know the data is up-to-date and also we use
24
+ // the cached value if the `getAccountByMezoId` hook was already called
25
+ // with the given mezoId.
26
+ foundUser = await queryClient.fetchQuery(getAccountByMezoIdQueryOptions({
27
+ authApiClient,
28
+ mezoId,
29
+ queryOptions: { staleTime: ONE_MINUTE_MS, retry: 1 },
30
+ }));
31
+ // By default fetchQuery throws an error if it's not resolved with the
32
+ // data, but we don't want to do that thus the empty catch.
33
+ // eslint-disable-next-line no-empty
34
+ }
35
+ catch (error) { }
36
+ if (foundUser)
37
+ return {
38
+ isValid: false,
39
+ errors: ["Mezo id already exists."],
40
+ };
41
+ return {
42
+ isValid: true,
43
+ errors: [],
44
+ };
45
+ }, [authApiClient, queryClient]);
46
+ return { validateUsername: validateUsernameCallback };
47
+ }
48
+ //# sourceMappingURL=useUsernameValidation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useUsernameValidation.js","sourceRoot":"","sources":["../../../src/hooks/useUsernameValidation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAA;AAExE,MAAM,UAAU,qBAAqB;IACnC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;IACpC,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAA;IAExC,MAAM,wBAAwB,GAAG,WAAW,CAC1C,KAAK,EAAE,QAAgB,EAAE,EAAE;QACzB,kCAAkC;QAClC,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAA;QACzC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM;aACP,CAAA;QACH,CAAC;QAED,MAAM,MAAM,GAAG,GAAG,QAAQ,OAAO,CAAA;QAEjC,IAAI,SAAS,CAAA;QACb,sDAAsD;QACtD,IAAI,CAAC;YACH,sEAAsE;YACtE,uEAAuE;YACvE,yBAAyB;YACzB,SAAS,GAAG,MAAM,WAAW,CAAC,UAAU,CACtC,8BAA8B,CAAC;gBAC7B,aAAa;gBACb,MAAM;gBACN,YAAY,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,EAAE;aACrD,CAAC,CACH,CAAA;YACD,sEAAsE;YACtE,2DAA2D;YAC3D,oCAAoC;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC,CAAA,CAAC;QAElB,IAAI,SAAS;YACX,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,CAAC,yBAAyB,CAAC;aACpC,CAAA;QAEH,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,EAAE;SACX,CAAA;IACH,CAAC,EACD,CAAC,aAAa,EAAE,WAAW,CAAC,CAC7B,CAAA;IAED,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,CAAA;AACvD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mezo-org/passport",
3
- "version": "0.4.0-dev.66",
3
+ "version": "0.4.0-dev.67",
4
4
  "main": "dist/src/index.js",
5
5
  "license": "GPL-3.0-only",
6
6
  "scripts": {
@@ -11,7 +11,6 @@ export * from "./useGetAccountByAddress"
11
11
  export * from "./useGetAccountByMezoId"
12
12
  export * from "./useGetCurrentAccount"
13
13
  export * from "./useGetSession"
14
- export * from "./useIsUsernameValid"
15
14
  export * from "./useLinkAccount"
16
15
  export * from "./useRefreshPassport"
17
16
  export * from "./useSignInWithDiscord"
@@ -23,3 +22,4 @@ export {
23
22
  useResetTokensBalances,
24
23
  } from "./useTokensBalances"
25
24
  export * from "./useUpdateMezoId"
25
+ export * from "./useUsernameValidation"
@@ -4,16 +4,24 @@ import { QUERY_KEYS } from "./constants"
4
4
  import { ONE_MINUTE_MS } from "../utils/time"
5
5
  import type { AuthApiClient, GetAccountByMezoIdOrAddressResponse } from "../api"
6
6
 
7
- export const getAccountByMezoIdQueryKeys = (mezoId?: string) => [
8
- QUERY_KEYS.ACCOUNT,
7
+ export const getAccountByMezoIdQueryOptions = ({
8
+ authApiClient,
9
9
  mezoId,
10
- ]
11
-
12
- export const getAccountByMezoIdQueryFunction = (
13
- authApiClient: AuthApiClient,
14
- mezoId?: string,
15
- ) =>
16
- mezoId ? () => authApiClient.getAccountByMezoIdOrAddress(mezoId) : skipToken
10
+ queryOptions = {},
11
+ }: {
12
+ authApiClient: AuthApiClient
13
+ mezoId?: string
14
+ queryOptions?: Omit<
15
+ UseBaseQueryOptions<GetAccountByMezoIdOrAddressResponse | null>,
16
+ "queryKey" | "queryFn"
17
+ >
18
+ }): UseBaseQueryOptions<GetAccountByMezoIdOrAddressResponse | null> => ({
19
+ queryKey: [QUERY_KEYS.ACCOUNT, mezoId],
20
+ queryFn: mezoId
21
+ ? () => authApiClient.getAccountByMezoIdOrAddress(mezoId)
22
+ : skipToken,
23
+ ...queryOptions,
24
+ })
17
25
 
18
26
  export function useGetAccountByMezoId(
19
27
  mezoId?: string,
@@ -24,11 +32,11 @@ export function useGetAccountByMezoId(
24
32
  ) {
25
33
  const authApiClient = useAuthApiClient()
26
34
 
27
- return useQuery({
28
- queryKey: getAccountByMezoIdQueryKeys(mezoId),
29
- queryFn: getAccountByMezoIdQueryFunction(authApiClient, mezoId),
30
- staleTime: ONE_MINUTE_MS,
31
- retry: 1,
32
- ...queryOptions,
33
- })
35
+ return useQuery(
36
+ getAccountByMezoIdQueryOptions({
37
+ authApiClient,
38
+ mezoId,
39
+ queryOptions: { staleTime: ONE_MINUTE_MS, retry: 1, ...queryOptions },
40
+ }),
41
+ )
34
42
  }
@@ -1,28 +1,42 @@
1
1
  import { useCallback } from "react"
2
2
  import { useQueryClient } from "@tanstack/react-query"
3
3
  import { validateUsername } from "../utils/validation"
4
- import {
5
- getAccountByMezoIdQueryFunction,
6
- getAccountByMezoIdQueryKeys,
7
- } from "./useGetAccountByMezoId"
8
4
  import { useAuthApiClient } from "./useAuthApiClient"
9
5
  import { ONE_MINUTE_MS } from "../utils/time"
6
+ import { getAccountByMezoIdQueryOptions } from "./useGetAccountByMezoId"
10
7
 
11
- export function useIsUsernameValid() {
8
+ export function useUsernameValidation() {
12
9
  const queryClient = useQueryClient()
13
10
  const authApiClient = useAuthApiClient()
14
11
 
15
- const isUsernameValid = useCallback(
12
+ const validateUsernameCallback = useCallback(
16
13
  async (username: string) => {
14
+ // Validate if username is correct
15
+ const errors = validateUsername(username)
16
+ if (errors.length > 0) {
17
+ return {
18
+ isValid: false,
19
+ errors,
20
+ }
21
+ }
22
+
17
23
  const mezoId = `${username}.mezo`
18
24
 
19
25
  let foundUser
26
+ // Find if user with given mezoId already exists in DB
20
27
  try {
21
- foundUser = await queryClient.fetchQuery({
22
- queryKey: getAccountByMezoIdQueryKeys(mezoId),
23
- queryFn: getAccountByMezoIdQueryFunction(authApiClient, mezoId),
24
- staleTime: ONE_MINUTE_MS,
25
- })
28
+ // Thanks to fetchQuery we know the data is up-to-date and also we use
29
+ // the cached value if the `getAccountByMezoId` hook was already called
30
+ // with the given mezoId.
31
+ foundUser = await queryClient.fetchQuery(
32
+ getAccountByMezoIdQueryOptions({
33
+ authApiClient,
34
+ mezoId,
35
+ queryOptions: { staleTime: ONE_MINUTE_MS, retry: 1 },
36
+ }),
37
+ )
38
+ // By default fetchQuery throws an error if it's not resolved with the
39
+ // data, but we don't want to do that thus the empty catch.
26
40
  // eslint-disable-next-line no-empty
27
41
  } catch (error) {}
28
42
 
@@ -32,14 +46,6 @@ export function useIsUsernameValid() {
32
46
  errors: ["Mezo id already exists."],
33
47
  }
34
48
 
35
- const errors = validateUsername(username)
36
- if (errors.length > 0) {
37
- return {
38
- isValid: false,
39
- errors,
40
- }
41
- }
42
-
43
49
  return {
44
50
  isValid: true,
45
51
  errors: [],
@@ -48,5 +54,5 @@ export function useIsUsernameValid() {
48
54
  [authApiClient, queryClient],
49
55
  )
50
56
 
51
- return { isUsernameValid }
57
+ return { validateUsername: validateUsernameCallback }
52
58
  }
@@ -1,7 +0,0 @@
1
- export declare function useIsUsernameValid(): {
2
- isUsernameValid: (username: string) => Promise<{
3
- isValid: boolean;
4
- errors: string[];
5
- }>;
6
- };
7
- //# sourceMappingURL=useIsUsernameValid.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useIsUsernameValid.d.ts","sourceRoot":"","sources":["../../../src/hooks/useIsUsernameValid.ts"],"names":[],"mappings":"AAUA,wBAAgB,kBAAkB;gCAKb,MAAM;;;;EAoC1B"}
@@ -1,41 +0,0 @@
1
- import { useCallback } from "react";
2
- import { useQueryClient } from "@tanstack/react-query";
3
- import { validateUsername } from "../utils/validation";
4
- import { getAccountByMezoIdQueryFunction, getAccountByMezoIdQueryKeys, } from "./useGetAccountByMezoId";
5
- import { useAuthApiClient } from "./useAuthApiClient";
6
- import { ONE_MINUTE_MS } from "../utils/time";
7
- export function useIsUsernameValid() {
8
- const queryClient = useQueryClient();
9
- const authApiClient = useAuthApiClient();
10
- const isUsernameValid = useCallback(async (username) => {
11
- const mezoId = `${username}.mezo`;
12
- let foundUser;
13
- try {
14
- foundUser = await queryClient.fetchQuery({
15
- queryKey: getAccountByMezoIdQueryKeys(mezoId),
16
- queryFn: getAccountByMezoIdQueryFunction(authApiClient, mezoId),
17
- staleTime: ONE_MINUTE_MS,
18
- });
19
- // eslint-disable-next-line no-empty
20
- }
21
- catch (error) { }
22
- if (foundUser)
23
- return {
24
- isValid: false,
25
- errors: ["Mezo id already exists."],
26
- };
27
- const errors = validateUsername(username);
28
- if (errors.length > 0) {
29
- return {
30
- isValid: false,
31
- errors,
32
- };
33
- }
34
- return {
35
- isValid: true,
36
- errors: [],
37
- };
38
- }, [authApiClient, queryClient]);
39
- return { isUsernameValid };
40
- }
41
- //# sourceMappingURL=useIsUsernameValid.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useIsUsernameValid.js","sourceRoot":"","sources":["../../../src/hooks/useIsUsernameValid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EACL,+BAA+B,EAC/B,2BAA2B,GAC5B,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE7C,MAAM,UAAU,kBAAkB;IAChC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;IACpC,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAA;IAExC,MAAM,eAAe,GAAG,WAAW,CACjC,KAAK,EAAE,QAAgB,EAAE,EAAE;QACzB,MAAM,MAAM,GAAG,GAAG,QAAQ,OAAO,CAAA;QAEjC,IAAI,SAAS,CAAA;QACb,IAAI,CAAC;YACH,SAAS,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC;gBACvC,QAAQ,EAAE,2BAA2B,CAAC,MAAM,CAAC;gBAC7C,OAAO,EAAE,+BAA+B,CAAC,aAAa,EAAE,MAAM,CAAC;gBAC/D,SAAS,EAAE,aAAa;aACzB,CAAC,CAAA;YACF,oCAAoC;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC,CAAA,CAAC;QAElB,IAAI,SAAS;YACX,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,CAAC,yBAAyB,CAAC;aACpC,CAAA;QAEH,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAA;QACzC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM;aACP,CAAA;QACH,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,EAAE;SACX,CAAA;IACH,CAAC,EACD,CAAC,aAAa,EAAE,WAAW,CAAC,CAC7B,CAAA;IAED,OAAO,EAAE,eAAe,EAAE,CAAA;AAC5B,CAAC"}