You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.4 KiB
41 lines
1.4 KiB
import { IGlobalFeatureChecker, useGlobalFeatures } from '/@/hooks/abp/useGlobalFeatures';
|
|
|
|
export interface RequireGlobalFeaturesStateChecker {
|
|
name: string;
|
|
requiresAll: boolean;
|
|
featureNames: string[];
|
|
}
|
|
|
|
export class RequireGlobalFeaturesSimpleStateChecker<TState extends IHasSimpleStateCheckers<TState>> implements RequireGlobalFeaturesStateChecker, ISimpleStateChecker<TState> {
|
|
name: string = 'G';
|
|
_globalFeatureChecker: IGlobalFeatureChecker;
|
|
featureNames: string[];
|
|
requiresAll: boolean;
|
|
constructor(
|
|
globalFeatureChecker: IGlobalFeatureChecker,
|
|
featureNames: string[],
|
|
requiresAll: boolean = false) {
|
|
this._globalFeatureChecker = globalFeatureChecker;
|
|
this.featureNames = featureNames;
|
|
this.requiresAll = requiresAll;
|
|
}
|
|
isEnabled(_context: SimpleStateCheckerContext<TState>): boolean {
|
|
return this._globalFeatureChecker.isEnabled(this.featureNames, this.requiresAll);
|
|
}
|
|
|
|
serialize(): string {
|
|
return JSON.stringify({
|
|
"T": this.name,
|
|
"A": this.requiresAll,
|
|
"N": this.featureNames,
|
|
});
|
|
}
|
|
}
|
|
|
|
export function useRequireGlobalFeaturesSimpleStateChecker<TState extends IHasSimpleStateCheckers<TState>>(
|
|
featureNames: string[],
|
|
requiresAll: boolean = false,
|
|
): ISimpleStateChecker<TState> {
|
|
const globalFeatureChecker = useGlobalFeatures();
|
|
return new RequireGlobalFeaturesSimpleStateChecker(globalFeatureChecker, featureNames, requiresAll);
|
|
}
|
|
|