public void ReportIssue(Mod mod, string issueTitle, string issueBody, Action onCompletion) { Action <string> onSuccess = delegate(string output) { Main.NewText("Issue submit result: " + output, Color.Yellow); ErrorLogger.Log("Issue submit result: " + output); }; Action <Exception, string> onFail = (e, output) => { Main.NewText("Issue submit error: " + e.Message, Color.Red); LogHelpers.Log(e.ToString()); }; PostGithubModIssueReports.ReportIssue(mod, issueTitle, issueBody, onSuccess, onFail, onCompletion); }
//////////////// /// @private public override void Action(CommandCaller caller, string input, string[] args) { IList <Mod> mods = ModListHelpers.GetAllLoadedModsPreferredOrder().ToList(); int argIdx = 1; string title; if (!CommandsHelpers.GetQuotedStringFromArgsAt(args, argIdx, out argIdx, out title)) { caller.Reply("Invalid issue report title string", Color.Red); return; } string body; if (!CommandsHelpers.GetQuotedStringFromArgsAt(args, argIdx, out argIdx, out body)) { caller.Reply("Invalid issue report description string", Color.Red); return; } int modIdx; if (!int.TryParse(args[0], out modIdx)) { caller.Reply(args[argIdx] + " is not an integer", Color.Red); return; } if (modIdx <= 0 || modIdx > mods.Count) { caller.Reply(args[argIdx] + " is not a mod entry; out of range", Color.Red); return; } Action <bool, string> onCompletion = (success, output) => { if (output != "Done?") { caller.Reply(output, Color.Lime); } else { caller.Reply("Issue report was not sent", Color.Red); } }; Action <Exception, string> onFail = (e, output) => { caller.Reply(e.Message, Color.Red); }; PostGithubModIssueReports.ReportIssue(mods[modIdx - 1], title, body, onFail, onCompletion); }
//////////////// public void ReportIssue(Mod mod, string issueTitle, string issueBody, Action onCompletion) { Action <bool, string> wrappedOnCompletion = (success, output) => { if (success) { Main.NewText("Issue submit result: " + output, Color.Yellow); LogHelpers.Log("Issue submit result: " + output); } onCompletion(); }; Action <Exception, string> onError = (e, output) => { Main.NewText("Issue submit error: " + e.Message, Color.Red); LogHelpers.Log(e.ToString()); }; PostGithubModIssueReports.ReportIssue(mod, issueTitle, issueBody, onError, wrappedOnCompletion); }