|
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