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 / SignIn.tsx
Created January 17, 2023 10:10
Add 'signIn()' to SignIn.tsx page
.
.
import useAuth from "../hooks/useAuth";
import { useEffect } from "react";
import LoadingSpinner from "../components/LoadingSpinner";
export default function SignIn() {
const navigate = useNavigate();
const { signIn, isAuthenticated, isAuthenticating } = useAuth();
.
@SahanAmarsha
SahanAmarsha / DashboardLayout.tsx
Created January 17, 2023 10:05
Dashboard Layout Component
.
.
import LoadingSpinner from "./LoadingSpinner";
import useAuth from "../hooks/useAuth";
.
.
const DashboardLayout = () => {
const navigate = useNavigate();
const [open, setOpen] = React.useState(true);
const { isAuthenticating, isAuthenticated, signOut } = useAuth();
@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() {
.
.
@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 / 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 / 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 / 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 / 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 / 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 / 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);