UNPKG

@ledgerhq/live-common

Version:
81 lines 3.5 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.filterAnnouncements = exports.localizeAnnouncements = void 0; const semver_1 = __importDefault(require("semver")); const package_json_1 = require("../../../package.json"); function localizeAnnouncements(rawAnnouncements, context) { return rawAnnouncements.map((rawAnnouncement) => ({ ...rawAnnouncement, content: rawAnnouncement.content[context.language] || rawAnnouncement.content["en"], })); } exports.localizeAnnouncements = localizeAnnouncements; const platformFilters = { desktop: ["desktop", "mac", "windows", "linux"], mobile: ["mobile", "android", "ios"], mac: ["mac", "desktop"], linux: ["linux", "desktop"], windows: ["windows", "desktop"], ios: ["ios", "mobile"], android: ["android", "mobile"], }; function filterAnnouncements(announcements, context) { const { language, currencies: contextCurrencies, getDate, lastSeenDevice, platform: contextPlatform, appVersion: contextAppVersion, } = context; const date = getDate(); return announcements.filter(({ currencies, languages, published_at, expired_at, device, platforms, appVersions, liveCommonVersions, }) => { if (languages && !languages.includes(language)) { return false; } if (currencies && !currencies.some(c => contextCurrencies.includes(c))) { return false; } // filter out by device info if (device && lastSeenDevice) { const { modelIds, versions, apps } = device; if (modelIds && modelIds.length && !modelIds.includes(lastSeenDevice.modelId)) return false; if (versions && versions.length && !versions.includes(lastSeenDevice.deviceInfo.version)) return false; if (apps && apps.length && !lastSeenDevice.apps.some(({ name }) => apps.includes(name))) return false; } if (lastSeenDevice === undefined && device && device.modelIds && !device.modelIds.includes("no_nano")) { return false; } // filter out by platform if (platforms && platforms.length > 0 && contextPlatform && !platforms.some(p => platformFilters[p] && platformFilters[p].includes(contextPlatform))) { return false; } // filter out by app version if (appVersions?.length && contextAppVersion) { const isAppVersionMatch = appVersions.some(version => semver_1.default.satisfies(contextAppVersion, version)); if (isAppVersionMatch === false) return false; } // filter out by ll-comon version if (liveCommonVersions?.length) { const isLLCommonVersionMatch = liveCommonVersions.some(version => semver_1.default.satisfies(package_json_1.version, version)); if (isLLCommonVersionMatch === false) return false; } const publishedAt = new Date(published_at); if (publishedAt > date) { return false; } if (expired_at && new Date(expired_at) < date) { return false; } return true; }); } exports.filterAnnouncements = filterAnnouncements; //# sourceMappingURL=logic.js.map