Skip to content

Commit

Permalink
Merge pull request #407 from ikuseiGmbH/feature/SVA-314-nested-info-s…
Browse files Browse the repository at this point in the history
…creen

Feature: nested info screen
  • Loading branch information
Julian Kwast authored Dec 2, 2021
2 parents 61a3098 + 0bfca06 commit 76e6509
Show file tree
Hide file tree
Showing 21 changed files with 162 additions and 58 deletions.
3 changes: 1 addition & 2 deletions src/components/ConnectedImagesCarousel.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@ import { ActivityIndicator } from 'react-native';

import { colors } from '../config';
import { graphqlFetchPolicy, parsedImageAspectRatio } from '../helpers';
import { useRefreshTime } from '../hooks';
import { useHomeRefresh } from '../hooks/HomeRefresh';
import { useHomeRefresh, useRefreshTime } from '../hooks';
import { NetworkContext } from '../NetworkProvider';
import { getQuery, QUERY_TYPES } from '../queries';
import { SettingsContext } from '../SettingsProvider';
Expand Down
2 changes: 1 addition & 1 deletion src/components/EventList.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import React, { useState } from 'react';
import { SectionList } from 'react-native';

import { momentFormat } from '../helpers';
import { useRenderItem } from '../hooks/listHooks';
import { useRenderItem } from '../hooks';
import { QUERY_TYPES } from '../queries';

import { LoadingSpinner } from './LoadingSpinner';
Expand Down
2 changes: 1 addition & 1 deletion src/components/HomeSection.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { StackNavigationProp } from '@react-navigation/stack';
import React from 'react';
import { useQuery } from 'react-apollo';

import { useHomeRefresh } from '../hooks/HomeRefresh';
import { useHomeRefresh } from '../hooks';
import { getQuery } from '../queries';

import { DataListSection } from './DataListSection';
Expand Down
2 changes: 1 addition & 1 deletion src/components/HorizontalList.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import PropTypes from 'prop-types';
import React from 'react';
import { FlatList } from 'react-native';

import { useRenderItem } from '../hooks/listHooks';
import { useRenderItem } from '../hooks';

const keyExtractor = (item, index) => `index${index}-id${item.id}`;

Expand Down
2 changes: 1 addition & 1 deletion src/components/Image.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { Image as RNEImage } from 'react-native-elements';
import { consts, colors } from '../config';
import { imageHeight, imageWidth } from '../helpers';
import { SettingsContext } from '../SettingsProvider';
import { useInterval } from '../hooks';
import { useInterval } from '../hooks/TimeHooks';

import { ImageMessage } from './ImageMessage';
import { ImageRights } from './ImageRights';
Expand Down
2 changes: 1 addition & 1 deletion src/components/VerticalList.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import React, { useRef, useState } from 'react';
import { ActivityIndicator, FlatList } from 'react-native';

import { colors, normalize } from '../config';
import { useRenderItem } from '../hooks/listHooks';
import { useRenderItem } from '../hooks';

import { BackToTop } from './BackToTop';

Expand Down
43 changes: 11 additions & 32 deletions src/components/screens/About.js
Original file line number Diff line number Diff line change
@@ -1,39 +1,26 @@
import PropTypes from 'prop-types';
import React, { useContext, useState } from 'react';
import { useQuery } from 'react-apollo';
import { ActivityIndicator, RefreshControl, SectionList } from 'react-native';

import { colors, texts } from '../../config';
import { graphqlFetchPolicy } from '../../helpers';
import { useRefreshTime } from '../../hooks';
import { useHomeRefresh } from '../../hooks/HomeRefresh';
import { useHomeRefresh, useRenderItem, useStaticContent } from '../../hooks';
import { NetworkContext } from '../../NetworkProvider';
import { getQuery, QUERY_TYPES } from '../../queries';
import { QUERY_TYPES } from '../../queries';
import { SettingsContext } from '../../SettingsProvider';
import { LoadingContainer } from '../LoadingContainer';
import { SectionHeader } from '../SectionHeader';
import { VersionNumber } from '../VersionNumber';
import { useRenderItem } from '../../hooks/listHooks';

