docs: added gift card documentation guides (#2939)

This commit is contained in:
Shahed Nasser
2023-01-04 18:16:51 +02:00
committed by GitHub
parent c62e309629
commit af7e67e827
10 changed files with 1149 additions and 32 deletions
@@ -28,7 +28,7 @@ Redis is required for batch jobs to work. Make sure you [install Redis](../../t
### Notification Provider
To send an email or another type of notification method, you must have a notification provider installed or configured.
To send an email or another type of notification method, you must have a notification provider installed or configured. You can either install an existing plugin or [create your own](../backend/notification/how-to-create-notification-provider.md).
This document has an example using the [SendGrid](../../add-plugins/sendgrid.mdx) plugin.
@@ -47,26 +47,24 @@ You can learn more about subscribers in the [Subscribers](../backend/subscribers
Create the file `src/subscribers/claim-order.ts` with the following content:
```ts title=src/subscribers/claim-order.ts
import { EventBusService } from "@medusajs/medusa"
type InjectedDependencies = {
eventBusService: EventBusService,
// TODO add necessary dependencies
}
class ClaimOrderSubscriber {
constructor({ eventBusService }: InjectedDependencies) {
constructor(container: InjectedDependencies) {
// TODO subscribe to event
}
}
export default ClaimOrderSubscriber
```
If you want to add any other dependencies, you can add them to the `InjectedDependencies` type.
Youll be adding in the next step the necessary dependencies to the subscriber.
:::tip
:::info
You can learn more about dependency injection in [this documentation](../backend/dependency-container/index.md).
You can learn more about [dependency injection](../backend/dependency-container/index.md) in this documentation.
:::
@@ -74,29 +72,59 @@ You can learn more about dependency injection in [this documentation](../backend
## Step 2: Subscribe to the Event
In the subscriber you created, add the following in the `constructor`:
In this step, youll subscribe to the `order-update-token.created` event to send the customer a notification about their order edit.
There are two ways to do this:
### Method 1: Using the NotificationService
If the notification provider youre using already implements the logic to handle this event, you can subscribe to the event using the `NotificationService`:
```ts title=src/subscribers/claim-order.ts
import { NotificationService } from "@medusajs/medusa"
type InjectedDependencies = {
notificationService: NotificationService
}
class ClaimOrderSubscriber {
constructor({ notificationService }: InjectedDependencies) {
notificationService.subscribe(
"order-update-token.created",
"<NOTIFICATION_PROVIDER_IDENTIFIER>"
)
}
}
export default ClaimOrderSubscriber
```
Where `<NOTIFICATION_PROVIDER_IDENTIFIER>` is the identifier for your notification provider.
:::info
You can learn more about handling events with the Notification Service using [this documentation](../backend/notification/how-to-create-notification-provider.md).
:::
### Method 2: Using the EventBusService
If the notification provider youre using isnt configured to handle this event, or you want to implement some other custom logic, you can subscribe to the event using the `EventBusService`:
```ts title=src/subscribers/claim-order.ts
import { EventBusService } from "@medusajs/medusa"
type InjectedDependencies = {
eventBusService: EventBusService
}
class ClaimOrderSubscriber {
constructor({ eventBusService }: InjectedDependencies) {
eventBusService.subscribe(
"order-update-token.created",
"order-update-token.created",
this.handleRequestClaimOrder
)
}
// ...
}
```
You use the `eventBusService` to subscribe to the `order-update-token.created` event. You pass the method `handleRequestClaimOrder` as a handler to that event. Youll create this method in the next step.
## Step 3: Create Event Handler
In the subscriber, add a new method `handleRequestClaimOrder`:
```ts title=src/subscribers/claim-order.ts
class ClaimOrderSubscriber {
// ...
handleRequestClaimOrder = async (data) => {
// TODO: handle event
@@ -106,6 +134,8 @@ class ClaimOrderSubscriber {
export default ClaimOrderSubscriber
```
When using this method, youll have to handle the logic of sending the confirmation email to the customer inside the handler function, which in this case is `handleRequestClaimOrder`.
The `handleRequestClaimOrder` event receives a `data` object as a parameter. This object holds the following properties:
1. `old_email`: The email associated with the orders.