public async Task UpdateVersionMenu(string link_id) { if (!UseAsVersionsMenu()) { return; } versionsMainMenu.Activated += (s, e) => { FigmaFileVersion version = menuManager.GetFileVersion(versionsMainMenu); if (version != null) { VersionSelected?.Invoke(this, version); } }; var versions = await Task.Run(() => { var query = new FigmaFileVersionQuery(link_id); FigmaSharp.AppContext.Current.SetAccessToken(TokenStore.SharedTokenStore.GetToken()); return(FigmaSharp.AppContext.Api.GetFileVersions(query) .versions.GroupByCreatedAt() .ToArray()); }); menuManager.Clear(); foreach (var version in versions) { menuManager.AddItem(version); } UseAsVersionsMenu(); }
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); }
private async void FigmaUrlTextField_Changed(object sender, EventArgs e) { ShowLoading(true); SelectedFileVersion = null; //loads current versions versionPopUp.RemoveAllItems(); RefreshStates(); if (WebApiHelper.TryParseFileUrl(FileId, out string fileId)) { figmaUrlTextField.StringValue = fileId; } versions = await Task.Run(() => { try { var query = new FigmaFileVersionQuery(fileId); var figmaFileVersions = FigmaSharp.AppContext.Api.GetFileVersions(query).versions; var result = figmaFileVersions .GroupByCreatedAt() .ToArray(); return(result); } catch (Exception ex) { LoggingService.LogError("[FIGMA] Error", ex); return(null); } }); ShowLoading(false); versionMenu.Clear(); if (versions != null) { foreach (var item in versions) { versionMenu.AddItem(item); } versionMenu.Generate(versionPopUp.Menu); versionPopUp.SelectItem(versionMenu.CurrentMenu); SelectedFileVersion = versionMenu.CurrentVersion; } RefreshStates(); }
public async Task UpdateVersionMenu(string link_id) { if (!UseAsVersionsMenu()) { return; } versionsMainMenu.Activated += (s, e) => { FigmaFileVersion version = menuManager.GetFileVersion(versionsMainMenu); if (version != null) { VersionSelected?.Invoke(this, version); } }; var versions = await Task.Run(() => { try { var query = new FigmaFileVersionQuery(link_id); return(FigmaSharp.AppContext.Api.GetFileVersions(query) .versions.GroupByCreatedAt() .ToArray()); } catch (Exception ex) { Console.WriteLine(ex); return(new FigmaFileVersion[0]); } }); menuManager.Clear(); foreach (var version in versions) { menuManager.AddItem(version); } UseAsVersionsMenu(); }
public override void BuildNode(ITreeBuilder builder, object dataObject, NodeInfo nodeInfo) { if (dataObject is Projects.ProjectFile file) { if (file.IsFigmaDesignerFile()) { nodeInfo.OverlayBottomLeft = HasError(file, file.DependsOnFile) ? figmaOverlayError : figmaOverlay; } else if (file.IsFigmaCSFile(out var designerFile)) { nodeInfo.OverlayBottomLeft = HasError(designerFile, file) ? figmaOverlayError : figmaOverlay; } } else if (dataObject is ProjectFolder pr) { if (pr.IsDocumentDirectoryBundle()) { FigmaBundle bundle = null; try { bundle = FigmaBundle.FromDirectoryPath(pr.Path.FullPath); } catch (Exception ex) { //if the bundle is removed by any reason whyle updating LoggingService.LogError("CustomFigmaFundlerNodeBuilder", ex); } if (bundle != null && bundle.Manifest != null && !string.IsNullOrEmpty(bundle.Manifest.DocumentTitle)) { nodeInfo.Label = bundle.Manifest.DocumentTitle; } else { nodeInfo.Label = pr.Path.FileNameWithoutExtension; } nodeInfo.ClosedIcon = nodeInfo.Icon = Context.GetIcon(Stock.Package); Task.Run(() => { var query = new FigmaFileVersionQuery(bundle.FileId); var figmaFileVersions = FigmaSharp.AppContext.Api.GetFileVersions(query).versions; return(figmaFileVersions .GroupByCreatedAt() .OrderByDescending(s => s.created_at) .FirstOrDefault()); }).ContinueWith(s => { if (s.Result != null && s.Result.id != bundle.Version.id) { Runtime.RunInMainThread(() => { nodeInfo.StatusIcon = Context.GetIcon(packageUpdateIcon); if (s.Result.IsNamed) { nodeInfo.StatusMessage = $"Update available: {s.Result.label}"; } else { nodeInfo.StatusMessage = $"Update available: {s.Result.created_at.ToString("g")}"; } }); } }); return; } if (pr.IsFigmaDirectory()) { nodeInfo.Label = FigmaFolderLabel; nodeInfo.ClosedIcon = nodeInfo.Icon = Context.GetIcon(Resources.Icons.FigmaPad); return; } } }