Refacotring

Adding GitHub personal access token option
This commit is contained in:
Lars Brubaker 2021-04-23 18:07:32 -07:00
parent 23313cdd41
commit a23857c6eb
8 changed files with 58 additions and 6 deletions

View file

@ -282,7 +282,7 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
}
// and select this
var rootItem = this.Ancestors().Where(i => scene.Children.Contains(i)).FirstOrDefault();
var rootItem = this.Parents().Where(i => scene.Children.Contains(i)).FirstOrDefault();
if (rootItem != null)
{
scene.SelectedItem = rootItem;

View file

@ -59,7 +59,7 @@ namespace MatterHackers.MatterControl.Plugins.Lithophane
if (scene != null)
{
var topParent = wrapper.Ancestors().LastOrDefault(i => i.Parent != null);
var topParent = wrapper.Parents().LastOrDefault(i => i.Parent != null);
UiThread.RunOnIdle(() =>
{
scene.SelectedItem = topParent ?? wrapper;

View file

@ -140,6 +140,7 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
public override Task Rebuild()
{
this.DebugDepth("Rebuild");
using (RebuildLock())
{
// set the matrix for the inner object

View file

@ -173,7 +173,7 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
parentLock?.Dispose();
// and select this
var rootItem = this.Ancestors().Where(i => scene.Children.Contains(i)).FirstOrDefault();
var rootItem = this.Parents().Where(i => scene.Children.Contains(i)).FirstOrDefault();
if (rootItem != null)
{
scene.SelectedItem = rootItem;

View file

@ -1,5 +1,6 @@
/*
Copyright (c) 2019, John Lewin
Copyright (c) 2021, Lars Brubaker
All rights reserved.
Redistribution and use in source and binary forms, with or without
@ -86,6 +87,11 @@ namespace MatterHackers.MatterControl.Library
{
lock (locker)
{
if (content.Contains("rate limit exceeded"))
{
StatusMessage = content;
return;
}
ParseJson(content);
}
},
@ -167,9 +173,10 @@ namespace MatterHackers.MatterControl.Library
}
// check the global cache if any
var repositoryImage = CheckForImage(item.ID, LoadRepositoryImageUrlCache());
var repositoryImage = CheckRepositoryForImage(item.ID, LoadRepositoryImageUrlCache());
if (repositoryImage != null)
{
repositoryImage.SetRecieveBlender(new BlenderPreMultBGRA());
return Task.FromResult<ImageBuffer>(repositoryImage);
}
}
@ -194,6 +201,23 @@ namespace MatterHackers.MatterControl.Library
return null;
}
private ImageBuffer CheckRepositoryForImage(string id, List<(string name, string url)> cache)
{
foreach (var imageUrl in cache)
{
if (imageUrl.name.Contains(Path.GetFileNameWithoutExtension(id)))
{
// download the image and cache it
var image = new ImageBuffer(LibraryConfig.DefaultItemIcon);
image.SetRecieveBlender(new BlenderPreMultBGRA());
WebCache.RetrieveImageAsync(image, imageUrl.url, false);
return image;
}
}
return null;
}
private async Task LoadFolderImageUrlCache()
{
if (folderImageUrlCache.Count == 0)
@ -279,6 +303,11 @@ namespace MatterHackers.MatterControl.Library
request.Headers.Add("Upgrade-Insecure-Requests", "1");
request.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36");
request.Headers.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9");
var token = UserSettings.Instance.get("GitHubPat");
if (string.IsNullOrEmpty(token))
{
request.Headers.Add("Authorization", $"token {token}");
}
request.Headers.Add("Sec-Fetch-Site", "none");
request.Headers.Add("Sec-Fetch-Mode", "navigate");
request.Headers.Add("Sec-Fetch-User", "?1");

View file

@ -760,7 +760,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
bool isSelected = selectedItem != null
&& (item == selectedItem
|| item.Ancestors().Any(p => p == selectedItem));
|| item.Parents().Any(p => p == selectedItem));
// Invoke all item Drawables
foreach (var drawable in itemDrawables.Where(d => d.DrawStage != DrawStage.Last && d.Enabled))

View file

@ -447,6 +447,28 @@ namespace MatterHackers.MatterControl
advancedPanel);
#endif
var gitHubPat = UserSettings.Instance.get("GitHubPat");
if (gitHubPat == null)
{
gitHubPat = "";
}
var accessToken = new MHTextEditWidget(gitHubPat, theme, pixelWidth: 300, messageWhenEmptyAndNotSelected: "Enter a GitHub Person Access Token".Localize())
{
HAnchor = HAnchor.Stretch,
Margin = new BorderDouble(5),
Name = "GitHubPat Edit Field"
};
accessToken.ActualTextEditWidget.EnterPressed += (s, e) =>
{
UserSettings.Instance.set("GitHubPat", accessToken.ActualTextEditWidget.Text);
};
this.AddSettingsRow(
new SettingsItem(
"GitHub Personal Access Token".Localize(),
accessToken,
theme),
advancedPanel);
advancedPanel.Children<SettingsItem>().First().Border = new BorderDouble(0, 1);
}

@ -1 +1 @@
Subproject commit 6f9957b6744efcc732700d092674572040a15809
Subproject commit 0f47e2dc3853ad5b2bf4775d37a3e4e1ed44a7c6