api(getState).get(path, { params }).then(response => {
const next = getLinks(response).refs.find(link => link.rel === 'next');
dispatch(importFetchedStatuses(response.data));
- dispatch(expandTimelineSuccess(timelineId, response.data, next ? next.uri : null, response.code === 206, isLoadingRecent, isLoadingMore, isLoadingRecent && preferPendingItems));
+ dispatch(expandTimelineSuccess(timelineId, response.data, next ? next.uri : null, response.status === 206, isLoadingRecent, isLoadingMore, isLoadingRecent && preferPendingItems));
done();
}).catch(error => {
dispatch(expandTimelineFail(timelineId, error, isLoadingMore));
import React from 'react';
+import PropTypes from 'prop-types';
import { FormattedMessage } from 'react-intl';
+import illustration from 'flavours/glitch/images/elephant_ui_disappointed.svg';
+import classNames from 'classnames';
-const MissingIndicator = () => (
- <div className='regeneration-indicator missing-indicator'>
- <div>
- <div className='regeneration-indicator__figure' />
+const MissingIndicator = ({ fullPage }) => (
+ <div className={classNames('regeneration-indicator', { 'regeneration-indicator--without-header': fullPage })}>
+ <div className='regeneration-indicator__figure'>
+ <img src={illustration} alt='' />
+ </div>
- <div className='regeneration-indicator__label'>
- <FormattedMessage id='missing_indicator.label' tagName='strong' defaultMessage='Not found' />
- <FormattedMessage id='missing_indicator.sublabel' defaultMessage='This resource could not be found' />
- </div>
+ <div className='regeneration-indicator__label'>
+ <FormattedMessage id='missing_indicator.label' tagName='strong' defaultMessage='Not found' />
+ <FormattedMessage id='missing_indicator.sublabel' defaultMessage='This resource could not be found' />
</div>
</div>
);
+MissingIndicator.propTypes = {
+ fullPage: PropTypes.bool,
+};
+
export default MissingIndicator;
--- /dev/null
+import React from 'react';
+import { FormattedMessage } from 'react-intl';
+import illustration from 'flavours/glitch/images/elephant_ui_working.svg';
+
+const MissingIndicator = () => (
+ <div className='regeneration-indicator'>
+ <div className='regeneration-indicator__figure'>
+ <img src={illustration} alt='' />
+ </div>
+
+ <div className='regeneration-indicator__label'>
+ <FormattedMessage id='regeneration_indicator.label' tagName='strong' defaultMessage='Loading…' />
+ <FormattedMessage id='regeneration_indicator.sublabel' defaultMessage='Your home feed is being prepared!' />
+ </div>
+ </div>
+);
+
+export default MissingIndicator;
import ImmutablePureComponent from 'react-immutable-pure-component';
import LoadGap from './load_gap';
import ScrollableList from './scrollable_list';
-import { FormattedMessage } from 'react-intl';
+import RegenerationIndicator from 'flavours/glitch/components/regeneration_indicator';
export default class StatusList extends ImmutablePureComponent {
const { isLoading, isPartial } = other;
if (isPartial) {
- return (
- <div className='regeneration-indicator'>
- <div>
- <div className='regeneration-indicator__figure' />
-
- <div className='regeneration-indicator__label'>
- <FormattedMessage id='regeneration_indicator.label' tagName='strong' defaultMessage='Loading…' />
- <FormattedMessage id='regeneration_indicator.sublabel' defaultMessage='Your home feed is being prepared!' />
- </div>
- </div>
- </div>
- );
+ return <RegenerationIndicator />;
}
let scrollableContent = (isLoading || statusIds.size > 0) ? (
const GenericNotFound = () => (
<Column>
- <MissingIndicator />
+ <MissingIndicator fullPage />
</Column>
);
cursor: default;
display: flex;
flex: 1 1 auto;
+ flex-direction: column;
align-items: center;
justify-content: center;
padding: 20px;
- & > div {
- width: 100%;
- background: transparent;
- padding-top: 0;
- }
-
&__figure {
- background: url('~flavours/glitch/images/elephant_ui_working.svg') no-repeat center 0;
- width: 100%;
- height: 160px;
- background-size: contain;
- position: absolute;
- top: 50%;
- left: 50%;
- transform: translate(-50%, -50%);
+ &,
+ img {
+ display: block;
+ width: auto;
+ height: 160px;
+ margin: 0;
+ }
}
- &.missing-indicator {
+ &--without-header {
padding-top: 20px + 48px;
-
- .regeneration-indicator__figure {
- background-image: url('~flavours/glitch/images/elephant_ui_disappointed.svg');
- }
}
&__label {
- margin-top: 200px;
+ margin-top: 30px;
strong {
display: block;