import { h, Component } from 'preact'; import PropTypes from 'prop-types'; import { userInfo } from 'os'; import Navigation from './Navigation'; import { getContentOfToken } from '../utilities'; class FollowUsers extends Component { constructor(props) { super(props); this.handleClick = this.handleClick.bind(this); this.handleComplete = this.handleComplete.bind(this); this.state = { users: [], selectedUsers: [], }; } componentDidMount() { fetch('/api/users?state=follow_suggestions', { headers: { Accept: 'application/json', 'Content-Type': 'application/json', }, credentials: 'same-origin', }) .then(response => response.json()) .then(data => { this.setState({ users: data, selectedUsers: data }); }); const csrfToken = getContentOfToken('csrf-token'); fetch('/onboarding_update', { method: 'PATCH', headers: { 'X-CSRF-Token': csrfToken, 'Content-Type': 'application/json', }, body: JSON.stringify({ user: { last_onboarding_page: 'follow users page' }, }), credentials: 'same-origin', }); } handleComplete() { const csrfToken = getContentOfToken('csrf-token'); const { selectedUsers } = this.state; const { next } = this.props; fetch('/api/follows', { method: 'POST', headers: { 'X-CSRF-Token': csrfToken, 'Content-Type': 'application/json', }, body: JSON.stringify({users:selectedUsers}), credentials: 'same-origin', }) next(); } handleSelectAll() { const { selectedUsers, users } = this.state; if (selectedUsers.length === users.length) { this.setState({ selectedUsers: [], }); } else { this.setState({ selectedUsers: users, }); } } handleClick(user) { let { selectedUsers } = this.state; if (!selectedUsers.includes(user)) { this.setState(prevState => ({ selectedUsers: [...prevState.selectedUsers, user], })); } else { selectedUsers = [...selectedUsers]; const indexToRemove = selectedUsers.indexOf(user); selectedUsers.splice(indexToRemove, 1); this.setState({ selectedUsers, }); } } render() { const { users, selectedUsers } = this.state; const { prev } = this.props; return (