Files

76 lines
2.2 KiB
TypeScript

import { action, observable, runInAction } from 'mobx';
import BackendUtils from '../utils/BackendUtils';
import { errorToUserFriendly } from '../utils/ErrorUtils';
export default class OffersStore {
@observable public offers: Array<any> = [];
@observable public loading: boolean = false;
@observable public error: boolean = false;
@observable public error_msg: string;
@action
public listOffers = async () => {
this.loading = true;
this.error = false;
await BackendUtils.listOffers()
.then((data: any) => {
runInAction(() => {
this.offers = data.offers;
this.loading = false;
});
})
.catch(() => {
runInAction(() => {
this.offers = [];
this.error = true;
this.loading = false;
});
});
};
@action
public disableOffer = async (offer_id: string) => {
this.loading = true;
this.error = false;
this.error_msg = '';
return await BackendUtils.disableOffer({ offer_id })
.then((data: any) => {
this.loading = false;
return data;
})
.catch((e: any) => {
const errorMsg = errorToUserFriendly(e);
runInAction(() => {
this.error = true;
this.error_msg = errorMsg;
this.loading = false;
});
});
};
@action
public createOffer = async (data: any) => {
this.loading = true;
this.error = false;
this.error_msg = '';
return await BackendUtils.createOffer(data)
.then((data: any) => {
this.loading = false;
return data;
})
.catch((e: any) => {
console.error('OffersStore.createOffer error:', e);
const errorMsg = errorToUserFriendly(e);
runInAction(() => {
this.error = true;
this.error_msg = errorMsg;
this.loading = false;
});
});
};
}