Socket
Socket
Sign inDemoInstall

@palenca/palenca-link

Package Overview
Dependencies
5
Maintainers
3
Versions
20
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @palenca/palenca-link

Palenca Link is the client-side and the secure way to link the user accounts to Palenca and allow you to access their data via the Palenca API.


Version published
Weekly downloads
18
decreased by-14.29%
Maintainers
3
Install size
74.5 kB
Created
Weekly downloads
 

Readme

Source

Palenca Link is the client-side and the secure way to link the user accounts to Palenca and allow you to access their data via the Palenca API.

Palenca Link will handle credential validation, multi-factor authentication, and error handling for each platform that we support.

Using the CDN

<script src="https://link.palenca.com/v2/index.min.js"></script>

Using ES6

npm install @palenca/palenca-link
import { loadLink } from "@palenca/palenca-link";

Load parameters

ParameterExampleDescriptionRequiredOrder
publicApiKeypublic_6187344f-d2e9-4ff1-a0ca-7a1ad512682dThe public API keyTrue1
widgetIdc379afec-8d47-4fcf-ae07-353093baed2bThe Widget IdTrue2
Load Example
const linkPromise = loadLink('public_6187344f-d2e9-4ff1-a0ca-7a1ad512682d', 'c379afec-8d47-4fcf-ae07-353093baed2b');

Configuration parameters

ParameterExampleDescriptionRequired
externalId6187344f-d2e9-4ff1-a0ca-7a1ad512682dUser external idFalse
platformuberPresents to the user a single platform login formFalse
isSandboxtrueIf set to true, the sandbox mode is enabled. false by defaultFalse
platforms['uber', 'rappi', 'runa]Array of platforms the user is able to selectFalse
countrymxThe alpha-2 code of the countryFalse
redirectUrlhttps://domain.com/step-2URL where the user must be redirectedFalse
customPrivacyUrlhttps://domain.com/privacyAllow you to add a custom privacy terms checkbox, useful if you need a custom consentFalse
whatsAppPhoneNumber+525511223344Phone number with country code to receive WhatsApp messages from usersFalse
hideLogofalseIf set to true, your company logo is hidden. false by defaultFalse
hideWhatsAppfalseIf set to true, the whatsapp floating button is hidden. false by defaultFalse
hideConsentfalseIf set to true, the consent page is hidden. false by defaultFalse
langesReplaces the browser's auto-detected language. Available languages: es, en & pt. null by defaultFalse

Appearance parameters

ParameterExampleDescriptionRequired
primaryColor#1F5BC0Hexadecimal color, the hexadecimal color values are supported in all browsersFalse
borderRadius10pxThe border-radius property defines the radius of the element's cornersFalse
fontFamilyRobotoThe font-family property specifies the font for the PalencaLink, Only accept Google FontsFalse
  • Google Fonts
  • Color Picker
  • Border radius

Templates

TemplateFontColorBorder radius
BlackLato#0000000px
DefaultPoppins#1F5BC010px
NatureLato#0000000px

Events

The only way to communicate with Link is by listening to an event. All events have a payload object with the API Envelope

The Palenca Link The events are listed here:

Event nameDescription
readyIndicates that your Public API key and Widget it is correct and that the widget has been initialized
user_createdThe user was successfully created
connection_successThe user was connected successfully with the platform
connection_errorAn error occurred meanwhile trying to connect a user with the platform

Events envelope

The envelope is always the same with the following structure:

{
    "success": bool,
    "data": Data Object,
    "error": Error Object
}

Events examples

ready

{
    "success": true,
    "data": null,
    "error": null
}

user_created

{
    "success": true,
    "data": {
        "user_id": "054d0a9d-38ec-40cb-a31c-09b483242e4a",
        "external_id": "4a0e32bd-c3df-4172-a89d-f173d6816926",
        "widget_id": "feecb679-a3cc-47ef-8fd4-600799f12a39"
    },
    "error": null
}

connection_success

{
    "success": true,
    "data": {
        "user_id": "054d0a9d-38ec-40cb-a31c-09b483242e4a",
        "country": "mx",
        "platform": "imss",
        "account_id": "472f02e8-6b24-43a7-b529-3f71d6ecc81c"
    },
    "error": null
}

connection_error

{
    "success": false,
    "error": {
        "code": "invalid_credentials",
        "message": "The username/password combination is wrong",
        "errors": null
    },
    "data": null
}

Standalone

Available Methods
MethodDescriptionsParams
onTo add event listener subscribtionsevent: string, callback: Function
renderTo render the widgetcontainerId: string, config: object
destroyTo remove the iframe and event listenersN/A
<div id="container"></div>
  let widgetId = "YOUR_WIDGET_ID";
    let publicApiKey = "YOUR_PUBLIC_API_KEY";
    let renderConfig = {
      "configuration": {
        "hideConsent": true,
        "country": "mx"
      },
      appearance: {
        primaryColor: "#ea4c89",
        borderRadius: "9999px"
      }
    }

    let link = palenca.loadLink(publicApiKey, widgetId).then(link => {

      link.on("ready", () => {
        console.log("Widget is ready")
      })

      link.on("user_created", (event) => {
        console.log("User created", event)
      })

      link.on("connection_success", (event) => {
        console.log(`Connection success for userId ${event.data.user_id} and accountId ${event.data.account_id}`)
      })

      link.on("connection_error", (event) => {
        console.log(`Connection error ${event.data.error.code}`)
      })

      link.render("container", renderConfig);
      
      // You can destroy the iframe and event listeners with the destroy method
      window.addEventListener('unload', () => {
          link.destroy()
      })

    }, error => {
      console.log(error);
    })

React

import { loadLink, PalencaLinkReact } from '@palenca/palenca-link';
import { useCallback } from 'react';

// Make sure to call `loadLink` outside of a component’s render to avoid recreating the object
const linkPromise = loadLink('YOUR_PUBLIC_API_KEY', 'YOUR_WIDGET_ID');

const Home = () => {
  const handleEvent = useCallback((event: string, data: object) => {
    console.log(event);
    console.log(data)
  }, []);

  const options = {
    configuration: {
      hideConsent: true,
      country: 'mx',
    },
    appearance: {
      primaryColor: '#ea4c89',
      borderRadius: '999px',
    },
  };

  return (
      <div>
            <PalencaLinkReact
              link={linkPromise}
              options={options}
              onEvent={handleEvent}
            />
      </div>
  );
};

export default Home;

FAQs

Last updated on 23 Dec 2022

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc