@s20.ai/safecam-360-rn-v2
Version:
A React Native component to view the interior panorama and exterior 360 degree views of a product featuring suppport for hotspots. Compatible with Android and iOS
72 lines (70 loc) • 2.53 kB
JavaScript
import React from 'react';
import {connect, useDispatch} from 'react-redux';
import constants from '../../../config/constants';
import {setCurrentMessageOff} from '../../../redux/actions/messageHintAction';
import AutoRotateHint from './AutoRotateHint';
import ExteriorRotateHint from './ExteriorRotateHint';
import InteriorRotateHint from './InteriorRotateHint';
import ZoomOutMessage from './ZoomOutMessage';
import ZoomMessage from './ZoomMessage';
const AnimationOverlay = ({
messageHint,
customFontFamily,
miniMode,
zoomMessage,
}) => {
let _messageHint = {
AUTO_ROTATE_MESSAGE : {
show: Boolean,
never: Boolean // it overrides the show variable state
}
}
const dispatch = useDispatch();
const getMessage = () => {
for (const key in messageHint) {
if (Object.hasOwnProperty.call(messageHint, key)) {
const element = messageHint[key];
if (element.show && !element.never)
switch (key) {
case constants.MESSAGES.AUTO_ROTATE_MESSAGE:
if (miniMode) {
dispatch(
setCurrentMessageOff(
constants.MESSAGES.AUTO_ROTATE_MESSAGE,
true,
),
);
return <></>;
}
return <AutoRotateHint customFontFamily={customFontFamily} />;
case constants.MESSAGES.EXTERIOR_ROTATE:
return <ExteriorRotateHint miniMode={miniMode} />;
case constants.MESSAGES.INTERIOR_ROTATE:
return (
<InteriorRotateHint
miniMode={miniMode}
customFontFamily={customFontFamily}
/>
);
case constants.MESSAGES.DOUBLE_TAP_TO_ZOOM_OUT_EXTERIOR:
return zoomMessage && <ZoomOutMessage isExterior />;
case constants.MESSAGES.DOUBLE_TAP_TO_ZOOM_EXTERIOR:
return zoomMessage && <ZoomMessage isExterior />;
case constants.MESSAGES.DOUBLE_TAP_TO_ZOOM_OUT_INTERIOR:
return zoomMessage && <ZoomOutMessage isInterior />;
case constants.MESSAGES.DOUBLE_TAP_TO_ZOOM_INTERIOR:
return zoomMessage && <ZoomMessage isInterior />;
default:
return;
}
}
}
};
return <>{getMessage()}</>;
};
const mapStateToProps = ({messageHint, currentView}) => {
return {
messageHint: messageHint,
};
};
export default connect(mapStateToProps)(AnimationOverlay);