From 6dd8d9c8cb6c0289d85de8d5f728e95f58d2fa9c Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Mon, 30 Nov 2020 20:39:32 +0200 Subject: [PATCH] Simple delete functionality to Signup admin --- src/models/Signup.ts | 22 ++++++++++++++++++---- src/pages/admin/SignupListPage.tsx | 20 ++++++++++++++++++-- 2 files changed, 36 insertions(+), 6 deletions(-) diff --git a/src/models/Signup.ts b/src/models/Signup.ts index 3e11a4e..d788e8f 100644 --- a/src/models/Signup.ts +++ b/src/models/Signup.ts @@ -8,7 +8,7 @@ export interface Signup { answer: string; } -export async function getSignup(id: number): Promise { +export const getSignup = async (id: number): Promise => { try { const resp = await axios.get(`${url}${id}`, { headers: { @@ -22,7 +22,7 @@ export async function getSignup(id: number): Promise { } } -export async function createSignup(data: Signup): Promise { +export const createSignup = async (data: Signup): Promise => { try { const resp = await axios.post(url, data); return resp.data; @@ -32,7 +32,7 @@ export async function createSignup(data: Signup): Promise { } } -export async function updateSignup(data: Signup, uuid: string): Promise { +export const updateSignup = async (data: Signup, uuid: string): Promise => { try { const { id } = data; if (!id) throw new Error("SignupId required!"); @@ -46,7 +46,7 @@ export async function updateSignup(data: Signup, uuid: string): Promise } } -export async function getSignupUUID(id: number, uuid: string): Promise { +export const getSignupUUID = async (id: number, uuid: string): Promise => { try { const resp = await axios.get(`${url}${id}/edit/`, { params: { @@ -59,3 +59,17 @@ export async function getSignupUUID(id: number, uuid: string): Promise { throw err; } } + +export const deleteSignup = async (id: number): Promise => { + try { + const resp = await axios.delete(`${url}${id}`, { + headers: { + "Authorization": getAuthHeader() + }, + }); + return resp.data; + } catch (err) { + console.error(err); + throw err; + } +} diff --git a/src/pages/admin/SignupListPage.tsx b/src/pages/admin/SignupListPage.tsx index e030d07..186bed7 100644 --- a/src/pages/admin/SignupListPage.tsx +++ b/src/pages/admin/SignupListPage.tsx @@ -3,7 +3,7 @@ import { Helmet } from "react-helmet"; import { RouteComponentProps } from "react-router-dom"; import AdminListCommon from "@views/admin/AdminListCommon"; import { SignupForm, getForm, getSignups } from "@models/SignupForm"; -import { Signup } from "@models/Signup"; +import { Signup, deleteSignup } from "@models/Signup"; interface MatchParams { id?: string; @@ -29,7 +29,18 @@ const SignupEmailPage: React.FC = ({ match: { params: { id id: q.id })) : []; - const title = signupForm ? signupForm.title_fi : "Loading..." + const title = signupForm ? signupForm.title_fi : "Loading..."; + + const confirmDelete = async (signup: Signup, question: any) => { + if(confirm(`Delete: ${signup.id}: ${signup.answer[question.id]}; Are you sure?`) === true) { + try { + await deleteSignup(signup.id); + setSignups(signups.filter(s => s.id !== signup.id)) + } catch (err) { + alert("Delete failed!") + } + } + } return ( @@ -53,6 +64,11 @@ const SignupEmailPage: React.FC = ({ match: { params: { id {s.answer[q.id]} ))} + + + ))}