diff --git a/src/server_manager/ui_components/app-root.html b/src/server_manager/ui_components/app-root.html index df288c62a..b00feb3f1 100644 --- a/src/server_manager/ui_components/app-root.html +++ b/src/server_manager/ui_components/app-root.html @@ -36,7 +36,7 @@ - + diff --git a/src/server_manager/web_app/app.spec.ts b/src/server_manager/web_app/app.spec.ts index 00963b2fc..5911ea872 100644 --- a/src/server_manager/web_app/app.spec.ts +++ b/src/server_manager/web_app/app.spec.ts @@ -222,7 +222,6 @@ function createTestApp( manualServerRepo?: server.ManualServerRepository, displayServerRepository?: FakeDisplayServerRepository, managedServerRepository?: FakeManagedServerRepository) { - const WEB_APP_URL = 'outline://fakefakefake/'; const VERSION = '0.0.1'; const fakeDigitalOceanSessionFactory = (accessToken: string) => { return new FakeDigitalOceanSession(accessToken); @@ -242,7 +241,7 @@ function createTestApp( displayServerRepository = new FakeDisplayServerRepository(); } return new App( - polymerAppRoot, WEB_APP_URL, VERSION, fakeDigitalOceanSessionFactory, + polymerAppRoot, VERSION, fakeDigitalOceanSessionFactory, fakeDigitalOceanServerRepositoryFactory, manualServerRepo, displayServerRepository, digitalOceanTokenManager); } diff --git a/src/server_manager/web_app/app.ts b/src/server_manager/web_app/app.ts index 0c5a73a84..15be74d5d 100644 --- a/src/server_manager/web_app/app.ts +++ b/src/server_manager/web_app/app.ts @@ -32,9 +32,7 @@ interface PolymerEvent extends Event { detail: any; } -// The Outline DigitalOcean team's referral code: -// https://www.digitalocean.com/help/referral-program/ -const DIGITALOCEAN_REFERRAL_CODE = '5ddb4219b716'; +const TOS_ACK_LOCAL_STORAGE_KEY = 'tos-ack'; interface UiAccessKey { id: string; @@ -58,10 +56,6 @@ function convertToUiAccessKey(remoteAccessKey: server.AccessKey): UiAccessKey { }; } -const DIGITAL_OCEAN_CREATION_ERROR_MESSAGE = `Sorry! We couldn't create a server this time. - If this problem persists, it might be that your account needs to be reviewed by DigitalOcean. - Please log in to www.digitalocean.com and follow their instructions.`; - function isManagedServer(testServer: server.Server): testServer is server.ManagedServer { return !!(testServer as server.ManagedServer).getHost; } @@ -84,7 +78,7 @@ export class App { private serverBeingCreated: server.ManagedServer; constructor( - private appRoot: Polymer, private readonly appUrl: string, private readonly version: string, + private appRoot: Polymer, private readonly version: string, private createDigitalOceanSession: DigitalOceanSessionFactory, private createDigitalOceanServerRepository: DigitalOceanServerRepositoryFactory, private manualServerRepository: server.ManualServerRepository, @@ -92,6 +86,10 @@ export class App { private digitalOceanTokenManager: TokenManager) { appRoot.setAttribute('outline-version', this.version); + appRoot.addEventListener('TermsOfServiceAccepted', (event: PolymerEvent) => { + localStorage.setItem(TOS_ACK_LOCAL_STORAGE_KEY, Date.now().toString()); + }); + appRoot.addEventListener('ConnectToDigitalOcean', (event: PolymerEvent) => { this.connectToDigitalOcean(); }); @@ -211,10 +209,16 @@ export class App { this.handleShowServerRequested(event.detail.displayServerId); }); - onUpdateDownloaded(this.displayAppUpdateNotification.bind(this)); + if (onUpdateDownloaded) { + // Only run on Electron. + onUpdateDownloaded(this.displayAppUpdateNotification.bind(this)); + } } async start(): Promise { + if (!localStorage.getItem(TOS_ACK_LOCAL_STORAGE_KEY)) { + this.appRoot.$.tosDialog.open(); + } this.showIntro(); await this.syncDisplayServersToUi(); diff --git a/src/server_manager/web_app/main.ts b/src/server_manager/web_app/main.ts index ebf9d8b52..4f926ac66 100644 --- a/src/server_manager/web_app/main.ts +++ b/src/server_manager/web_app/main.ts @@ -48,10 +48,9 @@ document.addEventListener('WebComponentsReady', () => { // Create and start the app. new App( - document.getElementById('appRoot'), document.URL, version, - digitalocean_api.createDigitalOceanSession, digitalOceanServerRepositoryFactory, - new ManualServerRepository('manualServers'), new DisplayServerRepository(), - new DigitalOceanTokenManager()) + document.getElementById('appRoot'), version, digitalocean_api.createDigitalOceanSession, + digitalOceanServerRepositoryFactory, new ManualServerRepository('manualServers'), + new DisplayServerRepository(), new DigitalOceanTokenManager()) .start(); });