From 13c628ba68db570458b5685d15f1117ecc79085c Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Fri, 16 Apr 2021 21:54:44 +0200 Subject: [PATCH 1/4] chore(release): 1.16.0 [skip ci] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # [1.16.0](https://github.com/kolplattformen/skolplattformen/compare/v1.15.1...v1.16.0) (2021-04-16) ### Features * 🎸 Added text for empty menu ([bbfb2a3](https://github.com/kolplattformen/skolplattformen/commit/bbfb2a36aea659b91ba1ed528691066caf0c0cef)) * 🎸 Updated embedded-api for better menu handling ([675454a](https://github.com/kolplattformen/skolplattformen/commit/675454a2fe9be5738c6965971da9db2f7b4c75a4)) --- CHANGELOG.md | 8 ++++++++ package.json | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f19b6fcb..24f39c3a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,11 @@ +# [1.16.0](https://github.com/kolplattformen/skolplattformen/compare/v1.15.1...v1.16.0) (2021-04-16) + + +### Features + +* 🎸 Added text for empty menu ([bbfb2a3](https://github.com/kolplattformen/skolplattformen/commit/bbfb2a36aea659b91ba1ed528691066caf0c0cef)) +* 🎸 Updated embedded-api for better menu handling ([675454a](https://github.com/kolplattformen/skolplattformen/commit/675454a2fe9be5738c6965971da9db2f7b4c75a4)) + ## [1.15.1](https://github.com/kolplattformen/skolplattformen/compare/v1.15.0...v1.15.1) (2021-04-16) diff --git a/package.json b/package.json index efca4b6c..c9da269b 100644 --- a/package.json +++ b/package.json @@ -9,5 +9,5 @@ "test": "npx lerna run test --stream", "lint": "npx lerna run lint --stream" }, - "version": "1.15.1" + "version": "1.16.0" } From 19554c788fec4d37e8d86a654a83c960704f8c61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20Sarstr=C3=B6m?= Date: Sat, 17 Apr 2021 14:05:40 +0200 Subject: [PATCH 2/4] =?UTF-8?q?fix:=20=F0=9F=90=9B=20Fixes=20issue=20where?= =?UTF-8?q?=20locale=20was=20not=20saved?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ✅ Closes: #280 --- packages/app/components/loading.component.tsx | 20 +++++++++++ .../app/context/language/languageContext.tsx | 33 ++++++++++--------- packages/app/utils/testHelpers.tsx | 3 +- 3 files changed, 39 insertions(+), 17 deletions(-) create mode 100644 packages/app/components/loading.component.tsx diff --git a/packages/app/components/loading.component.tsx b/packages/app/components/loading.component.tsx new file mode 100644 index 00000000..2c799291 --- /dev/null +++ b/packages/app/components/loading.component.tsx @@ -0,0 +1,20 @@ +import React from 'react' +import { ActivityIndicator, View, StyleSheet } from 'react-native' + +export const LoadingComponent = () => ( + + + +) + +const styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: 'center', + }, + horizontal: { + flexDirection: 'row', + justifyContent: 'space-around', + padding: 10, + }, +}) diff --git a/packages/app/context/language/languageContext.tsx b/packages/app/context/language/languageContext.tsx index 83664f3c..a8a5ddab 100644 --- a/packages/app/context/language/languageContext.tsx +++ b/packages/app/context/language/languageContext.tsx @@ -1,18 +1,21 @@ import React, { useState, useEffect, ReactNode } from 'react' import * as RNLocalize from 'react-native-localize' +import { LoadingComponent } from '../../components/loading.component' import { LanguageService } from '../../services/languageService' import { LanguageStorage } from '../../services/languageStorage' import { translations } from '../../utils/translation' -export const LanguageContext = React.createContext({ Strings: {} }) +export const LanguageContext = React.createContext({ + Strings: {}, + languageCode: '', +}) interface Props { children: ReactNode data: any initialLanguageCode: string cache: any - initalHasCheckedLanguage: boolean } export const LanguageProvider: React.FC = ({ @@ -23,10 +26,13 @@ export const LanguageProvider: React.FC = ({ }) => { LanguageService.setAllData({ data }) + const [languageCode, setLanguageCode] = useState('') + const [Strings, setStrings] = useState(() => { if (initialLanguageCode && data[initialLanguageCode]) { LanguageService.setLanguageCode({ langCode: initialLanguageCode }) LanguageService.seti18nConfig({ langCode: initialLanguageCode }) + setLanguageCode(initialLanguageCode) return data[initialLanguageCode] } @@ -36,21 +42,18 @@ export const LanguageProvider: React.FC = ({ const { languageTag } = RNLocalize.findBestAvailableLanguage(Object.keys(translations)) || fallBack + const bestStrings = data[languageTag] - console.log('LANGUAGE TAG', languageTag) - console.log('LANGUAGE BEST', bestStrings) - - LanguageService.setLanguageCode({ langCode: languageTag }) - LanguageService.seti18nConfig({ langCode: languageTag }) - return bestStrings }) + useEffect(() => { LanguageService.onChange( { key: 'LanguageProvider' }, (langCode: string) => { if (langCode && data[langCode]) { + setLanguageCode(langCode) setStrings(data[langCode]) if (cache) { LanguageStorage.save(langCode) @@ -61,22 +64,22 @@ export const LanguageProvider: React.FC = ({ const checkLanguageLocal = async () => { if (cache) { - const languageCode = await LanguageStorage.get() + const lang = (await LanguageStorage.get()) || initialLanguageCode LanguageService.setLanguageCode({ - langCode: languageCode || initialLanguageCode, + langCode: lang, }) LanguageService.seti18nConfig({ - langCode: languageCode || initialLanguageCode, + langCode: lang, }) + setLanguageCode(lang) } } checkLanguageLocal() - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []) + }, [cache, data, initialLanguageCode, languageCode]) return ( - - {children} + + {languageCode ? children : } ) } diff --git a/packages/app/utils/testHelpers.tsx b/packages/app/utils/testHelpers.tsx index 2f05a7ba..c915d566 100644 --- a/packages/app/utils/testHelpers.tsx +++ b/packages/app/utils/testHelpers.tsx @@ -16,10 +16,9 @@ export const render = ( {children} From 5ab2819235fb1bf410eaedd8c20d0e0bb8248444 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20Sarstr=C3=B6m?= Date: Sat, 17 Apr 2021 14:23:07 +0200 Subject: [PATCH 3/4] Fixes error when initial app start --- .../app/context/language/languageContext.tsx | 28 +++++++++++++------ packages/app/services/languageStorage.ts | 2 +- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/packages/app/context/language/languageContext.tsx b/packages/app/context/language/languageContext.tsx index a8a5ddab..f9db1fe7 100644 --- a/packages/app/context/language/languageContext.tsx +++ b/packages/app/context/language/languageContext.tsx @@ -6,7 +6,12 @@ import { LanguageService } from '../../services/languageService' import { LanguageStorage } from '../../services/languageStorage' import { translations } from '../../utils/translation' -export const LanguageContext = React.createContext({ +interface LanguageContextProps { + Strings: Record + languageCode?: string +} + +export const LanguageContext = React.createContext({ Strings: {}, languageCode: '', }) @@ -24,9 +29,13 @@ export const LanguageProvider: React.FC = ({ initialLanguageCode, cache, }) => { + const fallBack = { languageTag: 'sv' } + LanguageService.setAllData({ data }) - const [languageCode, setLanguageCode] = useState('') + const [languageCode, setLanguageCode] = useState( + undefined + ) const [Strings, setStrings] = useState(() => { if (initialLanguageCode && data[initialLanguageCode]) { @@ -37,8 +46,6 @@ export const LanguageProvider: React.FC = ({ return data[initialLanguageCode] } - const fallBack = { languageTag: 'sv' } - const { languageTag } = RNLocalize.findBestAvailableLanguage(Object.keys(translations)) || fallBack @@ -64,18 +71,21 @@ export const LanguageProvider: React.FC = ({ const checkLanguageLocal = async () => { if (cache) { - const lang = (await LanguageStorage.get()) || initialLanguageCode + const cachedLang = await LanguageStorage.get() + const currentLanguageCode = cachedLang || fallBack.languageTag + LanguageService.setLanguageCode({ - langCode: lang, + langCode: currentLanguageCode, }) LanguageService.seti18nConfig({ - langCode: lang, + langCode: currentLanguageCode, }) - setLanguageCode(lang) + setLanguageCode(currentLanguageCode) } } checkLanguageLocal() - }, [cache, data, initialLanguageCode, languageCode]) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []) return ( diff --git a/packages/app/services/languageStorage.ts b/packages/app/services/languageStorage.ts index 9801ffe6..de25d047 100644 --- a/packages/app/services/languageStorage.ts +++ b/packages/app/services/languageStorage.ts @@ -16,7 +16,7 @@ export const LanguageStorage = { const result = await AsyncStorage.getItem(AsyncStoreKey.language) return result } catch (error) { - return null + return false } }, } From 9c7283c159916fb42e49debd15c49ef960a3f5a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20Sarstr=C3=B6m?= Date: Sat, 17 Apr 2021 14:38:36 +0200 Subject: [PATCH 4/4] Now selects the best suited lang< --- .../app/context/language/languageContext.tsx | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/packages/app/context/language/languageContext.tsx b/packages/app/context/language/languageContext.tsx index f9db1fe7..c96f3cd4 100644 --- a/packages/app/context/language/languageContext.tsx +++ b/packages/app/context/language/languageContext.tsx @@ -29,7 +29,7 @@ export const LanguageProvider: React.FC = ({ initialLanguageCode, cache, }) => { - const fallBack = { languageTag: 'sv' } + const fallBack = { languageTag: 'sv', isRTL: false } LanguageService.setAllData({ data }) @@ -37,11 +37,15 @@ export const LanguageProvider: React.FC = ({ undefined ) + const setLanguageConfig = (langCode: string) => { + LanguageService.setLanguageCode({ langCode: langCode }) + LanguageService.seti18nConfig({ langCode: langCode }) + setLanguageCode(langCode) + } + const [Strings, setStrings] = useState(() => { if (initialLanguageCode && data[initialLanguageCode]) { - LanguageService.setLanguageCode({ langCode: initialLanguageCode }) - LanguageService.seti18nConfig({ langCode: initialLanguageCode }) - setLanguageCode(initialLanguageCode) + setLanguageConfig(initialLanguageCode) return data[initialLanguageCode] } @@ -70,17 +74,19 @@ export const LanguageProvider: React.FC = ({ ) const checkLanguageLocal = async () => { + // Saved language if (cache) { + // Get cached lang const cachedLang = await LanguageStorage.get() - const currentLanguageCode = cachedLang || fallBack.languageTag + console.log(cachedLang) + // Try to find best suited language + const { languageTag } = + RNLocalize.findBestAvailableLanguage(Object.keys(translations)) || + fallBack - LanguageService.setLanguageCode({ - langCode: currentLanguageCode, - }) - LanguageService.seti18nConfig({ - langCode: currentLanguageCode, - }) - setLanguageCode(currentLanguageCode) + const currentLanguageCode = cachedLang || languageTag + + setLanguageConfig(currentLanguageCode) } } checkLanguageLocal()