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 { 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;
}

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. */
export interface Bridge {
environment: Environment,
readonly appVersion: string;
environment: Environment;
getKeychainValue(): Promise<unknown>;
setKeychainValue(value: any): Promise<void>;
clearKeychainValue(): Promise<void>;
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<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'
application='self.application'
editor='editor'
)
)