Skip to content

Instantly share code, notes, and snippets.

View nemo0's full-sized avatar
🎯
Focusing

Subha Chanda nemo0

🎯
Focusing
View GitHub Profile
@nemo0
nemo0 / app.js
Created November 20, 2023 13:09
Node.js code to help you get started with the Nimble E-commerce API for scraping Walmart data
require("dotenv").config();
const axios = require("axios");
const fs = require("fs");
const { AsyncParser } = require("@json2csv/node");
const token = Buffer.from(
process.env.NIMBLE_USERNAME + ":" + process.env.NIMBLE_PASSWORD
).toString("base64");
@nemo0
nemo0 / Call.js
Created May 28, 2023 07:40
Call.js Import
import Call from '../components/Call';
export default function Home() {
return (
<div>
<Call />
</div>
);
}
@nemo0
nemo0 / Call.js
Created May 28, 2023 07:39
Call.js UI
return (
<div className='p-10'>
<div className='flex justify-center mt-28'>
<>
{userId && (
<>
<div className='flex flex-col items-center space-y-6'>
<h1 className='font-bold text-xl'>Authenticated as {userId}</h1>
{authenticated && ringing && (
@nemo0
nemo0 / Call.js
Created May 28, 2023 07:38
Call.js Make Call Function
const makeCall = ({ userId, isVideoCall }) => {
const dialParams = { ...defaultCallParams, ...{ userId, isVideoCall } };
let call = SendBirdCall.dial(dialParams, (call, error) => {
if (error) {
setCall(null);
}
});
call = setDefaultCallHandlers(call);
setConnecting(true);
@nemo0
nemo0 / Call.js
Created May 28, 2023 07:38
Call.js useEffect Hook
useEffect(() => {
if (userId) {
initiateSendbirdCalls();
setDefaultCallParams({
callOption: {
localMediaView: document.getElementById('local_video_element_id'),
remoteMediaView: document.getElementById('remote_video_element_id'),
audioEnabled: true,
videoEnabled: true,
},
@nemo0
nemo0 / Call.js
Created May 28, 2023 07:37
Call.js Default Call Handlers
const setDefaultCallHandlers = (call) => {
call.onEstablished = () => {
setRinging(false);
setConnecting(false);
console.log('Call established');
};
call.onConnected = () => {
setRinging(false);
setConnected(true);
setConnecting(false);
@nemo0
nemo0 / Call.js
Created May 28, 2023 07:36
Call.js Initiate SendBird Calls
const initiateSendbirdCalls = async () => {
const APP_ID = process.env.NEXT_PUBLIC_APP_ID;
SendBirdCall.init(APP_ID);
try {
setLoading(true);
await authenticate();
await SendBirdCall.connectWebSocket();
addEventHandler();
setAuthenticated(true);
@nemo0
nemo0 / Call.js
Created May 28, 2023 07:36
Call.js Event Handler
const addEventHandler = () => {
SendBirdCall.addListener(`CALLS_HANDLER_${userId}`, {
onRinging: (call) => {
console.log('Receiving call');
call = setDefaultCallHandlers(call);
setRinging(true);
setCall(call);
},
});
};
@nemo0
nemo0 / Call.js
Created May 28, 2023 07:35
Call.js Authenticate Function
const authenticate = async () => {
try {
const result = await new Promise((resolve, reject) => {
SendBirdCall.authenticate({ userId }, (res, error) => {
if (error) {
reject(error);
} else {
resolve(res);
}
});
@nemo0
nemo0 / Call.js
Created May 28, 2023 07:34
Call.js States
const Call = () => {
const [userId, setUserId] = useState('');
const [call, setCall] = useState(null);
const [authenticated, setAuthenticated] = useState(false);
const [ringing, setRinging] = useState(false);
const [connected, setConnected] = useState(false);
const [connecting, setConnecting] = useState(false);
const [loading, setLoading] = useState(false);
const [muted, setMuted] = useState(false);
const [mutedVideo, setMutedAudio] = useState(false);