mirror of
https://github.com/faisalman/ua-parser-js.git
synced 2025-09-27 07:58:45 +03:00
[device-utils] Add new method: getMarketingName()
This commit is contained in:
parent
d177b83965
commit
638e237c8d
5
src/device-utils/data/marketing-name/samsung.json
Normal file
5
src/device-utils/data/marketing-name/samsung.json
Normal file
@ -0,0 +1,5 @@
|
||||
[
|
||||
{
|
||||
"SM-S928N" : "Galaxy S24 Ultra"
|
||||
}
|
||||
]
|
5
src/device-utils/data/marketing-name/xiaomi.json
Normal file
5
src/device-utils/data/marketing-name/xiaomi.json
Normal file
@ -0,0 +1,5 @@
|
||||
[
|
||||
{
|
||||
"M2101K9C" : "Mi 11 Lite 5G"
|
||||
}
|
||||
]
|
2
src/device-utils/ua-parser-device-utils.d.ts
vendored
2
src/device-utils/ua-parser-device-utils.d.ts
vendored
@ -4,6 +4,7 @@
|
||||
|
||||
import type { IResult, IDevice } from "../main/ua-parser";
|
||||
|
||||
declare function getMarketingName(model: string, vendor: string): boolean;
|
||||
declare function isMobile(val: IResult | IDevice | string): boolean;
|
||||
declare function isSmartTV(val: IResult | IDevice | string): boolean;
|
||||
declare function isTablet(val: IResult | IDevice | string): boolean;
|
||||
@ -11,6 +12,7 @@ declare function isWearable(val: IResult | IDevice | string): boolean;
|
||||
declare function isXR(val: IResult | IDevice | string): boolean;
|
||||
|
||||
export {
|
||||
getMarketingName,
|
||||
isMobile,
|
||||
isSmartTV,
|
||||
isTablet,
|
||||
|
@ -7,6 +7,8 @@
|
||||
|
||||
/*jshint esversion: 6 */
|
||||
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const UAParser = require('../main/ua-parser');
|
||||
const { Device: DeviceType } = require('../enums/ua-parser-enums');
|
||||
|
||||
@ -21,6 +23,18 @@ const isDeviceType = (val, expectedType) => {
|
||||
return actualType == expectedType;
|
||||
};
|
||||
|
||||
const getMarketingName = (model, vendor) => {
|
||||
const normalizedVendor = vendor.toLowerCase();
|
||||
const filePath = path.resolve(__dirname, `./data/marketing-name/${normalizedVendor}.json`);
|
||||
if (fs.existsSync(filePath)) {
|
||||
const map = require(`./data/marketing-name/${normalizedVendor}.json`)[0];
|
||||
if (model in map) {
|
||||
return map[model];
|
||||
}
|
||||
}
|
||||
return model;
|
||||
};
|
||||
|
||||
const isMobile = val => isDeviceType(val, DeviceType.MOBILE);
|
||||
const isSmartTV = val => isDeviceType(val, DeviceType.SMARTTV);
|
||||
const isTablet = val => isDeviceType(val, DeviceType.TABLET);
|
||||
@ -28,6 +42,7 @@ const isWearable = val => isDeviceType(val, DeviceType.WEARABLE);
|
||||
const isXR = val => isDeviceType(val, DeviceType.XR);
|
||||
|
||||
module.exports = {
|
||||
getMarketingName,
|
||||
isMobile,
|
||||
isSmartTV,
|
||||
isTablet,
|
||||
|
@ -1,6 +1,7 @@
|
||||
const assert = require('assert');
|
||||
const { UAParser } = require('../../src/main/ua-parser');
|
||||
const { isMobile, isSmartTV, isTablet, isWearable, isXR } = require('../../src/device-utils/ua-parser-device-utils');
|
||||
const { getMarketingName, isMobile, isSmartTV, isTablet, isWearable, isXR } = require('../../src/device-utils/ua-parser-device-utils');
|
||||
const { Vendor } = require('../../src/enums/ua-parser-enums');
|
||||
|
||||
describe('Device type check', () => {
|
||||
|
||||
@ -45,3 +46,11 @@ describe('Device type check', () => {
|
||||
assert.strictEqual(isXR(questPro), true);
|
||||
});
|
||||
});
|
||||
|
||||
describe('getMarketingName()', () => {
|
||||
|
||||
it('Returns marketing name from given model name', () => {
|
||||
assert.strictEqual(getMarketingName('M2101K9C', Vendor.XIAOMI), 'Mi 11 Lite 5G');
|
||||
assert.strictEqual(getMarketingName('SM-S928N', Vendor.SAMSUNG), 'Galaxy S24 Ultra');
|
||||
});
|
||||
});
|
Loading…
x
Reference in New Issue
Block a user