Simple delete functionality to Signup admin

This commit is contained in:
Aarni Halinen
2020-11-30 20:39:32 +02:00
parent 6e3a916a3b
commit 6dd8d9c8cb
2 changed files with 36 additions and 6 deletions
+18 -4
View File
@@ -8,7 +8,7 @@ export interface Signup {
answer: string;
}
export async function getSignup(id: number): Promise<Signup> {
export const getSignup = async (id: number): Promise<Signup> => {
try {
const resp = await axios.get(`${url}${id}`, {
headers: {
@@ -22,7 +22,7 @@ export async function getSignup(id: number): Promise<Signup> {
}
}
export async function createSignup(data: Signup): Promise<Signup> {
export const createSignup = async (data: Signup): Promise<Signup> => {
try {
const resp = await axios.post(url, data);
return resp.data;
@@ -32,7 +32,7 @@ export async function createSignup(data: Signup): Promise<Signup> {
}
}
export async function updateSignup(data: Signup, uuid: string): Promise<Signup> {
export const updateSignup = async (data: Signup, uuid: string): Promise<Signup> => {
try {
const { id } = data;
if (!id) throw new Error("SignupId required!");
@@ -46,7 +46,7 @@ export async function updateSignup(data: Signup, uuid: string): Promise<Signup>
}
}
export async function getSignupUUID(id: number, uuid: string): Promise<Signup> {
export const getSignupUUID = async (id: number, uuid: string): Promise<Signup> => {
try {
const resp = await axios.get(`${url}${id}/edit/`, {
params: {
@@ -59,3 +59,17 @@ export async function getSignupUUID(id: number, uuid: string): Promise<Signup> {
throw err;
}
}
export const deleteSignup = async (id: number): Promise<Signup> => {
try {
const resp = await axios.delete(`${url}${id}`, {
headers: {
"Authorization": getAuthHeader()
},
});
return resp.data;
} catch (err) {
console.error(err);
throw err;
}
}
+18 -2
View File
@@ -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<SignupEmailPageProps> = ({ 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 (
<AdminListCommon>
@@ -53,6 +64,11 @@ const SignupEmailPage: React.FC<SignupEmailPageProps> = ({ match: { params: { id
{s.answer[q.id]}
</td>
))}
<td>
<button onClick={() => confirmDelete(s, questions[0])}>
Delete
</button>
</td>
</tr>
))}
</tbody>