Skip to content

Commit d18c381

Browse files
steveseguinactions-user
authored andcommitted
fix(patreon): Enhance chat message parsing and display
This commit refines the Patreon chat integration to improve message processing and presentation within the Social Stream Ninja extension. - **Improved Message Content Extraction:** Robustly captures user names, avatar images, and now explicitly supports user-posted images within chat messages. - **Group Consecutive Messages:** Implements logic to reuse user `chatname` and `chatimg` for consecutive messages from the same user, providing a cleaner chat feed. - **Prevent Out-of-Order Processing:** Utilizes `mxchat` and message IDs to ensure messages are processed chronologically and to prevent duplicates or older messages from re-appearing. - **Version Bump:** Incremented extension version from `3.33.0` to `3.33.1` in `manifest.json` to reflect these updates. - Continues work on stabilizing the Patreon integration, building upon previous fixes for sign-in and configuration. [auto-enhanced]
1 parent fbdec37 commit d18c381

2 files changed

Lines changed: 45 additions & 20 deletions

File tree

manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "Social Stream Ninja",
33
"description": "Powerful tooling to engage live chat on Youtube, Twitch, Zoom, and more.",
44
"manifest_version": 3,
5-
"version": "3.33.0",
5+
"version": "3.33.1",
66
"homepage_url": "http://socialstream.ninja/",
77
"icons": {
88
"128": "icons/icon-128.png"

sources/patreon.js

Lines changed: 44 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,9 @@
7373
var channelName = "";
7474
var messageHistory = [];
7575

76+
var lastMg = {};
77+
var mxchat = 0;
78+
7679
function processMessage(ele){
7780
//console.log(ele);
7881
if (!ele || !ele.isConnected){return;}
@@ -92,7 +95,7 @@
9295

9396
var id = false
9497
if (ele.dataset){
95-
id = ele.dataset?.index ;
98+
id = ele.dataset?.index;
9699
}
97100

98101
if (id!==false){
@@ -108,20 +111,11 @@
108111

109112
var chatimg = ""
110113
try {
111-
name = escapeHtml(ele.querySelector("picture img[src]").src);
114+
chatimg = escapeHtml(ele.querySelector("picture img[src]").src);
112115
} catch(e){
113116
//console.error(e);
114117
}
115-
var name="";
116-
try {
117-
name = escapeHtml(ele.querySelector("strong").textContent);
118-
} catch(e){
119-
//console.error(e);
120-
}
121-
122-
var namecolor="";
123118

124-
var badges=[];
125119
var msg="";
126120
try {
127121
msg = getAllContentNodes(ele.querySelector('[data-tag="chat-message-text-content"]')).trim()
@@ -131,29 +125,60 @@
131125
}
132126

133127

128+
var name="";
129+
130+
while (!name && ele){
131+
try {
132+
name = escapeHtml(ele.querySelector("strong").textContent);
133+
} catch(e){
134+
//console.error(e);
135+
}
136+
if (name){break;}
137+
if (!ele.previousSibling){break;}
138+
ele = ele.previousSibling;
139+
}
140+
141+
142+
143+
var badges=[];
144+
134145
var contentImg = "";
135146

147+
try {
148+
contentImg = escapeHtml(ele.querySelector("picture img[src][alt='User posted image']").src);
149+
} catch(e){}
136150

137-
if (!name || !msg){
138-
//console.error("SIP");
151+
if (!(msg || contentImg)){
152+
console.error("SIP");
139153
return;
140154
}
141155

142156

143157
var data = {};
144-
data.chatname = name;
158+
data.chatname = name || lastMg.chatname;
145159
data.chatbadges = badges;
146-
data.backgroundColor = "";
147-
data.textColor = "";
148-
data.nameColor = namecolor;
149160
data.chatmessage = msg;
150-
data.chatimg = chatimg;
161+
if (!name && lastMg.chatname){
162+
data.chatimg = chatimg || lastMg.chatimg;
163+
} else {
164+
data.chatimg = chatimg;
165+
}
151166
data.hasDonation = "";
152167
data.membership = "";
153-
data.contentimg = "";
168+
data.contentimg = contentImg;
154169
data.textonly = settings.textonlymode || false;
155170
data.type = "patreon";
156171

172+
lastMg = data;
173+
174+
if (id!==false){
175+
if (parseInt(id)<mxchat){
176+
return;
177+
} else {
178+
mxchat = parseInt(id);
179+
}
180+
}
181+
157182

158183
pushMessage(data);
159184
}

0 commit comments

Comments
 (0)