|  | 
| 1 | 1 | import type { StoredFeaturePreviewUsagePeriod } from './constants.storage'; | 
| 2 |  | -import { proFeaturePreviewUsages } from './constants.subscription'; | 
|  | 2 | +import { proFeaturePreviewUsageDurationInDays, proFeaturePreviewUsages } from './constants.subscription'; | 
| 3 | 3 | import type { RepositoryVisibility } from './git/gitProvider'; | 
| 4 | 4 | import type { RequiredSubscriptionPlans, Subscription } from './plus/gk/account/subscription'; | 
| 5 | 5 | import { capitalize } from './system/string'; | 
| @@ -60,17 +60,28 @@ export function getFeaturePreviewLabel(feature: FeaturePreviews) { | 
| 60 | 60 | 	} | 
| 61 | 61 | } | 
| 62 | 62 | 
 | 
|  | 63 | +const hoursInMs = 3600000; | 
|  | 64 | + | 
| 63 | 65 | export function isFeaturePreviewActive(featurePreview?: FeaturePreview) { | 
| 64 | 66 | 	const usages = featurePreview?.usages; | 
| 65 | 67 | 	if (usages == null || usages.length === 0) return false; | 
| 66 | 68 | 
 | 
| 67 |  | -	return usages.length <= proFeaturePreviewUsages && new Date(usages[usages.length - 1].expiresOn) > new Date(); | 
|  | 69 | +	const remainingHours = (new Date(usages[usages.length - 1].expiresOn).getTime() - new Date().getTime()) / hoursInMs; | 
|  | 70 | +	return ( | 
|  | 71 | +		usages.length <= proFeaturePreviewUsages && | 
|  | 72 | +		remainingHours > 0 && | 
|  | 73 | +		remainingHours < 24 * proFeaturePreviewUsageDurationInDays | 
|  | 74 | +	); | 
| 68 | 75 | } | 
| 69 | 76 | 
 | 
| 70 | 77 | export function isFeaturePreviewExpired(featurePreview: FeaturePreview) { | 
| 71 | 78 | 	const usages = featurePreview.usages; | 
|  | 79 | +	if (usages == null || usages.length === 0) return false; | 
|  | 80 | + | 
|  | 81 | +	const remainingHours = (new Date(usages[usages.length - 1].expiresOn).getTime() - new Date().getTime()) / hoursInMs; | 
| 72 | 82 | 	return ( | 
| 73 | 83 | 		usages.length > proFeaturePreviewUsages || | 
| 74 |  | -		(usages.length === proFeaturePreviewUsages && new Date(usages[usages.length - 1].expiresOn) < new Date()) | 
|  | 84 | +		(usages.length === proFeaturePreviewUsages && remainingHours <= 0) || | 
|  | 85 | +		remainingHours >= 24 * proFeaturePreviewUsageDurationInDays | 
| 75 | 86 | 	); | 
| 76 | 87 | } | 
0 commit comments