1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-08 03:28:20 +02:00

Improve open error for files from network

This commit is contained in:
disarray2077 2022-01-07 10:22:26 -03:00
parent 36311cab2d
commit 2fd78b36e7
5 changed files with 81 additions and 20 deletions

View file

@ -19,6 +19,9 @@ namespace Beefy2D.utils
[CallingConvention(.Stdcall), CLink]
static extern int32 HTTP_GetResult(void* netRequest, int32 waitMS);
[CallingConvention(.Stdcall), CLink]
static extern void HTTP_GetLastError(void* netRequest, out char8* error, out int32 errorLength);
[CallingConvention(.Stdcall), CLink]
static extern void HTTP_Delete(void* netRequest);
@ -37,5 +40,11 @@ namespace Beefy2D.utils
{
return (HTTPResult)HTTP_GetResult(mNativeNetRequest, 0);
}
public void GetLastError(String outError)
{
HTTP_GetLastError(mNativeNetRequest, let error, let errorLength);
outError.Append(StringView(error, errorLength));
}
}
}

View file

@ -3121,13 +3121,19 @@ namespace IDE.ui
void FileOpenFailed()
{
bool fileFromNetwork = mOldVerLoadCmd?.StartsWith("http", .OrdinalIgnoreCase) == true;
mLoadFailed = true;
//mLastFileTextVersion = mEditWidget.Content.mData.mCurTextVersionId;
mPanelHeader = new PanelHeader();
String fileName = scope String();
Path.GetFileName(mFilePath, fileName);
String headerStr = scope String();
headerStr.AppendF("Source file '{0}' is unavailable. Requested path is '{1}'", fileName, mFilePath);
headerStr.AppendF("Source file '{0}' is unavailable. ", fileName);
if (fileFromNetwork)
headerStr.Append("Failed to retrieve from network.");
else
headerStr.AppendF("Requested path is '{0}'", mFilePath);
mPanelHeader.Label = headerStr;
if (!sPreviousVersionWarningShown)
{
@ -3162,6 +3168,16 @@ namespace IDE.ui
});
}
if (fileFromNetwork)
{
var button = mPanelHeader.AddButton("Retry");
button.mOnMouseClick.Add(new (evt) =>
{
LoadOldVer();
});
}
else
{
var button = mPanelHeader.AddButton("Retry");
button.mOnMouseClick.Add(new (evt) =>
{
@ -3173,8 +3189,9 @@ namespace IDE.ui
{
AutoFind();
});
}
button = mPanelHeader.AddButton("Browse...");
var button = mPanelHeader.AddButton("Browse...");
button.mOnMouseClick.Add(new (evt) =>
{
BrowseForFile();
@ -5719,7 +5736,18 @@ namespace IDE.ui
if (result != .NotDone)
{
if (result == .Failed)
gApp.OutputErrorLine("Failed to retrieve source from {}", mOldVerLoadCmd);
{
String errorMsg = scope .();
errorMsg.AppendF("Failed to retrieve source from {}", mOldVerLoadCmd);
String errorReason = scope .();
mOldVerHTTPRequest.GetLastError(errorReason);
if (!errorReason.IsEmpty)
errorMsg.AppendF(" ({})", errorReason);
gApp.OutputErrorLine(errorMsg);
}
CheckAdjustFile();
RetryLoad();

View file

@ -1617,6 +1617,12 @@ BF_EXPORT int HTTP_GetResult(NetResult* netResult, int waitMS)
}
}
BF_EXPORT void HTTP_GetLastError(NetResult* netResult, const char** error, int* errorLength)
{
*error = netResult->mError.GetPtr();
*errorLength = netResult->mError.GetLength();
}
BF_EXPORT void HTTP_Delete(NetResult* netResult)
{
if (!netResult->mDoneEvent->WaitFor(0))

View file

@ -165,7 +165,23 @@ void NetRequest::DoTransfer()
curl_easy_getinfo(mCURL, CURLINFO_RESPONSE_CODE, &response_code);
mNetManager->mDebugManager->OutputRawMessage(StrFormat("msgLo Result for '%s': %d\n", mURL.c_str(), response_code));
if ((response_code == 0) || (response_code == 200) || (response_code == 404))
if (response_code == 0)
{
mError.Clear();
int msgs_left = 0;
CURLMsg* msg = curl_multi_info_read(mCURLMulti, &msgs_left);
if (msg != NULL && msg->msg == CURLMSG_DONE)
{
CURLcode return_code = msg->data.result;
mError.Append(curl_easy_strerror(return_code));
}
break;
}
if ((response_code == 200) || (response_code == 404))
break;
Cleanup();
@ -410,6 +426,7 @@ NetRequest::~NetRequest()
if (mResult != NULL)
{
mResult->mFailed = mFailed;
mResult->mError = mError;
mResult->mCurRequest = NULL;
if (mResult->mDoneEvent != NULL)
{

View file

@ -74,6 +74,7 @@ public:
String mURL;
String mOutPath;
bool mFailed;
String mError;
NetRequest* mCurRequest;
bool mRemoved;
SyncEvent* mDoneEvent;