diff --git a/src/Portal/Sucrose.Portal/Views/Controls/StoreCard.xaml b/src/Portal/Sucrose.Portal/Views/Controls/StoreCard.xaml
index c0f280790..1fa293ad4 100644
--- a/src/Portal/Sucrose.Portal/Views/Controls/StoreCard.xaml
+++ b/src/Portal/Sucrose.Portal/Views/Controls/StoreCard.xaml
@@ -40,6 +40,14 @@
+
+
+
+
+
+
+
+
diff --git a/src/Portal/Sucrose.Portal/Views/Controls/StoreCard.xaml.cs b/src/Portal/Sucrose.Portal/Views/Controls/StoreCard.xaml.cs
index df98e1d3c..4ce66663d 100644
--- a/src/Portal/Sucrose.Portal/Views/Controls/StoreCard.xaml.cs
+++ b/src/Portal/Sucrose.Portal/Views/Controls/StoreCard.xaml.cs
@@ -102,7 +102,7 @@ private void MenuInstall_Click(object sender, RoutedEventArgs e)
Start();
}
- private async void DownloadCache()
+ private async Task DownloadCache()
{
if (SPMI.StoreDownloader.ContainsKey(Theme))
{
@@ -112,19 +112,31 @@ private async void DownloadCache()
}
Info = SSTHI.ReadJson(Path.Combine(Theme, SMR.SucroseInfo));
+
+ return true;
}
else
{
- SPMI.StoreDownloader[Theme] = true;
+ SPMI.StoreDownloader[Theme] = false;
- SSSHD.Cache(Wallpaper, Theme, Agent, Key);
+ SPMI.StoreDownloader[Theme] = SSSHD.Cache(Wallpaper, Theme, Agent, Key);
- while (!SPMI.StoreDownloading.ContainsKey(Theme) || !SPMI.StoreDownloading[Theme])
+ if (SPMI.StoreDownloader[Theme])
{
- await Task.Delay(100);
- }
+ while (!SPMI.StoreDownloading.ContainsKey(Theme) || !SPMI.StoreDownloading[Theme])
+ {
+ await Task.Delay(100);
+ }
- Info = SSTHI.ReadJson(Path.Combine(Theme, SMR.SucroseInfo));
+ Info = SSTHI.ReadJson(Path.Combine(Theme, SMR.SucroseInfo));
+
+ return true;
+ }
+ else
+ {
+ SPMI.StoreDownloader.Remove(Theme);
+ return false;
+ }
}
}
@@ -230,48 +242,58 @@ private void ContextMenu_Opened(object sender, RoutedEventArgs e)
private async void StoreCard_Loaded(object sender, RoutedEventArgs e)
{
- await Task.Run(DownloadCache);
+ bool Result = await Task.Run(DownloadCache);
try
{
- ToolTip TitleTip = new()
+ if (Result)
{
- Content = Info.Title
- };
+ ToolTip TitleTip = new()
+ {
+ Content = Info.Title
+ };
- ToolTip DescriptionTip = new()
- {
- Content = Info.Description
- };
+ ToolTip DescriptionTip = new()
+ {
+ Content = Info.Description
+ };
- ThemeTitle.ToolTip = TitleTip;
- ThemeDescription.ToolTip = DescriptionTip;
+ ThemeTitle.ToolTip = TitleTip;
+ ThemeDescription.ToolTip = DescriptionTip;
- ThemeTitle.Text = Info.Title.Length > SMMM.TitleLength ? $"{SHA.Cut(Info.Title, SMMM.TitleLength)}..." : Info.Title;
- ThemeDescription.Text = Info.Description.Length > SMMM.DescriptionLength ? $"{SHA.Cut(Info.Description, SMMM.DescriptionLength)}..." : Info.Description;
+ ThemeTitle.Text = Info.Title.Length > SMMM.TitleLength ? $"{SHA.Cut(Info.Title, SMMM.TitleLength)}..." : Info.Title;
+ ThemeDescription.Text = Info.Description.Length > SMMM.DescriptionLength ? $"{SHA.Cut(Info.Description, SMMM.DescriptionLength)}..." : Info.Description;
- string ImagePath = Path.Combine(Theme, Info.Thumbnail);
+ string ImagePath = Path.Combine(Theme, Info.Thumbnail);
- if (File.Exists(ImagePath))
- {
- Imagine.ImageSource = await Loader.LoadOptimalAsync(ImagePath);
- }
+ if (File.Exists(ImagePath))
+ {
+ Imagine.ImageSource = await Loader.LoadOptimalAsync(ImagePath);
+ }
- if (Info.AppVersion.CompareTo(SHV.Entry()) > 0)
- {
- DownloadSymbol.Visibility = Visibility.Hidden;
- IncompatibleVersion.Visibility = Visibility.Visible;
- }
+ if (Info.AppVersion.CompareTo(SHV.Entry()) > 0)
+ {
+ DownloadSymbol.Visibility = Visibility.Hidden;
+ IncompatibleVersion.Visibility = Visibility.Visible;
+ }
- await Task.Delay(100);
+ await Task.Delay(100);
- Card.Visibility = Visibility.Visible;
- Progress.Visibility = Visibility.Collapsed;
+ Card.Visibility = Visibility.Visible;
+ Progress.Visibility = Visibility.Collapsed;
+ }
+ else
+ {
+ Warn.Visibility = Visibility.Visible;
+ Progress.Visibility = Visibility.Collapsed;
+ }
Dispose();
}
catch
{
+ Warn.Visibility = Visibility.Visible;
+ Progress.Visibility = Visibility.Collapsed;
Dispose();
}
}
diff --git a/src/Shared/Sucrose.Shared.Store/Helper/Download.cs b/src/Shared/Sucrose.Shared.Store/Helper/Download.cs
index fef27d6b4..3329aaacb 100644
--- a/src/Shared/Sucrose.Shared.Store/Helper/Download.cs
+++ b/src/Shared/Sucrose.Shared.Store/Helper/Download.cs
@@ -132,11 +132,18 @@ public static bool Cache(KeyValuePair Wallpaper, string Theme, st
InitializeClient(Agent, Key);
- using HttpResponseMessage ResponseInfo = SSSMI.Client.GetAsync($"{SMR.RawWebsite}/{Wallpaper.Value.Source}/{Wallpaper.Key}/{SMR.SucroseInfo}").Result;
- using HttpResponseMessage ResponseCover = SSSMI.Client.GetAsync($"{SMR.RawWebsite}/{Wallpaper.Value.Source}/{Wallpaper.Key}/{Wallpaper.Value.Cover}").Result;
+ using HttpResponseMessage ResponseInfo = SSSMI.Client.GetAsync(EncodeSpacesOnly($"{SMR.RawWebsite}/{Wallpaper.Value.Source}/{Wallpaper.Key}/{SMR.SucroseInfo}")).Result;
+ using HttpResponseMessage ResponseCover = SSSMI.Client.GetAsync(EncodeSpacesOnly($"{SMR.RawWebsite}/{Wallpaper.Value.Source}/{Wallpaper.Key}/{Wallpaper.Value.Cover}")).Result;
- ResponseInfo.EnsureSuccessStatusCode();
- ResponseCover.EnsureSuccessStatusCode();
+ try
+ {
+ ResponseInfo.EnsureSuccessStatusCode();
+ ResponseCover.EnsureSuccessStatusCode();
+ }
+ catch
+ {
+ return false;
+ }
if (ResponseInfo.IsSuccessStatusCode && ResponseCover.IsSuccessStatusCode)
{
@@ -176,6 +183,11 @@ public static async Task Theme(string Source, string Output, string Agent,
return await DownloadFolder(Source, Output, Agent, Keys, Key, Sub);
}
+ private static string EncodeSpacesOnly(string Source)
+ {
+ return Source.Replace(" ", "%20");
+ }
+
private static void InitializeClient(string Agent, string Key)
{
SSSHS.Apply();