Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ Thumbs.db
# =============== #
.vs/
.vscode/
.claude/

# =============== #
# Rider #
Expand Down
81 changes: 81 additions & 0 deletions Runtime/Scripts/BetaHubDiagnostics.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
using System;
using UnityEngine;

namespace BetaHub
{
/// <summary>
/// Interface for contextual diagnostics providing error handling and logging capabilities.
/// </summary>
public interface IContextualDiagnostics
{
/// <summary>
/// Logs an informational message for an operation.
/// </summary>
void LogInfo(string operation, string message);

/// <summary>
/// Logs a successful operation completion.
/// </summary>
void LogSuccess(string operation, string message);

/// <summary>
/// Logs progress information for a long-running operation.
/// </summary>
void LogProgress(string operation, string message);

/// <summary>
/// Logs an error with a custom message and exception details.
/// </summary>
void LogError(string operation, string message, Exception ex = null);
}

/// <summary>
/// Main entry point for BetaHub diagnostics.
/// </summary>
public static class BetaHubDiagnostics
{
/// <summary>
/// Creates a contextual diagnostics service for a specific component or operation context.
/// </summary>
public static IContextualDiagnostics ForContext(string contextName)
{
return new ContextualDiagnostics(contextName);
}
}

/// <summary>
/// Implementation of contextual diagnostics that provides consistent logging.
/// </summary>
internal class ContextualDiagnostics : IContextualDiagnostics
{
private readonly string _contextName;

public ContextualDiagnostics(string contextName)
{
_contextName = contextName ?? throw new ArgumentNullException(nameof(contextName));
}

public void LogInfo(string operation, string message)
{
Debug.Log($"[INFO] {_contextName}.{operation}: {message}");
}

public void LogSuccess(string operation, string message)
{
Debug.Log($"[SUCCESS] {_contextName}.{operation}: {message}");
}

public void LogProgress(string operation, string message)
{
Debug.Log($"[PROGRESS] {_contextName}.{operation}: {message}");
}

public void LogError(string operation, string message, Exception ex = null)
{
string errorMessage = ex != null
? $"[ERROR] {_contextName}.{operation}: {message} - {ex.Message}\n{ex.StackTrace}"
: $"[ERROR] {_contextName}.{operation}: {message}";
Debug.LogError(errorMessage);
}
}
}
11 changes: 11 additions & 0 deletions Runtime/Scripts/BetaHubDiagnostics.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 0 additions & 4 deletions Runtime/Scripts/BugReportUI.cs
Original file line number Diff line number Diff line change
Expand Up @@ -546,10 +546,6 @@ private IEnumerator SubmitBugReportCoroutine()
BugReportPanel.SetActive(false);
},
MediaUploadType,
(error) =>
{
onIssueError(new ErrorMessage { error = error });
},
customFieldsData.Count > 0 ? customFieldsData : null
),
(ex) => // done
Expand Down
Loading