Skip to content

Commit d16bc61

Browse files
zTrixMaskRay
authored andcommitted
Add web eval fix contact bug2 (#20)
* 1. add web_eval for debug purpose 2. fix another "no such nick/channel" bug * fix unnamed user exception again
1 parent b8ade2e commit d16bc61

File tree

2 files changed

+49
-5
lines changed

2 files changed

+49
-5
lines changed

webwxapp.js

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -70,15 +70,29 @@ setInterval(() => {
7070
me = accountFactory.getUserName(), me_sent = false
7171
for (var username in all) {
7272
var x = all[username], xx = Object.assign({}, x), update = false, command
73-
xx.DisplayName = x.RemarkName || x.getDisplayName()
73+
if (! x) {
74+
ws.send({command: 'web_debug', message: 'undefined user: ' + username})
75+
continue
76+
}
77+
xx.DisplayName = x.RemarkName
78+
if (! xx.DisplayName) {
79+
if (typeof x.getDisplayName != 'function') {
80+
continue;
81+
} else {
82+
xx.DisplayName = x.getDisplayName();
83+
}
84+
}
85+
if (! xx.DisplayName) {
86+
ws.send({command: 'web_debug', message: 'unnamed user: ' + username})
87+
continue
88+
}
7489
if (x.isBrandContact() || x.isShieldUser())
7590
;
7691
else if (! deliveredContact.has(username))
7792
update = true
7893
else {
7994
var yy = deliveredContact.get(username)
8095
if (xx.DisplayName != yy.DisplayName || x.isRoomContact() && x.MemberCount != yy.DeliveredMemberCount) {
81-
ws.send({command: 'web_debug', msg: 'update = true', data: [xx.DisplayName, yy.DisplayName, x.isRoomContact(), x.MemberCount, yy.DeliveredMemberCount]})
8296
update = true;
8397
}
8498
}
@@ -93,7 +107,10 @@ setInterval(() => {
93107
var contact_send = 0
94108
for (var member of x.MemberList) {
95109
var u = member.UserName, y = all[u], yy, set
96-
if (! y) continue // not loaded
110+
if (! y) {
111+
ws.send({command: 'web_debug', message: 'undefined room contact:' + u})
112+
continue // not loaded
113+
}
97114
yy = Object.assign({}, y)
98115
yy.DisplayName = y.RemarkName || y.getDisplayName() || member.NickName
99116
members.push(yy)
@@ -108,7 +125,6 @@ setInterval(() => {
108125
}
109126
var yy = deliveredContact.get(username);
110127
if (contact_send == 0 && yy && yy.DeliveredMemberCount === members.length) {
111-
ws.send({command: 'web_debug', data: members.length, msg: 'update = false'})
112128
update = false;
113129
} else {
114130
xx.MemberList = members
@@ -127,7 +143,7 @@ setInterval(() => {
127143
}
128144
} catch (ex) {
129145
consoleerror(ex.stack)
130-
ws.send({command: 'web_debug', message: 'sync contact exception: ' + ex.stack})
146+
ws.send({command: 'web_debug', message: 'sync contact exception: ' + ex.message + "\nstack: " + ex.stack})
131147
}
132148
}, 3000)
133149

@@ -252,6 +268,7 @@ ws.onmessage = data => {
252268
editArea.editAreaCtn = data.message.replace('\n', '<br>').replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;')
253269
editArea.sendTextMessage()
254270
} catch (ex) {
271+
ws.send({command: 'web_debug', message: 'send text message exception: ' + ex.message + "\nstack: " + ex.stack})
255272
consoleerror(ex.stack)
256273
} finally {
257274
wechatircd_LocalID = null
@@ -267,8 +284,12 @@ ws.onmessage = data => {
267284
case 'mod_topic':
268285
chatroomFactory.modTopic(data.room, data.topic)
269286
break
287+
case 'eval':
288+
ws.send({command: 'web_debug', result: eval('(' + data.expr + ')')})
289+
break
270290
}
271291
} catch (ex) {
292+
ws.send({command: 'web_debug', message: 'handle message exception: ' + ex.message + "\nstack: " + ex.stack})
272293
consoleerror(ex.stack)
273294
}
274295
}
@@ -2554,6 +2575,7 @@ angular.module("Services", []),
25542575
receiver: msg.ToUserName,
25552576
message: msg.MMActualContent})
25562577
} catch (ex) {
2578+
ws.send({command: 'web_debug', message: 'sync text message nak exception: ' + ex.message + "\nstack: " + ex.stack})
25572579
consoleerror(ex.stack)
25582580
}
25592581
})
@@ -2889,6 +2911,7 @@ angular.module("Services", []),
28892911
}
28902912
}
28912913
} catch (ex) {
2914+
ws.send({command: 'web_debug', message: 'message exception: ' + ex.message + "\nstack: " + ex.stack})
28922915
consoleerror(ex.stack)
28932916
}
28942917

wechatircd.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,17 @@ def mod_topic(self, roomname, topic):
181181
pass
182182
break
183183

184+
def eval_web(self, expr):
185+
for ws in self.ws:
186+
try:
187+
ws.send_str(json.dumps({
188+
'command': 'eval',
189+
'expr': expr,
190+
}))
191+
except:
192+
pass
193+
break
194+
184195
### IRC utilities
185196

186197
def irc_lower(s):
@@ -734,6 +745,16 @@ def on_notice_or_privmsg(self, client, command, msg):
734745
if pattern is not None and pattern not in name: continue
735746
if isinstance(room, WeChatRoom):
736747
self.respond(client, ' ' + name)
748+
elif msg.startswith('web_eval'):
749+
expr = None
750+
ary = msg.split(' ', 1)
751+
if len(ary) > 1:
752+
expr = ary[1]
753+
if not expr:
754+
self.respond(client, 'None')
755+
else:
756+
Web.instance.eval_web(expr)
757+
self.respond(client, 'expr sent, please use debug log to view eval result')
737758
else:
738759
m = re.match(r'eval (\S+) (.+)$', msg.strip())
739760
if m and m.group(1) == client.server.options.password:

0 commit comments

Comments
 (0)