var injectIntl = require('react-intl').injectIntl;
var React = require('react');
var sessionActions = require('../../redux/session.js');
var shuffle = require('../../lib/shuffle.js').shuffle;
var Activity = require('../../components/activity/activity.jsx');
var AdminPanel = require('../../components/adminpanel/adminpanel.jsx');
var DropdownBanner = require('../../components/dropdown-banner/banner.jsx');
var Box = require('../../components/box/box.jsx');
var Button = require('../../components/forms/button.jsx');
var Carousel = require('../../components/carousel/carousel.jsx');
var LegacyCarousel = require('../../components/carousel/legacy-carousel.jsx');
var Intro = require('../../components/intro/intro.jsx');
var IframeModal = require('../../components/modal/iframe/modal.jsx');
var News = require('../../components/news/news.jsx');
var TeacherBanner = require('../../components/teacher-banner/teacher-banner.jsx');
var Welcome = require('../../components/welcome/welcome.jsx');
var MediaQuery = require('react-responsive');
var frameless = require('../../lib/frameless');
require('./splash.scss');
var SplashPresentation = injectIntl(React.createClass({
type: 'Splash',
propTypes: {
sessionStatus: React.PropTypes.string.isRequired,
user: React.PropTypes.object.isRequired,
isEducator: React.PropTypes.bool.isRequired,
isAdmin: React.PropTypes.bool.isRequired,
handleDismiss: React.PropTypes.func.isRequired,
refreshHomepageCache: React.PropTypes.func.isRequired,
shouldShowEmailConfirmation: React.PropTypes.bool.isRequired,
emailConfirmationModalOpen: React.PropTypes.bool.isRequired,
showEmailConfirmationModal: React.PropTypes.func.isRequired,
hideEmailConfirmationModal: React.PropTypes.func.isRequired,
shouldShowWelcome: React.PropTypes.bool.isRequired,
refreshCacheStatus: React.PropTypes.object.isRequired
},
getDefaultProps: function () {
return {
projectCount: 20000000, // gets the shared project count
activity: [], // recent social actions taken by users someone is following
news: [], // gets news posts from the scratch Tumblr
sharedByFollowing: [], // "Projects by Scratchers I'm Following"
lovedByFollowing: [], // "Projects Loved by Scratchers I'm Following"
inStudiosFollowing: [], // "Projects in Studios I'm Following"
featuredGlobal: {} // global homepage rows, such as "Featured Projects"
};
},
componentDidMount: function () {
if (this.props.shouldShowEmailConfirmation) window.addEventListener('message', this.onMessage);
},
componentWillUnmount: function () {
window.removeEventListener('message', this.onMessage);
},
onMessage: function (e) {
if (e.origin != window.location.origin) return;
if (e.source != this.emailConfirmationiFrame.contentWindow) return;
if (e.data == 'resend-done') {
this.hideEmailConfirmationModal();
} else {
var data = JSON.parse(e.data);
if (data['action'] === 'leave-page') {
window.location.href = data['uri'];
}
}
},
renderHomepageRows: function () {
var formatMessage = this.props.intl.formatMessage;
var rows = [