0.8.4 • Published 2 months ago

@one-profile/core v0.8.4

Weekly downloads
-
License
MIT
Repository
-
Last release
2 months ago

one-profile-core

Core package for one profile application

Installation

yarn

yarn add @one-profile/core

npm

npm install @one-profile/core

APIs

oneProfileSetup

oneProfileSetup is the bootstrap API that will help you to expose your application/parcel to OneProfile ecosystem

import React from "react";
import Root from "./root.component";
import { oneProfileSetup } from "@one-profile/core";

const profileSetup = oneProfileSetup(Root);
export const { bootstrap, mount, unmount, config } = profileSetup;

arguments

rootComponent: React.FunctionComponent<any>

React root functional component that is mounted into OneProfile

config: OneProfileSetupConfig (optional)

  • activationFn: Promise<boolean> A function that decides whether to activate the current application. Expected to return a promise of boolean to be used in one profile initialisation. Function accepts accessToken and current user's oauth claim details
import {UserClaims} from "@okta/okta-auth-js";
import {User} from "@one-profile/core";

function activateProfile(accessToken, currentUser: User & UserClaims) {
  return new Promise<boolean>((resolve) =>
    makeSomeExternalCall(accessToken, currentUser).then((result) => {
      if (result == "success" && currentUser.homeOffice.countryIsoCode == "IND") {
        resolve(true);
      } else {
        resolve(false);
      }
    })
  );
}

//...
//...
//some business logic in between
//...
//...
const profileSetup = oneProfileSetup(Root, {
  activationFn: activateProfile,
});

External APIs

users.getMe

users.getMe is the users API that will expose current logged-in user

import React from "react";
import { oneProfileSetup, users } from "@one-profile/core";

function someFunctionRequireCurrentUser(){
  // get access token either using context or props from root component
  users.getMe(accessToken).then((user:User) => { 
    // user data
  });
}

arguments

accessToken (required)

accessToken used to authorise the getUser API request

response

User

{
  name: string;
  email: string;
  grade: {
    name: string;
  }
  role: {
    name: string;
  }
  department: {
    id: string;
    name: string;
  }
  homeOffice: {
    name: string;
    countryIsoCode: string;
    country: string;
    locationCode: string;
  }
  workingOffice: {
    name: string;
    countryIsoCode: string;
    country: string;
    locationCode: string;
  };
}

error data (refer ResponseError)

{
  message: string;
}

Error Handling

responseError

Response Error is thrown which can be caught in the API's promise catch mechanism

Usage:

import { ResponseError } from "@one-profile/core";

api.then(console.log).catch((error: ResponseError) => {
  if (error.status == 404) {
    //404 or 500
    console.log(error.data);
  }
});

Jest Setup

Make sure you include the following line in jest setup. Make sure you install regenerator-runtime package

import 'regenerator-runtime/runtime';