gemi 0.88.1 → 0.89.0

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.
@@ -15,9 +15,13 @@ interface UseEmailCodeArgs {
15
15
  * const r = await verify(email, code); // { session, isNewUser } or undefined
16
16
  * ```
17
17
  *
18
- * `error` is the last refusal: a `validation_error` on `email` or `code`
19
- * (`invalid_code`, `too_many_attempts`), or a 429 `rate_limit`. A successful
20
- * `verify` refreshes `useUser()`.
18
+ * `error` is the outcome of the latest call, `request` or `verify`: a
19
+ * `validation_error` on `email` or `code` (`invalid_code`,
20
+ * `too_many_attempts`), a 429 `rate_limit`, or `null` once that call succeeds.
21
+ * A failed `verify` followed by "send a new code" therefore shows the
22
+ * request's error, or nothing, not the stale `invalid_code` (#724).
23
+ * `requestError` and `verifyError` hold each call's own last error. A
24
+ * successful `verify` refreshes `useUser()`.
21
25
  */
22
26
  export declare function useEmailCode(args?: UseEmailCodeArgs): {
23
27
  request: (email: string) => Promise<{
@@ -31,6 +35,8 @@ export declare function useEmailCode(args?: UseEmailCodeArgs): {
31
35
  }>;
32
36
  isPending: boolean;
33
37
  error: import("gemi/client").MutationError;
38
+ requestError: import("gemi/client").MutationError;
39
+ verifyError: import("gemi/client").MutationError;
34
40
  };
35
41
  export {};
36
42
  //# sourceMappingURL=useEmailCode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useEmailCode.d.ts","sourceRoot":"","sources":["../../../client/auth/useEmailCode.ts"],"names":[],"mappings":"AAGA,UAAU,gBAAgB;IACxB,sFAAsF;IACtF,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,GAAG,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;CACpE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,IAAI,GAAE,gBAAqB;qBAoBnC,MAAM;;;oBACP,MAAM,QAAQ,MAAM,UAAS;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE;;;;;;EAKjE"}
1
+ {"version":3,"file":"useEmailCode.d.ts","sourceRoot":"","sources":["../../../client/auth/useEmailCode.ts"],"names":[],"mappings":"AAIA,UAAU,gBAAgB;IACxB,sFAAsF;IACtF,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,GAAG,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;CACpE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAAC,IAAI,GAAE,gBAAqB;qBA4BnC,MAAM;;;oBAIP,MAAM,QAAQ,MAAM,UAAS;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE;;;;;;;;EASjE"}
@@ -2111,9 +2111,13 @@ function useIntendedUrl(fallback = "/") {
2111
2111
  * const r = await verify(email, code); // { session, isNewUser } or undefined
2112
2112
  * ```
2113
2113
  *
2114
- * `error` is the last refusal: a `validation_error` on `email` or `code`
2115
- * (`invalid_code`, `too_many_attempts`), or a 429 `rate_limit`. A successful
2116
- * `verify` refreshes `useUser()`.
2114
+ * `error` is the outcome of the latest call, `request` or `verify`: a
2115
+ * `validation_error` on `email` or `code` (`invalid_code`,
2116
+ * `too_many_attempts`), a 429 `rate_limit`, or `null` once that call succeeds.
2117
+ * A failed `verify` followed by "send a new code" therefore shows the
2118
+ * request's error, or nothing, not the stale `invalid_code` (#724).
2119
+ * `requestError` and `verifyError` hold each call's own last error. A
2120
+ * successful `verify` refreshes `useUser()`.
2117
2121
  */
2118
2122
  function useEmailCode(args = {}) {
2119
2123
  const { mutate } = useFrameworkQuery("/auth/me", {}, { lazy: true });
@@ -2122,16 +2126,25 @@ function useEmailCode(args = {}) {
2122
2126
  if (result?.session?.user) mutate(result.session.user);
2123
2127
  args.onSuccess?.(result);
2124
2128
  } });
2125
- const error = verifyMutation.error ?? requestMutation.error;
2129
+ const [latest, setLatest] = useState(null);
2130
+ const error = latest === "verify" ? verifyMutation.error : latest === "request" ? requestMutation.error : null;
2126
2131
  return {
2127
- request: (email) => requestMutation.trigger({ email }),
2128
- verify: (email, code, extra = {}) => verifyMutation.trigger({
2129
- email,
2130
- code,
2131
- ...extra
2132
- }),
2132
+ request: (email) => {
2133
+ setLatest("request");
2134
+ return requestMutation.trigger({ email });
2135
+ },
2136
+ verify: (email, code, extra = {}) => {
2137
+ setLatest("verify");
2138
+ return verifyMutation.trigger({
2139
+ email,
2140
+ code,
2141
+ ...extra
2142
+ });
2143
+ },
2133
2144
  isPending: requestMutation.loading || verifyMutation.loading,
2134
- error
2145
+ error,
2146
+ requestError: requestMutation.error,
2147
+ verifyError: verifyMutation.error
2135
2148
  };
2136
2149
  }
2137
2150
  //#endregion