Skip to content

Commit 61d0e94

Browse files
committed
usersVersionHas: Refactor to reduce boilerplate
1 parent 4925d29 commit 61d0e94

File tree

1 file changed

+24
-21
lines changed

1 file changed

+24
-21
lines changed

helpers/NPVersions.js

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -16,28 +16,31 @@ export function usersVersionHas(feature: string): boolean {
1616
// Note: this ignores any non-numeric, non-period characters (e.g., "-beta3")
1717
const userVersionNumber: number = semverVersionToNumber(NotePlan.environment.version) || 0
1818
// logDebug('usersVersionHas', `userVersionNumber: ${String(userVersionNumber)}`)
19-
20-
function v(input: string): number { return semverVersionToNumber(input) }
2119

2220
// List of features and their minimum required versions (and dates, if known)
23-
const versionHas: { [string]: boolean } = {
24-
windowDetails: userVersionNumber >= v("3.8.1"), // March 2023
25-
noteVersions: userVersionNumber >= v("3.9.3"), // July 2023
26-
screenDetails: userVersionNumber >= v("3.9.8"), // October 2023
27-
ai: userVersionNumber >= v("3.16.3"), // first present in v3.15.1, but extended in v3.16.3
28-
teamspaceNotes: userVersionNumber >= v("3.17.0"),
29-
decoratedCommandBar: userVersionNumber >= v("3.18.0"),
30-
updateFrontmatterAttributes: userVersionNumber >= v("3.18.1"), // NotePlan.frontmatterAttributes is available from v3.16.3, but extended in v3.18.1
31-
advancedSearch: userVersionNumber >= v("3.18.1"),
32-
trashNote: userVersionNumber >= v("3.18.2"),
33-
getWeather: userVersionNumber >= v("3.19.2"), // Nov 2025
34-
mainSidebarControl: userVersionNumber >= v("3.19.2"), // Nov 2025
35-
contentDeduplicator: userVersionNumber >= v("3.19.2"), // Nov 2025
21+
const versionRequirements: { [string]: string } = {
22+
windowDetails: '3.8.1', // March 2023
23+
noteVersions: '3.9.3', // July 2023
24+
screenDetails: '3.9.8', // October 2023
25+
ai: '3.16.3', // first present in v3.15.1, but extended in v3.16.3
26+
teamspaceNotes: '3.17.0',
27+
decoratedCommandBar: '3.18.0',
28+
updateFrontmatterAttributes: '3.18.1', // NotePlan.frontmatterAttributes is available from v3.16.3, but extended in v3.18.1
29+
advancedSearch: '3.18.1',
30+
trashNote: '3.18.2',
31+
getWeather: '3.19.2', // Nov 2025
32+
mainSidebarControl: '3.19.2', // Nov 2025
33+
contentDeduplicator: '3.19.2', // Nov 2025
3634
}
37-
!versionHas[feature] &&
38-
logWarn(
39-
'usersVersionHas',
40-
`NotePlan version ${NotePlan.environment.version} (${String(userVersionNumber)}) does not have requested feature: "${feature}"; ${versionHas.hasOwnProperty(feature) ? `feature *is* listed in function usersVersionHas()` : 'feature *is not* listed in function usersVersionHas()'
41-
}. Returning false.`)
42-
return versionHas[feature] ?? false
35+
36+
// Check if the user's version meets the requirement for the requested feature
37+
const requiredVersion = versionRequirements[feature]
38+
if (!requiredVersion) {
39+
logWarn('usersVersionHas', `Feature '${feature}' is not listed in function usersVersionHas(). Returning false.`)
40+
return false
41+
}
42+
43+
const hasFeature = userVersionNumber >= semverVersionToNumber(requiredVersion)
44+
!hasFeature && logWarn('usersVersionHas', `NotePlan version ${NotePlan.environment.version} (${String(userVersionNumber)}) does not have requested feature: "${feature}"`)
45+
return hasFeature
4346
}

0 commit comments

Comments
 (0)