mirror of
https://github.com/zulip/zulip.git
synced 2025-11-06 15:03:34 +00:00
refactor: Simplify get_invite_stream_data().
This code is a bit simpler.
The previous code was concatenating two lists
and then removing duplicates by calling filter().
Now we just have two loops that append to a single
list, and the second loop detects duplicates
before inserting into the list.
We also now use `default_stream_ids` instead of
`page_params` data, which is convenient for two
reasons:
- working with sets of ids is convenient
- we don't need to maintain `page_params`
data any more
This commit is contained in:
@@ -333,26 +333,30 @@ exports.subscribed_streams = function () {
|
||||
};
|
||||
|
||||
exports.get_invite_stream_data = function () {
|
||||
const filter_stream_data = function (sub) {
|
||||
function get_data(sub) {
|
||||
return {
|
||||
name: sub.name,
|
||||
stream_id: sub.stream_id,
|
||||
invite_only: sub.invite_only,
|
||||
default_stream: default_stream_ids.has(sub.stream_id),
|
||||
};
|
||||
};
|
||||
const invite_stream_data = exports.subscribed_subs().map(filter_stream_data);
|
||||
const default_stream_data = page_params.realm_default_streams.map(filter_stream_data);
|
||||
}
|
||||
|
||||
// Since, union doesn't work on array of objects we are using filter
|
||||
const is_included = new Set();
|
||||
const streams = default_stream_data.concat(invite_stream_data).filter(sub => {
|
||||
if (is_included.has(sub.name)) {
|
||||
return false;
|
||||
const streams = [];
|
||||
|
||||
// Invite users to all default streams...
|
||||
for (const stream_id of default_stream_ids) {
|
||||
const sub = subs_by_stream_id.get(stream_id);
|
||||
streams.push(get_data(sub));
|
||||
}
|
||||
|
||||
// ...plus all your subscribed streams (avoiding repeats).
|
||||
for (const sub of exports.subscribed_subs()) {
|
||||
if (!default_stream_ids.has(sub.stream_id)) {
|
||||
streams.push(get_data(sub));
|
||||
}
|
||||
is_included.add(sub.name);
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
return streams;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user