Skip to content
This repository has been archived by the owner on May 11, 2023. It is now read-only.

Latest commit

 

History

History
133 lines (117 loc) · 4.23 KB

readme.md

File metadata and controls

133 lines (117 loc) · 4.23 KB

This repo is archived please use https://github.com/GoodDollar/GoodWeb3-Mono

GoodDollar Client SDK

This is the gooddollar client sdk for integrating login into gooddollar in your website

SDK Utilities

  • createLoginLink to generate login link to redirect to the gooddollar wallet
  • LoginButton to place a login button on your page to integrate login with gooddollar on your website
  • parseLoginResponse to verify if the login was successful and verified
  • useLogin is a hook that can be used instead of button to integrate login with gooddollar on your website

Object schema for createLoginLink

Property Name Purpose Mandatory/Optional Type
redirectLink gooddollar wallet link to redirect to Optional String
v name of the vendor Mandatory String
web web link for vendor Mandatory String
id wallet address for vendor Mandatory String
r array of information ex.['mobile','location'] Mandatory array
cbu Callback URL provide either rdu or cbu String
rbu Redirect URL provide either rdu or cbu String

Object schema for useLogin

Property Name Purpose Mandatory/Optional Type
gooddollarlink wallet link returned by createLoginLink Mandatory String
cbu Callback URL provide either rdu or cbu String
rbu Redirect URL provide either rdu or cbu String
onLoginCallback Function that has the data returned by wallet as the first argument Mandatory Function

Props for LoginButton

Prop Name Purpose Mandatory/Optional Type
gooddollarlink wallet link returned by createLoginLink Mandatory String
cbu Callback URL provide either rdu or cbu String
rbu Redirect URL provide either rdu or cbu String
onLoginCallback Function that has the data returned by wallet as the first argument Mandatory Function

example login with hook

import {
  useLogin,
  createLoginLink,
  parseLoginResponse,
} from "client-sdk-gooddollar";

const App() {
  const gooddollarLink = createLoginLink({
    v: "Google",
    web: "https://gooddollar.netlify.app",
    id: "0x09D2011Ca5781CA70810F6d82837648132762F9a",
    r: ["mobile", "location", "email", "name"],
    rdu: "https://gooddollar.netlify.app",
  });

  const loginCallBack = async (data) => {
    //to check if login response is valid or not 
    parseLoginResponse(data)
  }

  const onClick =  useLogin({
    rdu: gooddollarLink,
    gooddollarlink: rest.gooddollarlink,
    onLoginCallback: onLoginCallback,
  });

  return (
    <div className="App">
      <button onClick={onClick}>Login With Gooddollar</button>
    </div>
  );
}

example login with button

import {useState} from 'react';
import {
  LoginButton,
  createLoginLink,
  parseLoginResponse,
} from "client-sdk-gooddollar";

function App() {
  const gooddollarLink = createLoginLink({
    v: "Google",
    web: "https://gooddollar.netlify.app",
    id: "0x09D2011Ca5781CA70810F6d82837648132762F9a",
    r: ["mobile", "location", "email", "name"],
    rdu: "https://gooddollar.netlify.app",
  });

  const [gooddollarData, setGooddollarData] = useState({});

  return (
    <div className="App">
        {Object.keys(gooddollarData).length === 0 ? (
          <>
            <LoginButton
              onLoginCallback={async (data) => {
              //to check if login response is valid or not 
              parseLoginResponse(data)
              setGooddollarData(data)
              }}
              gooddollarlink={gooddollarLink}
              style={{ fontSize: 20, padding: 20 }}
              rdu="gasdasd"
            >
              Loggin With GOODDOLLAR
            </LoginButton>
          </>
        ) : (
          <div>
            <p>Logged In</p>
            <p>Name : {gooddollarData.fullName}</p>
            <button
              onClick={() => {
                setGooddollarData({});
                window.location.href = "https://gooddollar.netlify.app";
              }}
              style={{ fontSize: 20, padding: 20 }}
            >
              Logout
            </button>
          </div>
        )}
    </div>
  );
}