private SceneCardView RemoveScene(ISceneData sceneData, bool notify) { bool wasDeployed = scenesRefreshHelper.WasDeployedScene(sceneData); var dictionary = wasDeployed ? scenesRefreshHelper.oldDeployedScenes : scenesRefreshHelper.oldProjectsScenes; if (dictionary.TryGetValue(sceneData.id, out SceneCardView sceneCardView)) { dictionary.Remove(sceneData.id); if (notify) { if (wasDeployed) { OnDeployedSceneRemoved?.Invoke(sceneCardView); } else { OnProjectSceneRemoved?.Invoke(sceneCardView); } } return(sceneCardView); } return(null); }
/// <summary> /// Set current user scenes (deployed and projects) /// </summary> /// <param name="scenesData">list of scenes</param> public void SetScenes(ISceneData[] scenesData) { scenesRefreshHelper.Set(deployedScenes, projectScenes); deployedScenes = new Dictionary <string, SceneCardView>(); projectScenes = new Dictionary <string, SceneCardView>(); // update or create new scenes view for (int i = 0; i < scenesData.Length; i++) { SetScene(scenesData[i]); } // remove old deployed scenes if (scenesRefreshHelper.oldDeployedScenes != null) { using (var iterator = scenesRefreshHelper.oldDeployedScenes.GetEnumerator()) { while (iterator.MoveNext()) { OnDeployedSceneRemoved?.Invoke(iterator.Current.Value); DestroyCardView(iterator.Current.Value); } } } // remove old project scenes if (scenesRefreshHelper.oldProjectsScenes != null) { using (var iterator = scenesRefreshHelper.oldProjectsScenes.GetEnumerator()) { while (iterator.MoveNext()) { OnProjectSceneRemoved?.Invoke(iterator.Current.Value); DestroyCardView(iterator.Current.Value); } } } // notify scenes set if needed if (scenesRefreshHelper.isOldDeployedScenesEmpty && deployedScenes.Count > 0) { OnDeployedScenesSet?.Invoke(deployedScenes); } if (scenesRefreshHelper.isOldProjectScenesEmpty && projectScenes.Count > 0) { OnProjectScenesSet?.Invoke(projectScenes); } }