@fleetbase/storefront-engine
Version:
Headless Commerce & Marketplace Extension for Fleetbase
86 lines (73 loc) • 2.34 kB
JavaScript
import Component from '@glimmer/component';
import { tracked } from '@glimmer/tracking';
import { inject as service } from '@ember/service';
import { action, get } from '@ember/object';
import { debug } from '@ember/debug';
import { task } from 'ember-concurrency';
export default class CustomerPanelOrdersComponent extends Component {
store;
storefront;
fetch;
intl;
appCache;
modalsManager;
contextPanel;
orderActions;
loaded = false;
orders = [];
customer;
constructor(owner, { customer }) {
super(...arguments);
this.customer = customer;
this.loadOrders.perform();
}
search(event) {
this.loadOrders.perform({ query: event.target.value ?? '' });
}
*loadOrders(params = {}) {
const storefront = get(this.storefront, 'activeStore.public_id');
const queryParams = {
storefront,
limit: 14,
sort: '-created_at',
customer_uuid: this.customer?.id,
...params,
};
try {
const orders = yield this.fetch.get('orders', queryParams, { namespace: 'storefront/int/v1', normalizeToEmberData: true });
this.loaded = true;
this.orders = orders;
return orders;
} catch (err) {
debug('Error loading orders for widget:', err);
}
}
async viewOrder(order) {
this.contextPanel.focus(order, 'viewing');
}
async acceptOrder(order) {
await this.orderActions.acceptOrder(order, () => {
this.loadOrders.perform();
});
}
markAsReady(order) {
this.orderActions.markAsReady(order, () => {
this.loadOrders.perform();
});
}
markAsCompleted(order) {
this.orderActions.markAsCompleted(order, () => {
this.loadOrders.perform();
});
}
assignDriver(order) {
this.orderActions.assignDriver(order, () => {
this.loadOrders.perform();
});
}
cancelOrder(order) {
this.orderActions.cancelOrder(order, () => {
this.loadOrders.perform();
});
}
}