use team redis keys to resolve team gated features
This commit is contained in:
1 parent
0a4dcebed7
commit
cd2b303e89
7 files changed
+58
-13
No files matched your search
@@ -4,6 +4,7 @@ import { useConfig } from './useConfig';
|
||||
export interface Subscription {
|
||||
isPro: boolean;
|
||||
isBusiness: boolean;
|
||||
isNoBilling: boolean;
|
||||
hasSubscription: boolean;
|
||||
}
|
||||
|
||||
@@ -16,18 +17,24 @@ export type FeatureName = keyof typeof FEATURES;
|
||||
const defaultSubscription: Subscription = {
|
||||
isPro: false,
|
||||
isBusiness: false,
|
||||
isNoBilling: false,
|
||||
hasSubscription: false,
|
||||
};
|
||||
|
||||
export function useSubscription() {
|
||||
export function useSubscription(teamId?: string | null) {
|
||||
const { user } = useApp();
|
||||
const config = useConfig();
|
||||
|
||||
const subscription: Subscription = user?.subscription || defaultSubscription;
|
||||
const ownSubscription: Subscription = user?.subscription || defaultSubscription;
|
||||
const teamSubscription: Subscription | null = teamId
|
||||
? user?.teams?.find((t: any) => t.id === teamId)?.subscription ?? null
|
||||
: null;
|
||||
|
||||
const subscription: Subscription = teamSubscription || ownSubscription;
|
||||
const cloudMode = config?.cloudMode || false;
|
||||
|
||||
function hasFeature(feature: FeatureName): boolean {
|
||||
if (!cloudMode) {
|
||||
if (!cloudMode || subscription.isNoBilling) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user