Skip to content

Commit 250ee84

Browse files
committed
feat(modal): show informations from refdiff api
1 parent e8b268d commit 250ee84

File tree

4 files changed

+136
-79
lines changed

4 files changed

+136
-79
lines changed

js/background.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
55

66
fetchData(changeInfo.url, function(data) {
77
chrome.tabs.sendMessage(tabId, {
8+
url: changeInfo.url,
89
message: "data",
910
data
1011
});
@@ -17,7 +18,11 @@ chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
1718
chrome.tabs.query({ active: true, currentWindow: true }, function(
1819
tabs
1920
) {
20-
chrome.tabs.sendMessage(tabs[0].id, { message: "data", data });
21+
chrome.tabs.sendMessage(tabs[0].id, {
22+
url: request.url,
23+
message: "data",
24+
data
25+
});
2126
});
2227
});
2328
}
@@ -32,7 +37,9 @@ function fetchData(url, callback) {
3237
}
3338

3439
fetch(
35-
`https://refdiff.brito.com.br/${urlParts[1]}/${urlParts[2]}/${urlParts[3]}`
40+
`https://refdiff.brito.com.br/${urlParts[1]}/${urlParts[2]}/${
41+
urlParts[3]
42+
}?t=${+new Date()}` // TODO remove seed
3643
)
3744
.then(function(response) {
3845
return response.json();

js/build/background.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) {
125125

126126
fetchData(changeInfo.url, function (data) {
127127
chrome.tabs.sendMessage(tabId, {
128+
url: changeInfo.url,
128129
message: "data",
129130
data: data
130131
});
@@ -138,6 +139,7 @@ chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) {
138139
currentWindow: true
139140
}, function (tabs) {
140141
chrome.tabs.sendMessage(tabs[0].id, {
142+
url: request.url,
141143
message: "data",
142144
data: data
143145
});
@@ -154,7 +156,8 @@ function fetchData(url, callback) {
154156
return;
155157
}
156158

157-
fetch("https://refdiff.brito.com.br/".concat(urlParts[1], "/").concat(urlParts[2], "/").concat(urlParts[3])).then(function (response) {
159+
fetch("https://refdiff.brito.com.br/".concat(urlParts[1], "/").concat(urlParts[2], "/").concat(urlParts[3], "?t=").concat(+new Date()) // TODO remove seed
160+
).then(function (response) {
158161
return response.json();
159162
}).then(function (data) {
160163
callback(data);

js/build/content-script.js

Lines changed: 49 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -120,32 +120,37 @@ parcelRequire = (function (modules, cache, entry, globalName) {
120120
})({"content-script.js":[function(require,module,exports) {
121121
var fileMap = {};
122122
var popup = document.createElement("div");
123+
var currentPage = "";
124+
125+
function urlEqual(baseURL, reference) {
126+
return baseURL.split("#diff")[0] === reference.split("#diff")[0];
127+
}
128+
123129
chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) {
124130
switch (request.message) {
125131
case "data":
126-
console.log(request.data);
127-
request.data.refactorings.forEach(function (refactoring) {
128-
var file = fileMap[refactoring.after_file_name]; // TODO: change for before
132+
if (urlEqual(request.url, currentPage)) {
133+
console.log("same page, skipping...");
134+
return;
135+
}
129136

130-
if (file) {
131-
addRefactorings(file.ref, file.link, refactoring);
132-
} else {
133-
console.error("not found reference for " + refactoring.after_file_name);
134-
}
137+
currentPage = request.url.split("#diff")[0];
138+
console.log("DATA = ", request.data);
139+
request.data.refactorings.forEach(function (refactoring) {
140+
var beforeFile = fileMap[refactoring.before_file_name];
141+
var afterFile = fileMap[refactoring.after_file_name];
142+
addRefactorings(beforeFile.ref, "".concat(afterFile.link, "R").concat(refactoring.after_line_number), refactoring, "L");
143+
addRefactorings(afterFile.ref, "".concat(beforeFile.link, "L").concat(refactoring.before_line_number), refactoring, "R");
135144
});
136-
break;
137-
138-
default:
139-
console.log("others: " + request);
140145
}
141146
});
142147
window.addEventListener("load", function () {
143148
popup.setAttribute("class", "diff-refector-popup");
144-
popup.innerHTML = "\n <button class=\"diff-refector-popup-close btn btn-sm btn-default\">x</button>\n <p><b>Type:</b> <span class=\"refactor-type\">Move Method</span></p>\n <div class=\"refactor-diff\"></div>\n <a class=\"btn btn-sm btn-primary refactor-link\" href=\"#\">Go to block</a>\n ";
149+
popup.innerHTML = "\n <button class=\"diff-refector-popup-close btn btn-sm btn-default\">x</button>\n <p><b class=\"refactor-type\"></b></p>\n <div class=\"refactor-content\"></div>\n <a class=\"btn btn-sm btn-primary refactor-link\" href=\"#\">Go to block</a>\n ";
145150

146151
popup.showDiff = function (element, type, diffHTML, interval) {
147152
popup.style.setProperty("display", "block");
148-
popup.querySelector(".refactor-diff").innerHTML = diffHTML;
153+
popup.querySelector(".refactor-content").innerHTML = diffHTML;
149154
popup.querySelector(".refactor-type").innerText = type;
150155

151156
if (interval) {
@@ -175,30 +180,47 @@ window.addEventListener("load", function () {
175180
});
176181
chrome.runtime.sendMessage({
177182
message: "fetch",
178-
url: document.location.href
183+
url: document.location.href.split("#diff")[0]
179184
});
180185
});
181186

182-
function addRefactorings(file, link, refactoring) {
183-
console.log("adding refactoring for ", refactoring);
184-
console.log("REF = ", file);
185-
file.querySelectorAll(".code-review.blob-code.blob-code-deletion").forEach(function (line) {
186-
console.log("seraching for ", refactoring.before_line_number);
187+
function addRefactorings(file, link, refactoring, side) {
188+
console.log("adding refactoring for ", refactoring); // right side (addiction)
189+
190+
var lineNumber = refactoring.after_line_number;
191+
var selector = ".code-review.blob-code.blob-code-addition"; // left side (deletion)
187192

188-
if (!line.querySelector("[data-line=\"".concat(refactoring.before_line_number, "\"]"))) {
193+
if (side === "L") {
194+
lineNumber = refactoring.before_line_number;
195+
selector = ".code-review.blob-code.blob-code-deletion";
196+
}
197+
198+
file.querySelectorAll(selector).forEach(function (line) {
199+
console.log("seraching for ", lineNumber, "side = ", side);
200+
201+
if (!line.querySelector("[data-line=\"".concat(lineNumber, "\"]"))) {
189202
return;
190203
}
191204

205+
var contentHTML;
206+
207+
switch (refactoring.type) {
208+
case "RENAME":
209+
contentHTML = "<p>".concat(refactoring.before_local_name, " to ").concat(refactoring.after_local_name, "</p>");
210+
break;
211+
212+
case "MOVE":
213+
contentHTML = "<p>".concat(refactoring.object_type, " ").concat(refactoring.before_local_name, " moved.</p>");
214+
contentHTML += "<p>Origin: ".concat(refactoring.before_file_name, ":").concat(refactoring.before_line_number, "</p>");
215+
contentHTML += "<p>Destiny: ".concat(refactoring.after_file_name, ":").concat(refactoring.after_line_number, "</p>");
216+
break;
217+
}
218+
192219
console.log("found line!!!!");
193220
var button = document.createElement("button");
194221
button.setAttribute("class", "btn-refector");
195222
button.addEventListener("click", function () {
196-
var moveMethodDiff = "diff --git a/Example.java b/Example.java\nindex aa5aefd..36cbde8 100644\n--- a/Example.java\n+++ b/Example.java\n@@ -1,20 +1,9 @@\n import java.io.*;\n \n public class Example {\n\tpublic void DoNothing() {\n-\t\tSystem.out.println(\"do nothing\");\n+\t\tSystem.out.println(\"do something\");\n\t}\n";
197-
var moveMethodHTML = Diff2Html.getPrettyHtml(moveMethodDiff, {
198-
drawFileList: true,
199-
matching: "lines"
200-
});
201-
popup.showDiff(button, "".concat(refactoring.type, " - ").concat(refactoring.object_type), moveMethodHTML, link);
223+
popup.showDiff(button, "".concat(refactoring.type, " ").concat(refactoring.object_type), contentHTML, link);
202224
});
203225
button.innerText = "R";
204226
line.appendChild(button);

js/content-script.js

Lines changed: 74 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,53 @@
11
var fileMap = {};
22
var popup = document.createElement("div");
3+
var currentPage = "";
4+
5+
function urlEqual(baseURL, reference) {
6+
return baseURL.split("#diff")[0] === reference.split("#diff")[0];
7+
}
38

49
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
510
switch (request.message) {
611
case "data":
7-
console.log(request.data);
12+
if (urlEqual(request.url, currentPage)) {
13+
console.log("same page, skipping...");
14+
return;
15+
}
16+
currentPage = request.url.split("#diff")[0];
17+
18+
console.log("DATA = ", request.data);
819
request.data.refactorings.forEach(refactoring => {
9-
var file = fileMap[refactoring.after_file_name]; // TODO: change for before
10-
if (file) {
11-
addRefactorings(file.ref, file.link, refactoring);
12-
} else {
13-
console.error(
14-
"not found reference for " + refactoring.after_file_name
15-
);
16-
}
20+
var beforeFile = fileMap[refactoring.before_file_name];
21+
var afterFile = fileMap[refactoring.after_file_name];
22+
addRefactorings(
23+
beforeFile.ref,
24+
`${afterFile.link}R${refactoring.after_line_number}`,
25+
refactoring,
26+
"L"
27+
);
28+
29+
addRefactorings(
30+
afterFile.ref,
31+
`${beforeFile.link}L${refactoring.before_line_number}`,
32+
refactoring,
33+
"R"
34+
);
1735
});
18-
break;
19-
default:
20-
console.log("others: " + request);
2136
}
2237
});
2338

2439
window.addEventListener("load", function() {
2540
popup.setAttribute("class", "diff-refector-popup");
2641
popup.innerHTML = `
2742
<button class="diff-refector-popup-close btn btn-sm btn-default">x</button>
28-
<p><b>Type:</b> <span class="refactor-type">Move Method</span></p>
29-
<div class="refactor-diff"></div>
43+
<p><b class="refactor-type"></b></p>
44+
<div class="refactor-content"></div>
3045
<a class="btn btn-sm btn-primary refactor-link" href="#">Go to block</a>
3146
`;
3247

3348
popup.showDiff = function(element, type, diffHTML, interval) {
3449
popup.style.setProperty("display", "block");
35-
popup.querySelector(".refactor-diff").innerHTML = diffHTML;
50+
popup.querySelector(".refactor-content").innerHTML = diffHTML;
3651
popup.querySelector(".refactor-type").innerText = type;
3752

3853
if (interval) {
@@ -71,44 +86,54 @@ window.addEventListener("load", function() {
7186

7287
chrome.runtime.sendMessage({
7388
message: "fetch",
74-
url: document.location.href
89+
url: document.location.href.split("#diff")[0]
7590
});
7691
});
7792

78-
function addRefactorings(file, link, refactoring) {
93+
function addRefactorings(file, link, refactoring, side) {
7994
console.log("adding refactoring for ", refactoring);
80-
console.log("REF = ", file);
81-
file.querySelectorAll(".code-review.blob-code.blob-code-deletion").forEach(
82-
function(line) {
83-
console.log("seraching for ", refactoring.before_line_number);
84-
if (
85-
!line.querySelector(
86-
`[data-line="${refactoring.before_line_number}"]`
87-
)
88-
) {
89-
return;
90-
}
9195

92-
console.log("found line!!!!");
93-
94-
var button = document.createElement("button");
95-
button.setAttribute("class", "btn-refector");
96-
button.addEventListener("click", function() {
97-
var moveMethodDiff = `diff --git a/Example.java b/Example.java\nindex aa5aefd..36cbde8 100644\n--- a/Example.java\n+++ b/Example.java\n@@ -1,20 +1,9 @@\n import java.io.*;\n \n public class Example {\n public void DoNothing() {\n- System.out.println("do nothing");\n+ System.out.println("do something");\n }\n`;
98-
var moveMethodHTML = Diff2Html.getPrettyHtml(moveMethodDiff, {
99-
drawFileList: true,
100-
matching: "lines"
101-
});
102-
103-
popup.showDiff(
104-
button,
105-
`${refactoring.type} - ${refactoring.object_type}`,
106-
moveMethodHTML,
107-
link
108-
);
109-
});
110-
button.innerText = "R";
111-
line.appendChild(button);
96+
// right side (addiction)
97+
var lineNumber = refactoring.after_line_number;
98+
var selector = ".code-review.blob-code.blob-code-addition";
99+
100+
// left side (deletion)
101+
if (side === "L") {
102+
lineNumber = refactoring.before_line_number;
103+
selector = ".code-review.blob-code.blob-code-deletion";
104+
}
105+
106+
file.querySelectorAll(selector).forEach(line => {
107+
console.log("seraching for ", lineNumber, "side = ", side);
108+
if (!line.querySelector(`[data-line="${lineNumber}"]`)) {
109+
return;
110+
}
111+
112+
var contentHTML;
113+
switch (refactoring.type) {
114+
case "RENAME":
115+
contentHTML = `<p>${refactoring.before_local_name} to ${refactoring.after_local_name}</p>`;
116+
break;
117+
case "MOVE":
118+
contentHTML = `<p>${refactoring.object_type} ${refactoring.before_local_name} moved.</p>`;
119+
contentHTML += `<p>Origin: ${refactoring.before_file_name}:${refactoring.before_line_number}</p>`;
120+
contentHTML += `<p>Destiny: ${refactoring.after_file_name}:${refactoring.after_line_number}</p>`;
121+
break;
112122
}
113-
);
123+
124+
console.log("found line!!!!");
125+
126+
var button = document.createElement("button");
127+
button.setAttribute("class", "btn-refector");
128+
button.addEventListener("click", () => {
129+
popup.showDiff(
130+
button,
131+
`${refactoring.type} ${refactoring.object_type}`,
132+
contentHTML,
133+
link
134+
);
135+
});
136+
button.innerText = "R";
137+
line.appendChild(button);
138+
});
114139
}

0 commit comments

Comments
 (0)