Skip to content

Commit

Permalink
remove deprecated follower methods & types
Browse files Browse the repository at this point in the history
  • Loading branch information
d-fischer committed Apr 30, 2023
1 parent a468916 commit 855721b
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 140 deletions.
115 changes: 4 additions & 111 deletions packages/api/src/endpoints/user/HelixUserApi.ts
Original file line number Diff line number Diff line change
@@ -1,40 +1,32 @@
import { Enumerable, mapNullable } from '@d-fischer/shared-utils';
import type { HelixPaginatedResponse, HelixPaginatedResponseWithTotal, HelixResponse } from '@twurple/api-call';
import type { HelixPaginatedResponse, HelixResponse } from '@twurple/api-call';
import { createBroadcasterQuery } from '@twurple/api-call';
import type { UserIdResolvable, UserNameResolvable } from '@twurple/common';
import { extractUserId, extractUserName, HellFreezesOverError, rtfm } from '@twurple/common';
import { createSingleKeyQuery } from '../../interfaces/endpoints/generic.external';
import {
createUserBlockCreateQuery,
createUserBlockDeleteQuery,
type HelixFollowData,
type HelixPrivilegedUserData,
type HelixUserBlockData,
type HelixUserData,
type UserLookupType
} from '../../interfaces/endpoints/user.external';
import {
type HelixFollowFilter,
type HelixPaginatedFollowFilter,
type HelixUserBlockAdditionalInfo,
type HelixUserUpdate
} from '../../interfaces/endpoints/user.input';
import { type HelixUserBlockAdditionalInfo, type HelixUserUpdate } from '../../interfaces/endpoints/user.input';
import {
type HelixInstalledExtensionListData,
type HelixUserExtensionData
} from '../../interfaces/endpoints/userExtension.external';
import { type HelixUserExtensionUpdatePayload } from '../../interfaces/endpoints/userExtension.input';
import { HelixRequestBatcher } from '../../utils/HelixRequestBatcher';
import { HelixPaginatedRequest } from '../../utils/pagination/HelixPaginatedRequest';
import { HelixPaginatedRequestWithTotal } from '../../utils/pagination/HelixPaginatedRequestWithTotal';
import type { HelixPaginatedResult, HelixPaginatedResultWithTotal } from '../../utils/pagination/HelixPaginatedResult';
import { createPaginatedResult, createPaginatedResultWithTotal } from '../../utils/pagination/HelixPaginatedResult';
import type { HelixPaginatedResult } from '../../utils/pagination/HelixPaginatedResult';
import { createPaginatedResult } from '../../utils/pagination/HelixPaginatedResult';
import type { HelixForwardPagination } from '../../utils/pagination/HelixPagination';
import { createPaginationQuery } from '../../utils/pagination/HelixPagination';
import { BaseApi } from '../BaseApi';
import { HelixInstalledExtensionList } from './Extensions/HelixInstalledExtensionList';
import { HelixUserExtension } from './Extensions/HelixUserExtension';
import { HelixFollow } from './HelixFollow';
import { HelixPrivilegedUser } from './HelixPrivilegedUser';
import { HelixUser } from './HelixUser';
import { HelixUserBlock } from './HelixUserBlock';
Expand Down Expand Up @@ -184,86 +176,6 @@ export class HelixUserApi extends BaseApi {
return new HelixPrivilegedUser(result.data[0], this._client);
}

/**
* Gets a list of follow relations.
*
* @deprecated Use {@link HelixChannelApi#getChannelFollowers}
* or {@link HelixChannelApi#getFollowedChannels} instead.
*
* @param filter
*
* @expandParams
*/
async getFollows(filter: HelixPaginatedFollowFilter): Promise<HelixPaginatedResultWithTotal<HelixFollow>> {
const query = HelixUserApi._makeFollowsQuery(filter);
const result = await this._client.callApi<HelixPaginatedResponseWithTotal<HelixFollowData>>({
type: 'helix',
url: 'users/follows',
userId: extractUserId(filter.followedUser ?? filter.user!),
query: {
...query,
...createPaginationQuery(filter)
}
});

return createPaginatedResultWithTotal(result, HelixFollow, this._client);
}

