fixed memory leak
このコミットが含まれているのは:
コミット
ececb1f169
ファイル差分が大きすぎるため省略します
差分を読み込み
|
@ -28,27 +28,26 @@ const AdminChildDetail = () => {
|
|||
|
||||
const isMountedRef = useRef(true);
|
||||
|
||||
useEffect(async () => {
|
||||
let mounted = true;
|
||||
useEffect(() => {
|
||||
isMountedRef.current = false;
|
||||
setLoaded(false);
|
||||
|
||||
await axios.get(`/api/admin/children/detail/${params?.child_id}`)
|
||||
.then(response => {
|
||||
if(!mounted) return;
|
||||
setLoaded(true);
|
||||
switch(response.data.status_code){
|
||||
case 200:{
|
||||
setChild(response.data.params);
|
||||
setImage(response.data.params.image);
|
||||
break;
|
||||
}
|
||||
case 400: set400Error('失敗しました。'); break;
|
||||
axios.get(`/api/admin/children/detail/${params?.child_id}`)
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
setLoaded(true);
|
||||
switch(response.data.status_code){
|
||||
case 200:{
|
||||
setChild(response.data.params);
|
||||
setImage(response.data.params.image);
|
||||
break;
|
||||
}
|
||||
})
|
||||
|
||||
case 400: set400Error('失敗しました。'); break;
|
||||
}
|
||||
})
|
||||
|
||||
return () => {
|
||||
mounted = false
|
||||
isMountedRef.current = true;
|
||||
}
|
||||
},[]);
|
||||
|
||||
|
@ -63,6 +62,7 @@ const AdminChildDetail = () => {
|
|||
setSubmitImage(true);
|
||||
axios.put(`/api/admin/children/updateImage/${params?.child_id}`, {image: reader.result})
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
setSubmitImage(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: {
|
||||
|
@ -78,10 +78,12 @@ const AdminChildDetail = () => {
|
|||
};
|
||||
|
||||
|
||||
async function handleAcceptDelete() {
|
||||
function handleAcceptDelete() {
|
||||
setSubmit(true);
|
||||
axios.delete(`/api/admin/children/delete/${params?.child_id}`)
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setShowConfirmModal(false);
|
||||
setSubmit(false);
|
||||
switch(response.data.status_code){
|
||||
|
|
|
@ -35,35 +35,33 @@ const AdminChildEdit = () => {
|
|||
|
||||
const isMountedRef = useRef(true);
|
||||
|
||||
useEffect(async () => {
|
||||
let mounted = true;
|
||||
useEffect(() => {
|
||||
isMountedRef.current = false;
|
||||
setLoaded(false);
|
||||
|
||||
await axios.get(`/api/admin/children/detail/${params?.child_id}`)
|
||||
.then(response => {
|
||||
if(!mounted) return;
|
||||
setLoaded(true);
|
||||
if(response.data.status_code==200)
|
||||
{
|
||||
var child = response.data.params;
|
||||
setChild(child);
|
||||
if(child){
|
||||
setFirstName(child.first_name);
|
||||
setLastName(child.last_name);
|
||||
setIdentity(child.identity);
|
||||
setEmail(child.email);
|
||||
setTelephone(child.tel);
|
||||
setCompany(child.company);
|
||||
}
|
||||
|
||||
axios.get(`/api/admin/children/detail/${params?.child_id}`)
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
setLoaded(true);
|
||||
if(response.data.status_code==200)
|
||||
{
|
||||
var child = response.data.params;
|
||||
setChild(child);
|
||||
if(child){
|
||||
setFirstName(child.first_name);
|
||||
setLastName(child.last_name);
|
||||
setIdentity(child.identity);
|
||||
setEmail(child.email);
|
||||
setTelephone(child.tel);
|
||||
setCompany(child.company);
|
||||
}
|
||||
else {
|
||||
set400Error("失敗しました。");
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
else {
|
||||
set400Error("失敗しました。");
|
||||
}
|
||||
})
|
||||
return () => {
|
||||
mounted = false
|
||||
isMountedRef.current = true;
|
||||
}
|
||||
},[]);
|
||||
|
||||
|
@ -89,6 +87,7 @@ const AdminChildEdit = () => {
|
|||
};
|
||||
axios.put(`/api/admin/children/updateProfile/${params?.child_id}`, request)
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
setSubmit(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: {
|
||||
|
|
|
@ -23,29 +23,27 @@ const AdminChilds = () => {
|
|||
|
||||
const isMountedRef = useRef(true);
|
||||
|
||||
useEffect( async () => {
|
||||
useEffect(() => {
|
||||
isMountedRef.current = false;
|
||||
let mounted = true;
|
||||
setLoaded(false);
|
||||
|
||||
await axios.get('/api/admin/children/list')
|
||||
.then((response) => {
|
||||
if(!mounted) return;
|
||||
setLoaded(true);
|
||||
if(response.data.status_code==200){
|
||||
setChildrenList(response.data.params);
|
||||
var len = response.data.params.length;
|
||||
if(len > INFINITE)
|
||||
setFetchChildrenList(response.data.params.slice(0, INFINITE));
|
||||
else setFetchChildrenList(response.data.params.slice(0, len));
|
||||
}
|
||||
else {
|
||||
set400Error("失敗しました。");
|
||||
}
|
||||
});
|
||||
|
||||
axios.get('/api/admin/children/list')
|
||||
.then((response) => {
|
||||
if(isMountedRef.current) return;
|
||||
setLoaded(true);
|
||||
if(response.data.status_code==200){
|
||||
setChildrenList(response.data.params);
|
||||
var len = response.data.params.length;
|
||||
if(len > INFINITE)
|
||||
setFetchChildrenList(response.data.params.slice(0, INFINITE));
|
||||
else setFetchChildrenList(response.data.params.slice(0, len));
|
||||
}
|
||||
else {
|
||||
set400Error("失敗しました。");
|
||||
}
|
||||
});
|
||||
return () => {
|
||||
mounted = false
|
||||
isMountedRef.current = true;
|
||||
}
|
||||
}, []);
|
||||
|
||||
|
@ -73,6 +71,7 @@ const AdminChilds = () => {
|
|||
setChildrenList([]);
|
||||
axios.get('/api/admin/children/search', {params:{keyword: keyword}})
|
||||
.then((response) => {
|
||||
if(isMountedRef.current) return;
|
||||
setLoaded(true);
|
||||
if(response.data.status_code==200){
|
||||
setChildrenList(response.data.params);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import React, { useState } from 'react';
|
||||
import React, { useState, useRef, useEffect } from 'react';
|
||||
import { useNavigate, useParams } from 'react-router-dom';
|
||||
import { LoadingButton } from '@material-ui/lab';
|
||||
|
||||
|
@ -19,12 +19,18 @@ const AdminChildPasswordEdit = () => {
|
|||
});
|
||||
const [_400error, set400Error] = useState('');
|
||||
const [_success, setSuccess] = useState('');
|
||||
|
||||
|
||||
const [submit, setSubmit] = useState(false)
|
||||
|
||||
const isMountedRef = useRef(true);
|
||||
|
||||
const handleSubmit = async (e) => {
|
||||
useEffect(() => {
|
||||
isMountedRef.current = false;
|
||||
return () => {
|
||||
isMountedRef.current = true;
|
||||
}
|
||||
}, [])
|
||||
|
||||
const handleSubmit = (e) => {
|
||||
e.preventDefault();
|
||||
set422Errors({
|
||||
password:'',
|
||||
|
@ -36,19 +42,20 @@ const AdminChildPasswordEdit = () => {
|
|||
password_confirmation: password_confirmation
|
||||
}
|
||||
|
||||
await axios.put(`/api/admin/children/updatePassword/${params?.child_id}`, request)
|
||||
.then(response => {
|
||||
setSubmit(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: {
|
||||
navigator(`/admin/child/detail/${params?.child_id}`,
|
||||
{state: response.data.success_messages});
|
||||
break;
|
||||
}
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
axios.put(`/api/admin/children/updatePassword/${params?.child_id}`, request)
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
setSubmit(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: {
|
||||
navigator(`/admin/child/detail/${params?.child_id}`,
|
||||
{state: response.data.success_messages});
|
||||
break;
|
||||
}
|
||||
})
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import React, { useState } from 'react';
|
||||
import React, { useState, useRef, useEffect } from 'react';
|
||||
import { useLocation } from 'react-router-dom';
|
||||
import { LoadingButton } from '@material-ui/lab';
|
||||
import { useCookies } from 'react-cookie';
|
||||
|
@ -18,13 +18,22 @@ const AdminLogin = () => {
|
|||
const [_400error, set400Error] = useState(null);
|
||||
const [_success, setSuccess] = useState(null);
|
||||
|
||||
const isMountedRef = useRef(true);
|
||||
|
||||
useEffect(() => {
|
||||
isMountedRef.current = false;
|
||||
return () => {
|
||||
isMountedRef.current = true;
|
||||
}
|
||||
}, [])
|
||||
|
||||
const init_error = () => {
|
||||
set422Errors({ email:null, password:null });
|
||||
set400Error(null);
|
||||
}
|
||||
|
||||
|
||||
const handleSubmit = async (e) => {
|
||||
const handleSubmit = (e) => {
|
||||
e.preventDefault();
|
||||
setSubmit(true); //show progressbar
|
||||
const formdata = new FormData();
|
||||
|
@ -33,36 +42,37 @@ const AdminLogin = () => {
|
|||
|
||||
init_error();
|
||||
|
||||
await axios.post('/api/admin/login', formdata)
|
||||
.then(response => {
|
||||
setSubmit(false)
|
||||
switch(response.data.status_code){
|
||||
case 200: {
|
||||
localStorage.setItem('kiki_login_flag', true);
|
||||
localStorage.setItem('kiki_acc_type', 'admin');
|
||||
setCookie('logged', 'success');
|
||||
if(location.search == '')
|
||||
window.location.href = "/admin/meeting";
|
||||
else
|
||||
window.location.href = location.search.replace('?redirect_to=', '');
|
||||
|
||||
break;
|
||||
}
|
||||
case 422: {
|
||||
window.scrollTo(0, 0);
|
||||
set422Errors(response.data.error_messages);
|
||||
break;
|
||||
}
|
||||
case 400: {
|
||||
set400Error(response.data.error_message);
|
||||
break;
|
||||
}
|
||||
axios.post('/api/admin/login', formdata)
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
setSubmit(false)
|
||||
switch(response.data.status_code){
|
||||
case 200: {
|
||||
localStorage.setItem('kiki_login_flag', true);
|
||||
localStorage.setItem('kiki_acc_type', 'admin');
|
||||
setCookie('logged', 'success');
|
||||
if(location.search == '')
|
||||
window.location.href = "/admin/meeting";
|
||||
else
|
||||
window.location.href = location.search.replace('?redirect_to=', '');
|
||||
|
||||
break;
|
||||
}
|
||||
if(response.data.status_code != 200){
|
||||
setPassword('');
|
||||
}
|
||||
})
|
||||
.catch(err=>console.log(err))
|
||||
case 422: {
|
||||
window.scrollTo(0, 0);
|
||||
set422Errors(response.data.error_messages);
|
||||
break;
|
||||
}
|
||||
case 400: {
|
||||
set400Error(response.data.error_message);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(response.data.status_code != 200){
|
||||
setPassword('');
|
||||
}
|
||||
})
|
||||
.catch(err=>console.log(err))
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -28,52 +28,52 @@ const AdminMeetingDetail = () => {
|
|||
|
||||
const isMountedRef = useRef(true);
|
||||
|
||||
useEffect( async () => {
|
||||
useEffect( () => {
|
||||
isMountedRef.current = false;
|
||||
let mounted = true;
|
||||
setLoaded(false);
|
||||
await axios.get(`/api/admin/meetings/detail/${params?.meeting_id}`)
|
||||
.then((response) => {
|
||||
if(!mounted) return;
|
||||
axios.get(`/api/admin/meetings/detail/${params?.meeting_id}`)
|
||||
.then((response) => {
|
||||
if(isMountedRef.current) return;
|
||||
setLoaded(true);
|
||||
|
||||
setLoaded(true);
|
||||
if(response.data.status_code==200){
|
||||
var list = response.data.params;
|
||||
var total=0, num=0;
|
||||
if(list.approval){
|
||||
for(var i in list.approval)
|
||||
{
|
||||
if(list.approval[i].approval_at) num ++;
|
||||
total ++;
|
||||
}
|
||||
if(response.data.status_code==200){
|
||||
var list = response.data.params;
|
||||
var total=0, num=0;
|
||||
if(list.approval){
|
||||
for(var i in list.approval)
|
||||
{
|
||||
if(list.approval[i].approval_at) num ++;
|
||||
total ++;
|
||||
}
|
||||
setMeeting({...list, denominator:total, numerator:num});
|
||||
if(list.meeting_image.length > 0) setThumbnail(list.meeting_image[0].image);
|
||||
}
|
||||
else {
|
||||
set400Error("失敗しました。");
|
||||
}
|
||||
});
|
||||
}
|
||||
setMeeting({...list, denominator:total, numerator:num});
|
||||
if(list.meeting_image.length > 0) setThumbnail(list.meeting_image[0].image);
|
||||
}
|
||||
else {
|
||||
set400Error("失敗しました。");
|
||||
}
|
||||
});
|
||||
return () => {
|
||||
mounted = false
|
||||
isMountedRef.current = true;
|
||||
}
|
||||
}, []);
|
||||
|
||||
|
||||
async function handleAcceptDelete() {
|
||||
function handleAcceptDelete() {
|
||||
setSubmit(true);
|
||||
await axios.delete(`/api/admin/meetings/delete/${params?.meeting_id}`)
|
||||
.then(response => {
|
||||
setShowConfirmModal(false);
|
||||
setSubmit(false);
|
||||
switch(response.data.status_code){
|
||||
case 200:{
|
||||
navigator('/admin/meeting', {state: '削除に成功しました!'});
|
||||
break;
|
||||
}
|
||||
case 400: set400Error("削除に失敗しました。"); break;
|
||||
}
|
||||
});
|
||||
axios.delete(`/api/admin/meetings/delete/${params?.meeting_id}`)
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
setShowConfirmModal(false);
|
||||
setSubmit(false);
|
||||
switch(response.data.status_code){
|
||||
case 200:{
|
||||
navigator('/admin/meeting', {state: '削除に成功しました!'});
|
||||
break;
|
||||
}
|
||||
case 400: set400Error("削除に失敗しました。"); break;
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -57,51 +57,51 @@ const AdminMeetingEdit = () => {
|
|||
},[check_radio])
|
||||
|
||||
|
||||
useEffect( async () => {
|
||||
useEffect(() => {
|
||||
isMountedRef.current = false;
|
||||
let mounted = true;
|
||||
setLoaded(false);
|
||||
await axios.get(`/api/admin/meetings/detail/${meeting_id}`)
|
||||
.then(response => {
|
||||
if(!mounted) return;
|
||||
setLoaded(true);
|
||||
if(response.data.status_code==200){
|
||||
setMeeting(response.data.params); //Success
|
||||
setTitle(response.data.params?.title);
|
||||
setMemo(response.data.params.memo ? response.data.params.memo: '');
|
||||
setText(response.data.params.text ? response.data.params.text: '');
|
||||
setMeetingImages(response.data.params?.meeting_image);
|
||||
setApproval(response.data.params?.approval);
|
||||
setPdf(response.data.params?.pdf);
|
||||
setPDFURL(response.data.params?.pdf);
|
||||
|
||||
var list = [...response.data.params?.children];
|
||||
var approval = [...response.data.params?.approval];
|
||||
var arr = [];
|
||||
for(var i in list){
|
||||
if(approval.findIndex(ele=>ele.child_id == list[i].id) >= 0)
|
||||
arr.push({...list[i], checked: true});
|
||||
else arr.push({...list[i], checked: false});
|
||||
}
|
||||
setChildrenList(arr);
|
||||
if((approval.length == list.length) && (approval.length > 0))
|
||||
setCheckRadio('all_send');
|
||||
else if((approval.length != list.length) && (approval.length > 0))
|
||||
setCheckRadio('pickup_send');
|
||||
else setCheckRadio('');
|
||||
}
|
||||
else {
|
||||
set400Error("失敗しました。");
|
||||
|
||||
axios.get(`/api/admin/meetings/detail/${meeting_id}`)
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
setLoaded(true);
|
||||
if(response.data.status_code==200){
|
||||
setMeeting(response.data.params); //Success
|
||||
setTitle(response.data.params?.title);
|
||||
setMemo(response.data.params.memo ? response.data.params.memo: '');
|
||||
setText(response.data.params.text ? response.data.params.text: '');
|
||||
setMeetingImages(response.data.params?.meeting_image);
|
||||
setApproval(response.data.params?.approval);
|
||||
setPdf(response.data.params?.pdf);
|
||||
setPDFURL(response.data.params?.pdf);
|
||||
|
||||
var list = [...response.data.params?.children];
|
||||
var approval = [...response.data.params?.approval];
|
||||
var arr = [];
|
||||
for(var i in list){
|
||||
if(approval.findIndex(ele=>ele.child_id == list[i].id) >= 0)
|
||||
arr.push({...list[i], checked: true});
|
||||
else arr.push({...list[i], checked: false});
|
||||
}
|
||||
});
|
||||
setChildrenList(arr);
|
||||
if((approval.length == list.length) && (approval.length > 0))
|
||||
setCheckRadio('all_send');
|
||||
else if((approval.length != list.length) && (approval.length > 0))
|
||||
setCheckRadio('pickup_send');
|
||||
else setCheckRadio('');
|
||||
}
|
||||
else {
|
||||
set400Error("失敗しました。");
|
||||
}
|
||||
});
|
||||
|
||||
return () => {
|
||||
mounted = false
|
||||
isMountedRef.current = true;
|
||||
}
|
||||
}, []);
|
||||
|
||||
|
||||
const handleSubmit = async (e) => {
|
||||
const handleSubmit = (e) => {
|
||||
e.preventDefault();
|
||||
set422Errors({title:'',memo:'',text:'',pdf:'',image:''});
|
||||
|
||||
|
@ -120,29 +120,31 @@ const AdminMeetingEdit = () => {
|
|||
|
||||
const formdata = new FormData();
|
||||
formdata.append('children', JSON.stringify(approval_registerIndexes));
|
||||
await axios.post('/api/admin/meeting/approvals/register',formdata, {params:{meeting_id: meeting_id}})
|
||||
await axios.delete('/api/admin/meeting/approvals/delete',{params:{children: approval_deleteIndexes, meeting_id: meeting_id}})
|
||||
axios.post('/api/admin/meeting/approvals/register',formdata, {params:{meeting_id: meeting_id}})
|
||||
axios.delete('/api/admin/meeting/approvals/delete',{params:{children: approval_deleteIndexes, meeting_id: meeting_id}})
|
||||
|
||||
const request = { title: title, text: text, memo: memo, pdf: pdf };
|
||||
setSubmit(true);
|
||||
|
||||
await axios.put(`/api/admin/meetings/update/${meeting_id}`, request)
|
||||
.then(response => {
|
||||
setSubmit(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: {
|
||||
navigator(`/admin/meeting/detail/${meeting_id}`,
|
||||
{state: "更新成功しました!"});
|
||||
break;
|
||||
}
|
||||
case 400: set400Error("更新失敗しました。"); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
axios.put(`/api/admin/meetings/update/${meeting_id}`, request)
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setSubmit(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: {
|
||||
navigator(`/admin/meeting/detail/${meeting_id}`,
|
||||
{state: "更新成功しました!"});
|
||||
break;
|
||||
}
|
||||
});
|
||||
case 400: set400Error("更新失敗しました。"); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
const handleImageChange = async (e) => {
|
||||
const handleImageChange = (e) => {
|
||||
e.preventDefault();
|
||||
const files = Array.from(e.target.files);
|
||||
if(e.target.files.length + meeting_image.length > 10)
|
||||
|
@ -161,38 +163,41 @@ const AdminMeetingEdit = () => {
|
|||
}))
|
||||
});
|
||||
|
||||
Promise.all(promises).then( async (images) => {
|
||||
Promise.all(promises).then((images) => {
|
||||
set422Errors({image:''});
|
||||
const formdata = new FormData();
|
||||
formdata.append('image', JSON.stringify(images));
|
||||
setImageSending(true);
|
||||
|
||||
await axios.post(`/api/admin/meeting/images/register`, formdata, {params:{meeting_id: meeting_id}})
|
||||
.then(response => {
|
||||
setImageSending(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: setMeetingImages(response.data.params); break;
|
||||
case 400: set400Error("画像の登録に失敗しました。"); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
}
|
||||
});
|
||||
axios.post(`/api/admin/meeting/images/register`, formdata, {params:{meeting_id: meeting_id}})
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setImageSending(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: setMeetingImages(response.data.params); break;
|
||||
case 400: set400Error("画像の登録に失敗しました。"); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
}
|
||||
});
|
||||
},
|
||||
error => { console.error(error); });
|
||||
};
|
||||
|
||||
|
||||
|
||||
const handleDeleteImage = async (index, image_id) => {
|
||||
const handleDeleteImage = (index, image_id) => {
|
||||
let list = [...meeting_image];
|
||||
list.splice(index, 1);
|
||||
setMeetingImages(list);
|
||||
|
||||
await axios.delete(`/api/admin/meeting/images/delete/${meeting_id}`, {params:{image_id: image_id}})
|
||||
.then(response=>{
|
||||
switch(response.data.status_code){
|
||||
case 400: set400Error("画像の削除に失敗しました。");
|
||||
}
|
||||
})
|
||||
axios.delete(`/api/admin/meeting/images/delete/${meeting_id}`, {params:{image_id: image_id}})
|
||||
.then(response=>{
|
||||
if(isMountedRef.current) return;
|
||||
switch(response.data.status_code){
|
||||
case 400: set400Error("画像の削除に失敗しました。");
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -25,42 +25,41 @@ const AdminMeetings = () => {
|
|||
const isMountedRef = useRef(true);
|
||||
|
||||
|
||||
useEffect( async () => {
|
||||
useEffect(() => {
|
||||
isMountedRef.current = false;
|
||||
let mounted = true;
|
||||
|
||||
setLoaded(false);
|
||||
await axios.get('/api/admin/meetings/list')
|
||||
.then(response => {
|
||||
if(!mounted) return;
|
||||
|
||||
setLoaded(true);
|
||||
if(response.data.status_code==200){
|
||||
//------------Calculate Numerator & Denominator--------------
|
||||
var list = response.data.params;
|
||||
var arr = [];
|
||||
for(var i in list){
|
||||
var total=0, num=0;
|
||||
for(var j in list[i].approval)
|
||||
{
|
||||
if(list[i].approval[j].approval_at) num ++;
|
||||
total ++;
|
||||
}
|
||||
arr.push({...list[i], denominator:total, numerator:num})
|
||||
}
|
||||
setMeetingList(arr);
|
||||
var len = arr.length;
|
||||
if(len > INFINITE)
|
||||
setFetchMeetingList(arr.slice(0, INFINITE));
|
||||
else setFetchMeetingList(arr.slice(0, len));
|
||||
}
|
||||
else {
|
||||
set400Error("失敗しました。");
|
||||
}
|
||||
});
|
||||
axios.get('/api/admin/meetings/list')
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setLoaded(true);
|
||||
if(response.data.status_code==200){
|
||||
//------------Calculate Numerator & Denominator--------------
|
||||
var list = response.data.params;
|
||||
var arr = [];
|
||||
for(var i in list){
|
||||
var total=0, num=0;
|
||||
for(var j in list[i].approval)
|
||||
{
|
||||
if(list[i].approval[j].approval_at) num ++;
|
||||
total ++;
|
||||
}
|
||||
arr.push({...list[i], denominator:total, numerator:num})
|
||||
}
|
||||
setMeetingList(arr);
|
||||
var len = arr.length;
|
||||
if(len > INFINITE)
|
||||
setFetchMeetingList(arr.slice(0, INFINITE));
|
||||
else setFetchMeetingList(arr.slice(0, len));
|
||||
}
|
||||
else {
|
||||
set400Error("失敗しました。");
|
||||
}
|
||||
});
|
||||
|
||||
return () => {
|
||||
mounted = false
|
||||
isMountedRef.current = true;
|
||||
}
|
||||
}, []);
|
||||
|
||||
|
@ -78,7 +77,7 @@ const AdminMeetings = () => {
|
|||
};
|
||||
|
||||
|
||||
const handleSearch = async (e) => {
|
||||
const handleSearch = (e) => {
|
||||
e.preventDefault();
|
||||
if(keyword == '')
|
||||
{
|
||||
|
@ -88,29 +87,31 @@ const AdminMeetings = () => {
|
|||
set422errors({keyword:''});
|
||||
setLoaded(false);
|
||||
setMeetingList([]);
|
||||
await axios.get('/api/admin/meetings/search',{params:{keyword: keyword}})
|
||||
.then((response) => {
|
||||
setLoaded(true);
|
||||
if(response.data.status_code==200){
|
||||
//------------Calculate Numerator & Denominator--------------
|
||||
var list = response.data.params;
|
||||
var arr = [];
|
||||
for(var i in list){
|
||||
var total=0, num=0;
|
||||
for(var j in list[i].approval)
|
||||
{
|
||||
if(list[i].approval[j].approval_at) num ++;
|
||||
total ++;
|
||||
}
|
||||
arr.push({...list[i], denominator:total, numerator:num})
|
||||
}
|
||||
setMeetingList(arr);
|
||||
var len = arr.length;
|
||||
if(len > INFINITE)
|
||||
setFetchMeetingList(arr.slice(0, INFINITE));
|
||||
else setFetchMeetingList(arr.slice(0, len));
|
||||
}
|
||||
});
|
||||
axios.get('/api/admin/meetings/search',{params:{keyword: keyword}})
|
||||
.then((response) => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setLoaded(true);
|
||||
if(response.data.status_code==200){
|
||||
//------------Calculate Numerator & Denominator--------------
|
||||
var list = response.data.params;
|
||||
var arr = [];
|
||||
for(var i in list){
|
||||
var total=0, num=0;
|
||||
for(var j in list[i].approval)
|
||||
{
|
||||
if(list[i].approval[j].approval_at) num ++;
|
||||
total ++;
|
||||
}
|
||||
arr.push({...list[i], denominator:total, numerator:num})
|
||||
}
|
||||
setMeetingList(arr);
|
||||
var len = arr.length;
|
||||
if(len > INFINITE)
|
||||
setFetchMeetingList(arr.slice(0, INFINITE));
|
||||
else setFetchMeetingList(arr.slice(0, len));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import React, { useState } from 'react';
|
||||
import React, { useState, useRef, useEffect } from 'react';
|
||||
import { LoadingButton } from '@material-ui/lab';
|
||||
|
||||
import Alert from '../../component/alert';
|
||||
|
@ -14,23 +14,35 @@ const AdminParentAdd = () => {
|
|||
const [submit, setSubmit] = useState(false);
|
||||
|
||||
|
||||
const handleSubmit = async (e) => {
|
||||
const isMountedRef = useRef(true);
|
||||
|
||||
useEffect(() => {
|
||||
isMountedRef.current = false;
|
||||
return () => {
|
||||
isMountedRef.current = true;
|
||||
}
|
||||
}, [])
|
||||
|
||||
|
||||
const handleSubmit = (e) => {
|
||||
e.preventDefault();
|
||||
set422Errors({ email: '' })
|
||||
setSubmit(true);
|
||||
const formdata = new FormData();
|
||||
formdata.append('email', email);
|
||||
formdata.append('relation_limit', limit);
|
||||
await axios.post('/api/admin/fathers/registerTemporary', formdata)
|
||||
.then(response => {
|
||||
setSubmit(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: setSuccess(response.data.success_messages); break;
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
}
|
||||
})
|
||||
.catch(err=>console.log(err))
|
||||
axios.post('/api/admin/fathers/registerTemporary', formdata)
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setSubmit(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: setSuccess(response.data.success_messages); break;
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
}
|
||||
})
|
||||
.catch(err=>console.log(err))
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -36,11 +36,11 @@ const AdminParentDetail = () => {
|
|||
|
||||
useEffect(() => {
|
||||
isMountedRef.current = false;
|
||||
let mounted = true;
|
||||
|
||||
setLoaded(false);
|
||||
axios.get(`/api/admin/fathers/detail/${params?.father_id}`)
|
||||
.then(response => {
|
||||
if(!mounted) return;
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setLoaded(true);
|
||||
if(response.data.status_code==200){
|
||||
|
@ -52,7 +52,7 @@ const AdminParentDetail = () => {
|
|||
}
|
||||
})
|
||||
return function cleanup() {
|
||||
mounted = false
|
||||
isMountedRef.current = true;
|
||||
}
|
||||
},[]);
|
||||
|
||||
|
@ -62,38 +62,42 @@ const AdminParentDetail = () => {
|
|||
let reader = new FileReader();
|
||||
let _file = e.target.files[0];
|
||||
reader.readAsDataURL(_file);
|
||||
reader.onloadend = async () => {
|
||||
reader.onloadend = () => {
|
||||
set422Errors({image: ''});
|
||||
setSubmitImage(true);
|
||||
await axios.put(`/api/admin/fathers/updateImage/${params?.father_id}`, {image: reader.result})
|
||||
.then(response => {
|
||||
setSubmitImage(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: {
|
||||
setImage(reader.result);
|
||||
setSuccess(response.data.success_messages);
|
||||
break;
|
||||
}
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
axios.put(`/api/admin/fathers/updateImage/${params?.father_id}`, {image: reader.result})
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setSubmitImage(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: {
|
||||
setImage(reader.result);
|
||||
setSuccess(response.data.success_messages);
|
||||
break;
|
||||
}
|
||||
});
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
}
|
||||
});
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
async function handleAcceptDelete() {
|
||||
function handleAcceptDelete() {
|
||||
setSubmit(true);
|
||||
await axios.delete(`/api/admin/fathers/delete/${params?.father_id}`)
|
||||
.then(response => {
|
||||
setShowConfirmModal(false);
|
||||
setSubmit(false);
|
||||
if(response.data.status_code == 200){
|
||||
navigator('/admin/parent', { state: '削除に成功しました!' });
|
||||
} else {
|
||||
set400Error("削除に失敗しました。");
|
||||
}
|
||||
});
|
||||
axios.delete(`/api/admin/fathers/delete/${params?.father_id}`)
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setShowConfirmModal(false);
|
||||
setSubmit(false);
|
||||
if(response.data.status_code == 200){
|
||||
navigator('/admin/parent', { state: '削除に成功しました!' });
|
||||
} else {
|
||||
set400Error("削除に失敗しました。");
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -32,38 +32,37 @@ const AdminParentEdit = () => {
|
|||
|
||||
const isMountedRef = useRef(true);
|
||||
|
||||
useEffect( async () => {
|
||||
useEffect(() => {
|
||||
isMountedRef.current = false;
|
||||
let mounted = true;
|
||||
setLoaded(false);
|
||||
|
||||
await axios.get(`/api/admin/fathers/detail/${params?.father_id}`)
|
||||
.then(response => {
|
||||
if(!mounted) return;
|
||||
|
||||
setLoaded(true);
|
||||
if(response.data.status_code==200){
|
||||
var parent = response.data.params;
|
||||
setParent(parent);
|
||||
if(parent){
|
||||
setCompany(parent?.company);
|
||||
setEmail(parent.email);
|
||||
setTelephone(parent.tel);
|
||||
setProfile(parent.profile ? parent.profile: '');
|
||||
setLimit(parent.limit);
|
||||
}
|
||||
axios.get(`/api/admin/fathers/detail/${params?.father_id}`)
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setLoaded(true);
|
||||
if(response.data.status_code==200){
|
||||
var parent = response.data.params;
|
||||
setParent(parent);
|
||||
if(parent){
|
||||
setCompany(parent?.company);
|
||||
setEmail(parent.email);
|
||||
setTelephone(parent.tel);
|
||||
setProfile(parent.profile ? parent.profile: '');
|
||||
setLimit(parent.limit);
|
||||
}
|
||||
else{
|
||||
set400Error("失敗しました。");
|
||||
}
|
||||
})
|
||||
return function cleanup() {
|
||||
mounted = false
|
||||
}
|
||||
else{
|
||||
set400Error("失敗しました。");
|
||||
}
|
||||
})
|
||||
return () => {
|
||||
isMountedRef.current = true;
|
||||
}
|
||||
},[]);
|
||||
|
||||
|
||||
const handleSubmit = async (e) => {
|
||||
const handleSubmit = (e) => {
|
||||
e.preventDefault();
|
||||
set401Error('');
|
||||
set422Errors({
|
||||
|
@ -82,20 +81,22 @@ const AdminParentEdit = () => {
|
|||
profile: profile,
|
||||
};
|
||||
|
||||
await axios.put(`/api/admin/fathers/updateProfile/${params?.father_id}`, request)
|
||||
.then(response => {
|
||||
setSubmit(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: {
|
||||
navigator(`/admin/parent/detail/${params?.father_id}`,
|
||||
{ state: response.data.success_messages });
|
||||
break;
|
||||
}
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
case 401: set401Error(response.data.error_messages); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
axios.put(`/api/admin/fathers/updateProfile/${params?.father_id}`, request)
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setSubmit(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: {
|
||||
navigator(`/admin/parent/detail/${params?.father_id}`,
|
||||
{ state: response.data.success_messages });
|
||||
break;
|
||||
}
|
||||
})
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
case 401: set401Error(response.data.error_messages); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
return (
|
||||
|
|
|
@ -22,29 +22,28 @@ const AdminParents = () => {
|
|||
|
||||
const isMountedRef = useRef(true);
|
||||
|
||||
useEffect( async () => {
|
||||
useEffect(() => {
|
||||
isMountedRef.current = false;
|
||||
let mounted = true;
|
||||
setLoaded(false);
|
||||
|
||||
await axios.get('/api/admin/fathers/list')
|
||||
.then((response) => {
|
||||
if(!mounted) return;
|
||||
|
||||
setLoaded(true);
|
||||
if(response.data.status_code==200){
|
||||
setFatherList(response.data.params);
|
||||
var len = response.data.params.length;
|
||||
if(len > INFINITE)
|
||||
setFetchFatherList(response.data.params.slice(0, INFINITE));
|
||||
else setFetchFatherList(response.data.params.slice(0, len));
|
||||
}
|
||||
else {
|
||||
set400Error("失敗しました。");
|
||||
}
|
||||
});
|
||||
axios.get('/api/admin/fathers/list')
|
||||
.then((response) => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setLoaded(true);
|
||||
if(response.data.status_code==200){
|
||||
setFatherList(response.data.params);
|
||||
var len = response.data.params.length;
|
||||
if(len > INFINITE)
|
||||
setFetchFatherList(response.data.params.slice(0, INFINITE));
|
||||
else setFetchFatherList(response.data.params.slice(0, len));
|
||||
}
|
||||
else {
|
||||
set400Error("失敗しました。");
|
||||
}
|
||||
});
|
||||
return function cleanup() {
|
||||
mounted = false
|
||||
isMountedRef.current = true
|
||||
}
|
||||
}, []);
|
||||
|
||||
|
@ -60,7 +59,7 @@ const AdminParents = () => {
|
|||
};
|
||||
|
||||
|
||||
const handleSearch = async (e) => {
|
||||
const handleSearch = (e) => {
|
||||
e.preventDefault();
|
||||
if(keyword == '')
|
||||
{
|
||||
|
@ -70,17 +69,19 @@ const AdminParents = () => {
|
|||
set422errors({keyword:''});
|
||||
setLoaded(false);
|
||||
setFatherList([]);
|
||||
await axios.get('/api/admin/fathers/search',{params: {keyword: keyword}})
|
||||
.then((response) => {
|
||||
setLoaded(true);
|
||||
if(response.data.status_code==200){
|
||||
setFatherList(response.data.params);
|
||||
var len = response.data.params.length;
|
||||
if(len > INFINITE)
|
||||
setFetchFatherList(response.data.params.slice(0, INFINITE));
|
||||
else setFetchFatherList(response.data.params.slice(0, len));
|
||||
}
|
||||
});
|
||||
axios.get('/api/admin/fathers/search',{params: {keyword: keyword}})
|
||||
.then((response) => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setLoaded(true);
|
||||
if(response.data.status_code==200){
|
||||
setFatherList(response.data.params);
|
||||
var len = response.data.params.length;
|
||||
if(len > INFINITE)
|
||||
setFetchFatherList(response.data.params.slice(0, INFINITE));
|
||||
else setFetchFatherList(response.data.params.slice(0, len));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return (
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import React, { useState } from 'react';
|
||||
import React, { useState, useRef, useEffect } from 'react';
|
||||
import { useNavigate, useParams } from 'react-router-dom';
|
||||
import { LoadingButton } from '@material-ui/lab';
|
||||
|
||||
|
@ -19,11 +19,18 @@ const AdminParentPasswordEdit = () => {
|
|||
});
|
||||
const [_400error, set400Error] = useState('');
|
||||
const [_success, setSuccess] = useState('');
|
||||
const [submit, setSubmit] = useState(false);
|
||||
|
||||
const [submit, setSubmit] = useState(false)
|
||||
const isMountedRef = useRef(true);
|
||||
useEffect(() => {
|
||||
isMountedRef.current = false;
|
||||
return () => {
|
||||
isMountedRef.current = true;
|
||||
}
|
||||
}, [])
|
||||
|
||||
|
||||
const handleSubmit = async (e) => {
|
||||
const handleSubmit = (e) => {
|
||||
e.preventDefault();
|
||||
set422Errors({
|
||||
password:'',
|
||||
|
@ -35,19 +42,21 @@ const AdminParentPasswordEdit = () => {
|
|||
password_confirmation: password_confirmation
|
||||
}
|
||||
|
||||
await axios.put(`/api/admin/fathers/updatePassword/${params?.father_id}`, request)
|
||||
.then(response => {
|
||||
setSubmit(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: {
|
||||
navigator(`/admin/parent/detail/${params?.father_id}`,
|
||||
{state: response.data.success_messages});
|
||||
break;
|
||||
}
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
axios.put(`/api/admin/fathers/updatePassword/${params?.father_id}`, request)
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setSubmit(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: {
|
||||
navigator(`/admin/parent/detail/${params?.father_id}`,
|
||||
{state: response.data.success_messages});
|
||||
break;
|
||||
}
|
||||
})
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
return (
|
||||
|
|
|
@ -6,8 +6,8 @@ export default function AdminSide() {
|
|||
const [selected, setSelected] = useState('');
|
||||
const [cookies, setCookie] = useCookies(['user']);
|
||||
|
||||
const handleLogout = async () => {
|
||||
await axios.get('/admin/logout')
|
||||
const handleLogout = () => {
|
||||
axios.get('/admin/logout')
|
||||
.then(() => {
|
||||
setCookie('logged', null);
|
||||
window.location.href = '/admin/login';
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import React, { useState } from 'react';
|
||||
import React, { useState, useRef, useEffect } from 'react';
|
||||
import { LoadingButton } from '@material-ui/lab';
|
||||
import Alert from '../../../component/alert';
|
||||
|
||||
|
@ -11,24 +11,35 @@ const ChildForgotPassword = () => {
|
|||
const [_400error, set400Error] = useState('')
|
||||
const [_success, setSuccess] = useState('')
|
||||
|
||||
const handleSubmit = async (e) => {
|
||||
const isMountedRef = useRef(true);
|
||||
|
||||
useEffect(() => {
|
||||
isMountedRef.current = false;
|
||||
return () => {
|
||||
isMountedRef.current = true;
|
||||
}
|
||||
}, [])
|
||||
|
||||
const handleSubmit = (e) => {
|
||||
e.preventDefault();
|
||||
set422Errors({tel: ''});
|
||||
setSubmit(true);
|
||||
|
||||
const formdata = new FormData();
|
||||
formdata.append('tel', tel);
|
||||
await axios.post('/api/children/requestPassword', formdata)
|
||||
.then(response => {
|
||||
setSubmit(false)
|
||||
switch(response.data.status_code){
|
||||
case 200: setSuccess(response.data.success_messages); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
case 401: set400Error(response.data.error_messages); break;
|
||||
case 402: set400Error(response.data.error_messages); break;
|
||||
}
|
||||
})
|
||||
axios.post('/api/children/requestPassword', formdata)
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setSubmit(false)
|
||||
switch(response.data.status_code){
|
||||
case 200: setSuccess(response.data.success_messages); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
case 401: set400Error(response.data.error_messages); break;
|
||||
case 402: set400Error(response.data.error_messages); break;
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import React, { useState } from 'react';
|
||||
import React, { useState, useRef, useEffect } from 'react';
|
||||
import { useNavigate, useParams } from 'react-router-dom';
|
||||
import { LoadingButton } from '@material-ui/lab';
|
||||
|
||||
|
@ -18,7 +18,16 @@ const ChildForgotPasswordReset = () => {
|
|||
const [_400error, set400Error] = useState('')
|
||||
|
||||
|
||||
const handleSubmit = async (e) => {
|
||||
const isMountedRef = useRef(true);
|
||||
useEffect(() => {
|
||||
isMountedRef.current = false;
|
||||
return () => {
|
||||
isMountedRef.current = true;
|
||||
}
|
||||
}, [])
|
||||
|
||||
|
||||
const handleSubmit = (e) => {
|
||||
e.preventDefault();
|
||||
set422Errors({password:'', password_confirmation:''});
|
||||
setSubmit(true);
|
||||
|
@ -28,18 +37,20 @@ const ChildForgotPasswordReset = () => {
|
|||
token: params?.token
|
||||
}
|
||||
|
||||
await axios.put('/api/children/updatePassword', req)
|
||||
.then(response => {
|
||||
setSubmit(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: {
|
||||
navigator('/c-account/forgot-password/complete', {state: response.data.success_messages});
|
||||
break;
|
||||
}
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
axios.put('/api/children/updatePassword', req)
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setSubmit(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: {
|
||||
navigator('/c-account/forgot-password/complete', {state: response.data.success_messages});
|
||||
break;
|
||||
}
|
||||
})
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import React, { useState } from 'react';
|
||||
import React, { useState, useRef, useEffect } from 'react';
|
||||
import { Link, useLocation } from 'react-router-dom';
|
||||
import { LoadingButton } from '@material-ui/lab';
|
||||
import { useCookies } from 'react-cookie';
|
||||
|
@ -18,8 +18,16 @@ const ChildLogin = () => {
|
|||
const [_422errors, set422Errors] = useState({tel: '', password: ''});
|
||||
const [_400error, set400Error] = useState('');
|
||||
|
||||
const isMountedRef = useRef(true);
|
||||
useEffect(() => {
|
||||
isMountedRef.current = false;
|
||||
return () => {
|
||||
isMountedRef.current = true;
|
||||
}
|
||||
}, [])
|
||||
|
||||
const handleSubmit = async (e) => {
|
||||
|
||||
const handleSubmit = (e) => {
|
||||
e.preventDefault();
|
||||
setSubmit(true);
|
||||
set422Errors({tel:'', password:''});
|
||||
|
@ -28,32 +36,33 @@ const ChildLogin = () => {
|
|||
formdata.append('tel', tel);
|
||||
formdata.append('password', password);
|
||||
|
||||
await axios.post('/api/children/login/', formdata)
|
||||
.then(response => {
|
||||
setSubmit(false)
|
||||
switch(response.data.status_code){
|
||||
case 200:{
|
||||
localStorage.setItem("kiki_login_flag", true);
|
||||
localStorage.setItem('kiki_acc_type', 'c-account');
|
||||
localStorage.setItem('kiki_acc_id', response.data.params.id);
|
||||
setCookie('logged', 'success');
|
||||
if(location.search == '')
|
||||
window.location.href = "/c-account/meeting";
|
||||
else
|
||||
window.location.href = location.search.replace('?redirect_to=', '');
|
||||
break;
|
||||
}
|
||||
case 400: set400Error(response.data.error_message); break;
|
||||
case 422: {
|
||||
window.scrollTo(0, 0);
|
||||
set422Errors(response.data.error_messages);
|
||||
break;
|
||||
}
|
||||
axios.post('/api/children/login/', formdata)
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
setSubmit(false)
|
||||
switch(response.data.status_code){
|
||||
case 200:{
|
||||
localStorage.setItem("kiki_login_flag", true);
|
||||
localStorage.setItem('kiki_acc_type', 'c-account');
|
||||
localStorage.setItem('kiki_acc_id', response.data.params.id);
|
||||
setCookie('logged', 'success');
|
||||
if(location.search == '')
|
||||
window.location.href = "/c-account/meeting";
|
||||
else
|
||||
window.location.href = location.search.replace('?redirect_to=', '');
|
||||
break;
|
||||
}
|
||||
if(response.data.status_code != 200){
|
||||
setPassword('');
|
||||
case 400: set400Error(response.data.error_message); break;
|
||||
case 422: {
|
||||
window.scrollTo(0, 0);
|
||||
set422Errors(response.data.error_messages);
|
||||
break;
|
||||
}
|
||||
})
|
||||
}
|
||||
if(response.data.status_code != 200){
|
||||
setPassword('');
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
return (
|
||||
|
|
|
@ -36,18 +36,18 @@ const ChildSignUp = () => {
|
|||
});
|
||||
|
||||
|
||||
useEffect( async ()=>{
|
||||
await axios.get('/api/children/checkRegisterMain', {params:{token: params?.token}})
|
||||
.then(response=>{
|
||||
switch(response.data.status_code){
|
||||
case 200: setLoaded(true); setIdentity(response.data.params.tel); break;
|
||||
case 400: navigator('/c-account/login', {state: ''}); break;
|
||||
};
|
||||
})
|
||||
useEffect(()=>{
|
||||
axios.get('/api/children/checkRegisterMain', {params:{token: params?.token}})
|
||||
.then(response=>{
|
||||
switch(response.data.status_code){
|
||||
case 200: setLoaded(true); setIdentity(response.data.params.tel); break;
|
||||
case 400: navigator('/c-account/login', {state: ''}); break;
|
||||
};
|
||||
})
|
||||
},[])
|
||||
|
||||
|
||||
const handleSubmit = async (e) => {
|
||||
const handleSubmit = (e) => {
|
||||
e.preventDefault();
|
||||
set422Errors({
|
||||
first_name:'',
|
||||
|
@ -74,23 +74,23 @@ const ChildSignUp = () => {
|
|||
formdata.append('token', params?.token);
|
||||
|
||||
|
||||
await axios.post('/api/children/registerMain', formdata)
|
||||
.then(response => {
|
||||
setSubmit(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: navigator('/c-account/register/complete/'+ params?.token, {state: response.data.success_messages}); break;
|
||||
case 400: navigator('/c-account/register/error/' + params?.token, {state: response.data.error_messages}); break;
|
||||
case 422: {
|
||||
window.scrollTo(0, 0);
|
||||
set422Errors(response.data.error_messages);
|
||||
break;
|
||||
}
|
||||
};
|
||||
if(response.data.status_code != 200){
|
||||
setPassword('');
|
||||
setPasswordConfirmation('');
|
||||
axios.post('/api/children/registerMain', formdata)
|
||||
.then(response => {
|
||||
setSubmit(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: navigator('/c-account/register/complete/'+ params?.token, {state: response.data.success_messages}); break;
|
||||
case 400: navigator('/c-account/register/error/' + params?.token, {state: response.data.error_messages}); break;
|
||||
case 422: {
|
||||
window.scrollTo(0, 0);
|
||||
set422Errors(response.data.error_messages);
|
||||
break;
|
||||
}
|
||||
})
|
||||
};
|
||||
if(response.data.status_code != 200){
|
||||
setPassword('');
|
||||
setPasswordConfirmation('');
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import React, { useState, useEffect } from 'react';
|
||||
import React, { useState, useEffect, useRef } from 'react';
|
||||
import { useNavigate } from 'react-router-dom';
|
||||
import { LoadingButton } from '@material-ui/lab';
|
||||
import Alert from '../../../component/alert';
|
||||
|
@ -15,36 +15,35 @@ const ChildSignUpTemporary = () => {
|
|||
const [_422errors, set422Errors] = useState({tel:''});
|
||||
const [_success, setSuccess] = useState('');
|
||||
|
||||
|
||||
const isMountedRef = useRef(true);
|
||||
|
||||
useEffect(() => {
|
||||
let mounted = true;
|
||||
isMountedRef.current = false;
|
||||
setLoaded(false);
|
||||
|
||||
if(document.getElementById('father_token')){
|
||||
let father_id = document.getElementById('father_token').value;
|
||||
axios.get('/api/children/father/relations/check', {params:{father_id: father_id}})
|
||||
.then(response=>{
|
||||
if(mounted){
|
||||
if(response.data.status_code == 200){
|
||||
setLoaded(true);
|
||||
}
|
||||
else{
|
||||
navigator('/c-account/login');
|
||||
}
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
if(response.data.status_code == 200){
|
||||
setLoaded(true);
|
||||
}
|
||||
else{
|
||||
navigator('/c-account/login');
|
||||
}
|
||||
})
|
||||
}
|
||||
else{
|
||||
setLoaded(true);
|
||||
}
|
||||
|
||||
return () => {
|
||||
mounted = false;
|
||||
isMountedRef.current = true;
|
||||
}
|
||||
}, [])
|
||||
|
||||
const handleSubmit = async (e) => {
|
||||
const handleSubmit = (e) => {
|
||||
|
||||
e.preventDefault();
|
||||
set422Errors({tel:''});
|
||||
|
@ -57,15 +56,17 @@ const ChildSignUpTemporary = () => {
|
|||
}
|
||||
setSubmit(true);
|
||||
|
||||
await axios.post('/api/children/registerTemporary', formdata)
|
||||
.then(response => {
|
||||
setSubmit(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: setSuccess("SMSに本登録案内のメッセージを送信しました。本登録を行ってください。"); break;
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
};
|
||||
})
|
||||
axios.post('/api/children/registerTemporary', formdata)
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setSubmit(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: setSuccess("SMSに本登録案内のメッセージを送信しました。本登録を行ってください。"); break;
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
};
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -34,64 +34,66 @@ const ChildMeetingDetail = () => {
|
|||
const isMountedRef = useRef(true);
|
||||
|
||||
|
||||
useEffect( async () => {
|
||||
useEffect(() => {
|
||||
isMountedRef.current = false;
|
||||
let mounted = true;
|
||||
setLoaded(false);
|
||||
|
||||
await axios.get(`/api/children/meetings/detail/${params.meeting_id}`, {params:{child_id: child_id}})
|
||||
.then(response => {
|
||||
if(!mounted) return;
|
||||
setLoaded(true);
|
||||
setNotice(response.data.notice);
|
||||
if(response.data.status_code == 200)
|
||||
{
|
||||
var meeting = response.data.params;
|
||||
setMeeting(meeting);
|
||||
if(meeting.meeting_image.length > 0) setThumbnail(meeting.meeting_image[0].image);
|
||||
if(meeting.approval.approval_at != null){
|
||||
setApprovalRegister(true);
|
||||
}
|
||||
axios.get(`/api/children/meetings/detail/${params.meeting_id}`, {params:{child_id: child_id}})
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setLoaded(true);
|
||||
setNotice(response.data.notice);
|
||||
if(response.data.status_code == 200)
|
||||
{
|
||||
var meeting = response.data.params;
|
||||
setMeeting(meeting);
|
||||
if(meeting.meeting_image.length > 0) setThumbnail(meeting.meeting_image[0].image);
|
||||
if(meeting.approval.approval_at != null){
|
||||
setApprovalRegister(true);
|
||||
}
|
||||
else {
|
||||
set400Error("失敗しました。");
|
||||
}
|
||||
})
|
||||
.catch(err=>{
|
||||
if(!mounted) return;
|
||||
setLoaded(true);
|
||||
setNotice(err.response.data.notice);
|
||||
if(err.response.status==404){
|
||||
set404Error(err.response.data.message);
|
||||
}
|
||||
})
|
||||
}
|
||||
else {
|
||||
set400Error("失敗しました。");
|
||||
}
|
||||
})
|
||||
.catch(err=>{
|
||||
if(isMountedRef.current) return;
|
||||
setLoaded(true);
|
||||
setNotice(err.response.data.notice);
|
||||
if(err.response.status==404){
|
||||
set404Error(err.response.data.message);
|
||||
}
|
||||
})
|
||||
|
||||
return function cleanup() {
|
||||
mounted = false
|
||||
isMountedRef.current = true
|
||||
}
|
||||
},[]);
|
||||
|
||||
|
||||
const handleApprovalRegister = async () => {
|
||||
const handleApprovalRegister = () => {
|
||||
setSubmit(true);
|
||||
const formdata = new FormData();
|
||||
formdata.append('child_id', child_id);
|
||||
formdata.append('meeting_id', params.meeting_id);
|
||||
|
||||
await axios.post('/api/children/meeting/approvals/registerApproval', formdata)
|
||||
.then(response => {
|
||||
setSubmit(false);
|
||||
setShowConfirmMoal(false);
|
||||
setNotice(response.data.notice);
|
||||
switch(response.data.status_code){
|
||||
case 200: {
|
||||
setSuccess(response.data.success_messages);
|
||||
setApprovalRegister(true);
|
||||
break;
|
||||
}
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
axios.post('/api/children/meeting/approvals/registerApproval', formdata)
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setSubmit(false);
|
||||
setShowConfirmMoal(false);
|
||||
setNotice(response.data.notice);
|
||||
switch(response.data.status_code){
|
||||
case 200: {
|
||||
setSuccess(response.data.success_messages);
|
||||
setApprovalRegister(true);
|
||||
break;
|
||||
}
|
||||
})
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const handlePDFOpen = (pdf) => {
|
||||
|
|
|
@ -33,47 +33,48 @@ const ChildMeetings = () => {
|
|||
},[loaded1, loaded2])
|
||||
|
||||
|
||||
useEffect( async () => {
|
||||
useEffect(() => {
|
||||
isMountedRef.current = false;
|
||||
let mounted = true;
|
||||
setLoaded(false);
|
||||
|
||||
await axios.get('/api/children/meetings/listOfNonApprovalOfChild', {params:{child_id: child_id}})
|
||||
.then(response => {
|
||||
if(!mounted) return;
|
||||
setLoaded1(true);
|
||||
setNotice(response.data.notice);
|
||||
if(response.data.status_code==200){
|
||||
setMettingListNonApproval(response.data.params);
|
||||
var len = response.data.params.length;
|
||||
if(len > INFINITE)
|
||||
setFetchMettingListNonApproval(response.data.params.slice(0, INFINITE));
|
||||
else setFetchMettingListNonApproval(response.data.params.slice(0, len));
|
||||
}
|
||||
else {
|
||||
set400Error("失敗しました。");
|
||||
}
|
||||
})
|
||||
axios.get('/api/children/meetings/listOfNonApprovalOfChild', {params:{child_id: child_id}})
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setLoaded1(true);
|
||||
setNotice(response.data.notice);
|
||||
if(response.data.status_code==200){
|
||||
setMettingListNonApproval(response.data.params);
|
||||
var len = response.data.params.length;
|
||||
if(len > INFINITE)
|
||||
setFetchMettingListNonApproval(response.data.params.slice(0, INFINITE));
|
||||
else setFetchMettingListNonApproval(response.data.params.slice(0, len));
|
||||
}
|
||||
else {
|
||||
set400Error("失敗しました。");
|
||||
}
|
||||
})
|
||||
|
||||
await axios.get('/api/children/meetings/listOfApprovalOfChild', {params:{child_id: child_id}})
|
||||
.then(response => {
|
||||
if(!mounted) return;
|
||||
setLoaded2(true);
|
||||
setNotice(response.data.notice);
|
||||
if(response.data.status_code==200){
|
||||
setMettingListApproval(response.data.params);
|
||||
var len = response.data.params.length;
|
||||
if(len > INFINITE)
|
||||
setFetchMettingListApproval(response.data.params.slice(0, INFINITE));
|
||||
else setFetchMettingListApproval(response.data.params.slice(0, len));
|
||||
}
|
||||
else {
|
||||
set400Error("失敗しました。");
|
||||
}
|
||||
})
|
||||
axios.get('/api/children/meetings/listOfApprovalOfChild', {params:{child_id: child_id}})
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setLoaded2(true);
|
||||
setNotice(response.data.notice);
|
||||
if(response.data.status_code==200){
|
||||
setMettingListApproval(response.data.params);
|
||||
var len = response.data.params.length;
|
||||
if(len > INFINITE)
|
||||
setFetchMettingListApproval(response.data.params.slice(0, INFINITE));
|
||||
else setFetchMettingListApproval(response.data.params.slice(0, len));
|
||||
}
|
||||
else {
|
||||
set400Error("失敗しました。");
|
||||
}
|
||||
})
|
||||
|
||||
return function cleanup() {
|
||||
mounted = false
|
||||
isMountedRef.current = true;
|
||||
}
|
||||
},[]);
|
||||
|
||||
|
|
|
@ -20,33 +20,35 @@ const ChildParentDetail = () => {
|
|||
|
||||
const isMountedRef = useRef(true);
|
||||
|
||||
useEffect( async () => {
|
||||
useEffect(() => {
|
||||
isMountedRef.current = false;
|
||||
let mounted = true;
|
||||
setLoaded(false);
|
||||
await axios.get('/api/children/fathers/detail/'+ params?.father_id)
|
||||
.then(response => {
|
||||
if(!mounted) return;
|
||||
|
||||
setLoaded(true);
|
||||
setNotice(response.data.notice);
|
||||
if(response.data.status_code==200){
|
||||
setParent(response.data.params);
|
||||
}
|
||||
else {
|
||||
set400Error("失敗しました。");
|
||||
}
|
||||
})
|
||||
.catch(err=>{
|
||||
setLoaded(true);
|
||||
setNotice(err.response.data.notice);
|
||||
if(err.response.status==404){
|
||||
set404Error(err.response.data.message);
|
||||
}
|
||||
})
|
||||
axios.get('/api/children/fathers/detail/'+ params?.father_id)
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setLoaded(true);
|
||||
setNotice(response.data.notice);
|
||||
if(response.data.status_code==200){
|
||||
setParent(response.data.params);
|
||||
}
|
||||
else {
|
||||
set400Error("失敗しました。");
|
||||
}
|
||||
})
|
||||
.catch(err=>{
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
return function cleanup() {
|
||||
mounted = false
|
||||
setLoaded(true);
|
||||
setNotice(err.response.data.notice);
|
||||
if(err.response.status==404){
|
||||
set404Error(err.response.data.message);
|
||||
}
|
||||
})
|
||||
|
||||
return () => {
|
||||
isMountedRef.current = true;
|
||||
}
|
||||
},[]);
|
||||
|
||||
|
|
|
@ -22,30 +22,30 @@ const ChildParents = () => {
|
|||
|
||||
const isMountedRef = useRef(true);
|
||||
|
||||
useEffect( async () => {
|
||||
useEffect( () => {
|
||||
isMountedRef.current = false;
|
||||
let mounted = true;
|
||||
setLoaded(false);
|
||||
|
||||
await axios.get('/api/children/fathers/listOfChild', {params: {child_id: child_id}})
|
||||
.then(response => {
|
||||
if(!mounted) return;
|
||||
setLoaded(true);
|
||||
setNotice(response.data.notice);
|
||||
if(response.data.status_code==200){
|
||||
setParentList(response.data.params);
|
||||
var len = response.data.params.length;
|
||||
if(len > INFINITE)
|
||||
setFetchParentList(response.data.params.slice(0, INFINITE));
|
||||
else setFetchParentList(response.data.params.slice(0, len));
|
||||
}
|
||||
else {
|
||||
set400Error("失敗しました。");
|
||||
}
|
||||
})
|
||||
axios.get('/api/children/fathers/listOfChild', {params: {child_id: child_id}})
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
return function cleanup() {
|
||||
mounted = false
|
||||
setLoaded(true);
|
||||
setNotice(response.data.notice);
|
||||
if(response.data.status_code==200){
|
||||
setParentList(response.data.params);
|
||||
var len = response.data.params.length;
|
||||
if(len > INFINITE)
|
||||
setFetchParentList(response.data.params.slice(0, INFINITE));
|
||||
else setFetchParentList(response.data.params.slice(0, len));
|
||||
}
|
||||
else {
|
||||
set400Error("失敗しました。");
|
||||
}
|
||||
})
|
||||
|
||||
return () => {
|
||||
isMountedRef.current = true;
|
||||
}
|
||||
}, []);
|
||||
|
||||
|
|
|
@ -39,43 +39,46 @@ const ChildProfileEdit = () => {
|
|||
|
||||
const isMountedRef = useRef(true);
|
||||
|
||||
useEffect( async () => {
|
||||
useEffect(() => {
|
||||
isMountedRef.current = false;
|
||||
let mounted = true;
|
||||
setLoaded(false);
|
||||
|
||||
await axios.get('/api/children/detail/'+child_id)
|
||||
.then(response => {
|
||||
if(!mounted) return;
|
||||
setLoaded(true);
|
||||
setNotice(response.data.notice);
|
||||
if(response.data.status_code==200){
|
||||
let params = response.data.params;
|
||||
setProfile(params);
|
||||
setFirstName(params.first_name);
|
||||
setLastName(params.last_name);
|
||||
setEmail(params.email);
|
||||
setTel(params.tel);
|
||||
setIdentity(params.identity);
|
||||
setCompany(params.company? params.company: '');
|
||||
}else {
|
||||
set400Error("失敗しました。");
|
||||
}
|
||||
})
|
||||
.catch(err=>{
|
||||
setLoaded(true);
|
||||
setNotice(err.response.data.notice);
|
||||
if(err.response.status==404){
|
||||
set404Error(err.response.data.message);
|
||||
}
|
||||
})
|
||||
return function cleanup() {
|
||||
mounted = false
|
||||
axios.get('/api/children/detail/'+child_id)
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setLoaded(true);
|
||||
setNotice(response.data.notice);
|
||||
if(response.data.status_code==200){
|
||||
let params = response.data.params;
|
||||
setProfile(params);
|
||||
setFirstName(params.first_name);
|
||||
setLastName(params.last_name);
|
||||
setEmail(params.email);
|
||||
setTel(params.tel);
|
||||
setIdentity(params.identity);
|
||||
setCompany(params.company? params.company: '');
|
||||
}else {
|
||||
set400Error("失敗しました。");
|
||||
}
|
||||
})
|
||||
.catch(err=>{
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setLoaded(true);
|
||||
setNotice(err.response.data.notice);
|
||||
if(err.response.status==404){
|
||||
set404Error(err.response.data.message);
|
||||
}
|
||||
})
|
||||
|
||||
return () => {
|
||||
isMountedRef.current = true
|
||||
}
|
||||
},[]);
|
||||
|
||||
|
||||
const handleSubmit = async (e) => {
|
||||
const handleSubmit = (e) => {
|
||||
e.preventDefault();
|
||||
set422Errors({
|
||||
first_name:'',
|
||||
|
@ -104,19 +107,21 @@ const ChildProfileEdit = () => {
|
|||
}
|
||||
setSubmit(true);
|
||||
|
||||
await axios.put('/api/children/updateProfile/'+ child_id, post)
|
||||
.then(response => {
|
||||
setSubmit(false);
|
||||
setNotice(response.data.notice);
|
||||
switch(response.data.status_code){
|
||||
case 200: {
|
||||
navigator('/c-account/profile', { state: response.data.success_messages});
|
||||
break;
|
||||
}
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
axios.put('/api/children/updateProfile/'+ child_id, post)
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setSubmit(false);
|
||||
setNotice(response.data.notice);
|
||||
switch(response.data.status_code){
|
||||
case 200: {
|
||||
navigator('/c-account/profile', { state: response.data.success_messages});
|
||||
break;
|
||||
}
|
||||
})
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -27,33 +27,35 @@ const ChildProfileDetail = () => {
|
|||
|
||||
const isMountedRef = useRef(true);
|
||||
|
||||
useEffect( async () => {
|
||||
useEffect(() => {
|
||||
isMountedRef.current = false;
|
||||
let mounted = true;
|
||||
setLoaded(false);
|
||||
await axios.get('/api/children/detail/'+ child_id)
|
||||
.then(response => {
|
||||
if(!mounted) return;
|
||||
setLoaded(true);
|
||||
setNotice(response.data.notice);
|
||||
if(response.data.status_code==200){
|
||||
setProfile(response.data.params);
|
||||
setImage(response.data.params.image);
|
||||
} else {
|
||||
set400Error("失敗しました。");
|
||||
}
|
||||
})
|
||||
.catch(err=>{
|
||||
if(!mounted) return;
|
||||
setLoaded(true);
|
||||
setNotice(err.response.data.notice);
|
||||
if(err.response.status==404){
|
||||
set404Error(err.response.data.message);
|
||||
}
|
||||
})
|
||||
|
||||
axios.get('/api/children/detail/'+ child_id)
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setLoaded(true);
|
||||
setNotice(response.data.notice);
|
||||
if(response.data.status_code==200){
|
||||
setProfile(response.data.params);
|
||||
setImage(response.data.params.image);
|
||||
} else {
|
||||
set400Error("失敗しました。");
|
||||
}
|
||||
})
|
||||
.catch(err=>{
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setLoaded(true);
|
||||
setNotice(err.response.data.notice);
|
||||
if(err.response.status==404){
|
||||
set404Error(err.response.data.message);
|
||||
}
|
||||
})
|
||||
|
||||
return function cleanup() {
|
||||
mounted = false
|
||||
return () => {
|
||||
isMountedRef.current = true;
|
||||
}
|
||||
},[]);
|
||||
|
||||
|
@ -64,8 +66,8 @@ const ChildProfileDetail = () => {
|
|||
}
|
||||
})
|
||||
|
||||
const handleLogout = async () => {
|
||||
await axios.get('/c-account/logout')
|
||||
const handleLogout = () => {
|
||||
axios.get('/c-account/logout')
|
||||
.then(() => {
|
||||
setCookie('logged', null);
|
||||
window.location.href = '/c-account/login';
|
||||
|
@ -78,23 +80,25 @@ const ChildProfileDetail = () => {
|
|||
let reader = new FileReader();
|
||||
let _file = e.target.files[0];
|
||||
reader.readAsDataURL(_file);
|
||||
reader.onloadend = async () => {
|
||||
reader.onloadend = () => {
|
||||
set422Errors({image: ''});
|
||||
setSubmitImage(true);
|
||||
await axios.put(`/api/children/updateImage/${child_id}`, {image: reader.result})
|
||||
.then(response => {
|
||||
setNotice(response.data.notice);
|
||||
setSubmitImage(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: {
|
||||
localStorage.setItem('image_upload_success', response.data.success_messages);
|
||||
window.location.reload(true);
|
||||
break;
|
||||
}
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
axios.put(`/api/children/updateImage/${child_id}`, {image: reader.result})
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setNotice(response.data.notice);
|
||||
setSubmitImage(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: {
|
||||
localStorage.setItem('image_upload_success', response.data.success_messages);
|
||||
window.location.reload(true);
|
||||
break;
|
||||
}
|
||||
});
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
}
|
||||
});
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import React, { useState } from 'react';
|
||||
import React, { useState, useRef, useEffect } from 'react';
|
||||
import { useNavigate } from 'react-router-dom';
|
||||
import { LoadingButton } from '@material-ui/lab';
|
||||
|
||||
|
@ -25,7 +25,16 @@ const ChildProfilePasswordEdit = () => {
|
|||
const [submit, setSubmit] = useState(false);
|
||||
|
||||
|
||||
const handleSubmit = async (e) => {
|
||||
const isMountedRef = useRef(true);
|
||||
useEffect(() => {
|
||||
isMountedRef.current = false;
|
||||
return () => {
|
||||
isMountedRef.current = true;
|
||||
}
|
||||
}, [])
|
||||
|
||||
|
||||
const handleSubmit = (e) => {
|
||||
e.preventDefault();
|
||||
set422Errors({
|
||||
password:'',
|
||||
|
@ -37,19 +46,21 @@ const ChildProfilePasswordEdit = () => {
|
|||
password_confirmation: password_confirmation
|
||||
}
|
||||
|
||||
await axios.put(`/api/children/updatePassword/${child_id}`, post)
|
||||
.then(response => {
|
||||
setSubmit(false);
|
||||
setNotice(response.data.notice);
|
||||
switch(response.data.status_code){
|
||||
case 200: {
|
||||
navigator('/c-account/profile', { state: response.data.success_messages });
|
||||
break;
|
||||
}
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
axios.put(`/api/children/updatePassword/${child_id}`, post)
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setSubmit(false);
|
||||
setNotice(response.data.notice);
|
||||
switch(response.data.status_code){
|
||||
case 200: {
|
||||
navigator('/c-account/profile', { state: response.data.success_messages });
|
||||
break;
|
||||
}
|
||||
})
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import React, { useState } from 'react';
|
||||
import React, { useState, useRef, useEffect } from 'react';
|
||||
import { LoadingButton } from '@material-ui/lab';
|
||||
|
||||
import Notification from '../../component/notification';
|
||||
|
@ -12,18 +12,29 @@ const ChildProfileWithdrawal = () => {
|
|||
const [_400error, set400Error] = useState('');
|
||||
|
||||
|
||||
const handleSubmit = async (e) => {
|
||||
const isMountedRef = useRef(true);
|
||||
useEffect(() => {
|
||||
isMountedRef.current = false;
|
||||
return () => {
|
||||
isMountedRef.current = true;
|
||||
}
|
||||
}, [])
|
||||
|
||||
|
||||
const handleSubmit = (e) => {
|
||||
e.preventDefault();
|
||||
setSubmit(true);
|
||||
await axios.delete('/api/children/withdrawal', {params:{child_id: child_id}})
|
||||
.then(response => {
|
||||
setSubmit(false);
|
||||
setNotice(response.data.notice);
|
||||
switch(response.data.status_code){
|
||||
case 200: window.location.href = "/c-account/withdrawal/complete"; break;
|
||||
case 400: set400Error("失敗しました。"); break;
|
||||
}
|
||||
})
|
||||
axios.delete('/api/children/withdrawal', {params:{child_id: child_id}})
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setSubmit(false);
|
||||
setNotice(response.data.notice);
|
||||
switch(response.data.status_code){
|
||||
case 200: window.location.href = "/c-account/withdrawal/complete"; break;
|
||||
case 400: set400Error("失敗しました。"); break;
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
return (
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import React, { useEffect, useState } from 'react';
|
||||
import React, { useEffect, useState, useRef } from 'react';
|
||||
import { Link } from 'react-router-dom';
|
||||
import moment from 'moment';
|
||||
|
||||
|
@ -30,7 +30,16 @@ const ChildSearch = () => {
|
|||
const [notice, setNotice] = useState(localStorage.getItem('notice'));
|
||||
|
||||
|
||||
const handleSearch = async (e) => {
|
||||
const isMountedRef = useRef(true);
|
||||
useEffect(() => {
|
||||
isMountedRef.current = false;
|
||||
return () => {
|
||||
isMountedRef.current = true;
|
||||
}
|
||||
}, [])
|
||||
|
||||
|
||||
const handleSearch = (e) => {
|
||||
e.preventDefault();
|
||||
if(keyword == ''){
|
||||
document.getElementById('keyword').focus();
|
||||
|
@ -40,31 +49,35 @@ const ChildSearch = () => {
|
|||
setLoaded2(false);
|
||||
setInitPage(false);
|
||||
|
||||
await axios.get('/api/children/meetings/searchOfNonApprovalOfChild', {params:{keyword: keyword, child_id: child_id}})
|
||||
.then(response => {
|
||||
setLoaded1(true);
|
||||
setNotice(response.data.notice);
|
||||
if(response.data.status_code==200){
|
||||
setMettingListNonApproval(response.data.params);
|
||||
var len = response.data.params.length;
|
||||
if(len > INFINITE)
|
||||
setFetchMettingListNonApproval(response.data.params.slice(0, INFINITE));
|
||||
else setFetchMettingListNonApproval(response.data.params.slice(0, len));
|
||||
}
|
||||
});
|
||||
axios.get('/api/children/meetings/searchOfNonApprovalOfChild', {params:{keyword: keyword, child_id: child_id}})
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
await axios.get('/api/children/meetings/searchOfApprovalOfChild', {params:{keyword: keyword, child_id: child_id}})
|
||||
.then((response) => {
|
||||
setLoaded2(true);
|
||||
setNotice(response.data.notice);
|
||||
if(response.data.status_code==200){
|
||||
setMettingListApproval(response.data.params);
|
||||
var len = response.data.params.length;
|
||||
if(len > INFINITE)
|
||||
setFetchMettingListApproval(response.data.params.slice(0, INFINITE));
|
||||
else setFetchMettingListApproval(response.data.params.slice(0, len));
|
||||
}
|
||||
});
|
||||
setLoaded1(true);
|
||||
setNotice(response.data.notice);
|
||||
if(response.data.status_code==200){
|
||||
setMettingListNonApproval(response.data.params);
|
||||
var len = response.data.params.length;
|
||||
if(len > INFINITE)
|
||||
setFetchMettingListNonApproval(response.data.params.slice(0, INFINITE));
|
||||
else setFetchMettingListNonApproval(response.data.params.slice(0, len));
|
||||
}
|
||||
});
|
||||
|
||||
axios.get('/api/children/meetings/searchOfApprovalOfChild', {params:{keyword: keyword, child_id: child_id}})
|
||||
.then((response) => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setLoaded2(true);
|
||||
setNotice(response.data.notice);
|
||||
if(response.data.status_code==200){
|
||||
setMettingListApproval(response.data.params);
|
||||
var len = response.data.params.length;
|
||||
if(len > INFINITE)
|
||||
setFetchMettingListApproval(response.data.params.slice(0, INFINITE));
|
||||
else setFetchMettingListApproval(response.data.params.slice(0, len));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
useEffect(()=>{
|
||||
|
|
|
@ -8,8 +8,8 @@ export default function ChildSide() {
|
|||
|
||||
const child_img = document.getElementById('child_image').value;
|
||||
|
||||
const handleLogout = async () => {
|
||||
await axios.get('/c-account/logout')
|
||||
const handleLogout = () => {
|
||||
axios.get('/c-account/logout')
|
||||
.then(() => {
|
||||
setCookie('logged', null);
|
||||
window.location.href = '/c-account/login';
|
||||
|
|
|
@ -25,41 +25,35 @@ export default function ModalSettingNotify({show, handleClose, meetingId, handle
|
|||
const [loaded2, setLoaded2] = useState(false);
|
||||
const [loaded, setLoaded] = useState(false);
|
||||
|
||||
const isMountedRef = useRef(false);
|
||||
const isMountedRef = useRef(true);
|
||||
|
||||
useEffect( async () => {
|
||||
isMountedRef.current = true;
|
||||
let mounted = true;
|
||||
const source = axios.CancelToken.source()
|
||||
const controller = new AbortController();
|
||||
const signal = controller.signal;
|
||||
useEffect(() => {
|
||||
isMountedRef.current = false;
|
||||
|
||||
setLoaded1(false);
|
||||
await axios.get('/api/fathers/meeting/approvals/listChildrenOfApprovel', {params: { meeting_id: meetingId }}, {cancelToken: source.token}, { signal: signal })
|
||||
axios.get('/api/fathers/meeting/approvals/listChildrenOfApprovel', {params: { meeting_id: meetingId }}, {cancelToken: source.token}, { signal: signal })
|
||||
.then((response) => {
|
||||
if(mounted){
|
||||
setLoaded1(true);
|
||||
if(response.data.status_code==200){
|
||||
setApproval(response.data.params);
|
||||
}
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setLoaded1(true);
|
||||
if(response.data.status_code==200){
|
||||
setApproval(response.data.params);
|
||||
}
|
||||
});
|
||||
|
||||
setLoaded2(false);
|
||||
await axios.get('/api/fathers/meeting/approvals/listChildrenOfUnapprovel', {params: { meeting_id: meetingId }}, {cancelToken: source.token}, { signal: signal })
|
||||
axios.get('/api/fathers/meeting/approvals/listChildrenOfUnapprovel', {params: { meeting_id: meetingId }}, {cancelToken: source.token}, { signal: signal })
|
||||
.then((response) => {
|
||||
if(mounted){
|
||||
setLoaded2(true);
|
||||
if(response.data.status_code==200){
|
||||
setUnapproval(response.data.params);
|
||||
}
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setLoaded2(true);
|
||||
if(response.data.status_code==200){
|
||||
setUnapproval(response.data.params);
|
||||
}
|
||||
});
|
||||
|
||||
return () => {
|
||||
mounted = false;
|
||||
source.cancel()
|
||||
controller.abort();
|
||||
isMountedRef.current = true;
|
||||
}
|
||||
}, []);
|
||||
|
||||
|
@ -70,17 +64,19 @@ export default function ModalSettingNotify({show, handleClose, meetingId, handle
|
|||
},[loaded1, loaded2]);
|
||||
|
||||
|
||||
const settingNotify = async (email) => {
|
||||
const settingNotify = (email) => {
|
||||
const formdata = new FormData();
|
||||
formdata.append('email', JSON.stringify(new Array(email)));
|
||||
formdata.append('meeting_id', meetingId);
|
||||
await axios.post('/api/fathers/meetingEditNotification', formdata)
|
||||
.then(response=>{
|
||||
switch(response.data.status_code){
|
||||
case 200: setSuccess('通知に成功しました!'); break;
|
||||
case 400: set400Error('通知に失敗しました。'); break;
|
||||
}
|
||||
})
|
||||
axios.post('/api/fathers/meetingEditNotification', formdata)
|
||||
.then(response=>{
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
switch(response.data.status_code){
|
||||
case 200: setSuccess('通知に成功しました!'); break;
|
||||
case 400: set400Error('通知に失敗しました。'); break;
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -16,14 +16,14 @@ const Contact = () => {
|
|||
const [_400error, set400Error] = useState('');
|
||||
|
||||
|
||||
const handleSubmit = async (e) => {
|
||||
const handleSubmit = (e) => {
|
||||
e.preventDefault();
|
||||
setSubmit(true); //show progressbar
|
||||
set422Errors({ email:'', message:'' });
|
||||
const formdata = new FormData();
|
||||
formdata.append('email', email);
|
||||
formdata.append('message', message);
|
||||
await axios.post('/api/contacts/register', formdata)
|
||||
axios.post('/api/contacts/register', formdata)
|
||||
.then(response => {
|
||||
setSubmit(false);
|
||||
switch(response.data.status_code){
|
||||
|
|
|
@ -15,7 +15,7 @@ const UnknownError = () => {
|
|||
const [_400error, set400Error] = useState('');
|
||||
|
||||
|
||||
const handleSubmit = async (e) => {
|
||||
const handleSubmit = (e) => {
|
||||
e.preventDefault();
|
||||
setSubmit(true); //show progressbar
|
||||
set422Errors({ email:'', message:'' });
|
||||
|
@ -23,16 +23,16 @@ const UnknownError = () => {
|
|||
formdata.append('email', email);
|
||||
formdata.append('message', message);
|
||||
|
||||
await axios.post('/api/contacts/register/', formdata)
|
||||
.then(response => {
|
||||
setSubmit(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: navigator('/contact-us/complete', {state: ''}); break;
|
||||
case 422: set422Errors(response.data.error_messages); break;
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
};
|
||||
})
|
||||
.catch(err=>console.log(err))
|
||||
axios.post('/api/contacts/register/', formdata)
|
||||
.then(response => {
|
||||
setSubmit(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: navigator('/contact-us/complete', {state: ''}); break;
|
||||
case 422: set422Errors(response.data.error_messages); break;
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
};
|
||||
})
|
||||
.catch(err=>console.log(err))
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ const ParentForgotPassword = () => {
|
|||
const [_400error, set400Error] = useState('')
|
||||
const [_success, setSuccess] = useState('')
|
||||
|
||||
const handleSubmit = async (e) => {
|
||||
const handleSubmit = (e) => {
|
||||
e.preventDefault();
|
||||
set422Errors({email: ''});
|
||||
setSubmit(true);
|
||||
|
@ -19,15 +19,15 @@ const ParentForgotPassword = () => {
|
|||
const formdata = new FormData();
|
||||
formdata.append('email', email);
|
||||
|
||||
await axios.post('/api/fathers/requestPassword', formdata)
|
||||
.then(response => {
|
||||
setSubmit(false)
|
||||
switch(response.data.status_code){
|
||||
case 200: setSuccess(response.data.success_messages); break;
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
}
|
||||
})
|
||||
axios.post('/api/fathers/requestPassword', formdata)
|
||||
.then(response => {
|
||||
setSubmit(false)
|
||||
switch(response.data.status_code){
|
||||
case 200: setSuccess(response.data.success_messages); break;
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ const ParentForgotPasswordReset = () => {
|
|||
const [_400error, set400Error] = useState('')
|
||||
|
||||
|
||||
const handleSubmit = async (e) => {
|
||||
const handleSubmit = (e) => {
|
||||
e.preventDefault();
|
||||
set422Errors({password:'', password_confirmation:''});
|
||||
setSubmit(true);
|
||||
|
@ -28,18 +28,18 @@ const ParentForgotPasswordReset = () => {
|
|||
token: params?.token
|
||||
}
|
||||
|
||||
await axios.put('/api/fathers/updatePassword', req)
|
||||
.then(response => {
|
||||
setSubmit(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: {
|
||||
navigator('/p-account/forgot-password/complete', {state: response.data.success_messages});
|
||||
break;
|
||||
}
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
axios.put('/api/fathers/updatePassword', req)
|
||||
.then(response => {
|
||||
setSubmit(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: {
|
||||
navigator('/p-account/forgot-password/complete', {state: response.data.success_messages});
|
||||
break;
|
||||
}
|
||||
})
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import React, { useState } from 'react';
|
||||
import React, { useState, useRef, useEffect } from 'react';
|
||||
import { Link, useLocation } from 'react-router-dom';
|
||||
import { LoadingButton } from '@material-ui/lab';
|
||||
import { useCookies } from 'react-cookie';
|
||||
|
@ -20,7 +20,16 @@ const ParentLogin = () => {
|
|||
const [_400error, set400Error] = useState('');
|
||||
|
||||
|
||||
const handleSubmit = async (e) => {
|
||||
const isMountedRef = useRef(true);
|
||||
useEffect(() => {
|
||||
isMountedRef.current = false;
|
||||
return () => {
|
||||
isMountedRef.current = true;
|
||||
}
|
||||
}, [])
|
||||
|
||||
|
||||
const handleSubmit = (e) => {
|
||||
e.preventDefault();
|
||||
setSubmit(true);
|
||||
set422Errors({email:'', password:''});
|
||||
|
@ -29,32 +38,34 @@ const ParentLogin = () => {
|
|||
formdata.append('email', email);
|
||||
formdata.append('password', password);
|
||||
|
||||
await axios.post('/api/fathers/login/', formdata)
|
||||
.then(response => {
|
||||
setSubmit(false)
|
||||
switch(response.data.status_code){
|
||||
case 200:{
|
||||
localStorage.setItem('kiki_login_flag', true);
|
||||
localStorage.setItem('kiki_acc_type', 'p-account');
|
||||
localStorage.setItem('kiki_acc_id', response.data.params.id);
|
||||
setCookie('logged', 'success');
|
||||
if(location.search == '')
|
||||
window.location.href = "/p-account/meeting";
|
||||
else
|
||||
window.location.href = location.search.replace('?redirect_to=', '');
|
||||
break;
|
||||
}
|
||||
case 400: set400Error(response.data.error_message); break;
|
||||
case 422: {
|
||||
window.scrollTo(0, 0);
|
||||
set422Errors(response.data.error_messages);
|
||||
break;
|
||||
}
|
||||
axios.post('/api/fathers/login/', formdata)
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setSubmit(false)
|
||||
switch(response.data.status_code){
|
||||
case 200:{
|
||||
localStorage.setItem('kiki_login_flag', true);
|
||||
localStorage.setItem('kiki_acc_type', 'p-account');
|
||||
localStorage.setItem('kiki_acc_id', response.data.params.id);
|
||||
setCookie('logged', 'success');
|
||||
if(location.search == '')
|
||||
window.location.href = "/p-account/meeting";
|
||||
else
|
||||
window.location.href = location.search.replace('?redirect_to=', '');
|
||||
break;
|
||||
}
|
||||
if(response.data.status_code != 200){
|
||||
setPassword('');
|
||||
case 400: set400Error(response.data.error_message); break;
|
||||
case 422: {
|
||||
window.scrollTo(0, 0);
|
||||
set422Errors(response.data.error_messages);
|
||||
break;
|
||||
}
|
||||
})
|
||||
}
|
||||
if(response.data.status_code != 200){
|
||||
setPassword('');
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
return (
|
||||
|
|
|
@ -35,18 +35,18 @@ const ParentSignUp = () => {
|
|||
const [_400error, set400Error] = useState('');
|
||||
|
||||
|
||||
useEffect( async ()=>{
|
||||
await axios.get('/api/fathers/checkRegisterMain', {params:{token: params?.token}})
|
||||
.then(response=>{
|
||||
switch(response.data.status_code){
|
||||
case 200: setLoaded(true); break;
|
||||
case 400: navigator('/p-account/login', { state: '' }); break;
|
||||
};
|
||||
})
|
||||
useEffect(()=>{
|
||||
axios.get('/api/fathers/checkRegisterMain', {params:{token: params?.token}})
|
||||
.then(response=>{
|
||||
switch(response.data.status_code){
|
||||
case 200: setLoaded(true); break;
|
||||
case 400: navigator('/p-account/login', { state: '' }); break;
|
||||
};
|
||||
})
|
||||
},[])
|
||||
|
||||
|
||||
const handleSubmit = async (e) => {
|
||||
const handleSubmit = (e) => {
|
||||
e.preventDefault();
|
||||
set422Errors({
|
||||
image:'',
|
||||
|
@ -68,24 +68,24 @@ const ParentSignUp = () => {
|
|||
formdata.append('terms', check_terms);
|
||||
formdata.append('token', params?.token);
|
||||
|
||||
await axios.post('/api/fathers/registerMain', formdata)
|
||||
.then(response => {
|
||||
setSubmit(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: navigator('/p-account/register/complete/'+ params?.token, {state: response.data.success_messages}); break;
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
case 401: navigator('/p-account/register/error/'+ params?.token, {state: response.data.error_messages}); break;
|
||||
case 422: {
|
||||
window.scrollTo(0, 0);
|
||||
set422Errors(response.data.error_messages);
|
||||
break;
|
||||
}
|
||||
};
|
||||
if(response.data.status_code != 200){
|
||||
setPassword('');
|
||||
setPasswordConfirmation('');
|
||||
axios.post('/api/fathers/registerMain', formdata)
|
||||
.then(response => {
|
||||
setSubmit(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: navigator('/p-account/register/complete/'+ params?.token, {state: response.data.success_messages}); break;
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
case 401: navigator('/p-account/register/error/'+ params?.token, {state: response.data.error_messages}); break;
|
||||
case 422: {
|
||||
window.scrollTo(0, 0);
|
||||
set422Errors(response.data.error_messages);
|
||||
break;
|
||||
}
|
||||
})
|
||||
};
|
||||
if(response.data.status_code != 200){
|
||||
setPassword('');
|
||||
setPasswordConfirmation('');
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -22,26 +22,26 @@ const ParentChildAdd = () => {
|
|||
const [response, setResponse] = useState(null);
|
||||
const isMountedRef = useRef(true);
|
||||
|
||||
useEffect( async () => {
|
||||
useEffect(() => {
|
||||
//check relation onload
|
||||
isMountedRef.current = false;
|
||||
setLoaded(false);
|
||||
await axios.get('/api/fathers/relations/check')
|
||||
|
||||
axios.get('/api/fathers/relations/check')
|
||||
.then(response=>{
|
||||
if(!isMountedRef.current){
|
||||
setNotice(response.data.notice);
|
||||
setLoaded(true);
|
||||
setResponse(response);
|
||||
}
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setNotice(response.data.notice);
|
||||
setLoaded(true);
|
||||
setResponse(response);
|
||||
})
|
||||
.catch(err=>console.log(err));
|
||||
return () => {
|
||||
console.log('mounted');
|
||||
return()=>{
|
||||
isMountedRef.current = true;
|
||||
}
|
||||
}, [])
|
||||
|
||||
const handleSubmit = async (e) => {
|
||||
const handleSubmit = (e) => {
|
||||
e.preventDefault();
|
||||
set422Errors({identity: ''});
|
||||
set401Error('');
|
||||
|
@ -50,19 +50,18 @@ const ParentChildAdd = () => {
|
|||
formdata.append('father_id', father_id);
|
||||
setSubmit(true);
|
||||
|
||||
await axios.post('/api/fathers/relations/register', formdata)
|
||||
.then(response => {
|
||||
if(!isMountedRef.current){
|
||||
setSubmit(false);
|
||||
setNotice(response.data.notice);
|
||||
switch(response.data.status_code){
|
||||
case 200: setSuccess(response.data.success_messages); break;
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
case 401: set401Error(response.data.error_messages); set400Error(response.data.error_messages); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
}
|
||||
}
|
||||
});
|
||||
axios.post('/api/fathers/relations/register', formdata)
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
setSubmit(false);
|
||||
setNotice(response.data.notice);
|
||||
switch(response.data.status_code){
|
||||
case 200: setSuccess(response.data.success_messages); break;
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
case 401: set401Error(response.data.error_messages); set400Error(response.data.error_messages); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
const copyInviteURL = () => {
|
||||
|
@ -79,7 +78,7 @@ const ParentChildAdd = () => {
|
|||
}
|
||||
}
|
||||
|
||||
const copyLineText = async () => {
|
||||
const copyLineText = () => {
|
||||
const inviteUrl = document.getElementById('inviteurl_html').value;
|
||||
const siteUrl = document.getElementById('siteurl').value;
|
||||
const lineText = `「KIKI」の招待が届いています。%0Aまずは以下より仮登録を行ってください。%0A%0A※スマホ本体を最新の状態にアップデートしてからURLをクリックしてください。%0A%0A${inviteUrl}%0A%0A▼公式サイトはこちら%0A${siteUrl}`;
|
||||
|
|
|
@ -25,13 +25,13 @@ const ParentChildDetail = () => {
|
|||
const child_id = params?.child_id;
|
||||
const isMountedRef = useRef(true);
|
||||
|
||||
useEffect( async () => {
|
||||
useEffect(() => {
|
||||
isMountedRef.current = false;
|
||||
let mounted = true;
|
||||
setLoaded(false);
|
||||
await axios.get('/api/fathers/children/detail/'+child_id, {params:{father_id: father_id}})
|
||||
|
||||
axios.get('/api/fathers/children/detail/'+child_id, {params:{father_id: father_id}})
|
||||
.then(response => {
|
||||
if(!mounted) return;
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setLoaded(true);
|
||||
setNotice(response.data.notice);
|
||||
|
@ -43,7 +43,8 @@ const ParentChildDetail = () => {
|
|||
}
|
||||
})
|
||||
.catch(err=>{
|
||||
if(!mounted) return;
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setLoaded(true);
|
||||
setNotice(err.response.data.notice);
|
||||
if(err.response.status==404){
|
||||
|
@ -51,8 +52,8 @@ const ParentChildDetail = () => {
|
|||
}
|
||||
})
|
||||
|
||||
return function cleanup() {
|
||||
mounted = false
|
||||
return () => {
|
||||
isMountedRef.current = true
|
||||
}
|
||||
},[]);
|
||||
|
||||
|
@ -65,21 +66,23 @@ const ParentChildDetail = () => {
|
|||
},[]);
|
||||
|
||||
//---------------------------------------------------------------
|
||||
const handleAcceptDelete = async () => {
|
||||
const handleAcceptDelete = () => {
|
||||
setSubmit(true);
|
||||
await axios.delete(`/api/fathers/relations/deleteRelationChild/${child_id}`)
|
||||
.then(response => {
|
||||
setSubmit(false);
|
||||
setShowDelete(false);
|
||||
setNotice(response.data.notice);
|
||||
switch(response.data.status_code){
|
||||
case 200: {
|
||||
navigator('/p-account/child', { state: "子の削除に成功しました。" });
|
||||
break;
|
||||
}
|
||||
case 400: set400Error('子の削除に失敗しました。'); break;
|
||||
axios.delete(`/api/fathers/relations/deleteRelationChild/${child_id}`)
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setSubmit(false);
|
||||
setShowDelete(false);
|
||||
setNotice(response.data.notice);
|
||||
switch(response.data.status_code){
|
||||
case 200: {
|
||||
navigator('/p-account/child', { state: "子の削除に成功しました。" });
|
||||
break;
|
||||
}
|
||||
});
|
||||
case 400: set400Error('子の削除に失敗しました。'); break;
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
return (
|
||||
|
|
|
@ -30,37 +30,39 @@ const ParentChildEdit = () => {
|
|||
|
||||
const isMountedRef = useRef(true);
|
||||
|
||||
useEffect( async () => {
|
||||
useEffect(() => {
|
||||
isMountedRef.current = false;
|
||||
let mounted = true;
|
||||
setLoaded(false);
|
||||
await axios.get('/api/fathers/children/detail/'+child_id, {params:{father_id: father_id}})
|
||||
.then(response => {
|
||||
if(!mounted) return;
|
||||
setNotice(response.data.notice);
|
||||
setLoaded(true);
|
||||
if(response.data.status_code==200){
|
||||
let hire_at = moment(response.data.params.father_relations?.hire_at).toDate();
|
||||
setHireAt(hire_at);
|
||||
} else {
|
||||
set400Error("失敗しました。");
|
||||
}
|
||||
})
|
||||
.catch(err=>{
|
||||
if(!mounted) return;
|
||||
setLoaded(true);
|
||||
setNotice(err.response.data.notice);
|
||||
if(err.response.status==404){
|
||||
set404Error(err.response.data.message);
|
||||
}
|
||||
})
|
||||
|
||||
return function cleanup() {
|
||||
mounted = false
|
||||
axios.get('/api/fathers/children/detail/' + child_id, {params:{father_id: father_id}})
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setNotice(response.data.notice);
|
||||
setLoaded(true);
|
||||
if(response.data.status_code==200){
|
||||
let hire_at = moment(response.data.params.father_relations?.hire_at).toDate();
|
||||
setHireAt(hire_at);
|
||||
} else {
|
||||
set400Error("失敗しました。");
|
||||
}
|
||||
})
|
||||
.catch(err=>{
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setLoaded(true);
|
||||
setNotice(err.response.data.notice);
|
||||
if(err.response.status==404){
|
||||
set404Error(err.response.data.message);
|
||||
}
|
||||
})
|
||||
|
||||
return () => {
|
||||
isMountedRef.current = true
|
||||
}
|
||||
},[]);
|
||||
|
||||
const handleSubmit = async (e) => {
|
||||
const handleSubmit = (e) => {
|
||||
e.preventDefault();
|
||||
set422Errors({hire_at: ''});
|
||||
const request = {
|
||||
|
@ -68,19 +70,21 @@ const ParentChildEdit = () => {
|
|||
hire_at: hire_at
|
||||
}
|
||||
setSubmit(true);
|
||||
await axios.put(`/api/fathers/relations/updateHireDate/${child_id}`, request)
|
||||
.then(response => {
|
||||
setSubmit(false);
|
||||
setNotice(response.data.notice);
|
||||
switch(response.data.status_code){
|
||||
case 200:{
|
||||
navigator('/p-account/child/detail/'+child_id, { state: response.data.success_messages });
|
||||
break;
|
||||
}
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
}
|
||||
});
|
||||
axios.put(`/api/fathers/relations/updateHireDate/${child_id}`, request)
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setSubmit(false);
|
||||
setNotice(response.data.notice);
|
||||
switch(response.data.status_code){
|
||||
case 200:{
|
||||
navigator('/p-account/child/detail/'+child_id, { state: response.data.success_messages });
|
||||
break;
|
||||
}
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return (
|
||||
|
|
|
@ -22,14 +22,14 @@ const ParentChilds = () => {
|
|||
|
||||
const isMountedRef = useRef(true);
|
||||
|
||||
useEffect( async () => {
|
||||
useEffect(() => {
|
||||
isMountedRef.current = false;
|
||||
let mounted = true;
|
||||
setLoaded(false);
|
||||
|
||||
await axios.get('/api/fathers/children/listOfFather', {params: {father_id: father_id}})
|
||||
axios.get('/api/fathers/children/listOfFather', {params: {father_id: father_id}})
|
||||
.then(response => {
|
||||
if(!mounted) return;
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setLoaded(true);
|
||||
setNotice(response.data.notice);
|
||||
if(response.data.status_code==200){
|
||||
|
@ -44,8 +44,8 @@ const ParentChilds = () => {
|
|||
}
|
||||
})
|
||||
|
||||
return function cleanup() {
|
||||
mounted = false
|
||||
return () => {
|
||||
isMountedRef.current = true;
|
||||
}
|
||||
}, []);
|
||||
|
||||
|
|
|
@ -35,15 +35,13 @@ const ParentFavorite = () => {
|
|||
},[loaded1, loaded2])
|
||||
|
||||
|
||||
useEffect(async () => {
|
||||
useEffect(() => {
|
||||
isMountedRef.current = false;
|
||||
let mounted = true;
|
||||
setLoaded(false);
|
||||
|
||||
await axios.get('/api/fathers/meetings/listOfNonFavoriteOfFather', {params:{father_id: father_id}})
|
||||
axios.get('/api/fathers/meetings/listOfNonFavoriteOfFather', {params:{father_id: father_id}})
|
||||
.then(response => {
|
||||
|
||||
if(!mounted) return;
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setLoaded1(true);
|
||||
setNotice(response.data.notice);
|
||||
|
@ -70,10 +68,9 @@ const ParentFavorite = () => {
|
|||
}
|
||||
})
|
||||
|
||||
await axios.get('/api/fathers/meetings/listOfFavoriteOfFather', {params:{father_id: father_id}})
|
||||
axios.get('/api/fathers/meetings/listOfFavoriteOfFather', {params:{father_id: father_id}})
|
||||
.then(response => {
|
||||
|
||||
if(!mounted) return;
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setLoaded2(true);
|
||||
setNotice(response.data.notice);
|
||||
|
@ -100,8 +97,8 @@ const ParentFavorite = () => {
|
|||
}
|
||||
})
|
||||
|
||||
return function cleanup() {
|
||||
mounted = false
|
||||
return () => {
|
||||
isMountedRef.current = true;
|
||||
}
|
||||
},[]);
|
||||
|
||||
|
@ -127,7 +124,7 @@ const ParentFavorite = () => {
|
|||
}, SCROLL_DELAY_TIME);
|
||||
};
|
||||
|
||||
async function handleFavorite(meetingId, currentFavorite, stateName) {
|
||||
function handleFavorite(meetingId, currentFavorite, stateName) {
|
||||
const formdata = new FormData();
|
||||
formdata.append('meeting_id', meetingId);
|
||||
formdata.append('is_favorite', currentFavorite == 1 ? 0 : 1);
|
||||
|
|
|
@ -38,10 +38,10 @@ const ParentMeetingAdd = () => {
|
|||
const state = location.state;
|
||||
const isMountedRef = useRef(true);
|
||||
|
||||
useEffect( async () => {
|
||||
useEffect(() => {
|
||||
isMountedRef.current = false;
|
||||
let mounted = true;
|
||||
setLoaded(false);
|
||||
|
||||
let clone = localStorage.getItem('cloneMeeting');
|
||||
if(clone){
|
||||
clone = JSON.parse(clone);
|
||||
|
@ -71,29 +71,30 @@ const ParentMeetingAdd = () => {
|
|||
localStorage.removeItem('cloneMeeting');
|
||||
}
|
||||
else{
|
||||
await axios.get('/api/fathers/children/listOfFather', {params:{father_id: father_id}})
|
||||
.then(response=>{
|
||||
if(!mounted) return;
|
||||
setLoaded(true);
|
||||
setNotice(response.data.notice);
|
||||
if(response.data.status_code == 200){
|
||||
var list = response.data.params;
|
||||
var arr = [];
|
||||
for(var i in list)
|
||||
arr.push({...list[i], checked: false})
|
||||
setChildrenList(arr);
|
||||
if(list.length > 0)
|
||||
setCheckRadio("all_send");
|
||||
else setCheckRadio('');
|
||||
}
|
||||
else {
|
||||
set400Error("失敗しました。");
|
||||
}
|
||||
})
|
||||
axios.get('/api/fathers/children/listOfFather', {params:{father_id: father_id}})
|
||||
.then(response=>{
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setLoaded(true);
|
||||
setNotice(response.data.notice);
|
||||
if(response.data.status_code == 200){
|
||||
var list = response.data.params;
|
||||
var arr = [];
|
||||
for(var i in list)
|
||||
arr.push({...list[i], checked: false})
|
||||
setChildrenList(arr);
|
||||
if(list.length > 0)
|
||||
setCheckRadio("all_send");
|
||||
else setCheckRadio('');
|
||||
}
|
||||
else {
|
||||
set400Error("失敗しました。");
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
return function cleanup() {
|
||||
mounted = false;
|
||||
return () => {
|
||||
isMountedRef.current = true;
|
||||
}
|
||||
},[])
|
||||
|
||||
|
@ -124,7 +125,7 @@ const ParentMeetingAdd = () => {
|
|||
},[check_radio])
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
const handleSubmit = async (e) => {
|
||||
const handleSubmit = (e) => {
|
||||
e.preventDefault();
|
||||
set422Errors({title:'',memo:'',text:'',pdf:'',image:''});
|
||||
|
||||
|
@ -143,20 +144,22 @@ const ParentMeetingAdd = () => {
|
|||
|
||||
setSubmit(true);
|
||||
|
||||
await axios.post('/api/fathers/meetings/register', formdata)
|
||||
.then(response => {
|
||||
setNotice(response.data.notice);
|
||||
setSubmit(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: {
|
||||
const meeting_id = response.data.params.meeting_id;
|
||||
navigator(`/p-account/meeting/detail/${meeting_id}`, { state: "登録成功しました" });
|
||||
break;
|
||||
}
|
||||
case 400: set400Error("登録失敗しました。"); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
axios.post('/api/fathers/meetings/register', formdata)
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setNotice(response.data.notice);
|
||||
setSubmit(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: {
|
||||
const meeting_id = response.data.params.meeting_id;
|
||||
navigator(`/p-account/meeting/detail/${meeting_id}`, { state: "登録成功しました" });
|
||||
break;
|
||||
}
|
||||
});
|
||||
case 400: set400Error("登録失敗しました。"); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -36,49 +36,46 @@ const ParentMeetingDetail = () => {
|
|||
|
||||
const [meeting, setMeeting] = useState(null);
|
||||
const [thumbnail, setThumbnail] = useState(null);
|
||||
const isMountedRef = useRef(false);
|
||||
|
||||
useEffect( async () => {
|
||||
let mounted = true;
|
||||
const source = axios.CancelToken.source()
|
||||
isMountedRef.current = true;
|
||||
const isMountedRef = useRef(true);
|
||||
|
||||
useEffect(() => {
|
||||
isMountedRef.current = false;
|
||||
setLoaded(false);
|
||||
|
||||
await axios.get(`/api/fathers/meetings/detail/${params?.meeting_id}`, {params: { father_id: father_id}}, {cancelToken: source.token})
|
||||
axios.get(`/api/fathers/meetings/detail/${params?.meeting_id}`, {params: { father_id: father_id}}, {cancelToken: source.token})
|
||||
.then((response) => {
|
||||
if(mounted){
|
||||
setLoaded(true);
|
||||
setNotice(response.data.notice);
|
||||
if(response.data.status_code==200){
|
||||
var list = response.data.params;
|
||||
var total=0, num=0;
|
||||
for(var i in list.approval)
|
||||
{
|
||||
if(list.approval[i].approval_at) num ++;
|
||||
total ++;
|
||||
}
|
||||
setMeeting({...list, denominator:total, numerator:num});
|
||||
setThumbnail(response.data.params.meeting_image[0]?.image);
|
||||
}
|
||||
else {
|
||||
set400Error("失敗しました。");
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setLoaded(true);
|
||||
setNotice(response.data.notice);
|
||||
if(response.data.status_code==200){
|
||||
var list = response.data.params;
|
||||
var total=0, num=0;
|
||||
for(var i in list.approval)
|
||||
{
|
||||
if(list.approval[i].approval_at) num ++;
|
||||
total ++;
|
||||
}
|
||||
setMeeting({...list, denominator:total, numerator:num});
|
||||
setThumbnail(response.data.params.meeting_image[0]?.image);
|
||||
}
|
||||
else {
|
||||
set400Error("失敗しました。");
|
||||
}
|
||||
})
|
||||
.catch(err=>{
|
||||
if(mounted){
|
||||
setLoaded(true);
|
||||
setNotice(err.response.data.notice);
|
||||
if(err.response.status==404){
|
||||
set404Error(err.response.data.message);
|
||||
}
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setLoaded(true);
|
||||
setNotice(err.response.data.notice);
|
||||
if(err.response.status==404){
|
||||
set404Error(err.response.data.message);
|
||||
}
|
||||
})
|
||||
return(()=>{
|
||||
mounted = false
|
||||
isMountedRef.current = false;
|
||||
source.cancel();
|
||||
})
|
||||
return () => {
|
||||
isMountedRef.current = true;
|
||||
}
|
||||
}, []);
|
||||
|
||||
//-------------------------------------------------------------
|
||||
|
@ -90,25 +87,27 @@ const ParentMeetingDetail = () => {
|
|||
},[]);
|
||||
|
||||
|
||||
const handleAcceptDelete = async () => {
|
||||
const handleAcceptDelete = () => {
|
||||
setSubmitDelete(true);
|
||||
await axios.delete(`/api/fathers/meetings/delete/${params?.meeting_id}`)
|
||||
.then(response => {
|
||||
setNotice(response.data.notice);
|
||||
setSubmitDelete(false);
|
||||
setShowDeleteModal(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: {
|
||||
navigator('/p-account/meeting', {state: "ミーティングの削除に成功しました!" });
|
||||
break;
|
||||
}
|
||||
case 400: set400Error('ミーティングの削除に失敗しました。'); break;
|
||||
axios.delete(`/api/fathers/meetings/delete/${params?.meeting_id}`)
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setNotice(response.data.notice);
|
||||
setSubmitDelete(false);
|
||||
setShowDeleteModal(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: {
|
||||
navigator('/p-account/meeting', {state: "ミーティングの削除に成功しました!" });
|
||||
break;
|
||||
}
|
||||
});
|
||||
case 400: set400Error('ミーティングの削除に失敗しました。'); break;
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
async function handleFavorite(meetingId, currentFavorite) {
|
||||
function handleFavorite(meetingId, currentFavorite) {
|
||||
const formdata = new FormData();
|
||||
formdata.append('meeting_id', meetingId);
|
||||
formdata.append('is_favorite', currentFavorite == 1 ? 0 : 1);
|
||||
|
@ -121,10 +120,12 @@ const ParentMeetingDetail = () => {
|
|||
setMeeting(updatedItem);
|
||||
};
|
||||
|
||||
const handleNotifyAllChild = async () => {
|
||||
const handleNotifyAllChild = () => {
|
||||
setSubmitNotify(true);
|
||||
await axios.get('/api/fathers/meeting/approvals/listChildrenOfUnapprovel', {params:{meeting_id: params?.meeting_id}})
|
||||
axios.get('/api/fathers/meeting/approvals/listChildrenOfUnapprovel', {params:{meeting_id: params?.meeting_id}})
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setNotice(response.data.notice);
|
||||
if(response.data.status_code == 200){
|
||||
var list = response.data.params;
|
||||
|
@ -137,6 +138,8 @@ const ParentMeetingDetail = () => {
|
|||
formdata.append('meeting_id', params?.meeting_id);
|
||||
axios.post('/api/fathers/meetingEditNotification', formdata)
|
||||
.then(response=>{
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setSubmitNotify(false);
|
||||
setShowNotifySelectModal(false);
|
||||
switch(response.data.status_code){
|
||||
|
@ -149,7 +152,7 @@ const ParentMeetingDetail = () => {
|
|||
}
|
||||
|
||||
|
||||
const handleUpdateMemo = async (modal_memo) => {
|
||||
const handleUpdateMemo = (modal_memo) => {
|
||||
let _tmp = meeting;
|
||||
_tmp.memo = modal_memo;
|
||||
setMeeting(_tmp);
|
||||
|
@ -157,7 +160,7 @@ const ParentMeetingDetail = () => {
|
|||
meeting_id: meeting.id,
|
||||
memo: modal_memo
|
||||
}
|
||||
await axios.put('/api/fathers/meetings/updateMemo', post)
|
||||
axios.put('/api/fathers/meetings/updateMemo', post)
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -45,55 +45,57 @@ const ParentMeetingEdit = () => {
|
|||
|
||||
const isMountedRef = useRef(true);
|
||||
|
||||
useEffect(async () => {
|
||||
useEffect(() => {
|
||||
isMountedRef.current = false;
|
||||
let mounted = true;
|
||||
setLoaded(false);
|
||||
await axios.get(`/api/fathers/meetings/detail/${meeting_id}`, {params: { father_id: father_id}})
|
||||
.then(response => {
|
||||
if(!mounted) return;
|
||||
setLoaded(true);
|
||||
setNotice(response.data.notice);
|
||||
if(response.data.status_code==200){
|
||||
setMeeting(response.data.params);
|
||||
setTitle(response.data.params?.title);
|
||||
setMemo(response.data.params.memo ? response.data.params.memo: '');
|
||||
setText(response.data.params.text ? response.data.params.text: '');
|
||||
setMeetingImages(response.data.params?.meeting_image);
|
||||
setApproval(response.data.params?.approval);
|
||||
setPdf(response.data.params?.pdf);
|
||||
setPDFURL(response.data.params?.pdf);
|
||||
|
||||
var list = [...response.data.params?.children];
|
||||
var approval = [...response.data.params?.approval];
|
||||
var arr = [];
|
||||
for(var i in list){
|
||||
if(approval.findIndex(ele=>ele.child_id == list[i].id) >= 0)
|
||||
arr.push({...list[i], checked: true});
|
||||
else arr.push({...list[i], checked: false});
|
||||
}
|
||||
setChildrenList(arr);
|
||||
if((approval.length==list.length) && approval.length > 0)
|
||||
setCheckRadio('all_send');
|
||||
else if((approval.length != list.length) && approval.length > 0)
|
||||
setCheckRadio('pickup_send');
|
||||
else setCheckRadio('');
|
||||
}
|
||||
else{
|
||||
set400Error("失敗しました。");
|
||||
}
|
||||
})
|
||||
.catch(err=>{
|
||||
if(!mounted) return;
|
||||
setLoaded(true);
|
||||
setNotice(err.response.data.notice);
|
||||
if(err.response.status==404){
|
||||
set404Error(err.response.data.message);
|
||||
}
|
||||
})
|
||||
|
||||
return function cleanup() {
|
||||
mounted = false
|
||||
axios.get(`/api/fathers/meetings/detail/${meeting_id}`, {params: { father_id: father_id}})
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setLoaded(true);
|
||||
setNotice(response.data.notice);
|
||||
if(response.data.status_code==200){
|
||||
setMeeting(response.data.params);
|
||||
setTitle(response.data.params?.title);
|
||||
setMemo(response.data.params.memo ? response.data.params.memo: '');
|
||||
setText(response.data.params.text ? response.data.params.text: '');
|
||||
setMeetingImages(response.data.params?.meeting_image);
|
||||
setApproval(response.data.params?.approval);
|
||||
setPdf(response.data.params?.pdf);
|
||||
setPDFURL(response.data.params?.pdf);
|
||||
|
||||
var list = [...response.data.params?.children];
|
||||
var approval = [...response.data.params?.approval];
|
||||
var arr = [];
|
||||
for(var i in list){
|
||||
if(approval.findIndex(ele=>ele.child_id == list[i].id) >= 0)
|
||||
arr.push({...list[i], checked: true});
|
||||
else arr.push({...list[i], checked: false});
|
||||
}
|
||||
setChildrenList(arr);
|
||||
if((approval.length==list.length) && approval.length > 0)
|
||||
setCheckRadio('all_send');
|
||||
else if((approval.length != list.length) && approval.length > 0)
|
||||
setCheckRadio('pickup_send');
|
||||
else setCheckRadio('');
|
||||
}
|
||||
else{
|
||||
set400Error("失敗しました。");
|
||||
}
|
||||
})
|
||||
.catch(err=>{
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setLoaded(true);
|
||||
setNotice(err.response.data.notice);
|
||||
if(err.response.status==404){
|
||||
set404Error(err.response.data.message);
|
||||
}
|
||||
})
|
||||
|
||||
return () => {
|
||||
isMountedRef.current = true;
|
||||
}
|
||||
}, []);
|
||||
|
||||
|
@ -126,7 +128,7 @@ useEffect(()=>{
|
|||
},[check_radio])
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
const handleSubmit = async (e) => {
|
||||
const handleSubmit = (e) => {
|
||||
e.preventDefault();
|
||||
set422Errors({title:'',memo:'',text:'',pdf:'',image:''});
|
||||
|
||||
|
@ -146,25 +148,27 @@ useEffect(()=>{
|
|||
const formdata = new FormData();
|
||||
formdata.append('children', JSON.stringify(approval_registerIndexes));
|
||||
|
||||
await axios.post('/api/fathers/meeting/approvals/register', formdata, {params:{meeting_id: meeting_id}})
|
||||
await axios.delete('/api/fathers/meeting/approvals/delete', {params:{children: approval_deleteIndexes, meeting_id: meeting_id}})
|
||||
axios.post('/api/fathers/meeting/approvals/register', formdata, {params:{meeting_id: meeting_id}})
|
||||
axios.delete('/api/fathers/meeting/approvals/delete', {params:{children: approval_deleteIndexes, meeting_id: meeting_id}})
|
||||
|
||||
const request = { title: title, text: text, memo: memo, pdf: pdf };
|
||||
setSubmit(true);
|
||||
|
||||
await axios.put(`/api/fathers/meetings/update/${meeting_id}`, request)
|
||||
.then(response => {
|
||||
setNotice(response.data.notice);
|
||||
setSubmit(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: {
|
||||
navigator(`/p-account/meeting/detail/${meeting_id}`, { state: '編集が完了しました!' });
|
||||
break;
|
||||
}
|
||||
case 400: set400Error("編集が失敗しました。"); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
axios.put(`/api/fathers/meetings/update/${meeting_id}`, request)
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setNotice(response.data.notice);
|
||||
setSubmit(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: {
|
||||
navigator(`/p-account/meeting/detail/${meeting_id}`, { state: '編集が完了しました!' });
|
||||
break;
|
||||
}
|
||||
});
|
||||
case 400: set400Error("編集が失敗しました。"); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
@ -187,38 +191,42 @@ useEffect(()=>{
|
|||
}))
|
||||
});
|
||||
|
||||
Promise.all(promises).then( async images => {
|
||||
Promise.all(promises).then( images => {
|
||||
set422Errors({image:''});
|
||||
const formdata = new FormData();
|
||||
formdata.append('image', JSON.stringify(images));
|
||||
setImageSending(true);
|
||||
await axios.post(`/api/fathers/meeting/images/register`, formdata, {params:{meeting_id: meeting_id}})
|
||||
.then(response=>{
|
||||
setImageSending(false);
|
||||
setNotice(response.data.notice);
|
||||
switch(response.data.status_code){
|
||||
case 200: setMeetingImages(response.data.params); break;
|
||||
case 400: set400Error("画像の登録に失敗しました。"); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
}
|
||||
})
|
||||
axios.post(`/api/fathers/meeting/images/register`, formdata, {params:{meeting_id: meeting_id}})
|
||||
.then(response=>{
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setImageSending(false);
|
||||
setNotice(response.data.notice);
|
||||
switch(response.data.status_code){
|
||||
case 200: setMeetingImages(response.data.params); break;
|
||||
case 400: set400Error("画像の登録に失敗しました。"); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
}
|
||||
})
|
||||
},
|
||||
error => { console.error(error); });
|
||||
};
|
||||
|
||||
|
||||
const handleDeleteImage = async (index, image_id) => {
|
||||
const handleDeleteImage = (index, image_id) => {
|
||||
let list = [...meeting_image];
|
||||
list.splice(index, 1);
|
||||
setMeetingImages(list);
|
||||
|
||||
await axios.delete(`/api/fathers/meeting/images/delete/${meeting_id}`, {params:{image_id: image_id}})
|
||||
.then(response=>{
|
||||
setNotice(response.data.notice);
|
||||
switch(response.data.status_code){
|
||||
case 400: set400Error("画像の削除に失敗しました。");
|
||||
}
|
||||
})
|
||||
axios.delete(`/api/fathers/meeting/images/delete/${meeting_id}`, {params:{image_id: image_id}})
|
||||
.then(response=>{
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setNotice(response.data.notice);
|
||||
switch(response.data.status_code){
|
||||
case 400: set400Error("画像の削除に失敗しました。");
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const handlePDFChange = (e) => {
|
||||
|
|
|
@ -42,41 +42,15 @@ const ParentMeetings = () => {
|
|||
},[loaded1, loaded2])
|
||||
|
||||
|
||||
useEffect( async () => {
|
||||
useEffect(() => {
|
||||
isMountedRef.current = false;
|
||||
let mounted = true;
|
||||
setLoaded(false);
|
||||
|
||||
await axios.get('/api/fathers/meetings/listOfIncompleteOfFather', {params:{father_id: father_id}})
|
||||
.then(response => {
|
||||
if(!mounted) return;
|
||||
setLoaded1(true);
|
||||
setNotice(response.data.notice);
|
||||
if(response.data.status_code==200){
|
||||
var list = response.data.params;
|
||||
var arr = [];
|
||||
for(var i in list){
|
||||
var total=0, num=0;
|
||||
for(var j in list[i].approvals)
|
||||
{
|
||||
if(list[i].approvals[j].approval_at) num ++;
|
||||
total ++;
|
||||
}
|
||||
arr.push({...list[i], denominator:total, numerator:num})
|
||||
}
|
||||
setMeetingListOfIncomplete(arr);
|
||||
var len = arr.length;
|
||||
if(len > INFINITE)
|
||||
setFetchMeetingListOfIncomplete(arr.slice(0, INFINITE));
|
||||
else setFetchMeetingListOfIncomplete(arr.slice(0, len));
|
||||
}
|
||||
})
|
||||
.catch(err=>console.log(err));
|
||||
axios.get('/api/fathers/meetings/listOfIncompleteOfFather', {params:{father_id: father_id}})
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
await axios.get('/api/fathers/meetings/listOfCompleteOfFather', {params:{father_id: father_id}})
|
||||
.then(response => {
|
||||
if(!mounted) return;
|
||||
setLoaded2(true);
|
||||
setLoaded1(true);
|
||||
setNotice(response.data.notice);
|
||||
if(response.data.status_code==200){
|
||||
var list = response.data.params;
|
||||
|
@ -90,17 +64,44 @@ const ParentMeetings = () => {
|
|||
}
|
||||
arr.push({...list[i], denominator:total, numerator:num})
|
||||
}
|
||||
setMeetingListOfComplete(arr);
|
||||
setMeetingListOfIncomplete(arr);
|
||||
var len = arr.length;
|
||||
if(len > INFINITE)
|
||||
setFetchMeetingListOfComplete(arr.slice(0, INFINITE));
|
||||
else setFetchMeetingListOfComplete(arr.slice(0, len));
|
||||
}
|
||||
})
|
||||
.catch(err=>console.log(err));
|
||||
setFetchMeetingListOfIncomplete(arr.slice(0, INFINITE));
|
||||
else setFetchMeetingListOfIncomplete(arr.slice(0, len));
|
||||
}
|
||||
})
|
||||
.catch(err=>console.log(err));
|
||||
|
||||
return function cleanup() {
|
||||
mounted = false
|
||||
axios.get('/api/fathers/meetings/listOfCompleteOfFather', {params:{father_id: father_id}})
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setLoaded2(true);
|
||||
setNotice(response.data.notice);
|
||||
if(response.data.status_code==200){
|
||||
var list = response.data.params;
|
||||
var arr = [];
|
||||
for(var i in list){
|
||||
var total=0, num=0;
|
||||
for(var j in list[i].approvals)
|
||||
{
|
||||
if(list[i].approvals[j].approval_at) num ++;
|
||||
total ++;
|
||||
}
|
||||
arr.push({...list[i], denominator:total, numerator:num})
|
||||
}
|
||||
setMeetingListOfComplete(arr);
|
||||
var len = arr.length;
|
||||
if(len > INFINITE)
|
||||
setFetchMeetingListOfComplete(arr.slice(0, INFINITE));
|
||||
else setFetchMeetingListOfComplete(arr.slice(0, len));
|
||||
}
|
||||
})
|
||||
.catch(err=>console.log(err));
|
||||
|
||||
return () => {
|
||||
isMountedRef.current = true;
|
||||
}
|
||||
},[]);
|
||||
|
||||
|
@ -126,7 +127,7 @@ const ParentMeetings = () => {
|
|||
}, SCROLL_DELAY_TIME);
|
||||
};
|
||||
|
||||
const handleFavorite = async (meetingId, currentFavorite, stateName) => {
|
||||
const handleFavorite = (meetingId, currentFavorite, stateName) => {
|
||||
const formdata = new FormData();
|
||||
formdata.append('meeting_id', meetingId);
|
||||
formdata.append('is_favorite', currentFavorite == 1 ? 0 : 1);
|
||||
|
|
|
@ -32,13 +32,14 @@ const ParentProfileEdit = () => {
|
|||
|
||||
const isMountedRef = useRef(true);
|
||||
|
||||
useEffect( async () => {
|
||||
useEffect(() => {
|
||||
isMountedRef.current = false;
|
||||
let mounted = true;
|
||||
setLoaded(false);
|
||||
await axios.get(`/api/fathers/detail/${father_id}`)
|
||||
|
||||
axios.get(`/api/fathers/detail/${father_id}`)
|
||||
.then(response => {
|
||||
if(!mounted) return;
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setLoaded(true);
|
||||
setNotice(response.data.notice);
|
||||
if(response.data.status_code==200) {
|
||||
|
@ -53,7 +54,8 @@ const ParentProfileEdit = () => {
|
|||
}
|
||||
})
|
||||
.catch(err=>{
|
||||
if(!mounted) return;
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setLoaded(true);
|
||||
setNotice(err.response.data.notice);
|
||||
if(err.response.status==404){
|
||||
|
@ -61,12 +63,12 @@ const ParentProfileEdit = () => {
|
|||
}
|
||||
})
|
||||
|
||||
return function cleanup() {
|
||||
mounted = false
|
||||
return () => {
|
||||
isMountedRef.current = true;
|
||||
}
|
||||
}, []);
|
||||
|
||||
const handleSubmit = async (e) => {
|
||||
const handleSubmit = (e) => {
|
||||
e.preventDefault();
|
||||
set422Errors({ company:'', email: '', tel: '', profile:'' });
|
||||
const request = {
|
||||
|
@ -76,19 +78,21 @@ const ParentProfileEdit = () => {
|
|||
profile: profile
|
||||
}
|
||||
setSubmit(true);
|
||||
await axios.put(`/api/fathers/updateProfile/${father_id}`, request)
|
||||
.then(response => {
|
||||
setNotice(response.data.notice);
|
||||
setSubmit(false);
|
||||
switch(response.data.status_code){
|
||||
case 200:{
|
||||
navigator('/p-account/profile', { state: response.data.success_messages });
|
||||
break;
|
||||
}
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
}
|
||||
});
|
||||
axios.put(`/api/fathers/updateProfile/${father_id}`, request)
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setNotice(response.data.notice);
|
||||
setSubmit(false);
|
||||
switch(response.data.status_code){
|
||||
case 200:{
|
||||
navigator('/p-account/profile', { state: response.data.success_messages });
|
||||
break;
|
||||
}
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -27,34 +27,35 @@ const ParentProfileDetail = () => {
|
|||
|
||||
const isMountedRef = useRef(true);
|
||||
|
||||
useEffect( async () => {
|
||||
useEffect(() => {
|
||||
isMountedRef.current = false;
|
||||
let mounted = true;
|
||||
setLoaded(false);
|
||||
await axios.get('/api/fathers/detail/'+father_id)
|
||||
.then(response => {
|
||||
if(!mounted) return;
|
||||
setLoaded(true);
|
||||
setNotice(response.data.notice);
|
||||
if(response.data.status_code==200){
|
||||
setProfile(response.data.params);
|
||||
setImage(response.data.params.image);
|
||||
}
|
||||
else {
|
||||
set400Error("失敗しました。");
|
||||
}
|
||||
})
|
||||
.catch(err=>{
|
||||
if(!mounted) return;
|
||||
setLoaded(true);
|
||||
setNotice(err.response.data.notice);
|
||||
if(err.response.status==404){
|
||||
set404Error(err.response.data.message);
|
||||
}
|
||||
})
|
||||
|
||||
return function cleanup() {
|
||||
mounted = false
|
||||
axios.get('/api/fathers/detail/'+father_id)
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setLoaded(true);
|
||||
setNotice(response.data.notice);
|
||||
if(response.data.status_code==200){
|
||||
setProfile(response.data.params);
|
||||
setImage(response.data.params.image);
|
||||
}
|
||||
else {
|
||||
set400Error("失敗しました。");
|
||||
}
|
||||
})
|
||||
.catch(err=>{
|
||||
if(isMountedRef.current) return;
|
||||
setLoaded(true);
|
||||
setNotice(err.response.data.notice);
|
||||
if(err.response.status==404){
|
||||
set404Error(err.response.data.message);
|
||||
}
|
||||
})
|
||||
|
||||
return () => {
|
||||
isMountedRef.current = true;
|
||||
}
|
||||
},[]);
|
||||
|
||||
|
@ -65,8 +66,8 @@ const ParentProfileDetail = () => {
|
|||
}
|
||||
})
|
||||
|
||||
const handleLogout = async () => {
|
||||
await axios.get('/p-account/logout')
|
||||
const handleLogout = () => {
|
||||
axios.get('/p-account/logout')
|
||||
.then(() => {
|
||||
setCookie('logged', null);
|
||||
window.location.href = '/p-account/login';
|
||||
|
@ -79,23 +80,25 @@ const ParentProfileDetail = () => {
|
|||
let reader = new FileReader();
|
||||
let _file = e.target.files[0];
|
||||
reader.readAsDataURL(_file);
|
||||
reader.onloadend = async () => {
|
||||
reader.onloadend = () => {
|
||||
set422Errors({image: ''});
|
||||
setSubmitImage(true);
|
||||
await axios.put(`/api/fathers/updateImage/${father_id}`, {image: reader.result})
|
||||
.then(response => {
|
||||
setNotice(response.data.notice);
|
||||
setSubmitImage(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: {
|
||||
localStorage.setItem('image_upload_success', response.data.success_messages);
|
||||
window.location.reload(true);
|
||||
break;
|
||||
}
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
axios.put(`/api/fathers/updateImage/${father_id}`, {image: reader.result})
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setNotice(response.data.notice);
|
||||
setSubmitImage(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: {
|
||||
localStorage.setItem('image_upload_success', response.data.success_messages);
|
||||
window.location.reload(true);
|
||||
break;
|
||||
}
|
||||
});
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
}
|
||||
});
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { useState } from 'react';
|
||||
import React, { useState, useRef, useEffect } from 'react';
|
||||
import { useNavigate } from 'react-router-dom';
|
||||
import { LoadingButton } from '@material-ui/lab';
|
||||
import Notification from '../../component/notification';
|
||||
|
@ -24,7 +24,16 @@ const ParentProfilePasswordEdit = () => {
|
|||
const [submit, setSubmit] = useState(false);
|
||||
|
||||
|
||||
const handleSubmit = async (e) => {
|
||||
const isMountedRef = useRef(true);
|
||||
useEffect(() => {
|
||||
isMountedRef.current = false;
|
||||
return () => {
|
||||
isMountedRef.current = true;
|
||||
}
|
||||
}, [])
|
||||
|
||||
|
||||
const handleSubmit = (e) => {
|
||||
e.preventDefault();
|
||||
set422Errors({
|
||||
password:'',
|
||||
|
@ -35,19 +44,21 @@ const ParentProfilePasswordEdit = () => {
|
|||
password: password,
|
||||
password_confirmation: password_confirmation
|
||||
}
|
||||
await axios.put(`/api/fathers/updatePassword/${father_id}`, post)
|
||||
.then(response => {
|
||||
setSubmit(false);
|
||||
setNotice(response.data.notice);
|
||||
switch(response.data.status_code){
|
||||
case 200:{
|
||||
navigator('/p-account/profile', { state: response.data.success_messages });
|
||||
break;
|
||||
}
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
axios.put(`/api/fathers/updatePassword/${father_id}`, post)
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setSubmit(false);
|
||||
setNotice(response.data.notice);
|
||||
switch(response.data.status_code){
|
||||
case 200:{
|
||||
navigator('/p-account/profile', { state: response.data.success_messages });
|
||||
break;
|
||||
}
|
||||
})
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
return (
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import React, { useState } from 'react';
|
||||
import React, { useState, useEffect, useRef } from 'react';
|
||||
import { LoadingButton } from '@material-ui/lab';
|
||||
import Notification from '../../component/notification';
|
||||
import Alert from '../../component/alert';
|
||||
|
@ -11,12 +11,24 @@ const ParentProfileWithdrawal = () => {
|
|||
const [submit, setSubmit] = useState(false);
|
||||
const [_400error, set400Error] = useState('');
|
||||
|
||||
const handleSubmit = async (e) => {
|
||||
|
||||
const isMountedRef = useRef(true);
|
||||
useEffect(() => {
|
||||
isMountedRef.current = false;
|
||||
return () => {
|
||||
isMountedRef.current = true;
|
||||
}
|
||||
}, [])
|
||||
|
||||
|
||||
const handleSubmit = (e) => {
|
||||
e.preventDefault();
|
||||
setSubmit(true);
|
||||
|
||||
await axios.delete('/api/fathers/withdrawal', {params:{father_id: father_id}})
|
||||
axios.delete('/api/fathers/withdrawal', {params:{father_id: father_id}})
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setSubmit(false);
|
||||
setNotice(response.data.notice);
|
||||
switch(response.data.status_code){
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import React, { useEffect, useState } from 'react';
|
||||
import React, { useEffect, useState, useRef } from 'react';
|
||||
import { Link } from 'react-router-dom';
|
||||
import moment from 'moment';
|
||||
import IconButton from '@mui/material/IconButton';
|
||||
|
@ -32,13 +32,22 @@ const ParentSearch = () => {
|
|||
const [loaded, setLoaded] = useState(true);
|
||||
const [initPage, setInitPage] = useState(true);
|
||||
|
||||
|
||||
|
||||
const isMountedRef = useRef(true);
|
||||
useEffect(() => {
|
||||
isMountedRef.current = false;
|
||||
return () => {
|
||||
isMountedRef.current = true;
|
||||
}
|
||||
}, [])
|
||||
|
||||
|
||||
useEffect(()=>{
|
||||
setLoaded(loaded1 && loaded2);
|
||||
},[loaded1, loaded2])
|
||||
|
||||
|
||||
const handleSearch = async (e) => {
|
||||
const handleSearch = (e) => {
|
||||
e.preventDefault();
|
||||
if(keyword == ''){
|
||||
document.getElementById('keyword').focus();
|
||||
|
@ -48,33 +57,11 @@ const ParentSearch = () => {
|
|||
setLoaded2(false);
|
||||
setInitPage(false);
|
||||
|
||||
await axios.get('/api/fathers/meetings/searchOfIncompleteOfFather', {params:{father_id: father_id, keyword: keyword,}})
|
||||
.then(response => {
|
||||
setLoaded1(true);
|
||||
setNotice(response.data.notice);
|
||||
if(response.data.status_code==200){
|
||||
var list = response.data.params;
|
||||
var arr = [];
|
||||
for(var i in list){
|
||||
var total=0, num=0;
|
||||
for(var j in list[i].approvals)
|
||||
{
|
||||
if(list[i].approvals[j].approval_at) num ++;
|
||||
total ++;
|
||||
}
|
||||
arr.push({...list[i], denominator:total, numerator:num})
|
||||
}
|
||||
setMeetingListOfIncomplete(arr);
|
||||
var len = arr.length;
|
||||
if(len > INFINITE)
|
||||
setFetchMeetingListOfIncomplete(arr.slice(0, INFINITE));
|
||||
else setFetchMeetingListOfIncomplete(arr.slice(0, len));
|
||||
}
|
||||
})
|
||||
|
||||
await axios.get('/api/fathers/meetings/searchOfCompleteOfFather', {params:{father_id: father_id, keyword: keyword,}})
|
||||
.then(response => {
|
||||
setLoaded2(true);
|
||||
axios.get('/api/fathers/meetings/searchOfIncompleteOfFather', {params:{father_id: father_id, keyword: keyword,}})
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setLoaded1(true);
|
||||
setNotice(response.data.notice);
|
||||
if(response.data.status_code==200){
|
||||
var list = response.data.params;
|
||||
|
@ -88,13 +75,39 @@ const ParentSearch = () => {
|
|||
}
|
||||
arr.push({...list[i], denominator:total, numerator:num})
|
||||
}
|
||||
setMeetingListOfComplete(arr);
|
||||
setMeetingListOfIncomplete(arr);
|
||||
var len = arr.length;
|
||||
if(len > INFINITE)
|
||||
setFetchMeetingListOfComplete(arr.slice(0, INFINITE));
|
||||
else setFetchMeetingListOfComplete(arr.slice(0, len));
|
||||
setFetchMeetingListOfIncomplete(arr.slice(0, INFINITE));
|
||||
else setFetchMeetingListOfIncomplete(arr.slice(0, len));
|
||||
}
|
||||
})
|
||||
|
||||
axios.get('/api/fathers/meetings/searchOfCompleteOfFather', {params:{father_id: father_id, keyword: keyword,}})
|
||||
.then(response => {
|
||||
if(isMountedRef.current) return;
|
||||
|
||||
setLoaded2(true);
|
||||
setNotice(response.data.notice);
|
||||
if(response.data.status_code==200){
|
||||
var list = response.data.params;
|
||||
var arr = [];
|
||||
for(var i in list){
|
||||
var total=0, num=0;
|
||||
for(var j in list[i].approvals)
|
||||
{
|
||||
if(list[i].approvals[j].approval_at) num ++;
|
||||
total ++;
|
||||
}
|
||||
arr.push({...list[i], denominator:total, numerator:num})
|
||||
}
|
||||
})
|
||||
setMeetingListOfComplete(arr);
|
||||
var len = arr.length;
|
||||
if(len > INFINITE)
|
||||
setFetchMeetingListOfComplete(arr.slice(0, INFINITE));
|
||||
else setFetchMeetingListOfComplete(arr.slice(0, len));
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
@ -120,7 +133,7 @@ const ParentSearch = () => {
|
|||
}, SCROLL_DELAY_TIME);
|
||||
};
|
||||
|
||||
async function handleFavorite(meetingId, currentFavorite, stateName) {
|
||||
function handleFavorite(meetingId, currentFavorite, stateName) {
|
||||
const formdata = new FormData();
|
||||
formdata.append('meeting_id', meetingId);
|
||||
formdata.append('is_favorite', currentFavorite == 1 ? 0 : 1);
|
||||
|
|
|
@ -8,8 +8,8 @@ export default function ParentSide() {
|
|||
|
||||
const father_image = document.getElementById('father_image').value;
|
||||
|
||||
const handleLogout = async () => {
|
||||
await axios.get('/p-account/logout')
|
||||
const handleLogout = () => {
|
||||
axios.get('/p-account/logout')
|
||||
.then(() => {
|
||||
setCookie('logged', null);
|
||||
window.location.href = '/p-account/login';
|
||||
|
|
新しいイシューから参照