mirror of
https://github.com/tobspr/shapez.io.git
synced 2024-10-27 20:34:29 +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