MM-27251 Fetch team channels including archived since last known timestamp (#5328)
This commit is contained in:
parent
11b1cc8ad8
commit
4c725f157b
4 changed files with 13 additions and 12 deletions
|
|
@ -717,6 +717,7 @@ export function loadChannelsForTeam(teamId, skipDispatch = false) {
|
|||
return async (dispatch, getState) => {
|
||||
const state = getState();
|
||||
const currentUserId = getCurrentUserId(state);
|
||||
const lastConnectAt = state.websocket?.lastConnectAt || 0;
|
||||
const data = {
|
||||
sync: true,
|
||||
teamId,
|
||||
|
|
@ -724,13 +725,12 @@ export function loadChannelsForTeam(teamId, skipDispatch = false) {
|
|||
};
|
||||
|
||||
const actions = [];
|
||||
|
||||
if (currentUserId) {
|
||||
for (let i = 0; i <= MAX_RETRIES; i++) {
|
||||
try {
|
||||
console.log('Fetching channels attempt', teamId, (i + 1)); //eslint-disable-line no-console
|
||||
console.log('Fetching channels attempt', (i + 1), teamId, 'include deleted since', lastConnectAt); //eslint-disable-line no-console
|
||||
const [channels, channelMembers] = await Promise.all([ //eslint-disable-line no-await-in-loop
|
||||
Client4.getMyChannels(teamId, true),
|
||||
Client4.getMyChannels(teamId, true, lastConnectAt),
|
||||
Client4.getMyChannelMembers(teamId),
|
||||
]);
|
||||
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ const mockConfigRequest = (config = {}) => {
|
|||
|
||||
const mockChanelsRequest = (teamId, channels = []) => {
|
||||
nock(Client4.getUserRoute('me')).
|
||||
get(`/teams/${teamId}/channels?include_deleted=true`).
|
||||
get(`/teams/${teamId}/channels?include_deleted=true&last_delete_at=0`).
|
||||
reply(200, channels);
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ export interface ClientChannelsMix {
|
|||
getChannelByNameAndTeamName: (teamName: string, channelName: string, includeDeleted?: boolean) => Promise<Channel>;
|
||||
getChannels: (teamId: string, page?: number, perPage?: number) => Promise<Channel[]>;
|
||||
getArchivedChannels: (teamId: string, page?: number, perPage?: number) => Promise<Channel[]>;
|
||||
getMyChannels: (teamId: string, includeDeleted?: boolean) => Promise<Channel[]>;
|
||||
getMyChannels: (teamId: string, includeDeleted?: boolean, lastDeleteAt?: number) => Promise<Channel[]>;
|
||||
getMyChannelMember: (channelId: string) => Promise<ChannelMembership>;
|
||||
getMyChannelMembers: (teamId: string) => Promise<ChannelMembership[]>;
|
||||
getChannelMembers: (channelId: string, page?: number, perPage?: number) => Promise<ChannelMembership[]>;
|
||||
|
|
@ -186,9 +186,12 @@ const ClientChannels = (superclass: any) => class extends superclass {
|
|||
);
|
||||
};
|
||||
|
||||
getMyChannels = async (teamId: string, includeDeleted = false) => {
|
||||
getMyChannels = async (teamId: string, includeDeleted = false, lastDeleteAt = 0) => {
|
||||
return this.doFetch(
|
||||
`${this.getUserRoute('me')}/teams/${teamId}/channels${buildQueryString({include_deleted: includeDeleted})}`,
|
||||
`${this.getUserRoute('me')}/teams/${teamId}/channels${buildQueryString({
|
||||
include_deleted: includeDeleted,
|
||||
last_delete_at: lastDeleteAt,
|
||||
})}`,
|
||||
{method: 'get'},
|
||||
);
|
||||
};
|
||||
|
|
|
|||
|
|
@ -12,8 +12,7 @@ import {
|
|||
isManuallyUnread,
|
||||
} from '@mm-redux/selectors/entities/channels';
|
||||
import {getCurrentTeamId} from '@mm-redux/selectors/entities/teams';
|
||||
import {getConfig, getServerVersion} from '@mm-redux/selectors/entities/general';
|
||||
import {isMinimumServerVersion} from '@mm-redux/utils/helpers';
|
||||
import {getConfig} from '@mm-redux/selectors/entities/general';
|
||||
|
||||
import {Action, ActionFunc, batchActions, DispatchFunc, GetStateFunc} from '@mm-redux/types/actions';
|
||||
|
||||
|
|
@ -546,9 +545,9 @@ export function fetchMyChannelsAndMembers(teamId: string): ActionFunc {
|
|||
let channels;
|
||||
let channelMembers;
|
||||
const state = getState();
|
||||
const shouldFetchArchived = isMinimumServerVersion(getServerVersion(state), 5, 21);
|
||||
const lastConnectAt = state.websocket?.lastConnectAt || 0;
|
||||
try {
|
||||
const channelRequest = Client4.getMyChannels(teamId, shouldFetchArchived);
|
||||
const channelRequest = Client4.getMyChannels(teamId, true, lastConnectAt);
|
||||
const memberRequest = Client4.getMyChannelMembers(teamId);
|
||||
channels = await channelRequest;
|
||||
channelMembers = await memberRequest;
|
||||
|
|
@ -577,7 +576,6 @@ export function fetchMyChannelsAndMembers(teamId: string): ActionFunc {
|
|||
{
|
||||
type: ChannelTypes.RECEIVED_MY_CHANNEL_MEMBERS,
|
||||
data: channelMembers,
|
||||
sync: !shouldFetchArchived,
|
||||
channels,
|
||||
remove: getChannelsIdForTeam(state, teamId),
|
||||
currentUserId,
|
||||
|
|
|
|||
Loading…
Reference in a new issue