UNPKG

mattermost-redux

Version:

Common code (API client, Redux stores, logic, utility functions) for building a Mattermost client

97 lines (96 loc) 3.1 kB
"use strict"; // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. Object.defineProperty(exports, "__esModule", { value: true }); exports.getBrowserInfo = getBrowserInfo; exports.getPlatformInfo = getPlatformInfo; function getBrowserInfo() { const userAgent = window.navigator.userAgent.toLowerCase(); let browser = 'Unknown'; let browserVersion = 'Unknown'; // Check if it's Mattermost Desktop App first if (userAgent.includes('mattermost')) { browser = 'Mattermost Desktop App'; const match = userAgent.match(/mattermost\/(\d+(\.\d+)*)/i); if (match && match[1]) { browserVersion = match[1]; } return { browser, browserVersion }; } // Simple browser detection - order matters! if (userAgent.includes('edge/')) { browser = 'Edge'; } else if (userAgent.includes('edg/')) { browser = 'Edge Chromium'; } else if (userAgent.includes('chrome/')) { if (userAgent.includes('opr/')) { browser = 'Opera'; } else { browser = 'Chrome'; } } else if (userAgent.includes('safari/') && userAgent.includes('version/')) { browser = 'Safari'; } else if (userAgent.includes('firefox/')) { browser = 'Firefox'; } // Get browser version let match; if (browser === 'Edge') { match = userAgent.match(/edge\/(\d+)/i); } else if (browser === 'Edge Chromium') { match = userAgent.match(/edg\/(\d+)/i); } else if (browser === 'Opera') { match = userAgent.match(/opr\/(\d+)/i); } else if (browser === 'Safari') { match = userAgent.match(/version\/(\d+)/i); } else { match = userAgent.match(/(firefox|chrome)\/(\d+)/i); if (match) { match[1] = match[2]; // Align with other matches where version is in group 1 } } if (match && match[1]) { browserVersion = match[1]; } return { browser, browserVersion }; } function getPlatformInfo() { // Casting to undefined in case it is deprecated in any browser const platform = window.navigator.platform; const userAgent = window.navigator.userAgent.toLowerCase(); let platformName = 'Unknown'; // First try using platform if (platform) { if (platform.toLowerCase().includes('win')) { platformName = 'Windows'; } else if (platform.toLowerCase().includes('mac')) { platformName = 'MacOS'; } else if (platform.toLowerCase().includes('linux')) { platformName = 'Linux'; } } // Fallback to userAgent if platform didn't work if (platformName === 'Unknown') { if (userAgent.includes('windows')) { platformName = 'Windows'; } else if (userAgent.includes('mac os x')) { platformName = 'MacOS'; } else if (userAgent.includes('linux')) { platformName = 'Linux'; } } return platformName; }