diff --git a/models/Repository.ts b/models/Repository.ts index 289eae4..54c98a4 100644 --- a/models/Repository.ts +++ b/models/Repository.ts @@ -1,4 +1,9 @@ -import { githubClient, RepositoryModel, UserModel } from 'mobx-github'; +import { + githubClient, + RepositoryFilter, + RepositoryModel, + UserModel, +} from 'mobx-github'; import { parseCookie } from 'mobx-i18n'; import { toggle } from 'mobx-restful'; @@ -41,6 +46,32 @@ export class GitRepositoryModel extends RepositoryModel { ); return body!; } + + async loadNewPage( + pageIndex: number, + pageSize: number, + filter: RepositoryFilter, + ) { + const { pageData, totalCount } = await this.loadPage( + pageIndex, + pageSize, + filter, + ); + this.pageSize = pageSize; + + const list = [...this.pageList]; + list[pageIndex - 1] = pageData; + this.pageList = list; + + this.totalCount = + totalCount != null + ? isNaN(totalCount) || totalCount < 0 + ? Infinity + : totalCount + : Infinity; + + return { pageData, totalCount }; + } } export const userStore = new UserModel();