Skip to content

Commit 6aff02c

Browse files
committed
Add session callback
1 parent 02e6297 commit 6aff02c

5 files changed

Lines changed: 68 additions & 39 deletions

File tree

README.md

Lines changed: 38 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -14,65 +14,67 @@ This software development kit is made to create [TalkOps](https://talkops.app) e
1414
* [Parameters](#parameters-1)
1515
* [Extension](#extension)
1616
* [Parameters](#parameters-2)
17-
* [setBootstrap](#setbootstrap)
17+
* [onBoot](#onboot)
1818
* [Parameters](#parameters-3)
19-
* [setDemo](#setdemo)
19+
* [onSession](#onsession)
2020
* [Parameters](#parameters-4)
21-
* [setName](#setname)
21+
* [setDemo](#setdemo)
2222
* [Parameters](#parameters-5)
23-
* [setIcon](#seticon)
23+
* [setName](#setname)
2424
* [Parameters](#parameters-6)
25-
* [setWebsite](#setwebsite)
25+
* [setIcon](#seticon)
2626
* [Parameters](#parameters-7)
27-
* [setSoftwareVersion](#setsoftwareversion)
27+
* [setWebsite](#setwebsite)
2828
* [Parameters](#parameters-8)
29-
* [setCategory](#setcategory)
29+
* [setSoftwareVersion](#setsoftwareversion)
3030
* [Parameters](#parameters-9)
31-
* [setFeatures](#setfeatures)
31+
* [setCategory](#setcategory)
3232
* [Parameters](#parameters-10)
33-
* [setinstallationSteps](#setinstallationsteps)
33+
* [setFeatures](#setfeatures)
3434
* [Parameters](#parameters-11)
35-
* [setParameters](#setparameters)
35+
* [setinstallationSteps](#setinstallationsteps)
3636
* [Parameters](#parameters-12)
37-
* [setInstructions](#setinstructions)
37+
* [setParameters](#setparameters)
3838
* [Parameters](#parameters-13)
39-
* [setFunctionSchemas](#setfunctionschemas)
39+
* [setInstructions](#setinstructions)
4040
* [Parameters](#parameters-14)
41-
* [setFunctions](#setfunctions)
41+
* [setFunctionSchemas](#setfunctionschemas)
4242
* [Parameters](#parameters-15)
43+
* [setFunctions](#setfunctions)
44+
* [Parameters](#parameters-16)
4345
* [enableAlarm](#enablealarm)
4446
* [sendMedias](#sendmedias)
45-
* [Parameters](#parameters-16)
46-
* [sendMessage](#sendmessage)
4747
* [Parameters](#parameters-17)
48-
* [sendNotification](#sendnotification)
48+
* [sendMessage](#sendmessage)
4949
* [Parameters](#parameters-18)
50+
* [sendNotification](#sendnotification)
51+
* [Parameters](#parameters-19)
5052
* [Image](#image)
5153
* [Link](#link)
52-
* [Parameters](#parameters-19)
54+
* [Parameters](#parameters-20)
5355
* [setUrl](#seturl)
54-
* [Parameters](#parameters-20)
56+
* [Parameters](#parameters-21)
5557
* [Media](#media)
5658
* [Parameter](#parameter)
57-
* [Parameters](#parameters-21)
59+
* [Parameters](#parameters-22)
5860
* [getName](#getname)
5961
* [setOptional](#setoptional)
60-
* [Parameters](#parameters-22)
62+
* [Parameters](#parameters-23)
6163
* [isOptional](#isoptional)
6264
* [setDescription](#setdescription)
63-
* [Parameters](#parameters-23)
64-
* [setDefaultValue](#setdefaultvalue)
6565
* [Parameters](#parameters-24)
66-
* [setType](#settype)
66+
* [setDefaultValue](#setdefaultvalue)
6767
* [Parameters](#parameters-25)
68+
* [setType](#settype)
69+
* [Parameters](#parameters-26)
6870
* [getValue](#getvalue)
6971
* [setValue](#setvalue)
70-
* [Parameters](#parameters-26)
72+
* [Parameters](#parameters-27)
7173
* [hasValue](#hasvalue)
7274
* [setAvailableValues](#setavailablevalues)
73-
* [Parameters](#parameters-27)
74-
* [setPossibleValues](#setpossiblevalues)
7575
* [Parameters](#parameters-28)
76+
* [setPossibleValues](#setpossiblevalues)
77+
* [Parameters](#parameters-29)
7678
* [Video](#video)
7779

7880
### Attachment
@@ -106,11 +108,19 @@ Represents an extension.
106108

107109
* `token` **[String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** The token of the extension.
108110

109-
#### setBootstrap
111+
#### onBoot
112+
113+
##### Parameters
114+
115+
* `callback` **[Function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** The callback function executed on boot.
116+
117+
Returns **[Extension](#extension)** The updated extension instance.
118+
119+
#### onSession
110120

111121
##### Parameters
112122

113-
* `bootstrap` **[Function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** The extension startup function.
123+
* `callback` **[Function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** The callback function executed on session.
114124

115125
Returns **[Extension](#extension)** The updated extension instance.
116126

categories.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,6 @@
1212
"education",
1313
"finance",
1414
"creativity",
15-
"accessibility"
15+
"accessibility",
16+
"restaurant"
1617
]

extension.js

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import pkg from './package.json' with { type: 'json' }
1212
* @class
1313
*/
1414
export default class Extension {
15-
#bootstrap = null
15+
#callbacks = {}
1616
#category = null
1717
#demo = false
1818
#features = []
@@ -62,12 +62,12 @@ export default class Extension {
6262
)
6363
new Subscriber(() => {
6464
return {
65+
callbacks: this.#callbacks,
6566
extension: this,
6667
functions: this.#functions,
6768
mercure,
6869
parameters: this.#parameters,
6970
publisher: this.#publisher,
70-
bootstrap: this.#bootstrap,
7171
}
7272
})
7373
}
@@ -98,14 +98,26 @@ export default class Extension {
9898
}
9999

100100
/**
101-
* @param {Function} bootstrap - The extension startup function.
101+
* @param {Function} callback - The callback function executed on boot.
102102
* @returns {Extension} The updated extension instance.
103103
*/
104-
setBootstrap(bootstrap) {
105-
if (typeof bootstrap !== 'function') {
106-
throw new Error('bootstrap must be a function.')
104+
onBoot(callback) {
105+
if (typeof callback !== 'function') {
106+
throw new Error('callback must be a function.')
107107
}
108-
this.#bootstrap = bootstrap
108+
this.#callbacks.boot = callback
109+
return this
110+
}
111+
112+
/**
113+
* @param {Function} callback - The callback function executed on session.
114+
* @returns {Extension} The updated extension instance.
115+
*/
116+
onSession(callback) {
117+
if (typeof callback !== 'function') {
118+
throw new Error('callback must be a function.')
119+
}
120+
this.#callbacks.session = callback
109121
return this
110122
}
111123

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "talkops",
33
"description": "TalkOps SDK",
4-
"version": "2.13.2",
4+
"version": "2.13.3",
55
"author": "bierdok",
66
"license": "MIT",
77
"main": "index.mjs",

subscriber.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,12 @@ export default class Subscriber {
3131
config.publisher.onPing()
3232
return
3333
}
34+
if (event.type === 'session') {
35+
if (ready && config.callbacks.session) {
36+
config.callbacks.session()
37+
}
38+
return
39+
}
3440
if (event.type === 'boot') {
3541
for (const name of Object.keys(event.parameters)) {
3642
for (const parameter of config.parameters) {
@@ -45,8 +51,8 @@ export default class Subscriber {
4551
ready = false
4652
}
4753
config.publisher.publishState()
48-
if (ready && config.bootstrap) {
49-
config.bootstrap()
54+
if (ready && config.callbacks.boot) {
55+
config.callbacks.boot()
5056
}
5157
return
5258
}

0 commit comments

Comments
 (0)