Skip to content

Commit d80d6e7

Browse files
authored
Add files via upload
1 parent a4f9d32 commit d80d6e7

1 file changed

Lines changed: 36 additions & 5 deletions

File tree

sources/mixcloud.js

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -72,17 +72,40 @@ function toDataURL(url, callback) {
7272
return resp;
7373
}
7474

75+
var messageSelector = "[data-testid='chatline'], .mixcloud-live-chat-row";
76+
var chatContainerSelector = ".mixcloud-live-chat-container, .mixcloud-live-chat-chat-window";
77+
7578
function getMessageElement(ele){
7679
if (!ele || ele.nodeType !== 1){return null;}
77-
if (ele.matches && (ele.matches("[data-testid='chatline']") || ele.matches(".mixcloud-live-chat-row"))){
80+
if (ele.matches && ele.matches(messageSelector)){
7881
return ele;
7982
}
83+
if (ele.closest){
84+
var parentMessage = ele.closest(messageSelector);
85+
if (parentMessage){
86+
return parentMessage;
87+
}
88+
}
8089
if (ele.querySelector){
81-
return ele.querySelector("[data-testid='chatline'], .mixcloud-live-chat-row");
90+
return ele.querySelector(messageSelector);
8291
}
8392
return null;
8493
}
8594

95+
function getChatContainerFromRow(row){
96+
if (!row || !row.parentElement){return null;}
97+
var parent = row.parentElement;
98+
while (parent && parent !== document.body){
99+
try {
100+
if (parent.querySelectorAll(messageSelector).length > 1){
101+
return parent;
102+
}
103+
} catch(e){}
104+
parent = parent.parentElement;
105+
}
106+
return row.parentElement;
107+
}
108+
86109
function getProfileLink(ele){
87110
var links = ele.querySelectorAll("a[href]");
88111
for (var i = 0; i < links.length; i++){
@@ -346,7 +369,7 @@ function toDataURL(url, callback) {
346369
processMessage(node);
347370
}
348371
if (node.querySelectorAll){
349-
var rows = node.querySelectorAll("[data-testid='chatline'], .mixcloud-live-chat-row");
372+
var rows = node.querySelectorAll(messageSelector);
350373
for (var j = 0; j < rows.length; j++){
351374
processMessage(rows[j]);
352375
}
@@ -366,7 +389,7 @@ function toDataURL(url, callback) {
366389
}
367390
});
368391
};
369-
var existingRows = target.querySelectorAll("[data-testid='chatline'], .mixcloud-live-chat-row");
392+
var existingRows = target.querySelectorAll(messageSelector);
370393
for (var i = 0; i < existingRows.length; i++){
371394
existingRows[i].marked = true;
372395
}
@@ -383,10 +406,18 @@ function toDataURL(url, callback) {
383406
observeChatContainer(targets[i]);
384407
}
385408
}
409+
410+
function observeDiscoveredChatContainers() {
411+
var rows = document.querySelectorAll(messageSelector);
412+
for (var i = 0; i < rows.length; i++){
413+
observeChatContainer(getChatContainerFromRow(rows[i]));
414+
}
415+
}
386416
console.log("social stream injected");
387417

388418
setInterval(function(){
389-
onElementInserted(".mixcloud-live-chat-container, .mixcloud-live-chat-chat-window");
419+
onElementInserted(chatContainerSelector);
420+
observeDiscoveredChatContainers();
390421
},1000);
391422

392423
})();

0 commit comments

Comments
 (0)