Skip to content

Commit 48cffab

Browse files
authored
Merge pull request #1 from brocoders/fix-concat-groups
fix: concat groups
2 parents 25d8bc0 + 04aae2d commit 48cffab

12 files changed

+10664
-3
lines changed

.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
/__mock__/*
22
/node_modules
3-
/lib
43
/esm
54
/coverage
65
*.log

lib/constants.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
2+
/**
3+
* sendbird-helpers v0.1.34
4+
* SendBird helpers
5+
*/
6+
7+
'use strict';
8+
9+
Object.defineProperty(exports, '__esModule', { value: true });
10+
11+
/* */
12+
var DOCUMENT_CHAT_TYPE = 'document_p2p';
13+
var RECONNECTING = 'RECONNECTING';
14+
var CONNECTED = 'CONNECTED';
15+
var FAILED = 'FAILED';
16+
var CONNECTING = 'CONNECTING';
17+
var OPEN = 'OPEN';
18+
19+
exports.CONNECTED = CONNECTED;
20+
exports.CONNECTING = CONNECTING;
21+
exports.DOCUMENT_CHAT_TYPE = DOCUMENT_CHAT_TYPE;
22+
exports.FAILED = FAILED;
23+
exports.OPEN = OPEN;
24+
exports.RECONNECTING = RECONNECTING;

lib/constants.js.flow

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
// @flow
2+
3+
export * from '../src/constants.js'

lib/imAdapters.js

