diff --git a/dist/extension/js/background.js b/dist/extension/js/background.js index d4d7c4aa1e..df7776114b 100644 --- a/dist/extension/js/background.js +++ b/dist/extension/js/background.js @@ -78,7 +78,7 @@ break; }; - case 'init': { + case 'initMenu': { initMenu(); break; }; diff --git a/extension/iframe.tsx b/extension/iframe.tsx index 6ab5d34c94..a91097aa1d 100644 --- a/extension/iframe.tsx +++ b/extension/iframe.tsx @@ -1,11 +1,12 @@ import * as React from 'react'; import * as hs from 'history'; +import $ from 'jquery'; import { Router, Route, Switch } from 'react-router-dom'; import { RouteComponentProps } from 'react-router'; import { Provider } from 'mobx-react'; import { configure } from 'mobx'; import { ListMenu } from 'Component'; -import { UtilRouter } from 'Lib'; +import { C, UtilRouter } from 'Lib'; import { commonStore, authStore, blockStore, detailStore, dbStore, menuStore, popupStore, extensionStore } from 'Store'; import Index from './iframe/index'; @@ -80,16 +81,18 @@ class Iframe extends React.Component { componentDidMount () { UtilRouter.init(history); + const win = $(window); + /* @ts-ignore */ chrome.runtime.onMessage.addListener((msg, sender, sendResponse) => { console.log('[Iframe]', msg, sender); switch (msg.type) { - case 'init': + case 'initIframe': const { appKey, gatewayPort, serverPort } = msg; Util.init(serverPort, gatewayPort); - Util.authorize(appKey, () => UtilRouter.go('/create', {})); + Util.authorize(appKey); sendResponse({}); break; @@ -98,6 +101,7 @@ class Iframe extends React.Component { extensionStore.setTabUrl(msg.url); extensionStore.setHtml(msg.html); + UtilRouter.go('/create', {}); sendResponse({}); break; }; @@ -105,6 +109,14 @@ class Iframe extends React.Component { }; return true; }); + + win.off('beforeunload').on('beforeunload', (e: any) => { + if (authStore.token) { + C.WalletCloseSession(authStore.token, () => { + authStore.tokenSet(''); + }); + }; + }); }; }; diff --git a/extension/iframe/create.tsx b/extension/iframe/create.tsx index a34d26735b..2366f9ad21 100644 --- a/extension/iframe/create.tsx +++ b/extension/iframe/create.tsx @@ -89,6 +89,16 @@ const Create = observer(class Create extends React.Component { + this.init(); + }); + }; + + componentDidUpdate (): void { + this.initBlocks(); + }; + + init () { const spaces = dbStore.getSpaces().map(it => ({ ...it, id: it.targetSpaceId, object: it, iconSize: 16 })).filter(it => it); if (this.refSpace && spaces.length) { @@ -100,10 +110,6 @@ const Create = observer(class Create extends React.Component { const appKey = Storage.get('appKey'); if (appKey) { - Util.authorize(appKey, () => UtilRouter.go('/create', {}), () => Storage.delete('appKey')); + Util.authorize(appKey, () => { + Util.sendMessage({ type: 'initMenu' }, () => {}); + }, () => Storage.delete('appKey')); }; }; diff --git a/extension/lib/util.ts b/extension/lib/util.ts index a606950285..9d5e75ecf1 100644 --- a/extension/lib/util.ts +++ b/extension/lib/util.ts @@ -49,8 +49,6 @@ class Util { }; authorize (appKey: string, onSuccess?: () => void, onError?: (error) => void) { - const { serverPort, gatewayPort } = extensionStore; - authStore.appKeySet(appKey); UtilData.createSession((message: any) => { if (message.error.code) { @@ -59,9 +57,10 @@ class Util { }; return; }; - - this.sendMessage({ type: 'init', appKey, serverPort, gatewayPort }, () => {}); - UtilData.createsSubscriptions(onSuccess); + + if (onSuccess) { + onSuccess(); + }; }); }; diff --git a/extension/popup/challenge.tsx b/extension/popup/challenge.tsx index d89e374093..18a0691bbe 100644 --- a/extension/popup/challenge.tsx +++ b/extension/popup/challenge.tsx @@ -50,8 +50,17 @@ const Challenge = observer(class Challenge extends React.Component UtilRouter.go('/create', {})); + const { appKey } = message; + const { serverPort, gatewayPort } = extensionStore; + + Storage.set('appKey', appKey); + + Util.authorize(appKey, () => { + Util.sendMessage({ type: 'initIframe', appKey, serverPort, gatewayPort }, () => {}); + Util.sendMessage({ type: 'initMenu' }, () => {}); + + UtilRouter.go('/create', {}); + }); }); }; diff --git a/extension/popup/create.tsx b/extension/popup/create.tsx index b5eed15711..66f62e978b 100644 --- a/extension/popup/create.tsx +++ b/extension/popup/create.tsx @@ -161,9 +161,11 @@ const Create = observer(class Create extends React.Component { + this.initSpace(); + this.initName(); + this.initType(); + }); }; componentDidUpdate(): void { @@ -242,7 +244,7 @@ const Create = observer(class Create extends React.Component this.forceUpdate()); + UtilData.createSubscriptions(() => this.forceUpdate()); }; getTagsValue () { diff --git a/extension/popup/index.tsx b/extension/popup/index.tsx index 46349fab80..61abbd4296 100644 --- a/extension/popup/index.tsx +++ b/extension/popup/index.tsx @@ -70,7 +70,14 @@ const Index = observer(class Index extends React.Component UtilRouter.go('/create', {}), () => { + Util.authorize(appKey, () => { + const { serverPort, gatewayPort } = extensionStore; + + Util.sendMessage({ type: 'initIframe', appKey, serverPort, gatewayPort }, () => {}); + Util.sendMessage({ type: 'initMenu' }, () => {}); + + UtilRouter.go('/create', {}); + }, () => { Storage.delete('appKey'); this.login(); }); diff --git a/src/ts/lib/util/data.ts b/src/ts/lib/util/data.ts index 17fcd79a9e..1c72b6862a 100644 --- a/src/ts/lib/util/data.ts +++ b/src/ts/lib/util/data.ts @@ -244,7 +244,7 @@ class UtilData { }; C.ObjectOpen(widgets, '', space, () => { - this.createsSubscriptions(() => { + this.createSubscriptions(() => { C.NotificationList(false, Constant.limit.notification, (message: any) => { if (!message.error.code) { notificationStore.set(message.list); @@ -285,7 +285,7 @@ class UtilData { }); }; - createsSubscriptions (callBack?: () => void): void { + createSubscriptions (callBack?: () => void): void { const { space } = commonStore; const list = [