yazid138 hace 3 años
padre
commit
b686494d49

+ 4 - 4
actions/notifikasi.js

@@ -5,9 +5,9 @@ const url = "http://rule.sidali.sixsenz.net";
 export const notifLaporanBaru = async (data) => {
 	try {
 		const response = await axios.post(url + "/notifikasi/laporan-baru", data);
-		return response.data;
+		return response.data || response;
 	} catch (error) {
-		if (error.response.data) return error.response.data;
+		if (error.response?.data) return error.response.data;
 		console.log(error);
 		return false;
 	}
@@ -18,7 +18,7 @@ export const notifKeberatan = async (data) => {
 		const response = await axios.post(url + "/notifikasi/keberatan", data);
 		return response.data;
 	} catch (error) {
-		if (error.response.data) return error.response.data;
+		if (error.response?.data) return error.response.data;
 		console.log(error);
 		return false;
 	}
@@ -29,7 +29,7 @@ export const notifBanding = async (data) => {
 		const response = await axios.post(url + "/notifikasi/banding", data);
 		return response.data;
 	} catch (error) {
-		if (error.response.data) return error.response.data;
+		if (error.response?.data) return error.response.data;
 		console.log(error);
 		return false;
 	}

+ 10 - 3
components/Extras/calendar.view.js

@@ -17,6 +17,7 @@ import moment from "moment";
 import { connect } from "react-redux";
 import Loader from "@/components/Common/Loader";
 import Router from "next/router";
+import { ToastContainer, toast } from "react-toastify";
 
 const status = [
 	{ value: "Ditindaklanjuti DIKTI", label: "Ditindaklanjuti DIKTI", className: "State-ACT" },
@@ -123,7 +124,7 @@ class Calendar extends Component {
 		this.handleEventCalendar(info);
 	};
 
-	handleEventCalendar = async ({ event }) => {
+	handleEventCalendar = ({ event }) => {
 		const number = this.props.query.number;
 		const ptId = this.props.query.ptId;
 		const data = {
@@ -132,8 +133,11 @@ class Calendar extends Component {
 			to_date: event.end || event.start,
 			background_color: event.backgroundColor,
 		};
-
-		const update = await updateJadwal({ number, ptId }, data);
+		toast.promise(updateJadwal({ number, ptId }, data), {
+			pending: "Loading",
+			success: "Success",
+			error: "Error",
+		});
 	};
 
 	defaultStatus = async (data) => {
@@ -152,11 +156,13 @@ class Calendar extends Component {
 		const { selectedOption } = this.state;
 		const { ptId, number } = this.props.query;
 		this.setState({ selectedOption });
+		const id = toast.loading("Please wait...");
 		if (selectedOption.value === this.getStatus()[1].value) {
 			const roleId = this.props.user.peran[0].peran.id;
 			await changeRoleData({ number, ptId }, { role_data: roleId === 2021 ? "dikti" : "lldikti" });
 			const statusData = roleId === 2021 ? status : statusLLDIKTI;
 			await addStatus({ number, ptId }, { status: statusData[0].value });
+			toast.update(id, { render: "All is good", type: "success", isLoading: false });
 			Router.push("/app/penjadwalan");
 			return;
 		}
@@ -166,6 +172,7 @@ class Calendar extends Component {
 			await activeLaporan({ number, ptId });
 		}
 		await addStatus({ number, ptId }, { status: selectedOption.value });
+		toast.update(id, { render: "All is good", type: "success", isLoading: false, autoClose: true, closeButton: true });
 	};
 
 	render() {

+ 4 - 0
components/Layout/Header.js

@@ -11,6 +11,9 @@ import * as actions from "../../store/actions/actions";
 
 import ToggleFullscreen from "../Common/ToggleFullscreen";
 import HeaderSearch from "./HeaderSearch";
+import { ToastContainer, toast } from "react-toastify";
+
+import "react-toastify/dist/ReactToastify.css";
 
 class Header extends Component {
 	state = {
@@ -72,6 +75,7 @@ class Header extends Component {
 	render() {
 		return (
 			<header className="topnavbar-wrapper">
+				<ToastContainer />
 				{/* START Top Navbar */}
 				<nav className="navbar topnavbar">
 					{/* START navbar header */}

+ 11 - 3
components/Pelaporan/InputData.js

@@ -5,6 +5,9 @@ import { createPelaporan } from "@/actions/pelaporan";
 import Select from "react-select";
 import { Row, Col, FormGroup, Input } from "reactstrap";
 import { connect } from "react-redux";
+import { ToastContainer, toast } from "react-toastify";
+
+import "react-toastify/dist/ReactToastify.css";
 
 let Dropzone = null;
 class DropzoneWrapper extends Component {
@@ -104,8 +107,7 @@ export class InputData extends Component {
 		formdata.append("pt_id", this.props.query.ptId);
 		formdata.append("description", this.state.keteranganLaporan);
 		formdata.append("is_public", false);
-		if (user.peran[0].peran.id === 2021) 
-			formdata.append("role_data", "lldikti");
+		if (user.peran[0].peran.id === 2021) formdata.append("role_data", "lldikti");
 		formdata.append("pelanggaran", this.state.selectedOptionMulti.map((e) => e.value).join());
 		if (this.state.files.length > 0) {
 			this.state.files.forEach((e) => {
@@ -113,7 +115,12 @@ export class InputData extends Component {
 			});
 		}
 
-		const create = await createPelaporan(formdata);
+		const create = createPelaporan(formdata);
+		await toast.promise(create, {
+			pending: "Loading...",
+			success: "Berhasil buat laporan",
+			error: "Gagal buat laporan",
+		});
 		// console.log(create);
 		// console.log(create);
 		// await this.props.dispatch(createPelaporan(formdata));
@@ -135,6 +142,7 @@ export class InputData extends Component {
 		));
 		return (
 			<form className="form-horizontal" method="get" action="/" onSubmit={this.onSubmit}>
+				{/* <ToastContainer /> */}
 				<FormGroup row>
 					<label className="col-md-2 col-form-label">Nomor Pelaporan</label>
 					<div className="col-md-10">

+ 3 - 1
components/Pemeriksaan/InputEvaluasi.js

@@ -4,6 +4,7 @@ import Router from "next/router";
 import Datetime from "react-datetime";
 import moment from "moment";
 import { Row, Col, FormGroup, Input } from "reactstrap";
+import { ToastContainer, toast } from "react-toastify";
 
 const selectInstanceId = 1;
 let Dropzone = null;
@@ -94,9 +95,10 @@ export default class InputEvaluasi extends Component {
 				formdata.append("files", e);
 			});
 		}
-
+		const id = toast.loading("Please wait...");
 		const inserted = await insertPemeriksaan({ number, ptId }, formdata);
 		if (inserted) {
+			toast.update(id, { render: "All is good", type: "success", isLoading: false, autoClose: true, closeButton: true });
 			Router.push({
 				pathname: "/app/pemeriksaan",
 			});

+ 9 - 19
package-lock.json

@@ -3602,6 +3602,11 @@
 				}
 			}
 		},
+		"clsx": {
+			"version": "1.1.1",
+			"resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz",
+			"integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA=="
+		},
 		"code-point-at": {
 			"version": "1.1.0",
 			"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
@@ -8828,26 +8833,11 @@
 			}
 		},
 		"react-toastify": {
-			"version": "4.5.2",
-			"resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-4.5.2.tgz",
-			"integrity": "sha512-KymDDhkcX5EvFht17nO0MCsegM/Kdhyfxhi+WQl2tE3IxJrueOhY6TUnALTfvz7eDRUjPYBGb+ywWqWrGyvBnw==",
+			"version": "8.2.0",
+			"resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-8.2.0.tgz",
+			"integrity": "sha512-Pg2Ju7NngAamarFvLwqrFomJ57u/Ay6i6zfLurt/qPynWkAkOthu6vxfqYpJCyNhHRhR4hu7+bySSeWWJu6PAg==",
 			"requires": {
-				"classnames": "^2.2.6",
-				"prop-types": "^15.6.0",
-				"react-transition-group": "^2.4.0"
-			},
-			"dependencies": {
-				"react-transition-group": {
-					"version": "2.9.0",
-					"resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz",
-					"integrity": "sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==",
-					"requires": {
-						"dom-helpers": "^3.4.0",
-						"loose-envify": "^1.4.0",
-						"prop-types": "^15.6.2",
-						"react-lifecycles-compat": "^3.0.4"
-					}
-				}
+				"clsx": "^1.1.1"
 			}
 		},
 		"react-transition-group": {

+ 1 - 1
package.json

@@ -90,7 +90,7 @@
 		"react-redux": "^7.2.6",
 		"react-select": "^3.0.4",
 		"react-sticky": "^6.0.3",
-		"react-toastify": "4.5.2",
+		"react-toastify": "8.2.0",
 		"react-transition-group": "4.2.2",
 		"reactstrap": "^8.0.1",
 		"redux-devtools-extension": "^2.13.9",

+ 1 - 1
pages/app/index.js

@@ -1,6 +1,6 @@
 import React, { Component } from "react";
 import BasePage from "@/components/Layout/BasePage";
-import { Row, Col, Navbar, NavItem, NavLink, NavbarBrand, NavbarToggler, Nav, Collapse, Jumbotron } from "reactstrap";
+import { Row, Col, Navbar, NavItem, NavLink, NavbarBrand, NavbarToggler, Nav, Collapse, Jumbotron, Button } from "reactstrap";
 import ContentWrapper from "@/components/Layout/ContentWrapper";
 import Link from "next/link";
 import Login from "@/components/Main/Login";

+ 3 - 0
pages/app/sanksi/proses.js

@@ -15,6 +15,7 @@ import { createSanksi } from "@/actions/sanksi";
 import { getPelanggaranId } from "@/actions/pelanggaran";
 import { connect } from "react-redux";
 import Loader from "@/components/Common/Loader";
+import { ToastContainer, toast } from "react-toastify";
 
 const stepNavitemStyle = {
 	backgroundColor: "#fcfcfc",
@@ -55,8 +56,10 @@ class ProsesSanksi extends Component {
 				formdata.append("files", e);
 			});
 		}
+		const id = toast.loading("Please wait...");
 		const create = await createSanksi({ ptId, number }, formdata);
 		if (create) {
+			toast.update(id, { render: "All is good", type: "success", isLoading: false, autoClose: true, closeButton: true });
 			Router.push({
 				pathname: "/app/sanksi",
 			});

+ 9 - 0
pages/laporan/new/index.js

@@ -11,6 +11,9 @@ import { Row, Col, FormGroup, Input, Card, CardBody, Button, CustomInput, Navbar
 import Link from "next/link";
 import ContentWrapper from "@/components/Layout/ContentWrapper";
 import { createPublicUser } from "@/actions/user";
+import { ToastContainer, toast } from "react-toastify";
+
+import "react-toastify/dist/ReactToastify.css";
 
 const loadOptions = (inputValue, callback) => {
 	setTimeout(async () => {
@@ -95,15 +98,20 @@ class App extends Component {
 
 	handleKirim = async (e) => {
 		e.preventDefault();
+		const id = toast.loading("Please wait...");
 		const { nama } = this.state;
 		const user_id = await this.createUser();
+
 		if (user_id) {
 			const laporan = await this.createLaporan(user_id, nama);
 			if (laporan) {
+				toast.update(id, { render: "All is good", type: "success", isLoading: false });
 				await this.sendNotif();
 				Router.push("/laporan/new");
 			}
+			return;
 		}
+		toast.update(id, { render: "All is not good", type: "error", isLoading: false });
 
 		// validasi
 		// if (nama === '')  msgError.push({nama: 'Wajib diisi'})
@@ -154,6 +162,7 @@ class App extends Component {
 		const { selectedJenis, pelanggaran, confirm, isPrivate } = this.state;
 		return (
 			<div>
+				<ToastContainer />
 				<Navbar color="info" expand="md" dark>
 					<NavbarBrand href="/">
 						<img className="img-fluid" src="/static/img/logo-single.png" alt="App Logo" /> Sidali