Allow use of useCurrentUser/useCurrentTeam hooks in unauthenticated components
This commit is contained in:
@@ -1,8 +1,23 @@
|
||||
import invariant from "invariant";
|
||||
import Team from "~/models/Team";
|
||||
import useStores from "./useStores";
|
||||
|
||||
export default function useCurrentTeam() {
|
||||
/**
|
||||
* Returns the current team, or undefined if there is no current team and `rejectOnEmpty` is set to
|
||||
* false.
|
||||
*
|
||||
* @param options.rejectOnEmpty - If true, throws an error if there is no current team. Defaults to true.
|
||||
*/
|
||||
function useCurrentTeam(options: { rejectOnEmpty: false }): Team | undefined;
|
||||
function useCurrentTeam(options?: { rejectOnEmpty: true }): Team;
|
||||
function useCurrentTeam({
|
||||
rejectOnEmpty = true,
|
||||
}: { rejectOnEmpty?: boolean } = {}) {
|
||||
const { auth } = useStores();
|
||||
invariant(auth.team, "team required");
|
||||
return auth.team;
|
||||
if (rejectOnEmpty) {
|
||||
invariant(auth.team, "team required");
|
||||
}
|
||||
return auth.team || undefined;
|
||||
}
|
||||
|
||||
export default useCurrentTeam;
|
||||
|
||||
@@ -1,8 +1,23 @@
|
||||
import invariant from "invariant";
|
||||
import User from "~/models/User";
|
||||
import useStores from "./useStores";
|
||||
|
||||
export default function useCurrentUser() {
|
||||
/**
|
||||
* Returns the current user, or undefined if there is no current user and `rejectOnEmpty` is set to
|
||||
* false.
|
||||
*
|
||||
* @param options.rejectOnEmpty - If true, throws an error if there is no current user. Defaults to true.
|
||||
*/
|
||||
function useCurrentUser(options: { rejectOnEmpty: false }): User | undefined;
|
||||
function useCurrentUser(options?: { rejectOnEmpty: true }): User;
|
||||
function useCurrentUser({
|
||||
rejectOnEmpty = true,
|
||||
}: { rejectOnEmpty?: boolean } = {}) {
|
||||
const { auth } = useStores();
|
||||
invariant(auth.user, "user required");
|
||||
return auth.user;
|
||||
if (rejectOnEmpty) {
|
||||
invariant(auth.user, "user required");
|
||||
}
|
||||
return auth.user || undefined;
|
||||
}
|
||||
|
||||
export default useCurrentUser;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import useStores from "./useStores";
|
||||
import useCurrentUser from "./useCurrentUser";
|
||||
|
||||
/**
|
||||
* Returns the user's locale, or undefined if the user is not logged in.
|
||||
@@ -7,12 +7,12 @@ import useStores from "./useStores";
|
||||
* @returns The user's locale, or undefined if the user is not logged in
|
||||
*/
|
||||
export default function useUserLocale(languageCode?: boolean) {
|
||||
const { auth } = useStores();
|
||||
const user = useCurrentUser({ rejectOnEmpty: false });
|
||||
|
||||
if (!auth.user?.language) {
|
||||
if (!user?.language) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
const { language } = auth.user;
|
||||
const { language } = user;
|
||||
return languageCode ? language.split("_")[0] : language;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user