Skip to content
This repository has been archived by the owner on Feb 16, 2021. It is now read-only.

Commit

Permalink
吞掉保存图片时产生的异常
Browse files Browse the repository at this point in the history
  • Loading branch information
tobiichiamane committed Dec 10, 2019
1 parent 891ba77 commit 801e541
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 40 deletions.
48 changes: 28 additions & 20 deletions PixivFSUWP/SearchResultPage.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -182,31 +182,39 @@ private async void QuickSave_Click(object sender, RoutedEventArgs e)
{
if (tapped == null) return;
var i = tapped;
FileSavePicker picker = new FileSavePicker();
picker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
picker.FileTypeChoices.Add(GetResourceString("ImageFilePlain"), new List<string>() { ".png" });
picker.SuggestedFileName = i.Title;
var file = await picker.PickSaveFileAsync();
if (file != null)
try
{
CachedFileManager.DeferUpdates(file);
var res = await new PixivAppAPI(Data.OverAll.GlobalBaseAPI)
.IllustDetail(i.ItemId.ToString());
var illust = Data.IllustDetail.FromJsonValue(res);
using (var imgstream = await Data.OverAll.DownloadImage(illust.OriginalUrls[0]))
FileSavePicker picker = new FileSavePicker();
picker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
picker.FileTypeChoices.Add(GetResourceString("ImageFilePlain"), new List<string>() { ".png" });
picker.SuggestedFileName = i.Title;
var file = await picker.PickSaveFileAsync();
if (file != null)
{
using (var filestream = await file.OpenAsync(FileAccessMode.ReadWrite))
CachedFileManager.DeferUpdates(file);
var res = await new PixivAppAPI(Data.OverAll.GlobalBaseAPI)
.IllustDetail(i.ItemId.ToString());
var illust = Data.IllustDetail.FromJsonValue(res);
using (var imgstream = await Data.OverAll.DownloadImage(illust.OriginalUrls[0]))
{
await imgstream.CopyToAsync(filestream.AsStream());
using (var filestream = await file.OpenAsync(FileAccessMode.ReadWrite))
{
await imgstream.CopyToAsync(filestream.AsStream());
}
}
var updateStatus = await CachedFileManager.CompleteUpdatesAsync(file);
if (updateStatus == FileUpdateStatus.Complete)
await (((((Frame.Parent as Grid).Parent as Page).Parent as Frame).Parent as Grid)?.Parent as MainPage)?.
ShowTip(string.Format(GetResourceString("WorkSavedPlain"), i.Title));
else
await (((((Frame.Parent as Grid).Parent as Page).Parent as Frame).Parent as Grid)?.Parent as MainPage)?.
ShowTip(string.Format(GetResourceString("WorkSaveFailedPlain"), i.Title));
}
var updateStatus = await CachedFileManager.CompleteUpdatesAsync(file);
if (updateStatus == FileUpdateStatus.Complete)
await (((((Frame.Parent as Grid).Parent as Page).Parent as Frame).Parent as Grid)?.Parent as MainPage)?.
ShowTip(string.Format(GetResourceString("WorkSavedPlain"), i.Title));
else
await (((((Frame.Parent as Grid).Parent as Page).Parent as Frame).Parent as Grid)?.Parent as MainPage)?.
ShowTip(string.Format(GetResourceString("WorkSaveFailedPlain"), i.Title));
}
catch
{
await (((((Frame.Parent as Grid).Parent as Page).Parent as Frame).Parent as Grid)?.Parent as MainPage)?.
ShowTip(string.Format(GetResourceString("WorkSaveFailedPlain"), i.Title));
}
}
}
Expand Down
48 changes: 28 additions & 20 deletions PixivFSUWP/WaterfallPage.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -222,31 +222,39 @@ private async void QuickSave_Click(object sender, RoutedEventArgs e)
{
if (tapped == null) return;
var i = tapped;
FileSavePicker picker = new FileSavePicker();
picker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
picker.FileTypeChoices.Add(GetResourceString("ImageFilePlain"), new List<string>() { ".png" });
picker.SuggestedFileName = i.Title;
var file = await picker.PickSaveFileAsync();
if (file != null)
try
{
CachedFileManager.DeferUpdates(file);
var res = await new PixivAppAPI(Data.OverAll.GlobalBaseAPI)
.IllustDetail(i.ItemId.ToString());
var illust = Data.IllustDetail.FromJsonValue(res);
using (var imgstream = await Data.OverAll.DownloadImage(illust.OriginalUrls[0]))
FileSavePicker picker = new FileSavePicker();
picker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
picker.FileTypeChoices.Add(GetResourceString("ImageFilePlain"), new List<string>() { ".png" });
picker.SuggestedFileName = i.Title;
var file = await picker.PickSaveFileAsync();
if (file != null)
{
using (var filestream = await file.OpenAsync(FileAccessMode.ReadWrite))
CachedFileManager.DeferUpdates(file);
var res = await new PixivAppAPI(Data.OverAll.GlobalBaseAPI)
.IllustDetail(i.ItemId.ToString());
var illust = Data.IllustDetail.FromJsonValue(res);
using (var imgstream = await Data.OverAll.DownloadImage(illust.OriginalUrls[0]))
{
await imgstream.CopyToAsync(filestream.AsStream());
using (var filestream = await file.OpenAsync(FileAccessMode.ReadWrite))
{
await imgstream.CopyToAsync(filestream.AsStream());
}
}
var updateStatus = await CachedFileManager.CompleteUpdatesAsync(file);
if (updateStatus == FileUpdateStatus.Complete)
await ((Frame.Parent as Grid)?.Parent as MainPage)?.
ShowTip(string.Format(GetResourceString("WorkSavedPlain"), i.Title));
else
await ((Frame.Parent as Grid)?.Parent as MainPage)?.
ShowTip(string.Format(GetResourceString("WorkSaveFailedPlain"), i.Title));
}
var updateStatus = await CachedFileManager.CompleteUpdatesAsync(file);
if (updateStatus == FileUpdateStatus.Complete)
await ((Frame.Parent as Grid)?.Parent as MainPage)?.
ShowTip(string.Format(GetResourceString("WorkSavedPlain"), i.Title));
else
await ((Frame.Parent as Grid)?.Parent as MainPage)?.
ShowTip(string.Format(GetResourceString("WorkSaveFailedPlain"), i.Title));
}
catch
{
await ((Frame.Parent as Grid)?.Parent as MainPage)?.
ShowTip(string.Format(GetResourceString("WorkSaveFailedPlain"), i.Title));
}
}
}
Expand Down

0 comments on commit 801e541

Please sign in to comment.