Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion components/AvalancheProblemCard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,9 @@ export const AvalancheProblemCard: React.FunctionComponent<AvalancheProblemCardP
/>
</HStack>
{problem.discussion && <HTML source={{html: problem.discussion}} />}
{problem.media && cardWidth > 0 && <MediaCarousel mediaItems={[problem.media]} thumbnailAspectRatio={1.3} thumbnailHeight={cardWidth / 1.3} />}
{problem.media && cardWidth > 0 && (
<MediaCarousel mediaItems={[problem.media]} thumbnailAspectRatio={1.3} thumbnailHeight={cardWidth / 1.3} displayCaptionsWithThumbnails={true} />
)}
</VStack>
);
};
8 changes: 5 additions & 3 deletions components/content/carousel/MediaCarousel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,16 @@ export interface MediaCarouselProps extends ViewProps {
thumbnailHeight: number;
thumbnailAspectRatio?: number;
mediaItems: MediaItem[];
displayCaptions?: boolean;
displayCaptionsWithThumbnails?: boolean;
}

// The default for displayCaptionsWithThumbnails is set to false as it's only used for AvalancheProblemCard.
// There will be a new component that handles this. That work is being tracked in issue 1066
export const MediaCarousel: React.FunctionComponent<PropsWithChildren<MediaCarouselProps>> = ({
thumbnailHeight,
thumbnailAspectRatio = 1.3,
mediaItems,
displayCaptions = true,
displayCaptionsWithThumbnails = false,
...props
}) => {
const thumbnailWidth = thumbnailAspectRatio * thumbnailHeight;
Expand All @@ -50,7 +52,7 @@ export const MediaCarousel: React.FunctionComponent<PropsWithChildren<MediaCarou
imageWidth={thumbnailWidth}
imageHeight={thumbnailHeight}
mediaItems={mediaItems}
displayCaptions={displayCaptions}
displayCaptions={displayCaptionsWithThumbnails}
onPress={onPress}
imageStyle={{borderRadius: 4}}
/>
Expand Down
17 changes: 13 additions & 4 deletions components/content/carousel/ThumbnailList.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import {NetworkImage, NetworkImageProps, NetworkImageState} from 'components/content/carousel/NetworkImage';
import {View} from 'components/core';
import {VStack, View} from 'components/core';
import {HTML, HTMLRendererConfig} from 'components/text/HTML';
import React, {PropsWithChildren, useCallback, useMemo, useState} from 'react';
import {FlatList, FlatListProps} from 'react-native';
import {ImageMediaItem, MediaItem, MediaType, VideoMediaItem} from 'types/nationalAvalancheCenter';
Expand Down Expand Up @@ -70,6 +71,7 @@ export const ThumbnailList: React.FC<PropsWithChildren<ThumbnailListProps>> = ({
imageWidth,
space = 16,
mediaItems,
displayCaptions,
imageStyle,
resizeMode,
onPress = () => undefined,
Expand All @@ -93,7 +95,7 @@ export const ThumbnailList: React.FC<PropsWithChildren<ThumbnailListProps>> = ({

const renderItem = useCallback(
({item, index}: {item: ThumbnailListItem; index: number}) => (
<View width={imageWidth} justifyContent="center" alignItems="center" flex={1}>
<VStack width={imageWidth} justifyContent="center" alignItems="center" flex={1} space={8}>
<NetworkImage
width={imageWidth}
height={imageHeight}
Expand All @@ -105,9 +107,16 @@ export const ThumbnailList: React.FC<PropsWithChildren<ThumbnailListProps>> = ({
onStateChange={onStateCallback}
onPress={onPress}
/>
</View>
{displayCaptions && item.caption && (
<View px={32}>
<HTMLRendererConfig baseStyle={{fontSize: 12, textAlign: 'center', fontStyle: 'italic'}}>
<HTML source={{html: item.caption}} />
</HTMLRendererConfig>
</View>
)}
</VStack>
),
[imageWidth, imageHeight, imageStyle, resizeMode, onPress, onStateCallback],
[imageWidth, imageHeight, imageStyle, resizeMode, displayCaptions, onPress, onStateCallback],
);

const ItemSeparatorComponent = useCallback(() => <View width={space} />, [space]);
Expand Down
2 changes: 1 addition & 1 deletion components/forecast/AvalancheTab.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,7 @@ export const AvalancheTab: React.FunctionComponent<{
)}
{forecast.media && forecast.media.length > 0 && (
<Card borderRadius={0} borderColor="white" header={<BodyBlack>Media</BodyBlack>} noDivider>
<MediaCarousel thumbnailHeight={160} thumbnailAspectRatio={1.3} mediaItems={forecast.media} displayCaptions={false} />
<MediaCarousel thumbnailHeight={160} thumbnailAspectRatio={1.3} mediaItems={forecast.media} />
</Card>
)}
<View height={16} />
Expand Down
2 changes: 1 addition & 1 deletion components/forecast/SynopsisTab.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ export const SynopsisTab: React.FunctionComponent<{
{synopsis.hazard_discussion && (
<Card borderRadius={0} borderColor="white" header={<BodyBlack>{synopsis.bottom_line}</BodyBlack>}>
<HTML source={{html: synopsis.hazard_discussion}} />
{synopsis.media && <MediaCarousel thumbnailHeight={160} thumbnailAspectRatio={1.3} mediaItems={synopsis.media} displayCaptions={false} />}
{synopsis.media && <MediaCarousel thumbnailHeight={160} thumbnailAspectRatio={1.3} mediaItems={synopsis.media} />}
</Card>
)}
</VStack>
Expand Down
6 changes: 3 additions & 3 deletions components/observations/ObservationDetailView.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -343,7 +343,7 @@ export const ObservationCard: React.FunctionComponent<{
</Card>
{(observation.media ?? []).length > 0 && (
<Card borderRadius={0} borderColor="white" header={<BodyBlack>Media</BodyBlack>}>
<MediaCarousel thumbnailHeight={160} thumbnailAspectRatio={1.3} mediaItems={observation.media ?? []} displayCaptions={false} />
<MediaCarousel thumbnailHeight={160} thumbnailAspectRatio={1.3} mediaItems={observation.media ?? []} />
</Card>
)}
{((observation.avalanches && observation.avalanches.length > 0) || observation.avalanches_summary) && (
Expand Down Expand Up @@ -380,7 +380,7 @@ export const ObservationCard: React.FunctionComponent<{
{item.media && (
<VStack pt={8} space={8} width="100%">
<BodySemibold>Media</BodySemibold>
<MediaCarousel thumbnailHeight={160} thumbnailAspectRatio={1.3} mediaItems={item.media} displayCaptions={false} />
<MediaCarousel thumbnailHeight={160} thumbnailAspectRatio={1.3} mediaItems={item.media} />
</VStack>
)}
</VStack>
Expand All @@ -396,7 +396,7 @@ export const ObservationCard: React.FunctionComponent<{
<VStack space={8} width="100%">
{observation.advanced_fields.snowpack_summary && <HTML source={{html: observation.advanced_fields.snowpack_summary}} />}
{observation.advanced_fields.snowpack_media && (
<MediaCarousel thumbnailHeight={160} thumbnailAspectRatio={1.3} mediaItems={observation.advanced_fields.snowpack_media} displayCaptions={false} />
<MediaCarousel thumbnailHeight={160} thumbnailAspectRatio={1.3} mediaItems={observation.advanced_fields.snowpack_media} />
)}
{observation.advanced_fields.snowpack && <>{/* we don't know what fields could be in this thing ... */}</>}
</VStack>
Expand Down