private List GetModifiedScreens()

in Tools/Core/Microsoft.PowerApps.Tools.AppChangeManager/ChangeManager.cs [145:219]


        private List<ModifiedResult> GetModifiedScreens(List<Entity> entityList)
        {
            var result = new List<ModifiedResult>();

            var appInfo = entityList?
                .Where(r => r.Template?.Name == Constants.ControlType.AppInfo)
                .Select(r => r).FirstOrDefault();

            var changedControl = new ChangedControl
            {
                ControlName = appInfo?.Name,
                Script = new List<ExtendedScript>()
            };

            appInfo?.Rules?.ForEach(
                r =>
                {
                    changedControl.Script.Add(
                        new ExtendedScript
                        {
                            Property = r.Property,
                            InvariantScript = r.InvariantScript
                        });
                });

            if (changedControl.Script.Count > 0)
            {
                result.Add(new ModifiedResult
                {
                    ScreenName = appInfo.Name,
                    ControlList = new List<ChangedControl> { changedControl }
                });
            }

            var screenDefault = defaultEntities.FirstOrDefault(e => e.Template != null && e.Template.Name == "screen");
            var screens = entityList?
                .Where(r => r.Template?.Name == Constants.ControlType.Screen)
                .Select(r => r);

            foreach (var screen in screens)
            {
                var modifiedResult = new ModifiedResult
                {
                    ScreenName = screen.Name,
                    ControlList = new List<ChangedControl>()
                };

                List<ExtendedScript> modifiedScreen = VerifyScreenProperty(screen, screenDefault);

                if (modifiedScreen.Count > 0)
                {
                    modifiedResult.ControlList.Add(
                        new ChangedControl
                        {
                            ControlName = screen.Name,
                            Parent = screen.Name,
                            Script = modifiedScreen
                        });
                }

                var controlChange = GetModifiedControle(screen);

                if (controlChange?.Count > 0)
                {
                    modifiedResult.ControlList.AddRange(controlChange);
                }

                if (modifiedResult.ControlList.Count > 0)
                {
                    result.Add(modifiedResult);
                }
            }

            return result;
        }