diff --git a/skyquake/plugins/composer/api/composer.js b/skyquake/plugins/composer/api/composer.js
index 13fd0dd..801873a 100644
--- a/skyquake/plugins/composer/api/composer.js
+++ b/skyquake/plugins/composer/api/composer.js
@@ -612,6 +612,9 @@
                                 data: data.body
                             });
                         }
+                    }).catch(function(err) {
+                        console.log('Failed to retrieve FileManager.list')
+                        resolve(err);
                     })
                 }
             })
diff --git a/skyquake/plugins/composer/src/src/components/CanvasPanel.js b/skyquake/plugins/composer/src/src/components/CanvasPanel.js
index 96904ea..cb212cb 100644
--- a/skyquake/plugins/composer/src/src/components/CanvasPanel.js
+++ b/skyquake/plugins/composer/src/src/components/CanvasPanel.js
@@ -81,9 +81,13 @@
 						<button className={isDescriptorView ? '-selected' : ''} onClick={ComposerAppActions.showDescriptor}>
 							Descriptor
 						</button>
-						<button className={!isDescriptorView ? '-selected' : ''}  onClick={ComposerAppActions.showAssets}>
-							Assets
-						</button>
+						{
+							this.props.files ?
+								<button className={!isDescriptorView ? '-selected' : ''}  onClick={ComposerAppActions.showAssets}>
+									Assets
+								</button>
+							: null
+						}
 					</div>
 				</div>
        		)
diff --git a/skyquake/plugins/composer/src/src/stores/ComposerAppStore.js b/skyquake/plugins/composer/src/src/stores/ComposerAppStore.js
index 854864b..3671890 100644
--- a/skyquake/plugins/composer/src/src/stores/ComposerAppStore.js
+++ b/skyquake/plugins/composer/src/src/stores/ComposerAppStore.js
@@ -122,7 +122,7 @@
 		this.fullScreenMode = false;
 		this.panelTabShown = 'descriptor';
 		//File manager values
-		this.files = [];
+		this.files = false;
 		this.filesState = {};
 		this.downloadJobs = {};
 		//End File  manager values
@@ -457,18 +457,27 @@
 		let self = this;
 		let filesState = null;
         if (self.fileMonitoringSocketID) {
-			filesState = addInputState( _.cloneDeep(this.filesState),data);
-			// filesState = _.merge(self.filesState, addInputState({},data));
-			let normalizedData = normalizeTree(data);
-			this.setState({
-				files: {
-					data: _.mergeWith(normalizedData.data, self.files.data, function(obj, src) {
-						return _.uniqBy(obj? obj.concat(src) : src, 'name');
-					}),
-					id: self.files.id || normalizedData.id
-				},
-				filesState: filesState
-			});
+        	let newState = {};
+        	if(data.hasOwnProperty('contents')) {
+        		filesState = addInputState( _.cloneDeep(this.filesState),data);
+				// filesState = _.merge(self.filesState, addInputState({},data));
+				let normalizedData = normalizeTree(data);
+				newState = {
+					files: {
+						data: _.mergeWith(normalizedData.data, self.files.data, function(obj, src) {
+							return _.uniqBy(obj? obj.concat(src) : src, 'name');
+						}),
+						id: self.files.id || normalizedData.id
+					},
+					filesState: filesState
+				}
+        	} else {
+        		newState = {
+        			files: false
+        		}
+        	}
+
+			this.setState(newState);
         }
 		function normalizeTree(data) {
 			let f = {
@@ -540,7 +549,7 @@
 		let self = this;
 		let ws = window.multiplexer.channel(id);
 		let downloadJobs = _.cloneDeep(self.downloadJobs);
-		let newFiles = {};
+		let newFiles = false;
 		ws.onmessage = (socket) => {
             if (self.files && self.files.length > 0) {
                 let jobs = [];
@@ -616,7 +625,6 @@
 	openFileManagerSockets(i) {
 		let self = this;
 		let item = i || self.item;
-		this.files = {data:[]};
         // this.closeFileManagerSockets();
 		this.getInstance().openFileMonitoringSocket(item.id, item.uiState.type).then(function() {
         // 	// self.getInstance().openDownloadMonitoringSocket(item.id);
