import { h, Component } from 'preact';
import PropTypes from 'prop-types';
import { FocusTrap } from '../shared/components/focusTrap';
import { IntroSlide } from './components/IntroSlide';
import { EmailPreferencesForm } from './components/EmailPreferencesForm';
import { FollowTags } from './components/FollowTags';
import { FollowUsers } from './components/FollowUsers';
import { ProfileForm } from './components/ProfileForm';
export class Onboarding extends Component {
constructor(props) {
super(props);
const url = new URL(window.location);
const previousLocation = url.searchParams.get('referrer');
const slides = [
IntroSlide,
FollowTags,
ProfileForm,
FollowUsers,
EmailPreferencesForm,
];
this.nextSlide = this.nextSlide.bind(this);
this.prevSlide = this.prevSlide.bind(this);
this.slidesCount = slides.length;
this.state = {
currentSlide: 0,
};
this.slides = slides.map((SlideComponent, index) => (
));
}
nextSlide() {
const { currentSlide } = this.state;
const nextSlide = currentSlide + 1;
if (nextSlide < this.slides.length) {
this.setState({
currentSlide: nextSlide,
});
} else {
// Redirect to the main feed at the end of onboarding.
window.location.href = '/';
}
}
prevSlide() {
const { currentSlide } = this.state;
const prevSlide = currentSlide - 1;
if (prevSlide >= 0) {
this.setState({
currentSlide: prevSlide,
});
}
}
// TODO: Update main element id to enable skip link. See issue #1153.
render() {
const { currentSlide } = this.state;
const { communityConfig } = this.props;
return (
{this.slides[currentSlide]}
);
}
}
Onboarding.propTypes = {
communityConfig: PropTypes.shape({
communityName: PropTypes.string.isRequired,
communityBackground: PropTypes.string.isRequired,
communityLogo: PropTypes.string.isRequired,
communityDescription: PropTypes.string.isRequired,
}).isRequired,
};