Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | 1x 1x 1x 24x 22x 22x 29x 10x 14x 1x 24x 24x 11x 11x 7x 7x 7x 7x 17x | /* * Copyright 2021 Harness Inc. All rights reserved. * Use of this source code is governed by the PolyForm Shield 1.0.0 license * that can be found in the licenses directory at the root of this repository, also available at * https://polyformproject.org/wp-content/uploads/2020/06/PolyForm-Shield-1.0.0.txt. */ import { isEmpty } from 'lodash-es' import type { StringsMap } from 'stringTypes' import type { CheckFeatureReturn, FeatureDetail } from 'framework/featureStore/featureStoreUtil' import { FeatureIdentifier } from 'framework/featureStore/FeatureIdentifier' import type { FeatureWarningTheme, DisplayBanner, RedirectButton } from '@common/components/FeatureWarning/FeatureWarningCommonBannerUtils' import type { UseStringsReturn } from 'framework/strings' interface Dependency { [key: string]: { enabled?: boolean } } export type ModuleToFeatureMapValue = { theme: FeatureWarningTheme bannerKey: string limitCrossedMessage: keyof StringsMap limit?: number limitPercent?: number dependency?: Dependency redirectButtons?: RedirectButton[] } export const getBannerDependencyMet = ({ features, featureName, dependency }: { featureName?: FeatureIdentifier features: Map<FeatureIdentifier, CheckFeatureReturn> dependency?: Dependency }): boolean => { if (dependency) { const dependencyKeys = Object.entries(dependency) if ( dependencyKeys?.some( ([key, value]) => features.get(key as FeatureIdentifier)?.enabled !== value.enabled || (featureName === FeatureIdentifier.ACTIVE_COMMITTERS && isEmpty(features.get(key as FeatureIdentifier)?.featureDetail || {})) ) ) { return false } } return true } export const getQualifiedEnforcedBanner = ({ dependencyMet, featureDetail, uiDisplayBanner, getString, featureName }: { dependencyMet: boolean featureDetail?: FeatureDetail uiDisplayBanner: ModuleToFeatureMapValue getString: UseStringsReturn['getString'] featureName: FeatureIdentifier }): DisplayBanner | undefined => { let _isLimitBreached = false if (dependencyMet && typeof featureDetail?.count !== 'undefined' && featureDetail.limit) { _isLimitBreached = typeof uiDisplayBanner?.limit !== 'undefined' ? featureDetail.count >= uiDisplayBanner.limit : uiDisplayBanner.limitPercent ? featureDetail.featureName === FeatureIdentifier.ACTIVE_COMMITTERS ? (featureDetail.count / featureDetail.limit) * 100 > uiDisplayBanner.limitPercent : (featureDetail.count / featureDetail.limit) * 100 >= uiDisplayBanner.limitPercent : false if (_isLimitBreached) { const usagePercent = Math.min(Math.floor((featureDetail.count / featureDetail.limit) * 100), 100) const messageString = uiDisplayBanner?.limitCrossedMessage && getString(uiDisplayBanner.limitCrossedMessage, { usagePercent, limit: featureDetail.limit, count: featureDetail.count }) Eif (messageString && featureDetail?.enabled) { return { featureName, isFeatureRestrictionAllowedForModule: featureDetail.enabled, theme: uiDisplayBanner.theme, redirectButtons: uiDisplayBanner.redirectButtons, bannerKey: uiDisplayBanner.bannerKey, messageString } } } } return undefined } |