Skip to content

Instantly share code, notes, and snippets.

View kvnam's full-sized avatar

Kavita Nambissan kvnam

  • Toronto, Canada
  • 19:23 (UTC -06:00)
View GitHub Profile
@kvnam
kvnam / Webpack.server.config.js
Created July 21, 2019 15:24
SSR Round One - Webpack Config
const path = require('path');
// To prevent node_modules from being bundled into our final build file
const nodeExternals = require('webpack-node-externals');
module.exports = {
entry: path.resolve(__dirname, 'server', 'server.js'),
output: {
path: path.resolve(__dirname, 'build'),
filename: 'server.js'
},
@kvnam
kvnam / 1 server-app.js
Last active July 21, 2019 15:34
Round One SSR
import path from 'path';
import React from 'react';
import ReactDOMServer from 'react-dom/server';
import express from 'express';
//My HTML wrapper component where I insert the string returned
// by renderToString()
import Html from './html';
// The basic App component used by our React application
import App from '../src/App';
@kvnam
kvnam / ChatRoom.js
Created May 22, 2019 02:57
ReactChat-ChatComponent
import React, { useState, useEffect } from "react";
import Grid from "@material-ui/core/Grid";
import {
createStyles,
Theme,
WithStyles,
withStyles,
Typography,
Button
} from "@material-ui/core";
@kvnam
kvnam / 1-WebSocketService.js
Last active May 22, 2019 02:39
ReactChat-WebSocket
import WebSocket from 'isomorphic-ws';
const WS_URL = process.env.REACT_APP_WEBSOCKET_URL || "";
let WSService = null;
class WebSocketService {
constructor() {
this.websocket = null;
@kvnam
kvnam / package.json
Created May 14, 2019 03:44
React Chat app dependencies
{
"name": "RC-Chat",
"dependencies": {
"@material-ui/core": "^3.9.3",
"@material-ui/icons": "^3.0.2",
"@types/react": "^16.8.14",
"@types/react-dom": "^16.8.4",
"dotenv": "^8.0.0",
"isomorphic-ws": "^4.0.1",
"jsdoc": "^3.5.5",
@kvnam
kvnam / ConnectionSchema.js
Last active July 11, 2020 07:50
Connect lambda
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
let db = null;
//Initialize connection to MongoDB
module.exports.initMongo = async () => {
return new Promise((resolve, reject) => {
// I set up environment variables for my lambda to allow easy change. This is useful
// since I stop / start my EC2 instance often.
// In my case MONGO_HOST is the private IP of my EC2 instance, since I'm using VPC peering
@kvnam
kvnam / Connect.js
Last active March 19, 2019 11:07
WebSocket Event
{
...,
 multiValueHeaders: 
 {
Host: [ 'myapiID.execute-api.ap-south-1.amazonaws.com' ],
'Sec-WebSocket-Extensions': [ 'permessage-deflate; client_max_window_bits' ],
'Sec-WebSocket-Key': [ 'mNRIjuK+dWTWDS8VCYeuyg==' ],
'Sec-WebSocket-Version': [ '13' ],
'X-Amzn-Trace-Id': [ 'Root=1–abc–xyz' ],
'X-Forwarded-For': [ 'my public IP' ],
@kvnam
kvnam / tokenvalidation.js
Created November 27, 2018 10:49
ReactPress Token validation
export const validateToken = (url) => {
return dispatch => {
let token = null, email = null;
if(localStorage.getItem("token")){
token = localStorage.getItem("token");
email = localStorage.getItem("email");
}
if(token){
axios.post("/simple-jwt-authentication/v1/token/validate", {},{headers: {"Authorization": "Bearer " + token}}).then(res => {
if(res.data.data.status === 200){
@kvnam
kvnam / usersignout-action.js
Created November 27, 2018 10:44
ReactPress User signout Action
export const userSignout = (token) => {
return dispatch => {
axios.post("/simple-jwt-authentication/v1/token/revoke", {}, {headers: {"Authorization": "Bearer " + token}}).then(response => {
//Clear local storage
localStorage.removeItem("token");
localStorage.removeItem("email");
dispatch({type: actionTypes.USER_SIGNOUT_SUCCESS});
}).catch(err => {
dispatch({type: actionTypes.USER_SIGNOUT_FAIL, error: err});
})
@kvnam
kvnam / Signout.js
Created November 27, 2018 10:42
ReactPress Sign out
import React, { Component } from "react";
import { connect } from "react-redux";
import { Redirect } from "react-router-dom";
import * as actionTypes from "../../store/actions/index.actions";
class Signout extends Component{
componentDidMount(){
if(this.props.token){
//Dispatch User Signout action
this.props.logoutUser(this.props.token);