Skip to content

Instantly share code, notes, and snippets.

View SahanAmarsha's full-sized avatar
🏠
Working from home

Sahan Amarsha SahanAmarsha

🏠
Working from home
View GitHub Profile
@SahanAmarsha
SahanAmarsha / App.tsx
Created March 15, 2022 18:12
App.tsx After Adding Navbar and Footer
// src/App.tsx
import React from "react";
import { Box, CssBaseline, ThemeProvider } from "@mui/material";
import { createTheme } from "@mui/material/styles";
import { BrowserRouter as Router, Routes, Route } from "react-router-dom";
import { routes as appRoutes } from "./routes";
import Navbar from "./components/Navbar";
import Footer from "./components/Footer";
@SahanAmarsha
SahanAmarsha / index.js
Last active November 7, 2023 20:53
SahanAmarsha/lambda-image-resizer/index.js
const aws = require("aws-sdk");
const sharp = require("sharp");
const s3 = new aws.S3();
exports.handler = async function (event, context) {
console.log("Received S3 event:", JSON.stringify(event, null, 2));
if (event.Records[0].eventName === "ObjectRemoved:Delete") {
return;
}
const bucket = event.Records[0].s3.bucket.name;
@SahanAmarsha
SahanAmarsha / index.ts
Last active September 27, 2022 13:15
Configure AWS Amplify
import { Auth, Amplify } from "aws-amplify";
//configure amplify
import awsconfig from './aws-exports';
Auth.configure(awsconfig);
Amplify.configure(awsconfig);
@SahanAmarsha
SahanAmarsha / App.ts
Created September 27, 2022 13:24
Record search word event using AWS Amplify Analytics category
// import analytics
import { Analytics } from "aws-amplify";
// record searched word in Analytics
const recordWordInAnalytics = (searchWord: string) => {
if (searchWord !== "") {
const lowerCaseWord = searchWord?.toLowerCase();
console.log("recordWordInAnalytics: ", lowerCaseWord);
try {
Analytics.record({
@SahanAmarsha
SahanAmarsha / App.ts
Created September 27, 2022 13:44
Calling 'recordWordInAnalytics' function
const searchDefinitions = async () => {
...
recordWordInAnalytics(searchInput); // call the function to record search event
const response = await fetch(
`https://api.dictionaryapi.dev/api/v2/entries/en/${searchInput}`,
{
method: "GET",
@SahanAmarsha
SahanAmarsha / AuthContext.tsx
Created January 16, 2023 18:55
Authentication Context File
import React, { useEffect, useState } from "react";
import { Auth, Hub } from "aws-amplify";
import LoadingSpinner from "../components/LoadingSpinner";
export interface IAuthContextType {
user: any;
isAuthenticated: boolean;
isAuthenticating: boolean;
unverifiedAccount: { email: string; password: string };
signIn: (p: { email: string; password: string }) => Promise<any>;
@SahanAmarsha
SahanAmarsha / useAuth.ts
Created January 16, 2023 19:01
useAuth hook
import {useContext} from "react";
import {AuthContext, IAuthContextType} from "../contexts/AuthContext";
const useAuth = () => useContext(AuthContext) as IAuthContextType;
export default useAuth;
@SahanAmarsha
SahanAmarsha / index.tsx
Created January 16, 2023 19:26
Configure AWS Amplify
// import aws amplify
import { Amplify } from "aws-amplify";
import awsExports from "./aws-exports";
// configure amplify
Amplify.configure(awsExports);
@SahanAmarsha
SahanAmarsha / index.tsx
Created January 16, 2023 19:30
Final index.tsx file after adding AuthProvider
import * as React from "react";
import { createRoot } from "react-dom/client";
import CssBaseline from "@mui/material/CssBaseline";
import { ThemeProvider } from "@mui/material/styles";
import App from "./App";
import theme from "./theme";
// import aws amplify
import { Amplify } from "aws-amplify";
import awsExports from "./aws-exports";
import AuthProvider from "./contexts/AuthContext";
@SahanAmarsha
SahanAmarsha / SignUp.tsx
Last active January 17, 2023 09:55
SignUp Page
.
.
import { useNavigate } from "react-router-dom";
import useAuth from "../hooks/useAuth";
import { useEffect } from "react";
import LoadingSpinner from "../components/LoadingSpinner";
export default function SignUp() {
.
.