npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

react-clan-meeting

v1.0.24

Published

Official Clan Meeting Package For React Apps

Downloads

27

Readme

React Clan Meeting

Add features like video meeting, audio calling, screen sharing and file sharing to your React applications with the most affordable video API Clan Meeting.  

Installation

Execute the following in your project directory.

$ npm install react-clan-meeting

 

Usage

Create a file called clanMeeting.js and paste the following

import React, { useEffect } from "react";
import { clanMeeting } from "react-clan-meeting";

const VideoMeeting = ({
  domain,
  consumerId,
  optionalProperties,
  getInstance,
}) => {
  useEffect(() => {
    const script = document.createElement("script");
    script.src = `https://${domain}/external_api.js`;
    script.async = true;
    script.onload = () => scriptLoaded();
    document.body.appendChild(script);
  }, [domain, consumerId, optionalProperties.jwt]);

  const scriptLoaded = () => {
    const meeting = new clanMeeting(domain, consumerId, optionalProperties);
    meeting.start();
    getInstance(meeting);
  };

  return (
    <>
      <span
        style={{
          display: "flex",
          justifyContent: "center",
        }}
      >
        Loading. Please wait....
      </span>
    </>
  );
};

export default VideoMeeting;

 

Modify your App.js file as follows

All your meeting related customizations are to be included in this file. Please note the following:

  • Edit the file path for clanMeeting.js with respect to App.js while importing (see the line 3)
  • Add the domain, consumerId and the test JWT that has been shared with you in the following code.
  • JWT is only needed for the hosts. If you pass a valid JWT in the optionalProperties, this user will become a host. Read more about authentication and host privileges.
  • Add the properties that you need to optionalProperties. Click here to see all available properties.
  • Check Clan Meeting Video API events and methods to control the other aspects of the meeting.
import "./App.css";
import React, { useState } from "react";
import VideoMeeting from "./components/clanMeeting";

function App() {
  const [meeting, setMeetingInstance] = useState(null);

  // Create instance
  const getInstance = (instance) => {
    setMeetingInstance(instance);
  };

  // Add domain and consumerId here
  const domain = "<domain>";
  const consumerId = "<consumerId>";

  // Add properties here
  const optionalProperties = {
    roomName: "test",
    displayName: "Host",
    // Pass jwt only for the host.
    // When generating your own JWT token, please fetch the token from your backend server
    // Visit https://clanmeeting.com/docs/video-api-token-generation/generate-jwt/
    jwt: "<jwt_token>",
    enableJoinMeetingPage: false,
  };

  // Add JavaScript events and methods inside the IF block
  if (meeting) {
    // Example event that triggers if a participant joins the meeting
    // The callback listener is triggered in case this event occurs within the meeting
    const someoneJoinedLsnr = () => {
      console.log("Trigger custom logic of what happens if a participant joins the meeting");
    };

    // Start listening for the someoneJoined event
    meeting.on("someoneJoined", someoneJoinedLsnr);
  }

  return (
    <div className="App">
      <VideoMeeting
        domain={domain}
        consumerId={consumerId}
        optionalProperties={optionalProperties}
        getInstance={(data) => getInstance(data)}
      />
    </div>
  );
}

export default App;

 

Finally paste the following into your index.html file in the section

<div id="my-meeting" style="position: fixed; top: 0; left: 0; bottom: 0; right: 0; width: 100%; height: 100%; border: none; margin: 0; padding: 0; overflow: hidden; z-index: 99;"></div>

 

Ensure that strict mode is disabled in your src/index.js file

// change this
root.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>
);
// to below
root.render(
    <App />
);