Merge pull request #446 from kolplattformen/feat/daySummary

feat: day summary on front page and fixes a lot of issues
This commit is contained in:
Viktor Sarström 2021-09-09 08:45:10 +02:00 committed by GitHub
commit d39b559704
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
28 changed files with 2334 additions and 1590 deletions

View File

@ -1,4 +1,4 @@
# Öppna Skolplattformen App
# Öppna skolplattformen App
This is the app for Öppna skolplattformen.

View File

@ -6,6 +6,7 @@ import {
useNotifications,
useSchedule,
useMenu,
useTimetable,
} from '@skolplattformen/api-hooks'
import { render } from '../../utils/testHelpers'
import React from 'react'
@ -35,6 +36,7 @@ beforeEach(() => {
useNews.mockReturnValueOnce({ data: [], status: 'loaded' })
useSchedule.mockReturnValueOnce({ data: [], status: 'loaded' })
useMenu.mockReturnValueOnce({ data: [], status: 'loaded' })
useTimetable.mockReturnValueOnce({ data: [], status: 'loaded' })
useNavigation.mockReturnValue({ navigate: jest.fn(), setOptions: jest.fn() })
})

View File

@ -13,7 +13,6 @@ import {
TouchableWithoutFeedback,
View,
} from 'react-native'
import { TouchableOpacity } from 'react-native-gesture-handler'
import { NativeStackNavigationOptions } from 'react-native-screens/native-stack'
import { LanguageService } from '../services/languageService'
import { Layout as LayoutStyle, Sizing, Typography } from '../styles'
@ -63,7 +62,8 @@ export const Auth: React.FC<AuthProps> = ({ navigation }) => {
<SafeAreaViewContainer>
<TouchableWithoutFeedback onPress={Keyboard.dismiss}>
<View style={LayoutStyle.flex.full}>
<TouchableOpacity
<TouchableWithoutFeedback
hitSlop={{ top: 20, bottom: 20, left: 20, right: 20 }}
onPress={() => navigation.navigate('SetLanguage')}
accessibilityHint={translate(
'auth.a11y_navigate_to_change_language',
@ -83,7 +83,7 @@ export const Auth: React.FC<AuthProps> = ({ navigation }) => {
/>
<Text style={styles.languageText}>{currentLanguageName}</Text>
</View>
</TouchableOpacity>
</TouchableWithoutFeedback>
<KeyboardAvoidingView>
<View style={styles.content}>
<View style={styles.imageWrapper}>
@ -104,7 +104,7 @@ export const Auth: React.FC<AuthProps> = ({ navigation }) => {
adjustsFontSizeToFit
numberOfLines={2}
>
{translate('general.title')}
Öppna skolplattformen
</Text>
<Login />
<Text category="c2" style={styles.subtitle}>
@ -139,7 +139,7 @@ const themeStyles = StyleService.create({
...LayoutStyle.flex.full,
},
header: {
width: '60%',
width: '100%',
marginBottom: Sizing.t5,
fontFamily: 'Poppins-Black',
fontWeight: '900',

View File

@ -2,6 +2,7 @@ import { createBottomTabNavigator } from '@react-navigation/bottom-tabs'
import {
getFocusedRouteNameFromRoute,
RouteProp,
useNavigation,
useRoute,
} from '@react-navigation/native'
import { StackNavigationProp } from '@react-navigation/stack'
@ -10,11 +11,13 @@ import React from 'react'
import { StyleProp, TextProps } from 'react-native'
import { NativeStackNavigationOptions } from 'react-native-screens/native-stack'
import { defaultStackStyling } from '../design/navigationThemes'
import { studentName } from '../utils/peopleHelpers'
import { translate } from '../utils/translation'
import { Calendar } from './calendar.component'
import { ChildProvider } from './childContext.component'
import { Menu } from './menu.component'
import { RootStackParamList } from './navigation.component'
import { NavigationTitle } from './navigationTitle.component'
import { NewsList } from './newsList.component'
import { NotificationsList } from './notificationsList.component'
@ -43,7 +46,7 @@ const MenuScreen = () => <Menu />
const TabNavigator = ({
initialRouteName = 'News',
}: {
initialRouteName: keyof ChildTabParamList
initialRouteName?: keyof ChildTabParamList
}) => (
<Navigator
initialRouteName={initialRouteName}
@ -108,9 +111,16 @@ export const childRouteOptions = ({
}: {
route: RouteProp<RootStackParamList, 'Child'>
}): NativeStackNavigationOptions => {
const { child } = route.params
return {
...defaultStackStyling,
title: getHeaderTitle(route),
headerCenter: () => (
<NavigationTitle
title={getHeaderTitle(route)}
subtitle={studentName(child?.name)}
/>
),
}
}
@ -118,9 +128,14 @@ export const Child = () => {
const route = useRoute<ChildRouteProps>()
const { child, initialRouteName } = route.params
const navigation = useNavigation()
navigation.setOptions({ title: getHeaderTitle(route) })
return (
<ChildProvider child={child}>
<TabNavigator initialRouteName={initialRouteName as any} />
<TabNavigator
initialRouteName={initialRouteName as keyof ChildTabParamList}
/>
</ChildProvider>
)
}

View File

@ -3,6 +3,7 @@ import { useNavigation } from '@react-navigation/native'
import { StackNavigationProp } from '@react-navigation/stack'
import {
useCalendar,
useMenu,
useNews,
useNotifications,
useSchedule,
@ -17,11 +18,13 @@ import {
import moment from 'moment'
import React from 'react'
import { TouchableOpacity, View } from 'react-native'
import { Layout, Sizing } from '../styles'
import { Colors, Layout, Sizing } from '../styles'
import { studentName } from '../utils/peopleHelpers'
import { translate } from '../utils/translation'
import { RootStackParamList } from './navigation.component'
import { StudentAvatar } from './studentAvatar.component'
import { DaySummary } from './daySummary.component'
import { AlertIcon, RightArrowIcon } from './icon.component'
interface ChildListItemProps {
child: Child
@ -40,6 +43,7 @@ export const ChildListItem = ({ child, color }: ChildListItemProps) => {
const { data: notifications } = useNotifications(child)
const { data: news } = useNews(child)
const { data: calendar } = useCalendar(child)
const { data: menu } = useMenu(child)
const { data: schedule } = useSchedule(
child,
moment().toISOString(),
@ -108,26 +112,31 @@ export const ChildListItem = ({ child, color }: ChildListItemProps) => {
{className ? <Text category="s1">{className}</Text> : null}
</View>
</View>
<View style={styles.cardHeaderRight}>
<RightArrowIcon
style={styles.icon}
fill={Colors.neutral.gray500}
name="star"
/>
</View>
</View>
<DaySummary child={child} />
{scheduleAndCalendarThisWeek.slice(0, 3).map((calendarItem, i) => (
<Text category="p1" key={i}>
{`${calendarItem.title} (${displayDate(calendarItem.startDate)})`}
</Text>
))}
<Text category="c2" style={styles.label}>
{translate('navigation.news')}
</Text>
{notificationsThisWeek.slice(0, 3).map((notification, i) => (
<Text category="p1" key={i}>
{translate('notifications.notificationTitle', {
message: notification.message,
dateCreated: displayDate(notification.dateCreated),
})}
{notification.message}
</Text>
))}
{newsThisWeek.slice(0, 3).map((newsItem, i) => (
<Text category="p1" key={i}>
{translate('news.notificationTitle', {
header: newsItem.header,
published: displayDate(newsItem.published),
})}
{newsItem.header ?? ''}
</Text>
))}
{scheduleAndCalendarThisWeek.length ||
@ -137,13 +146,24 @@ export const ChildListItem = ({ child, color }: ChildListItemProps) => {
{translate('news.noNewNewsItemsThisWeek')}
</Text>
)}
{!menu[moment().isoWeekday() - 1] ? null : (
<>
<Text category="c2" style={styles.label}>
{translate('schedule.lunch')}
</Text>
<Text>{menu[moment().isoWeekday() - 1]?.description}</Text>
</>
)}
<View style={styles.itemFooterAbsence}>
<Button
accessible
accessibilityRole="button"
accessibilityLabel={`${child.name}, ${translate('abscense.title')}`}
size="small"
status="basic"
appearance="ghost"
accessoryLeft={AlertIcon}
status=""
style={styles.absenceButton}
onPress={() => navigation.navigate('Absence', { child })}
>
{translate('abscense.title')}
@ -170,11 +190,23 @@ const themeStyles = StyleService.create({
cardHeaderLeft: {
...Layout.flex.row,
...Layout.mainAxis.center,
flex: 10,
},
cardHeaderRight: {
...Layout.flex.row,
...Layout.crossAxis.flexEnd,
flex: 1,
},
cardHeaderText: {
marginHorizontal: Sizing.t4,
flex: 1,
flex: 10,
},
icon: {
width: 32,
height: 32,
},
label: {
marginTop: 10,
},
itemFooter: {
...Layout.flex.row,
@ -184,6 +216,9 @@ const themeStyles = StyleService.create({
...Layout.mainAxis.flexStart,
marginTop: Sizing.t4,
},
absenceButton: {
marginLeft: -20,
},
item: {
marginRight: 12,
paddingHorizontal: 2,

View File

@ -33,7 +33,7 @@ export const childenRouteOptions = (): NativeStackNavigationOptions => {
return {
...defaultStackStyling,
title: translate('children.title'),
headerLargeTitle: true,
headerLargeTitle: false,
headerLargeTitleHideShadow: true,
}
}

View File

@ -9,10 +9,10 @@ import { translate } from '../utils/translation'
interface DaySummaryProps {
child: Child
date: Moment
date?: Moment
}
export const DaySummary = ({ child, date }: DaySummaryProps) => {
export const DaySummary = ({ child, date = moment() }: DaySummaryProps) => {
const styles = useStyleSheet(themedStyles)
const [year, week] = [moment().isoWeekYear(), moment().isoWeek()]
const { data: weekLessons } = useTimetable(
@ -26,28 +26,58 @@ export const DaySummary = ({ child, date }: DaySummaryProps) => {
.filter((lesson) => lesson.dayOfWeek === date.isoWeekday())
.sort((a, b) => a.dateStart.localeCompare(b.dateStart))
const gymBag = lessons.some((lesson) => lesson.code === 'IDH')
if (lessons.length <= 0) {
return null
}
const gymBag = lessons.some((lesson) => lesson.code === 'IDH')
return (
<View style={styles.summary}>
<Text category="h5">
{lessons[0].timeStart.slice(0, 5)}-
{lessons[lessons.length - 1].timeEnd.slice(0, 5)}
{gymBag
? ` (🤼‍♀️ ${translate('schedule.gymBag', {
defaultValue: 'Gympapåse',
})})`
: ''}
</Text>
<View style={styles.part}>
<View>
<Text category="c2" style={styles.label}>
{translate('schedule.start')}
</Text>
<Text category="h5">{lessons[0].timeStart.slice(0, 5)} - </Text>
</View>
</View>
<View style={styles.part}>
<View>
<Text category="c2" style={styles.label}>
{translate('schedule.end')}
</Text>
<Text category="h5">
{lessons[lessons.length - 1].timeEnd.slice(0, 5)}
</Text>
</View>
</View>
<View style={styles.part}>
<View>
<Text category="c2" style={styles.label}>
&nbsp;
</Text>
<Text category="s2">
{gymBag
? ` 🤼‍♀️ ${translate('schedule.gymBag', {
defaultValue: 'Gympapåse',
})}`
: ''}
</Text>
</View>
</View>
</View>
)
}
const themedStyles = StyleService.create({
part: {
flexDirection: 'column',
},
summary: {
flexDirection: 'row',
},
label: {
marginTop: 10,
},
})

View File

@ -1,9 +1,8 @@
import { Icon, IconProps } from '@ui-kitten/components'
import React from 'react'
const uiIcon = (name: string) => (props: IconProps) => (
const uiIcon = (name: string) => (props: IconProps) =>
<Icon {...props} name={name} />
)
export const AlertIcon = uiIcon('alert-circle-outline')
export const BackIcon = uiIcon('arrow-back')
@ -29,3 +28,4 @@ export const BookOpenIcon = uiIcon('book-open-outline')
export const GlobeIcon = uiIcon('globe-outline')
export const ExternalLinkIcon = uiIcon('external-link-outline')
export const ClipboardIcon = uiIcon('clipboard-outline')
export const RightArrowIcon = uiIcon('arrow-ios-forward-outline')

View File

@ -76,7 +76,7 @@ export const AppNavigator = () => {
<StatusBar />
<Navigator
screenOptions={() => ({
headerLargeTitle: true,
headerLargeTitle: false,
headerLargeTitleHideShadow: true,
headerStyle: {
backgroundColor: colors['background-basic-color-2'],

View File

@ -28,5 +28,5 @@ const styles = StyleSheet.create({
...fontSize.base,
fontWeight: '500',
},
subtitle: { ...fontSize.xs },
subtitle: { ...fontSize.xxs },
})

View File

@ -9,10 +9,12 @@ import { ScrollView, View } from 'react-native'
import { NativeStackNavigationOptions } from 'react-native-screens/native-stack'
import { defaultStackStyling } from '../design/navigationThemes'
import { Layout, Sizing, Typography } from '../styles'
import { studentName } from '../utils/peopleHelpers'
import { translate } from '../utils/translation'
import { Image } from './image.component'
import { Markdown } from './markdown.component'
import { RootStackParamList } from './navigation.component'
import { NavigationTitle } from './navigationTitle.component'
interface NewsItemProps {
navigation: StackNavigationProp<RootStackParamList, 'NewsItem'>
@ -30,11 +32,16 @@ export const newsItemRouteOptions = ({
route: RouteProp<RootStackParamList, 'NewsItem'>
}): NativeStackNavigationOptions => {
const newsItem = route.params.newsItem
const { child } = route.params
return {
...defaultStackStyling,
title: newsItem.header,
headerLargeTitle: true,
headerCenter: () => (
<NavigationTitle
title={newsItem.header}
subtitle={studentName(child?.name)}
/>
),
headerLargeTitle: false,
}
}

View File

@ -4,8 +4,7 @@ import { NewsItem } from '@skolplattformen/embedded-api'
import { StyleService, useStyleSheet } from '@ui-kitten/components'
import moment from 'moment'
import React, { ReactNode } from 'react'
import { Dimensions, Text, View } from 'react-native'
import { TouchableOpacity } from 'react-native-gesture-handler'
import { Dimensions, Pressable, Text, View } from 'react-native'
import { Layout, Sizing, Typography } from '../styles'
import { useChild } from './childContext.component'
import { Image } from './image.component'
@ -32,7 +31,7 @@ export const NewsListItem = ({ item, children }: NewsListItemProps) => {
const displayDate = hasDate ? moment(hasDate).fromNow() : null
return (
<TouchableOpacity
<Pressable
onPress={() => navigation.navigate('NewsItem', { newsItem: item, child })}
>
<View style={styles.card}>
@ -58,7 +57,7 @@ export const NewsListItem = ({ item, children }: NewsListItemProps) => {
</View>
</View>
</View>
</TouchableOpacity>
</Pressable>
)
}

View File

@ -2,7 +2,7 @@ import { Notification as NotificationType } from '@skolplattformen/embedded-api'
import { StyleService, Text, useStyleSheet } from '@ui-kitten/components'
import moment from 'moment'
import React from 'react'
import { TouchableOpacity, View } from 'react-native'
import { Pressable, View } from 'react-native'
import { Layout, Sizing, Typography } from '../styles'
import { ModalWebView } from './modalWebView.component'
@ -26,7 +26,7 @@ export const Notification = ({ item }: NotificationProps) => {
return (
<>
<TouchableOpacity onPress={open}>
<Pressable onPress={open}>
<View style={styles.card}>
<View>
<Text style={styles.title}>{item.sender}</Text>
@ -38,7 +38,7 @@ export const Notification = ({ item }: NotificationProps) => {
</View>
<Text>{item.message}</Text>
</View>
</TouchableOpacity>
</Pressable>
{isOpen && (
<ModalWebView
url={item.url}

View File

@ -31,9 +31,8 @@ export const SetLanguage = () => {
const currentLanguage = LanguageService.getLanguageCode()
const [selectedLanguage, setSelectedLanguage] = useState<string>(
currentLanguage
)
const [selectedLanguage, setSelectedLanguage] =
useState<string>(currentLanguage)
const { setLanguageCode } = useLanguage()
const shouldRestart = () => {

View File

@ -15,7 +15,6 @@ import React, { useEffect, useState } from 'react'
import { View } from 'react-native'
import { LanguageService } from '../services/languageService'
import { Sizing, Typography } from '../styles'
import { translate } from '../utils/translation'
import { TransitionView } from './transitionView.component'
interface WeekProps {
@ -24,6 +23,7 @@ interface WeekProps {
interface LessonListProps {
lessons: TimetableEntry[]
lunch?: MenuItem
header: string
}
@ -33,7 +33,7 @@ interface DayProps {
lessons: TimetableEntry[]
}
const LessonList = ({ lessons, header }: LessonListProps) => {
const LessonList = ({ lessons, header, lunch }: LessonListProps) => {
const styles = useStyleSheet(themedStyles)
return (
@ -46,23 +46,31 @@ const LessonList = ({ lessons, header }: LessonListProps) => {
</Text>
)}
renderItem={({
item: { id, name, timeStart, timeEnd, teacher, location },
item: { id, code, name, timeStart, timeEnd, teacher, location },
}) => (
<ListItem
key={id}
style={styles.item}
title={() => (
<Text style={styles.lessonTitle} maxFontSizeMultiplier={1}>
{name}
</Text>
<View>
<Text style={styles.lessonTitle} maxFontSizeMultiplier={1}>
{name}
</Text>
</View>
)}
description={() => (
<Text
style={styles.lessonDescription}
maxFontSizeMultiplier={1}
>{`${timeStart.slice(0, 5)}-${timeEnd.slice(0, 5)} ${
location ? `(${location})` : ''
} ${teacher}`}</Text>
<View style={styles.lesson}>
<Text
style={styles.lessonDescription}
maxFontSizeMultiplier={1}
>{`${timeStart.slice(0, 5)}-${timeEnd.slice(
0,
5
)} (${location})`}</Text>
<Text style={styles.lessonDescription} maxFontSizeMultiplier={1}>
{code === 'Lunch' ? lunch?.description : teacher}
</Text>
</View>
)}
/>
)}
@ -78,39 +86,14 @@ export const Day = ({ weekDay, lunch, lessons }: DayProps) => {
}
return (
<View style={styles.tab} key={weekDay}>
<View style={styles.summary}>
<Text maxFontSizeMultiplier={2} category="c1" style={styles.startTime}>
{translate('schedule.start', { defaultValue: 'Börjar' })}
</Text>
<Text maxFontSizeMultiplier={3} category="h4">
{lessons[0].timeStart.slice(0, 5)}
</Text>
<Text category="c1" style={styles.lunchLabel}>
{translate('schedule.lunch', { defaultValue: 'Lunch' })}
</Text>
<Text maxFontSizeMultiplier={2} category="c2" style={styles.lunch}>
{lunch?.description}
</Text>
<Text maxFontSizeMultiplier={3} category="c1" style={styles.endTime}>
{translate('schedule.end', { defaultValue: 'Slutar' })}
</Text>
<Text maxFontSizeMultiplier={2} category="h4">
{lessons[lessons.length - 1].timeEnd.slice(0, 5)}
</Text>
<Text maxFontSizeMultiplier={2} category="c2">
{lessons.some((lesson) => lesson.code === 'IDH')
? `🤼‍♀️ ${translate('schedule.gymBag', {
defaultValue: 'Gympapåse',
})}`
: ''}
</Text>
</View>
<LessonList
header="FM"
lunch={lunch}
lessons={lessons.filter(({ timeStart }) => timeStart < '12:00')}
/>
<LessonList
header="EM"
lunch={lunch}
lessons={lessons.filter(({ timeStart }) => timeStart >= '12:00')}
/>
</View>
@ -185,7 +168,7 @@ const themedStyles = StyleService.create({
padding: 0,
},
item: {
height: 45,
height: 55,
backgroundColor: 'background-basic-color-2',
paddingHorizontal: 0,
borderRadius: 2,
@ -223,7 +206,7 @@ const themedStyles = StyleService.create({
...Typography.fontWeight.bold,
},
header: {
paddingLeft: 8,
paddingLeft: 10,
},
lessonTitle: {
...Typography.fontWeight.semibold,
@ -232,4 +215,7 @@ const themedStyles = StyleService.create({
lessonDescription: {
fontSize: 13,
},
lesson: {
flexDirection: 'column',
},
})

View File

@ -21,23 +21,35 @@
2DCD954D1E0B4F2C00145EB5 /* appTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* appTests.m */; };
417D579C3DC24A9684D24EDD /* Poppins-BlackItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 00FDE4C2522044DAAD866D5F /* Poppins-BlackItalic.ttf */; };
41DE97CF96674977BC052462 /* Poppins-SemiBoldItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = A9CB7679337840D3BD256A13 /* Poppins-SemiBoldItalic.ttf */; };
<<<<<<< HEAD
467D601E14C1D20353B0E359 /* libPods-app-appTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 28F4413964093C3588586E4B /* libPods-app-appTests.a */; };
=======
47BDB18EB778190FE74D4711 /* libPods-app-appTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FD636EC71EB046C8CA3092FC /* libPods-app-appTests.a */; };
4B4CB82443211891C9F102C7 /* libPods-app-tvOSTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DD971982E1DA8A02706ED0DB /* libPods-app-tvOSTests.a */; };
>>>>>>> 15a27e5a7143706c672f33d77cf0ef0d309a22ee
4E01D1C8DD5749C8953D3BE5 /* Poppins-Bold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 661AE05493ED4FE780C32EF6 /* Poppins-Bold.ttf */; };
4F931CB3182F40F580F357FF /* Poppins-ThinItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = E251C7BB03F74441B4357419 /* Poppins-ThinItalic.ttf */; };
50AAEBD19BD24B129801C393 /* Poppins-Italic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 977D264ECA05485EA89A2F13 /* Poppins-Italic.ttf */; };
5257E7B8420740A2862BEEB0 /* Poppins-BoldItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 8E2BDC4163F1467E94E5D34C /* Poppins-BoldItalic.ttf */; };
6D069850985349ABB76BDD0A /* Poppins-Black.ttf in Resources */ = {isa = PBXBuildFile; fileRef = B1A304CF782943E19F93DFD6 /* Poppins-Black.ttf */; };
71436C48CDF348BE904103E9 /* Poppins-Light.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 231B760691854EBCA7ECD80E /* Poppins-Light.ttf */; };
7B3AE70EB6D77BA7B6328B73 /* libPods-app-tvOSTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6CD2C4F5EEF833715B357730 /* libPods-app-tvOSTests.a */; };
7B94D8768C6340958F2EEFFD /* Poppins-ExtraLight.ttf in Resources */ = {isa = PBXBuildFile; fileRef = C9AC377D6B7744ECBBEA0A8A /* Poppins-ExtraLight.ttf */; };
81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; };
836E1F3164D8497F8C51847A /* Poppins-LightItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7CEBAD12E8E5471AA962262A /* Poppins-LightItalic.ttf */; };
8F8E6DB2A0AB4DF3A5ED51E7 /* Poppins-SemiBold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 920F53F06E0B433DB798AC45 /* Poppins-SemiBold.ttf */; };
9BB2301820933CB162183656 /* libPods-app-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9899046DFCE4CA5E2101CBE0 /* libPods-app-tvOS.a */; };
9FA2A398A0264369AD50123F /* Poppins-ExtraBoldItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 9F1539AF1544412D9662D264 /* Poppins-ExtraBoldItalic.ttf */; };
9FC2C87C76F74B609BA3709E /* Poppins-ExtraLightItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 9420B3EA5C884AFFADCAFB4C /* Poppins-ExtraLightItalic.ttf */; };
<<<<<<< HEAD
AC5E863985C04D72B5806B58 /* Poppins-Thin.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 02B78F6C72354B2D8171239D /* Poppins-Thin.ttf */; };
BB34E03413EB4CDFA59766B1 /* Poppins-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = EB6EB5293E4C48098CBD53C2 /* Poppins-Regular.ttf */; };
F519E219289BEDEDEA9E3B95 /* libPods-app.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4CFC1EE9CE77CFD3DE61BBFE /* libPods-app.a */; };
=======
A4BF559C3C24B81BCBBC0C43 /* libPods-app-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 107C1F5266AD5BE6840522FD /* libPods-app-tvOS.a */; };
AC5E863985C04D72B5806B58 /* Poppins-Thin.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 02B78F6C72354B2D8171239D /* Poppins-Thin.ttf */; };
BB34E03413EB4CDFA59766B1 /* Poppins-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = EB6EB5293E4C48098CBD53C2 /* Poppins-Regular.ttf */; };
>>>>>>> 15a27e5a7143706c672f33d77cf0ef0d309a22ee
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@ -62,15 +74,53 @@
00E356EE1AD99517003FC87E /* appTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = appTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
00E356F21AD99517003FC87E /* appTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = appTests.m; sourceTree = "<group>"; };
<<<<<<< HEAD
00FDE4C2522044DAAD866D5F /* Poppins-BlackItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Poppins-BlackItalic.ttf"; path = "../assets/fonts/Poppins-BlackItalic.ttf"; sourceTree = "<group>"; };
02B78F6C72354B2D8171239D /* Poppins-Thin.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Poppins-Thin.ttf"; path = "../assets/fonts/Poppins-Thin.ttf"; sourceTree = "<group>"; };
0668F5F97ABB0B90C666286A /* Pods-app-tvOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-app-tvOS.debug.xcconfig"; path = "Target Support Files/Pods-app-tvOS/Pods-app-tvOS.debug.xcconfig"; sourceTree = "<group>"; };
=======
00FDE4C2522044DAAD866D5F /* Poppins-BlackItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Poppins-BlackItalic.ttf"; path = "../assets/fonts/Poppins-BlackItalic.ttf"; sourceTree = "<group>"; };
02B78F6C72354B2D8171239D /* Poppins-Thin.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Poppins-Thin.ttf"; path = "../assets/fonts/Poppins-Thin.ttf"; sourceTree = "<group>"; };
107C1F5266AD5BE6840522FD /* libPods-app-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-app-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; };
>>>>>>> 15a27e5a7143706c672f33d77cf0ef0d309a22ee
13B07F961A680F5B00A75B9A /* app.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = app.app; sourceTree = BUILT_PRODUCTS_DIR; };
13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = app/AppDelegate.h; sourceTree = "<group>"; };
13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = app/AppDelegate.m; sourceTree = "<group>"; };
13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = app/Images.xcassets; sourceTree = "<group>"; };
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = app/Info.plist; sourceTree = "<group>"; };
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = app/main.m; sourceTree = "<group>"; };
<<<<<<< HEAD
231B760691854EBCA7ECD80E /* Poppins-Light.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Poppins-Light.ttf"; path = "../assets/fonts/Poppins-Light.ttf"; sourceTree = "<group>"; };
28A7638D2A4F8DB18E405DF8 /* Pods-app.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-app.release.xcconfig"; path = "Target Support Files/Pods-app/Pods-app.release.xcconfig"; sourceTree = "<group>"; };
28F4413964093C3588586E4B /* libPods-app-appTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-app-appTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
2D02E47B1E0B4A5D006451C7 /* app-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "app-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; };
2D02E4901E0B4A5D006451C7 /* app-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "app-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
39860E8D652FC0F60C40DA4E /* Pods-app.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-app.debug.xcconfig"; path = "Target Support Files/Pods-app/Pods-app.debug.xcconfig"; sourceTree = "<group>"; };
3CBFE8DBE8994C1FAF939519 /* Poppins-MediumItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Poppins-MediumItalic.ttf"; path = "../assets/fonts/Poppins-MediumItalic.ttf"; sourceTree = "<group>"; };
4CFC1EE9CE77CFD3DE61BBFE /* libPods-app.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-app.a"; sourceTree = BUILT_PRODUCTS_DIR; };
661AE05493ED4FE780C32EF6 /* Poppins-Bold.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Poppins-Bold.ttf"; path = "../assets/fonts/Poppins-Bold.ttf"; sourceTree = "<group>"; };
6A7EDD883BA30EB3E77BA661 /* Pods-app-appTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-app-appTests.release.xcconfig"; path = "Target Support Files/Pods-app-appTests/Pods-app-appTests.release.xcconfig"; sourceTree = "<group>"; };
6CD2C4F5EEF833715B357730 /* libPods-app-tvOSTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-app-tvOSTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
7AF5677EA52D44EE97668E7A /* Poppins-Medium.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Poppins-Medium.ttf"; path = "../assets/fonts/Poppins-Medium.ttf"; sourceTree = "<group>"; };
7CEBAD12E8E5471AA962262A /* Poppins-LightItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Poppins-LightItalic.ttf"; path = "../assets/fonts/Poppins-LightItalic.ttf"; sourceTree = "<group>"; };
81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = app/LaunchScreen.storyboard; sourceTree = "<group>"; };
8E2BDC4163F1467E94E5D34C /* Poppins-BoldItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Poppins-BoldItalic.ttf"; path = "../assets/fonts/Poppins-BoldItalic.ttf"; sourceTree = "<group>"; };
920F53F06E0B433DB798AC45 /* Poppins-SemiBold.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Poppins-SemiBold.ttf"; path = "../assets/fonts/Poppins-SemiBold.ttf"; sourceTree = "<group>"; };
9420B3EA5C884AFFADCAFB4C /* Poppins-ExtraLightItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Poppins-ExtraLightItalic.ttf"; path = "../assets/fonts/Poppins-ExtraLightItalic.ttf"; sourceTree = "<group>"; };
977D264ECA05485EA89A2F13 /* Poppins-Italic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Poppins-Italic.ttf"; path = "../assets/fonts/Poppins-Italic.ttf"; sourceTree = "<group>"; };
9899046DFCE4CA5E2101CBE0 /* libPods-app-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-app-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; };
9A9C27037F0F4AF2A4CBAE78 /* Poppins-ExtraBold.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Poppins-ExtraBold.ttf"; path = "../assets/fonts/Poppins-ExtraBold.ttf"; sourceTree = "<group>"; };
9F1539AF1544412D9662D264 /* Poppins-ExtraBoldItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Poppins-ExtraBoldItalic.ttf"; path = "../assets/fonts/Poppins-ExtraBoldItalic.ttf"; sourceTree = "<group>"; };
A9CB7679337840D3BD256A13 /* Poppins-SemiBoldItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Poppins-SemiBoldItalic.ttf"; path = "../assets/fonts/Poppins-SemiBoldItalic.ttf"; sourceTree = "<group>"; };
B1A304CF782943E19F93DFD6 /* Poppins-Black.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Poppins-Black.ttf"; path = "../assets/fonts/Poppins-Black.ttf"; sourceTree = "<group>"; };
B6E0D620E14A79C76BEEE7B0 /* Pods-app-appTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-app-appTests.debug.xcconfig"; path = "Target Support Files/Pods-app-appTests/Pods-app-appTests.debug.xcconfig"; sourceTree = "<group>"; };
C9AC377D6B7744ECBBEA0A8A /* Poppins-ExtraLight.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Poppins-ExtraLight.ttf"; path = "../assets/fonts/Poppins-ExtraLight.ttf"; sourceTree = "<group>"; };
CEA926A3EC369BA705616454 /* Pods-app-tvOSTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-app-tvOSTests.release.xcconfig"; path = "Target Support Files/Pods-app-tvOSTests/Pods-app-tvOSTests.release.xcconfig"; sourceTree = "<group>"; };
CF8CACB29D1B5EA56F49A758 /* Pods-app-tvOSTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-app-tvOSTests.debug.xcconfig"; path = "Target Support Files/Pods-app-tvOSTests/Pods-app-tvOSTests.debug.xcconfig"; sourceTree = "<group>"; };
DB5D08EF48EFB3984BD34C97 /* Pods-app-tvOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-app-tvOS.release.xcconfig"; path = "Target Support Files/Pods-app-tvOS/Pods-app-tvOS.release.xcconfig"; sourceTree = "<group>"; };
E251C7BB03F74441B4357419 /* Poppins-ThinItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Poppins-ThinItalic.ttf"; path = "../assets/fonts/Poppins-ThinItalic.ttf"; sourceTree = "<group>"; };
EB6EB5293E4C48098CBD53C2 /* Poppins-Regular.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Poppins-Regular.ttf"; path = "../assets/fonts/Poppins-Regular.ttf"; sourceTree = "<group>"; };
=======
231B760691854EBCA7ECD80E /* Poppins-Light.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Poppins-Light.ttf"; path = "../assets/fonts/Poppins-Light.ttf"; sourceTree = "<group>"; };
280FE376BA9F68A835942339 /* Pods-app.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-app.release.xcconfig"; path = "Target Support Files/Pods-app/Pods-app.release.xcconfig"; sourceTree = "<group>"; };
2D02E47B1E0B4A5D006451C7 /* app-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "app-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; };
@ -100,6 +150,7 @@
DD971982E1DA8A02706ED0DB /* libPods-app-tvOSTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-app-tvOSTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
E251C7BB03F74441B4357419 /* Poppins-ThinItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Poppins-ThinItalic.ttf"; path = "../assets/fonts/Poppins-ThinItalic.ttf"; sourceTree = "<group>"; };
EB6EB5293E4C48098CBD53C2 /* Poppins-Regular.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Poppins-Regular.ttf"; path = "../assets/fonts/Poppins-Regular.ttf"; sourceTree = "<group>"; };
>>>>>>> 15a27e5a7143706c672f33d77cf0ef0d309a22ee
ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
ED2971642150620600B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.0.sdk/System/Library/Frameworks/JavaScriptCore.framework; sourceTree = DEVELOPER_DIR; };
FD636EC71EB046C8CA3092FC /* libPods-app-appTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-app-appTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
@ -110,7 +161,11 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
<<<<<<< HEAD
467D601E14C1D20353B0E359 /* libPods-app-appTests.a in Frameworks */,
=======
47BDB18EB778190FE74D4711 /* libPods-app-appTests.a in Frameworks */,
>>>>>>> 15a27e5a7143706c672f33d77cf0ef0d309a22ee
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -118,7 +173,11 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
<<<<<<< HEAD
F519E219289BEDEDEA9E3B95 /* libPods-app.a in Frameworks */,
=======
143FF66AE1AD70EFD06AC8AF /* libPods-app.a in Frameworks */,
>>>>>>> 15a27e5a7143706c672f33d77cf0ef0d309a22ee
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -126,7 +185,11 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
<<<<<<< HEAD
9BB2301820933CB162183656 /* libPods-app-tvOS.a in Frameworks */,
=======
A4BF559C3C24B81BCBBC0C43 /* libPods-app-tvOS.a in Frameworks */,
>>>>>>> 15a27e5a7143706c672f33d77cf0ef0d309a22ee
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -134,7 +197,11 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
<<<<<<< HEAD
7B3AE70EB6D77BA7B6328B73 /* libPods-app-tvOSTests.a in Frameworks */,
=======
4B4CB82443211891C9F102C7 /* libPods-app-tvOSTests.a in Frameworks */,
>>>>>>> 15a27e5a7143706c672f33d77cf0ef0d309a22ee
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -177,10 +244,17 @@
children = (
ED297162215061F000B7C4FE /* JavaScriptCore.framework */,
ED2971642150620600B7C4FE /* JavaScriptCore.framework */,
<<<<<<< HEAD
4CFC1EE9CE77CFD3DE61BBFE /* libPods-app.a */,
28F4413964093C3588586E4B /* libPods-app-appTests.a */,
9899046DFCE4CA5E2101CBE0 /* libPods-app-tvOS.a */,
6CD2C4F5EEF833715B357730 /* libPods-app-tvOSTests.a */,
=======
649626B23769045AA20DEA4B /* libPods-app.a */,
FD636EC71EB046C8CA3092FC /* libPods-app-appTests.a */,
107C1F5266AD5BE6840522FD /* libPods-app-tvOS.a */,
DD971982E1DA8A02706ED0DB /* libPods-app-tvOSTests.a */,
>>>>>>> 15a27e5a7143706c672f33d77cf0ef0d309a22ee
);
name = Frameworks;
sourceTree = "<group>";
@ -188,6 +262,16 @@
678C13018B6095451BF5FE91 /* Pods */ = {
isa = PBXGroup;
children = (
<<<<<<< HEAD
39860E8D652FC0F60C40DA4E /* Pods-app.debug.xcconfig */,
28A7638D2A4F8DB18E405DF8 /* Pods-app.release.xcconfig */,
B6E0D620E14A79C76BEEE7B0 /* Pods-app-appTests.debug.xcconfig */,
6A7EDD883BA30EB3E77BA661 /* Pods-app-appTests.release.xcconfig */,
0668F5F97ABB0B90C666286A /* Pods-app-tvOS.debug.xcconfig */,
DB5D08EF48EFB3984BD34C97 /* Pods-app-tvOS.release.xcconfig */,
CF8CACB29D1B5EA56F49A758 /* Pods-app-tvOSTests.debug.xcconfig */,
CEA926A3EC369BA705616454 /* Pods-app-tvOSTests.release.xcconfig */,
=======
ABBB8754EE361CB0204F582C /* Pods-app.debug.xcconfig */,
280FE376BA9F68A835942339 /* Pods-app.release.xcconfig */,
7C857A37CA77892FBE4CBCB4 /* Pods-app-appTests.debug.xcconfig */,
@ -196,6 +280,7 @@
CF4C3955B9AD96EFCFD90FF4 /* Pods-app-tvOS.release.xcconfig */,
78354E27627CAB6650C6B533 /* Pods-app-tvOSTests.debug.xcconfig */,
B7D610CEAB7656E9EF5F11F8 /* Pods-app-tvOSTests.release.xcconfig */,
>>>>>>> 15a27e5a7143706c672f33d77cf0ef0d309a22ee
);
path = Pods;
sourceTree = "<group>";
@ -266,12 +351,21 @@
isa = PBXNativeTarget;
buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "appTests" */;
buildPhases = (
<<<<<<< HEAD
15FC8B1F8DFC7AB53C0EF515 /* [CP] Check Pods Manifest.lock */,
00E356EA1AD99517003FC87E /* Sources */,
00E356EB1AD99517003FC87E /* Frameworks */,
00E356EC1AD99517003FC87E /* Resources */,
4667C4320F34031720797F3C /* [CP] Embed Pods Frameworks */,
1303A35A8DA2C129B4A23206 /* [CP] Copy Pods Resources */,
=======
9BEAF09BF368870D3BB29E38 /* [CP] Check Pods Manifest.lock */,
00E356EA1AD99517003FC87E /* Sources */,
00E356EB1AD99517003FC87E /* Frameworks */,
00E356EC1AD99517003FC87E /* Resources */,
7AEB38910E2F1F4FA88EE94D /* [CP] Embed Pods Frameworks */,
5DD7CD1D56DCD6B3E5B1A9CE /* [CP] Copy Pods Resources */,
>>>>>>> 15a27e5a7143706c672f33d77cf0ef0d309a22ee
);
buildRules = (
);
@ -287,14 +381,23 @@
isa = PBXNativeTarget;
buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "app" */;
buildPhases = (
<<<<<<< HEAD
9D29BE040AF7360F45D8F001 /* [CP] Check Pods Manifest.lock */,
=======
56D66DD8C93796E7A3323F8C /* [CP] Check Pods Manifest.lock */,
>>>>>>> 15a27e5a7143706c672f33d77cf0ef0d309a22ee
FD10A7F022414F080027D42C /* Start Packager */,
13B07F871A680F5B00A75B9A /* Sources */,
13B07F8C1A680F5B00A75B9A /* Frameworks */,
13B07F8E1A680F5B00A75B9A /* Resources */,
00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
<<<<<<< HEAD
85710E966BCE235165F09B27 /* [CP] Embed Pods Frameworks */,
E66B18CD904BC57656D86881 /* [CP] Copy Pods Resources */,
=======
EA6BA965CC0D35699B0303AC /* [CP] Embed Pods Frameworks */,
1AF25533702B867240211810 /* [CP] Copy Pods Resources */,
>>>>>>> 15a27e5a7143706c672f33d77cf0ef0d309a22ee
);
buildRules = (
);
@ -309,7 +412,11 @@
isa = PBXNativeTarget;
buildConfigurationList = 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "app-tvOS" */;
buildPhases = (
<<<<<<< HEAD
91C2B75DF4E11DA4A4EAF855 /* [CP] Check Pods Manifest.lock */,
=======
3FBB5CCBE77389243E830A24 /* [CP] Check Pods Manifest.lock */,
>>>>>>> 15a27e5a7143706c672f33d77cf0ef0d309a22ee
FD10A7F122414F3F0027D42C /* Start Packager */,
2D02E4771E0B4A5D006451C7 /* Sources */,
2D02E4781E0B4A5D006451C7 /* Frameworks */,
@ -329,7 +436,11 @@
isa = PBXNativeTarget;
buildConfigurationList = 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "app-tvOSTests" */;
buildPhases = (
<<<<<<< HEAD
B2F9836D8AFDD83F0C8689F6 /* [CP] Check Pods Manifest.lock */,
=======
C64D066F4E7C024DDB16BE45 /* [CP] Check Pods Manifest.lock */,
>>>>>>> 15a27e5a7143706c672f33d77cf0ef0d309a22ee
2D02E48C1E0B4A5D006451C7 /* Sources */,
2D02E48D1E0B4A5D006451C7 /* Frameworks */,
2D02E48E1E0B4A5D006451C7 /* Resources */,
@ -464,7 +575,29 @@
shellPath = /bin/sh;
shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh";
};
<<<<<<< HEAD
1303A35A8DA2C129B4A23206 /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${PODS_ROOT}/Target Support Files/Pods-app-appTests/Pods-app-appTests-resources.sh",
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle",
);
name = "[CP] Copy Pods Resources";
outputPaths = (
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-app-appTests/Pods-app-appTests-resources.sh\"\n";
showEnvVarsInLog = 0;
};
15FC8B1F8DFC7AB53C0EF515 /* [CP] Check Pods Manifest.lock */ = {
=======
1AF25533702B867240211810 /* [CP] Copy Pods Resources */ = {
>>>>>>> 15a27e5a7143706c672f33d77cf0ef0d309a22ee
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
@ -475,7 +608,11 @@
);
name = "[CP] Copy Pods Resources";
outputPaths = (
<<<<<<< HEAD
"$(DERIVED_FILE_DIR)/Pods-app-appTests-checkManifestLockResult.txt",
=======
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle",
>>>>>>> 15a27e5a7143706c672f33d77cf0ef0d309a22ee
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
@ -496,7 +633,11 @@
shellPath = /bin/sh;
shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh";
};
<<<<<<< HEAD
4667C4320F34031720797F3C /* [CP] Embed Pods Frameworks */ = {
=======
3FBB5CCBE77389243E830A24 /* [CP] Check Pods Manifest.lock */ = {
>>>>>>> 15a27e5a7143706c672f33d77cf0ef0d309a22ee
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
@ -504,6 +645,23 @@
inputFileListPaths = (
);
inputPaths = (
<<<<<<< HEAD
"${PODS_ROOT}/Target Support Files/Pods-app-appTests/Pods-app-appTests-frameworks.sh",
"${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/iphoneos/hermes.framework",
"${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL/OpenSSL.framework/OpenSSL",
);
name = "[CP] Embed Pods Frameworks";
outputPaths = (
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OpenSSL.framework",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-app-appTests/Pods-app-appTests-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
85710E966BCE235165F09B27 /* [CP] Embed Pods Frameworks */ = {
=======
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
@ -519,6 +677,7 @@
showEnvVarsInLog = 0;
};
56D66DD8C93796E7A3323F8C /* [CP] Check Pods Manifest.lock */ = {
>>>>>>> 15a27e5a7143706c672f33d77cf0ef0d309a22ee
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
@ -526,21 +685,34 @@
inputFileListPaths = (
);
inputPaths = (
<<<<<<< HEAD
"${PODS_ROOT}/Target Support Files/Pods-app/Pods-app-frameworks.sh",
"${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/iphoneos/hermes.framework",
"${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL/OpenSSL.framework/OpenSSL",
=======
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
>>>>>>> 15a27e5a7143706c672f33d77cf0ef0d309a22ee
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-app-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
<<<<<<< HEAD
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-app/Pods-app-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
91C2B75DF4E11DA4A4EAF855 /* [CP] Check Pods Manifest.lock */ = {
=======
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
5DD7CD1D56DCD6B3E5B1A9CE /* [CP] Copy Pods Resources */ = {
>>>>>>> 15a27e5a7143706c672f33d77cf0ef0d309a22ee
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
@ -551,13 +723,20 @@
);
name = "[CP] Copy Pods Resources";
outputPaths = (
<<<<<<< HEAD
"$(DERIVED_FILE_DIR)/Pods-app-tvOS-checkManifestLockResult.txt",
=======
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle",
>>>>>>> 15a27e5a7143706c672f33d77cf0ef0d309a22ee
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-app-appTests/Pods-app-appTests-resources.sh\"\n";
showEnvVarsInLog = 0;
};
<<<<<<< HEAD
9D29BE040AF7360F45D8F001 /* [CP] Check Pods Manifest.lock */ = {
=======
7AEB38910E2F1F4FA88EE94D /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
@ -579,6 +758,7 @@
showEnvVarsInLog = 0;
};
9BEAF09BF368870D3BB29E38 /* [CP] Check Pods Manifest.lock */ = {
>>>>>>> 15a27e5a7143706c672f33d77cf0ef0d309a22ee
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
@ -593,14 +773,22 @@
outputFileListPaths = (
);
outputPaths = (
<<<<<<< HEAD
"$(DERIVED_FILE_DIR)/Pods-app-checkManifestLockResult.txt",
=======
"$(DERIVED_FILE_DIR)/Pods-app-appTests-checkManifestLockResult.txt",
>>>>>>> 15a27e5a7143706c672f33d77cf0ef0d309a22ee
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
<<<<<<< HEAD
B2F9836D8AFDD83F0C8689F6 /* [CP] Check Pods Manifest.lock */ = {
=======
C64D066F4E7C024DDB16BE45 /* [CP] Check Pods Manifest.lock */ = {
>>>>>>> 15a27e5a7143706c672f33d77cf0ef0d309a22ee
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
@ -622,7 +810,11 @@
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
<<<<<<< HEAD
E66B18CD904BC57656D86881 /* [CP] Copy Pods Resources */ = {
=======
EA6BA965CC0D35699B0303AC /* [CP] Embed Pods Frameworks */ = {
>>>>>>> 15a27e5a7143706c672f33d77cf0ef0d309a22ee
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
@ -735,7 +927,11 @@
/* Begin XCBuildConfiguration section */
00E356F61AD99517003FC87E /* Debug */ = {
isa = XCBuildConfiguration;
<<<<<<< HEAD
baseConfigurationReference = B6E0D620E14A79C76BEEE7B0 /* Pods-app-appTests.debug.xcconfig */;
=======
baseConfigurationReference = 7C857A37CA77892FBE4CBCB4 /* Pods-app-appTests.debug.xcconfig */;
>>>>>>> 15a27e5a7143706c672f33d77cf0ef0d309a22ee
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
GCC_PREPROCESSOR_DEFINITIONS = (
@ -758,7 +954,11 @@
};
00E356F71AD99517003FC87E /* Release */ = {
isa = XCBuildConfiguration;
<<<<<<< HEAD
baseConfigurationReference = 6A7EDD883BA30EB3E77BA661 /* Pods-app-appTests.release.xcconfig */;
=======
baseConfigurationReference = 5D7CFBD33492245E6092DA58 /* Pods-app-appTests.release.xcconfig */;
>>>>>>> 15a27e5a7143706c672f33d77cf0ef0d309a22ee
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
COPY_PHASE_STRIP = NO;
@ -778,7 +978,11 @@
};
13B07F941A680F5B00A75B9A /* Debug */ = {
isa = XCBuildConfiguration;
<<<<<<< HEAD
baseConfigurationReference = 39860E8D652FC0F60C40DA4E /* Pods-app.debug.xcconfig */;
=======
baseConfigurationReference = ABBB8754EE361CB0204F582C /* Pods-app.debug.xcconfig */;
>>>>>>> 15a27e5a7143706c672f33d77cf0ef0d309a22ee
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
@ -807,7 +1011,11 @@
};
13B07F951A680F5B00A75B9A /* Release */ = {
isa = XCBuildConfiguration;
<<<<<<< HEAD
baseConfigurationReference = 28A7638D2A4F8DB18E405DF8 /* Pods-app.release.xcconfig */;
=======
baseConfigurationReference = 280FE376BA9F68A835942339 /* Pods-app.release.xcconfig */;
>>>>>>> 15a27e5a7143706c672f33d77cf0ef0d309a22ee
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
@ -834,7 +1042,11 @@
};
2D02E4971E0B4A5E006451C7 /* Debug */ = {
isa = XCBuildConfiguration;
<<<<<<< HEAD
baseConfigurationReference = 0668F5F97ABB0B90C666286A /* Pods-app-tvOS.debug.xcconfig */;
=======
baseConfigurationReference = BFAE0434A1EC7279E958CD5B /* Pods-app-tvOS.debug.xcconfig */;
>>>>>>> 15a27e5a7143706c672f33d77cf0ef0d309a22ee
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image";
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
@ -862,7 +1074,11 @@
};
2D02E4981E0B4A5E006451C7 /* Release */ = {
isa = XCBuildConfiguration;
<<<<<<< HEAD
baseConfigurationReference = DB5D08EF48EFB3984BD34C97 /* Pods-app-tvOS.release.xcconfig */;
=======
baseConfigurationReference = CF4C3955B9AD96EFCFD90FF4 /* Pods-app-tvOS.release.xcconfig */;
>>>>>>> 15a27e5a7143706c672f33d77cf0ef0d309a22ee
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image";
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
@ -890,7 +1106,11 @@
};
2D02E4991E0B4A5E006451C7 /* Debug */ = {
isa = XCBuildConfiguration;
<<<<<<< HEAD
baseConfigurationReference = CF8CACB29D1B5EA56F49A758 /* Pods-app-tvOSTests.debug.xcconfig */;
=======
baseConfigurationReference = 78354E27627CAB6650C6B533 /* Pods-app-tvOSTests.debug.xcconfig */;
>>>>>>> 15a27e5a7143706c672f33d77cf0ef0d309a22ee
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CLANG_ANALYZER_NONNULL = YES;
@ -917,7 +1137,11 @@
};
2D02E49A1E0B4A5E006451C7 /* Release */ = {
isa = XCBuildConfiguration;
<<<<<<< HEAD
baseConfigurationReference = CEA926A3EC369BA705616454 /* Pods-app-tvOSTests.release.xcconfig */;
=======
baseConfigurationReference = B7D610CEAB7656E9EF5F11F8 /* Pods-app-tvOSTests.release.xcconfig */;
>>>>>>> 15a27e5a7143706c672f33d77cf0ef0d309a22ee
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CLANG_ANALYZER_NONNULL = YES;

View File

@ -26,7 +26,7 @@
"@react-navigation/native": "5.9.4",
"@react-navigation/stack": "5.14.4",
"@skolplattformen/api-hooks": "3.0.0",
"@skolplattformen/curriculum": "1.4.0",
"@skolplattformen/curriculum": "1.4.1",
"@skolplattformen/embedded-api": "5.1.4",
"@ui-kitten/components": "5.0.0",
"@ui-kitten/eva-icons": "5.0.0",

View File

@ -1,6 +1,7 @@
import { ViewStyle } from 'react-native'
type MainAxis = 'center' | 'flexStart'
type MainAxis = 'center' | 'flexStart' | 'flexEnd'
// @ts-expect-error Fix later
export const mainAxis: Record<MainAxis, ViewStyle> = {
center: {
alignItems: 'center',

View File

@ -1,8 +1,11 @@
import { TextStyle } from 'react-native'
import { systemWeights } from 'react-native-typography'
type FontSize = 'xs' | 'sm' | 'base' | 'lg' | 'xl'
type FontSize = 'xxs' | 'xs' | 'sm' | 'base' | 'lg' | 'xl'
export const fontSize: Record<FontSize, TextStyle> = {
xxs: {
fontSize: 8,
},
xs: {
fontSize: 12,
},

View File

@ -75,7 +75,7 @@
"send": "Senden",
"settings": "Einstellungen",
"socialSecurityNumber": "Personenkennziffer",
"title": "Offene Skolplattformen",
"title": "Öppna skolplattformen",
"cancel": "Abbrechen"
},
"language": {

View File

@ -76,7 +76,7 @@
"send": "Send",
"settings": "Settings",
"socialSecurityNumber": "Personal identity number",
"title": "Open Skolplattformen"
"title": "Öppna skolplattformen"
},
"language": {
"changeLanguage": "Change language",

View File

@ -57,7 +57,7 @@
"changeLanguage": "Vaihda kieltä"
},
"general": {
"title": "Avaa Skolplattformen",
"title": "Öppna skolplattformen",
"socialSecurityNumber": "Henkilötunnus",
"settings": "Asetukset",
"send": "Lähetä",

View File

@ -1,7 +1,7 @@
{
"general": {
"loading": "Chargement…",
"title": "Ouvrez skolplattformen",
"title": "Öppna skolplattformen",
"socialSecurityNumber": "Numéro d'identité personnel",
"settings": "Paramètres",
"send": "Envoyer",

View File

@ -96,7 +96,7 @@
"changeLanguage": "Linguam permutare"
},
"general": {
"title": "Apertus Skolplattformen",
"title": "Öppna skolplattformen",
"socialSecurityNumber": "Numerus personalis",
"settings": "Configurationes",
"send": "Mittere",

View File

@ -54,7 +54,7 @@
"general": {
"loading": "Laster inn …",
"logout": "Logg ut",
"title": "Åpne skolplattformen",
"title": "Öppna skolplattformen",
"socialSecurityNumber": "Personnummer",
"confirm": "Bekreft",
"changeLanguage": "Endre språk",

View File

@ -1,4 +1,4 @@
# How to help out with translating Öppna Skolplattformen using Weblate
# How to help out with translating Öppna skolplattformen using Weblate
We are using Weblate to translate our app. You can find the project [here](https://hosted.weblate.org/projects/skolplattformen/app-translation/).

View File

@ -18,7 +18,7 @@
"auth": {
"bankid": {
"OpenManually": "Öppna BankID manuellt",
"OpenOnAnotherDevice": "Öppna BankID på en annan enhet",
"OpenOnAnotherDevice": "Öppna BankID på annan enhet",
"OpenOnThisDevice": "Logga in med BankID",
"Waiting": "Väntar på BankID…"
},

File diff suppressed because it is too large Load Diff