From e77bc79fc33b3751ff86a5993907b204927ed731 Mon Sep 17 00:00:00 2001
From: peepo77 <96831986+peepo77@users.noreply.github.com>
Date: Wed, 29 Jun 2022 18:23:33 +0530
Subject: [PATCH 01/18] Update auth_required.js
---
middlewares/auth_required.js | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/middlewares/auth_required.js b/middlewares/auth_required.js
index 7f5e7bc..ec9eede 100644
--- a/middlewares/auth_required.js
+++ b/middlewares/auth_required.js
@@ -1,3 +1,17 @@
+import { useRouter } from "next/router";
+import { useEffect } from "react";
+import { useAuth } from "../context/auth"
+
/***
* @todo Redirect the user to login page if token is not present.
*/
+export default function authRequired(){
+
+ const router = useRouter()
+ const { token } = useAuth()
+ useEffect(()=>{
+ if(!token){
+ router.push('/login')
+ }
+ },[])
+}
From 7ed52f255a37fd46077bcff48c423942e8ef60f1 Mon Sep 17 00:00:00 2001
From: peepo77 <96831986+peepo77@users.noreply.github.com>
Date: Wed, 29 Jun 2022 18:24:31 +0530
Subject: [PATCH 02/18] Update auth_required.js
---
middlewares/auth_required.js | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/middlewares/auth_required.js b/middlewares/auth_required.js
index ec9eede..24831b6 100644
--- a/middlewares/auth_required.js
+++ b/middlewares/auth_required.js
@@ -2,9 +2,7 @@ import { useRouter } from "next/router";
import { useEffect } from "react";
import { useAuth } from "../context/auth"
-/***
- * @todo Redirect the user to login page if token is not present.
- */
+
export default function authRequired(){
const router = useRouter()
@@ -13,5 +11,5 @@ export default function authRequired(){
if(!token){
router.push('/login')
}
- },[])
+ },[token])
}
From 133010094b4051e376596d0f85525a973f283f07 Mon Sep 17 00:00:00 2001
From: peepo77 <96831986+peepo77@users.noreply.github.com>
Date: Wed, 29 Jun 2022 18:25:46 +0530
Subject: [PATCH 03/18] Update no_auth_required.js
---
middlewares/no_auth_required.js | 17 ++++++++++++++---
1 file changed, 14 insertions(+), 3 deletions(-)
diff --git a/middlewares/no_auth_required.js b/middlewares/no_auth_required.js
index 82558d4..d3526ca 100644
--- a/middlewares/no_auth_required.js
+++ b/middlewares/no_auth_required.js
@@ -1,3 +1,14 @@
-/***
- * @todo Redirect the user to main page if token is present.
- */
\ No newline at end of file
+import { useRouter } from "next/router";
+import { useEffect } from "react";
+import { useAuth } from "../context/auth";
+
+export default function noAuthRequired(){
+ const router = useRouter()
+ const { token } = useAuth()
+
+ useEffect(()=>{
+ if(token){
+ router.push('/')
+ }
+ },[token])
+}
From 2d42a9e013e20d9489eb93ce31cbaaf6b134f2ab Mon Sep 17 00:00:00 2001
From: peepo77 <96831986+peepo77@users.noreply.github.com>
Date: Wed, 29 Jun 2022 18:27:46 +0530
Subject: [PATCH 04/18] Update auth_required.js
---
middlewares/auth_required.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/middlewares/auth_required.js b/middlewares/auth_required.js
index 24831b6..c2f20fd 100644
--- a/middlewares/auth_required.js
+++ b/middlewares/auth_required.js
@@ -8,7 +8,7 @@ export default function authRequired(){
const router = useRouter()
const { token } = useAuth()
useEffect(()=>{
- if(!token){
+ if(token===undefined){
router.push('/login')
}
},[token])
From 2bf957d36424980c9449e4f7a40cad6ec044a08f Mon Sep 17 00:00:00 2001
From: peepo77 <96831986+peepo77@users.noreply.github.com>
Date: Wed, 29 Jun 2022 18:37:19 +0530
Subject: [PATCH 05/18] Update index.js
---
pages/index.js | 50 +++++++++++++++++++++++++++++++++++++++++++-------
1 file changed, 43 insertions(+), 7 deletions(-)
diff --git a/pages/index.js b/pages/index.js
index c3c9134..c86b47e 100644
--- a/pages/index.js
+++ b/pages/index.js
@@ -1,32 +1,68 @@
import TodoListItem from '../components/TodoListItem'
import AddTask from '../components/AddTask'
+import { API_URL } from '../utils/constants'
+import authRequired from '../middlewares/auth_required'
import { useEffect, useState } from 'react'
import axios from '../utils/axios'
import { useAuth } from '../context/auth'
+
export default function Home() {
const { token } = useAuth()
const [tasks, setTasks] = useState([])
+
+ authRequired();
+
function getTasks() {
- /***
- * @todo Fetch the tasks created by the user.
- * @todo Set the tasks state and display them in the using TodoListItem component
- * The user token can be accessed from the context using useAuth() from /context/auth.js
- */
+
+ axios({
+ headers: {
+ Authorization: 'Token ' + token
+ },
+ url: API_URL + 'todo/',
+ method: 'GET',
+ }).then(function ({ data, status }) {
+ setTasks(data);
+ // console.log(data)
+ }).catch(err => {
+ console.log("error")
+ });
}
+
+ useEffect(() => {
+ if (token != undefined)getTasks();
+ }, [tasks])
+
+
return (
+ <>
-
+
Available Tasks
-
+ {tasks.map(task => {
+ return
+ })}
+
+ >
)
}
From d47da7965ba621bf966d6e1559e21731d4b18e3f Mon Sep 17 00:00:00 2001
From: peepo77 <96831986+peepo77@users.noreply.github.com>
Date: Wed, 29 Jun 2022 18:51:02 +0530
Subject: [PATCH 06/18] Update AddTask.js
---
components/AddTask.js | 47 ++++++++++++++++++++++++++++++++++++++-----
1 file changed, 42 insertions(+), 5 deletions(-)
diff --git a/components/AddTask.js b/components/AddTask.js
index 9652adb..aa443dc 100644
--- a/components/AddTask.js
+++ b/components/AddTask.js
@@ -1,17 +1,54 @@
+import TodoListItem from '../components/TodoListItem'
+import { useEffect, useState } from 'react'
+import axios from '../utils/axios'
+import { useAuth } from '../context/auth'
+import { API_URL }from '../utils/constants'
+import { ToastContainer, toast } from 'react-toastify';
+import 'react-toastify/dist/ReactToastify.css';
+
+export function displaySuccessToast(message) {
+ toast.success(message);
+}
+export function displayWarnToast(message) {
+ toast.warn(message);
+}
+
+export function displayErrorToast(message) {
+ toast.error(message);
+}
export default function AddTask() {
const addTask = () => {
- /**
- * @todo Complete this function.
- * @todo 1. Send the request to add the task to the backend server.
- * @todo 2. Add the task in the dom.
- */
+ if (task===""){
+ displayWarnToast("Task is empty!!");
+ }
+ else{
+ axios({
+ headers: {
+ Authorization: 'Token ' + token
+ },
+ url: API_URL + "todo/create/",
+ method: 'POST',
+ data: {
+ title: task
+ },
+ }).then(res => {
+ setTask("");
+ props.displayTasks();
+ console.log(res);
+ displaySuccessToast("Task added!!!");
+ }).catch(function (err) {
+ displayErrorToast("Task couldn't be added");
+ })
+ }
}
return (
setTask(e.target.value)}
type='text'
className='todo-add-task-input px-4 py-2 placeholder-blueGray-300 text-blueGray-600 bg-white rounded text-sm border border-blueGray-300 outline-none focus:outline-none focus:ring w-full'
placeholder='Enter Task'
+ value={task}
/>