Add useInstance() hook See merge request soapbox-pub/soapbox!1946environments/review-develop-3zknud/deployments/1590
commit
3a489f98d2
@ -1,9 +1,9 @@
|
|||||||
import { useAppSelector } from 'soapbox/hooks';
|
import { getFeatures, Features } from 'soapbox/utils/features';
|
||||||
import { getFeatures } from 'soapbox/utils/features';
|
|
||||||
|
|
||||||
import type { Features } from 'soapbox/utils/features';
|
import { useInstance } from './useInstance';
|
||||||
|
|
||||||
/** Get features for the current instance */
|
/** Get features for the current instance. */
|
||||||
export const useFeatures = (): Features => {
|
export const useFeatures = (): Features => {
|
||||||
return useAppSelector((state) => getFeatures(state.instance));
|
const instance = useInstance();
|
||||||
|
return getFeatures(instance);
|
||||||
};
|
};
|
||||||
|
@ -0,0 +1,6 @@
|
|||||||
|
import { useAppSelector } from 'soapbox/hooks';
|
||||||
|
|
||||||
|
/** Get the Instance for the current backend. */
|
||||||
|
export const useInstance = () => {
|
||||||
|
return useAppSelector((state) => state.instance);
|
||||||
|
};
|
@ -1,13 +1,21 @@
|
|||||||
|
import { useCallback } from 'react';
|
||||||
|
|
||||||
import { useAppSelector } from 'soapbox/hooks';
|
import { useAppSelector } from 'soapbox/hooks';
|
||||||
import { makeGetAccount } from 'soapbox/selectors';
|
import { makeGetAccount } from 'soapbox/selectors';
|
||||||
|
|
||||||
import type { Account } from 'soapbox/types/entities';
|
import type { Account } from 'soapbox/types/entities';
|
||||||
|
|
||||||
// FIXME: There is no reason this selector shouldn't be global accross the whole app
|
/** Get the logged-in account from the store, if any. */
|
||||||
// FIXME: getAccount() has the wrong type??
|
|
||||||
const getAccount: (state: any, accountId: any) => any = makeGetAccount();
|
|
||||||
|
|
||||||
/** Get the logged-in account from the store, if any */
|
|
||||||
export const useOwnAccount = (): Account | null => {
|
export const useOwnAccount = (): Account | null => {
|
||||||
return useAppSelector((state) => getAccount(state, state.me));
|
const getAccount = useCallback(makeGetAccount(), []);
|
||||||
|
|
||||||
|
return useAppSelector((state) => {
|
||||||
|
const { me } = state;
|
||||||
|
|
||||||
|
if (typeof me === 'string') {
|
||||||
|
return getAccount(state, me);
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in new issue