Skip to content

Commit b243a95

Browse files
committed
fix: Cannot read properties of null issue
1 parent bf65596 commit b243a95

File tree

1 file changed

+68
-48
lines changed

1 file changed

+68
-48
lines changed

lib/imAdapters.js

Lines changed: 68 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
/**
32
* sendbird-utils v0.0.3
43
* SendBird utils
@@ -15,7 +14,12 @@ function getParamsFromChannelName(channelName) {
1514
var params = channelName.split('#');
1615
var env = params[0];
1716

18-
if (env !== 'staging' && env !== 'development' && env !== 'production' && env !== 'local') {
17+
if (
18+
env !== 'staging' &&
19+
env !== 'development' &&
20+
env !== 'production' &&
21+
env !== 'local'
22+
) {
1923
// $FlowFixMe
2024
return null;
2125
}
@@ -25,14 +29,14 @@ function getParamsFromChannelName(channelName) {
2529
env: env,
2630
companyId: params[1],
2731
documentId: params[2],
28-
users: params.slice(-2).sort()
32+
users: params.slice(-2).sort(),
2933
};
3034
}
3135

3236
return {
3337
env: env,
3438
companyId: params[1],
35-
users: params.slice(-2).sort()
39+
users: params.slice(-2).sort(),
3640
};
3741
}
3842
function getParamsFromChannelNameWithEnv(buildEnv, channelName) {
@@ -43,15 +47,19 @@ function getParamsFromChannelNameWithEnv(buildEnv, channelName) {
4347
return null;
4448
}
4549
function getThreadFromChannelFactory(buildEnv) {
46-
return function getThreadFromChannel(channel, documentChannelAdapter, generalChannelAdapter, n) {
50+
return function getThreadFromChannel(
51+
channel,
52+
documentChannelAdapter,
53+
generalChannelAdapter,
54+
n
55+
) {
4756
var params = getParamsFromChannelNameWithEnv(buildEnv, channel.name);
4857

4958
if (params) {
5059
if (params.documentId) {
5160
return documentChannelAdapter(channel, params);
5261
} // $FlowFixMe is real GeneralChannelParamsType
5362

54-
5563
return generalChannelAdapter(channel, params);
5664
}
5765

@@ -63,17 +71,17 @@ function getThreadFromChannelFactory(buildEnv) {
6371
var SenderFactory = new immutable.Record({
6472
userId: '',
6573
nickname: '',
66-
profileUrl: ''
74+
profileUrl: '',
6775
});
6876

6977
function senderAdapter(_ref) {
7078
var userId = _ref.userId,
71-
nickname = _ref.nickname,
72-
profileUrl = _ref.profileUrl;
79+
nickname = _ref.nickname,
80+
profileUrl = _ref.profileUrl;
7381
return SenderFactory({
7482
userId: userId,
7583
nickname: nickname,
76-
profileUrl: profileUrl
84+
profileUrl: profileUrl,
7785
});
7886
}
7987

@@ -89,30 +97,30 @@ var MessageFactory = new immutable.Record({
8997
createdAt: null,
9098
updatedAt: null,
9199
sender: SenderFactory(),
92-
data: ''
100+
data: '',
93101
});
94102

95103
function messageAdapter(userMessage) {
96104
/* $FlowFixMe FileMessage | AdminMessage is not implemented */
97105
var messageId = userMessage.messageId,
98-
message = userMessage.message,
99-
createdAt = userMessage.createdAt,
100-
updatedAt = userMessage.updatedAt,
101-
data = userMessage.data,
102-
sender = userMessage.sender;
106+
message = userMessage.message,
107+
createdAt = userMessage.createdAt,
108+
updatedAt = userMessage.updatedAt,
109+
data = userMessage.data,
110+
sender = userMessage.sender;
103111
return MessageFactory({
104112
messageId: messageId,
105113
message: message,
106114
createdAt: createdAt,
107115
updatedAt: updatedAt,
108116
data: data,
109-
sender: senderAdapter(sender)
117+
sender: senderAdapter(sender),
110118
});
111119
}
112120

113121
function messagesListAdapter(userMessages) {
114122
return userMessages.reduce(function (a, v) {
115-
return a.add(messageAdapter(v));
123+
return v ? a.add(messageAdapter(v)) : a;
116124
}, new immutable.Set());
117125
}
118126

