Merge branch 'feature/desktop-integration' into develop
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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() {
|
||||
}
|
||||
}
|
||||
|
||||
32
app/assets/javascripts/services/browserBridge.ts
Normal file
32
app/assets/javascripts/services/browserBridge.ts
Normal 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() {}
|
||||
}
|
||||
6
app/assets/javascripts/startApplication.ts
Normal file
6
app/assets/javascripts/startApplication.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
import { Bridge } from "./services/bridge";
|
||||
|
||||
export type StartApplication = (
|
||||
defaultSyncServerHost: string,
|
||||
bridge: Bridge
|
||||
) => Promise<void>;
|
||||
@@ -2,4 +2,4 @@ editor-view(
|
||||
ng-repeat='editor in self.editors'
|
||||
application='self.application'
|
||||
editor='editor'
|
||||
)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user