import { COLLECTION_DEFAULT_PAGINATION_LIMIT } from '~/utils/constants';
import { PaginationController } from '~/core/liveCollection/PaginationController';
import { getCommunityByIds } from '~/communityRepository';

export class MyInvitationsPaginationController extends PaginationController<
  'myInvitation',
  Amity.MyInvitationsLiveCollection
> {
  async getRequest(queryParams: Amity.MyInvitationsLiveCollection, token: string | undefined) {
    const { limit = COLLECTION_DEFAULT_PAGINATION_LIMIT, ...params } = queryParams;
    const options = token ? { token } : { limit };

    const { data } = await this.http.get<Amity.MyInvitationsPayload & Amity.Pagination>(
      '/api/v1/invitations/me',
      { params: { ...params, options } },
    );

    await getCommunityByIds(data.invitations.map(invitation => invitation.communityId));

    return data;
  }
}