Lines changed: 235 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,235 @@
1+
2+
/**
3+
* sendbird-helpers v0.1.34
4+
* SendBird helpers
5+
*/
6+
7+
'use strict';
8+
9+
Object.defineProperty(exports, '__esModule', { value: true });
10+
11+
var immutable = require('immutable');
12+
13+
/* */
14+
function getParamsFromChannelName(channelName) {
15+
var params = channelName.split('#');
16+
var env = params[0];
17+
18+
if (env !== 'staging' && env !== 'development' && env !== 'production' && env !== 'local') {
19+
// $FlowFixMe
20+
return null;
21+
}
22+
23+
if (params.length === 5) {
24+
return {
25+
env: env,
26+
companyId: params[1],
27+
documentId: params[2],
28+
users: params.slice(-2).sort()
29+
};
30+
}
31+
32+
return {
33+
env: env,
34+
companyId: params[1],
35+
users: params.slice(-2).sort()
36+
};
37+
}
38+
function getParamsFromChannelNameWithEnv(buildEnv, channelName) {
39+
if (channelName.startsWith(buildEnv)) {
40+
return getParamsFromChannelName(channelName);
41+
}
42+
43+
return null;
44+
}
45+
function getThreadFromChannelFactory(buildEnv) {
46+
return function getThreadFromChannel(channel, documentChannelAdapter, generalChannelAdapter, n) {
47+
var params = getParamsFromChannelNameWithEnv(buildEnv, channel.name);
48+
49+
if (params) {
50+
if (params.documentId) {
51+
return documentChannelAdapter(channel, params);
52+
} // $FlowFixMe is real GeneralChannelParamsType
53+
54+
55+
return generalChannelAdapter(channel, params);
56+
}
57+
58+
return n(channel, params);
59+
};
60+
}
61+
62+
/* */
63+
var SenderFactory = new immutable.Record({
64+
userId: '',
65+
nickname: '',
66+
profileUrl: ''
67+
});
68+
69+
function senderAdapter(_ref) {
70+
var userId = _ref.userId,
71+
nickname = _ref.nickname,
72+
profileUrl = _ref.profileUrl;
73+
return SenderFactory({
74+
userId: userId,
75+
nickname: nickname,
76+
profileUrl: profileUrl
77+
});
78+
}
79+
80+
function membersAdapter(members) {
81+
return members.reduce(function (a, v) {
82+
return a.push(senderAdapter(v));
83+
}, new immutable.List());
84+
}
85+
86+
var MessageFactory = new immutable.Record({
87+
messageId: null,
88+
message: '',
89+
createdAt: null,
90+
updatedAt: null,
91+
sender: SenderFactory(),
92+
data: ''
93+
});
94+
95+
function messageAdapter(userMessage) {
96+
/* $FlowFixMe FileMessage | AdminMessage is not implemented */
97+
var messageId = userMessage.messageId,
98+
message = userMessage.message,
99+
createdAt = userMessage.createdAt,
100+
updatedAt = userMessage.updatedAt,
101+
data = userMessage.data,
102+
sender = userMessage.sender;
103+
return MessageFactory({
104+
messageId: messageId,
105+
message: message,
106+
createdAt: createdAt,
107+
updatedAt: updatedAt,
108+
data: data,
109+
sender: senderAdapter(sender)
110+
});
111+
}
112+
113+
function messagesListAdapter(userMessages) {
114+
return userMessages.reduce(function (a, v) {
115+
return a.add(messageAdapter(v));
116+
}, new immutable.Set());
117+
}
118+
119+
var documentThreadFactory = new immutable.Record({
120+
url: '',
121+
companyId: '',
122+
documentId: '',
123+
members: new immutable.List(),
124+
name: '',
125+
unreadMessageCount: 0,
126+
messages: new immutable.Set()
127+
});
128+
function documentThreadAdapter(channel, messages, params) {
129+
var url = channel.url,
130+
name = channel.name,
131+
unreadMessageCount = channel.unreadMessageCount,
132+
members = channel.members;
133+
var companyId = params.companyId,
134+
documentId = params.documentId;
135+
var membersList = membersAdapter(members);
136+
var messagesList = messagesListAdapter(messages);
137+
return documentThreadFactory({
138+
url: url,
139+
companyId: companyId,
140+
documentId: documentId,
141+
members: membersList,
142+
name: name,
143+
unreadMessageCount: unreadMessageCount,
144+
messages: messagesList
145+
});
146+
}
147+
var generalThreadFactory = new immutable.Record({
148+
url: '',
149+
companyId: '',
150+
members: new immutable.List(),
151+
name: '',
152+
unreadMessageCount: 0,
153+
messages: new immutable.Set()
154+
});
155+
function generalThreadAdapter(channel, messages, _ref2) {
156+
var companyId = _ref2.companyId;
157+
var url = channel.url,
158+
name = channel.name,
159+
unreadMessageCount = channel.unreadMessageCount,
160+
members = channel.members;
161+
var membersList = membersAdapter(members);
162+
var messagesList = messagesListAdapter(messages);
163+
return generalThreadFactory({
164+
url: url,
165+
companyId: companyId,
166+
members: membersList,
167+
name: name,
168+
unreadMessageCount: unreadMessageCount,
169+
messages: messagesList
170+
});
171+
}
172+
173+
function dth(a, channel, message, params) {
174+
var thread = documentThreadAdapter(channel, [message], params);
175+
return a.set(thread.name, thread);
176+
}
177+
178+
function gth(a, channel, message, params) {
179+
var thread = generalThreadAdapter(channel, [message], params);
180+
return a.set(thread.name, thread);
181+
}
182+
183+
function channelsFactory(env) {
184+
var getThreadFromChannel = getThreadFromChannelFactory(env);
185+
return function (a, channel) {
186+
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+
});
194+
};
195+
}
196+
197+
function messageReceiveFactory(env) {
198+
var getThreadFromChannel = getThreadFromChannelFactory(env);
199+
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+
});
207+
};
208+
}
209+
function channelsToThreads(env, channels) {
210+
return channels.reduce(channelsFactory(env), new immutable.Map());
211+
}
212+
213+
/* */
214+
var chatStateFactory = new immutable.Record({
215+
threads: new immutable.Map()
216+
});
217+
218+
function messagesMerge(oldValue, newValue, key) {
219+
if (key === 'messages') return oldValue.concat(newValue);
220+
return newValue;
221+
}
222+
223+
function receiveMessageMergeTpState(state, thread) {
224+
return state.updateIn(['threads', thread.name], // $FlowFixMe
225+
function (u) {
226+
return u ? u.mergeWith(messagesMerge, thread) : thread;
227+
});
228+
}
229+
230+
exports.channelsToThreads = channelsToThreads;
231+
exports.chatStateFactory = chatStateFactory;
232+
exports.documentThreadAdapter = documentThreadAdapter;
233+
exports.generalThreadAdapter = generalThreadAdapter;
234+
exports.messageReceiveFactory = messageReceiveFactory;
235+
exports.receiveMessageMergeTpState = receiveMessageMergeTpState;

lib/imAdapters.js.flow

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
// @flow
2+
3+
export * from '../src/im/index.js'

0 commit comments

Comments
 (0)