@@ -12,50 +12,45 @@ export type CompatibilityStatus = {
1212 bluetooth : boolean ;
1313 usb : boolean ;
1414 platformAllowed : boolean ;
15- webGL : boolean
15+ webGL : boolean ;
1616} ;
1717
18- // TODO: Why is this a class? No constructor, no internal state, and only
19- // a single static method. Might as well just be a function?
20- class CompatibilityChecker {
21- public static checkCompatibility ( ) : CompatibilityStatus {
22- if ( localStorage . getItem ( 'isTesting' ) ) {
23- return { bluetooth : true , usb : true , platformAllowed : true , webGL : true } ;
24- }
25- const browser = Bowser . getParser ( window . navigator . userAgent ) ;
26- const browserName = browser . getBrowser ( ) . name ?? 'unknown' ;
27- const osName = browser . getOS ( ) . name ?? 'unknown' ;
28-
29- const canvas = document . createElement ( "canvas" )
30- // TODO: Handle webgl1 vs webgl2 in relation to threejs
31- const webGL = canvas . getContext ( "webgl" ) instanceof WebGLRenderingContext
32-
33- const browserVersion = browser . getBrowserVersion ( ) ;
34- if ( ! browserVersion ) {
35- return { bluetooth : false , usb : false , platformAllowed : true , webGL : webGL } ;
36- }
37- const majorVersion = browser . getBrowserVersion ( ) . split ( '.' ) [ 0 ] ;
38- const minorVersion = browser . getBrowserVersion ( ) . split ( '.' ) [ 1 ] ;
39- const semVer : SemVer = new SemVerImpl ( majorVersion , minorVersion ) ;
40- const isBluetoothSupported = BTComp . isVersionSupported ( browserName , semVer , osName ) ;
41-
42- const isUsbSupported = USBComp . isVersionSupported ( browserName , semVer , osName ) ;
43- let platformType = browser . getPlatform ( ) . type ;
44-
45- // If platform won't report what it is, just assume desktop (ChromeOS doesnt report it)
46- if ( platformType == undefined ) {
47- platformType = 'desktop' ;
48- }
49- const isPlatformAllowed =
50- Environment . isInDevelopment || ! nonAllowedPlatforms . includes ( platformType ) ;
51-
52- return {
53- bluetooth : isBluetoothSupported ,
54- usb : isUsbSupported ,
55- platformAllowed : isPlatformAllowed ,
56- webGL : webGL
57- } ;
18+ export function checkCompatibility ( ) : CompatibilityStatus {
19+ if ( localStorage . getItem ( 'isTesting' ) ) {
20+ return { bluetooth : true , usb : true , platformAllowed : true , webGL : true } ;
5821 }
22+ const browser = Bowser . getParser ( window . navigator . userAgent ) ;
23+ const browserName = browser . getBrowser ( ) . name ?? 'unknown' ;
24+ const osName = browser . getOS ( ) . name ?? 'unknown' ;
25+
26+ const canvas = document . createElement ( "canvas" )
27+ // TODO: Handle webgl1 vs webgl2 in relation to threejs
28+ const webGL = canvas . getContext ( "webgl" ) instanceof WebGLRenderingContext
29+
30+ const browserVersion = browser . getBrowserVersion ( ) ;
31+ if ( ! browserVersion ) {
32+ return { bluetooth : false , usb : false , platformAllowed : true , webGL : webGL } ;
33+ }
34+ const majorVersion = browser . getBrowserVersion ( ) . split ( '.' ) [ 0 ] ;
35+ const minorVersion = browser . getBrowserVersion ( ) . split ( '.' ) [ 1 ] ;
36+ const semVer : SemVer = new SemVerImpl ( majorVersion , minorVersion ) ;
37+ const isBluetoothSupported = BTComp . isVersionSupported ( browserName , semVer , osName ) ;
38+
39+ const isUsbSupported = USBComp . isVersionSupported ( browserName , semVer , osName ) ;
40+ let platformType = browser . getPlatform ( ) . type ;
41+
42+ // If platform won't report what it is, just assume desktop (ChromeOS doesnt report it)
43+ if ( platformType == undefined ) {
44+ platformType = 'desktop' ;
45+ }
46+ const isPlatformAllowed =
47+ Environment . isInDevelopment || ! nonAllowedPlatforms . includes ( platformType ) ;
48+
49+ return {
50+ bluetooth : isBluetoothSupported ,
51+ usb : isUsbSupported ,
52+ platformAllowed : isPlatformAllowed ,
53+ webGL : webGL ,
54+ } ;
5955}
6056
61- export default CompatibilityChecker ;
0 commit comments