@ledgerhq/live-common
Version:
Common ground for the Ledger Live apps
81 lines • 3.5 kB
JavaScript
;
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