Merge branch 'feature/desktop-integration' into develop

This commit is contained in:
Baptiste Grob
2020-11-18 16:03:51 +01:00
5 changed files with 63 additions and 48 deletions

View File

@@ -53,17 +53,16 @@ import {
import { trusted } from './filters'; import { trusted } from './filters';
import { isDev } from './utils'; import { isDev } from './utils';
import { Bridge, BrowserBridge } from './services/bridge'; import { BrowserBridge } from './services/browserBridge';
import { startErrorReporting } from './services/errorReporting'; import { startErrorReporting } from './services/errorReporting';
import { alertDialog } from './services/alertService'; import { alertDialog } from './services/alertService';
import { StartApplication } from './startApplication';
import { Bridge } from './services/bridge';
if (__WEB__) { const startApplication: StartApplication = async function startApplication(
startApplication((window as any)._default_sync_server, new BrowserBridge()); defaultSyncServerHost: string,
} else { bridge: Bridge
(window as any).startApplication = startApplication; ) {
}
async function startApplication(defaultSyncServerHost: string, bridge: Bridge) {
notifyBetaPeriodEnd(); notifyBetaPeriodEnd();
SNLog.onLog = console.log; SNLog.onLog = console.log;
@@ -77,7 +76,7 @@ async function startApplication(defaultSyncServerHost: string, bridge: Bridge) {
.config(configRoutes) .config(configRoutes)
.constant('bridge', bridge) .constant('bridge', bridge)
.constant('defaultSyncServerHost', defaultSyncServerHost) .constant('defaultSyncServerHost', defaultSyncServerHost)
.constant('appVersion', __VERSION__); .constant('appVersion', bridge.appVersion);
// Controllers // Controllers
angular angular
@@ -149,7 +148,7 @@ async function startApplication(defaultSyncServerHost: string, bridge: Bridge) {
angular.element(document).ready(() => { angular.element(document).ready(() => {
angular.bootstrap(document, ['app']); angular.bootstrap(document, ['app']);
}); });
} };
function notifyBetaPeriodEnd() { function notifyBetaPeriodEnd() {
if (window.location.hostname === 'app-beta.standardnotes.org') { 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;
}

View File

@@ -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. */ /** Platform-specific (i-e Electron/browser) behavior is handled by a Bridge object. */
export interface Bridge { export interface Bridge {
environment: Environment, readonly appVersion: string;
environment: Environment;
getKeychainValue(): Promise<unknown>; getKeychainValue(): Promise<unknown>;
setKeychainValue(value: any): Promise<void>; setKeychainValue(value: any): Promise<void>;
clearKeychainValue(): Promise<void>; clearKeychainValue(): Promise<void>;
extensionsServerHost?: string; extensionsServerHost?: string;
syncComponents(payloads: PurePayload[]): void; syncComponents(payloads: unknown[]): void;
onMajorDataChange(): void; onMajorDataChange(): void;
onInitialDataLoad(): void; onInitialDataLoad(): void;
onSearch(text?: string): void; onSearch(text?: string): void;
downloadBackup(): void; downloadBackup(): void;
} }
const KEYCHAIN_STORAGE_KEY = 'keychain';
export class BrowserBridge implements Bridge {
environment = Environment.Web;
async getKeychainValue(): Promise<unknown> {
const value = localStorage.getItem(KEYCHAIN_STORAGE_KEY);
if (value) {
return JSON.parse(value);
}
}
async setKeychainValue(value: any): Promise<void> {
localStorage.setItem(KEYCHAIN_STORAGE_KEY, JSON.stringify(value));
}
async clearKeychainValue(): Promise<void> {
localStorage.removeItem(KEYCHAIN_STORAGE_KEY);
}
/** No-ops */
syncComponents() {
}
onMajorDataChange() {
}
onInitialDataLoad() {
}
onSearch() {
}
downloadBackup() {
}
}

View File

@@ -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<unknown> {
const value = localStorage.getItem(KEYCHAIN_STORAGE_KEY);
if (value) {
return JSON.parse(value);
}
}
async setKeychainValue(value: any): Promise<void> {
localStorage.setItem(KEYCHAIN_STORAGE_KEY, JSON.stringify(value));
}
async clearKeychainValue(): Promise<void> {
localStorage.removeItem(KEYCHAIN_STORAGE_KEY);
}
/** No-ops */
syncComponents() {}
onMajorDataChange() {}
onInitialDataLoad() {}
onSearch() {}
downloadBackup() {}
}

View File

@@ -0,0 +1,6 @@
import { Bridge } from "./services/bridge";
export type StartApplication = (
defaultSyncServerHost: string,
bridge: Bridge
) => Promise<void>;

View File

@@ -2,4 +2,4 @@ editor-view(
ng-repeat='editor in self.editors' ng-repeat='editor in self.editors'
application='self.application' application='self.application'
editor='editor' editor='editor'
) )