MCPcopy Create free account
hub / github.com/MultiMC/Launcher / reprocessCommits

Function reprocessCommits

launcher/ui/dialogs/UpdateDialog.cpp:66–145  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

64}
65
66QString reprocessCommits(QByteArray json)
67{
68 auto channel = APPLICATION->settings()->get("UpdateChannel").toString();
69 try
70 {
71 QString result;
72 auto document = Json::requireDocument(json);
73 auto rootobject = Json::requireObject(document);
74 auto status = Json::requireString(rootobject, "status");
75 auto diff_url = Json::requireString(rootobject, "html_url");
76
77 auto print_commits = [&]()
78 {
79 result += "<table cellspacing=0 cellpadding=2 style='border-width: 1px; border-style: solid'>";
80 auto commitarray = Json::requireArray(rootobject, "commits");
81 for(int i = commitarray.size() - 1; i >= 0; i--)
82 {
83 const auto & commitval = commitarray[i];
84 auto commitobj = Json::requireValueObject(commitval);
85 auto parents_info = Json::ensureArray(commitobj, "parents");
86 // NOTE: this ignores merge commits, because they have more than one parent
87 if(parents_info.size() > 1)
88 {
89 continue;
90 }
91 auto commit_url = Json::requireString(commitobj, "html_url");
92 auto commit_info = Json::requireObject(commitobj, "commit");
93 auto commit_message = Json::requireString(commit_info, "message");
94 auto lines = commit_message.split('\n');
95 QRegularExpression regexp("(?<prefix>(GH-(?<issuenr>[0-9]+))|(NOISSUE)|(SCRATCH))? *(?<rest>.*) *");
96 auto match = regexp.match(lines.takeFirst(), 0, QRegularExpression::NormalMatch);
97 auto issuenr = match.captured("issuenr");
98 auto prefix = match.captured("prefix");
99 auto rest = match.captured("rest");
100 result += "<tr><td>";
101 if(issuenr.length())
102 {
103 result += QString("<a href=\"https://github.com/MultiMC/Launcher/issues/%1\">GH-%2</a>").arg(issuenr, issuenr);
104 }
105 else if(prefix.length())
106 {
107 result += QString("<a href=\"%1\">%2</a>").arg(commit_url, prefix);
108 }
109 else
110 {
111 result += QString("<a href=\"%1\">NOISSUE</a>").arg(commit_url);
112 }
113 result += "</td>";
114 lines.prepend(rest);
115 result += "<td><p>" + lines.join("<br />") + "</p></td></tr>";
116 }
117 result += "</table>";
118 };
119
120 if(status == "identical")
121 {
122 return QObject::tr("<p>There are no code changes between your current version and latest %1.</p>").arg(channel);
123 }

Callers 1

changelogLoadedMethod · 0.85

Calls 11

requireDocumentFunction · 0.85
requireObjectFunction · 0.85
requireArrayFunction · 0.85
QStringClass · 0.85
lengthMethod · 0.80
joinMethod · 0.80
whatMethod · 0.80
toStringMethod · 0.45
getMethod · 0.45
settingsMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected