From ddc05ea6b91372e1433304c944693c4a3bf6d026 Mon Sep 17 00:00:00 2001 From: MD4 Date: Fri, 4 Oct 2024 17:12:35 +0200 Subject: [PATCH] feat(*): added in-app message commands --- .../screeb-sdk-angular/docs/classes/Screeb.md | 59 +++++++++++++++++ .../screeb-sdk-angular/src/lib/screeb.ts | 45 +++++++++++++ packages/screeb-sdk-browser/docs/README.md | 63 ++++++++++++++++++ packages/screeb-sdk-browser/src/index.ts | 46 +++++++++++++ packages/screeb-sdk-react/docs/README.md | 66 +++++++++++++++++++ packages/screeb-sdk-react/src/provider.tsx | 22 +++++++ packages/screeb-sdk-react/src/types.ts | 36 ++++++++++ 7 files changed, 337 insertions(+) diff --git a/packages/screeb-sdk-angular/docs/classes/Screeb.md b/packages/screeb-sdk-angular/docs/classes/Screeb.md index 0d3b3df..f01375f 100644 --- a/packages/screeb-sdk-angular/docs/classes/Screeb.md +++ b/packages/screeb-sdk-angular/docs/classes/Screeb.md @@ -27,6 +27,8 @@ - [identityReset](Screeb.md#identityreset) - [init](Screeb.md#init) - [load](Screeb.md#load) +- [messageClose](Screeb.md#messageclose) +- [messageStart](Screeb.md#messagestart) - [surveyClose](Screeb.md#surveyclose) - [surveyStart](Screeb.md#surveystart) - [targetingCheck](Screeb.md#targetingcheck) @@ -422,6 +424,63 @@ this.screeb.load(); ___ +### messageClose + +▸ **messageClose**(): `Promise`\<`unknown`\> + +Interrupts a running message. + +#### Returns + +`Promise`\<`unknown`\> + +**`Example`** + +```ts +this.screeb.messageClose(); +``` + +___ + +### messageStart + +▸ **messageStart**(`messageId`, `hiddenFields`, `hooks?`, `language?`): `Promise`\<`unknown`\> + +Starts a message by its ID. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `messageId` | `string` | +| `hiddenFields` | `PropertyRecord` | +| `hooks?` | `Hooks` | +| `language?` | `string` | + +#### Returns + +`Promise`\<`unknown`\> + +**`Example`** + +```ts +this.screeb.messageStart( + '', + false, + { + color: "green", + article_id: 42 + }, + { + version: "1.0.0", + onMessageShowed: (payload) => console.log("Message showed", payload), + }, + "en" +); +``` + +___ + ### surveyClose ▸ **surveyClose**(): `Promise`\<`unknown`\> diff --git a/packages/screeb-sdk-angular/projects/screeb-sdk-angular/src/lib/screeb.ts b/packages/screeb-sdk-angular/projects/screeb-sdk-angular/src/lib/screeb.ts index 55472fc..2479474 100644 --- a/packages/screeb-sdk-angular/projects/screeb-sdk-angular/src/lib/screeb.ts +++ b/packages/screeb-sdk-angular/projects/screeb-sdk-angular/src/lib/screeb.ts @@ -337,6 +337,51 @@ export class Screeb { ); } + /** + * Interrupts a running message. + * + * @example + * ```ts + * this.screeb.messageClose(); + * ``` + */ + public async messageClose() { + await this.ensureScreeb("messageClose"); + + return _Screeb.messageClose(); + } + + /** + * Starts a message by its ID. + * + * @example + * ```ts + * this.screeb.messageStart( + * '', + * false, + * { + * color: "green", + * article_id: 42 + * }, + * { + * version: "1.0.0", + * onMessageShowed: (payload) => console.log("Message showed", payload), + * }, + * "en" + * ); + * ``` + */ + public async messageStart( + messageId: string, + hiddenFields: _Screeb.PropertyRecord, + hooks?: _Screeb.Hooks, + language?: string + ) { + await this.ensureScreeb("messageStart"); + + return _Screeb.messageStart(messageId, hiddenFields, hooks, language); + } + /** * Forces a targeting check. * diff --git a/packages/screeb-sdk-browser/docs/README.md b/packages/screeb-sdk-browser/docs/README.md index c4360d2..e263a2c 100644 --- a/packages/screeb-sdk-browser/docs/README.md +++ b/packages/screeb-sdk-browser/docs/README.md @@ -46,6 +46,8 @@ - [init](README.md#init) - [isLoaded](README.md#isloaded) - [load](README.md#load) +- [messageClose](README.md#messageclose) +- [messageStart](README.md#messagestart) - [surveyClose](README.md#surveyclose) - [surveyStart](README.md#surveystart) - [targetingCheck](README.md#targetingcheck) @@ -793,6 +795,67 @@ Screeb.load(); ___ +### messageClose + +▸ **messageClose**(): `void` \| `Promise`\<`unknown`\> + +Interrupts a running message. + +#### Returns + +`void` \| `Promise`\<`unknown`\> + +**`Example`** + +```ts +import * as Screeb from "@screeb/sdk-browser"; + +Screeb.messageClose(); +``` + +___ + +### messageStart + +▸ **messageStart**(`messageId`, `hiddenFields?`, `hooks?`, `language?`): `void` \| `Promise`\<`unknown`\> + +Starts a message by its ID. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `messageId` | `string` | +| `hiddenFields` | [`PropertyRecord`](README.md#propertyrecord) | +| `hooks?` | [`Hooks`](README.md#hooks) | +| `language?` | `string` | + +#### Returns + +`void` \| `Promise`\<`unknown`\> + +**`Example`** + +```ts +import * as Screeb from "@screeb/sdk-browser"; + +Screeb.messageStart( + '', + false, + { + color: "green", + article_id: 42 + }, + { + version: "1.0.0", + onMessageShowed: (payload) => console.log("Message showed", payload), + }, + "en" +); +``` + +___ + ### surveyClose ▸ **surveyClose**(): `void` \| `Promise`\<`unknown`\> diff --git a/packages/screeb-sdk-browser/src/index.ts b/packages/screeb-sdk-browser/src/index.ts index 8e78756..0d89673 100644 --- a/packages/screeb-sdk-browser/src/index.ts +++ b/packages/screeb-sdk-browser/src/index.ts @@ -458,6 +458,52 @@ export const surveyStart = ( hooks: hooks, }); +/** + * Interrupts a running message. + * + * @example + * ```ts + * import * as Screeb from "@screeb/sdk-browser"; + * + * Screeb.messageClose(); + * ``` + */ +export const messageClose = () => callScreebCommand("message.close"); + +/** + * Starts a message by its ID. + * + * @example + * ```ts + * import * as Screeb from "@screeb/sdk-browser"; + * + * Screeb.messageStart( + * '', + * false, + * { + * color: "green", + * article_id: 42 + * }, + * { + * version: "1.0.0", + * onMessageShowed: (payload) => console.log("Message showed", payload), + * }, + * "en" + * ); + * ``` + */ +export const messageStart = ( + messageId: string, + hiddenFields: PropertyRecord = {}, + hooks?: Hooks, + language?: string, +) => + callScreebCommand("message.start", messageId, { + language: language, + hidden_fields: hiddenFields, + hooks: hooks, + }); + /** * Forces a targeting check. * diff --git a/packages/screeb-sdk-react/docs/README.md b/packages/screeb-sdk-react/docs/README.md index 4da92ab..c7c8bd6 100644 --- a/packages/screeb-sdk-react/docs/README.md +++ b/packages/screeb-sdk-react/docs/README.md @@ -17,6 +17,8 @@ - [IdentityResetFunction](README.md#identityresetfunction) - [InitFunction](README.md#initfunction) - [LoadFunction](README.md#loadfunction) +- [MessageCloseFunction](README.md#messageclosefunction) +- [MessageStartFunction](README.md#messagestartfunction) - [ScreebContextValues](README.md#screebcontextvalues) - [ScreebProps](README.md#screebprops) - [ScreebProviderProps](README.md#screebproviderprops) @@ -437,6 +439,70 @@ load(); ___ +### MessageCloseFunction + +Ƭ **MessageCloseFunction**: () => `Promise`\<`unknown`\> + +Interrupts a running message. + +**`Example`** + +```ts +const { messageClose } = useScreeb(); + +messageClose(); +``` + +#### Type declaration + +▸ (): `Promise`\<`unknown`\> + +##### Returns + +`Promise`\<`unknown`\> + +___ + +### MessageStartFunction + +Ƭ **MessageStartFunction**: (`messageId`: `string`, `hiddenFields`: `PropertyRecord`, `hooks?`: `Hooks`, `language?`: `string`) => `Promise`\<`unknown`\> + +Starts a message by its ID. + +**`Example`** + +```ts +const { messageStart } = useScreeb(); + +messageStart( + '', + false, + { + color: "green", + article_id: 42 + } +); +``` + +#### Type declaration + +▸ (`messageId`, `hiddenFields`, `hooks?`, `language?`): `Promise`\<`unknown`\> + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `messageId` | `string` | +| `hiddenFields` | `PropertyRecord` | +| `hooks?` | `Hooks` | +| `language?` | `string` | + +##### Returns + +`Promise`\<`unknown`\> + +___ + ### ScreebContextValues Ƭ **ScreebContextValues**: `Object` diff --git a/packages/screeb-sdk-react/src/provider.tsx b/packages/screeb-sdk-react/src/provider.tsx index a25b78c..b826135 100644 --- a/packages/screeb-sdk-react/src/provider.tsx +++ b/packages/screeb-sdk-react/src/provider.tsx @@ -214,6 +214,24 @@ export const ScreebProvider: React.FC< [], ); + const messageClose = React.useCallback( + async () => await ensureScreeb("messageClose", () => Screeb.messageClose()), + [], + ); + + const messageStart = React.useCallback( + async ( + messageId: string, + hiddenFields: Screeb.PropertyRecord, + hooks?: Screeb.Hooks, + language?: string, + ) => + await ensureScreeb("messageStart", () => + Screeb.messageStart(messageId, hiddenFields, hooks, language), + ), + [], + ); + const targetingCheck = React.useCallback( async () => await ensureScreeb("targetingCheck", () => Screeb.targetingCheck()), @@ -241,6 +259,8 @@ export const ScreebProvider: React.FC< load, surveyClose, surveyStart, + messageClose, + messageStart, targetingCheck, targetingDebug, }), @@ -258,6 +278,8 @@ export const ScreebProvider: React.FC< load, surveyClose, surveyStart, + messageClose, + messageStart, targetingCheck, targetingDebug, ], diff --git a/packages/screeb-sdk-react/src/types.ts b/packages/screeb-sdk-react/src/types.ts index e283e09..c18b4e7 100644 --- a/packages/screeb-sdk-react/src/types.ts +++ b/packages/screeb-sdk-react/src/types.ts @@ -349,6 +349,42 @@ export type SurveyStartFunction = ( language?: string, ) => Promise; +/** + * Interrupts a running message. + * + * @example + * ```ts + * const { messageClose } = useScreeb(); + * + * messageClose(); + * ``` + */ +export type MessageCloseFunction = () => Promise; + +/** + * Starts a message by its ID. + * + * @example + * ```ts + * const { messageStart } = useScreeb(); + * + * messageStart( + * '', + * false, + * { + * color: "green", + * article_id: 42 + * } + * ); + * ``` + */ +export type MessageStartFunction = ( + messageId: string, + hiddenFields: PropertyRecord, + hooks?: Hooks, + language?: string, +) => Promise; + /** * Forces a targeting check. *