Compare commits

...

52 Commits

Author SHA1 Message Date
Christian Landgren a8281d4370
trigger build 2024-04-30 23:13:02 +02:00
Christian Landgren 098bc544f2
correct context 2024-04-30 22:51:48 +02:00
Christian Landgren c16d60c2e2
Feat: pull image from github registry 2024-04-30 22:44:11 +02:00
Christian Landgren a7fa22cd54
Update website-build-and-push-registry.yml 2024-04-30 22:42:02 +02:00
Christian Landgren a7b9d81714
Trigger build 2024-04-30 13:18:06 +02:00
Christian Landgren b8ed895e52
Use semver patches for build to trigger new versions in docker registry 2024-04-30 13:16:47 +02:00
Christian Landgren caafb59f8d
Trigger build 2024-04-30 13:13:03 +02:00
Christian Landgren 81e448c035
Update and rename docker-publish.yml to website-build-and-push-registry.yml 2024-04-30 13:12:08 +02:00
Christian Landgren 62de54ef80
Ignore buildstep for website 2024-04-30 13:11:13 +02:00
Christian Landgren d5e4bfd149
Trigger build 2024-04-30 12:48:32 +02:00
Christian Landgren 28e1481e3f
Build and push website to ghcr.io 2024-04-30 12:44:44 +02:00
semantic-release-bot f2a87117ba chore(release): 2.17.0 [skip ci]
# [2.17.0](https://github.com/kolplattformen/skolplattformen/compare/v2.16.1...v2.17.0) (2024-04-29)

### Features

