fix: 🐛 merge
This commit is contained in:
commit
d26fd62e5c
|
@ -1,45 +1,45 @@
|
|||
# name: Release
|
||||
name: Release
|
||||
|
||||
# on:
|
||||
# push:
|
||||
# branches:
|
||||
# - main
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
|
||||
# jobs:
|
||||
# build:
|
||||
jobs:
|
||||
build:
|
||||
|
||||
# runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
# steps:
|
||||
# - name: Checkout code
|
||||
# uses: actions/checkout@v2
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v2
|
||||
|
||||
# - name: Setup Node
|
||||
# uses: actions/setup-node@v1
|
||||
# with:
|
||||
# node-version: '14.17.6'
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: '14.17.6'
|
||||
|
||||
# - name: Setup timezone
|
||||
# uses: zcong1993/setup-timezone@master
|
||||
# with:
|
||||
# timezone: Europe/Stockholm
|
||||
- name: Setup timezone
|
||||
uses: zcong1993/setup-timezone@master
|
||||
with:
|
||||
timezone: Europe/Stockholm
|
||||
|
||||
# - name: Install dependencies
|
||||
# run: npx lerna bootstrap
|
||||
- name: Install dependencies
|
||||
run: yarn
|
||||
|
||||
# - name: Run linting and tests
|
||||
# run: |
|
||||
# yarn lint
|
||||
# yarn test
|
||||
# env:
|
||||
# CI: true
|
||||
- name: Run linting and tests
|
||||
run: |
|
||||
yarn lint
|
||||
yarn test
|
||||
env:
|
||||
CI: true
|
||||
|
||||
# - name: Create release using semantic-release
|
||||
# uses: cycjimmy/semantic-release-action@v2
|
||||
# with:
|
||||
# semantic_version: 17.1.1
|
||||
# extra_plugins: |
|
||||
# @semantic-release/changelog@5.0.1
|
||||
# @semantic-release/git@9.0
|
||||
# env:
|
||||
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Create release using semantic-release
|
||||
uses: cycjimmy/semantic-release-action@v2
|
||||
with:
|
||||
semantic_version: 17.1.1
|
||||
extra_plugins: |
|
||||
@semantic-release/changelog@5.0.1
|
||||
@semantic-release/git@9.0
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
|
46
CHANGELOG.md
46
CHANGELOG.md
|
@ -1,3 +1,49 @@
|
|||
## [2.2.1](https://github.com/kolplattformen/skolplattformen/compare/v2.2.0...v2.2.1) (2021-11-23)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* 🐛 spelling of chinese traditional in chinese traditional ([a28fd97](https://github.com/kolplattformen/skolplattformen/commit/a28fd97fe7907a591dc92f5ddeccf1045b4f794b))
|
||||
|
||||
# [2.2.0](https://github.com/kolplattformen/skolplattformen/compare/v2.1.0...v2.2.0) (2021-11-23)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* 🐛 Add languages to curriculum config ([b9302f9](https://github.com/kolplattformen/skolplattformen/commit/b9302f96faaf71c797ec335018d9952e26e9d267))
|
||||
* 🐛 Clarify who's personal identity number to enter ([5028a85](https://github.com/kolplattformen/skolplattformen/commit/5028a85824f4d73ab8007caaeca32a439f4f360e)), closes [#526](https://github.com/kolplattformen/skolplattformen/issues/526)
|
||||
* 🐛 fix crash when moment locale and language code differ ([623bf48](https://github.com/kolplattformen/skolplattformen/commit/623bf483b52a54a6199e6607248b948b775b6e7b))
|
||||
* 🐛 Fixes crash when body od newItem is empty ([3e0fd14](https://github.com/kolplattformen/skolplattformen/commit/3e0fd1474a719382627270a1305110692f9ff99b))
|
||||
* 🐛 Fixes failing tests (added skip), fixes lint + test ([d71c106](https://github.com/kolplattformen/skolplattformen/commit/d71c10607f6a4b89b582b81258fc9c0fc20bf2a8))
|
||||
* 🐛 Fixes merge with main ([c54f2ff](https://github.com/kolplattformen/skolplattformen/commit/c54f2ffd05589ffbebba5e50b9aef4649bfa9b58))
|
||||
* 🐛 Fixes tests ([d451cf1](https://github.com/kolplattformen/skolplattformen/commit/d451cf13afbf5e4d1fca43c45d3938d11503d394))
|
||||
* 🐛 Upgraded async-storage from 1.5.2 to 1.5.9 ([0cd72f5](https://github.com/kolplattformen/skolplattformen/commit/0cd72f5d84bd76b846d99ac7995eba3bec154866))
|
||||
* add missing package references ([d41e2e3](https://github.com/kolplattformen/skolplattformen/commit/d41e2e3efe278415f3afc462b721afbec4b6f1e2))
|
||||
* failing html parsing ([2a2259a](https://github.com/kolplattformen/skolplattformen/commit/2a2259a2608ef7e9420d9d3fa59f55530d662ae9))
|
||||
* images cropping on different devices ([#524](https://github.com/kolplattformen/skolplattformen/issues/524)) ([7c50988](https://github.com/kolplattformen/skolplattformen/commit/7c5098859b71f13ffdb9441b81e149b983355d9f))
|
||||
* licenses extractor is used on the correct package.json ([d1de447](https://github.com/kolplattformen/skolplattformen/commit/d1de44775b9df6132af9974f6aaef09c5f2d678f))
|
||||
* lint and prettier fixes ([169b536](https://github.com/kolplattformen/skolplattformen/commit/169b5365e94cd0ff5fe2aa9f28a7baebaeba899a))
|
||||
* package.json name for app changed ([a867b11](https://github.com/kolplattformen/skolplattformen/commit/a867b116c802956b5f5a8b6ec55e64e6821eb475))
|
||||
* remove unused e2e files ([97b4380](https://github.com/kolplattformen/skolplattformen/commit/97b438069a589abc37a96fe8c10ce23078b30e7b))
|
||||
* rename and fix imports ([18ed862](https://github.com/kolplattformen/skolplattformen/commit/18ed8620af5b396eeed740058531ebafda4f8d64))
|
||||
* some failing tests in hooks now works ([c122f28](https://github.com/kolplattformen/skolplattformen/commit/c122f281a9607d7a52b3a25718e93151ddd7768a))
|
||||
* ui-kitten metro config ([5fdc3d7](https://github.com/kolplattformen/skolplattformen/commit/5fdc3d71adb8d9364c8c6b345de841f0f3f1de7c))
|
||||
* update github workflow to run nx instead of lerna ([289c2f8](https://github.com/kolplattformen/skolplattformen/commit/289c2f848aec44da03692d4119aa9e1544dc9292))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* 🎸 activate norwegian ([cec7ddd](https://github.com/kolplattformen/skolplattformen/commit/cec7ddd8601309f752f9fe49298fcc96643599b7))
|
||||
* 🎸 bump to version 2.0.4 ([6d762e7](https://github.com/kolplattformen/skolplattformen/commit/6d762e70076c292d952f1b626ea2925caaac78f9))
|
||||
* 🎸 bump to version 2.0.4 ([078c946](https://github.com/kolplattformen/skolplattformen/commit/078c946a441a4227033c24acbb17807ea19a4dae))
|
||||
* 🎸 Chinese (simplified and traditional) ([eed2a75](https://github.com/kolplattformen/skolplattformen/commit/eed2a7579c23629c0e8dbd8350fa971cec3753fb))
|
||||
* 🎸 Japanese ([e5deadd](https://github.com/kolplattformen/skolplattformen/commit/e5deadd88084fba26a7b8dbc83664be376b76a51))
|
||||
* 🎸 language updates for curriculum ([4d62d9e](https://github.com/kolplattformen/skolplattformen/commit/4d62d9e26987ae4840f81e1c1ad958a6905746c0))
|
||||
* 🎸 Latin and fix for locales ([1c05196](https://github.com/kolplattformen/skolplattformen/commit/1c051961d695ebb2546f2a30991d01015e7c48fb))
|
||||
* 🎸 Portuguese ([2f45cbd](https://github.com/kolplattformen/skolplattformen/commit/2f45cbdeb639cd43c6b13cff0a2f86a934b950dd))
|
||||
* 🎸 Somali ([df8f2e3](https://github.com/kolplattformen/skolplattformen/commit/df8f2e378e76d1f4b8f4b0cfd55aba82626ccaa8))
|
||||
* add nx build system ([d90cfd2](https://github.com/kolplattformen/skolplattformen/commit/d90cfd2a3b94b9845f809b65a96a72b10447651c))
|
||||
|
||||
# [2.1.0](https://github.com/kolplattformen/skolplattformen/compare/v2.0.0...v2.1.0) (2021-10-04)
|
||||
|
||||
|
||||
|
|
|
@ -126,6 +126,7 @@ If you're offended by this initiative, rest assured there is no reason to be —
|
|||
- [Viktor Sarström](https://github.com/viktorlarsson)
|
||||
- [Andreas Eriksson](https://github.com/whyer)
|
||||
- [Kajetan Kazimierczak](https://github.com/kajetan-kazimierczak)
|
||||
- [Karin Nygårds (artwork)](https://github.com/grishund)
|
||||
- You?
|
||||
|
||||
## License
|
||||
|
|
|
@ -112,7 +112,7 @@ test('displays address of guardian', () => {
|
|||
|
||||
fireEvent.press(screen.getByTestId('ShowContactInfoButton'))
|
||||
|
||||
fireEvent.press(screen.getByText(/hem/i))
|
||||
fireEvent.press(screen.getByText(/adress/i))
|
||||
expect(Linking.openURL).toHaveBeenCalledWith(
|
||||
'http://maps.apple.com/?daddr=Testgatan'
|
||||
)
|
||||
|
|
|
@ -20,7 +20,6 @@ import { defaultStackStyling } from '../design/navigationThemes'
|
|||
import usePersonalStorage from '../hooks/usePersonalStorage'
|
||||
import { Layout as LayoutStyle, Sizing, Typography } from '../styles'
|
||||
import { studentName } from '../utils/peopleHelpers'
|
||||
// @ts-expect-error Fix when migrating to TSX
|
||||
import { useSMS } from '../utils/SMS'
|
||||
import { translate } from '../utils/translation'
|
||||
import { AlertIcon } from './icon.component'
|
||||
|
@ -139,7 +138,7 @@ const Absence = () => {
|
|||
<View style={styles.wrap}>
|
||||
<View style={styles.field}>
|
||||
<Text style={styles.label}>
|
||||
{translate('general.socialSecurityNumber')}
|
||||
{translate('abscense.childsPersonalNumber')}
|
||||
</Text>
|
||||
<Input
|
||||
testID="personalIdentityNumberInput"
|
||||
|
@ -240,7 +239,7 @@ const Absence = () => {
|
|||
</View>
|
||||
</View>
|
||||
)}
|
||||
<Button onPress={handleSubmit} status="primary">
|
||||
<Button onPress={() => handleSubmit()} status="primary">
|
||||
{translate('general.send')}
|
||||
</Button>
|
||||
</View>
|
||||
|
|
|
@ -33,7 +33,6 @@ const randomWord = (
|
|||
const randomIndex: number = Math.floor(Math.random() * keys.length)
|
||||
const argumentKey: string = keys[randomIndex]
|
||||
|
||||
// @ts-expect-error Fix this later
|
||||
return words[argumentKey]
|
||||
}
|
||||
|
||||
|
|
|
@ -146,6 +146,8 @@ const getRouteTitleFromName = (routeName: string) => {
|
|||
return translate('navigation.menu')
|
||||
case 'Classmates':
|
||||
return translate('navigation.classmates')
|
||||
default:
|
||||
return ''
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -26,7 +26,7 @@ export const Classmates = () => {
|
|||
const renderItemIcon = (props: IconProps) => (
|
||||
<Icon {...props} name="people-outline" />
|
||||
)
|
||||
const [selected, setSelected] = React.useState()
|
||||
const [selected, setSelected] = React.useState<Classmate>()
|
||||
const renderItem = ({ item, index }: ListRenderItemInfo<Classmate>) => (
|
||||
<ListItem
|
||||
accessibilityLabel={`${translate('classmates.child')} ${index + 1}`}
|
||||
|
@ -41,7 +41,7 @@ export const Classmates = () => {
|
|||
<ContactMenu
|
||||
contact={item}
|
||||
selected={item === selected}
|
||||
setSelected={setSelected}
|
||||
setSelected={() => setSelected(undefined)}
|
||||
/>
|
||||
)}
|
||||
/>
|
||||
|
|
|
@ -1,39 +1,108 @@
|
|||
import { useApi } from '@skolplattformen/hooks'
|
||||
import React, { useEffect, useState } from 'react'
|
||||
import { Image as ImageBase, ImageStyle, StyleProp } from 'react-native'
|
||||
import React, { useCallback, useEffect, useState } from 'react'
|
||||
import {
|
||||
Image as ImageBase,
|
||||
ImageResizeMode,
|
||||
ImageStyle,
|
||||
StyleProp,
|
||||
useWindowDimensions,
|
||||
View,
|
||||
} from 'react-native'
|
||||
|
||||
interface ImageProps {
|
||||
src: string
|
||||
style: StyleProp<ImageStyle>
|
||||
/**
|
||||
* Width of component. Defaults to window width
|
||||
* Used to automatically calculate width
|
||||
*/
|
||||
componentWidth?: number
|
||||
accessibilityIgnoresInvertColors: boolean
|
||||
resizeMode?: ImageResizeMode
|
||||
width?: number
|
||||
height?: number
|
||||
}
|
||||
|
||||
export const Image = ({
|
||||
src,
|
||||
style,
|
||||
componentWidth = 0,
|
||||
accessibilityIgnoresInvertColors,
|
||||
resizeMode = 'contain',
|
||||
}: ImageProps) => {
|
||||
const { api } = useApi()
|
||||
const [headers, setHeaders] = useState()
|
||||
const { width: windowWidth } = useWindowDimensions()
|
||||
const [dimensions, setDimensions] = useState({ width: 0, height: 0 })
|
||||
|
||||
const getHeaders = async (url: string) => {
|
||||
const { headers: newHeaders } = await api.getSession(url)
|
||||
setHeaders(newHeaders)
|
||||
}
|
||||
const debugImageName = getDebugImageName(src)
|
||||
|
||||
const prefetchImageInformation = useCallback(
|
||||
async (url: string) => {
|
||||
if (!url) return
|
||||
const { headers: newHeaders } = await api.getSession(url)
|
||||
|
||||
console.log('[IMAGE] Getting image dimensions with headers', {
|
||||
debugImageName,
|
||||
newHeaders,
|
||||
})
|
||||
|
||||
ImageBase.getSizeWithHeaders(
|
||||
url,
|
||||
newHeaders,
|
||||
(w, h) => {
|
||||
console.log('[IMAGE] Received image dimensions', {
|
||||
debugImageName,
|
||||
w,
|
||||
h,
|
||||
})
|
||||
setDimensions({ width: w, height: h })
|
||||
setHeaders(newHeaders)
|
||||
},
|
||||
(error) => {
|
||||
console.error('[Image] Failed to get image dimensions', {
|
||||
debugImageName,
|
||||
error,
|
||||
})
|
||||
}
|
||||
)
|
||||
},
|
||||
[api, debugImageName]
|
||||
)
|
||||
|
||||
useEffect(() => {
|
||||
getHeaders(src)
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [src])
|
||||
prefetchImageInformation(src)
|
||||
}, [prefetchImageInformation, src])
|
||||
|
||||
return headers ? (
|
||||
const compWidth = componentWidth || windowWidth
|
||||
|
||||
const scale = compWidth / dimensions.width
|
||||
const scaledWidth = Math.round(dimensions.width * scale)
|
||||
const scaledHeight = Math.round(dimensions.height * scale)
|
||||
|
||||
const imageSource =
|
||||
resizeMode === 'cover'
|
||||
? { uri: src, headers }
|
||||
: { uri: src, headers, height: scaledHeight, width: scaledWidth }
|
||||
|
||||
return headers && scaledWidth && scaledHeight ? (
|
||||
<ImageBase
|
||||
accessibilityIgnoresInvertColors={accessibilityIgnoresInvertColors}
|
||||
source={{
|
||||
uri: src,
|
||||
headers,
|
||||
}}
|
||||
source={imageSource}
|
||||
resizeMode={resizeMode}
|
||||
style={style}
|
||||
/>
|
||||
) : null
|
||||
) : (
|
||||
<View style={style} />
|
||||
)
|
||||
}
|
||||
|
||||
const getDebugImageName = (src: string) => {
|
||||
try {
|
||||
const split = src.split('/')
|
||||
return split[split.length - 1]
|
||||
} catch (e: any) {
|
||||
console.log('FAILED', e.message)
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
import { Text } from '@ui-kitten/components'
|
||||
import React from 'react'
|
||||
import { Linking, StyleSheet } from 'react-native'
|
||||
import { Dimensions, Linking, StyleSheet } from 'react-native'
|
||||
import MarkdownBase, { RenderRules } from 'react-native-markdown-display'
|
||||
import { Sizing } from '../styles'
|
||||
import { Image } from './image.component'
|
||||
|
||||
interface MarkdownProps {
|
||||
|
@ -20,6 +21,9 @@ const rules: RenderRules = {
|
|||
accessibilityIgnoresInvertColors
|
||||
key={src}
|
||||
src={url}
|
||||
// TODO: Sizing.t5 should not be hardcoded here...
|
||||
// Maybe measure the width from inside the component instead?
|
||||
componentWidth={Dimensions.get('window').width - Sizing.t5 * 2}
|
||||
style={styles.markdownImage}
|
||||
/>
|
||||
)
|
||||
|
@ -52,5 +56,5 @@ export const Markdown = ({ style, children }: MarkdownProps) => {
|
|||
}
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
markdownImage: { width: '100%', minHeight: 300 },
|
||||
markdownImage: { width: '100%', borderRadius: 15 },
|
||||
})
|
||||
|
|
|
@ -5,7 +5,7 @@ import { StyleService, Text, useStyleSheet } from '@ui-kitten/components'
|
|||
import moment from 'moment'
|
||||
import 'moment/locale/sv'
|
||||
import React from 'react'
|
||||
import { ScrollView, View } from 'react-native'
|
||||
import { Dimensions, ImageStyle, ScrollView, View } from 'react-native'
|
||||
import { NativeStackNavigationOptions } from 'react-native-screens/native-stack'
|
||||
import { defaultStackStyling } from '../design/navigationThemes'
|
||||
import { Layout, Sizing, Typography } from '../styles'
|
||||
|
@ -79,8 +79,8 @@ export const NewsItem = ({ route }: NewsItemProps) => {
|
|||
<Image
|
||||
accessibilityIgnoresInvertColors={false}
|
||||
src={newsItem.fullImageUrl}
|
||||
// @ts-expect-error Fix later on
|
||||
style={styles.image}
|
||||
style={styles.image as ImageStyle}
|
||||
componentWidth={Dimensions.get('screen').width - Sizing.t5 * 2}
|
||||
/>
|
||||
)}
|
||||
</View>
|
||||
|
@ -119,7 +119,6 @@ const themedStyles = StyleService.create({
|
|||
},
|
||||
image: {
|
||||
width: '100%',
|
||||
minHeight: 300,
|
||||
marginTop: Sizing.t4,
|
||||
borderRadius: 15,
|
||||
},
|
||||
|
|
|
@ -4,7 +4,13 @@ import { NewsItem } from '@skolplattformen/api-skolplattformen'
|
|||
import { StyleService, useStyleSheet } from '@ui-kitten/components'
|
||||
import moment from 'moment'
|
||||
import React, { ReactNode } from 'react'
|
||||
import { Dimensions, Text, TouchableOpacity, View } from 'react-native'
|
||||
import {
|
||||
Dimensions,
|
||||
ImageStyle,
|
||||
Text,
|
||||
TouchableOpacity,
|
||||
View,
|
||||
} from 'react-native'
|
||||
import { Layout, Sizing, Typography } from '../styles'
|
||||
import { useChild } from './childContext.component'
|
||||
import { Image } from './image.component'
|
||||
|
@ -39,8 +45,8 @@ export const NewsListItem = ({ item, children }: NewsListItemProps) => {
|
|||
<Image
|
||||
accessibilityIgnoresInvertColors={false}
|
||||
src={item.fullImageUrl}
|
||||
// @ts-expect-error Don't know why this linter breaks
|
||||
style={styles.image}
|
||||
resizeMode="cover"
|
||||
style={styles.image as ImageStyle}
|
||||
/>
|
||||
) : null}
|
||||
<View style={styles.text}>
|
||||
|
|
|
@ -104,7 +104,7 @@ export const Day = ({ weekDay, lunch, lessons }: DayProps) => {
|
|||
}
|
||||
|
||||
export const Week = ({ child }: WeekProps) => {
|
||||
moment.locale(LanguageService.getLanguageCode())
|
||||
moment.locale(LanguageService.getLocale())
|
||||
const days = moment.weekdaysShort().slice(1, 6)
|
||||
const currentDayIndex = Math.min(moment().isoWeekday() - 1, 5)
|
||||
const [selectedIndex, setSelectedIndex] = useState(currentDayIndex)
|
||||
|
|
|
@ -412,7 +412,7 @@ PODS:
|
|||
- RNScreens (3.8.0):
|
||||
- React-Core
|
||||
- React-RCTImage
|
||||
- RNSVG (12.1.0):
|
||||
- RNSVG (12.1.1):
|
||||
- React
|
||||
- Toast (4.0.0)
|
||||
- Yoga (1.14.0)
|
||||
|
@ -662,7 +662,7 @@ SPEC CHECKSUMS:
|
|||
RNLocalize: 74b82db20cc3895ccc25af992c644879bcec2815
|
||||
RNReanimated: ad24db8af24e3fe1b5c462785bc3db8d5baae2ee
|
||||
RNScreens: 6e1ea5787989f92b0671049b808aef64fa1ef98c
|
||||
RNSVG: ce9d996113475209013317e48b05c21ee988d42e
|
||||
RNSVG: 551acb6562324b1d52a4e0758f7ca0ec234e278f
|
||||
Toast: 91b396c56ee72a5790816f40d3a94dd357abc196
|
||||
Yoga: aa0cb45287ebe1004c02a13f279c55a95f1572f4
|
||||
YogaKit: f782866e155069a2cca2517aafea43200b01fd5a
|
||||
|
|
|
@ -462,7 +462,7 @@
|
|||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh\n";
|
||||
shellScript = "export NODE_BINARY=node\nexport ENTRY_FILE=index.js\nexport EXTRA_PACKAGER_ARGS=\"--entry-file apps/skolplattformen-sthlm/index.js\"\n../node_modules/react-native/scripts/react-native-xcode.sh\n";
|
||||
};
|
||||
0D9913ADEC9198115BFBE990 /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
|
@ -573,9 +573,9 @@
|
|||
);
|
||||
inputPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-app/Pods-app-frameworks.sh",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/double-conversion/double-conversion.framework/double-conversion",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL/OpenSSL.framework/OpenSSL",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes/hermes.framework/hermes",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/Flipper-DoubleConversion/double-conversion.framework/double-conversion",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/hermes.framework/hermes",
|
||||
);
|
||||
name = "[CP] Embed Pods Frameworks";
|
||||
outputPaths = (
|
||||
|
@ -595,9 +595,9 @@
|
|||
);
|
||||
inputPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-app-appTests/Pods-app-appTests-frameworks.sh",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/double-conversion/double-conversion.framework/double-conversion",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL/OpenSSL.framework/OpenSSL",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes/hermes.framework/hermes",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/Flipper-DoubleConversion/double-conversion.framework/double-conversion",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/hermes.framework/hermes",
|
||||
);
|
||||
name = "[CP] Embed Pods Frameworks";
|
||||
outputPaths = (
|
||||
|
@ -815,11 +815,11 @@
|
|||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "Apple Development";
|
||||
CODE_SIGN_STYLE = Manual;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 164;
|
||||
DEVELOPMENT_TEAM = 76DV673YHX;
|
||||
DEVELOPMENT_TEAM = "";
|
||||
INFOPLIST_FILE = app/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
MARKETING_VERSION = 3.0.0;
|
||||
|
@ -830,7 +830,7 @@
|
|||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = se.kolplattformen.app;
|
||||
PRODUCT_NAME = app;
|
||||
PROVISIONING_PROFILE_SPECIFIER = "Skolplattformen App Store Development";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
|
|
|
@ -77,6 +77,8 @@
|
|||
"valtio": "*",
|
||||
"yup": "*"
|
||||
},
|
||||
"devDependencies": {},
|
||||
"devDependencies": {
|
||||
"react-native-clean-project": "*"
|
||||
},
|
||||
"private": true
|
||||
}
|
||||
|
|
|
@ -11,10 +11,12 @@ import 'moment/locale/ja'
|
|||
import 'moment/locale/nb'
|
||||
import 'moment/locale/nl'
|
||||
import 'moment/locale/pl'
|
||||
import 'moment/locale/pt'
|
||||
import 'moment/locale/ru'
|
||||
import 'moment/locale/sv'
|
||||
import 'moment/locale/uz-latn'
|
||||
import 'moment/locale/zh-cn'
|
||||
import { I18nManager } from 'react-native'
|
||||
import { languages } from '../utils/translation'
|
||||
|
||||
const changeListeners: Record<string, any> = {}
|
||||
|
||||
|
@ -22,6 +24,7 @@ let allString: Record<string, any> = {}
|
|||
|
||||
let Strings: Record<string, any> = {}
|
||||
let languageCode: string
|
||||
let momentLocale: string
|
||||
|
||||
const rtlList: { [key: string]: boolean } = {
|
||||
en: false,
|
||||
|
@ -39,9 +42,15 @@ export const isRTL = (langCode: string) => {
|
|||
return rtlList[langCode]
|
||||
}
|
||||
|
||||
const getCorrespondingMomentLocale = (languageCode?: string): string => {
|
||||
const lang = languages.find(({ langCode }) => langCode === languageCode)
|
||||
return lang?.locale || 'sv'
|
||||
}
|
||||
|
||||
export const LanguageService = {
|
||||
get: () => Strings,
|
||||
getLanguageCode: () => languageCode,
|
||||
getLocale: () => momentLocale,
|
||||
setAllData: ({ data }: { data: Record<string, any> }) => {
|
||||
allString = data
|
||||
},
|
||||
|
@ -52,11 +61,12 @@ export const LanguageService = {
|
|||
i18n.locale = langCode
|
||||
I18nManager.forceRTL(isRTL(langCode))
|
||||
}
|
||||
moment.locale(langCode)
|
||||
moment.locale(momentLocale)
|
||||
},
|
||||
setLanguageCode: ({ langCode }: { langCode?: string }) => {
|
||||
if (langCode && allString[langCode]) {
|
||||
languageCode = langCode
|
||||
momentLocale = getCorrespondingMomentLocale(langCode)
|
||||
Strings = merge(allString.sv, allString[langCode])
|
||||
} else {
|
||||
const dataKeys = Object.keys(allString)
|
||||
|
@ -68,7 +78,6 @@ export const LanguageService = {
|
|||
})
|
||||
return Strings
|
||||
},
|
||||
|
||||
onChange: ({ key }: { key: string }, cb: (langCode: string) => void) => {
|
||||
const unsubscribe = () => {
|
||||
delete changeListeners[key]
|
||||
|
|
|
@ -76,7 +76,9 @@
|
|||
"settings": "Einstellungen",
|
||||
"socialSecurityNumber": "Personenkennziffer",
|
||||
"title": "Öppna skolplattformen",
|
||||
"cancel": "Abbrechen"
|
||||
"cancel": "Abbrechen",
|
||||
"logoutAndClearPersonalData": "Ausloggen und persönliche Daten löschen",
|
||||
"logoutAndClearAllDataInclSettings": "Ausloggen und alle Daten inkl. Einstellungen löschen"
|
||||
},
|
||||
"language": {
|
||||
"changeLanguage": "Sprache ändern",
|
||||
|
@ -94,7 +96,7 @@
|
|||
"classmates": "Mitschüler"
|
||||
},
|
||||
"news": {
|
||||
"backToChild": "Zurück zu Kind",
|
||||
"backToChild": "Zurück zum Kind",
|
||||
"noNewNewsItemsThisWeek": "Keine neuen Nachrichten diese Woche.",
|
||||
"notificationTitle": "Nachricht: {{header}} ({{published}})",
|
||||
"published": "Veröffentlicht",
|
||||
|
@ -108,22 +110,35 @@
|
|||
"notificationTitle": "Mitteilung: {{message}} ({{dateCreated}})"
|
||||
},
|
||||
"schedule": {
|
||||
"gymBag": "Sporttasche",
|
||||
"gymBag": "Turnbeutel",
|
||||
"lunch": "Mittagessen",
|
||||
"end": "Ende",
|
||||
"start": "Anfang"
|
||||
},
|
||||
"contact": {
|
||||
"a11y_show_contact_info_button_hint": "Zeigt Kontaktinformation an",
|
||||
"home": "Heim",
|
||||
"home": "Adresse",
|
||||
"email": "E-Mail",
|
||||
"sms": "SMS",
|
||||
"call": "Anrufen",
|
||||
"a11y_show_contact_info_button_label": "Kontaktinformationen anzeigen"
|
||||
},
|
||||
"classmates": {
|
||||
"contactsForGuardiansFor": "Kontaktinformationen der Erziehungsberechtigte für",
|
||||
"contactsForGuardiansFor": "Kontaktinformationen der Erziehungsberechtigten für",
|
||||
"child": "Kind",
|
||||
"class": "Klasse"
|
||||
},
|
||||
"settings": {
|
||||
"appearance": "Modus",
|
||||
"licenses": "Lizenzen",
|
||||
"language": "Sprache",
|
||||
"themeAuto": "Automatisch",
|
||||
"useSystemTheme": "Systemmodus benutzen",
|
||||
"settings": "Einstellungen",
|
||||
"theme": "Modus"
|
||||
},
|
||||
"themes": {
|
||||
"light": "Hell",
|
||||
"dark": "Dunkel"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
"abscense": {
|
||||
"endTime": "End time",
|
||||
"entireDay": "Whole day",
|
||||
"childsPersonalNumber": "Child's personal identity number",
|
||||
"invalidPersonalNumber": "Personal identity number invalid",
|
||||
"personalNumberMissing": "Personal identity number missing",
|
||||
"selectAbscenseEndTime": "Choose end time",
|
||||
|
@ -104,7 +105,6 @@
|
|||
"language": "Language",
|
||||
"themeAuto": "Auto",
|
||||
"useSystemTheme": "Use System Light/Dark Theme"
|
||||
|
||||
},
|
||||
"themes": {
|
||||
"light": "Light",
|
||||
|
@ -141,6 +141,6 @@
|
|||
"call": "Call",
|
||||
"sms": "SMS",
|
||||
"email": "E-mail",
|
||||
"home": "Home"
|
||||
"home": "Address"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -54,7 +54,9 @@
|
|||
"agile": "ágil",
|
||||
"fantastic": "fantástica",
|
||||
"cheap": "barato",
|
||||
"better": "mejor"
|
||||
"better": "mejor",
|
||||
"homemade": "artesanal",
|
||||
"open": "abierto"
|
||||
},
|
||||
"subtitle": "La alternativa {{word}}",
|
||||
"placeholder_SocialSecurityNumber": "Tu personnummer",
|
||||
|
@ -66,7 +68,9 @@
|
|||
"OpenOnAnotherDevice": "Abra BankID en otro dispositivo",
|
||||
"OpenManually": "Abrir BankID manualmente"
|
||||
},
|
||||
"loginAsTestUser": "Inicie sesión como usuario de pruebas"
|
||||
"loginAsTestUser": "Inicie sesión como usuario de pruebas",
|
||||
"a11y_change_language": "Elija su idioma",
|
||||
"a11y_image_two_boys": "Fotografia de dos personas mirando su telefono movil"
|
||||
},
|
||||
"abscense": {
|
||||
"title": "Informar ausencia",
|
||||
|
|
|
@ -8,7 +8,9 @@
|
|||
"logout": "Se déconnecter",
|
||||
"confirm": "Confirmer",
|
||||
"changeLanguage": "Changer de langue",
|
||||
"cancel": "Annuler"
|
||||
"cancel": "Annuler",
|
||||
"logoutAndClearPersonalData": "Se déconnecter et effacer les données personnelles",
|
||||
"logoutAndClearAllDataInclSettings": "Se déconnecter et effacer toutes les données, y compris les paramètres"
|
||||
},
|
||||
"calender": {
|
||||
"saveToCalenderError": "Un problème est survenu",
|
||||
|
@ -61,7 +63,8 @@
|
|||
"endTime": "Heure de fin",
|
||||
"selectAbscenseEndTime": "Choisissez l'heure de la fin",
|
||||
"entireDay": "Toute la journée",
|
||||
"title": "Signaler une absence"
|
||||
"title": "Signaler une absence",
|
||||
"childsPersonalNumber": "Numéro national d’identité de l'enfant"
|
||||
},
|
||||
"notifications": {
|
||||
"notificationTitle": "Notification : {{message}} ({{dateCreated}})"
|
||||
|
@ -109,7 +112,7 @@
|
|||
},
|
||||
"contact": {
|
||||
"a11y_show_contact_info_button_hint": "Affiche les informations de contact",
|
||||
"home": "Domicilr",
|
||||
"home": "Adresse",
|
||||
"email": "Courriel",
|
||||
"sms": "Texto",
|
||||
"call": "Appeler",
|
||||
|
@ -125,5 +128,18 @@
|
|||
"contactsForGuardiansFor": "Coordonnées des tuteurs pour",
|
||||
"child": "Enfant",
|
||||
"class": "Classe"
|
||||
},
|
||||
"settings": {
|
||||
"settings": "Paramètres",
|
||||
"useSystemTheme": "Utiliser le thème clair/sombre du système",
|
||||
"language": "Langue",
|
||||
"appearance": "Apparence",
|
||||
"theme": "Thème",
|
||||
"licenses": "Licences",
|
||||
"themeAuto": "Automatique"
|
||||
},
|
||||
"themes": {
|
||||
"light": "Clair",
|
||||
"dark": "Sombre"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,7 +22,9 @@
|
|||
"loading": "Caricamento in corso…",
|
||||
"confirm": "Conferma",
|
||||
"changeLanguage": "Cambia lingua",
|
||||
"cancel": "Interrompere"
|
||||
"cancel": "Interrompere",
|
||||
"logoutAndClearPersonalData": "Esci ed elimina i dati personali",
|
||||
"logoutAndClearAllDataInclSettings": "Esci ed elimina tutti i dati, comprese le impostazioni"
|
||||
},
|
||||
"schedule": {
|
||||
"end": "Finische",
|
||||
|
@ -34,7 +36,8 @@
|
|||
"notifications": "Notifiche",
|
||||
"news": "Novità",
|
||||
"menu": "Menù pranzo",
|
||||
"calender": "Calendario"
|
||||
"calender": "Calendario",
|
||||
"classmates": "Compagni di classe"
|
||||
},
|
||||
"language": {
|
||||
"changeLanguageButton": "Salva",
|
||||
|
@ -113,6 +116,29 @@
|
|||
"emptyText": "Non ho trovato nulla per questa settimana"
|
||||
},
|
||||
"contact": {
|
||||
"a11y_show_contact_info_button_hint": "Mostra le informazioni di contatto"
|
||||
"a11y_show_contact_info_button_hint": "Mostra le informazioni di contatto",
|
||||
"call": "Chiama",
|
||||
"sms": "SMS",
|
||||
"email": "E-mail",
|
||||
"home": "Indirizzo",
|
||||
"a11y_show_contact_info_button_label": "Mostra le informazioni di contatto"
|
||||
},
|
||||
"settings": {
|
||||
"settings": "Impostazioni",
|
||||
"theme": "Tema",
|
||||
"themeAuto": "Automatico",
|
||||
"licenses": "Licenze",
|
||||
"language": "Lingua",
|
||||
"appearance": "Aspetto",
|
||||
"useSystemTheme": "Usa il tema chiaro/scuro del sistema"
|
||||
},
|
||||
"themes": {
|
||||
"light": "Chiaro",
|
||||
"dark": "Scuro"
|
||||
},
|
||||
"classmates": {
|
||||
"class": "Classe",
|
||||
"child": "Bambino",
|
||||
"contactsForGuardiansFor": "Informazioni di contatto per i tutori per"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -60,7 +60,9 @@
|
|||
"changeLanguage": "Endre språk",
|
||||
"settings": "Innstillinger",
|
||||
"send": "Send",
|
||||
"cancel": "Avbryt"
|
||||
"cancel": "Avbryt",
|
||||
"logoutAndClearPersonalData": "Logg ut og tøm personlig data",
|
||||
"logoutAndClearAllDataInclSettings": "Logg ut og tøm all data, inkludert innstillinger"
|
||||
},
|
||||
"news": {
|
||||
"updated": "Oppdatert",
|
||||
|
@ -81,7 +83,8 @@
|
|||
"personalNumberMissing": "Personnummer mangler",
|
||||
"invalidPersonalNumber": "Ugyldig personnummer",
|
||||
"entireDay": "Hele dagen",
|
||||
"endTime": "Slutt"
|
||||
"endTime": "Slutt",
|
||||
"childsPersonalNumber": "Barnets personnummer"
|
||||
},
|
||||
"abbrevations": {
|
||||
"upperSecondarySchool": "Videregående",
|
||||
|
@ -96,7 +99,8 @@
|
|||
"notifications": "Merknader",
|
||||
"news": "Nyheter",
|
||||
"menu": "Meny",
|
||||
"calender": "Kalender"
|
||||
"calender": "Kalender",
|
||||
"classmates": "Klassekamerater"
|
||||
},
|
||||
"menu": {
|
||||
"emptyText": "Fant ikke noe denne uken",
|
||||
|
@ -113,6 +117,29 @@
|
|||
"start": "Start"
|
||||
},
|
||||
"contact": {
|
||||
"a11y_show_contact_info_button_hint": "Vis kontaktinfo"
|
||||
"a11y_show_contact_info_button_hint": "Vis kontaktinfo",
|
||||
"call": "Ring",
|
||||
"a11y_show_contact_info_button_label": "Vis kontaktinfo",
|
||||
"sms": "SMS",
|
||||
"email": "E-post",
|
||||
"home": "Hjem"
|
||||
},
|
||||
"classmates": {
|
||||
"contactsForGuardiansFor": "Foresattes kontaktinfo for",
|
||||
"class": "Klasse",
|
||||
"child": "Barn"
|
||||
},
|
||||
"settings": {
|
||||
"settings": "Innstillinger",
|
||||
"appearance": "Utseende",
|
||||
"themeAuto": "Auto",
|
||||
"theme": "Drakt",
|
||||
"language": "Språk",
|
||||
"licenses": "Lisenser",
|
||||
"useSystemTheme": "Ifør systemets drakt"
|
||||
},
|
||||
"themes": {
|
||||
"light": "Lys",
|
||||
"dark": "Mørk"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
"abscense": {
|
||||
"endTime": "Czas zakończenia",
|
||||
"entireDay": "Cały dzień",
|
||||
"childsPersonalNumber": "Personnummer dziecka",
|
||||
"invalidPersonalNumber": "Błąd w personnumerze",
|
||||
"personalNumberMissing": "Brak personnumeru",
|
||||
"selectAbscenseEndTime": "Wybierz czas zakończenia",
|
||||
|
|
|
@ -0,0 +1,144 @@
|
|||
{
|
||||
"abscense": {
|
||||
"entireDay": "O dia inteiro",
|
||||
"selectAbscenseStartTime": "Indique a hora de início",
|
||||
"startTime": "Hora de início",
|
||||
"title": "Reportar ausência",
|
||||
"selectAbscenseEndTime": "Indique a hora de fim",
|
||||
"endTime": "Hora de fim",
|
||||
"invalidPersonalNumber": "Número de identidade pessoal inválido",
|
||||
"personalNumberMissing": "Falta o número de identidade pessoal"
|
||||
},
|
||||
"auth": {
|
||||
"bankid": {
|
||||
"OpenManually": "Abrir BankID manualmente",
|
||||
"OpenOnAnotherDevice": "Abrir BankID noutro dispositivo",
|
||||
"Waiting": "A aguardar pelo BankID…",
|
||||
"OpenOnThisDevice": "Abrir BankID neste dispositivo"
|
||||
},
|
||||
"loginAsTestUser": "Autenticar como utilizador em teste",
|
||||
"loginFailed": "Não foi possível autenticar. Por favor tente novamente.",
|
||||
"placeholder_SocialSecurityNumber": "O seu número de identidade pessoal",
|
||||
"words": {
|
||||
"agile": "ágil",
|
||||
"better": "melhor",
|
||||
"awaited": "esperada",
|
||||
"free": "livre",
|
||||
"cooler": "interessante",
|
||||
"enlightened": "mais clara",
|
||||
"fantastic": "fantástica",
|
||||
"first": "inicial",
|
||||
"homemade": "caseira",
|
||||
"imperfect": "imperfeita",
|
||||
"open": "aberta",
|
||||
"simple": "fácil",
|
||||
"working": "funcional",
|
||||
"cheap": "barata",
|
||||
"fun": "divertida",
|
||||
"fast": "rápida",
|
||||
"rebellious": "rebelde"
|
||||
},
|
||||
"subtitle": "A alternativa {{word}}",
|
||||
"a11y_change_language": "Selecione o seu idioma",
|
||||
"a11y_image_two_boys": "Fotografia de duas pessoas a verem os seus telemóveis",
|
||||
"a11y_clear_social_security_input_field": "Limpar o campo do número de identificação pessoal",
|
||||
"chooseLoginMethod": "Escolha o método de autenticação",
|
||||
"a11y_select_login_method": "Selecione o método de autenticação"
|
||||
},
|
||||
"abbrevations": {
|
||||
"compulsorySchool": "Escola primária / secundária inferior",
|
||||
"leisureTimeCentre": "Cuidados pós-escolares",
|
||||
"upperSecondarySchool": "Escola secundária superior",
|
||||
"preSchool": "Pré-escola"
|
||||
},
|
||||
"calender": {
|
||||
"showCalenderActions": "Mostrar ações do calendário",
|
||||
"saveToCalenderError": "Algo correu mal",
|
||||
"saveToCalenderSuccess": "✔️ Guardado no calendário",
|
||||
"approveAccessToCalender": "Tem de autorizar o acesso ao seu calendário",
|
||||
"saveToCalender": "Guardar no calendário"
|
||||
},
|
||||
"children": {
|
||||
"loadingErrorHeading": "Ups!",
|
||||
"loadingErrorInformationText": "Esta página não pode ser carregada. Tente novamente ou veja o estado atual em skolplattformen.org",
|
||||
"noKids_description": "Não existem crianças registadas na cidade de Estocolmo para o seu número de identificação pessoal",
|
||||
"noKids_title": "Sem crianças",
|
||||
"tryAgain": "Tentar novamente",
|
||||
"title": "Os seus filhos",
|
||||
"viewStatus": "Ver estado em skolplattformen.org"
|
||||
},
|
||||
"general": {
|
||||
"changeLanguage": "Alterar idioma",
|
||||
"confirm": "Confirmar",
|
||||
"loading": "A carregar…",
|
||||
"logout": "Sair",
|
||||
"logoutAndClearAllDataInclSettings": "Sair e limpar todos os dados, incluindo as configurações",
|
||||
"send": "Enviar",
|
||||
"socialSecurityNumber": "Número de identidade pessoal",
|
||||
"title": "Öppna skolplattformen",
|
||||
"logoutAndClearPersonalData": "Sair e limpar dados pessoais",
|
||||
"cancel": "Cancelar",
|
||||
"settings": "Configurações"
|
||||
},
|
||||
"language": {
|
||||
"changeLanguage": "Alterar idioma",
|
||||
"changeLanguageButton": "Guardar"
|
||||
},
|
||||
"menu": {
|
||||
"emptyHeadline": "O menu do almoço parece um pouco vazio",
|
||||
"emptyText": "Não consegui encontrar nada para esta semana"
|
||||
},
|
||||
"navigation": {
|
||||
"calender": "Calendário",
|
||||
"menu": "Almoço",
|
||||
"news": "Notícias",
|
||||
"notifications": "Notificações",
|
||||
"classmates": "Colegas de turma"
|
||||
},
|
||||
"settings": {
|
||||
"settings": "Configurações",
|
||||
"useSystemTheme": "Usar o tema claro / escuro do sistema",
|
||||
"appearance": "Aparência",
|
||||
"theme": "Tema",
|
||||
"licenses": "Licenças",
|
||||
"language": "Idioma",
|
||||
"themeAuto": "Automático"
|
||||
},
|
||||
"themes": {
|
||||
"light": "Claro",
|
||||
"dark": "Escuro"
|
||||
},
|
||||
"news": {
|
||||
"backToChild": "Voltar à criança",
|
||||
"noNewNewsItemsThisWeek": "Não há novidades esta semana.",
|
||||
"notificationTitle": "Notícia: {{header}} ({{published}})",
|
||||
"published": "Publicada",
|
||||
"updated": "Atualizada",
|
||||
"title": "Notícias de Skolplattformen",
|
||||
"search": {
|
||||
"placeholder": "Procurar nas notícias…"
|
||||
}
|
||||
},
|
||||
"schedule": {
|
||||
"start": "Início",
|
||||
"end": "Fim",
|
||||
"lunch": "Almoço",
|
||||
"gymBag": "Saco de ginástica"
|
||||
},
|
||||
"classmates": {
|
||||
"class": "Turma",
|
||||
"child": "Criança",
|
||||
"contactsForGuardiansFor": "Informações de contacto dos tutores para"
|
||||
},
|
||||
"contact": {
|
||||
"call": "Ligar",
|
||||
"email": "E-mail",
|
||||
"home": "Morada",
|
||||
"a11y_show_contact_info_button_hint": "Mostra informações de contacto",
|
||||
"a11y_show_contact_info_button_label": "Mostrar informações de contacto",
|
||||
"sms": "SMS"
|
||||
},
|
||||
"notifications": {
|
||||
"notificationTitle": "Notificação: {{message}} ({{dateCreated}})"
|
||||
}
|
||||
}
|
|
@ -8,6 +8,7 @@
|
|||
"abscense": {
|
||||
"endTime": "Sluttid",
|
||||
"entireDay": "Heldag",
|
||||
"childsPersonalNumber": "Barnets personnummer",
|
||||
"invalidPersonalNumber": "Personnumret är ogiltigt",
|
||||
"personalNumberMissing": "Personnummer saknas",
|
||||
"selectAbscenseEndTime": "Välj sluttid",
|
||||
|
@ -140,6 +141,6 @@
|
|||
"call": "Ring",
|
||||
"sms": "SMS",
|
||||
"email": "Maila",
|
||||
"home": "Hem"
|
||||
"home": "Adress"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,144 @@
|
|||
{
|
||||
"abbrevations": {
|
||||
"preSchool": "学前班",
|
||||
"upperSecondarySchool": "高中",
|
||||
"compulsorySchool": "小学/初中",
|
||||
"leisureTimeCentre": "课后托管"
|
||||
},
|
||||
"abscense": {
|
||||
"endTime": "结束时间",
|
||||
"entireDay": "全天",
|
||||
"selectAbscenseEndTime": "选择结束时间",
|
||||
"selectAbscenseStartTime": "选择开始时间",
|
||||
"title": "报告缺席情况",
|
||||
"invalidPersonalNumber": "个人身份号码无效",
|
||||
"personalNumberMissing": "缺少个人身份号码",
|
||||
"startTime": "开始时间"
|
||||
},
|
||||
"auth": {
|
||||
"bankid": {
|
||||
"OpenManually": "手动打开 BankID",
|
||||
"OpenOnAnotherDevice": "在另一台设备上打开 BankID",
|
||||
"OpenOnThisDevice": "在本设备上打开 BankID",
|
||||
"Waiting": "正在等待 BankID 响应…"
|
||||
},
|
||||
"loginAsTestUser": "以测试用户身份登录",
|
||||
"loginFailed": "无法登录。请重试。",
|
||||
"placeholder_SocialSecurityNumber": "你的个人身份号码",
|
||||
"words": {
|
||||
"agile": "轻快",
|
||||
"awaited": "久违",
|
||||
"better": "更佳",
|
||||
"cheap": "价廉",
|
||||
"cooler": "酷乐",
|
||||
"enlightened": "开明",
|
||||
"fantastic": "匪夷",
|
||||
"fast": "迅捷",
|
||||
"free": "自由",
|
||||
"fun": "乐趣",
|
||||
"homemade": "手制",
|
||||
"open": "开放",
|
||||
"rebellious": "逆流",
|
||||
"simple": "简单",
|
||||
"imperfect": "有瑕",
|
||||
"first": "一流",
|
||||
"working": "可用"
|
||||
},
|
||||
"subtitle": "{{word}}之选",
|
||||
"a11y_clear_social_security_input_field": "清空个人身份号码栏",
|
||||
"chooseLoginMethod": "选择登录方式",
|
||||
"a11y_change_language": "选择您的语言",
|
||||
"a11y_image_two_boys": "两个人看手机的图片",
|
||||
"a11y_select_login_method": "选择登录方式"
|
||||
},
|
||||
"calender": {
|
||||
"saveToCalender": "保存到日历中",
|
||||
"saveToCalenderError": "出了点问题",
|
||||
"saveToCalenderSuccess": "✔️ 已保存到日历中",
|
||||
"showCalenderActions": "显示日历操作",
|
||||
"approveAccessToCalender": "您必须允许访问日历"
|
||||
},
|
||||
"children": {
|
||||
"loadingErrorHeading": "啊噢!",
|
||||
"loadingErrorInformationText": "这个页面无法加载。请重试或在 skolplattformen.org 网站上查看当前状态。",
|
||||
"noKids_title": "没有找到孩子",
|
||||
"title": "您的孩子",
|
||||
"tryAgain": "请重试",
|
||||
"viewStatus": "在 skolplattformen.org 网站上查看状态",
|
||||
"noKids_description": "您的个人身份号码下没有注册在斯德哥尔摩市的孩子"
|
||||
},
|
||||
"general": {
|
||||
"cancel": "取消",
|
||||
"changeLanguage": "更改语言",
|
||||
"confirm": "确认",
|
||||
"loading": "正在加载…",
|
||||
"logout": "登出",
|
||||
"logoutAndClearPersonalData": "登出并清除个人数据",
|
||||
"logoutAndClearAllDataInclSettings": "登出并清除包括设置在内的所有数据",
|
||||
"send": "发送",
|
||||
"socialSecurityNumber": "个人身份号码",
|
||||
"title": "开放学校平台",
|
||||
"settings": "设置"
|
||||
},
|
||||
"language": {
|
||||
"changeLanguage": "更改语言",
|
||||
"changeLanguageButton": "保存"
|
||||
},
|
||||
"menu": {
|
||||
"emptyHeadline": "午餐菜单看起来有点空",
|
||||
"emptyText": "找不到有关这个星期的任何内容"
|
||||
},
|
||||
"navigation": {
|
||||
"calender": "日历",
|
||||
"menu": "午餐",
|
||||
"news": "新闻",
|
||||
"notifications": "通知",
|
||||
"classmates": "同班同学"
|
||||
},
|
||||
"settings": {
|
||||
"appearance": "外观",
|
||||
"licenses": "许可证",
|
||||
"language": "语言",
|
||||
"themeAuto": "自动",
|
||||
"useSystemTheme": "使用系统亮色/暗色主题",
|
||||
"settings": "设置",
|
||||
"theme": "主题"
|
||||
},
|
||||
"themes": {
|
||||
"light": "亮色",
|
||||
"dark": "暗色"
|
||||
},
|
||||
"news": {
|
||||
"backToChild": "返回到孩子页面",
|
||||
"noNewNewsItemsThisWeek": "这个星期没有新闻。",
|
||||
"notificationTitle": "新闻:{{header}}({{published}})",
|
||||
"published": "已发布",
|
||||
"updated": "已更新",
|
||||
"search": {
|
||||
"placeholder": "在新闻中搜索…"
|
||||
},
|
||||
"title": "来自学校平台的新闻"
|
||||
},
|
||||
"notifications": {
|
||||
"notificationTitle": "通知:{{message}}({{dateCreated}})"
|
||||
},
|
||||
"schedule": {
|
||||
"start": "开始",
|
||||
"end": "结束",
|
||||
"lunch": "午餐",
|
||||
"gymBag": "健身袋"
|
||||
},
|
||||
"classmates": {
|
||||
"class": "课堂",
|
||||
"child": "孩子",
|
||||
"contactsForGuardiansFor": "监护人的联系信息"
|
||||
},
|
||||
"contact": {
|
||||
"a11y_show_contact_info_button_hint": "显示联系信息",
|
||||
"a11y_show_contact_info_button_label": "显示联系信息",
|
||||
"sms": "短信",
|
||||
"call": "电话",
|
||||
"email": "电子邮箱",
|
||||
"home": "家庭地址"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,144 @@
|
|||
{
|
||||
"abbrevations": {
|
||||
"compulsorySchool": "小學/初中",
|
||||
"leisureTimeCentre": "課後託管",
|
||||
"preSchool": "學前班",
|
||||
"upperSecondarySchool": "高中"
|
||||
},
|
||||
"abscense": {
|
||||
"endTime": "結束時間",
|
||||
"entireDay": "全天",
|
||||
"invalidPersonalNumber": "個人身份號碼無效",
|
||||
"personalNumberMissing": "缺少個人身份號碼",
|
||||
"selectAbscenseEndTime": "選擇結束時間",
|
||||
"selectAbscenseStartTime": "選擇開始時間",
|
||||
"startTime": "開始時間",
|
||||
"title": "報告缺席情況"
|
||||
},
|
||||
"auth": {
|
||||
"bankid": {
|
||||
"OpenManually": "手動開啟 BankID",
|
||||
"OpenOnAnotherDevice": "在另一臺裝置上開啟 BankID",
|
||||
"OpenOnThisDevice": "在本裝置上開啟 BankID",
|
||||
"Waiting": "正在等待 BankID 響應…"
|
||||
},
|
||||
"chooseLoginMethod": "選擇登入方式",
|
||||
"loginAsTestUser": "以測試使用者身份登入",
|
||||
"loginFailed": "無法登入。請重試。",
|
||||
"placeholder_SocialSecurityNumber": "你的個人身份號碼",
|
||||
"subtitle": "{{word}}之選",
|
||||
"words": {
|
||||
"agile": "輕快",
|
||||
"awaited": "久違",
|
||||
"better": "更佳",
|
||||
"cheap": "價廉",
|
||||
"cooler": "酷樂",
|
||||
"enlightened": "開明",
|
||||
"fantastic": "匪夷",
|
||||
"fast": "迅捷",
|
||||
"first": "一流",
|
||||
"free": "自由",
|
||||
"fun": "樂趣",
|
||||
"homemade": "手製",
|
||||
"imperfect": "有瑕",
|
||||
"open": "開放",
|
||||
"rebellious": "逆流",
|
||||
"simple": "簡單",
|
||||
"working": "可用"
|
||||
},
|
||||
"a11y_change_language": "選擇您的語言",
|
||||
"a11y_image_two_boys": "兩個人看手機的圖片",
|
||||
"a11y_clear_social_security_input_field": "清空個人身份號碼欄",
|
||||
"a11y_select_login_method": "選擇登入方式"
|
||||
},
|
||||
"calender": {
|
||||
"approveAccessToCalender": "您必須允許訪問日曆",
|
||||
"saveToCalender": "儲存到日曆中",
|
||||
"saveToCalenderError": "出了點問題",
|
||||
"saveToCalenderSuccess": "✔️ 已儲存到日曆中",
|
||||
"showCalenderActions": "顯示日曆操作"
|
||||
},
|
||||
"children": {
|
||||
"loadingErrorHeading": "啊噢!",
|
||||
"loadingErrorInformationText": "這個頁面無法載入。請重試或在 skolplattformen.org 網站上檢視當前狀態。",
|
||||
"noKids_description": "您的個人身份號碼下沒有註冊在斯德哥爾摩市的孩子",
|
||||
"noKids_title": "沒有找到孩子",
|
||||
"title": "您的孩子",
|
||||
"tryAgain": "請重試",
|
||||
"viewStatus": "在 skolplattformen.org 網站上檢視狀態"
|
||||
},
|
||||
"general": {
|
||||
"cancel": "取消",
|
||||
"changeLanguage": "更改語言",
|
||||
"confirm": "確認",
|
||||
"loading": "正在載入…",
|
||||
"logout": "登出",
|
||||
"logoutAndClearPersonalData": "登出並清除個人資料",
|
||||
"logoutAndClearAllDataInclSettings": "登出並清除包括設定在內的所有資料",
|
||||
"send": "傳送",
|
||||
"settings": "設定",
|
||||
"socialSecurityNumber": "個人身份號碼",
|
||||
"title": "開放學校平臺"
|
||||
},
|
||||
"language": {
|
||||
"changeLanguage": "更改語言",
|
||||
"changeLanguageButton": "儲存"
|
||||
},
|
||||
"menu": {
|
||||
"emptyHeadline": "午餐選單看起來有點空",
|
||||
"emptyText": "找不到有關這個星期的任何內容"
|
||||
},
|
||||
"navigation": {
|
||||
"calender": "日曆",
|
||||
"menu": "午餐",
|
||||
"news": "新聞",
|
||||
"notifications": "通知",
|
||||
"classmates": "同班同學"
|
||||
},
|
||||
"settings": {
|
||||
"settings": "設定",
|
||||
"appearance": "外觀",
|
||||
"theme": "主題",
|
||||
"licenses": "許可證",
|
||||
"language": "語言",
|
||||
"themeAuto": "自動",
|
||||
"useSystemTheme": "使用系統亮色/暗色主題"
|
||||
},
|
||||
"themes": {
|
||||
"light": "亮色",
|
||||
"dark": "暗色"
|
||||
},
|
||||
"news": {
|
||||
"backToChild": "返回到孩子頁面",
|
||||
"noNewNewsItemsThisWeek": "這個星期沒有新聞。",
|
||||
"notificationTitle": "新聞:{{header}}({{published}})",
|
||||
"published": "已釋出",
|
||||
"title": "來自學校平臺的新聞",
|
||||
"updated": "已更新",
|
||||
"search": {
|
||||
"placeholder": "在新聞中搜索…"
|
||||
}
|
||||
},
|
||||
"notifications": {
|
||||
"notificationTitle": "通知:{{message}}({{dateCreated}})"
|
||||
},
|
||||
"schedule": {
|
||||
"start": "開始",
|
||||
"end": "結束",
|
||||
"lunch": "午餐",
|
||||
"gymBag": "健身袋"
|
||||
},
|
||||
"classmates": {
|
||||
"class": "課堂",
|
||||
"child": "孩子",
|
||||
"contactsForGuardiansFor": "監護人的聯絡資訊"
|
||||
},
|
||||
"contact": {
|
||||
"a11y_show_contact_info_button_hint": "顯示聯絡資訊",
|
||||
"a11y_show_contact_info_button_label": "顯示聯絡資訊",
|
||||
"call": "電話",
|
||||
"sms": "簡訊",
|
||||
"email": "電子郵箱",
|
||||
"home": "家庭地址"
|
||||
}
|
||||
}
|
|
@ -4,6 +4,17 @@
|
|||
"outDir": "../../dist/out-tsc",
|
||||
"types": ["node"]
|
||||
},
|
||||
"exclude": ["**/*.spec.ts", "**/*.spec.tsx"],
|
||||
"exclude": [
|
||||
"**/*.spec.ts",
|
||||
"**/*.spec.tsx",
|
||||
"**/*.spec.js",
|
||||
"**/*.spec.jsx",
|
||||
"**/*.test.ts",
|
||||
"**/*.test.tsx",
|
||||
"**/*.test.js",
|
||||
"**/*.test.jsx",
|
||||
"**/*.tests.ts",
|
||||
"**/test-setup.ts"
|
||||
],
|
||||
"include": ["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx"]
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
"extends": "../../tsconfig.base.json",
|
||||
"compilerOptions": {
|
||||
"allowSyntheticDefaultImports": true,
|
||||
"noImplicitAny": false,
|
||||
"jsx": "react-native",
|
||||
"lib": ["dom", "esnext"],
|
||||
"moduleResolution": "node",
|
||||
|
|
|
@ -4,6 +4,7 @@ interface Language {
|
|||
langCode: string
|
||||
languageName: string
|
||||
languageLocalName: string
|
||||
locale: string
|
||||
active: boolean
|
||||
}
|
||||
|
||||
|
@ -12,24 +13,42 @@ export const languages: Language[] = [
|
|||
langCode: 'sv',
|
||||
languageName: 'Swedish',
|
||||
languageLocalName: 'Svenska',
|
||||
locale: 'sv',
|
||||
active: true,
|
||||
},
|
||||
{
|
||||
langCode: 'ar',
|
||||
languageName: 'Arabic',
|
||||
languageLocalName: 'اَلْعَرَبِيَّةُ',
|
||||
locale: 'ar',
|
||||
active: true,
|
||||
},
|
||||
{
|
||||
langCode: 'zh_Hant',
|
||||
languageName: 'Chinese (traditional)',
|
||||
languageLocalName: '繁體中文',
|
||||
locale: 'zh-cn',
|
||||
active: true,
|
||||
},
|
||||
{
|
||||
langCode: 'zh_Hans',
|
||||
languageName: 'Chinese (simplified)',
|
||||
languageLocalName: '简体中文',
|
||||
locale: 'zh-cn',
|
||||
active: true,
|
||||
},
|
||||
{
|
||||
langCode: 'nl',
|
||||
languageName: 'Dutch',
|
||||
languageLocalName: 'Nederlands',
|
||||
locale: 'nl',
|
||||
active: true,
|
||||
},
|
||||
{
|
||||
langCode: 'en',
|
||||
languageName: 'English',
|
||||
languageLocalName: 'English',
|
||||
locale: 'en',
|
||||
active: true,
|
||||
},
|
||||
|
||||
|
@ -37,6 +56,7 @@ export const languages: Language[] = [
|
|||
langCode: 'de',
|
||||
languageName: 'German',
|
||||
languageLocalName: 'Deutsch',
|
||||
locale: 'de',
|
||||
active: true,
|
||||
},
|
||||
|
||||
|
@ -44,60 +64,77 @@ export const languages: Language[] = [
|
|||
langCode: 'fi',
|
||||
languageName: 'Finnish',
|
||||
languageLocalName: 'Suomi',
|
||||
locale: 'fi',
|
||||
active: true,
|
||||
},
|
||||
{
|
||||
langCode: 'fr',
|
||||
languageName: 'French',
|
||||
languageLocalName: 'Français',
|
||||
locale: 'fr',
|
||||
active: true,
|
||||
},
|
||||
{
|
||||
langCode: 'it',
|
||||
languageName: 'Italian',
|
||||
languageLocalName: 'Italiano',
|
||||
locale: 'it',
|
||||
active: true,
|
||||
},
|
||||
{
|
||||
langCode: 'ja',
|
||||
languageName: 'Japanese',
|
||||
languageLocalName: '日本語',
|
||||
active: false,
|
||||
locale: 'ja',
|
||||
active: true,
|
||||
},
|
||||
{
|
||||
langCode: 'la',
|
||||
languageName: 'Latin',
|
||||
languageLocalName: 'Latina',
|
||||
active: false,
|
||||
locale: 'sv',
|
||||
active: true,
|
||||
},
|
||||
{
|
||||
langCode: 'nb_NO',
|
||||
languageName: 'Norwegian Bokmål',
|
||||
languageLocalName: 'Norsk bokmål',
|
||||
active: false,
|
||||
locale: 'nb',
|
||||
active: true,
|
||||
},
|
||||
{
|
||||
langCode: 'pl',
|
||||
languageName: 'Polish',
|
||||
languageLocalName: 'Polski',
|
||||
locale: 'pl',
|
||||
active: true,
|
||||
},
|
||||
{
|
||||
langCode: 'pt',
|
||||
languageName: 'Portuguese',
|
||||
languageLocalName: 'Português',
|
||||
locale: 'pt',
|
||||
active: true,
|
||||
},
|
||||
{
|
||||
langCode: 'ru',
|
||||
languageName: 'Russian',
|
||||
languageLocalName: 'русский',
|
||||
locale: 'ru',
|
||||
active: false,
|
||||
},
|
||||
{
|
||||
langCode: 'so',
|
||||
languageName: 'Somali',
|
||||
languageLocalName: 'af-Soomaali',
|
||||
active: false,
|
||||
locale: 'sv',
|
||||
active: true,
|
||||
},
|
||||
{
|
||||
langCode: 'es',
|
||||
languageName: 'Spanish',
|
||||
languageLocalName: 'Español',
|
||||
locale: 'es',
|
||||
active: true,
|
||||
},
|
||||
]
|
||||
|
@ -115,9 +152,12 @@ export const translations = {
|
|||
nb_NO: require('../translations/nb_NO.json'),
|
||||
nl: require('../translations/nl.json'),
|
||||
pl: require('../translations/pl.json'),
|
||||
pt: require('../translations/pt.json'),
|
||||
ru: require('../translations/ru.json'),
|
||||
so: require('../translations/so.json'),
|
||||
sv: require('../translations/sv.json'),
|
||||
zh_Hans: require('../translations/zh_Hans.json'),
|
||||
zh_Hant: require('../translations/zh_Hant.json'),
|
||||
}
|
||||
|
||||
export const translate = (key: string, options?: TranslateOptions) => {
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
import Link from './Link'
|
||||
|
||||
const Privacy = () => {
|
||||
return (
|
||||
<div>
|
||||
|
@ -5,9 +7,9 @@ const Privacy = () => {
|
|||
<h1>Öppna Skolplattformen</h1>
|
||||
<h2>Integritetspolicy</h2>
|
||||
<p>
|
||||
"Öppna Skolplattformen", hädanefter "appen", byggdes av "No free beer
|
||||
HB" som en kommersiell app. Appen hämtar all information från
|
||||
Stockholms Stads skolplattform, hädanefter Skolplattformen, efter
|
||||
"Öppna Skolplattformen", hädanefter "appen", byggs av "Not free beer
|
||||
AB" som en kommersiell app. Appen hämtar all information från
|
||||
Stockholms stads skolplattform, hädanefter Skolplattformen, efter
|
||||
inloggning via BankID. Appens funktion är därmed direkt knuten till
|
||||
att Skolplattformen fungerar. Vi kan endast ta ansvar för att vår kod
|
||||
fungerar – inte deras.
|
||||
|
@ -82,7 +84,14 @@ const Privacy = () => {
|
|||
du vill vara på den säkra sidan kan du återbesöka den här sidan då och
|
||||
då.
|
||||
</p>
|
||||
<p>Denna integritetspolicy gäller fr.o.m 2021-02-07</p>
|
||||
<p>
|
||||
Denna integritetspolicy gäller fr.o.m. 2021-09-13. Ändringar i denna
|
||||
policy finns dokumenterade på vår{' '}
|
||||
<Link.External href="https://github.com/kolplattformen/skolplattformen/">
|
||||
GitHub
|
||||
</Link.External>
|
||||
.
|
||||
</p>
|
||||
<h3>Kontakta oss</h3>
|
||||
<p>
|
||||
Tveka inte att kontakta oss om du har några frågor eller förslag till
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
import Link from './Link'
|
||||
|
||||
const QA = () => {
|
||||
return (
|
||||
<div className="header">
|
||||
|
@ -86,10 +88,10 @@ const QA = () => {
|
|||
<p>
|
||||
Din information är lika säker som i Skolplattformen. Vi är
|
||||
integritetsfanatiker och redogör för vår syn på dataskydd i Öppna
|
||||
skolplattformen i
|
||||
<a href="https://skolplattformen.org/integritet">
|
||||
skolplattformen i{' '}
|
||||
<Link.Internal href="https://skolplattformen.org/integritet">
|
||||
vår integritetspolicy
|
||||
</a>
|
||||
</Link.Internal>
|
||||
.
|
||||
</p>
|
||||
<h3>Men ni hanterar ju personinformation?</h3>
|
||||
|
@ -146,7 +148,7 @@ const QA = () => {
|
|||
utifrån det. Om vi loggar in med ditt konto, till och med om du sitter
|
||||
med och sköter inloggningen, lär vi se information vi inte har rätt
|
||||
att se. Därför ser vi i dagsläget ingen möjlighet att hjälpa dig :( Vi
|
||||
hoppas att Stockholms Stad kommer publicera dokumentation till sitt
|
||||
hoppas att Stockholms stad kommer publicera dokumentation till sitt
|
||||
API och även tillhandahålla säkra testmiljöer så att vi och andra kan
|
||||
utveckla de stöd som fler målgrupper behöver.
|
||||
</p>
|
||||
|
@ -247,7 +249,7 @@ const QA = () => {
|
|||
de?
|
||||
</h3>
|
||||
<p>
|
||||
Appen kostar 12 kronor. Intäkten registreras i handelsbolaget Not Free
|
||||
Appen kostar 12 kronor. Intäkten registreras i aktiebolaget Not Free
|
||||
Beer som ägs av tre av utvecklarna och går till att täcka kostnader
|
||||
för inköp. Det täcker inte på långa vägar den tid vi lagt ner. Med en
|
||||
låg engångskostnad ökar vi chansen att vi orkar syssla med underhåll
|
||||
|
@ -275,10 +277,10 @@ const QA = () => {
|
|||
Vi är enormt tacksamma för alla buggrapporter och förslag vi får och
|
||||
satsar mycket på att så snabbt som möjligt fixa de saker som dyker
|
||||
upp. För att få lite ordning så försöker vi samla alla buggar och
|
||||
önskemål på samma ställe, Github.
|
||||
<a href="https://github.com/kolplattformen/skolplattformen/issues">
|
||||
önskemål på samma ställe, Github.{' '}
|
||||
<Link.External href="https://github.com/kolplattformen/skolplattformen/issues">
|
||||
Klicka här
|
||||
</a>{' '}
|
||||
</Link.External>{' '}
|
||||
för att se vilka funktioner och buggar vi redan har tagit emot och
|
||||
jobbar på.
|
||||
</p>
|
||||
|
@ -312,7 +314,7 @@ const QA = () => {
|
|||
</p>
|
||||
<h3>Kontakta oss</h3>
|
||||
<p>
|
||||
Tveka inte att kontakta oss. Skicka ett mail till
|
||||
Tveka inte att kontakta oss. Skicka ett mail till{' '}
|
||||
<a href="mailto:info@skolplattformen.org">dev@skolplattformen.org</a>.
|
||||
</p>
|
||||
</div>
|
||||
|
|
6
index.js
6
index.js
|
@ -1,6 +0,0 @@
|
|||
import 'react-native-gesture-handler'
|
||||
import { AppRegistry } from 'react-native'
|
||||
import App from './apps/skolplattformen-sthlm/App'
|
||||
import { name as appName } from './apps/skolplattformen-sthlm/app.json'
|
||||
|
||||
AppRegistry.registerComponent(appName, () => App)
|
|
@ -310,7 +310,7 @@ export class ApiSkolplattformen extends EventEmitter implements Api {
|
|||
item: NewsItem
|
||||
): Promise<NewsItem | undefined> {
|
||||
if (this.isFake) {
|
||||
return fakeResponse(fake.news(child).find((ni) => ni.id === item.id))
|
||||
return fakeResponse(fake.news(child).find((ni) => ni.id === item.id) || {id: "", published: ""})
|
||||
}
|
||||
const url = routes.newsDetails(child.id, item.id)
|
||||
const session = this.getRequestInit()
|
||||
|
|
|
@ -810,7 +810,7 @@ const data: any = {
|
|||
intro:
|
||||
'Vi kommer efter att förskoleklassen är slut arrangera olika vinteraktiviteter genom fridtidsverksamheten.',
|
||||
body:
|
||||
'## Vänligen ta med hjälm, skridskor eller stjärtlapp. Alla barn måste ha hjälm på sig samt varma kläder. Vi kommer åka i backen bakom skolbyggnaden samt använda isen som spolats vid Mullsjöskolan. Personal kommer finnas på plats samt att vi erbjuda varm dryck, frukt och lek för de barn som ej har hjälm eller lämpligt åkdon.',
|
||||
'## Vänligen ta med hjälm, skridskor eller stjärtlapp.\n\n ![Bild](https://images.unsplash.com/photo-1495377701095-00261b767581?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=988&q=80)\n\n Alla barn måste ha hjälm på sig samt varma kläder. Vi kommer åka i backen bakom skolbyggnaden samt använda isen som spolats vid Mullsjöskolan. Personal kommer finnas på plats samt att vi erbjuda varm dryck, frukt och lek för de barn som ej har hjälm eller lämpligt åkdon.',
|
||||
imageUrl: '6607f9b923edb6f85aa4417bab43c0f8.jpg',
|
||||
fullImageUrl: 'https://unsplash.com/photos/yB_aiAWkm40',
|
||||
imageAltText: 'Nyhetsbild. Bildtext ej tillgänglig.',
|
||||
|
|
|
@ -26,9 +26,16 @@ export const newsItem = ({
|
|||
imageUrl: bannerImageUrl,
|
||||
fullImageUrl: `${IMAGE_HOST}${bannerImageUrl}`,
|
||||
imageAltText: altText,
|
||||
body: toMarkdown(body),
|
||||
body: toNonEmptyMarkdownString(body),
|
||||
})
|
||||
|
||||
// Fixes https://github.com/kolplattformen/skolplattformen/issues/525
|
||||
const toNonEmptyMarkdownString = (str: string): string => {
|
||||
const res = toMarkdown(str);
|
||||
if(res?.length == 0 ) return ' '
|
||||
return res
|
||||
}
|
||||
|
||||
const newsSort = (item1: NewsItem, item2: NewsItem): number => {
|
||||
const m1 = item1.modified || item1.published
|
||||
const m2 = item2.modified || item2.published
|
||||
|
|
|
@ -105,6 +105,9 @@ const overides = {
|
|||
}
|
||||
|
||||
export const toMarkdown = (html?: string): string => {
|
||||
|
||||
if(html?.length == 0) return ''
|
||||
|
||||
const rearranged = rearrangeWhitespace(html)
|
||||
const trimmed = clean(rearranged)
|
||||
const markdown = h2m(trimmed, { overides, converter })
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
{
|
||||
"subjects": {
|
||||
"TN": "Zeichensprache",
|
||||
"SVA": "Schewdishe als främdsprache",
|
||||
"SV": "Schwedish",
|
||||
"SL": "Handwerk",
|
||||
"SVA": "Schwedisch als Fremdsprache",
|
||||
"SV": "Schwedisch",
|
||||
"SL": "Werken",
|
||||
"SH": "Staatsbürgerkunde",
|
||||
"RE": "Religion",
|
||||
"HI": "Historie",
|
||||
"HI": "Geschichte",
|
||||
"GE": "Geografie",
|
||||
"NO": "Naturwissenschaftlichen Themen",
|
||||
"SO": "Gesellschaftsorientierte Themen",
|
||||
"NO": "Naturwissenschaften",
|
||||
"SO": "Gesellschaftslehre",
|
||||
"KE": "Chemie",
|
||||
"FY": "Physik",
|
||||
"BI": "Biologie",
|
||||
|
@ -18,6 +18,12 @@
|
|||
"IDH": "Sport und Gesundheit",
|
||||
"HKK": "Hauswirtschaft",
|
||||
"EN": "Englisch",
|
||||
"BL": "Kunst"
|
||||
"BL": "Kunst",
|
||||
"TK": "Technik"
|
||||
},
|
||||
"misc": {
|
||||
"PRANDIUM": "Mittagspause",
|
||||
"LUNCH": "Mittagspause",
|
||||
"RAST": "Pause"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,6 +22,8 @@ const translations: Translations = {
|
|||
la: require('./la.json'),
|
||||
nb_NO: require('./nb_NO.json'),
|
||||
pl: require('./pl.json'),
|
||||
pt: require('./pt.json'),
|
||||
zh_Hans: require('./zh_Hans.json'),
|
||||
}
|
||||
const languageList: string[] = Object.keys(translations)
|
||||
export type Language = typeof languageList[number]
|
||||
|
|
|
@ -0,0 +1,124 @@
|
|||
{
|
||||
"subjects": {
|
||||
"HKK": "Estudos domésticos e de consumo",
|
||||
"BL": "Arte",
|
||||
"EN": "Inglês",
|
||||
"MA": "Matemática",
|
||||
"MU": "Música",
|
||||
"BI": "Biologia",
|
||||
"FY": "Física",
|
||||
"GE": "Geografia",
|
||||
"NO": "Estudos científicos",
|
||||
"KE": "Química",
|
||||
"SO": "Temas de estudos sociais",
|
||||
"IDH": "Educação física e saúde",
|
||||
"TN": "Linguagem gestual",
|
||||
"ES": "Estética",
|
||||
"HI": "História",
|
||||
"RE": "Religião",
|
||||
"SH": "Educação cívica",
|
||||
"SL": "Trabalhos manuais",
|
||||
"SV": "Sueco",
|
||||
"DA": "Estudos preparatórios de dança",
|
||||
"JU": "Estudos judaicos",
|
||||
"SVA": "Sueco como segunda língua",
|
||||
"TK": "Tecnologia"
|
||||
},
|
||||
"traningsskolaSubjects": {
|
||||
"VAA": "Atividades diárias",
|
||||
"VEU": "Percepção",
|
||||
"KOM": "Comunicação",
|
||||
"MOT": "Coordenação física"
|
||||
},
|
||||
"languages": {
|
||||
"KMR": "Curdo, norte",
|
||||
"HUN": "Húngaro",
|
||||
"BUL": "Búlgaro",
|
||||
"ISL": "Islandês",
|
||||
"KOR": "Coreano",
|
||||
"SDH": "Curdo, sul",
|
||||
"LIT": "Lituano",
|
||||
"CKB": "Curdo, central",
|
||||
"AMH": "Amárico",
|
||||
"HYE": "Arménio",
|
||||
"AYM": "Aimará",
|
||||
"MYA": "Birmanês",
|
||||
"DAN": "Dinamarquês",
|
||||
"VLS": "Flamengo",
|
||||
"HEB": "Hebraico",
|
||||
"ITA": "Italiano",
|
||||
"CAT": "Catalão",
|
||||
"KUR": "Curdo",
|
||||
"MLT": "Maltês",
|
||||
"NOR": "Norueguês",
|
||||
"RON": "Romeno",
|
||||
"TIB": "Tibetano",
|
||||
"UKR": "Ucraniano",
|
||||
"AFR": "Africâner",
|
||||
"SQI": "Albanês",
|
||||
"BOS": "Bósnio",
|
||||
"EST": "Estoniano",
|
||||
"FIJ": "Fijiano",
|
||||
"FIN": "Finlandês",
|
||||
"FRA": "Francês",
|
||||
"KAT": "Georgiano",
|
||||
"GRE": "Grego",
|
||||
"GUJ": "Gujarati",
|
||||
"IND": "Indonésio",
|
||||
"YID": "Iídiche",
|
||||
"KAZ": "Cazaque",
|
||||
"ZHO": "Chinês",
|
||||
"NAN": "Chinês, min nan",
|
||||
"ROP": "Crioulo",
|
||||
"HRV": "Croata",
|
||||
"FAS": "Persa",
|
||||
"POR": "Português",
|
||||
"RUS": "Russo",
|
||||
"SLK": "Eslovaco",
|
||||
"ARA": "Árabe",
|
||||
"JPN": "Japonês",
|
||||
"YUE": "Chinês, cantonês",
|
||||
"LAV": "Letão",
|
||||
"DEU": "Alemão",
|
||||
"VIE": "Vietnamita",
|
||||
"CMN": "Chinês, mandarim",
|
||||
"MKD": "Macedónio",
|
||||
"LAO": "Laociano",
|
||||
"NLD": "Holandês",
|
||||
"NEP": "Nepalês",
|
||||
"HBS": "Servo-croata",
|
||||
"SLV": "Esloveno",
|
||||
"SPA": "Espanhol",
|
||||
"CES": "Checo",
|
||||
"TUR": "Turco",
|
||||
"SPK": "Outro idioma"
|
||||
},
|
||||
"specialLanguages": {
|
||||
"SVA": "O sueco como segunda língua",
|
||||
"EN": "Inglês",
|
||||
"FR": "Francês",
|
||||
"IT": "Italiano",
|
||||
"SV": "Sueco",
|
||||
"PO": "Português",
|
||||
"RY": "Russo",
|
||||
"SAM": "Sami",
|
||||
"SP": "Espanhol",
|
||||
"TN": "Linguagem gestual",
|
||||
"TY": "Alemão",
|
||||
"FI": "Finlandês",
|
||||
"JAP": "Japonês",
|
||||
"KI": "Chinês"
|
||||
},
|
||||
"categories": {
|
||||
"trainingSchool": "Escola obrigatória para crianças com graves dificuldades de aprendizagem",
|
||||
"modernLanguages": "Idiomas modernos",
|
||||
"unknown": "Desconhecido",
|
||||
"misc": "Diversos"
|
||||
},
|
||||
"misc": {
|
||||
"RAST": "Intervalo",
|
||||
"MTID": "Tempo do mentor",
|
||||
"LUNCH": "Almoço",
|
||||
"PRANDIUM": "Almoço"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,71 @@
|
|||
{
|
||||
"subjects": {
|
||||
"BL": "美术",
|
||||
"HKK": "家庭和消费者研究",
|
||||
"IDH": "体育与健康",
|
||||
"MA": "数学",
|
||||
"MU": "音乐",
|
||||
"BI": "生物",
|
||||
"FY": "物理",
|
||||
"KE": "化学",
|
||||
"SO": "社会研究项目",
|
||||
"GE": "地理",
|
||||
"HI": "历史",
|
||||
"RE": "宗教学",
|
||||
"SH": "公民学",
|
||||
"SL": "手工课",
|
||||
"SV": "瑞典语",
|
||||
"SVA": "瑞典语(第二语言)",
|
||||
"TN": "手语",
|
||||
"TK": "技术",
|
||||
"JU": "犹太学",
|
||||
"ES": "美学",
|
||||
"EN": "英语",
|
||||
"NO": "科学研究",
|
||||
"DA": "预备舞蹈研究"
|
||||
},
|
||||
"traningsskolaSubjects": {
|
||||
"MOT": "身体协调",
|
||||
"VAA": "日常活动",
|
||||
"VEU": "感知课",
|
||||
"KOM": "传媒学"
|
||||
},
|
||||
"specialLanguages": {
|
||||
"EN": "英语",
|
||||
"IT": "意大利语",
|
||||
"JAP": "日语",
|
||||
"KI": "汉语",
|
||||
"PO": "葡萄牙语",
|
||||
"SAM": "萨米语",
|
||||
"SP": "西班牙语",
|
||||
"SV": "瑞典语",
|
||||
"SVA": "瑞典语(第二语言)",
|
||||
"TN": "手语",
|
||||
"TY": "德语",
|
||||
"FR": "法语",
|
||||
"RY": "俄语",
|
||||
"FI": "芬兰语"
|
||||
},
|
||||
"languages": {
|
||||
"ACE": "亚齐语",
|
||||
"ACH": "阿科利语",
|
||||
"SPK": "其他语言",
|
||||
"ZUL": "祖鲁语",
|
||||
"TUR": "土耳其语",
|
||||
"DEU": "德语",
|
||||
"UIG": "维吾尔语",
|
||||
"UKR": "乌克兰语",
|
||||
"HUN": "匈牙利语",
|
||||
"URD": "乌尔都语",
|
||||
"UZB": "乌兹别克语",
|
||||
"VIE": "越南语",
|
||||
"WOL": "沃洛夫语",
|
||||
"YOR": "约鲁巴语、雅里巴语、约巴语"
|
||||
},
|
||||
"categories": {
|
||||
"unknown": "未知",
|
||||
"modernLanguages": "现代语言",
|
||||
"trainingSchool": "重度学习障碍儿童义务教育学校",
|
||||
"misc": "杂项"
|
||||
}
|
||||
}
|
|
@ -191,8 +191,6 @@ describe('useCalendar(child)', () => {
|
|||
expect(result.current.status).toEqual('loading')
|
||||
expect(result.current.data).toEqual([{ id: 2 }])
|
||||
|
||||
jest.advanceTimersToNextTimer()
|
||||
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
|
@ -222,8 +220,6 @@ describe('useCalendar(child)', () => {
|
|||
expect(result.current.status).toEqual('loading')
|
||||
expect(result.current.data).toEqual([{ id: 2 }])
|
||||
|
||||
jest.advanceTimersToNextTimer()
|
||||
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
|
|
|
@ -223,8 +223,6 @@ describe('useChildList()', () => {
|
|||
expect(result.current.status).toEqual('loading')
|
||||
expect(result.current.data).toEqual(echildrenCache)
|
||||
|
||||
jest.advanceTimersToNextTimer()
|
||||
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
|
@ -264,8 +262,6 @@ describe('useChildList()', () => {
|
|||
expect(result.current.status).toEqual('loading')
|
||||
expect(result.current.data).toEqual(echildrenCache)
|
||||
|
||||
jest.advanceTimersToNextTimer()
|
||||
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
|
|
|
@ -176,8 +176,6 @@ describe('useClassmates(child)', () => {
|
|||
expect(result.current.status).toEqual('loading')
|
||||
expect(result.current.data).toEqual([{ id: 2 }])
|
||||
|
||||
jest.advanceTimersToNextTimer()
|
||||
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
|
@ -207,8 +205,6 @@ describe('useClassmates(child)', () => {
|
|||
expect(result.current.status).toEqual('loading')
|
||||
expect(result.current.data).toEqual([{ id: 2 }])
|
||||
|
||||
jest.advanceTimersToNextTimer()
|
||||
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
|
|
|
@ -174,8 +174,6 @@ describe('useEtjanstChildren()', () => {
|
|||
expect(result.current.status).toEqual('loading')
|
||||
expect(result.current.data).toEqual([{ id: 2 }])
|
||||
|
||||
jest.advanceTimersToNextTimer()
|
||||
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
|
@ -205,8 +203,6 @@ describe('useEtjanstChildren()', () => {
|
|||
expect(result.current.status).toEqual('loading')
|
||||
expect(result.current.data).toEqual([{ id: 2 }])
|
||||
|
||||
jest.advanceTimersToNextTimer()
|
||||
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
|
|
|
@ -172,8 +172,6 @@ describe('useMenu(child)', () => {
|
|||
expect(result.current.status).toEqual('loading')
|
||||
expect(result.current.data).toEqual([{ id: 2 }])
|
||||
|
||||
jest.advanceTimersToNextTimer()
|
||||
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
|
@ -202,8 +200,6 @@ describe('useMenu(child)', () => {
|
|||
expect(result.current.status).toEqual('loading')
|
||||
expect(result.current.data).toEqual([{ id: 2 }])
|
||||
|
||||
jest.advanceTimersToNextTimer()
|
||||
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
|
|
|
@ -172,8 +172,6 @@ describe('useNews(child)', () => {
|
|||
expect(result.current.status).toEqual('loading')
|
||||
expect(result.current.data).toEqual([{ id: 2 }])
|
||||
|
||||
jest.advanceTimersToNextTimer()
|
||||
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
|
@ -202,8 +200,6 @@ describe('useNews(child)', () => {
|
|||
expect(result.current.status).toEqual('loading')
|
||||
expect(result.current.data).toEqual([{ id: 2 }])
|
||||
|
||||
jest.advanceTimersToNextTimer()
|
||||
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
|
|
|
@ -192,8 +192,6 @@ describe('useNewsDetails(child, newsItem)', () => {
|
|||
expect(result.current.status).toEqual('loading')
|
||||
expect(result.current.data).toEqual({ ...cached })
|
||||
|
||||
jest.advanceTimersToNextTimer()
|
||||
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
|
@ -223,8 +221,6 @@ describe('useNewsDetails(child, newsItem)', () => {
|
|||
expect(result.current.status).toEqual('loading')
|
||||
expect(result.current.data).toEqual({ ...cached })
|
||||
|
||||
jest.advanceTimersToNextTimer()
|
||||
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
|
|
|
@ -176,8 +176,6 @@ describe('useNotifications(child)', () => {
|
|||
expect(result.current.status).toEqual('loading')
|
||||
expect(result.current.data).toEqual([{ id: 2 }])
|
||||
|
||||
jest.advanceTimersToNextTimer()
|
||||
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
|
@ -207,8 +205,6 @@ describe('useNotifications(child)', () => {
|
|||
expect(result.current.status).toEqual('loading')
|
||||
expect(result.current.data).toEqual([{ id: 2 }])
|
||||
|
||||
jest.advanceTimersToNextTimer()
|
||||
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
|
|
|
@ -192,8 +192,6 @@ describe('useSchedule(child, from, to)', () => {
|
|||
expect(result.current.status).toEqual('loading')
|
||||
expect(result.current.data).toEqual([{ id: 2 }])
|
||||
|
||||
jest.advanceTimersToNextTimer()
|
||||
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
|
@ -223,8 +221,6 @@ describe('useSchedule(child, from, to)', () => {
|
|||
expect(result.current.status).toEqual('loading')
|
||||
expect(result.current.data).toEqual([{ id: 2 }])
|
||||
|
||||
jest.advanceTimersToNextTimer()
|
||||
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
|
|
|
@ -178,8 +178,6 @@ describe('useSkola24Children()', () => {
|
|||
expect(result.current.status).toEqual('loading')
|
||||
expect(result.current.data).toEqual([{ personGuid: '2' }])
|
||||
|
||||
jest.advanceTimersToNextTimer()
|
||||
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
|
@ -209,8 +207,6 @@ describe('useSkola24Children()', () => {
|
|||
expect(result.current.status).toEqual('loading')
|
||||
expect(result.current.data).toEqual([{ personGuid: '2' }])
|
||||
|
||||
jest.advanceTimersToNextTimer()
|
||||
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
|
|
|
@ -191,8 +191,6 @@ describe('useTimetable(child, week, year, lang)', () => {
|
|||
expect(result.current.status).toEqual('loading')
|
||||
expect(result.current.data).toEqual([{ id: 2 }])
|
||||
|
||||
jest.advanceTimersToNextTimer()
|
||||
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
|
@ -222,8 +220,6 @@ describe('useTimetable(child, week, year, lang)', () => {
|
|||
expect(result.current.status).toEqual('loading')
|
||||
expect(result.current.data).toEqual([{ id: 2 }])
|
||||
|
||||
jest.advanceTimersToNextTimer()
|
||||
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
|
|
|
@ -162,8 +162,6 @@ describe('useUser()', () => {
|
|||
expect(result.current.status).toEqual('loading')
|
||||
expect(result.current.data).toEqual({ id: 2 })
|
||||
|
||||
jest.advanceTimersToNextTimer()
|
||||
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
|
@ -192,8 +190,6 @@ describe('useUser()', () => {
|
|||
expect(result.current.status).toEqual('loading')
|
||||
expect(result.current.data).toEqual({ id: 2 })
|
||||
|
||||
jest.advanceTimersToNextTimer()
|
||||
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
await waitForNextUpdate()
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "skolplattformen",
|
||||
"version": "0.0.0",
|
||||
"version": "2.2.1",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
"start": "nx start",
|
||||
|
@ -61,7 +61,7 @@
|
|||
"react-native-safe-area-context": "^3.2.0",
|
||||
"react-native-screens": "^3.3.0",
|
||||
"react-native-simple-toast": "1.1.3",
|
||||
"react-native-svg": "12.1.0",
|
||||
"react-native-svg": "12.1.1",
|
||||
"react-native-typography": "1.4.1",
|
||||
"react-native-webview": "11.4.2",
|
||||
"react-redux": "^7.2.3",
|
||||
|
@ -128,6 +128,7 @@
|
|||
"node-blob": "^0.0.2",
|
||||
"node-fetch": "^2.6.1",
|
||||
"prettier": "^2.3.1",
|
||||
"react-native-clean-project": "^3.6.7",
|
||||
"react-native-codegen": "0.0.7",
|
||||
"react-native-oss-license": "^0.4.1",
|
||||
"react-native-svg": "12.1.1",
|
||||
|
|
13
yarn.lock
13
yarn.lock
|
@ -12034,6 +12034,11 @@ react-native-calendar-events@2.2.0:
|
|||
resolved "https://registry.npmjs.org/react-native-calendar-events/-/react-native-calendar-events-2.2.0.tgz"
|
||||
integrity sha512-tNUbhT6Ief0JM4OQzQAaz1ri0+MCcAoHptBcEXCz2g7q3A05pg62PR2Dio4F9t2fCAD7Y2+QggdY1ycAsF3Tsg==
|
||||
|
||||
react-native-clean-project@^3.6.7:
|
||||
version "3.6.7"
|
||||
resolved "https://registry.yarnpkg.com/react-native-clean-project/-/react-native-clean-project-3.6.7.tgz#6d22ad22fe3a1e6efdb040eb66f9bdfb2273ac2e"
|
||||
integrity sha512-GSJG1oNRJKtINPMzfHgRmu7HJs7phwgtwQ6GvyGARiySqQlU/bAc5zsI9rOeNPGlpgYongQtjOGdmqSpsWMJTw==
|
||||
|
||||
react-native-codegen@0.0.7:
|
||||
version "0.0.7"
|
||||
resolved "https://registry.npmjs.org/react-native-codegen/-/react-native-codegen-0.0.7.tgz"
|
||||
|
@ -12163,10 +12168,10 @@ react-native-svg-transformer@0.14.3:
|
|||
path-dirname "^1.0.2"
|
||||
semver "^5.6.0"
|
||||
|
||||
react-native-svg@12.1.0:
|
||||
version "12.1.0"
|
||||
resolved "https://registry.npmjs.org/react-native-svg/-/react-native-svg-12.1.0.tgz"
|
||||
integrity sha512-1g9qBRci7man8QsHoXn6tP3DhCDiypGgc6+AOWq+Sy+PmP6yiyf8VmvKuoqrPam/tf5x+ZaBT2KI0gl7bptZ7w==
|
||||
react-native-svg@12.1.1:
|
||||
version "12.1.1"
|
||||
resolved "https://registry.yarnpkg.com/react-native-svg/-/react-native-svg-12.1.1.tgz#5f292410b8bcc07bbc52b2da7ceb22caf5bcaaee"
|
||||
integrity sha512-NIAJ8jCnXGCqGWXkkJ1GTzO4a3Md5at5sagYV8Vh4MXYnL4z5Rh428Wahjhh+LIjx40EE5xM5YtwyJBqOIba2Q==
|
||||
dependencies:
|
||||
css-select "^2.1.0"
|
||||
css-tree "^1.0.0-alpha.39"
|
||||
|
|
Loading…
Reference in New Issue