Example #1
0
        internal async void Load(FigmaBundle bundle, Projects.Project project)
        {
            this.mainBundle = bundle;
            this.project    = project;

            bundlePopUp.RemoveAllItems();
            bundlePopUp.AddItem(bundle.Manifest.DocumentTitle);

            //loads current versions
            versionPopUp.RemoveAllItems();
            versionPopUp.AddItem("Latest");

            ShowLoading(true);
            EnableViews(false);

            var versionTask = Task.Run(() => {
                try {
                    var query             = new FigmaFileVersionQuery(bundle.FileId);
                    var figmaFileVersions = FigmaSharp.AppContext.Api.GetFileVersions(query)
                                            .versions;
                    var result = figmaFileVersions
                                 .GroupByCreatedAt()
                                 .ToArray();
                    return(result);
                } catch (Exception ex) {
                    Console.WriteLine(ex);
                    return(null);
                }
            });

            var figmaDirectory        = Path.GetDirectoryName(bundle.DirectoryPath);
            var currentProjectBundles = GetFromFigmaDirectory(figmaDirectory);

            versions = await versionTask;

            bundlePopUp.RemoveAllItems();
            foreach (var figmaNode in currentProjectBundles)
            {
                bundlePopUp.AddItem(figmaNode.Manifest.DocumentTitle);
            }

            ShowLoading(false);
            EnableViews(true);

            if (versions != null && versions.Length > 0)
            {
                foreach (var version in versions)
                {
                    versionMenu.AddItem(version);
                }
            }

            versionMenu.Generate(versionPopUp.Menu);

            //select current version
            var menu = versionMenu.GetMenuItem(bundle.Version);

            versionPopUp.SelectItem(menu);
        }