Car/Assets/StompyRobot/SRDebugger/Scripts/Services/Implementation/BugReportApiService.cs

60 lines
1.7 KiB
C#
Raw Normal View History

2025-01-02 11:32:58 +08:00
namespace SRDebugger.Services.Implementation
{
using System;
using Internal;
using SRF.Service;
using UnityEngine;
[Service(typeof (IBugReportService))]
class BugReportApiService : IBugReportService
{
private IBugReporterHandler _handler = new InternalBugReporterHandler();
public bool IsUsable
{
get
{
return _handler != null && _handler.IsUsable;
}
}
public void SetHandler(IBugReporterHandler handler)
{
Debug.LogFormat("[SRDebugger] Bug Report handler set to {0}", handler);
_handler = handler;
}
public void SendBugReport(BugReport report, BugReportCompleteCallback completeHandler,
IProgress<float> progress = null)
{
if (_handler == null)
{
throw new InvalidOperationException("No bug report handler has been configured.");
}
if (!_handler.IsUsable)
{
throw new InvalidOperationException("Bug report handler is not usable.");
}
if (report == null)
{
throw new ArgumentNullException("report");
}
if (completeHandler == null)
{
throw new ArgumentNullException("completeHandler");
}
if (Application.internetReachability == NetworkReachability.NotReachable)
{
completeHandler(false, "No Internet Connection");
return;
}
_handler.Submit(report, result => completeHandler(result.IsSuccessful, result.ErrorMessage), progress);
}
}
}