Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Algemene info tonen voor helpende handen #249

Closed
wants to merge 6 commits into from
Closed
Changes from 1 commit
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
Prev Previous commit
Next Next commit
Merge branch 'master' into feature/helpende-hand
everaertdorothee committed Jun 20, 2023
commit ca7b97354e45e9146c32096179d6a89622929ddd
1 change: 1 addition & 0 deletions screens/MoreScreen.tsx
Original file line number Diff line number Diff line change
@@ -5,6 +5,7 @@ import { Separator, View } from '../components/Themed';
import { getTicketFromStorage } from '../services/TicketService';
import { Ticket } from '../models/Ticket';
import { TicketContext } from '../components/contexts/TicketProvider';
import { Separator, View } from '../components/Themed/Themed';

const MoreScreen: React.FC = () => {
const { ticketData } = useContext(TicketContext);
118 changes: 27 additions & 91 deletions services/contentService.ts
Original file line number Diff line number Diff line change
@@ -7,6 +7,7 @@ import {
SATURDAY_ITEMS,
SUNDAY_ITEMS,
FAQ_ITEMS,
// MAP_ITEMS,
NORMALLAYER_ITEMS,
BIGGAMELAYER_ITEMS,
ACTIVITIESLAYER_ITEMS,
@@ -20,31 +21,36 @@ const programPrefix = 'Programma';
const homePrefix = 'Homepage';
const faqPrefix = 'Faq';
// const mapPrefix = 'Kaart';
const volunteerPrefix = 'helpendeHand';

// Load all content from the API, parse it to the format we want and then save it as one huge array in local storage.
export const saveContent = async (paths: string[]): Promise<void> => {
const programPrefix = 'Programma';
const homePrefix = 'Homepage';
const faqPrefix = 'Faq';
const mapPrefix = 'Kaart';
const volunteerPrefix = 'helpendeHand';

// Filter out paths per screen, each needs a different mapping logic
const homePaths = paths.filter((x) => x.startsWith(homePrefix));
const programPaths = paths.filter((x) => x.startsWith(programPrefix));
const faqPaths = paths.filter((x) => x.startsWith(faqPrefix));
const mapPaths = paths.filter((x) => x.startsWith(mapPrefix));
// const mapPaths = paths.filter((x) => x.startsWith(mapPrefix));
const volunteerPaths = paths.filter((x)=> x.startsWith(volunteerPrefix))

const homeContent = await loadContent(homePaths);
await saveHomeContent(homeContent);
const programContent = await loadContent(programPaths);
await saveProgramContent(programContent);
const faqContent = await loadContent(faqPaths);
await saveFaqContent(faqContent);
const mapContent = await loadContent(mapPaths);
await saveMapContent(mapContent);
const volunteerContent = await loadContent(volunteerPaths);
await saveVolunteerContent(volunteerContent);
// HOME - Load and wrap in metadata
const homeMarkdown = await loadContent(homePaths);
const homeContent = createMetadata(mapHomeItems(homeMarkdown), HOME_ITEMS);

// PROGRAM - Load and wrap in metadata
const programMarkdown = await loadContent(programPaths);
const parsedProgram = await parseProgramContent(programMarkdown);

// FAQ - Load and wrap in metadata
const faqMarkdown = await loadContent(faqPaths);
const faqContent = createMetadata(mapFaq(faqMarkdown), FAQ_ITEMS);

// MAP - Currently not needed because we use a static image for map
// const mapMarkdown = await loadContent(mapPaths);
// const mapContent = createMetadata(mapMap(mapMarkdown), MAP_ITEMS);

const allData = parsedProgram.concat(homeContent, faqContent);

await AsyncStorageLib.setItem('DATA', JSON.stringify(allData));
};

// Load all provided paths into async storage
@@ -65,80 +71,10 @@ const parseProgramContent = async (objects: FrontMatterResult<any>[]) => {
const friday = mapped.filter((x) => x.day === 'Vrijdag');
const saturday = mapped.filter((x) => x.day === 'Zaterdag');
const sunday = mapped.filter((x) => x.day === 'Zondag');
saveDayItems(friday, FRIDAY_ITEMS);
saveDayItems(saturday, SATURDAY_ITEMS);
saveDayItems(sunday, SUNDAY_ITEMS);
};

const saveDayItems = async (items: any[], key: string) => {
const fridayMeta = wrapContentInMetadata(items);
const json = JSON.stringify(fridayMeta);
await AsyncStorageLib.setItem(key, json);
};

const saveFaqContent = async (objects: FrontMatterResult<any>[]) => {
const mapped = objects.map((item) => {
return {
title: item.attributes.titel,
order: item.attributes.volgorde,
icon: item.attributes.icoon,
content: item.body,
};
});

const meta = wrapContentInMetadata(mapped);
const json = JSON.stringify(meta);
await AsyncStorageLib.setItem(FAQ_ITEMS, json);
};

const saveVolunteerContent = async (objects: FrontMatterResult<any>[]) => {
const mapped = objects.map((item) => {
return {
title: item.attributes.titel,
order: item.attributes.volgorde,
icon: item.attributes.icoon,
content: item.body,
};
});

const meta = wrapContentInMetadata(mapped);
const json = JSON.stringify(meta);
await AsyncStorageLib.setItem(VOLUNTEER_ITEMS, json);
};

const saveMapContent = async (objects: FrontMatterResult<any>[]) => {
const mapped = objects.map((item) => {
return {
id: item.attributes.id,
layer: item.attributes.layer,
title: item.attributes.title,
description: item.body,
latLng: {
latitude: item.attributes.latitude,
longitude: item.attributes.longitude,
},
icon: item.attributes.icon,
};
});

const normal = mapped.filter((x) => x.layer === 'normal');
const big_game = mapped.filter((x) => x.layer === 'big_game');
const activities = mapped.filter((x) => x.layer === 'activities');
saveLayerMarker(mapped, MAP_ITEMS);
saveLayerMarker(normal, NORMALLAYER_ITEMS);
saveLayerMarker(big_game, BIGGAMELAYER_ITEMS);
saveLayerMarker(activities, ACTIVITIESLAYER_ITEMS);
};

const saveLayerMarker = async (items: any[], key: string) => {
const layerMeta = wrapContentInMetadata(items);
const json = JSON.stringify(layerMeta);
await AsyncStorageLib.setItem(key, json);
};
const fridayParsed = createMetadata(friday, FRIDAY_ITEMS);
const saturDayParsed = createMetadata(saturday, SATURDAY_ITEMS);
const sundayParsed = createMetadata(sunday, SUNDAY_ITEMS);

const wrapContentInMetadata = (content: any): ContentMetadata => {
return {
lastUpdated: new Date(),
content: content,
};
return [fridayParsed, saturDayParsed, sundayParsed];
};
You are viewing a condensed version of this merge commit. You can view the full changes here.