[Glitch] Fix dimensions of preview cards, fix crash in web UI, fix warning
Port 9c38c5daa3 to glitch-soc
			
			
This commit is contained in:
		| @@ -1,52 +0,0 @@ | ||||
| import api from 'flavours/glitch/util/api'; | ||||
|  | ||||
| export const STATUS_CARD_FETCH_REQUEST = 'STATUS_CARD_FETCH_REQUEST'; | ||||
| export const STATUS_CARD_FETCH_SUCCESS = 'STATUS_CARD_FETCH_SUCCESS'; | ||||
| export const STATUS_CARD_FETCH_FAIL    = 'STATUS_CARD_FETCH_FAIL'; | ||||
|  | ||||
| export function fetchStatusCard(id) { | ||||
|   return (dispatch, getState) => { | ||||
|     if (getState().getIn(['cards', id], null) !== null) { | ||||
|       return; | ||||
|     } | ||||
|  | ||||
|     dispatch(fetchStatusCardRequest(id)); | ||||
|  | ||||
|     api(getState).get(`/api/v1/statuses/${id}/card`).then(response => { | ||||
|       if (!response.data.url) { | ||||
|         return; | ||||
|       } | ||||
|  | ||||
|       dispatch(fetchStatusCardSuccess(id, response.data)); | ||||
|     }).catch(error => { | ||||
|       dispatch(fetchStatusCardFail(id, error)); | ||||
|     }); | ||||
|   }; | ||||
| }; | ||||
|  | ||||
| export function fetchStatusCardRequest(id) { | ||||
|   return { | ||||
|     type: STATUS_CARD_FETCH_REQUEST, | ||||
|     id, | ||||
|     skipLoading: true, | ||||
|   }; | ||||
| }; | ||||
|  | ||||
| export function fetchStatusCardSuccess(id, card) { | ||||
|   return { | ||||
|     type: STATUS_CARD_FETCH_SUCCESS, | ||||
|     id, | ||||
|     card, | ||||
|     skipLoading: true, | ||||
|   }; | ||||
| }; | ||||
|  | ||||
| export function fetchStatusCardFail(id, error) { | ||||
|   return { | ||||
|     type: STATUS_CARD_FETCH_FAIL, | ||||
|     id, | ||||
|     error, | ||||
|     skipLoading: true, | ||||
|     skipAlert: true, | ||||
|   }; | ||||
| }; | ||||
| @@ -1,7 +1,6 @@ | ||||
| import api from 'flavours/glitch/util/api'; | ||||
|  | ||||
| import { deleteFromTimelines } from './timelines'; | ||||
| import { fetchStatusCard } from './cards'; | ||||
|  | ||||
| export const STATUS_FETCH_REQUEST = 'STATUS_FETCH_REQUEST'; | ||||
| export const STATUS_FETCH_SUCCESS = 'STATUS_FETCH_SUCCESS'; | ||||
| @@ -38,7 +37,6 @@ export function fetchStatus(id) { | ||||
|     const skipLoading = getState().getIn(['statuses', id], null) !== null; | ||||
|  | ||||
|     dispatch(fetchContext(id)); | ||||
|     dispatch(fetchStatusCard(id)); | ||||
|  | ||||
|     if (skipLoading) { | ||||
|       return; | ||||
|   | ||||
| @@ -59,7 +59,7 @@ export default class Card extends React.PureComponent { | ||||
|     card: ImmutablePropTypes.map, | ||||
|     maxDescription: PropTypes.number, | ||||
|     onOpenMedia: PropTypes.func.isRequired, | ||||
|     compact: PropTypes.boolean, | ||||
|     compact: PropTypes.bool, | ||||
|   }; | ||||
|  | ||||
|   static defaultProps = { | ||||
| @@ -120,7 +120,7 @@ export default class Card extends React.PureComponent { | ||||
|     const content   = { __html: addAutoPlay(card.get('html')) }; | ||||
|     const { width } = this.state; | ||||
|     const ratio     = card.get('width') / card.get('height'); | ||||
|     const height    = card.get('width') > card.get('height') ? (width / ratio) : (width * ratio); | ||||
|     const height    = width / ratio; | ||||
|  | ||||
|     return ( | ||||
|       <div | ||||
| @@ -145,8 +145,8 @@ export default class Card extends React.PureComponent { | ||||
|     const interactive = card.get('type') !== 'link'; | ||||
|     const className   = classnames('status-card', { horizontal, compact, interactive }); | ||||
|     const title       = interactive ? <a className='status-card__title' href={card.get('url')} title={card.get('title')} rel='noopener' target='_blank'><strong>{card.get('title')}</strong></a> : <strong className='status-card__title' title={card.get('title')}>{card.get('title')}</strong>; | ||||
|     const ratio       = compact ? 16 / 9 : card.get('width') / card.get('height'); | ||||
|     const height      = card.get('width') > card.get('height') ? (width / ratio) : (width * ratio); | ||||
|     const ratio       = card.get('width') / card.get('height'); | ||||
|     const height      = (compact && !embedded) ? (width / (16 / 9)) : (width / ratio); | ||||
|  | ||||
|     const description = ( | ||||
|       <div className='status-card__content'> | ||||
|   | ||||
| @@ -8,7 +8,7 @@ import MediaGallery from 'flavours/glitch/components/media_gallery'; | ||||
| import AttachmentList from 'flavours/glitch/components/attachment_list'; | ||||
| import { Link } from 'react-router-dom'; | ||||
| import { FormattedDate, FormattedNumber } from 'react-intl'; | ||||
| import CardContainer from '../containers/card_container'; | ||||
| import Card from './card'; | ||||
| import ImmutablePureComponent from 'react-immutable-pure-component'; | ||||
| import Video from 'flavours/glitch/features/video'; | ||||
| import VisibilityIcon from 'flavours/glitch/components/status_visibility_icon'; | ||||
| @@ -83,7 +83,7 @@ export default class DetailedStatus extends ImmutablePureComponent { | ||||
|         ); | ||||
|         mediaIcon = 'picture-o'; | ||||
|       } | ||||
|     } else media = <CardContainer onOpenMedia={this.props.onOpenMedia} statusId={status.get('id')} />; | ||||
|     } else media = <Card onOpenMedia={this.props.onOpenMedia} card={status.get('card', null)} />; | ||||
|  | ||||
|     if (status.get('application')) { | ||||
|       applicationLink = <span> · <a className='detailed-status__application' href={status.getIn(['application', 'website'])} target='_blank' rel='noopener'>{status.getIn(['application', 'name'])}</a></span>; | ||||
|   | ||||
| @@ -1,8 +0,0 @@ | ||||
| import { connect } from 'react-redux'; | ||||
| import Card from '../components/card'; | ||||
|  | ||||
| const mapStateToProps = (state, { statusId }) => ({ | ||||
|   card: state.getIn(['statuses', statusId, 'card'], null), | ||||
| }); | ||||
|  | ||||
| export default connect(mapStateToProps)(Card); | ||||
| @@ -1,14 +0,0 @@ | ||||
| import { STATUS_CARD_FETCH_SUCCESS } from 'flavours/glitch/actions/cards'; | ||||
|  | ||||
| import { Map as ImmutableMap, fromJS } from 'immutable'; | ||||
|  | ||||
| const initialState = ImmutableMap(); | ||||
|  | ||||
| export default function cards(state = initialState, action) { | ||||
|   switch(action.type) { | ||||
|   case STATUS_CARD_FETCH_SUCCESS: | ||||
|     return state.set(action.id, fromJS(action.card)); | ||||
|   default: | ||||
|     return state; | ||||
|   } | ||||
| }; | ||||
| @@ -23,9 +23,6 @@ import { | ||||
|   STATUS_MUTE_SUCCESS, | ||||
|   STATUS_UNMUTE_SUCCESS, | ||||
| } from 'flavours/glitch/actions/statuses'; | ||||
| import { | ||||
|   STATUS_CARD_FETCH_SUCCESS | ||||
| } from 'flavours/glitch/actions/cards'; | ||||
| import { | ||||
|   TIMELINE_UPDATE, | ||||
|   TIMELINE_DELETE, | ||||
| @@ -146,8 +143,6 @@ export default function statuses(state = initialState, action) { | ||||
|     return normalizeStatuses(state, action.statuses); | ||||
|   case TIMELINE_DELETE: | ||||
|     return deleteStatus(state, action.id, action.references); | ||||
|   case STATUS_CARD_FETCH_SUCCESS: | ||||
|     return state.setIn([action.id, 'card'], fromJS(action.card)); | ||||
|   default: | ||||
|     return state; | ||||
|   } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user