UNPKG

kia-ml

Version:

Kia

66 lines (58 loc) 2.9 kB
import { flow, types } from "mobx-state-tree"; import { isEmptyString } from "../../utils/utils"; // import { GetQuestionsResult } from "../../services/api" import { withEnvironment } from "../extensions/with-environment"; import { KiaRequestModel } from "../kia-request/kia-request"; import { PaginationModel } from "../pagination/pagination"; import { RequestApi } from '../../services/api/request-api'; import { getRequestEndpoint } from "../../services/api/slugger"; export const KiaRequestStoreModel = types.model("KiaRequestStore").props({ requests: types.optional(types.array(KiaRequestModel), []), pagination: types.optional(PaginationModel, {}), // mode: types.optional(types.enumeration("mode" ["home", "explore", "bookmarks", "search"]), "home"), mode: types.optional(types.enumeration("mode", ["home", "explore", "bookmarks", "search"]), "home"), loading: types.optional(types.model({ blockedLoading: types.optional(types.boolean, false), paginatedLoading: types.optional(types.boolean, false) }), {}) }).extend(withEnvironment).views(_self => ({})) // eslint-disable-line @typescript-eslint/no-unused-vars .actions(self => ({ appendRequests(requests, firstRequest = false) { const requestModels = requests.map(c => KiaRequestModel.create(c)); console.log(requestModels); if (firstRequest) self.requests.replace(requestModels);else self.requests.push(...requestModels); console.log("added"); // self.requests.push(...r); console.log(self.requests); } })).actions(self => ({ updatePagination(pagination) { console.log("updating pagination"); self.pagination = PaginationModel.create(pagination); console.log(self.pagination); }, setMode(mode) { self.mode = mode; } })).actions(self => ({ // eslint-disable-next-line generator-star-spacing getRequests: flow(function* (firstRequest = false, searchParams) { firstRequest && self.requests.replace([]); if (!firstRequest && isEmptyString(self.pagination.nextPageUrl)) return; const api = new RequestApi(self.environment.api); const url = getRequestEndpoint(self.mode, self.environment.clientUserId || 0, firstRequest ? null : self.pagination.nextPageUrl, searchParams); if (isEmptyString(url)) return; self.loading.paginatedLoading = true; const result = yield api.getRequests(url, self.mode); if (result.kind === "ok") { console.log(result); console.log("adding to array"); self.appendRequests(result.requests, firstRequest); self.updatePagination(result.pagination); } else { console.log(result); } self.loading.blockedLoading = false; self.loading.paginatedLoading = false; }) })); // eslint-disable-line @typescript-eslint/no-unused-vars export const createKiaRequestStoreDefaultModel = () => types.optional(KiaRequestStoreModel, {}); //# sourceMappingURL=kia-request-store.js.map