export const About = ({ navigation, withHomeRefresh, withSettings }) => {
const { isConnected, isMainserverUp } = useContext(NetworkContext);
const { data, loading, refetch } = useStaticContent({
name: 'homeAbout',
type: 'json',
refreshTimeKey: 'publicJsonFile-homeAbout'
});
const { isConnected } = useContext(NetworkContext);
const { globalSettings } = useContext(SettingsContext);
const [refreshing, setRefreshing] = useState(false);

const refreshTime = useRefreshTime('publicJsonFile-homeAbout');

const fetchPolicy = graphqlFetchPolicy({
isConnected,
isMainserverUp,
refreshTime
});

const { data: aboutData, loading, refetch } = useQuery(getQuery(QUERY_TYPES.PUBLIC_JSON_FILE), {
variables: { name: 'homeAbout' },
fetchPolicy,
skip: !refreshTime
});

useHomeRefresh(withHomeRefresh ? refetch : undefined);

const refresh = async (refetch) => {
Expand All @@ -48,30 +35,22 @@ export const About = ({ navigation, withHomeRefresh, withSettings }) => {

const renderItem = useRenderItem(QUERY_TYPES.PUBLIC_JSON_FILE, navigation);

if (!refreshTime || loading)
if (loading)
return withHomeRefresh ? null : (
<LoadingContainer>
<ActivityIndicator color={colors.accent} />
</LoadingContainer>
);

let publicJsonFileContent = [];

try {
publicJsonFileContent = JSON.parse(aboutData?.publicJsonFile?.content);
} catch (error) {
console.warn(error, aboutData);
}

if (!publicJsonFileContent?.length) return null;
if (!data?.length) return null;

const { sections = {} } = globalSettings;
const { headlineAbout = texts.homeTitles.about } = sections;

const sectionData = [
{
title: headlineAbout,
data: publicJsonFileContent
data
}
];

Expand Down
3 changes: 1 addition & 2 deletions src/components/screens/Service.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@ import { StyleSheet, TouchableOpacity, View } from 'react-native';

import { colors, consts, device, Icon, normalize, texts } from '../../config';
import { graphqlFetchPolicy } from '../../helpers';
import { useRefreshTime } from '../../hooks';
import { useHomeRefresh } from '../../hooks/HomeRefresh';
import { useHomeRefresh, useRefreshTime } from '../../hooks';
import { NetworkContext } from '../../NetworkProvider';
import { OrientationContext } from '../../OrientationProvider';
import { getQuery, QUERY_TYPES } from '../../queries';
Expand Down
3 changes: 1 addition & 2 deletions src/components/widgets/ConstructionSiteNewsWidget.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@ import { useQuery } from 'react-apollo';

import { consts, Icon, texts } from '../../config';
import { graphqlFetchPolicy } from '../../helpers';
import { useRefreshTime } from '../../hooks';
import { useHomeRefresh } from '../../hooks/HomeRefresh';
import { useHomeRefresh, useRefreshTime } from '../../hooks';
import { NetworkContext } from '../../NetworkProvider';
import { getQuery, QUERY_TYPES } from '../../queries';
import { WidgetProps } from '../../types';
Expand Down
3 changes: 1 addition & 2 deletions src/components/widgets/ConstructionSiteWidget.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@ import { useNavigation } from '@react-navigation/core';
import React, { useCallback } from 'react';

import { Icon, texts } from '../../config';
import { useConstructionSites } from '../../hooks';
import { useHomeRefresh } from '../../hooks/HomeRefresh';
import { useConstructionSites, useHomeRefresh } from '../../hooks';
import { WidgetProps } from '../../types';

import { DefaultWidget } from './DefaultWidget';
Expand Down
3 changes: 1 addition & 2 deletions src/components/widgets/EventWidget.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@ import { useQuery } from 'react-apollo';

import { consts, Icon, texts } from '../../config';
import { graphqlFetchPolicy } from '../../helpers';
import { useRefreshTime } from '../../hooks';
import { useHomeRefresh } from '../../hooks/HomeRefresh';
import { useHomeRefresh, useRefreshTime } from '../../hooks';
import { NetworkContext } from '../../NetworkProvider';
import { getQuery, QUERY_TYPES } from '../../queries';
import { WidgetProps } from '../../types';
Expand Down
3 changes: 1 addition & 2 deletions src/components/widgets/LunchWidget.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@ import { useQuery } from 'react-apollo';

import { consts, Icon, texts } from '../../config';
import { graphqlFetchPolicy } from '../../helpers';
import { useRefreshTime } from '../../hooks';
import { useHomeRefresh } from '../../hooks/HomeRefresh';
import { useHomeRefresh, useRefreshTime } from '../../hooks';
import { NetworkContext } from '../../NetworkProvider';
import { getQuery, QUERY_TYPES } from '../../queries';
import { WidgetProps } from '../../types';
Expand Down
3 changes: 1 addition & 2 deletions src/components/widgets/SurveyWidget.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@ import { useQuery } from 'react-apollo';

import { consts, Icon, normalize, texts } from '../../config';
import { graphqlFetchPolicy } from '../../helpers';
import { useRefreshTime } from '../../hooks';
import { useHomeRefresh } from '../../hooks/HomeRefresh';
import { useHomeRefresh, useRefreshTime } from '../../hooks';
import { NetworkContext } from '../../NetworkProvider';
import { SURVEYS } from '../../queries/survey';
import { Survey, WidgetProps } from '../../types';
Expand Down
2 changes: 1 addition & 1 deletion src/components/widgets/WeatherWidget.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { TouchableOpacity } from 'react-native-gesture-handler';

import { consts, normalize, texts } from '../../config';
import { graphqlFetchPolicy } from '../../helpers';
import { useHomeRefresh } from '../../hooks/HomeRefresh';
import { useHomeRefresh } from '../../hooks';
import { NetworkContext } from '../../NetworkProvider';
import { getQuery, QUERY_TYPES } from '../../queries';
import { WidgetProps } from '../../types';
Expand Down
5 changes: 5 additions & 0 deletions src/config/navigation/defaultStackConfig.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import {
HtmlScreen,
IndexScreen,
LunchScreen,
NestedInfoScreen,
OParlCalendarScreen,
OParlDetailScreen,
OParlOrganizationsScreen,
Expand Down Expand Up @@ -174,6 +175,10 @@ export const defaultStackConfig = ({
routeName: ScreenName.Lunch,
screenComponent: LunchScreen
},
{
routeName: ScreenName.NestedInfo,
screenComponent: NestedInfoScreen
},
{
routeName: ScreenName.OParlCalendar,
screenComponent: OParlCalendarScreen
Expand Down
2 changes: 2 additions & 0 deletions src/hooks/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@ export * from './apollo';
export * from './Bookmarks';
export * from './constructionSites';
export * from './encounter';
export * from './HomeRefresh';
export * from './imagePicker';
export * from './listHooks';
export * from './locationHooks';
export * from './matomoHooks';
export * from './NewsCategories';
Expand Down
10 changes: 6 additions & 4 deletions src/hooks/staticContent.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ type StaticContentArgs<T = unknown> = {
refreshTimeKey?: string;
refreshInterval?: string;
fetchPolicy?: 'cache-first' | 'cache-only' | 'network-only';
skip?: boolean;
} & (
| {
type: 'json';
Expand All @@ -24,12 +25,13 @@ type StaticContentArgs<T = unknown> = {
);

export const useStaticContent = <T>({
fetchPolicy: overrideFetchPolicy,
name,
type,
parseFromJson,
refreshInterval,
refreshTimeKey,
fetchPolicy: overrideFetchPolicy
skip,
type
}: StaticContentArgs<T>): {
data?: T;
error: boolean;
Expand All @@ -54,7 +56,7 @@ export const useStaticContent = <T>({
{
variables: { name },
fetchPolicy,
skip: !refreshTime
skip: !refreshTime || skip
}
);

Expand Down Expand Up @@ -85,7 +87,7 @@ export const useStaticContent = <T>({
error: error || !!queryError,
// add the extra condition to avoid weird rendering states, where loading is false, but the publicFileData is not yet set.
// this way we can safely manipulate data and then update the publicFileData with it, after the query has finished loading.
loading: loading || (publicFileData === undefined && !error),
loading: loading || (publicFileData === undefined && !error && !skip),
refetch: refetchCallback
};
};
3 changes: 1 addition & 2 deletions src/screens/BookmarkCategoryScreen.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,7 @@ import {
} from '../components';
import { colors, consts, texts } from '../config';
import { graphqlFetchPolicy, parseListItemsFromQuery } from '../helpers';
import { useMatomoTrackScreenView, useRefreshTime } from '../hooks';
import { useBookmarks } from '../hooks/Bookmarks';
import { useBookmarks, useMatomoTrackScreenView, useRefreshTime } from '../hooks';
import { NetworkContext } from '../NetworkProvider';
import { getQuery } from '../queries';

Expand Down
Loading

0 comments on commit 76e6509

Please sign in to comment.