1.0.1 • Published 8 months ago

prenly-js-bridge v1.0.1

Weekly downloads
-
License
ISC
Repository
github
Last release
8 months ago

Prenly App SDK - JS Bridge

The Prenly App SDK is a JavaScript toolkit tailored for developers looking to integrate their web sites seamlessly with the Prenly native apps, focusing on user authentication and consent management. This repository contains the distribution files for the JavaScript SDK.

Install

npm i prenly-js-bridge

Instantiation

import PrenlyAppSDK from "prenly-js-bridge";

const { api } = new PrenlyAppSDK();

API

Functions

FunctionSignatureDescription
LoginprenlyApp.login(): Promise<UserDataJwt \| RequestError>Trigger a login flow in the app.
LogoutprenlyApp.logout(): Promise<UserDataJwt \| RequestError>Trigger a logout flow in the app.
Show no access alertprenlyApp.showNoAccessAlert(): Promise<void>Trigger a show no access alert flow in the app.
Get user JWTprenlyApp.getUserJwt(): Promise<UserDataJwt \| RequestError>Retrieve information about the user as a Jwt.
Get user consentprenlyApp.getUserConsent(): Promise<UserConsent \| null \| RequestError>Retrieve the current consent that the user granted, or null if no CMP is used.
Show user consent dialogprenlyApp.showUserConsentDialog(): Promise<void \| RequestError>Trigger the display of the consent dialog.
Play or pause audioprenlyApp.playPauseAudio(AudioData): Promise<void \| RequestError>Add audio and play it using the native app player, or pause when playing.
Queue or dequeue audioprenlyApp.queueDequeueAudio(AudioData): Promise<void \| RequestError>Queue or dequeue audio using the native app player.
Get audio statusprenlyApp.getAudioStatus(AudioId): Promise<AudioStatus \| RequestError>Retrieve audio status.

Example

const { api: prenlyApp } = new PrenlyAppSDK();

try {
  const userJwt = await prenlyApp.getUserJwt();
  // Do stuff with `userJwt`.
} catch (error) {
  // If the promise was rejected, handle the error.
}

Event listeners

FunctionSignature
Start listeningprenlyApp.on(EventType, (current: Object, previous?: Object) => void): void
Stop listening (single listener)prenlyApp.off(EventType, handler): void
Stop listening (all events of a type)prenlyApp.off(EventType): void

Events

Types

TypeDataDescription
userConsentChangeUserConsentTriggers when the user consent changes.
userLoginUserDataJwtTriggers when the user logs in.
userLogoutUserDataJwtTriggers when the user logs out.
audioStatusChangeAudioStatusTriggers when the status of audio initialized by the SDK is changed.

Callback Parameters

ParameterDescription
Parameter 1The response object of the current event.
Parameter 2The response object of the previous event, or undefined when no previous event exists.

Example

prenlyApp.on("userConsentChange", (data: UserConsent) => {
  // ...
});

Data models

UserDataJwt

{
  jwt: string;
}

The decoded JWT string contains header, payload and signature. The payload has the following definition:

{
  // Standard claims:
  sub?: string;
  given_name?: string;
  family_name?: string;
  email?: string;
  // Custom claims:
  customer_number?: string;
  prenly_package_slugs?: string[];
  is_logged_in: boolean;
}

UserConsent

{
  cmp: string;
  prenly_purpose_grants?: {
    functional: boolean;
    analytical: boolean;
    marketing: boolean;
  };
  tc_string?: string;
  cmp_purpose_grants?: { [purpose: string]: boolean };
  cmp_vendor_grants?: { [vendor: string]: boolean };
}

AudioId

{
  id: string;
}

AudioData

{
  id: string;
  audio_url: string;
  image_url?: string;
  title: string;
  description: string;
  duration: number; // in seconds
}

AudioStatus

{
  id: string;
  status: "playing" | "paused" | "loading";
  queued: boolean;
}

RequestError

{
  code:
    | 'rejected'
    | 'feature_disabled'
    | 'login_failed'
    | 'logout_failed'
    | 'play_pause_audio_failed'
    | 'queue_dequeue_audio_failed';
  message?: string;
}
1.0.1

8 months ago

1.0.0

10 months ago

0.0.2

1 year ago