diff --git a/share_extension/ios/extension_channels.js b/share_extension/ios/extension_channels.js index 13ad5fb94..fcd1e911c 100644 --- a/share_extension/ios/extension_channels.js +++ b/share_extension/ios/extension_channels.js @@ -119,28 +119,51 @@ export default class ExtensionChannels extends PureComponent { const {currentUserId, teamId} = this.props; const channelsMap = {}; + // get the channels for the specified team const myChannels = await Client4.getMyChannels(teamId); - const myPreferences = await Client4.getMyPreferences(); - const usersInDms = myPreferences.filter((pref) => pref.category === Preferences.CATEGORY_DIRECT_CHANNEL_SHOW).map((pref) => pref.name); + // filter channels that are direct and group messages const dms = myChannels.filter((channel) => { - const teammateId = getUserIdFromChannelName(currentUserId, channel.name); - return (channel.type === General.DM_CHANNEL && usersInDms.includes(teammateId)) || channel.type === General.GM_CHANNEL; + return channel.type === General.DM_CHANNEL || channel.type === General.GM_CHANNEL; }); - const dmProfiles = await Client4.getProfilesByIds(usersInDms); + const usersInDms = dms.filter((channel) => { + return channel.type === General.DM_CHANNEL; + }).map((channel) => { + return getUserIdFromChannelName(currentUserId, channel.name); + }).reduce((acc, teammateId) => { + if (!acc.includes(teammateId)) { + acc.push(teammateId); + } + + return acc; + }, []); + + // get the user ids that belong to DMs & GMs + let dmProfiles; + if (usersInDms.length) { + try { + dmProfiles = await Client4.getProfilesByIds(usersInDms); + } catch (e) { + // do nothing + } + } for (let i = 0; i < dms.length; i++) { const channel = dms[i]; - if (channel.type === General.DM_CHANNEL) { + if (channel.type === General.DM_CHANNEL && dmProfiles) { const teammateId = getUserIdFromChannelName(currentUserId, channel.name); const profile = dmProfiles.find((p) => p.id === teammateId); channelsMap[channel.id] = displayUsername(profile, Preferences.DISPLAY_PREFER_FULL_NAME); } else if (channel.type === General.GM_CHANNEL) { - const members = await Client4.getChannelMembers(channel.id, 0, General.MAX_USERS_IN_GM); - const userIds = members.filter((m) => m.user_id !== currentUserId).map((m) => m.user_id); - const gmProfiles = await Client4.getProfilesByIds(userIds); - channelsMap[channel.id] = this.getGroupDisplayNameFromUserIds(userIds, gmProfiles); + try { + const members = await Client4.getChannelMembers(channel.id, 0, General.MAX_USERS_IN_GM); + const userIds = members.filter((m) => m.user_id !== currentUserId).map((m) => m.user_id); + const gmProfiles = await Client4.getProfilesByIds(userIds); + channelsMap[channel.id] = this.getGroupDisplayNameFromUserIds(userIds, gmProfiles); + } catch (e) { + // do nothing + } } } diff --git a/share_extension/ios/extension_post.js b/share_extension/ios/extension_post.js index 2ce26f2b0..dc45bc000 100644 --- a/share_extension/ios/extension_post.js +++ b/share_extension/ios/extension_post.js @@ -220,6 +220,7 @@ export default class ExtensionPost extends PureComponent { Client4.setUrl(credentials.url); Client4.setToken(credentials.token); + Client4.setUserId(currentUserId); this.setState({channel, currentUserId, files, team, value}); } catch (error) { this.setState({error}); diff --git a/share_extension/ios/extension_teams.js b/share_extension/ios/extension_teams.js index c9c841b25..0a1479d4b 100644 --- a/share_extension/ios/extension_teams.js +++ b/share_extension/ios/extension_teams.js @@ -57,14 +57,15 @@ export default class ExtensionTeams extends PureComponent { const myMembers = await Client4.getMyTeamMembers(); const myTeams = []; - teams.forEach(async (team) => { + for (let i = 0; i < teams.length; i++) { + const team = teams[i]; const belong = myMembers.find((member) => member.team_id === team.id); if (belong) { const channels = await Client4.getMyChannels(team.id); defaultChannels[team.id] = channels.find((channel) => channel.name === General.DEFAULT_CHANNEL); myTeams.push(team); } - }); + } this.setState({ defaultChannels,