34 lines
1.3 KiB
TypeScript
34 lines
1.3 KiB
TypeScript
// Metro module 14865 (f14866).
|
|
import { useEffect } from "react";
|
|
import UserStore from "../../stores/UserStore";
|
|
import MultiAccountStore, { MultiAccountTokenStatus } from "./MultiAccountStore";
|
|
import { useStateFromStoresObject } from "../../_bundle/Module589";
|
|
import Dispatcher from "../../Dispatcher";
|
|
import { validateMultiAccountTokens } from "./MultiAccountActionCreators";
|
|
export function useMultiAccountUsers() {
|
|
const stateFromStoresObject = useStateFromStoresObject([MultiAccountStore, UserStore], () => {
|
|
const users = MultiAccountStore.getUsers();
|
|
const currentUser = UserStore.getCurrentUser();
|
|
return currentUser != null && !users.some((user) => user.id === currentUser.id) ? {
|
|
isLoading: MultiAccountStore.getIsValidatingUsers(),
|
|
multiAccountUsers: [{
|
|
id: currentUser.id,
|
|
avatar: currentUser.avatar,
|
|
username: currentUser.username,
|
|
discriminator: currentUser.discriminator,
|
|
tokenStatus: MultiAccountTokenStatus.VALID,
|
|
pushSyncToken: null
|
|
}, ...users]
|
|
} : {
|
|
isLoading: MultiAccountStore.getIsValidatingUsers(),
|
|
multiAccountUsers: users
|
|
};
|
|
});
|
|
useEffect(() => {
|
|
Dispatcher.wait(() => {
|
|
validateMultiAccountTokens();
|
|
});
|
|
}, []);
|
|
return stateFromStoresObject;
|
|
}
|