kia-ml
Version:
Kia
66 lines (58 loc) • 2.9 kB
JavaScript
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