# convo-quantum-sdk

> SDK for Quantum

Latest version **1.0.0-RC.0** (published 2020-04-22) · ISC license · 0 weekly downloads

## Install

```sh
npm install convo-quantum-sdk
pnpm add convo-quantum-sdk
yarn add convo-quantum-sdk
bun add convo-quantum-sdk
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.0-RC.0 |
| Published | 2020-04-22 |
| First published | 2020-02-20 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 1 |
| Unpacked size | 20.5 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Felipe Medeiros B. |
| Maintainers | felemedeiros |

## Links

- npm: https://www.npmjs.com/package/convo-quantum-sdk
- npm.io page: https://npm.io/package/convo-quantum-sdk

## Dependencies (1)

- [phoenix](https://npm.io/package/phoenix.md) ^1.4.16

## Recent versions

- 1.0.0-RC.0 (latest) — 2020-04-22
- 0.1.0 — 2020-04-01
- 0.0.2 — 2020-02-20
- 0.0.1 — 2020-02-20

## README

[![Convo Logo](https://images.squarespace-cdn.com/content/5caf9cbad7819e0db285aa07/1555013381013-U5SU1QS1ISUC3DA6XZ8A/Convo+Logo+Web.png?content-type=image%2Fpng)](http://https://www.convorelay.com/)

# Quantum SDK

## Installation

This is a Node.js module available through the npm registry.

Before installing, [download and install Node.js](https://nodejs.org/en/download/). Node.js 0.10 or higher is required.

Installation is done using the[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally):

```bash
$ npm install convo-quantum-sdk
```

Import in ReactJS project:

```javascript
import QuantumSdk from "convo-quantum-sdk";
```

*Initializing QuantumSdk requires the mock server to e available for testing, check branch feature/PLT-74*

*Code for mock server is available [here](https://github.com/convo/QuantumSDK/pull/7/files)*

Mock server is initialized by running command:

```bash
$ node index.js
```

## Usage example:

```javascript
import React from "react";
import "./App.css";
import QuantumSdk from "convo-quantum-sdk";

function App() {
  return (
    <div className="App">
      <header className="App-header">
        <video id="remoteVideo" autoPlay />
        <video id="viVideo" autoPlay />
        <button onClick={initSdk}>Init SDK</button>
      </header>
    </div>
  );
}

export default App;

function initSdk() {
  QuantumSdk.builder()
    .withRemoteElementId("remoteVideo")
    .withViElementId("viVideo")
    .withPhoneNumber("2402066101")
    .withOnCalling(() => {
      alert("withOnCalling");
    })
    .withOnRinging(() => {
      alert("withOnRinging");
    })
    .withOnAccepted(() => {
      alert("withOnAccepted");
    })
    .withOnIncomingCall((callerNumber) => {
      alert("Incoming Call from: " + callerNumber);
    })
    .withOnHangUp(() => {
      alert("withOnHangUp");
    })
    .initSdk();
}
```

### Enumarate devices & selecting specific device

```javascript
/**
 * Returns an array of MediaDevices available
 * @param {QuantumSdk.MediaDeviceKind} kind 
 */
async function enumerateDevices(kind) {
  let devices = kind
    ? await QuantumSdk.enumerateDevices(kind)
    : await QuantumSdk.enumerateDevices();

  console.log(devices);
}
```

Yuo can reuse *deviceId* parameter from *enumerateDevices()* for selecting a
specific device:

```javascript
async function setVideoDevice() {
  const videoDevices = await QuantumSdk.enumerateDevices(
    QuantumSdk.MediaDeviceKind.VIDEOINPUT
  );

  const deviceId = videoDevices[0]["deviceId"];

  QuantumSdk.setVideoSource(deviceId);
}

async function setAudioInput() {
   const audioDevices = await QuantumSdk.enumerateDevices(
     QuantumSdk.MediaDeviceKind.AUDIOINPUT
   );
 
   const deviceId = audioDevices[0]["deviceId"];
 
   QuantumSdk.setAudioSource(deviceId);
}

async function setAudioOutput() {
  const audioDevices = await QuantumSdk.enumerateDevices(
    QuantumSdk.MediaDeviceKind.AUDIOOUTPUT
  );

  const deviceId = audioDevices[0]["deviceId"];

  QuantumSdk.setAudioSink(deviceId);
}
```

### Make call and hang up

```javascript
function makeCall(callConfiguration = {phoneNumber}) {
  QuantumSdk.makeCall(callConfiguration);
}

function answerCall() {
  QuantumSdk.answerCall();
}

function declineCall() {
  QuantumSdk.declineCall();
}

function hangUp() {
  QuantumSdk.hangUp();
}
```

### Toggling media while in call

```javascript
function toggleVideo() {
  QuantumSdk.toggleVideo();
}

function toggleMic() {
  QuantumSdk.toggleMic();
}
```

---
_Source: https://npm.io/package/convo-quantum-sdk · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