/**
* Creates a paginator for follow relations.
*
* @deprecated Use {@link HelixChannelApi#getChannelFollowersPaginated}
* or {@link HelixChannelApi#getFollowedChannelsPaginated} instead.
*
* @param filter
*
* @expandParams
*/
getFollowsPaginated(filter: HelixFollowFilter): HelixPaginatedRequestWithTotal<HelixFollowData, HelixFollow> {
const query = HelixUserApi._makeFollowsQuery(filter);

return new HelixPaginatedRequestWithTotal(
{
url: 'users/follows',
userId: extractUserId(filter.followedUser ?? filter.user!),
query
},
this._client,
data => new HelixFollow(data, this._client)
);
}

/**
* Gets the follow relation bewteen a given user and a given broadcaster.
*
* @deprecated Use {@link HelixChannelApi#getChannelFollowers}
* or {@link HelixChannelApi#getFollowedChannels} instead.
*
* @param user The user to get the follow relation for.
* @param broadcaster The broadcaster to get the follow relation for.
*/
async getFollowFromUserToBroadcaster(
user: UserIdResolvable,
broadcaster: UserIdResolvable
): Promise<HelixFollow | null> {
const { data: result } = await this.getFollows({ user, followedUser: broadcaster });

return result.length ? result[0] : null;
}

/**
* Checks whether the given user follows the given broadcaster.
*
* @deprecated Use {@link HelixChannelApi#getChannelFollowers}
* or {@link HelixChannelApi#getFollowedChannels} instead.
*
* @param user The user to check the follow for.
* @param broadcaster The broadcaster to check the follow for.
*/
async userFollowsBroadcaster(user: UserIdResolvable, broadcaster: UserIdResolvable): Promise<boolean> {
return (await this.getFollowFromUserToBroadcaster(user, broadcaster)) !== null;
}

/**
* Gets a list of users blocked by the given user.
*
Expand Down Expand Up @@ -413,25 +325,6 @@ export class HelixUserApi extends BaseApi {
return new HelixInstalledExtensionList(result.data);
}

private static _makeFollowsQuery(filter: HelixFollowFilter) {
const query: Record<string, string | undefined> = {};
let hasUserIdParam = false;
if (filter.user) {
query.from_id = extractUserId(filter.user);
hasUserIdParam = true;
}
if (filter.followedUser) {
query.to_id = extractUserId(filter.followedUser);
hasUserIdParam = true;
}

if (!hasUserIdParam) {
throw new TypeError('At least one of user and followedUser have to be set');
}

return query;
}

private async _getUsers(lookupType: UserLookupType, param: string[]) {
if (param.length === 0) {
return [];
Expand Down
7 changes: 1 addition & 6 deletions packages/api/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -186,12 +186,7 @@ export { HelixFollow } from './endpoints/user/HelixFollow';
export { HelixPrivilegedUser } from './endpoints/user/HelixPrivilegedUser';
export { HelixUser } from './endpoints/user/HelixUser';
export type { HelixBroadcasterType } from './interfaces/endpoints/user.external';
export type {
HelixPaginatedFollowFilter,
HelixFollowFilter,
HelixUserBlockAdditionalInfo,
HelixUserUpdate
} from './interfaces/endpoints/user.input';
export type { HelixUserBlockAdditionalInfo, HelixUserUpdate } from './interfaces/endpoints/user.input';

export { HelixBaseExtension } from './endpoints/user/Extensions/HelixBaseExtension';
export { HelixInstalledExtension } from './endpoints/user/Extensions/HelixInstalledExtension';
Expand Down
23 changes: 0 additions & 23 deletions packages/api/src/interfaces/endpoints/user.input.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
import { type UserIdResolvable } from '@twurple/common';
import { type HelixForwardPagination } from '../../utils/pagination/HelixPagination';

/**
* User data to update using {@link HelixUserApi#updateAuthenticatedUser}}.
*/
Expand All @@ -22,23 +19,3 @@ export interface HelixUserBlockAdditionalInfo {
*/
reason?: 'spam' | 'harassment' | 'other';
}

/**
* Filters for the follower request.
*/
export interface HelixFollowFilter {
/**
* The following user.
*/
user?: UserIdResolvable;

/**
* The followed user.
*/
followedUser?: UserIdResolvable;
}

/**
* @inheritDoc
*/
export interface HelixPaginatedFollowFilter extends HelixFollowFilter, HelixForwardPagination {}

0 comments on commit 855721b

Please sign in to comment.