コンテンツにスキップ

ApplicationPager

ApplicationPager は、Client.getCommunitiesUsingApplication() のカーソルページネーションをラップするヘルパーです。ページ単位の非同期ジェネレーター iteratePages() と、全件を一括取得する fetchAll() の 2 つの API を提供します。

追加インストールは不要です。mixi2-js に同梱されています。

// ESM
import { ApplicationPager } from 'mixi2-js/helpers';
// CJS
const { ApplicationPager } = require('mixi2-js/helpers');
import { Client } from 'mixi2-js';
import { ApplicationPager } from 'mixi2-js/helpers';

アプリがインストールされているすべてのコミュニティを取得します。

const pager = new ApplicationPager(client);
const { communitiesUsingApplication, applicationVersions } = await pager.fetchAll();
for (const { community, applicationVersionId } of communitiesUsingApplication) {
console.log(community?.name, 'version:', applicationVersionId);
}

大量のコミュニティを扱う場合や、逐次処理したい場合は iteratePages() を使います。

const pager = new ApplicationPager(client);
for await (const page of pager.iteratePages()) {
console.log(`このページのコミュニティ数: ${page.communitiesUsingApplication.length}`);
for (const { community } of page.communitiesUsingApplication) {
if (community) {
console.log(community.name);
}
}
}
// 最初の 2 ページ分だけ取得
for await (const page of pager.iteratePages(undefined, { maxPages: 2 })) {
console.log(page.communitiesUsingApplication.length);
}

getCommunitiesUsingApplication は各コミュニティが使用しているバージョン情報も返します。

const { communitiesUsingApplication, applicationVersions } = await pager.fetchAll();
// バージョン ID → ApplicationVersion のマップを構築
const versionMap = new Map(
applicationVersions.map((v) => [v.applicationVersionId, v])
);
for (const { community, applicationVersionId } of communitiesUsingApplication) {
const version = versionMap.get(applicationVersionId);
console.log(community?.name, 'requirements:', version?.requirements);
}
new ApplicationPager(client: Client)
引数説明
clientClientAPI クライアント
fetchAll(request?: GetCommunitiesUsingApplicationRequest): Promise<ApplicationPagerPage>

全ページを取得してマージした結果を返します。

戻り値: ApplicationPagerPage

フィールド説明
communitiesUsingApplicationCommunityUsingApplication[]インストール済みコミュニティ一覧
applicationVersionsApplicationVersion[]アプリケーションバージョン一覧
iteratePages(
request?: GetCommunitiesUsingApplicationRequest,
options?: ApplicationPagerOptions
): AsyncGenerator<ApplicationPagerPage>

ページ単位で結果を yield する非同期ジェネレーターを返します。

ApplicationPagerOptions

フィールドデフォルト説明
maxPagesnumber無制限取得する最大ページ数