gitea
This commit is contained in:
43
frontend/lib/use-plan.ts
Normal file
43
frontend/lib/use-plan.ts
Normal file
@@ -0,0 +1,43 @@
|
||||
import { getAuth } from './auth'
|
||||
|
||||
export type UserPlan = 'free' | 'pro' | 'business' | 'enterprise'
|
||||
|
||||
export const PLAN_LIMITS = {
|
||||
free: {
|
||||
maxMonitors: 3,
|
||||
minFrequency: 60, // minutes
|
||||
features: ['email_alerts', 'basic_noise_filtering'],
|
||||
},
|
||||
pro: {
|
||||
maxMonitors: 20,
|
||||
minFrequency: 5,
|
||||
features: ['email_alerts', 'slack_integration', 'webhook_integration', 'keyword_alerts', 'smart_noise_filtering', 'audit_export'],
|
||||
},
|
||||
business: {
|
||||
maxMonitors: 100,
|
||||
minFrequency: 1,
|
||||
features: ['email_alerts', 'slack_integration', 'webhook_integration', 'keyword_alerts', 'smart_noise_filtering', 'audit_export', 'api_access', 'team_members'],
|
||||
},
|
||||
enterprise: {
|
||||
maxMonitors: Infinity,
|
||||
minFrequency: 1,
|
||||
features: ['email_alerts', 'slack_integration', 'webhook_integration', 'keyword_alerts', 'smart_noise_filtering', 'audit_export', 'api_access', 'team_members', 'custom_integrations', 'sla'],
|
||||
},
|
||||
} as const
|
||||
|
||||
export function usePlan() {
|
||||
const auth = getAuth()
|
||||
const plan = (auth?.user?.plan as UserPlan) || 'free'
|
||||
const limits = PLAN_LIMITS[plan] || PLAN_LIMITS.free
|
||||
|
||||
return {
|
||||
plan,
|
||||
limits,
|
||||
canUseSlack: limits.features.includes('slack_integration' as any),
|
||||
canUseWebhook: limits.features.includes('webhook_integration' as any),
|
||||
canUseKeywords: limits.features.includes('keyword_alerts' as any),
|
||||
canUseSmartNoise: limits.features.includes('smart_noise_filtering' as any),
|
||||
maxMonitors: limits.maxMonitors,
|
||||
minFrequency: limits.minFrequency,
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user