# Connect Wallet

## 1. Request.connectWallet <a href="#id-1.-request.connectwallet" id="id-1.-request.connectwallet"></a>

**Parameters**

<table><thead><tr><th width="183">Name</th><th width="178.33333333333331">Type</th><th>Description</th></tr></thead><tbody><tr><td>chainId</td><td>number</td><td>Chain ID of the particular network</td></tr><tr><td>appName</td><td>string</td><td>Name of the FAVORLET app that will appear when the wallet is connected</td></tr></tbody></table>

**Response**

<table><thead><tr><th width="183">Name</th><th width="178.33333333333331">Type</th><th>Description</th></tr></thead><tbody><tr><td>requestId</td><td>string</td><td>ID to track the operation or transaction request</td></tr><tr><td>expiredAt</td><td>number</td><td>The amount of time (in seconds) that an operation or transaction request expires.</td></tr></tbody></table>

**Example**

```javascript
import { Request } from "favorlet.js";

const response = await Request.connectWallet({
  chainId: 8217, // 해당 체인 id
  appName: "BlockChainApp" // FAVORLET 앱에 노출
});

console.log(response);
/*
{
  requestId: "635b7750-5de2-48eb-9a6c-fba8763f7484",
  expiredAt: 1667890657,
}
*/
```

### createDeepLink <a href="#id-2.-createdeeplink" id="id-2.-createdeeplink"></a>

**Parameters**

<table><thead><tr><th width="185">Type</th><th>Description</th></tr></thead><tbody><tr><td>string</td><td>Request ID received upon making the request</td></tr></tbody></table>

**Response**

<table><thead><tr><th width="185">Type</th><th>Description</th></tr></thead><tbody><tr><td>string</td><td>DeepLink to the specific request page within the FAVORLET app</td></tr></tbody></table>

**Example**

```javascript
import { createDeepLink } from "favorlet.js";

const deepLink = createDeepLink(response.requestId); // Request를 통해 받은 requestId

/*
- PC: 생성된 deepLink를 qrcode 라이브러리를 이용하여 QR 생성 후 스마트폰으로 스캔
- Mobile: window.location.href 등을 사용하여 생성된 deepLink로 직접 이동
*/
console.log(deepLink);
// https://app.favorlet.link/?requestId=635b7750-5de2-48eb-9a6c-fba8763f7484
```

### 3. receipt <a href="#id-3.-receipt" id="id-3.-receipt"></a>

```javascript
import { receipt } from "favorlet.js";

const result = await receipt(response.requestId); // Request를 통해 받은 requestId

console.log(result);
/*
- status에 따라 이후 분기 처리

### requested
{
  requestId: "635b7750-5de2-48eb-9a6c-fba8763f7484",
  expiredAt: 1667890657,
  action: "connectWallet",
  connectWallet: {
    status: "requested"
  }
}

### canceled
{
  requestId: "635b7750-5de2-48eb-9a6c-fba8763f7484",
  expiredAt: 1667890657,
  action: "connectWallet",
  connectWallet: {
    status: "canceled",
    address: null,
    errorMessage: null
  }
}

### succeed
{
  requestId: "635b7750-5de2-48eb-9a6c-fba8763f7484",
  expiredAt: 1667890657,
  action: "connectWallet",
  connectWallet: {
    status: "succeed",
    address: "0x817228A2B8BFbb73d504504696fD6E423b9D561B",
    errorMessage: null
  }
}
*/
```

## 2. Request.connectWalletAndSignMessage (>= v1.3.0)

It completes the wallet connection and signature verification with a single QR code process.

#### Parameters

<table><thead><tr><th width="183">Name</th><th width="178.33333333333331">Type</th><th>Description</th></tr></thead><tbody><tr><td>chainId</td><td>number</td><td>Chain ID of the particular network (optional)</td></tr><tr><td>appName</td><td>string</td><td>Name of the FAVORLET app that will appear when the wallet is connected</td></tr><tr><td>message</td><td>string</td><td>Signature Message</td></tr></tbody></table>

#### Response

<table><thead><tr><th width="183">Name</th><th width="178.33333333333331">Type</th><th>Description</th></tr></thead><tbody><tr><td>requestId</td><td>string</td><td>ID to track the operation or transaction request</td></tr><tr><td>expiredAt</td><td>number</td><td>The amount of time (in seconds) that an operation or transaction request expires.</td></tr></tbody></table>

```javascript
import { Request } from "favorlet.js";

const response = await Request.connectWalletAndSignMessage({
  chainId: 8217, // 해당 체인 id
  appName: "BlockChainApp" // FAVORLET 앱에 노출
  message: "sign message" // 서명할 메세지
});

console.log(response);
/*
{
  requestId: "635b7750-5de2-48eb-9a6c-fba8763f7484",
  expiredAt: 1667890657,
}
*/
```

### createDeepLink

#### Parameters

<table><thead><tr><th width="185">Type</th><th>Description</th></tr></thead><tbody><tr><td>string</td><td>Request ID received upon making the request</td></tr></tbody></table>

#### Response

<table><thead><tr><th width="185">Type</th><th>Description</th></tr></thead><tbody><tr><td>string</td><td>DeepLink to the specific request page within the FAVORLET app</td></tr></tbody></table>

#### Example

```javascript
import { createDeepLink } from "favorlet.js";

const deepLink = createDeepLink(response.requestId); // Request를 통해 받은 requestId

/*
- PC: 생성된 deepLink를 qrcode 라이브러리를 이용하여 QR 생성 후 스마트폰으로 스캔
- Mobile: window.location.href 등을 사용하여 생성된 deepLink로 직접 이동
*/
console.log(deepLink);
// https://app.favorlet.link/?requestId=635b7750-5de2-48eb-9a6c-fba8763f7484
```

### receipt

```javascript
import { receipt } from "favorlet.js";

const result = await receipt(response.requestId); // Request를 통해 받은 requestId

console.log(result);
/*
- status에 따라 이후 분기 처리

### requested
{
  requestId: "635b7750-5de2-48eb-9a6c-fba8763f7484",
  expiredAt: 1667890657,
  action: "connectWalletAndSignMessage",
  connectWalletAndSignMessage: {
    status: "requested"
  }
}

### canceled
{
  requestId: "635b7750-5de2-48eb-9a6c-fba8763f7484",
  expiredAt: 1667890657,
  action: "connectWalletAndSignMessage",
  connectWalletAndSignMessage: {
    status: "canceled",
    address: null,
    signature: null,
    errorMessage: null
  }
}

### succeed
{
  requestId: "635b7750-5de2-48eb-9a6c-fba8763f7484",
  expiredAt: 1667890657,
  action: "connectWalletAndSignMessage",
  connectWalletAndSignMessage: {
    "status": "succeed",
    "address": "0x123...123”,
    "signature": "0xasdkasldjwqevnwrejkqwkeqlwkejq"
  }
}
*/
```
