diff --git a/README.md b/README.md index 47dec46..ec87570 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,19 @@ A standard library to interact with KaiOS 2.x and 3.x\* APIs. ## Examples +### Activity + +```js +// Create the service +const service = new KaiOS.Activity({ + name: 'toolbox/qr-to-text', + data: {}, +}); + +// Send the request and await the result +const result = await service.start(); +``` + ### Alarm ```js diff --git a/src/index.ts b/src/index.ts index 5cf8027..7326bda 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,3 +1,4 @@ +import { Activity } from './modules/activity'; import { Alarm } from './modules/alarm'; import { App } from './modules/app'; import { Battery } from './modules/battery'; @@ -7,6 +8,7 @@ import { LocalStorage } from './modules/localStorage'; import { Network } from './modules/network'; import { Volume } from './modules/volume'; +export * from './modules/activity'; export * from './modules/alarm'; export * from './modules/app'; export * from './modules/battery'; @@ -17,6 +19,7 @@ export * from './modules/network'; export * from './modules/volume'; export default class KaiOS { + static Activity = Activity; static Alarm = Alarm; static App = App; static Battery = Battery; diff --git a/src/models/MozWindow.ts b/src/models/MozWindow.ts new file mode 100644 index 0000000..2588fd8 --- /dev/null +++ b/src/models/MozWindow.ts @@ -0,0 +1,3 @@ +export type MozWindow = Window & { + MozActivity: any; +} & any; diff --git a/src/models/index.ts b/src/models/index.ts index 313f0fa..a6f1bc6 100644 --- a/src/models/index.ts +++ b/src/models/index.ts @@ -9,5 +9,6 @@ export * from './Manifest'; export * from './MozBattery'; export * from './MozDeviceStorage'; export * from './MozNavigator'; +export * from './MozWindow'; export * from './NetworkStatus'; export * from './Request'; diff --git a/src/modules/activity.ts b/src/modules/activity.ts new file mode 100644 index 0000000..60cc917 --- /dev/null +++ b/src/modules/activity.ts @@ -0,0 +1,28 @@ +import { MozWindow } from '../models'; + +type Data = { + name: string; + data: { [key: string]: any }; +}; + +export class Activity { + data: Data; + + constructor(data: Data) { + this.data = data; + } + + start(): Promise { + return new Promise((resolve, reject) => { + const activity = new (window as MozWindow).MozActivity(this.data); + + activity.onsuccess = function () { + resolve(this.result); + }; + + activity.onerror = function () { + reject(this.error); + }; + }); + } +}