mirror of
https://github.com/invoke-ai/InvokeAI.git
synced 2026-02-19 04:04:22 -05:00
These were just using overly verbose syntax - like explicitly typing `state: RootState`, which is unnecessary.
35 lines
1.2 KiB
TypeScript
35 lines
1.2 KiB
TypeScript
import { useAppSelector } from 'app/store/storeHooks';
|
|
import type { AppFeature, SDFeature } from 'app/types/invokeai';
|
|
import type { InvokeTabName } from 'features/ui/store/tabMap';
|
|
import { useMemo } from 'react';
|
|
|
|
export const useFeatureStatus = (
|
|
feature: AppFeature | SDFeature | InvokeTabName
|
|
) => {
|
|
const disabledTabs = useAppSelector((s) => s.config.disabledTabs);
|
|
|
|
const disabledFeatures = useAppSelector((s) => s.config.disabledFeatures);
|
|
|
|
const disabledSDFeatures = useAppSelector((s) => s.config.disabledSDFeatures);
|
|
|
|
const isFeatureDisabled = useMemo(
|
|
() =>
|
|
disabledFeatures.includes(feature as AppFeature) ||
|
|
disabledSDFeatures.includes(feature as SDFeature) ||
|
|
disabledTabs.includes(feature as InvokeTabName),
|
|
[disabledFeatures, disabledSDFeatures, disabledTabs, feature]
|
|
);
|
|
|
|
const isFeatureEnabled = useMemo(
|
|
() =>
|
|
!(
|
|
disabledFeatures.includes(feature as AppFeature) ||
|
|
disabledSDFeatures.includes(feature as SDFeature) ||
|
|
disabledTabs.includes(feature as InvokeTabName)
|
|
),
|
|
[disabledFeatures, disabledSDFeatures, disabledTabs, feature]
|
|
);
|
|
|
|
return { isFeatureDisabled, isFeatureEnabled };
|
|
};
|