diff --git a/app/assets/javascripts/app.ts b/app/assets/javascripts/app.ts index a49e22c40..58ae18e44 100644 --- a/app/assets/javascripts/app.ts +++ b/app/assets/javascripts/app.ts @@ -53,17 +53,16 @@ import { import { trusted } from './filters'; import { isDev } from './utils'; -import { Bridge, BrowserBridge } from './services/bridge'; +import { BrowserBridge } from './services/browserBridge'; import { startErrorReporting } from './services/errorReporting'; import { alertDialog } from './services/alertService'; +import { StartApplication } from './startApplication'; +import { Bridge } from './services/bridge'; -if (__WEB__) { - startApplication((window as any)._default_sync_server, new BrowserBridge()); -} else { - (window as any).startApplication = startApplication; -} - -async function startApplication(defaultSyncServerHost: string, bridge: Bridge) { +const startApplication: StartApplication = async function startApplication( + defaultSyncServerHost: string, + bridge: Bridge +) { notifyBetaPeriodEnd(); SNLog.onLog = console.log; @@ -77,7 +76,7 @@ async function startApplication(defaultSyncServerHost: string, bridge: Bridge) { .config(configRoutes) .constant('bridge', bridge) .constant('defaultSyncServerHost', defaultSyncServerHost) - .constant('appVersion', __VERSION__); + .constant('appVersion', bridge.appVersion); // Controllers angular @@ -149,7 +148,7 @@ async function startApplication(defaultSyncServerHost: string, bridge: Bridge) { angular.element(document).ready(() => { angular.bootstrap(document, ['app']); }); -} +}; function notifyBetaPeriodEnd() { if (window.location.hostname === 'app-beta.standardnotes.org') { @@ -163,3 +162,9 @@ function notifyBetaPeriodEnd() { }); } } + +if (__WEB__) { + startApplication((window as any)._default_sync_server, new BrowserBridge(__VERSION__)); +} else { + (window as any).startApplication = startApplication; +} diff --git a/app/assets/javascripts/services/bridge.ts b/app/assets/javascripts/services/bridge.ts index fdf67f1df..f5f4488c6 100644 --- a/app/assets/javascripts/services/bridge.ts +++ b/app/assets/javascripts/services/bridge.ts @@ -1,51 +1,23 @@ -import { PurePayload, Environment } from "snjs"; +/** + * This file will be imported by desktop, so we make sure imports are not + * carrying too much code with them that's not tree-shakeable. + */ +import { Environment } from 'snjs/lib/platforms'; +export { Environment }; /** Platform-specific (i-e Electron/browser) behavior is handled by a Bridge object. */ export interface Bridge { - environment: Environment, + readonly appVersion: string; + environment: Environment; getKeychainValue(): Promise; setKeychainValue(value: any): Promise; clearKeychainValue(): Promise; extensionsServerHost?: string; - syncComponents(payloads: PurePayload[]): void; + syncComponents(payloads: unknown[]): void; onMajorDataChange(): void; onInitialDataLoad(): void; onSearch(text?: string): void; downloadBackup(): void; } - -const KEYCHAIN_STORAGE_KEY = 'keychain'; - -export class BrowserBridge implements Bridge { - environment = Environment.Web; - - async getKeychainValue(): Promise { - const value = localStorage.getItem(KEYCHAIN_STORAGE_KEY); - if (value) { - return JSON.parse(value); - } - } - - async setKeychainValue(value: any): Promise { - localStorage.setItem(KEYCHAIN_STORAGE_KEY, JSON.stringify(value)); - } - - async clearKeychainValue(): Promise { - localStorage.removeItem(KEYCHAIN_STORAGE_KEY); - } - - /** No-ops */ - - syncComponents() { - } - onMajorDataChange() { - } - onInitialDataLoad() { - } - onSearch() { - } - downloadBackup() { - } -} diff --git a/app/assets/javascripts/services/browserBridge.ts b/app/assets/javascripts/services/browserBridge.ts new file mode 100644 index 000000000..a7d2e2dab --- /dev/null +++ b/app/assets/javascripts/services/browserBridge.ts @@ -0,0 +1,32 @@ +import { Bridge } from "./bridge"; +import { Environment } from 'snjs'; + +const KEYCHAIN_STORAGE_KEY = 'keychain'; + +export class BrowserBridge implements Bridge { + constructor(public appVersion: string) {} + environment = Environment.Web; + + async getKeychainValue(): Promise { + const value = localStorage.getItem(KEYCHAIN_STORAGE_KEY); + if (value) { + return JSON.parse(value); + } + } + + async setKeychainValue(value: any): Promise { + localStorage.setItem(KEYCHAIN_STORAGE_KEY, JSON.stringify(value)); + } + + async clearKeychainValue(): Promise { + localStorage.removeItem(KEYCHAIN_STORAGE_KEY); + } + + /** No-ops */ + + syncComponents() {} + onMajorDataChange() {} + onInitialDataLoad() {} + onSearch() {} + downloadBackup() {} +} diff --git a/app/assets/javascripts/startApplication.ts b/app/assets/javascripts/startApplication.ts new file mode 100644 index 000000000..1ee380a1c --- /dev/null +++ b/app/assets/javascripts/startApplication.ts @@ -0,0 +1,6 @@ +import { Bridge } from "./services/bridge"; + +export type StartApplication = ( + defaultSyncServerHost: string, + bridge: Bridge +) => Promise; diff --git a/app/assets/javascripts/views/editor_group/editor-group-view.pug b/app/assets/javascripts/views/editor_group/editor-group-view.pug index 839645f33..22f7e72ec 100644 --- a/app/assets/javascripts/views/editor_group/editor-group-view.pug +++ b/app/assets/javascripts/views/editor_group/editor-group-view.pug @@ -2,4 +2,4 @@ editor-view( ng-repeat='editor in self.editors' application='self.application' editor='editor' - ) \ No newline at end of file + )