import React, { useEffect, useState } from 'react'; import axios from 'axios'; import { useHistory, Link } from 'react-router-dom'; import moment from 'moment'; import { CircularProgress } from '@material-ui/core'; import IconButton from '@mui/material/IconButton'; import Notification from '../notification'; import Alert from '../../component/alert'; import InfiniteScroll from "react-infinite-scroll-component"; import { isObject } from 'lodash'; const INFINITE = 5; const SCROLL_DELAY_TIME = 1500; const Favorite = (props) => { const [notice, setNotice] = useState(localStorage.getItem('notice')); const [tab_status, setTabStatus] = useState(false); const [loaded, setLoaded] = useState(false); const [loaded1, setLoaded1] = useState(false); const [loaded2, setLoaded2] = useState(false); const [meeting_list_non_favorite, setMeetingListOfNonFavorite] = useState([]); const [meeting_list_favorite, setMeetingListOfFavorite] = useState([]); const [fetch_meeting_list_non_favorite, setFetchMeetingListOfNonFavorite] = useState([]); const [fetch_meeting_list_favorite, setFetchMeetingListOfFavorite] = useState([]); const [_success, setSuccess] = useState(props.history.location.state); useEffect(()=>{ setLoaded(loaded1 && loaded2); },[loaded1, loaded2]) useEffect(() => { setLoaded(false); let father_id = document.getElementById('father_id').value; axios.get('/api/fathers/meetings/listOfNonFavoriteOfFather', {params:{father_id: father_id}}) .then(response => { setLoaded1(true); setNotice(response.data.notice); console.log(response.data); 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}) } setMeetingListOfNonFavorite(arr); var len = arr.length; if(len > INFINITE) setFetchMeetingListOfNonFavorite(arr.slice(0, INFINITE)); else setFetchMeetingListOfNonFavorite(arr.slice(0, len)); } }) axios.get('/api/fathers/meetings/listOfFavoriteOfFather', {params:{father_id: father_id}}) .then(response => { setLoaded2(true); setNotice(response.data.notice); console.log(response.data); 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}) } setMeetingListOfFavorite(arr); var len = arr.length; if(len > INFINITE) setFetchMeetingListOfFavorite(arr.slice(0, INFINITE)); else setFetchMeetingListOfFavorite(arr.slice(0, len)); } }) },[]); const fetchMoreListOfNonFavorite = () => { setTimeout(() => { var x = fetch_meeting_list_non_favorite.length; var y = meeting_list_non_favorite.length; var c = 0; if(x+INFINITE < y) c = INFINITE; else c = y - x; setFetchMeetingListOfNonFavorite(meeting_list_non_favorite.slice(0, x+c)); }, SCROLL_DELAY_TIME); }; const fetchMoreListOfFavorite = () => { setTimeout(() => { var x = fetch_meeting_list_favorite.length; var y = meeting_list_favorite.length; var c = 0; if(x+INFINITE < y) c = INFINITE; else c = y - x; setFetchMeetingListOfFavorite(meeting_list_favorite.slice(0, x+c)); }, SCROLL_DELAY_TIME); }; async function handleFavorite(meetingId, currentFavorite, stateName) { const formdata = new FormData(); formdata.append('meeting_id', meetingId); formdata.append('is_favorite', currentFavorite == 1 ? 0 : 1); axios.post('/api/fathers/meetings/registerFavorite', formdata) .then(response=>{ setNotice(response.data.notice); if(response.data.status_code==200){ if(stateName == "nonFavoriteOfFather") { const newList = meeting_list_non_favorite.map((item) => { if (item.id === meetingId) { const updatedItem = { ...item, is_favorite: currentFavorite == 1 ? 0 : 1, }; return updatedItem; } return item; }); setMeetingListOfNonFavorite(newList); setFetchMeetingListOfNonFavorite(newList.slice(0, fetch_meeting_list_non_favorite.length)); } else { const newList = meeting_list_favorite.map((item) => { if (item.id === meetingId) { const updatedItem = { ...item, is_favorite: currentFavorite == 1 ? 0 : 1, }; return updatedItem; } return item; }); setMeetingListOfFavorite(newList); setFetchMeetingListOfFavorite(newList.slice(0, fetch_meeting_list_favorite.length)); } } }) }; return (

お気に入り

ミーティングを追加
{ !loaded && } { loaded &&
{ !tab_status &&
} style={{overflow:'none', position:'relative'}} > { fetch_meeting_list_favorite.length > 0 ? fetch_meeting_list_favorite?.map((item, id) =>

{ item.title }

{ item.text }

  • {item.numerator}
  • {item.denominator}
    { item.approvals?.map((v, inx1) =>
  • name
  • ) }
) :

データはありません。

}
} { tab_status &&
} style={{overflow:'none', position:'relative'}} > { fetch_meeting_list_non_favorite.length > 0 ? fetch_meeting_list_non_favorite?.map((item, id) =>

{ item.title }

{ item.text }

  • {item.numerator}
  • {item.denominator}
    { item.approvals?.map((v, inx1) =>
  • name
  • ) }
) :

データはありません。

}
}
} { _success && setSuccess('')}>{_success} } ) } export default Favorite;