Skip to content

Commit

Permalink
refactor(com/order-list): with new api
Browse files Browse the repository at this point in the history
  • Loading branch information
AliMD committed Mar 19, 2023
1 parent 9129aad commit d07327b
Show file tree
Hide file tree
Showing 5 changed files with 124 additions and 166 deletions.
7 changes: 2 additions & 5 deletions uniquely/com-pwa/src/manager/context-provider/user.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
import {contextProvider} from '@alwatr/signal';
import {contextProvider} from '@alwatr/context';
import {User} from '@alwatr/type';
import {getLocalStorageItem} from '@alwatr/util';

const userContextProvider = contextProvider.bind<User>('user-context');

// demo
userContextProvider.setValue(getLocalStorageItem(userContextProvider.id, {
contextProvider.setValue<User>('user_context', getLocalStorageItem('user_context', {
id: 'demo-123',
fullName: 'Demo User',
}));
178 changes: 89 additions & 89 deletions uniquely/com-pwa/src/manager/controller/order-list.ts
Original file line number Diff line number Diff line change
@@ -1,96 +1,96 @@
import {finiteStateMachineProvider, type FsmTypeHelper} from '@alwatr/fsm';
import {requestableContextConsumer} from '@alwatr/signal';
import {snackbarSignalTrigger} from '@alwatr/ui-kit/src/snackbar/show-snackbar.js';
// import {finiteStateMachineProvider, type FsmTypeHelper} from '@alwatr/fsm';
// import {requestableContextConsumer} from '@alwatr/signal';
// import {snackbarSignalTrigger} from '@alwatr/ui-kit/src/snackbar/show-snackbar.js';

import type {RequestableContext} from '@alwatr/signal/type.js';
import type {AlwatrDocumentObject, AlwatrDocumentStorage} from '@alwatr/type';
import type {Order} from '@alwatr/type/src/customer-order-management.js';
// import type {RequestableContext} from '@alwatr/signal/type.js';
// import type {AlwatrDocumentObject, AlwatrDocumentStorage} from '@alwatr/type';
// import type {Order} from '@alwatr/type/src/customer-order-management.js';

const orderStorageContextConsumer =
requestableContextConsumer.bind<AlwatrDocumentStorage<Order>>('order-storage-context');
// const orderStorageContextConsumer =
// requestableContextConsumer.bind<AlwatrDocumentStorage<Order>>('order-storage-context');

export type OrderStorageContext<T extends AlwatrDocumentObject = Order> = {
orderStorage?: AlwatrDocumentStorage<T>;
};
// export type OrderStorageContext<T extends AlwatrDocumentObject = Order> = {
// orderStorage?: AlwatrDocumentStorage<T>;
// };

export const orderListFsmConstructor = finiteStateMachineProvider.defineConstructor('order_list_fsm', {
context: <OrderStorageContext>{},
initial: 'pending',
stateRecord: {
$all: {
on: {},
},
pending: {
entry: 'initial_request_order_storage',
on: {
context_request_initial: {},
context_request_pending: {},
context_request_error: {
target: 'contextError',
},
context_request_complete: {
target: 'list',
},
context_request_reloading: {
target: 'reloading',
},
},
},
contextError: {
on: {
request_context: {
target: 'pending',
actions: 'request_order_storage',
},
},
},
list: {
on: {
request_context: {
target: 'reloading',
actions: 'request_order_storage',
},
},
},
reloading: {
on: {
context_request_error: {
target: 'list',
actions: 'notify_error',
},
context_request_complete: {
target: 'list',
},
},
},
},
});
// export const orderListFsmConstructor = finiteStateMachineProvider.defineConstructor('order_list_fsm', {
// context: <OrderStorageContext>{},
// initial: 'pending',
// stateRecord: {
// $all: {
// on: {},
// },
// pending: {
// entry: 'initial_request_order_storage',
// on: {
// context_request_initial: {},
// context_request_pending: {},
// context_request_error: {
// target: 'contextError',
// },
// context_request_complete: {
// target: 'list',
// },
// context_request_reloading: {
// target: 'reloading',
// },
// },
// },
// contextError: {
// on: {
// request_context: {
// target: 'pending',
// actions: 'request_order_storage',
// },
// },
// },
// list: {
// on: {
// request_context: {
// target: 'reloading',
// actions: 'request_order_storage',
// },
// },
// },
// reloading: {
// on: {
// context_request_error: {
// target: 'list',
// actions: 'notify_error',
// },
// context_request_complete: {
// target: 'list',
// },
// },
// },
// },
// });

export type OrderListFsm = FsmTypeHelper<typeof orderListFsmConstructor>;
// export type OrderListFsm = FsmTypeHelper<typeof orderListFsmConstructor>;

// entries actions
finiteStateMachineProvider.defineActions<OrderListFsm>('order_list_fsm', {
initial_request_order_storage: (): void => {
const orderContext = orderStorageContextConsumer.getValue();
if (orderContext.state === 'initial') {
orderStorageContextConsumer.request(null);
}
},
request_order_storage: (): void => {
orderStorageContextConsumer.request(null);
},
notify_error: (): void =>
snackbarSignalTrigger.request({
messageKey: 'fetch_failed_description',
}),
});
// // entries actions
// finiteStateMachineProvider.defineActions<OrderListFsm>('order_list_fsm', {
// initial_request_order_storage: (): void => {
// const orderContext = orderStorageContextConsumer.getValue();
// if (orderContext.state === 'initial') {
// orderStorageContextConsumer.request(null);
// }
// },
// request_order_storage: (): void => {
// orderStorageContextConsumer.request(null);
// },
// notify_error: (): void =>
// snackbarSignalTrigger.request({
// messageKey: 'fetch_failed_description',
// }),
// });

finiteStateMachineProvider.defineSignals<OrderListFsm>('order_list_fsm', [
{
signalId: orderStorageContextConsumer.id,
callback: (context: RequestableContext<AlwatrDocumentStorage<Order>>, fsmInstance): void => {
fsmInstance.transition(`context_request_${context.state}`, {orderStorage: context.content});
},
receivePrevious: 'NextCycle',
},
]);
// finiteStateMachineProvider.defineSignals<OrderListFsm>('order_list_fsm', [
// {
// signalId: orderStorageContextConsumer.id,
// callback: (context: RequestableContext<AlwatrDocumentStorage<Order>>, fsmInstance): void => {
// fsmInstance.transition(`context_request_${context.state}`, {orderStorage: context.content});
// },
// receivePrevious: 'NextCycle',
// },
// ]);
7 changes: 3 additions & 4 deletions uniquely/com-pwa/src/manager/submit-order-command-handler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,19 @@ import {submitOrderCommandTrigger} from './context.js';
import {logger} from './logger.js';
import {config} from '../config.js';

import type {AlwatrDocumentStorage, User} from '@alwatr/type';
import type {AlwatrDocumentStorage, AlwatrServiceResponseSuccessWithMeta, User} from '@alwatr/type';
import type {Order} from '@alwatr/type/customer-order-management.js';


const orderStorageContextConsumer =
requestableContextConsumer.bind<AlwatrDocumentStorage<Order>>('order-storage-context');

const userContextConsumer = contextConsumer.bind<User>('user-context');
const userContextConsumer = contextConsumer.bind<User>('user_context');

commandHandler.define<Order, Order | null>(submitOrderCommandTrigger.id, async (order) => {
const userContext = userContextConsumer.getValue() ?? await userContextConsumer.untilChange();

try {
const response = await serviceRequest<Order>({
const response = await serviceRequest<AlwatrServiceResponseSuccessWithMeta<Order>>({
...config.fetchContextOptions,
method: 'PUT',
url: config.api + '/order/',
Expand Down
2 changes: 1 addition & 1 deletion uniquely/com-pwa/src/ui/page/home.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ export class AlwatrPageHome extends UnresolvedMixin(SignalMixin(AlwatrBaseElemen
override connectedCallback(): void {
super.connectedCallback();

this._addSignalListener(
this._addSignalListeners(
homePageContentContextConsumer.subscribe((content) => {
this.content = content;
topAppBarContextProvider.setValue(content.topAppBar);
Expand Down
Loading

0 comments on commit d07327b

Please sign in to comment.