@@ -123,15 +131,15 @@ var documentThreadFactory = new immutable.Record({
123131
members: new immutable.List(),
124132
name: '',
125133
unreadMessageCount: 0,
126-
messages: new immutable.Set()
134+
messages: new immutable.Set(),
127135
});
128136
function documentThreadAdapter(channel, messages, params) {
129137
var url = channel.url,
130-
name = channel.name,
131-
unreadMessageCount = channel.unreadMessageCount,
132-
members = channel.members;
138+
name = channel.name,
139+
unreadMessageCount = channel.unreadMessageCount,
140+
members = channel.members;
133141
var companyId = params.companyId,
134-
documentId = params.documentId;
142+
documentId = params.documentId;
135143
var membersList = membersAdapter(members);
136144
var messagesList = messagesListAdapter(messages);
137145
return documentThreadFactory({
@@ -141,7 +149,7 @@ function documentThreadAdapter(channel, messages, params) {
141149
members: membersList,
142150
name: name,
143151
unreadMessageCount: unreadMessageCount,
144-
messages: messagesList
152+
messages: messagesList,
145153
});
146154
}
147155
var generalThreadFactory = new immutable.Record({
@@ -150,14 +158,14 @@ var generalThreadFactory = new immutable.Record({
150158
members: new immutable.List(),
151159
name: '',
152160
unreadMessageCount: 0,
153-
messages: new immutable.Set()
161+
messages: new immutable.Set(),
154162
});
155163
function generalThreadAdapter(channel, messages, _ref2) {
156164
var companyId = _ref2.companyId;
157165
var url = channel.url,
158-
name = channel.name,
159-
unreadMessageCount = channel.unreadMessageCount,
160-
members = channel.members;
166+
name = channel.name,
167+
unreadMessageCount = channel.unreadMessageCount,
168+
members = channel.members;
161169
var membersList = membersAdapter(members);
162170
var messagesList = messagesListAdapter(messages);
163171
return generalThreadFactory({
@@ -166,7 +174,7 @@ function generalThreadAdapter(channel, messages, _ref2) {
166174
members: membersList,
167175
name: name,
168176
unreadMessageCount: unreadMessageCount,
169-
messages: messagesList
177+
messages: messagesList,
170178
});
171179
}
172180

@@ -184,26 +192,36 @@ function channelsFactory(env) {
184192
var getThreadFromChannel = getThreadFromChannelFactory(env);
185193
return function (a, channel) {
186194
var lastMessage = channel.lastMessage;
187-
return getThreadFromChannel(channel, function (_, params) {
188-
return dth(a, channel, lastMessage, params);
189-
}, function (_, params) {
190-
return gth(a, channel, lastMessage, params);
191-
}, function () {
192-
return a;
193-
});
195+
return getThreadFromChannel(
196+
channel,
197+
function (_, params) {
198+
return dth(a, channel, lastMessage, params);
199+
},
200+
function (_, params) {
201+
return gth(a, channel, lastMessage, params);
202+
},
203+
function () {
204+
return a;
205+
}
206+
);
194207
};
195208
}
196209

197210
function messageReceiveFactory(env) {
198211
var getThreadFromChannel = getThreadFromChannelFactory(env);
199212
return function (channel, messages) {
200-
return getThreadFromChannel(channel, function (_, params) {
201-
return documentThreadAdapter(channel, messages, params);
202-
}, function (_, params) {
203-
return generalThreadAdapter(channel, messages, params);
204-
}, function () {
205-
return null;
206-
});
213+
return getThreadFromChannel(
214+
channel,
215+
function (_, params) {
216+
return documentThreadAdapter(channel, messages, params);
217+
},
218+
function (_, params) {
219+
return generalThreadAdapter(channel, messages, params);
220+
},
221+
function () {
222+
return null;
223+
}
224+
);
207225
};
208226
}
209227
function channelsToThreads(env, channels) {
@@ -212,7 +230,7 @@ function channelsToThreads(env, channels) {
212230

213231
/* */
214232
var chatStateFactory = new immutable.Record({
215-
threads: new immutable.Map()
233+
threads: new immutable.Map(),
216234
});
217235

218236
function messagesMerge(oldValue, newValue, key) {
@@ -221,10 +239,12 @@ function messagesMerge(oldValue, newValue, key) {
221239
}
222240

223241
function receiveMessageMergeTpState(state, thread) {
224-
return state.updateIn(['threads', thread.name], // $FlowFixMe
225-
function (u) {
226-
return u ? u.mergeWith(messagesMerge, thread) : thread;
227-
});
242+
return state.updateIn(
243+
['threads', thread.name], // $FlowFixMe
244+
function (u) {
245+
return u ? u.mergeWith(messagesMerge, thread) : thread;
246+
}
247+
);
228248
}
229249

230250
exports.channelsToThreads = channelsToThreads;

0 commit comments

Comments
 (0)