mirror of
				https://github.com/tobspr/shapez.io.git
				synced 2025-06-13 13:04:03 +00:00 
			
		
		
		
	Fix firefox not loading in private browsing mode
This commit is contained in:
		
							parent
							
								
									d1954b5b36
								
							
						
					
					
						commit
						8779f1d5a3
					
				| @ -123,27 +123,16 @@ export class Application { | ||||
|     initPlatformDependentInstances() { | ||||
|         logger.log("Creating platform dependent instances"); | ||||
| 
 | ||||
|         // Start with empty ad provider
 | ||||
|         this.adProvider = new NoAdProvider(this); | ||||
| 
 | ||||
|         if (G_IS_STANDALONE) { | ||||
|             this.storage = new StorageImplElectron(this); | ||||
|         } else { | ||||
|             if (window.indexedDB) { | ||||
|                 this.storage = new StorageImplBrowserIndexedDB(this); | ||||
|             } else { | ||||
|                 this.storage = new StorageImplBrowser(this); | ||||
|             } | ||||
|         } | ||||
|         this.sound = new SoundImplBrowser(this); | ||||
| 
 | ||||
|         if (G_IS_STANDALONE) { | ||||
|             this.platformWrapper = new PlatformWrapperImplElectron(this); | ||||
|         } else { | ||||
|             this.platformWrapper = new PlatformWrapperImplBrowser(this); | ||||
|         } | ||||
|         this.analytics = new GoogleAnalyticsImpl(this); | ||||
| 
 | ||||
|         // Start with empty ad provider
 | ||||
|         this.adProvider = new NoAdProvider(this); | ||||
|         this.sound = new SoundImplBrowser(this); | ||||
|         this.analytics = new GoogleAnalyticsImpl(this); | ||||
|         this.gameAnalytics = new ShapezGameAnalytics(this); | ||||
|     } | ||||
| 
 | ||||
|  | ||||
| @ -1,4 +1,10 @@ | ||||
| export const CHANGELOG = [ | ||||
|     { | ||||
|         version: "1.1.6", | ||||
|         date: "unreleased", | ||||
|         entries: ["Fixed firefox not loading the game when browsing in private mode"], | ||||
|     }, | ||||
| 
 | ||||
|     { | ||||
|         version: "1.1.5", | ||||
|         date: "03.06.2020", | ||||
|  | ||||
| @ -1,11 +1,13 @@ | ||||
| import { Math_min } from "../../core/builtins"; | ||||
| import { globalConfig, IS_MOBILE, IS_DEBUG, IS_DEMO } from "../../core/config"; | ||||
| import { globalConfig, IS_DEMO, IS_MOBILE } from "../../core/config"; | ||||
| import { createLogger } from "../../core/logging"; | ||||
| import { queryParamOptions } from "../../core/query_parameters"; | ||||
| import { clamp } from "../../core/utils"; | ||||
| import { GamedistributionAdProvider } from "../ad_providers/gamedistribution"; | ||||
| import { NoAdProvider } from "../ad_providers/no_ad_provider"; | ||||
| import { PlatformWrapperInterface } from "../wrapper"; | ||||
| import { GamedistributionAdProvider } from "../ad_providers/gamedistribution"; | ||||
| import { StorageImplBrowser } from "./storage"; | ||||
| import { StorageImplBrowserIndexedDB } from "./storage_indexed_db"; | ||||
| 
 | ||||
| const logger = createLogger("platform/browser"); | ||||
| 
 | ||||
| @ -72,7 +74,36 @@ export class PlatformWrapperImplBrowser extends PlatformWrapperInterface { | ||||
| 
 | ||||
|         logger.log("Embed provider:", this.embedProvider.id); | ||||
| 
 | ||||
|         return super.initialize().then(() => this.initializeAdProvider()); | ||||
|         return this.detectStorageImplementation() | ||||
|             .then(() => this.initializeAdProvider()) | ||||
|             .then(() => super.initialize()); | ||||
|     } | ||||
| 
 | ||||
|     detectStorageImplementation() { | ||||
|         return new Promise(resolve => { | ||||
|             logger.log("Detecting storage"); | ||||
| 
 | ||||
|             if (!window.indexedDB) { | ||||
|                 logger.log("Indexed DB not supported"); | ||||
|                 this.app.storage = new StorageImplBrowser(this.app); | ||||
|                 resolve(); | ||||
|                 return; | ||||
|             } | ||||
| 
 | ||||
|             // Try accessing the indexedb
 | ||||
|             const request = window.indexedDB.open("indexeddb_feature_detection", 1); | ||||
|             request.onerror = err => { | ||||
|                 logger.log("Indexed DB can *not* be accessed: ", err); | ||||
|                 logger.log("Using fallback to local storage"); | ||||
|                 this.app.storage = new StorageImplBrowser(this.app); | ||||
|                 resolve(); | ||||
|             }; | ||||
|             request.onsuccess = () => { | ||||
|                 logger.log("Indexed DB *can* be accessed"); | ||||
|                 this.app.storage = new StorageImplBrowserIndexedDB(this.app); | ||||
|                 resolve(); | ||||
|             }; | ||||
|         }); | ||||
|     } | ||||
| 
 | ||||
|     getHasUnlimitedSavegames() { | ||||
| @ -83,71 +114,6 @@ export class PlatformWrapperImplBrowser extends PlatformWrapperInterface { | ||||
|         return this.embedProvider.showDemoBadge; | ||||
|     } | ||||
| 
 | ||||
|     onSentryLoaded() { | ||||
|         logger.log("Initializing sentry"); | ||||
|         window.Sentry.init({ | ||||
|             dsn: "TODO SENTRY DSN", | ||||
|             release: G_APP_ENVIRONMENT + "-" + G_BUILD_VERSION + "@" + G_BUILD_COMMIT_HASH, | ||||
|             // Will cause a deprecation warning, but the demise of `ignoreErrors` is still under discussion.
 | ||||
|             // See: https://github.com/getsentry/raven-js/issues/73
 | ||||
|             ignoreErrors: [ | ||||
|                 // Random plugins/extensions
 | ||||
|                 "top.GLOBALS", | ||||
|                 // See: http://blog.errorception.com/2012/03/tale-of-unfindable-js-error.html
 | ||||
|                 "originalCreateNotification", | ||||
|                 "canvas.contentDocument", | ||||
|                 "MyApp_RemoveAllHighlights", | ||||
|                 "http://tt.epicplay.com", | ||||
|                 "Can't find variable: ZiteReader", | ||||
|                 "jigsaw is not defined", | ||||
|                 "ComboSearch is not defined", | ||||
|                 "http://loading.retry.widdit.com/", | ||||
|                 "atomicFindClose", | ||||
|                 // Facebook borked
 | ||||
|                 "fb_xd_fragment", | ||||
|                 // ISP "optimizing" proxy - `Cache-Control: no-transform` seems to reduce this. (thanks @acdha)
 | ||||
|                 // See http://stackoverflow.com/questions/4113268/how-to-stop-javascript-injection-from-vodafone-proxy
 | ||||
|                 "bmi_SafeAddOnload", | ||||
|                 "EBCallBackMessageReceived", | ||||
|                 // See http://toolbar.conduit.com/Developer/HtmlAndGadget/Methods/JSInjection.aspx
 | ||||
|                 "conduitPage", | ||||
|                 // Generic error code from errors outside the security sandbox
 | ||||
|                 // You can delete this if using raven.js > 1.0, which ignores these automatically.
 | ||||
|                 "Script error.", | ||||
| 
 | ||||
|                 // Errors from ads
 | ||||
|                 "Cannot read property 'postMessage' of null", | ||||
| 
 | ||||
|                 // Firefox only
 | ||||
|                 "AbortError: The operation was aborted.", | ||||
| 
 | ||||
|                 "<unknown>", | ||||
|             ], | ||||
|             ignoreUrls: [ | ||||
|                 // Facebook flakiness
 | ||||
|                 /graph\.facebook\.com/i, | ||||
|                 // Facebook blocked
 | ||||
|                 /connect\.facebook\.net\/en_US\/all\.js/i, | ||||
|                 // Woopra flakiness
 | ||||
|                 /eatdifferent\.com\.woopra-ns\.com/i, | ||||
|                 /static\.woopra\.com\/js\/woopra\.js/i, | ||||
|                 // Chrome extensions
 | ||||
|                 /extensions\//i, | ||||
|                 /^chrome:\/\//i, | ||||
|                 // Other plugins
 | ||||
|                 /127\.0\.0\.1:4001\/isrunning/i, // Cacaoweb
 | ||||
|                 /webappstoolbarba\.texthelp\.com\//i, | ||||
|                 /metrics\.itunes\.apple\.com\.edgesuite\.net\//i, | ||||
|             ], | ||||
|             beforeSend(event, hint) { | ||||
|                 if (window.anyModLoaded) { | ||||
|                     return null; | ||||
|                 } | ||||
|                 return event; | ||||
|             }, | ||||
|         }); | ||||
|     } | ||||
| 
 | ||||
|     getId() { | ||||
|         return "browser@" + this.embedProvider.id; | ||||
|     } | ||||
|  | ||||
| @ -1,10 +1,16 @@ | ||||
| import { PlatformWrapperImplBrowser } from "../browser/wrapper"; | ||||
| import { getIPCRenderer } from "../../core/utils"; | ||||
| import { createLogger } from "../../core/logging"; | ||||
| import { StorageImplElectron } from "./storage"; | ||||
| 
 | ||||
| const logger = createLogger("electron-wrapper"); | ||||
| 
 | ||||
| export class PlatformWrapperImplElectron extends PlatformWrapperImplBrowser { | ||||
|     initialize() { | ||||
|         this.app.storage = new StorageImplElectron(this); | ||||
|         return super.initialize(); | ||||
|     } | ||||
| 
 | ||||
|     getId() { | ||||
|         return "electron"; | ||||
|     } | ||||
| @ -22,6 +28,14 @@ export class PlatformWrapperImplElectron extends PlatformWrapperImplBrowser { | ||||
|         return false; | ||||
|     } | ||||
| 
 | ||||
|     getHasUnlimitedSavegames() { | ||||
|         return true; | ||||
|     } | ||||
| 
 | ||||
|     getShowDemoBadges() { | ||||
|         return false; | ||||
|     } | ||||
| 
 | ||||
|     performRestart() { | ||||
|         logger.log(this, "Performing restart"); | ||||
|         window.location.reload(true); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user