Skip to content

Textalk/prenly-js-bridge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 

Repository files navigation

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.

Instantiation

import PrenlyAppSDK from "prenly-js-bridge";

const { api } = new PrenlyAppSDK();

API

Functions

Function Signature Description
Login prenlyApp.login(): Promise<UserDataJwt | RequestError> Trigger a login flow in the app.
Logout prenlyApp.logout(): Promise<UserDataJwt | RequestError> Trigger a logout flow in the app.
Show no access alert prenlyApp.showNoAccessAlert(): Promise<void> Trigger a show no access alert flow in the app.
Get user JWT prenlyApp.getUserJwt(): Promise<UserDataJwt | RequestError> Retrieve information about the user as a Jwt.
Get user consent prenlyApp.getUserConsent(): Promise<UserConsent | null | RequestError> Retrieve the current consent that the user granted, or null if no CMP is used.
Show user consent dialog prenlyApp.showUserConsentDialog(): Promise<void | RequestError> Trigger the display of the consent dialog.
Play or pause audio prenlyApp.playPauseAudio(AudioData): Promise<void | RequestError> Add audio and play it using the native app player, or pause when playing.
Queue or dequeue audio prenlyApp.queueDequeueAudio(AudioData): Promise<void | RequestError> Queue or dequeue audio using the native app player.
Get audio status prenlyApp.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

Function Signature
Start listening prenlyApp.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

Type Data Description
userConsentChange UserConsent Triggers when the user consent changes.
userLogin UserDataJwt Triggers when the user logs in.
userLogout UserDataJwt Triggers when the user logs out.
audioStatusChange AudioStatus Triggers when the status of audio initialized by the SDK is changed.

Callback Parameters

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

Example

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

Data models

UserDataJwt

{
  jwt: string;
}

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;
}