This repository was archived by the owner on Dec 15, 2022. It is now read-only.
File tree Expand file tree Collapse file tree 2 files changed +45
-0
lines changed Expand file tree Collapse file tree 2 files changed +45
-0
lines changed Original file line number Diff line number Diff line change @@ -71,6 +71,37 @@ export default class PaneItem extends React.Component {
71
71
}
72
72
73
73
componentDidMount ( ) {
74
+ // Listen for and adopt StubItems that are added after this component has
75
+ // already been mounted.
76
+ this . subs . add ( this . props . workspace . onDidAddPaneItem ( ( { item} ) => {
77
+ if ( ! item . _getStub ) {
78
+ return ;
79
+ }
80
+ const stub = item . _getStub ( ) ;
81
+
82
+ if ( stub . getRealItem ( ) !== null ) {
83
+ return ;
84
+ }
85
+
86
+ const match = this . state . uriPattern . matches ( item . getURI ( ) ) ;
87
+ if ( ! match . ok ( ) ) {
88
+ return ;
89
+ }
90
+
91
+ const openItem = new OpenItem ( match , stub . getElement ( ) , stub ) ;
92
+ openItem . hydrateStub ( {
93
+ copy : ( ) => this . copyOpenItem ( openItem ) ,
94
+ } ) ;
95
+ if ( this . props . className ) {
96
+ openItem . addClassName ( this . props . className ) ;
97
+ }
98
+ this . registerCloseListener ( item , openItem ) ;
99
+
100
+ this . setState ( prevState => ( {
101
+ currentlyOpen : [ ...prevState . currentlyOpen , openItem ] ,
102
+ } ) ) ;
103
+ } ) ) ;
104
+
74
105
for ( const openItem of this . state . currentlyOpen ) {
75
106
this . registerCloseListener ( openItem . stubItem , openItem ) ;
76
107
Original file line number Diff line number Diff line change @@ -309,5 +309,19 @@ describe('PaneItem', function() {
309
309
310
310
assert . isTrue ( stub . getElement ( ) . classList . contains ( 'added' ) ) ;
311
311
} ) ;
312
+
313
+ it ( 'adopts StubItems that are deserialized after the package has been initialized' , function ( ) {
314
+ const wrapper = mount (
315
+ < PaneItem workspace = { workspace } uriPattern = "atom-github://pattern/root/{id}" >
316
+ { ( { params, itemHolder} ) => < Component ref = { itemHolder . setter } text = { params . id } /> }
317
+ </ PaneItem > ,
318
+ ) ;
319
+
320
+ const stub = StubItem . create ( 'some-component' , { title : 'Component' } , 'atom-github://pattern/root/45' ) ;
321
+ workspace . getActivePane ( ) . addItem ( stub ) ;
322
+ wrapper . update ( ) ;
323
+
324
+ assert . isTrue ( wrapper . exists ( 'Component[text="45"]' ) ) ;
325
+ } ) ;
312
326
} ) ;
313
327
} ) ;
You can’t perform that action at this time.
0 commit comments