|
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