Merge branch 'feature/desktop-integration' into develop
This commit is contained in:
@@ -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;
|
||||||
|
}
|
||||||
|
|||||||
@@ -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() {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
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'
|
ng-repeat='editor in self.editors'
|
||||||
application='self.application'
|
application='self.application'
|
||||||
editor='editor'
|
editor='editor'
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user