File tree Expand file tree Collapse file tree 3 files changed +26
-7
lines changed
Expand file tree Collapse file tree 3 files changed +26
-7
lines changed Original file line number Diff line number Diff line change @@ -5,7 +5,7 @@ import * as Modal from '../../components/Modal/actions'
55import uniqueId from 'lodash/uniqueId'
66import TabStore from 'components/Tab/store'
77import TabState from 'components/Tab/state'
8- import FileState from 'commons/File/state'
8+ import FileState , { extState } from 'commons/File/state'
99import FileStore from 'commons/File/store'
1010import { notify , NOTIFY_TYPE } from '../../components/Notification/actions'
1111import i18n from 'utils/createI18n'
@@ -158,6 +158,9 @@ export function openFile (obj, callback) {
158158 return api . readFile ( path , encoding || currentEncoding ) . then ( ( data ) => {
159159 FileStore . loadNodeData ( data )
160160 FileState . initData . set ( path , { } )
161+ for ( const listener of extState . didOpenListeners ) {
162+ listener ( FileState . entities . get ( path ) )
163+ }
161164 return data
162165 } ) . then ( ( ) => {
163166 const activeTabGroup = TabStore . getState ( ) . activeTabGroup
Original file line number Diff line number Diff line change @@ -20,7 +20,12 @@ const state = observable({
2020 get root ( ) {
2121 return this . entities . get ( ROOT_PATH )
2222 } ,
23+ } )
24+
25+ // for plugin
26+ const extState = observable ( {
2327 createdListeners : [ ] ,
28+ didOpenListeners : [ ] ,
2429} )
2530
2631// state.entities.intercept((change) => {
@@ -45,8 +50,8 @@ class FileNode {
4550 }
4651 state . entities . set ( this . path , this )
4752 // 文件创建钩子
48- if ( state . createdListeners && state . createdListeners . length > 0 ) {
49- for ( const createdListener of state . createdListeners ) {
53+ if ( extState . createdListeners && extState . createdListeners . length > 0 ) {
54+ for ( const createdListener of extState . createdListeners ) {
5055 createdListener ( this )
5156 }
5257 }
@@ -171,4 +176,4 @@ function hydrate (json) {
171176}
172177
173178export default state
174- export { state , FileNode , hydrate }
179+ export { state , FileNode , hydrate , extState }
Original file line number Diff line number Diff line change 11import dispatchCommand from 'commands/dispatchCommand'
2- import FileState from 'commons/File/state'
2+ import FileState , { extState } from 'commons/File/state'
33import * as fileApi from 'backendAPI/fileAPI'
44import { fileIconProviders } from 'components/FileTree/state'
55import { fileIconOptions } from 'settings'
@@ -21,12 +21,23 @@ export function getFileContent (filePath) {
2121 } )
2222}
2323
24+ function removeFileDidOpenListener ( fn ) {
25+ extState . didOpenListeners = extState . didOpenListeners . filter ( f => f !== fn )
26+ }
27+
28+ export function onDidFileOpen ( fn ) {
29+ extState . didOpenListeners . push ( fn )
30+ return ( ) => {
31+ removeFileDidOpenListener ( fn )
32+ }
33+ }
34+
2435export function removeFileNodeCreatedListener ( fn ) {
25- FileState . createdListeners = FileState . createdListeners . filter ( f => f !== fn )
36+ extState . createdListeners = extState . createdListeners . filter ( f => f !== fn )
2637}
2738
2839export function onDidFileNodeCreated ( fn ) {
29- FileState . createdListeners . push ( fn )
40+ extState . createdListeners . push ( fn )
3041 return ( ) => {
3142 removeFileNodeCreatedListener ( fn )
3243 }
You can’t perform that action at this time.
0 commit comments