@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.
- package/dist/src/hooks/index.d.ts +1 -1
- package/dist/src/hooks/index.d.ts.map +1 -1
- package/dist/src/hooks/index.js +1 -1
- package/dist/src/hooks/index.js.map +1 -1
- package/dist/src/hooks/useGetAccountByMezoId.d.ts +6 -3
- package/dist/src/hooks/useGetAccountByMezoId.d.ts.map +1 -1
- package/dist/src/hooks/useGetAccountByMezoId.js +12 -12
- package/dist/src/hooks/useGetAccountByMezoId.js.map +1 -1
- package/dist/src/hooks/useUsernameValidation.d.ts +7 -0
- package/dist/src/hooks/useUsernameValidation.d.ts.map +1 -0
- package/dist/src/hooks/useUsernameValidation.js +48 -0
- package/dist/src/hooks/useUsernameValidation.js.map +1 -0
- package/package.json +1 -1
- package/src/hooks/index.ts +1 -1
- package/src/hooks/useGetAccountByMezoId.ts +24 -16
- package/src/hooks/{useIsUsernameValid.ts → useUsernameValidation.ts} +26 -20
- package/dist/src/hooks/useIsUsernameValid.d.ts +0 -7
- package/dist/src/hooks/useIsUsernameValid.d.ts.map +0 -1
- package/dist/src/hooks/useIsUsernameValid.js +0 -41
- package/dist/src/hooks/useIsUsernameValid.js.map +0 -1
|
@@ -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,
|
|
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"}
|
package/dist/src/hooks/index.js
CHANGED
|
@@ -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,
|
|
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 {
|
|
1
|
+
import { UseBaseQueryOptions } from "@tanstack/react-query";
|
|
2
2
|
import type { AuthApiClient, GetAccountByMezoIdOrAddressResponse } from "../api";
|
|
3
|
-
export declare const
|
|
4
|
-
|
|
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,
|
|
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
|
|
6
|
-
QUERY_KEYS.ACCOUNT,
|
|
7
|
-
mezoId
|
|
8
|
-
|
|
9
|
-
|
|
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
|
-
|
|
14
|
-
|
|
15
|
-
staleTime: ONE_MINUTE_MS,
|
|
16
|
-
|
|
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,
|
|
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 @@
|
|
|
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
package/src/hooks/index.ts
CHANGED
|
@@ -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
|
|
8
|
-
|
|
7
|
+
export const getAccountByMezoIdQueryOptions = ({
|
|
8
|
+
authApiClient,
|
|
9
9
|
mezoId,
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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
|
|
8
|
+
export function useUsernameValidation() {
|
|
12
9
|
const queryClient = useQueryClient()
|
|
13
10
|
const authApiClient = useAuthApiClient()
|
|
14
11
|
|
|
15
|
-
const
|
|
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
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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 {
|
|
57
|
+
return { validateUsername: validateUsernameCallback }
|
|
52
58
|
}
|
|
@@ -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"}
|