* 🎸 Added privacy policy for Öppna Elevappen on the site ([6eb6d3a](6eb6d3a6e3))
2024-04-29 22:26:21 +02:00
Kajetan Kazimierczak 6eb6d3a6e3 feat: 🎸 Added privacy policy for Öppna Elevappen on the site 2024-04-29 22:24:08 +02:00
Kajetan Kazimierczak c0e6ce9e06
chore: 🤖 Bumped version to 3.0.10 (#672) 2024-04-09 22:01:46 +02:00
Weblate (bot) c9907a68b6
Translations update from Hosted Weblate (#669)
* Translated using Weblate (Spanish)

Currently translated at 100.0% (114 of 114 strings)

Translation: Skolplattformen/App translations
Translate-URL: https://hosted.weblate.org/projects/skolplattformen/app-translation/es/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (114 of 114 strings)

Translation: Skolplattformen/App translations
Translate-URL: https://hosted.weblate.org/projects/skolplattformen/app-translation/es/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (114 of 114 strings)

Translation: Skolplattformen/App translations
Translate-URL: https://hosted.weblate.org/projects/skolplattformen/app-translation/es/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (114 of 114 strings)

Translation: Skolplattformen/App translations
Translate-URL: https://hosted.weblate.org/projects/skolplattformen/app-translation/nl/

---------

Co-authored-by: Sergio Avalos <sergio.avalos@gmail.com>
Co-authored-by: Karin Nygårds <karinnygards@gmail.com>
Co-authored-by: Raul Jimenez <rauljim@gmail.com>
Co-authored-by: Mikachu <micah.sh@proton.me>
2024-04-09 21:17:12 +02:00
Kajetan Kazimierczak 320ab1f1f5
Merge pull request #671 from kolplattformen/chore/v3.0.9
chore: 🤖 Bumped version to 3.0.9
2024-04-09 21:13:06 +02:00
Kajetan Kazimierczak 7962234e26 chore: 🤖 Bumped version to 3.0.9 2024-04-09 21:11:58 +02:00
Kajetan Kazimierczak b66f56b312
Update Podfile.lock 2024-04-09 20:51:08 +02:00
Kajetan Kazimierczak 442aad7fda
Update README.md
one more year...
2024-04-09 20:17:05 +02:00
semantic-release-bot 1f2c7ee762 chore(release): 2.16.1 [skip ci]
## [2.16.1](https://github.com/kolplattformen/skolplattformen/compare/v2.16.0...v2.16.1) (2024-04-09)

### Bug Fixes

* 🐛 Site moved to new url ([c93e27b](c93e27bec0))
2024-04-09 20:15:57 +02:00
Kajetan Kazimierczak d51cfe36fe
chore: 🤖 Updated TimeTable URLs (#670)
* chore: 🤖 Updated TimeTable URLs

* test: 💍 fixed failing tests
2024-04-09 20:13:11 +02:00
Kajetan Kazimierczak c93e27bec0 fix: 🐛 Site moved to new url 2024-02-13 15:32:29 +01:00
Kajetan Kazimierczak 84ddda3f46
Update routes.ts 2024-02-13 08:52:03 +01:00
semantic-release-bot ab90b944ae chore(release): 2.16.0 [skip ci]
# [2.16.0](https://github.com/kolplattformen/skolplattformen/compare/v2.15.10...v2.16.0) (2023-11-02)

### Features

* navigate from "Your Children" to specific tabs ([#660](https://github.com/kolplattformen/skolplattformen/issues/660)) ([34c376a](34c376a727))
2023-11-02 07:30:50 +01:00
Sebastian Palmqvist 34c376a727
feat: navigate from "Your Children" to specific tabs (#660)
* chore (substring to only show firstname, size of name made bigger)

* Co-authored-by: Lee Sheppard<coolusername244@users.noreply.github.com>
Co-authored-by: Lvan Ni <lvan-ni@users.noreply.github.com>

* chore(size edit)

Co-authored-by: Lee Sheppard<coolusername244@users.noreply.github.com>
Co-authored-by: Lvan Ni <lvan-ni@users.noreply.github.com>

* feat (navigate to specific tabs from childlist)

Co-authored-by: Lee Sheppard<coolusername244@users.noreply.github.com>
Co-authored-by: Lvan Ni <lvan-ni@users.noreply.github.com>

* fix (title now gets inititated with correct value, not default "News")

Co-authored-by: Lee Sheppard<coolusername244@users.noreply.github.com>
Co-authored-by: Lvan Ni <lvan-ni@users.noreply.github.com>

* Revert "feat (navigate to specific tabs from childlist)"

This reverts commit 8af068946d.

* fix(correct title showing in header)

* fix(removed TouchableOpacity. Using Pressable)

Co-authored-by: Lee Sheppard<coolusername244@users.noreply.github.com>
Co-authored-by: Lvan Ni <lvan-ni@users.noreply.github.com>

---------

Co-authored-by: Lvan Ni <lvan-ni@users.noreply.github.com>
2023-11-02 07:27:34 +01:00
Sergio Avalos ce535518a9
chore(docs): update ios_mac.md (#665)
Minor typo
2023-11-02 07:25:04 +01:00
Kajetan Kazimierczak 09ae4f0eaa
Bumped version to 3.0.8 2023-10-13 19:09:38 +02:00
Kajetan Kazimierczak b5a2943fbb
Update Podfile.lock 2023-10-13 16:44:01 +02:00
Kajetan Kazimierczak 4d3f940171
Update package.json 2023-10-13 08:38:25 +02:00
Kajetan Kazimierczak 6d9325c20c bumped version to 3.0.7 2023-10-12 19:06:17 +02:00
Kajetan Kazimierczak 27e9fb8cf7 uppdated webview 2023-10-12 19:00:25 +02:00
Kajetan Kazimierczak c26b118ad0
added .node-version 2023-10-11 11:13:21 +02:00
Kajetan Kazimierczak 4e51bb8de7
Update build.gradle 2023-10-11 10:15:25 +02:00
Kajetan Kazimierczak 5d61cd150a
Update build.gradle 2023-10-11 09:35:47 +02:00
Kajetan Kazimierczak 7e5013e7ca
Update .nvmrc 2023-10-09 21:44:41 +02:00
semantic-release-bot 394d0d973d chore(release): 2.15.10 [skip ci]
## [2.15.10](https://github.com/kolplattformen/skolplattformen/compare/v2.15.9...v2.15.10) (2023-10-07)

### Bug Fixes

* 🐛 Updated Timetable URLs ([#659](https://github.com/kolplattformen/skolplattformen/issues/659)) ([e6ba622](e6ba622fa9))
2023-10-07 23:37:04 +02:00
Kajetan Kazimierczak e6ba622fa9
fix: 🐛 Updated Timetable URLs (#659) 2023-10-07 23:33:45 +02:00
semantic-release-bot bee6d59283 chore(release): 2.15.9 [skip ci]
## [2.15.9](https://github.com/kolplattformen/skolplattformen/compare/v2.15.8...v2.15.9) (2023-09-21)

### Bug Fixes

* copyright year ([#657](https://github.com/kolplattformen/skolplattformen/issues/657)) ([20ae87f](20ae87fee1))
2023-09-21 07:11:41 +02:00
Mohammed Chammam 20ae87fee1
fix: copyright year (#657) 2023-09-21 07:08:31 +02:00
Christian Landgren 565c27e6fb
Host web in kubernetes instead of Vercel (#647)
* chore: upgrade to node 16.13

* feat: add kubernetes manifests to run the web in kubernetes instead of Vercel

* fix: rearrange build scripts for speed

* feat: add readiness prope to never replace a working site with a failed one

* fix: add headers for hsts etc

* fix: add unsafe-inline

* fix: duplicate entities inline-style

* fix: add ipv6 support in web

* fix: Ingress should be ClusterIP, not LoadBalancer

* Add resources

* feat: switch to main domain

* fix: hsts preload requires www to also be encrypted
2023-09-18 23:25:34 +02:00
semantic-release-bot 6589d85ab0 chore(release): 2.15.8 [skip ci]
## [2.15.8](https://github.com/kolplattformen/skolplattformen/compare/v2.15.7...v2.15.8) (2023-09-17)

### Bug Fixes

*  removed price components. Altered QA. ([#653](https://github.com/kolplattformen/skolplattformen/issues/653)) ([fef71c7](fef71c7923))
2023-09-17 19:42:11 +02:00
Sebastian Palmqvist fef71c7923
fix: removed price components. Altered QA. (#653)
* fix: (index.tsx, FunFacts.tsx, NavLinks.tsx, QA.tsx) removed price components. Altered QA.

* Keeping FunFacts.tsx unchanged. Changing value of price to 0.

Co-authored-by: Lee Sheppard <coolusername244@users.noreply.github.com>
Co-authored-by: Lvan Ni <lvan-ni@users.noreply.github.com>

* Updated price to 0. Altered PricingTemp text.

* fix: (PricingTemp.tsx) added features to "baseFeatures"

---------

Co-authored-by: Lee Sheppard <coolusername244@users.noreply.github.com>
Co-authored-by: Lvan Ni <lvan-ni@users.noreply.github.com>
2023-09-17 19:38:08 +02:00
semantic-release-bot ae5fd0624c chore(release): 2.15.7 [skip ci]
## [2.15.7](https://github.com/kolplattformen/skolplattformen/compare/v2.15.6...v2.15.7) (2023-03-28)

### Bug Fixes

* 🐛 Change broken links caused by name change of repo ([#649](https://github.com/kolplattformen/skolplattformen/issues/649)) ([61d47b4](61d47b4440))
2023-03-28 22:38:58 +02:00
Oskar Strömberg 61d47b4440
fix: 🐛 Change broken links caused by name change of repo (#649) 2023-03-28 22:35:19 +02:00
semantic-release-bot ee35ba7108 chore(release): 2.15.6 [skip ci]
## [2.15.6](https://github.com/kolplattformen/skolplattformen/compare/v2.15.5...v2.15.6) (2023-03-21)

### Bug Fixes

* 🐛 BankID urls changed ([#646](https://github.com/kolplattformen/skolplattformen/issues/646)) ([25a2d7f](25a2d7f3f5))
2023-03-21 21:35:15 +01:00
Kajetan Kazimierczak 25a2d7f3f5
fix: 🐛 BankID urls changed (#646)
* fix: 🐛 BankID urls changed

* lint

* fix: 🐛 Tests
2023-03-21 21:31:57 +01:00
Kajetan Kazimierczak 0db53ca046
Merge pull request #645 from kolplattformen/chore/android-targetversion
chore: 🤖 fix android build and deploy
2023-01-18 22:37:52 +01:00
Kajetan Kazimierczak f7493767b0 chore: 🤖 fix android build and deploy 2023-01-18 22:36:36 +01:00
Kajetan Kazimierczak 7b3dfb91e7
Merge pull request #644 from kolplattformen/chore/kotlin-version
chore: 🤖 kotlinVersion in build.gradle
2023-01-18 21:52:25 +01:00
Kajetan Kazimierczak 52c491213c chore: 🤖 kotlinVersion in build.gradle 2023-01-18 21:50:12 +01:00
Viktor Sarström 3a9c337bdd Merge branch 'main' of github.com:kolplattformen/skolplattformen 2023-01-18 13:31:55 +01:00
Viktor Sarström 68249e849a removed fixe 2023-01-18 13:31:34 +01:00
40 changed files with 1225 additions and 699 deletions

View File

@ -4,6 +4,8 @@ on:
push:
branches:
- main
paths-ignore:
- 'apps/website/**'
jobs:
build:

View File

@ -0,0 +1,81 @@
name: Docker
# Build to docker registry. This will trigger an update event from the Kubernetes cluster
on:
push:
branches: [ "main" ]
# Publish semver tags as releases.
tags: [ 'v*.*.*' ]
paths:
- 'apps/website/**'
pull_request:
branches: [ "main" ]
env:
# Use docker.io for Docker Hub if empty
REGISTRY: ghcr.io
# github.repository as <account>/<repo>
IMAGE_NAME: ${{ github.repository }}
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
# This is used to complete the identity challenge
# with sigstore/fulcio when running outside of PRs.
id-token: write
steps:
- name: Checkout repository
uses: actions/checkout@v3
- run: |
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git config --global user.name "github-actions[bot]"
if [[ $GITHUB_REF == refs/tags/production* ]]; then
npm version major
elif [[ $GITHUB_REF == refs/tags/staging* ]]; then
npm version minor
else
npm version patch
fi
- name: 📝 Get Current Version
id: package-version
uses: martinbeentjes/npm-get-version-action@main
# Set up BuildKit Docker container builder to be able to build
# multi-platform images and export cache
# https://github.com/docker/setup-buildx-action
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@f95db51fddba0c2d1ec667646a06c2ce06100226 # v3.0.0
# Login against a Docker registry except on PR
# https://github.com/docker/login-action
- name: Log into registry ${{ env.REGISTRY }}
if: github.event_name != 'pull_request'
uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
# Build and push Docker image with Buildx (don't push on PR)
# https://github.com/docker/build-push-action
- name: Build and push Docker image
id: build-and-push
uses: docker/build-push-action@0565240e2d4ab88bba5387d719585280857ece09 # v5.0.0
with:
context: apps/website
push: ${{ github.event_name != 'pull_request' }}
tags: |
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.package-version.outputs.current-version}},
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
cache-from: type=gha
cache-to: type=gha,mode=max

1
.node-version Normal file
View File

@ -0,0 +1 @@
16.19.1

2
.nvmrc
View File

@ -1 +1 @@
v14.15.4
v16.19.1

File diff suppressed because it is too large Load Diff

View File

@ -161,7 +161,7 @@ Once done, create a _pull request_ where you explain why we should incorporate y
If you're new to GitHub, there's a number of excellent guides available, such as [this one on forking projects and making pull requests](https://guides.github.com/activities/forking/).
There are many ways to contribute to the project. \
If you don't know how to program and want help, you can [file an issue](https://github.com/kolplattformen/skolplattformen-app/issues/new) to let us know when something isn't working properly. \
If you don't know how to program and want help, you can [file an issue](https://github.com/kolplattformen/skolplattformen/issues/new) to let us know when something isn't working properly. \
We're super duper happy for both issues and pull requests, and we try to answer all of them as soon as humanly possible.
Another way to contribute is by helping translate Öppna skolplattformen [on Hosted Weblate](https://hosted.weblate.org/engage/skolplattformen-app/) into a new language, or to improve existing translations.
@ -194,7 +194,7 @@ If you're offended by this initiative, rest assured there is no reason to be —
## License
Öppna skolplattformen is copyright 20202021 Not Free Beer AB.
Öppna skolplattformen is copyright 20202024 Not Free Beer AB.
Licensed under the [Apache License, Version 2.0](LICENSE) (the "License"); you may use Öppna skolplattformen in compliance with the License. A copy of the License is included with this repository.

View File

@ -139,7 +139,7 @@ android {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 20000
versionName "3.0.5"
versionName "3.0.10"
}
splits {
abi {

View File

@ -11,6 +11,7 @@
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:exported="true"
android:label="@string/app_name"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:launchMode="singleTask"

View File

@ -4,9 +4,10 @@ buildscript {
ext {
buildToolsVersion = "30.0.2"
minSdkVersion = 21
compileSdkVersion = 30
targetSdkVersion = 30
compileSdkVersion = 33
targetSdkVersion = 33
ndkVersion = "21.4.7075529"
kotlinVersion = "1.6.0"
}
repositories {
google()
@ -35,12 +36,6 @@ allprojects {
google()
maven { url 'https://www.jitpack.io' }
}
configurations.all {
resolutionStrategy {
force "com.facebook.react:react-native:0.67.+"
force "com.facebook.react:hermes-engine:0.67.+"
}
}
}
subprojects {

View File

@ -139,7 +139,10 @@ const TabNavigator = ({
)
const getHeaderTitle = (route: any) => {
const routeName = getFocusedRouteNameFromRoute(route) ?? 'News'
const routeName =
getFocusedRouteNameFromRoute(route) ??
route.params.initialRouteName ??
'News'
return getRouteTitleFromName(routeName)
}

View File

@ -18,7 +18,7 @@ import {
} from '@ui-kitten/components'
import moment, { Moment } from 'moment'
import React, { useEffect } from 'react'
import { TouchableOpacity, useColorScheme, View } from 'react-native'
import { Pressable, useColorScheme, View } from 'react-native'
import { useTranslation } from '../hooks/useTranslation'
import { Colors, Layout, Sizing } from '../styles'
import { getMeaningfulStartingDate } from '../utils/calendarHelpers'
@ -157,11 +157,15 @@ export const ChildListItem = ({
)
return (
<TouchableOpacity
onPress={() => navigation.navigate('Child', { child, color })}
>
<View style={styles.card}>
<View style={styles.cardHeader}>
<View style={styles.card}>
<View style={styles.cardHeader}>
<Pressable
style={({ pressed }) => [
styles.cardHeaderLeft || {},
{ opacity: pressed ? 0.5 : 1 },
]}
onPress={() => navigation.navigate('Child', { child, color })}
>
<View style={styles.cardHeaderLeft}>
<StudentAvatar name={studentName(child.name)} color={color} />
<View style={styles.cardHeaderText}>
@ -178,16 +182,37 @@ export const ChildListItem = ({
name="star"
/>
</View>
</View>
</Pressable>
</View>
<Pressable
style={({ pressed }) => ['' || {}, { opacity: pressed ? 0.5 : 1 }]}
onPress={() =>
navigation.navigate('Child', {
child,
color,
initialRouteName: 'Calendar',
})
}
>
<DaySummary child={child} date={meaningfulStartingDate} />
{scheduleAndCalendarThisWeek.slice(0, 3).map((calendarItem, i) => (
<Text category="p1" key={i}>
{`${calendarItem.title} (${displayDate(calendarItem.startDate)})`}
</Text>
))}
</Pressable>
<Pressable
style={({ pressed }) => ['' || {}, { opacity: pressed ? 0.5 : 1 }]}
onPress={() =>
navigation.navigate('Child', {
child,
color,
initialRouteName: 'News',
})
}
>
<Text category="c2" style={styles.label}>
{t('navigation.news')}
</Text>
@ -202,43 +227,52 @@ export const ChildListItem = ({
{newsItem.header ?? ''}
</Text>
))}
</Pressable>
{scheduleAndCalendarThisWeek.length ||
notificationsThisWeek.length ||
newsThisWeek.length ? null : (
<Text category="p1" style={styles.noNewNewsItemsText}>
{t('news.noNewNewsItemsThisWeek')}
{scheduleAndCalendarThisWeek.length ||
notificationsThisWeek.length ||
newsThisWeek.length ? null : (
<Text category="p1" style={styles.noNewNewsItemsText}>
{t('news.noNewNewsItemsThisWeek')}
</Text>
)}
{shouldShowLunchMenu ? (
<Pressable
style={({ pressed }) => ['' || {}, { opacity: pressed ? 0.5 : 1 }]}
onPress={() =>
navigation.navigate('Child', {
child,
color,
initialRouteName: 'Menu',
})
}
>
<Text category="c2" style={styles.label}>
{meaningfulStartingDate.format(
'[' + t('schedule.lunch') + '] dddd'
)}
</Text>
)}
{shouldShowLunchMenu ? (
<>
<Text category="c2" style={styles.label}>
{meaningfulStartingDate.format(
'[' + t('schedule.lunch') + '] dddd'
)}
</Text>
<Text>
{menu[meaningfulStartingDate.isoWeekday() - 1]?.description}
</Text>
</>
) : null}
<Text>
{menu[meaningfulStartingDate.isoWeekday() - 1]?.description}
</Text>
</Pressable>
) : null}
<View style={styles.itemFooter}>
<Button
accessible
accessibilityRole="button"
accessibilityLabel={`${child.name}, ${t('abscense.title')}`}
appearance="ghost"
accessoryLeft={AlertIcon}
status="primary"
style={styles.absenceButton}
onPress={() => navigation.navigate('Absence', { child })}
>
{t('abscense.title')}
</Button>
</View>
<View style={styles.itemFooter}>
<Button
accessible
accessibilityRole="button"
accessibilityLabel={`${child.name}, ${t('abscense.title')}`}
appearance="ghost"
accessoryLeft={AlertIcon}
status="primary"
style={styles.absenceButton}
onPress={() => navigation.navigate('Absence', { child })}
>
{t('abscense.title')}
</Button>
</View>
</TouchableOpacity>
</View>
)
}

View File

@ -19,7 +19,11 @@ export const NavigationTitle = ({ title, subtitle }: NavigationTitleProps) => {
{title}
</Text>
)}
{subtitle && <Text style={styles.subtitle}>{subtitle}</Text>}
{subtitle && (
<Text style={styles.subtitle}>
{subtitle.substring(0, subtitle.indexOf(' '))}
</Text>
)}
</View>
)
}
@ -32,5 +36,5 @@ const styles = StyleSheet.create({
...fontSize.sm,
fontWeight: '500',
},
subtitle: { ...fontSize.xxs },
subtitle: { ...fontSize.base },
})

View File

@ -299,7 +299,7 @@ PODS:
- react-native-simple-toast (1.1.3):
- React-Core
- Toast (~> 4.0.0)
- react-native-webview (11.15.0):
- react-native-webview (12.4.0):
- React-Core
- React-perflogger (0.66.4)
- React-RCTActionSheet (0.66.4):
@ -617,7 +617,7 @@ SPEC CHECKSUMS:
react-native-restart: 733a51ad137f15b0f8dc34c4082e55af7da00979
react-native-safe-area-context: 584dc04881deb49474363f3be89e4ca0e854c057
react-native-simple-toast: bf002828cf816775a6809f7a9ec3907509bce11f
react-native-webview: e89bf2dba26a04cda967814df3ed1be99f291233
react-native-webview: 65f1143983cfeaedf02fd25b2621d3f4a37075de
React-perflogger: 93075d8931c32cd1fce8a98c15d2d5ccc4d891bd
React-RCTActionSheet: 7d3041e6761b4f3044a37079ddcb156575fb6d89
React-RCTAnimation: 743e88b55ac62511ae5c2e22803d4f503f2a3a13
@ -646,4 +646,4 @@ SPEC CHECKSUMS:
PODFILE CHECKSUM: f4a92b32cc4938e15ad7ccfefe9898548670abed
COCOAPODS: 1.11.2
COCOAPODS: 1.14.2

View File

@ -530,9 +530,9 @@
);
inputPaths = (
"${PODS_ROOT}/Target Support Files/Pods-app-appTests/Pods-app-appTests-frameworks.sh",
"${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",
"${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",
);
name = "[CP] Embed Pods Frameworks";
outputPaths = (
@ -610,9 +610,9 @@
);
inputPaths = (
"${PODS_ROOT}/Target Support Files/Pods-app/Pods-app-frameworks.sh",
"${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",
"${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",
);
name = "[CP] Embed Pods Frameworks";
outputPaths = (
@ -794,7 +794,7 @@
ENABLE_BITCODE = NO;
INFOPLIST_FILE = app/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
MARKETING_VERSION = 3.0.5;
MARKETING_VERSION = 3.0.10;
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",
@ -823,7 +823,7 @@
DEVELOPMENT_TEAM = "";
INFOPLIST_FILE = app/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
MARKETING_VERSION = 3.0.5;
MARKETING_VERSION = 3.0.10;
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",

View File

@ -4,13 +4,18 @@
"noNewNewsItemsThisWeek": "No hay noticias nuevas esta semana.",
"backToChild": "Volver al niño",
"title": "Noticias de Skolplattformen",
"published": "Publicada"
"published": "Publicada",
"updated": "Actualizado",
"search": {
"placeholder": "Buscar en las noticias…"
}
},
"navigation": {
"notifications": "Notificaciones",
"news": "Noticias",
"calender": "Calendario",
"menu": "Menú"
"menu": "Menú",
"classmates": "Compañeros de clase"
},
"language": {
"changeLanguage": "Cambiar idioma",
@ -25,20 +30,28 @@
"loading": "Cargando…",
"confirm": "Confirmar",
"title": "Öppna skolplattformen",
"cancel": "Anular"
"cancel": "Anular",
"tomorrow": "Mañana",
"logoutAndClearPersonalData": "Cierre la sesión y borre sus datos personales",
"logoutAndClearAllDataInclSettings": "Cierre la sesión y borre todos sus datos incluyendo sus configuraciones"
},
"children": {
"viewStatus": "Ver estado en skolplattformen.org",
"tryAgain": "Intentar otra vez",
"title": "Tus hijos",
"noKids_title": "Sin niños"
"noKids_title": "Sin niños",
"loadingErrorHeading": "¡Ahijoles!",
"loadingErrorInformationText": "La página no pudo ser cargada. Intente de nuevo o mire su estado actual en skolplattformen.org.",
"noKids_description": "No hay infantes registrados en la ciudad de Estocolmo con su número de identificación personal"
},
"calender": {
"showCalenderActions": "Mostrar acciones de calendario",
"saveToCalenderSuccess": "✔️ Guardado en el calendario",
"saveToCalenderError": "Algo salió mal",
"saveToCalender": "Guardar en calendario",
"approveAccessToCalender": "Tienes que aprobar el acceso a tu calendario"
"approveAccessToCalender": "Tienes que aprobar el acceso a tu calendario",
"emptyText": "No hay algo que mostrar",
"emptyHeadline": "El calendario está un poco vacío"
},
"auth": {
"words": {
@ -60,8 +73,8 @@
"fast": "rápida",
"fun": "divertido"
},
"subtitle": "La alternativa {{word}}",
"placeholder_SocialSecurityNumber": "Tu personnummer",
"subtitle": "La alternativa de {{word}}",
"placeholder_SocialSecurityNumber": "Tu número de identidad personal",
"loginFailed": "No se pudo iniciar sesión. Vuelva a intentarlo.",
"chooseLoginMethod": "Elija el método de inicio de sesión",
"bankid": {
@ -72,17 +85,27 @@
},
"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"
"a11y_image_two_boys": "Fotografia de dos personas mirando su telefono movil",
"chooseSchoolPlatform": "Elija la plataforma",
"a11y_clear_social_security_input_field": "Borrar el campo del número de identificación personal",
"loginSuccessful": "Se ha iniciado la sesión correctamente, cargando…",
"freja": {
"OpenManually": "Abrir Freja eID+ manualmente",
"OpenOnThisDevice": "Abrir Freja eID+ en este dispositivo",
"Waiting": "Esperando a Freja eID+…"
},
"a11y_select_login_method": "Seleccione el metodo para iniciar sesión"
},
"abscense": {
"title": "Informar ausencia",
"startTime": "hora de inicio",
"selectAbscenseStartTime": "Elige la hora de inicio",
"personalNumberMissing": "Falta el personnummer",
"invalidPersonalNumber": "El personnumer no es válido",
"personalNumberMissing": "Falta el número personal",
"invalidPersonalNumber": "Número personal inválido",
"entireDay": "Día completo",
"endTime": "hora de finalización",
"selectAbscenseEndTime": "Elige la hora de finalización"
"selectAbscenseEndTime": "Elige hora de finalización",
"childsPersonalNumber": "Numero de identificación del infante (personnummer)"
},
"abbrevations": {
"upperSecondarySchool": "Escuela Secundaria Obligatoria",
@ -92,5 +115,42 @@
},
"notifications": {
"notificationTitle": "Notificación: {{message}} ({{dateCreated}})"
},
"contact": {
"home": "Dirección",
"email": "Correo electrónico",
"call": "Llamar",
"a11y_show_contact_info_button_label": "Mostrar información de contacto",
"a11y_show_contact_info_button_hint": "Muestra información de contacto",
"sms": "Mensaje de texto"
},
"settings": {
"language": "Idioma",
"useSystemTheme": "Use el aspecto claro/oscuro dispositivo",
"licenses": "Licencias",
"themeAuto": "Automático",
"appearance": "Diseño",
"theme": "Aspecto",
"settings": "Configuraciones"
},
"themes": {
"dark": "Oscuro",
"light": "Claro"
},
"menu": {
"emptyText": "No hay nada para esta semana",
"emptyHeadline": "El menu del almuerzo se ve algo vacio"
},
"classmates": {
"class": "Clase",
"child": "Infante",
"contactsForGuardiansFor": "Información de contacto de los tutores de"
},
"schedule": {
"gymBag": "Mochila de gimnasio",
"end": "Termina",
"start": "Inicia",
"lunch": "Almuerzo",
"week": "Semana"
}
}

View File

@ -10,7 +10,8 @@
"socialSecurityNumber": "Burgerservicenummer",
"cancel": "Annuleren",
"logoutAndClearAllDataInclSettings": "Log uit en wis alle gegevens inclusief instellingen",
"logoutAndClearPersonalData": "Uitloggen en persoonlijke gegevens wissen"
"logoutAndClearPersonalData": "Uitloggen en persoonlijke gegevens wissen",
"tomorrow": "Morgen"
},
"auth": {
"placeholder_SocialSecurityNumber": "Jouw burgerservicenummer",
@ -46,7 +47,14 @@
"a11y_select_login_method": "Selecteer de inlogmethode",
"a11y_clear_social_security_input_field": "Wis het veld voor het burgerservicenummer",
"a11y_image_two_boys": "Foto van twee mensen die naar hun mobiele telefoons kijken",
"a11y_change_language": "Selecteer je taal"
"a11y_change_language": "Selecteer je taal",
"chooseSchoolPlatform": "Platform kiezen",
"freja": {
"OpenManually": "Freja eID+ handmatig openen",
"Waiting": "Wachten op Freja eID+…",
"OpenOnThisDevice": "Freja eID+ openen op dit apparaat"
},
"loginSuccessful": "Inloggen gelukt, laden…"
},
"abbrevations": {
"preSchool": "Peuterschool",
@ -98,7 +106,9 @@
"approveAccessToCalender": "Je moet de toegang tot je agenda goedkeuren",
"saveToCalenderError": "Er is iets fout gegaan",
"saveToCalenderSuccess": "✔️ Opgeslagen in kalender",
"saveToCalender": "Opslaan in kalender"
"saveToCalender": "Opslaan in kalender",
"emptyHeadline": "De kalender ziet er nogal leeg uit",
"emptyText": "Kon niets vinden om te laten zien"
},
"notifications": {
"notificationTitle": "Melding: {{message}} ({{dateCreated}})"
@ -114,10 +124,11 @@
"end": "Eind",
"gymBag": "Sporttas",
"lunch": "Middageten",
"start": "Start"
"start": "Start",
"week": "Week"
},
"contact": {
"a11y_show_contact_info_button_hint": "Toon contactgegevens",
"a11y_show_contact_info_button_hint": "Toont contactgegevens",
"email": "E-mail",
"home": "Adres",
"call": "Telefoongesprek",

View File

@ -0,0 +1,2 @@
k8s
k8s

44
apps/website/Dockerfile Normal file
View File

@ -0,0 +1,44 @@
# Install dependencies only when needed
FROM node:16-alpine AS builder
# Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed.
RUN apk add --no-cache libc6-compat autoconf automake build-base curl git libtool make nodejs npm pkgconf nasm yasm optipng
WORKDIR /app
COPY package.json yarn.lock ./
RUN yarn install --frozen-lockfile
COPY . .
ENV NEXT_TELEMETRY_DISABLED 1
RUN yarn build
# Production image, copy all the files and run next
FROM node:16-alpine AS runner
WORKDIR /app
ENV NODE_ENV production
RUN addgroup -g 1001 -S nodejs
RUN adduser -S nextjs -u 1001
# You only need to copy next.config.js if you are NOT using the default configuration
# COPY --from=builder /app/next.config.js ./
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/package.json ./package.json
COPY --from=builder /app/next.* ./
COPY --from=builder /app/*.js ./
COPY --from=builder /app/*.ts ./
COPY --from=builder /app/public ./public
COPY --from=builder --chown=nextjs:nodejs /app/.next ./.next
USER nextjs
EXPOSE 3000
ENV PORT 3000
# Next.js collects completely anonymous telemetry data about general usage.
# Learn more here: https://nextjs.org/telemetry
# Uncomment the following line in case you want to disable telemetry.
ENV NEXT_TELEMETRY_DISABLED 1
CMD ["yarn", "start"]

View File

@ -56,6 +56,11 @@ const Footer = () => {
Integritetspolicy
</Link.Internal>
</li>
<li>
<Link.Internal href="/integritetspolicy-elevapp">
Integritetspolicy ElevApp
</Link.Internal>
</li>
<li>
<Link.Internal href="/qa">Frågor och svar</Link.Internal>
</li>

View File

@ -3,7 +3,7 @@ import DownloadButtons from './DownloadButtons'
import Icon from './Icon'
import SectionTitle from './SectionTitle'
export const price = 11
export const price = 0
const baseFeatures = [
{

View File

@ -17,6 +17,14 @@ const baseFeatures = [
included: true,
title: 'Se notifieringar',
},
{
included: true,
title: 'Se klasslista',
},
{
included: true,
title: 'Se schema',
},
{
included: false,
title: 'Gratis support',
@ -32,17 +40,12 @@ const Pricing = () => {
<section className="px-5 py-8 md:px-0 md:py-32" id="vad-kostar-det">
<div className="max-w-2xl mx-auto">
<SectionTitle
title="Varför inte gratis?"
text={`
Vi som bygger appen vill gärna fortsätta vidareutveckla den och även ha möjlighet att ge ersättning
till de som hjälper till. Vi gjorde ett försök att ge ut appen gratis och hoppades att fler kunde stötta oss via
Patreon istället. Det visade sig inte vara hållbart men om vi får fler sponsorer kommer vi göra appen gratis igen!
`}
title="Appen är Gratis,"
text={`samtidigt, för att kunna fortsätta utveckla och bibehålla appens kvalitet så länge som möjligt, skulle vi uppskatta mycket om du bidrar på Patreon!`}
/>
</div>
<div className="flex">
<div className="flex flex-col items-center inline-block px-5 py-8 mx-auto text-center shadow-lg rounded-md dark:bg-gray-800">
<h3 className="text-3xl text-gray-800 dark:text-gray-400">Just nu</h3>
<div className="mt-5 text-6xl text-pink-500">
{formatPrice(price)}
</div>

View File

@ -87,7 +87,7 @@ const Privacy = () => {
<p>
Denna integritetspolicy gäller fr.o.m. 2021-09-13. Ändringar i denna
policy finns dokumenterade vår{' '}
<Link.External href="https://github.com/kolplattformen/skolplattformen-app/">
<Link.External href="https://github.com/kolplattformen/skolplattformen/">
GitHub
</Link.External>
.

View File

@ -0,0 +1,105 @@
import Link from './Link'
const PrivacyElevApp = () => {
return (
<div>
<div className="max-w-6xl mx-auto px-5 md:px-0 my-5 md:my-24 prose dark:prose-dark">
<h1>Öppna Elevappen</h1>
<h2>Integritetspolicy</h2>
<p>
"Öppna Elevappen", hädanefter "appen", byggs av "Not free beer
AB" som en kommersiell app. Appen hämtar all information från
respektive skolplattform, hädanefter Skolplattformen, efter
inloggning via respektive plattforms inloggningsmetod. 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.
</p>
<p>
Denna sida är till för att informera våra besökare och användare om
våra policies gällande insamling och hantering av personlig
information från användare av tjänsten.
</p>
<h3>TLDR (~kort sammanfattning ren svenska)</h3>
<p>
All information i appen kommer från Skolplattformen. Informationen
lämnar aldrig din telefon. Vi är snudd integritetsfanatiker och
skulle aldrig drömma om att samla in information om dig eller dina
barn. Det enda som lagras är sånt som lagras i din telefon för att det
ska snabbare att använda appen. Om vi börjar samla loggar för att
lättare kunna lösa eventuella buggar kommer vi se till att de inte
innehåller någon som helst information om dig - bara om koden.
</p>
<h3>Insamling och användning av personlig information</h3>
<p>
All information som hämtas visas endast för inloggad användare.
Informationen cacheas den mobila enheten. Ingen information skickas
från den mobila enheten eller lagras, analyseras eller processas någon
annanstans.
</p>
<p>
Inga tredjepartssystem har tillgång till någon del av informationen.
</p>
<h3>Loggning av data</h3>
<p>
För närvarande sker ingen loggning av data. Detta kan komma att
ändras. Om sker kommer loggad data att vara strikt begränsad till
systeminformation såsom namn mobil enhet och operativsystemversion
samt information om eventuella fel som uppstått i användningen. Ingen
personlig information härrörande från Skolplattformen kommer att
samlas in.
</p>
<h3>Cookies</h3>
<p>
Cookies är filer med små mängder data som används för att identifiera
användaren. Dessa används av Skolplattformen och skickas endast dit.
Cookies sparas lokalt i enheten och rensas när en inloggad session
avslutas.
</p>
<h3>Säkerhet</h3>
<p>
Vi har gjort vårt yttersta för att säkerställa säkerheten för din
information. Detta innebär i praktiken att vi aldrig skickar vidare
någon personlig data från din mobila enhet. All personlig information
levereras från Skolplattformen och därmed är du i slutänden hänvisad
till att lita säkerheten i det systemet. I fall vi, i arbetet
med att bygga denna app, har upptäckt potentiella svagheter i
Skolplattformen har vi vidtagit steg för att rapportera detta ett
ansvarsfullt sätt. Detta kommer vi göra även fortsättningsvis. Kom
ihåg att elektronisk lagring och överföring över Internet aldrig kan
garanteras vara 100% säker.
</p>
<h3>Integritet för barn</h3>
<p>
Appen läser information från system som hanterar barn under 13 år.
Oavsett barnets ålder skickar vi ingen information vidare från din
enhet. Den information du får tillgång via appen är samma som du når
via Skolplattformen.
</p>
<h3>Förändringar av integritetspolicyn</h3>
<p>
Denna integritetspolicy kan komma att uppdateras. Eftersom vi inte
samlar in någon information om våra användare kan vi tyvärr inte
kontakta dig om sker. Vi kommer dock informera om det i appen. Om
du vill vara den säkra sidan kan du återbesöka den här sidan och
.
</p>
<p>
Denna integritetspolicy gäller fr.o.m. 2024-04-29. Ändringar i denna
policy finns dokumenterade 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
förbättringar av denna integritetspolicy. Skicka ett mail till{' '}
<a href="mailto:dev@skolplattformen.org">dev@skolplattformen.org</a>.
</p>
</div>
</div>
)
}
export default PrivacyElevApp

View File

@ -251,13 +251,11 @@ const QA = () => {
de?
</h3>
<p>
Appen kostar {price} 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 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
och uppdateringar. Vi vill ju ha en stabil lösning som håller. Just nu
jobbar vi egen fritid med något som förbättrar det kommunen lagt en
miljard av allmänna medel .
Vi har en Patreon där summan är synlig. 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 långa vägar den tid
vi lagt ner. Just nu jobbar vi egen fritid med något som förbättrar
det kommunen lagt en miljard av allmänna medel .
</p>
<h3>
Är det moraliskt att tjäna pengar något som kommunen borde erbjuda
@ -311,13 +309,13 @@ const QA = () => {
Det är en anspelning hur GNU-projektet beskriver fri programvara:
To understand the concept, you should think of free as in free
speech, not as in free beer. vi har valt att tillgängliggöra all
kod som öppen källkod (Apache 2.0) men ändå ta betalt för appen,
tyckte vi att namnet var passande.
kod som öppen källkod (Apache 2.0), tyckte vi att namnet var passande.
</p>
<h3>Kontakta oss</h3>
<p>
Tveka inte att kontakta oss. Skicka ett mail till{' '}
<a href="mailto:info@skolplattformen.org">info@skolplattformen.org</a>.
<a href="mailto:info@skolplattformen.org">info@skolplattformen.org</a>
.
</p>
</div>
</div>

View File

@ -16,13 +16,13 @@ const Status = () => {
<ul>
<li>Skicka en tweet 🥉</li>
<li>
<a href="https://github.com/kolplattformen/skolplattformen-app/issues">
<a href="https://github.com/kolplattformen/skolplattformen/issues">
Lägg en buggrapport här
</a>{' '}
🥈
</li>
<li>
<a href="https://github.com/kolplattformen/skolplattformen-app/pulls">
<a href="https://github.com/kolplattformen/skolplattformen/pulls">
Skicka en PR
</a>{' '}
🥇

View File

@ -0,0 +1,4 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- web.yaml

93
apps/website/k8s/web.yaml Normal file
View File

@ -0,0 +1,93 @@
apiVersion: v1
kind: Namespace
metadata:
name: skolplattformen-web
---
apiVersion: v1
kind: Service
metadata:
name: skolplattformen-web
namespace: skolplattformen-web
spec:
ports:
- port: 3000
type: ClusterIP
selector:
app: skolplattformen-web
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: skolplattformen-web
namespace: skolplattformen-web
spec:
selector:
matchLabels:
app: skolplattformen-web
template:
metadata:
labels:
app: skolplattformen-web
spec:
containers:
- name: skolplattformen-web
resources:
requests:
cpu: 100m
memory: 100Mi
image: ghcr.io/kolplattformen/skolplattformen
ports:
- containerPort: 3000
livenessProbe:
httpGet:
path: /
port: 3000
initialDelaySeconds: 10
periodSeconds: 10
readinessProbe:
httpGet:
path: /
port: 3000
initialDelaySeconds: 10
periodSeconds: 10
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: skolplattformen-web
namespace: skolplattformen-web
annotations:
cert-manager.io/cluster-issuer: 'letsencrypt-prod'
nginx.ingress.kubernetes.io/from-to-www-redirect: 'true'
nginx.ingress.kubernetes.io/http2-push-preload: 'true'
nginx.ingress.kubernetes.io/proxy-body-size: '500m'
nginx.ingress.kubernetes.io/proxy-pass-headers: 'Location'
nginx.ingress.kubernetes.io/configuration-snippet: |
more_set_headers "X-Content-Type-Options: nosniff";
more_set_headers "X-Frame-Options: DENY";
more_set_headers "X-Xss-Protection: 0";
more_set_headers "Strict-Transport-Security: max-age=31536000; includeSubDomains; preload";
more_set_headers "Cross-Origin-Resource-Policy: same-site";
more_set_headers "Referrer-Policy strict-origin";
external-dns.alpha.kubernetes.io/hostname: new.skolplattformen.org.
spec:
ingressClassName: nginx
tls:
- hosts:
- skolplattformen.org
- www.skolplattformen.org
secretName: web-secret-tls
rules:
- host: skolplattformen.org
http:
paths:
- pathType: Prefix
path: '/'
backend:
service:
name: skolplattformen-web
port:
number: 3000

View File

@ -1,6 +1,6 @@
{
"name": "skolplattformen-site",
"version": "1.0.0",
"version": "1.0.4",
"main": "index.js",
"license": "MIT",
"dependencies": {

View File

@ -0,0 +1,8 @@
import { NextPage } from 'next'
import PrivacyElevApp from '../components/PrivacyElevApp'
const IntegrityElevAppPage: NextPage = () => {
return <PrivacyElevApp />
}
export default IntegrityElevAppPage

View File

@ -0,0 +1,13 @@
apiVersion: skaffold/v4beta1
kind: Config
metadata:
name: skolplattformen-web
build:
artifacts:
- image: skolplattformen/web
context: .
manifests:
rawYaml:
- k8s/web.yaml
deploy:
kubectl: {}

View File

@ -49,7 +49,7 @@ For more information, please visit [CocoaPods Getting Started guide](https://gui
### Running on a device
The above command will automatically run your app on the iOS Simulator by default. If you want to run the app on an actual physical iOS device, please follow the instructions [here](https://reactnative.dev/docs/running-on-device.
The above command will automatically run your app on the iOS Simulator by default. If you want to run the app on an actual physical iOS device, please follow the instructions [here](https://reactnative.dev/docs/running-on-device).
## Running the app

View File

@ -1,29 +1,29 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`handles route calender 1`] = `"https://etjanst.stockholm.se/vardnadshavare/inloggad2/Calender/GetSchoolCalender?childId=123&rowLimit=50"`;
exports[`handles route calender 1`] = `"https://etjanster.stockholm.se/vardnadshavare/inloggad2/Calender/GetSchoolCalender?childId=123&rowLimit=50"`;
exports[`handles route children 1`] = `"https://etjanst.stockholm.se/vardnadshavare/inloggad2/GetChildren"`;
exports[`handles route children 1`] = `"https://etjanster.stockholm.se/vardnadshavare/inloggad2/GetChildren"`;
exports[`handles route classmates 1`] = `"https://etjanst.stockholm.se/vardnadshavare/inloggad2/contacts/GetStudentsByClass?studentId=123"`;
exports[`handles route classmates 1`] = `"https://etjanster.stockholm.se/vardnadshavare/inloggad2/contacts/GetStudentsByClass?studentId=123"`;
exports[`handles route image 1`] = `"https://etjanst.stockholm.se/vardnadshavare/inloggad2/NewsBanner?url=https://example.com/img.png"`;
exports[`handles route image 1`] = `"https://etjanster.stockholm.se/vardnadshavare/inloggad2/NewsBanner?url=https://example.com/img.png"`;
exports[`handles route login with personal number 1`] = `"https://login003.stockholm.se/NECSadcmbid/authenticate/NECSadcmbid?TARGET=-SM-HTTPS%3a%2f%2flogin001%2estockholm%2ese%2fNECSadc%2fmbid%2fb64startpage%2ejsp%3fstartpage%3daHR0cHM6Ly9ldGphbnN0LnN0b2NraG9sbS5zZS92YXJkbmFkc2hhdmFyZS9pbmxvZ2dhZDIvaGVt&initialize=bankid&personalNumber=201701012393&_=1618404258782"`;
exports[`handles route login with personal number 1`] = `"https://login003.stockholm.se/NECSadcmbid/authenticate/NECSadcmbid?TYPE=33554433&REALMOID=06-42f40edd-0c5b-4dbc-b714-1be1e907f2de&GUID=1&SMAUTHREASON=0&METHOD=GET&SMAGENTNAME=IfNE0iMOtzq2TcxFADHylR6rkmFtwzoxRKh5nRMO9NBqIxHrc38jFyt56FASdxk1&TARGET=-SM-HTTPS%3a%2f%2flogin001%2estockholm%2ese%2fNECSadc%2fmbid%2fb64startpage%2ejsp%3fstartpage%3daHR0cHM6Ly9ldGphbnN0ZXIuc3RvY2tob2xtLnNlL3ZhcmRuYWRzaGF2YXJlL2lubG9nZ2FkMi9oZW0%3d&initialize=bankid&personalNumber=201701012393&_=1618404258782"`;
exports[`handles route login without personal number 1`] = `"https://login003.stockholm.se/NECSadcmbid/authenticate/NECSadcmbid?TARGET=-SM-HTTPS%3a%2f%2flogin001%2estockholm%2ese%2fNECSadc%2fmbid%2fb64startpage%2ejsp%3fstartpage%3daHR0cHM6Ly9ldGphbnN0LnN0b2NraG9sbS5zZS92YXJkbmFkc2hhdmFyZS9pbmxvZ2dhZDIvaGVt&initialize=bankid&_=1618404258782"`;
exports[`handles route login without personal number 1`] = `"https://login003.stockholm.se/NECSadcmbid/authenticate/NECSadcmbid?TYPE=33554433&REALMOID=06-42f40edd-0c5b-4dbc-b714-1be1e907f2de&GUID=1&SMAUTHREASON=0&METHOD=GET&SMAGENTNAME=IfNE0iMOtzq2TcxFADHylR6rkmFtwzoxRKh5nRMO9NBqIxHrc38jFyt56FASdxk1&TARGET=-SM-HTTPS%3a%2f%2flogin001%2estockholm%2ese%2fNECSadc%2fmbid%2fb64startpage%2ejsp%3fstartpage%3daHR0cHM6Ly9ldGphbnN0ZXIuc3RvY2tob2xtLnNlL3ZhcmRuYWRzaGF2YXJlL2lubG9nZ2FkMi9oZW0%3d&initialize=bankid&_=1618404258782"`;
exports[`handles route menuChoice 1`] = `"https://etjanst.stockholm.se/vardnadshavare/inloggad2/Matsedel/GetMatsedelChoice?childId=123"`;
exports[`handles route menuChoice 1`] = `"https://etjanster.stockholm.se/vardnadshavare/inloggad2/Matsedel/GetMatsedelChoice?childId=123"`;
exports[`handles route menuList 1`] = `"https://etjanst.stockholm.se/vardnadshavare/inloggad2/Matsedel/GetMatsedelList?childId=123"`;
exports[`handles route menuList 1`] = `"https://etjanster.stockholm.se/vardnadshavare/inloggad2/Matsedel/GetMatsedelList?childId=123"`;
exports[`handles route menuRss 1`] = `"https://etjanst.stockholm.se/vardnadshavare/inloggad2/Matsedel/GetMatsedelRSS?childId=123"`;
exports[`handles route menuRss 1`] = `"https://etjanster.stockholm.se/vardnadshavare/inloggad2/Matsedel/GetMatsedelRSS?childId=123"`;
exports[`handles route news 1`] = `"https://etjanst.stockholm.se/vardnadshavare/inloggad2/News/GetNewsArchive?bannerImageLimit=5000&childId=123"`;
exports[`handles route news 1`] = `"https://etjanster.stockholm.se/vardnadshavare/inloggad2/News/GetNewsArchive?bannerImageLimit=5000&childId=123"`;
exports[`handles route newsDetails 1`] = `"https://etjanst.stockholm.se/vardnadshavare/inloggad2/News/GetNewsArticle?newsItemId=321&childId=123"`;
exports[`handles route newsDetails 1`] = `"https://etjanster.stockholm.se/vardnadshavare/inloggad2/News/GetNewsArticle?newsItemId=321&childId=123"`;
exports[`handles route notifications 1`] = `"https://etjanst.stockholm.se/vardnadshavare/inloggad2/notifications/getnotifications?childId=123"`;
exports[`handles route notifications 1`] = `"https://etjanster.stockholm.se/vardnadshavare/inloggad2/notifications/getnotifications?childId=123"`;
exports[`handles route schedule 1`] = `"https://etjanst.stockholm.se/vardnadshavare/inloggad2/Calender/GetSchema?childId=123&startDate=2021-01-01&endDate=2021-01-01"`;
exports[`handles route schedule 1`] = `"https://etjanster.stockholm.se/vardnadshavare/inloggad2/Calender/GetSchema?childId=123&startDate=2021-01-01&endDate=2021-01-01"`;
exports[`handles route user 1`] = `"https://etjanst.stockholm.se/vardnadshavare/base/getuserdata"`;
exports[`handles route user 1`] = `"https://etjanster.stockholm.se/vardnadshavare/base/getuserdata"`;

View File

@ -44,8 +44,9 @@ describe('api', () => {
token: '9462cf77-bde9-4029-bb41-e599f3094613',
order: '5fe57e4c-9ad2-4b52-b794-48adef2f6663',
}
const pending = { state: 'PENDING' }
response.json.mockResolvedValue(data)
response.text.mockResolvedValue('PENDING')
response.json.mockResolvedValue(pending)
const personalNumber = 'my personal number'
api.login(personalNumber).then((status) => {
@ -60,14 +61,16 @@ describe('api', () => {
token: '9462cf77-bde9-4029-bb41-e599f3094613',
order: '5fe57e4c-9ad2-4b52-b794-48adef2f6663',
}
const pending = { state: 'PENDING' }
const ok = { state: 'OK' }
response.json.mockResolvedValue(data)
response.text.mockResolvedValueOnce('PENDING')
response.text.mockResolvedValueOnce('OK')
response.json.mockResolvedValueOnce(pending)
response.json.mockResolvedValueOnce(ok)
const personalNumber = 'my personal number'
api.login(personalNumber).then((status) => {
status.on('OK', () => {
expect(fetch).toHaveBeenCalledTimes(4)
expect(fetch).toHaveBeenCalledTimes(3)
done()
})
})
@ -89,8 +92,9 @@ describe('api', () => {
token: '9462cf77-bde9-4029-bb41-e599f3094613',
order: '5fe57e4c-9ad2-4b52-b794-48adef2f6663',
}
const error = { state: 'ERROR' }
response.json.mockResolvedValue(data)
response.text.mockResolvedValueOnce('ERROR')
response.json.mockResolvedValue(error)
const personalNumber = 'my personal number'
api.login(personalNumber).then((status) => {

View File

@ -44,12 +44,12 @@ const s24Init = {
headers: {
accept: 'application/json, text/javascript, */*; q=0.01',
referer:
'https://fns.stockholm.se/ng/timetable/timetable-viewer/fns.stockholm.se/',
'https://websthlm.skola24.se/ng/timetable/timetable-viewer/fns.stockholm.se/',
'accept-language': 'en-US,en;q=0.9,sv;q=0.8',
'cache-control': 'no-cache',
'content-type': 'application/json',
pragma: 'no-cache',
host: 'fns.stockholm.se',
host: 'websthlm.skola24.se',
'x-scope': '8a22163c-8662-4535-9050-bc5e1923df48',
},
}
@ -307,9 +307,9 @@ export class ApiSkolplattformen extends EventEmitter implements Api {
const url = routes.children
const session = this.getRequestInit({
headers: {
Accept: 'application/json;odata=verbose',
Host: 'etjanst.stockholm.se',
Referer: 'https://etjanst.stockholm.se/vardnadshavare/inloggad2/hem',
Accept: 'application/json, text/plain, */*',
Host: 'etjanster.stockholm.se',
Referer: 'https://etjanster.stockholm.se/vardnadshavare/inloggad2/hem',
},
})
const response = await this.fetch('children', url, session)
@ -570,7 +570,7 @@ export class ApiSkolplattformen extends EventEmitter implements Api {
await this.ssoAuthorize('TimetableViewer')
const body = {
getPersonalTimetablesRequest: {
hostName: 'fns.stockholm.se',
hostName: 'stockholm.skola24.se',
},
}
const session = this.getRequestInit({
@ -586,7 +586,6 @@ export class ApiSkolplattformen extends EventEmitter implements Api {
getPersonalTimetablesResponse: { childrenTimetables },
},
} = await response.json()
return childrenTimetables as Skola24Child[]
}
@ -619,7 +618,7 @@ export class ApiSkolplattformen extends EventEmitter implements Api {
customerKey: '',
endDate: null,
height: 1063,
host: 'fns.stockholm.se',
host: 'stockholm.skola24.se',
periodText: '',
privateFreeTextMode: null,
privateSelectionMode: true,
@ -633,6 +632,7 @@ export class ApiSkolplattformen extends EventEmitter implements Api {
week,
width: 1227,
year,
schoolYear: 'b976f986-4308-4583-b39e-2d3933094eb2',
}
const session = this.getRequestInit({
...s24Init,

View File

@ -21,13 +21,13 @@ export class Checker extends EventEmitter implements LoginStatusChecker {
async check(): Promise<void> {
const response = await this.fetcher('login-status', this.url)
const status = await response.text()
this.emit(status)
const status = await response.json()
this.emit(status.state)
if (
!this.cancelled &&
status !== 'OK' &&
status !== 'ERROR!' &&
status !== 'CANCELLED'
status.state !== 'OK' &&
status.state !== 'ERROR' &&
status.state !== 'CANCELLED'
) {
setTimeout(() => this.check(), 1000)
}

View File

@ -72,7 +72,7 @@ describe('news', () => {
)
expect(item.imageUrl).toEqual('A703552D-DBF3-45B0-8E67-6E062105A0C5.jpeg')
expect(item.fullImageUrl).toEqual(
'https://etjanst.stockholm.se/Vardnadshavare/inloggad2/NewsBanner?url=A703552D-DBF3-45B0-8E67-6E062105A0C5.jpeg'
'https://etjanster.stockholm.se/Vardnadshavare/inloggad2/NewsBanner?url=A703552D-DBF3-45B0-8E67-6E062105A0C5.jpeg'
)
expect(item.imageAltText).toEqual('Nyhetsbild. Bildtext ej tillgänglig.')
expect(item.intro).toEqual(

View File

@ -2,7 +2,7 @@ import { NewsItem, parseDate, toMarkdown } from '@skolplattformen/api'
import { etjanst } from './etjanst'
const IMAGE_HOST =
'https://etjanst.stockholm.se/Vardnadshavare/inloggad2/NewsBanner?url='
'https://etjanster.stockholm.se/Vardnadshavare/inloggad2/NewsBanner?url='
export const newsItem = ({
newsId,
@ -27,7 +27,7 @@ export const newsItem = ({
body: toNonEmptyMarkdownString(body),
})
// Fixes https://github.com/kolplattformen/skolplattformen-app/issues/525
// Fixes https://github.com/kolplattformen/skolplattformen/issues/525
const toNonEmptyMarkdownString = (str: string): string => {
const res = toMarkdown(str)
if (res?.length == 0) return ' '

View File

@ -1,29 +1,28 @@
// BankId
export const login = (personalNumber?: string) => {
const baseUrl =
'https://login003.stockholm.se/NECSadcmbid/authenticate/NECSadcmbid?TARGET=-SM-HTTPS%3a%2f%2flogin001%2estockholm%2ese%2fNECSadc%2fmbid%2fb64startpage%2ejsp%3fstartpage%3daHR0cHM6Ly9ldGphbnN0LnN0b2NraG9sbS5zZS92YXJkbmFkc2hhdmFyZS9pbmxvZ2dhZDIvaGVt'
'https://login003.stockholm.se/NECSadcmbid/authenticate/NECSadcmbid?TYPE=33554433&REALMOID=06-42f40edd-0c5b-4dbc-b714-1be1e907f2de&GUID=1&SMAUTHREASON=0&METHOD=GET&SMAGENTNAME=IfNE0iMOtzq2TcxFADHylR6rkmFtwzoxRKh5nRMO9NBqIxHrc38jFyt56FASdxk1&TARGET=-SM-HTTPS%3a%2f%2flogin001%2estockholm%2ese%2fNECSadc%2fmbid%2fb64startpage%2ejsp%3fstartpage%3daHR0cHM6Ly9ldGphbnN0ZXIuc3RvY2tob2xtLnNlL3ZhcmRuYWRzaGF2YXJlL2lubG9nZ2FkMi9oZW0%3d'
const optionalPersonalNumber =
personalNumber === undefined ? '' : `&personalNumber=${personalNumber}`
return `${baseUrl}&initialize=bankid${optionalPersonalNumber}&_=${Date.now()}`
}
export const loginStatus = (order: string) =>
`https://login003.stockholm.se/NECSadcmbid/authenticate/NECSadcmbid?TARGET=-SM-HTTPS%3a%2f%2flogin001%2estockholm%2ese%2fNECSadc%2fmbid%2fb64startpage%2ejsp%3fstartpage%3daHR0cHM6Ly9ldGphbnN0LnN0b2NraG9sbS5zZS92YXJkbmFkc2hhdmFyZS9pbmxvZ2dhZDIvaGVt&verifyorder=${order}&_=${Date.now()}`
`https://login003.stockholm.se/NECSadcmbid/authenticate/NECSadcmbid?TYPE=33554433&REALMOID=06-42f40edd-0c5b-4dbc-b714-1be1e907f2de&GUID=1&SMAUTHREASON=0&METHOD=GET&SMAGENTNAME=IfNE0iMOtzq2TcxFADHylR6rkmFtwzoxRKh5nRMO9NBqIxHrc38jFyt56FASdxk1&TARGET=-SM-HTTPS%3a%2f%2flogin001%2estockholm%2ese%2fNECSadc%2fmbid%2fb64startpage%2ejsp%3fstartpage%3daHR0cHM6Ly9ldGphbnN0ZXIuc3RvY2tob2xtLnNlL3ZhcmRuYWRzaGF2YXJlL2lubG9nZ2FkMi9oZW0%3d&verifyorder=${order}&_=${Date.now()}`
export const loginCookie =
'https://login003.stockholm.se/NECSadcmbid/authenticate/SiteMinderAuthADC?TYPE=33554433&REALMOID=06-42f40edd-0c5b-4dbc-b714-1be1e907f2de&GUID=&SMAUTHREASON=0&METHOD=GET&SMAGENTNAME=IfNE0iMOtzq2TcxFADHylR6rkmFtwzoxRKh5nRMO9NBqIxHrc38jFyt56FASdxk1&TARGET=-SM-HTTPS%3a%2f%2flogin001%2estockholm%2ese%2fNECSadc%2fmbid%2fb64startpage%2ejsp%3fstartpage%3daHR0cHM6Ly9ldGphbnN0LnN0b2NraG9sbS5zZS92YXJkbmFkc2hhdmFyZS9pbmxvZ2dhZDIvR2V0Q2hpbGRyZW4%3d'
'https://login003.stockholm.se/NECSadcmbid/authenticate/SiteMinderAuthADC?TYPE=33554433&REALMOID=06-42f40edd-0c5b-4dbc-b714-1be1e907f2de&GUID=1&SMAUTHREASON=0&METHOD=GET&SMAGENTNAME=IfNE0iMOtzq2TcxFADHylR6rkmFtwzoxRKh5nRMO9NBqIxHrc38jFyt56FASdxk1&TARGET=-SM-HTTPS%3a%2f%2flogin001%2estockholm%2ese%2fNECSadc%2fmbid%2fb64startpage%2ejsp%3fstartpage%3daHR0cHM6Ly9ldGphbnN0ZXIuc3RvY2tob2xtLnNlL3ZhcmRuYWRzaGF2YXJlL2lubG9nZ2FkMi9oZW0%3d'
// Freja
export const frejaLogin =
'https://login003.stockholm.se/NECSadcfreja/authenticate/NECSadcfreja?action=init&return_url=https%3A%2F%2Flogin003.stockholm.se%2FNECSadcfreja%2Fauthenticate%2FNECSadcfreja'
export const frejaLoginStatus =
'https://login003.stockholm.se/NECSadcfreja/authenticate/NECSadcfreja?TYPE=33554433&REALMOID=06-89cf916c-9764-45fa-8690-eaf3fe9282bc&GUID=1&SMAUTHREASON=0&METHOD=GET&SMAGENTNAME=IfNE0iMOtzq2TcxFADHylR6rkmFtwzoxRKh5nRMO9NBqIxHrc38jFyt56FASdxk1&TARGET=-SM-HTTPS%3a%2f%2flogin001%2estockholm%2ese%2fNECSadc%2ffreja%2fb64startpage%2ejsp%3fstartpage%3daHR0cHM6Ly9ldGphbnN0LnN0b2NraG9sbS5zZS92YXJkbmFkc2hhdmFyZS9pbmxvZ2dhZDIvaGVt&action=checkstatus'
'https://login003.stockholm.se/NECSadcfreja/authenticate/NECSadcfreja?TYPE=33554433&REALMOID=06-89cf916c-9764-45fa-8690-eaf3fe9282bc&GUID=1&SMAUTHREASON=0&METHOD=GET&SMAGENTNAME=IfNE0iMOtzq2TcxFADHylR6rkmFtwzoxRKh5nRMO9NBqIxHrc38jFyt56FASdxk1&TARGET=-SM-HTTPS%3a%2f%2flogin001%2estockholm%2ese%2fNECSadc%2ffreja%2fb64startpage%2ejsp%3fstartpage%3daHR0cHM6Ly9ldGphbnN0ZXIuc3RvY2tob2xtLnNlL3ZhcmRuYWRzaGF2YXJlL2lubG9nZ2FkMi9oZW0%3d&action=checkstatus'
export const frejaReturnUrl =
'https://login003.stockholm.se/NECSadcfreja/authenticate/NECSadcfreja?TYPE=33554433&REALMOID=06-89cf916c-9764-45fa-8690-eaf3fe9282bc&GUID=&SMAUTHREASON=0&METHOD=GET&SMAGENTNAME=IfNE0iMOtzq2TcxFADHylR6rkmFtwzoxRKh5nRMO9NBqIxHrc38jFyt56FASdxk1&TARGET=-SM-HTTPS%3a%2f%2flogin001%2estockholm%2ese%2fNECSadc%2ffreja%2fb64startpage%2ejsp%3fstartpage%3daHR0cHM6Ly9ldGphbnN0LnN0b2NraG9sbS5zZS92YXJkbmFkc2hhdmFyZS9pbmxvZ2dhZDIvT3ZlcnNpa3Q%3d'
'https://login003.stockholm.se/NECSadcfreja/authenticate/NECSadcfreja?TYPE=33554433&REALMOID=06-89cf916c-9764-45fa-8690-eaf3fe9282bc&GUID=1&SMAUTHREASON=0&METHOD=GET&SMAGENTNAME=IfNE0iMOtzq2TcxFADHylR6rkmFtwzoxRKh5nRMO9NBqIxHrc38jFyt56FASdxk1&TARGET=-SM-HTTPS%3a%2f%2flogin001%2estockholm%2ese%2fNECSadc%2ffreja%2fb64startpage%2ejsp%3fstartpage%3daHR0cHM6Ly9ldGphbnN0ZXIuc3RvY2tob2xtLnNlL3ZhcmRuYWRzaGF2YXJlL2lubG9nZ2FkMi9oZW0%3d'
export const frejaLoginCookie =
'https://login003.stockholm.se/NECSadcfreja/authenticate/SiteMinderAuthADCFREJA?TYPE=33554433&REALMOID=06-89cf916c-9764-45fa-8690-eaf3fe9282bc&GUID=&SMAUTHREASON=0&METHOD=GET&SMAGENTNAME=IfNE0iMOtzq2TcxFADHylR6rkmFtwzoxRKh5nRMO9NBqIxHrc38jFyt56FASdxk1&TARGET=-SM-HTTPS%3a%2f%2flogin001%2estockholm%2ese%2fNECSadc%2ffreja%2fb64startpage%2ejsp%3fstartpage%3daHR0cHM6Ly9ldGphbnN0LnN0b2NraG9sbS5zZS92YXJkbmFkc2hhdmFyZS9pbmxvZ2dhZDIvT3ZlcnNpa3Q%3d'
'https://login003.stockholm.se/NECSadcfreja/authenticate/SiteMinderAuthADCFREJA?TYPE=33554433&REALMOID=06-89cf916c-9764-45fa-8690-eaf3fe9282bc&GUID=1&SMAUTHREASON=0&METHOD=GET&SMAGENTNAME=IfNE0iMOtzq2TcxFADHylR6rkmFtwzoxRKh5nRMO9NBqIxHrc38jFyt56FASdxk1&TARGET=-SM-HTTPS%3a%2f%2flogin001%2estockholm%2ese%2fNECSadc%2ffreja%2fb64startpage%2ejsp%3fstartpage%3daHR0cHM6Ly9ldGphbnN0ZXIuc3RvY2tob2xtLnNlL3ZhcmRuYWRzaGF2YXJlL2lubG9nZ2FkMi9oZW0%3d'
const urlLoggedIn = `https://etjanst.stockholm.se/vardnadshavare/inloggad2`
const urlLoggedIn = `https://etjanster.stockholm.se/vardnadshavare/inloggad2`
export const children = `${urlLoggedIn}/GetChildren`
@ -40,7 +39,7 @@ export const schoolContacts = (childId: string, schoolId: string) =>
`${urlLoggedIn}/contacts/GetSchoolContacts?schoolId=${schoolId}&studentId=${childId}&schoolForm=Klasslista`
export const user =
'https://etjanst.stockholm.se/vardnadshavare/base/getuserdata'
'https://etjanster.stockholm.se/vardnadshavare/base/getuserdata'
export const news = (childId: string) =>
`${urlLoggedIn}/News/GetNewsArchive?bannerImageLimit=5000&childId=${childId}`
@ -65,43 +64,43 @@ export const menuChoice = (childId: string) =>
export const schedule = (childId: string, fromDate: string, endDate: string) =>
`${urlLoggedIn}/Calender/GetSchema?childId=${childId}&startDate=${fromDate}&endDate=${endDate}`
export const cdn = 'https://etjanst.stockholm.se/vardnadshavare/base/cdn'
export const cdn = 'https://etjanster.stockholm.se/vardnadshavare/base/cdn'
export const auth = 'https://etjanst.stockholm.se/vardnadshavare/base/auth'
export const auth = 'https://etjanster.stockholm.se/vardnadshavare/base/auth'
export const startBundle =
'https://etjanst.stockholm.se/vardnadshavare/bundles/start'
'https://etjanster.stockholm.se/vardnadshavare/bundles/start'
export const hemPage =
'https://etjanst.stockholm.se/vardnadshavare/inloggad2/hem'
'https://etjanster.stockholm.se/vardnadshavare/inloggad2/hem'
export const navigationControllerScript =
'https://etjanst.stockholm.se/vardnadshavare/bundles/navigationController'
'https://etjanster.stockholm.se/vardnadshavare/bundles/navigationController'
export const baseEtjanst = 'https://etjanst.stockholm.se'
export const baseEtjanst = 'https://etjanster.stockholm.se'
export const childcontrollerScript = `https://etjanst.stockholm.se/vardnadshavare/bundles/childcontroller?v=${Date.now()}`
export const childcontrollerScript = `https://etjanster.stockholm.se/vardnadshavare/bundles/childcontroller?v=${Date.now()}`
export const createItemConfig =
'https://raw.githubusercontent.com/kolplattformen/embedded-api/main/config.json'
// Skola24
export const ssoRequestUrl = (targetSystem: string) =>
`https://fnsservicesso1.stockholm.se/sso-ng/saml-2.0/authenticate?customer=https://login001.stockholm.se&targetsystem=${targetSystem}`
`https://stockholm-sso.skola24.se/nssso/saml-2.0/authenticate?customer=https://login001.stockholm.se&targetsystem=${targetSystem}`
export const ssoResponseUrl =
'https://login001.stockholm.se/affwebservices/public/saml2sso'
export const samlResponseUrl =
'https://fnsservicesso1.stockholm.se/sso-ng/saml-2.0/response'
'https://stockholm-sso.skola24.se/nssso/saml-2.0/response'
export const timetables =
'https://fns.stockholm.se/ng/api/services/skola24/get/personal/timetables'
'https://websthlm.skola24.se/api/services/skola24/get/personal/timetables'
export const renderKey =
'https://fns.stockholm.se/ng/api/get/timetable/render/key'
export const timetable = 'https://fns.stockholm.se/ng/api/render/timetable'
'https://websthlm.skola24.se/api/get/timetable/render/key'
export const timetable = 'https://websthlm.skola24.se/api/render/timetable'
export const topologyConfigUrl =
'https://fantomenkrypto.vercel.app/api/getConfig'
export const selectChild =
'https://etjanst.stockholm.se/vardnadshavare/inloggad2/SelectChild'
'https://etjanster.stockholm.se/vardnadshavare/inloggad2/SelectChild'

View File

@ -1,6 +1,6 @@
{
"name": "skolplattformen",
"version": "2.15.5",
"version": "2.17.0",
"license": "MIT",
"scripts": {
"start": "nx start",
@ -70,7 +70,7 @@
"react-native-simple-toast": "1.1.3",
"react-native-svg": "12.1.1",
"react-native-typography": "1.4.1",
"react-native-webview": "^11.15.0",
"react-native-webview": "^11.26.1",
"react-redux": "^7.2.3",
"redux": "^4.0.5",
"regenerator-runtime": "^0.13.9",

View File

@ -11132,10 +11132,10 @@ react-native-typography@1.4.1:
resolved "https://registry.yarnpkg.com/react-native-typography/-/react-native-typography-1.4.1.tgz#2d05cb5935a2f7fdb6b43bbde93d60f1324578e3"
integrity sha512-dc9Zfs4jUdq4ygx4/KwO6jKTERBu6cRrfPJGntw/pA+D6BMjlWfMNuhZ/69vf4Zpsnt9s4AGe+Z/V1QFYaCXAA==
react-native-webview@^11.15.0:
version "11.15.0"
resolved "https://registry.yarnpkg.com/react-native-webview/-/react-native-webview-11.15.0.tgz#b5aea9da579ca17fb9fd324e5202b1b5b8ce9fa8"
integrity sha512-0Wv+8qu8XuACx1xZwzc2Yfl+rOvxUouLcPxUKdkhaMVNpwoM5/ePpczCQZ3LpiRnSoEtjaUkfyQHbJQ+x4dDJQ==
react-native-webview@^12.1.0:
version "12.4.0"
resolved "https://registry.yarnpkg.com/react-native-webview/-/react-native-webview-12.4.0.tgz#421db8e5601b4851c5796c5d4736b6b8439d1469"
integrity sha512-wYzTfNADidmqv6bY+x6NUfX8+uBR9mmF1CO1NOvY4oD2vv+D4rA0XwcwAe2D7RevXUy3fmuTT93kFQcgo8fEhg==
dependencies:
escape-string-regexp "2.0.0"
invariant "2.2.4"