From a7e6a4aa845557e041d83674da83f9108a915dfd Mon Sep 17 00:00:00 2001 From: Robert Eggl Date: Thu, 27 Jun 2024 23:01:58 +0200 Subject: [PATCH] Adds per-app appearance setting (#96) --- .github/workflows/lint.yml | 6 +- android/app/build.gradle | 4 +- app.config.ts | 3 +- bun.lockb | Bin 774876 -> 774420 bytes ios/NeulandNext.xcodeproj/project.pbxproj | 53 +- ios/NeulandNext/Info.plist | 13 +- ios/NeulandNext/de.lproj/Info.plist | 4 +- ios/NeulandNext/en.lproj/Info.plist | 4 +- ios/TestFlight/WhatToTest.de_DE.txt | 11 +- ios/TestFlight/WhatToTest.en-US.txt | 11 +- package.json | 2 +- src/app/(flow)/onboarding.tsx | 1 + src/app/(flow)/whatsnew.tsx | 4 +- src/app/(food)/meal.tsx | 3 - src/app/(pages)/event.tsx | 3 - src/app/(pages)/exam.tsx | 2 - src/app/(pages)/lecturer.tsx | 3 - src/app/(pages)/lecturers.tsx | 19 +- src/app/(pages)/libraryCode.tsx | 3 - src/app/(tabs)/_layout.tsx | 2 + src/app/(tabs)/index.tsx | 11 +- src/app/(tabs)/map.tsx | 1 - src/app/(timetable)/details.tsx | 246 +++--- src/app/(timetable)/webView.tsx | 3 - src/app/(user)/appicon.tsx | 5 - src/app/(user)/license.tsx | 3 - src/app/(user)/login.tsx | 3 - src/app/(user)/settings.tsx | 40 +- src/app/(user)/theme.tsx | 113 +-- src/app/_layout.tsx | 734 +++++++++--------- src/components/Elements/Food/HeaderRight.tsx | 8 +- .../Elements/Food/ItemsPickerScreen.tsx | 28 +- .../Elements/Map/BottomSheetBackground.tsx | 6 +- .../Elements/Map/BottomSheetMap.tsx | 113 +-- src/components/Elements/Map/MapScreen.tsx | 49 +- .../Elements/Map/SearchResultRow.tsx | 119 ++- .../Elements/Timetable/HeaderButtons.tsx | 10 +- .../Elements/Universal/WorkaroundStack.tsx | 52 +- src/components/contexts.ts | 2 + src/components/provider.tsx | 21 +- src/hooks/contexts/theme.ts | 30 +- src/localization/de/settings.ts | 17 +- src/localization/en/navigation.ts | 2 +- src/localization/en/settings.ts | 17 +- src/utils/ui-utils.ts | 44 +- 45 files changed, 967 insertions(+), 861 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 87b06467..bb2e1ffe 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -8,11 +8,11 @@ jobs: lint: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Use Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 20 - name: Install modules run: npm install - name: Run ESLint diff --git a/android/app/build.gradle b/android/app/build.gradle index a6ce7f1f..a5fbcdc0 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -90,8 +90,8 @@ android { applicationId 'app.neuland' minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 83 - versionName "0.8.1" + versionCode 84 + versionName "0.8.2" } signingConfigs { debug { diff --git a/app.config.ts b/app.config.ts index abbc164d..a5f4ec84 100644 --- a/app.config.ts +++ b/app.config.ts @@ -27,6 +27,7 @@ module.exports = { CFBundleAllowMixedLocalizations: true, CFBundleLocalizations: ['en', 'de'], CFBundleDevelopmentRegion: 'en', + UIViewControllerBasedStatusBarAppearance: true, }, splash: { image: './src/assets/splash/splashLight.png', @@ -42,7 +43,7 @@ module.exports = { android: { package: 'app.neuland', userInterfaceStyle: 'automatic', - versionCode: 83, + versionCode: 84, splash: { image: './src/assets/splash/splashLight.png', resizeMode: 'contain', diff --git a/bun.lockb b/bun.lockb index 54544f2057c7f9cde5bd332ad9f3fb312d4c331d..51819133d9e3cec48d0c5597d77259eddebe6b67 100755 GIT binary patch delta 147044 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 G{r>=!&S2sI diff --git a/ios/NeulandNext.xcodeproj/project.pbxproj b/ios/NeulandNext.xcodeproj/project.pbxproj index c73bba5a..e3b01f10 100644 --- a/ios/NeulandNext.xcodeproj/project.pbxproj +++ b/ios/NeulandNext.xcodeproj/project.pbxproj @@ -163,6 +163,8 @@ 416B75F9501048ACA40DB650 /* Remove signature files (Xcode 15 workaround) */, EF820F10D3E648A28C78DECD /* Remove signature files (Xcode 15 workaround) */, 1515044FA4184334AD7857BB /* Remove signature files (Xcode 15 workaround) */, + 8CFEE477FDEE49A683B8FAB4 /* Remove signature files (Xcode 15 workaround) */, + C9F03030C79E4397B5A02662 /* Remove signature files (Xcode 15 workaround) */, ); buildRules = ( ); @@ -336,6 +338,20 @@ shellPath = /bin/sh; shellScript = "/bin/sh `${NODE_BINARY:-node} --print \"require('path').dirname(require.resolve('@sentry/react-native/package.json')) + '/scripts/sentry-xcode-debug-files.sh'\"`"; }; + 8CFEE477FDEE49A683B8FAB4 /* Remove signature files (Xcode 15 workaround) */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Remove signature files (Xcode 15 workaround)"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"$XCODE_VERSION_MAJOR\" = \"1500\" ]; then\n echo \"Remove signature files (Xcode 15 workaround)\";\n rm -rf \"$CONFIGURATION_BUILD_DIR/MapLibre.xcframework-ios.signature\";\n fi"; + }; AD913B7B949DB5BB3812201A /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -468,6 +484,23 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-NeulandNext/Pods-NeulandNext-resources.sh\"\n"; showEnvVarsInLog = 0; }; + C9F03030C79E4397B5A02662 /* Remove signature files (Xcode 15 workaround) */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + name = "Remove signature files (Xcode 15 workaround)"; + inputPaths = ( + ); + outputPaths = ( + ); + shellPath = /bin/sh; + shellScript = "if [ \"$XCODE_VERSION_MAJOR\" = \"1500\" ]; then + echo \"Remove signature files (Xcode 15 workaround)\"; + rm -rf \"$CONFIGURATION_BUILD_DIR/MapLibre.xcframework-ios.signature\"; + fi"; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -522,7 +555,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 0.8.1; + MARKETING_VERSION = 0.8.2; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", @@ -530,7 +563,7 @@ ); OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG"; PRODUCT_BUNDLE_IDENTIFIER = "de.neuland-ingolstadt.neuland-app"; - PRODUCT_NAME = NeulandNext; + PRODUCT_NAME = "NeulandNext"; SWIFT_OBJC_BRIDGING_HEADER = "NeulandNext/NeulandNext-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; @@ -551,7 +584,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = FSXB76X6V2; - "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "arm64"; INFOPLIST_FILE = NeulandNext/Info.plist; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities"; IPHONEOS_DEPLOYMENT_TARGET = 13.4; @@ -559,7 +592,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 0.8.1; + MARKETING_VERSION = 0.8.2; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", @@ -567,7 +600,7 @@ ); OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; PRODUCT_BUNDLE_IDENTIFIER = "de.neuland-ingolstadt.neuland-app"; - PRODUCT_NAME = NeulandNext; + PRODUCT_NAME = "NeulandNext"; SWIFT_OBJC_BRIDGING_HEADER = "NeulandNext/NeulandNext-Bridging-Header.h"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; @@ -634,7 +667,10 @@ LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"$(inherited)\""; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; - OTHER_LDFLAGS = "$(inherited) "; + OTHER_LDFLAGS = ( + "$(inherited)", + " ", + ); REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; SDKROOT = iphoneos; USE_HERMES = true; @@ -692,7 +728,10 @@ ); LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"$(inherited)\""; MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "$(inherited) "; + OTHER_LDFLAGS = ( + "$(inherited)", + " ", + ); REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; SDKROOT = iphoneos; USE_HERMES = true; diff --git a/ios/NeulandNext/Info.plist b/ios/NeulandNext/Info.plist index a9c15975..d3736483 100644 --- a/ios/NeulandNext/Info.plist +++ b/ios/NeulandNext/Info.plist @@ -2,6 +2,11 @@ + Allow $(PRODUCT_NAME) to access your location + + en + de + CADisableMinimumFrameDurationOnPhone CFBundleAllowMixedLocalizations @@ -76,7 +81,7 @@ $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 - Allow $(PRODUCT_NAME) to access your location + CFBundleLocalizations en de @@ -86,7 +91,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 0.8.1 + 0.8.2 CFBundleSignature ???? CFBundleURLTypes @@ -135,6 +140,8 @@ $(PRODUCT_BUNDLE_IDENTIFIER).expo.index_route $(PRODUCT_BUNDLE_IDENTIFIER).expo.index_route $(PRODUCT_BUNDLE_IDENTIFIER).expo.index_route + $(PRODUCT_BUNDLE_IDENTIFIER).expo.index_route + $(PRODUCT_BUNDLE_IDENTIFIER).expo.index_route RCTAsyncStorageExcludeFromBackup @@ -167,6 +174,6 @@ UIUserInterfaceStyle Automatic UIViewControllerBasedStatusBarAppearance - + \ No newline at end of file diff --git a/ios/NeulandNext/de.lproj/Info.plist b/ios/NeulandNext/de.lproj/Info.plist index 0b96670d..c1c756bb 100644 --- a/ios/NeulandNext/de.lproj/Info.plist +++ b/ios/NeulandNext/de.lproj/Info.plist @@ -86,7 +86,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 0.8.1 + 0.8.2 CFBundleSignature ???? CFBundleURLTypes @@ -167,6 +167,6 @@ UIUserInterfaceStyle Automatic UIViewControllerBasedStatusBarAppearance - + diff --git a/ios/NeulandNext/en.lproj/Info.plist b/ios/NeulandNext/en.lproj/Info.plist index 8d8d2839..d16592ac 100644 --- a/ios/NeulandNext/en.lproj/Info.plist +++ b/ios/NeulandNext/en.lproj/Info.plist @@ -86,7 +86,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 0.8.1 + 0.8.2 CFBundleSignature ???? CFBundleURLTypes @@ -167,6 +167,6 @@ UIUserInterfaceStyle Automatic UIViewControllerBasedStatusBarAppearance - + diff --git a/ios/TestFlight/WhatToTest.de_DE.txt b/ios/TestFlight/WhatToTest.de_DE.txt index 6c3fbb45..17b05ac8 100644 --- a/ios/TestFlight/WhatToTest.de_DE.txt +++ b/ios/TestFlight/WhatToTest.de_DE.txt @@ -1,8 +1,3 @@ -Was ist neu? -- neues Karten-Design mit Darkmode -- Vorschlag für die nächste Vorlesung auf der Karte -- Speiseplan der Mensa Neuburg -- mehr Details zu CL-Veranstaltungen -- neues Standard-App-Icon -- neues Easter Egg zum Freischalten des Retro-App-Icons -- Fehlerbehebungen und Verbesserungen \ No newline at end of file +- Wähle das App Design unabhängig von deinem iOS Design (hell oder dunkel) +- Fehlerbehebungen und Verbesserungen der Karte +- Performance Verbesserungen \ No newline at end of file diff --git a/ios/TestFlight/WhatToTest.en-US.txt b/ios/TestFlight/WhatToTest.en-US.txt index 4c5b553b..71a100bf 100644 --- a/ios/TestFlight/WhatToTest.en-US.txt +++ b/ios/TestFlight/WhatToTest.en-US.txt @@ -1,8 +1,3 @@ -What's new? -- new map design with darkmode support -- next lecture suggestion on map -- Neuburg canteen meal plan -- more CL event details -- new default app icon -- new easter egg to unlock retro app icon -- bug fixes and improvements \ No newline at end of file +- choose the app design independently of your iOS design (light or dark) +- bug fixes and improvements to the map +- performance improvements \ No newline at end of file diff --git a/package.json b/package.json index 8e3c4e61..4a6ee4aa 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "version": "0.8.1", + "version": "0.8.2", "name": "neuland", "main": "expo-router/entry", "homepage": "https://github.com/neuland-ingolstadt/neuland.app-native", diff --git a/src/app/(flow)/onboarding.tsx b/src/app/(flow)/onboarding.tsx index 5ca606a7..12da5471 100644 --- a/src/app/(flow)/onboarding.tsx +++ b/src/app/(flow)/onboarding.tsx @@ -25,6 +25,7 @@ export default function OnboardingScreen(): JSX.Element { // @ts-expect-error ts-migrate(2531) FIXME: Object is possibly 'null'. ?.goToPage(3, false) } + controlStatusBar={false} showDone={false} nextLabel={t('onboarding.navigation.next')} skipLabel={t('onboarding.navigation.skip')} diff --git a/src/app/(flow)/whatsnew.tsx b/src/app/(flow)/whatsnew.tsx index c3c7c429..1343dd40 100644 --- a/src/app/(flow)/whatsnew.tsx +++ b/src/app/(flow)/whatsnew.tsx @@ -5,10 +5,9 @@ import changelogData from '@/data/changelog.json' import { type LanguageKey } from '@/localization/i18n' import { type Changelog } from '@/types/data' import { convertToMajorMinorPatch } from '@/utils/app-utils' -import { getContrastColor, getStatusBarStyle } from '@/utils/ui-utils' +import { getContrastColor } from '@/utils/ui-utils' import { useTheme } from '@react-navigation/native' import { router } from 'expo-router' -import { StatusBar } from 'expo-status-bar' import React from 'react' import { useTranslation } from 'react-i18next' import { Pressable, StyleSheet, Text, View } from 'react-native' @@ -23,7 +22,6 @@ export default function OnboardingScreen(): JSX.Element { const { analyticsAllowed, toggleAnalytics } = React.useContext(FlowContext) return ( - - - - { showActionSheet().catch((error) => { console.error(error) @@ -427,7 +403,7 @@ export default function TimetableDetails(): JSX.Element { {notification.mins + ' min'} )} - + */} @@ -567,16 +543,16 @@ export const styles = StyleSheet.create({ position: 'absolute', transform: [{ translateX: -1000 }], }, - bellPressable: { - flexDirection: 'column', - alignItems: 'center', - justifyContent: 'space-around', - minWidth: 40, - height: '100%', - }, - bellTime: { - fontSize: 12, - }, + // bellPressable: { + // flexDirection: 'column', + // alignItems: 'center', + // justifyContent: 'space-around', + // minWidth: 40, + // height: '100%', + // }, + // bellTime: { + // fontSize: 12, + // }, dateRow: { flex: 1, flexDirection: 'row', diff --git a/src/app/(timetable)/webView.tsx b/src/app/(timetable)/webView.tsx index 36a8cded..8e1b2dff 100644 --- a/src/app/(timetable)/webView.tsx +++ b/src/app/(timetable)/webView.tsx @@ -1,8 +1,6 @@ import { type Colors } from '@/components/colors' -import { getStatusBarStyle } from '@/utils/ui-utils' import { useTheme } from '@react-navigation/native' import { useLocalSearchParams, useNavigation } from 'expo-router' -import { StatusBar } from 'expo-status-bar' import React, { useLayoutEffect } from 'react' import { useTranslation } from 'react-i18next' import { Dimensions, Platform, StyleSheet, View } from 'react-native' @@ -54,7 +52,6 @@ export default function NotesDetails(): JSX.Element { return ( <> - { void setDelayedIsLoaded() diff --git a/src/app/(user)/appicon.tsx b/src/app/(user)/appicon.tsx index d7dfe6c2..1a538c8a 100644 --- a/src/app/(user)/appicon.tsx +++ b/src/app/(user)/appicon.tsx @@ -4,10 +4,7 @@ import SectionView from '@/components/Elements/Universal/SectionsView' import { type Colors } from '@/components/colors' import { AppIconContext } from '@/components/contexts' import { capitalizeFirstLetter } from '@/utils/app-utils' -import { getStatusBarStyle } from '@/utils/ui-utils' import { useTheme } from '@react-navigation/native' -import { useLocalSearchParams } from 'expo-router' -import { StatusBar } from 'expo-status-bar' import React, { useContext } from 'react' import { useTranslation } from 'react-i18next' import { @@ -42,7 +39,6 @@ export default function AppIconPicker(): JSX.Element { const { appIcon, toggleAppIcon, unlockedAppIcons } = useContext(AppIconContext) const { t } = useTranslation(['settings']) - const isModal = useLocalSearchParams().fromAppShortcut === 'true' const categories: Record = { exclusive: ['cat', 'retro'], default: ['default', 'modernDark', 'modernGreen'], @@ -60,7 +56,6 @@ export default function AppIconPicker(): JSX.Element { return ( <> - {Object.entries(categories).map(([key, value]) => { return ( diff --git a/src/app/(user)/license.tsx b/src/app/(user)/license.tsx index eea06a64..78fabb66 100644 --- a/src/app/(user)/license.tsx +++ b/src/app/(user)/license.tsx @@ -4,10 +4,8 @@ import SectionView from '@/components/Elements/Universal/SectionsView' import { type Colors } from '@/components/colors' import { type FormListSections } from '@/types/components' import { MODAL_BOTTOM_MARGIN, PAGE_PADDING } from '@/utils/style-utils' -import { getStatusBarStyle } from '@/utils/ui-utils' import { useTheme } from '@react-navigation/native' import { useGlobalSearchParams } from 'expo-router' -import { StatusBar } from 'expo-status-bar' import React, { useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import { Linking, ScrollView, StyleSheet, Text, View } from 'react-native' @@ -85,7 +83,6 @@ export default function License(): JSX.Element { return ( <> - diff --git a/src/app/(user)/login.tsx b/src/app/(user)/login.tsx index d2687e35..58c32bef 100644 --- a/src/app/(user)/login.tsx +++ b/src/app/(user)/login.tsx @@ -1,8 +1,6 @@ import LoginForm from '@/components/Elements/Universal/LoginForm' import { type Colors } from '@/components/colors' -import { getStatusBarStyle } from '@/utils/ui-utils' import { useTheme } from '@react-navigation/native' -import { StatusBar } from 'expo-status-bar' import React, { useEffect, useState } from 'react' import { Dimensions, @@ -41,7 +39,6 @@ export default function Login(): JSX.Element { return ( <> - diff --git a/src/app/(user)/settings.tsx b/src/app/(user)/settings.tsx index 27fbe1b6..65023a0b 100644 --- a/src/app/(user)/settings.tsx +++ b/src/app/(user)/settings.tsx @@ -120,16 +120,6 @@ export default function Settings(): JSX.Element { { header: t('menu.formlist.preferences.title'), items: [ - { - title: t('menu.formlist.preferences.theme'), - icon: { - ios: 'paintpalette', - android: 'palette', - }, - onPress: () => { - router.push('(user)/theme') - }, - }, { title: 'Dashboard', icon: { @@ -172,6 +162,36 @@ export default function Settings(): JSX.Element { }, ], }, + { + header: t('menu.formlist.appearance.title'), + items: [ + { + title: t('menu.formlist.appearance.theme'), + icon: { + ios: 'paintpalette', + android: 'palette', + }, + onPress: () => { + router.push('(user)/theme') + }, + }, + ...(Platform.OS === 'ios' + ? [ + { + title: 'App Icon', + icon: { + ios: 'star.square.on.square', + android: null, + }, + onPress: () => { + router.push('(user)/appicon') + }, + }, + ] + : []), + ], + }, + { header: 'Quick Links', items: [ diff --git a/src/app/(user)/theme.tsx b/src/app/(user)/theme.tsx index d5526feb..c0f12dde 100644 --- a/src/app/(user)/theme.tsx +++ b/src/app/(user)/theme.tsx @@ -1,16 +1,14 @@ +import MultiSectionRadio from '@/components/Elements/Food/FoodLanguageSection' import PlatformIcon from '@/components/Elements/Universal/Icon' import SectionView from '@/components/Elements/Universal/SectionsView' import { type Colors, accentColors } from '@/components/colors' -import { AppIconContext, ThemeContext } from '@/components/contexts' +import { ThemeContext } from '@/components/contexts' import { getContrastColor } from '@/utils/ui-utils' import { useTheme } from '@react-navigation/native' import * as Haptics from 'expo-haptics' -import { router } from 'expo-router' import React, { useContext } from 'react' import { useTranslation } from 'react-i18next' import { - Image, - type ImageProps, Platform, Pressable, ScrollView, @@ -19,26 +17,11 @@ import { View, } from 'react-native' -let iconImages: Record = {} - -if (Platform.OS === 'ios') { - iconImages = { - default: require('@/assets/appIcons/default.png'), - modernDark: require('@/assets/appIcons/modernDark.png'), - retro: require('@/assets/appIcons/retro.png'), - modernGreen: require('@/assets/appIcons/modernGreen.png'), - rainbowDark: require('@/assets/appIcons/rainbowDark.png'), - rainbowNeon: require('@/assets/appIcons/rainbowNeon.png'), - rainbowMoonLight: require('@/assets/appIcons/rainbowMoonLight.png'), - cat: require('@/assets/appIcons/cat.png'), - } -} - export default function Theme(): JSX.Element { const colors = useTheme().colors as Colors const deviceTheme = useTheme() - const { accentColor, toggleAccentColor } = useContext(ThemeContext) - const { appIcon } = useContext(AppIconContext) + const { accentColor, toggleAccentColor, theme, toggleTheme } = + useContext(ThemeContext) const { t } = useTranslation(['settings']) interface ColorBoxColor { @@ -137,6 +120,21 @@ export default function Theme(): JSX.Element { })) ) + const elements = [ + { + key: 'auto', + title: t('theme.themes.default'), + }, + { + key: 'light', + title: t('theme.themes.light'), + }, + { + key: 'dark', + title: t('theme.themes.dark'), + }, + ] + return ( <> @@ -157,52 +155,13 @@ export default function Theme(): JSX.Element { ))} - {Platform.OS === 'ios' && ( - - { - router.push('(user)/appicon') - }} - > - - - - {/* @ts-expect-error cannot verify that appIcon is a valid key */} - {t(`appIcon.names.${appIcon}`)} - - - - - - )} + + void} + /> + ) @@ -231,26 +190,6 @@ const styles = StyleSheet.create({ flexWrap: 'wrap', paddingVertical: 18, }, - iconText: { - fontSize: 18, - alignSelf: 'center', - }, - iconPressable: { - flexDirection: 'row', - alignItems: 'center', - justifyContent: 'space-between', - paddingStart: 12, - paddingEnd: 18, - paddingVertical: 12, - }, - iconInnerContainer: { flexDirection: 'row', gap: 20 }, - iconContainer: { - width: 80, - height: 80, - justifyContent: 'center', - borderRadius: 18, - borderWidth: 1, - }, colorBoxContainer: { justifyContent: 'center', }, diff --git a/src/app/_layout.tsx b/src/app/_layout.tsx index db1161c7..29734142 100644 --- a/src/app/_layout.tsx +++ b/src/app/_layout.tsx @@ -1,13 +1,16 @@ import PlatformIcon from '@/components/Elements/Universal/Icon' +import { ThemeContext } from '@/components/contexts' import Provider from '@/components/provider' import i18n from '@/localization/i18n' +import { getStatusBarStyle } from '@/utils/ui-utils' import AsyncStorage from '@react-native-async-storage/async-storage' +import { useTheme } from '@react-navigation/native' import * as Sentry from '@sentry/react-native' import { getLocales } from 'expo-localization' import { Stack, useNavigationContainerRef, useRouter } from 'expo-router' -import React, { useEffect } from 'react' +import React, { useContext, useEffect } from 'react' import { useTranslation } from 'react-i18next' -import { AppState, Platform, Pressable, useColorScheme } from 'react-native' +import { AppState, Platform, Pressable } from 'react-native' const sentryDsn = process.env.EXPO_PUBLIC_SENTRY_DSN const routingInstrumentation = new Sentry.ReactNavigationInstrumentation() @@ -29,8 +32,7 @@ Sentry.init({ function RootLayout(): JSX.Element { const router = useRouter() - const theme = useColorScheme() - const colorText = theme === 'dark' ? 'white' : 'black' // Use the theme value instead of dark + const { theme: appTheme } = useContext(ThemeContext) const { t } = useTranslation('navigation') const ref = useNavigationContainerRef() @@ -81,364 +83,380 @@ function RootLayout(): JSX.Element { } }, []) + const isDark = useTheme().dark + return ( <> - - - - - - - - - - - - - - - ({ - title: 'App Icon', - animation: 'slide_from_right', - presentation: - route.params?.fromAppShortcut === 'true' - ? 'modal' - : undefined, - })} - /> - - - - - - - - - - - - - - ( - { - router.push('(pages)/libraryCode') + + + + + + + + + + + + + + ({ + title: 'App Icon', + animation: 'slide_from_right', + presentation: + route.params?.fromAppShortcut === 'true' + ? 'modal' + : undefined, + })} + /> + + + + + + + + + + + + + + ( + { + router.push('(pages)/libraryCode') + }} + > + - - - ), - }} - /> - - - - - - - + android={{ + name: 'barcode_scanner', + size: 24, + }} + /> + + ), + }} + /> + + + + + + ) } -export default Sentry.wrap(RootLayout) +const ProviderComponent = (): JSX.Element => { + return ( + + + + ) +} + +export default Sentry.wrap(ProviderComponent) diff --git a/src/components/Elements/Food/HeaderRight.tsx b/src/components/Elements/Food/HeaderRight.tsx index 7eb8bc47..61cfa1fd 100644 --- a/src/components/Elements/Food/HeaderRight.tsx +++ b/src/components/Elements/Food/HeaderRight.tsx @@ -1,5 +1,4 @@ -import { type Colors } from '@/components/colors' -import { type Theme, useTheme } from '@react-navigation/native' +import { useTheme } from '@react-navigation/native' import { router } from 'expo-router' import React from 'react' import { Pressable, StyleSheet, View } from 'react-native' @@ -7,8 +6,7 @@ import { Pressable, StyleSheet, View } from 'react-native' import PlatformIcon from '../Universal/Icon' export const FoodHeaderRight = (): JSX.Element => { - const theme: Theme = useTheme() - const colors = theme.colors as Colors + const isDark = useTheme().dark return ( { > ('') let filteredEntries = Object.entries(data) @@ -56,11 +64,11 @@ const ItemsPickerScreen = (params: { placeholder: t(`navigation.${placeholderKey}`, { ns: 'navigation', }), - + textColor: colors.text, + barTintColor: getBarTintColor(theme, isDark), ...Platform.select({ android: { headerIconColor: colors.text, - textColor: colors.text, hintTextColor: colors.text, }, }), @@ -71,11 +79,10 @@ const ItemsPickerScreen = (params: { }, }, }) - }, [navigation, colors.text]) + }, [navigation, colors.text, isDark]) return ( - - {t('empty.' + type)} + {t( + // @ts-expect-error Translation key is dynamic + 'empty.' + type + )} )} diff --git a/src/components/Elements/Map/BottomSheetBackground.tsx b/src/components/Elements/Map/BottomSheetBackground.tsx index 4d3f8d86..4d9dd356 100644 --- a/src/components/Elements/Map/BottomSheetBackground.tsx +++ b/src/components/Elements/Map/BottomSheetBackground.tsx @@ -16,7 +16,11 @@ const BottomSheetBackground = (): JSX.Element => { }, ]} > - + ) : ( { + const colors = useTheme().colors as Colors + const { t } = useTranslation('common') + + return ( + + { + void Linking.openURL( + 'https://www.openstreetmap.org/copyright' + ) + }} + style={styles.attributionLink} + > + + {t('pages.map.details.osm')} + + + + + ) +} + const MapBottomSheet: React.FC = ({ bottomSheetRef, currentPosition, @@ -118,7 +156,7 @@ const MapBottomSheet: React.FC = ({ addUnlockedAppIcon('retro') } }, [localSearch]) - + const textInputRef = useRef(null) return ( = ({ backgroundComponent={BottomSheetBackground} animatedPosition={currentPosition} keyboardBehavior="extend" + onChange={(index) => { + if (index <= 1) { + localSearch !== '' && setLocalSearch('') + textInputRef.current?.blur() + } + }} > = ({ > {Platform.OS === 'ios' ? ( = ({ onFocus={() => { bottomSheetRef.current?.snapToIndex(2) }} - onEndEditing={() => { - bottomSheetRef.current?.collapse() - }} /> ) : ( = ({ }} /> )} + {localSearch !== '' ? ( searchResultsExact.length > 0 || searchResultsFuzzy.length > 0 ? ( @@ -224,6 +268,9 @@ const MapBottomSheet: React.FC = ({ bottomSheetRef={bottomSheetRef} /> )} + ItemSeparatorComponent={() => ( + + )} stickySectionHeadersEnabled={false} renderSectionHeader={({ section: { title }, @@ -249,14 +296,17 @@ const MapBottomSheet: React.FC = ({ ) ) : userKind === USER_GUEST ? ( - - {t('pages.map.details.room.signIn')} - + + + {t('pages.map.details.room.signIn')} + + + ) : ( <> {nextLecture !== null && nextLecture.length > 0 && ( @@ -623,39 +673,10 @@ const MapBottomSheet: React.FC = ({ )} + )} - - { - void Linking.openURL( - 'https://www.openstreetmap.org/copyright' - ) - }} - style={styles.attributionLink} - > - - {t('pages.map.details.osm')} - - - - ) @@ -760,6 +781,10 @@ const styles = StyleSheet.create({ }, attributionText: { fontSize: 15, - paddingStart: 12, + paddingStart: 4, + }, + guestContainer: { + paddingTop: 15, + gap: 35, }, }) diff --git a/src/components/Elements/Map/MapScreen.tsx b/src/components/Elements/Map/MapScreen.tsx index dc0fb9f6..0544ce60 100644 --- a/src/components/Elements/Map/MapScreen.tsx +++ b/src/components/Elements/Map/MapScreen.tsx @@ -36,7 +36,7 @@ import { type BottomSheetModal } from '@gorhom/bottom-sheet' import MapLibreGL from '@maplibre/maplibre-react-native' import { useTheme } from '@react-navigation/native' import { useQuery } from '@tanstack/react-query' -import { useFocusEffect, useNavigation } from 'expo-router' +import { useNavigation } from 'expo-router' import { type Feature, type FeatureCollection, @@ -47,6 +47,7 @@ import React, { useCallback, useContext, useEffect, + useLayoutEffect, useMemo, useRef, useState, @@ -54,11 +55,11 @@ import React, { import { useTranslation } from 'react-i18next' import { ActivityIndicator, + Appearance, LayoutAnimation, Linking, Platform, Pressable, - StatusBar, StyleSheet, Text, View, @@ -119,8 +120,17 @@ const MapScreen = (): JSX.Element => { const locations: LocationsType = Locations const [isVisible, setIsVisible] = useState(true) const opacity = useSharedValue(1) + + // needed for Android void MapLibreGL.setAccessToken(null) + useLayoutEffect(() => { + navigation.setOptions({ + statusbarTranslucent: true, + statusBarColor: undefined, + }) + }, [navigation]) + const toggleShowAllFloors = (): void => { LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut) setShowAllFloors(!showAllFloors) @@ -133,6 +143,7 @@ const MapScreen = (): JSX.Element => { return { transform: [{ translateY: bottom }], + height: opacity.value === 0 ? 0 : 'auto', opacity: opacity.value, } }) @@ -221,6 +232,16 @@ const MapScreen = (): JSX.Element => { return nextEvent != null ? [nextEvent] : [] } + useEffect(() => { + const subscription = Appearance.addChangeListener(() => { + bottomSheetModalRef.current?.close() + }) + + return () => { + subscription.remove() + } + }) + useEffect(() => { if (timetable == null) { return @@ -592,13 +613,6 @@ const MapScreen = (): JSX.Element => { } }, [clickedElement]) - useFocusEffect(() => { - StatusBar.setBarStyle(theme.dark ? 'light-content' : 'dark-content') - return () => { - StatusBar.setBarStyle('default') - } - }) - useEffect(() => { setDisableFollowUser(false) }, [cameraTriggerKey]) @@ -616,7 +630,7 @@ const MapScreen = (): JSX.Element => { fillOpacity: 0.1, }, allRoomsOutline: { - lineColor: isDark ? '#2d3035' : '#979797', + lineColor: isDark ? '#2d3035' : '#8e8e8e', lineWidth: 2.3, }, availableRooms: { @@ -624,12 +638,12 @@ const MapScreen = (): JSX.Element => { fillOpacity: 0.2, }, availableRoomsOutline: { - lineWidth: 2.3, + lineWidth: 2.4, }, osmBackground: { backgroundColor: isDark - ? 'rgba(166, 173, 181, 0.69)' - : 'rgba(222, 221, 203, 0.69)', + ? 'rgba(166, 173, 181, 0.70)' + : 'rgba(218, 218, 218, 0.70)', paddingHorizontal: 4, borderRadius: 4, }, @@ -716,6 +730,14 @@ const MapScreen = (): JSX.Element => { onRegionIsChanging={() => { setRegionChange(true) }} + compassViewMargins={ + Platform.OS === 'android' + ? { + x: 5, + y: 70, + } + : undefined + } > { clickedElement == null && !disableFollowUser } + triggerKey={cameraTriggerKey} followUserMode={MapLibreGL.UserTrackingMode.Follow} /> { const { setClickedElement, setLocalSearch, setCurrentFloor } = useContext(MapContext) - console.log(result) return ( - - { - const center = result.item.properties?.center - Keyboard.dismiss() - bottomSheetRef.current?.collapse() - // _setView(center, mapRef) - setClickedElement({ - data: result.title, - type: result.item.properties?.rtype, - center, - manual: false, - }) - setCurrentFloor({ - floor: - (result.item.properties?.Ebene as string) ?? 'EG', - manual: false, - }) - handlePresentModalPress() - // _injectMarker(mapRef, center, colors) - setLocalSearch('') + { + const center = result.item.properties?.center + Keyboard.dismiss() + bottomSheetRef.current?.collapse() + // _setView(center, mapRef) + setClickedElement({ + data: result.title, + type: result.item.properties?.rtype, + center, + manual: false, + }) + setCurrentFloor({ + floor: (result.item.properties?.Ebene as string) ?? 'EG', + manual: false, + }) + handlePresentModalPress() + // _injectMarker(mapRef, center, colors) + setLocalSearch('') + }} + > + - + + + + - - - - - - {result.title} - - - {result.subtitle} - - - - {index !== 9 && } - + {result.title} + + + {result.subtitle} + + + ) } diff --git a/src/components/Elements/Timetable/HeaderButtons.tsx b/src/components/Elements/Timetable/HeaderButtons.tsx index 8659e292..a6ab66b1 100644 --- a/src/components/Elements/Timetable/HeaderButtons.tsx +++ b/src/components/Elements/Timetable/HeaderButtons.tsx @@ -1,4 +1,3 @@ -import { type Colors } from '@/components/colors' import { TimetableContext } from '@/components/contexts' import { trackEvent } from '@aptabase/react-native' import { useTheme } from '@react-navigation/native' @@ -8,7 +7,7 @@ import { Pressable, StyleSheet } from 'react-native' import PlatformIcon from '../Universal/Icon' export function HeaderLeft(): JSX.Element { - const colors = useTheme().colors as Colors + const isDark = useTheme().dark const { timetableMode, setTimetableMode } = useContext(TimetableContext) return ( @@ -24,7 +23,7 @@ export function HeaderLeft(): JSX.Element { style={styles.headerButton} > - - - - - - + + + + + ) } diff --git a/src/components/contexts.ts b/src/components/contexts.ts index b011c330..4c1f61b1 100644 --- a/src/components/contexts.ts +++ b/src/components/contexts.ts @@ -42,6 +42,8 @@ export const UserKindContext = createContext({ }) export const ThemeContext = createContext({ + theme: 'auto', + toggleTheme: () => {}, accentColor: 'blue', toggleAccentColor: () => {}, }) diff --git a/src/components/provider.tsx b/src/components/provider.tsx index 4804860a..b2780c88 100644 --- a/src/components/provider.tsx +++ b/src/components/provider.tsx @@ -12,6 +12,7 @@ import { createAsyncStoragePersister } from '@tanstack/query-async-storage-persi import { QueryClient, focusManager } from '@tanstack/react-query' import { PersistQueryClientProvider } from '@tanstack/react-query-persist-client' import { usePathname } from 'expo-router' +import 'expo-status-bar' import React, { useEffect } from 'react' import { type AppStateStatus, @@ -144,6 +145,15 @@ export default function Provider({ }) }, [themeHook.accentColor, flow.analyticsInitialized]) + useEffect(() => { + if (!flow.analyticsInitialized) { + return + } + trackEvent('Theme', { + theme: themeHook.theme, + }) + }, [themeHook.accentColor, flow.analyticsInitialized]) + useEffect(() => { if (!flow.analyticsInitialized) { return @@ -236,15 +246,20 @@ export default function Provider({ }) }, [flow.analyticsAllowed, flow.analyticsInitialized]) + const getTheme = (): AppTheme => { + if (themeHook.theme === 'auto') { + return colorScheme === 'dark' ? darkTheme : lightTheme + } + return themeHook.theme === 'dark' ? darkTheme : lightTheme + } + return ( - + diff --git a/src/hooks/contexts/theme.ts b/src/hooks/contexts/theme.ts index f9b38ed0..06de040d 100644 --- a/src/hooks/contexts/theme.ts +++ b/src/hooks/contexts/theme.ts @@ -3,7 +3,9 @@ import { useEffect, useState } from 'react' export interface ThemeHook { accentColor: string + theme: 'light' | 'dark' | 'auto' toggleAccentColor: (name: string) => void + toggleTheme: (theme: 'light' | 'dark' | 'auto') => void } /** @@ -13,16 +15,27 @@ export interface ThemeHook { */ export function useTheme(): ThemeHook { const [accentColor, setAccentColor] = useState('blue') + const [theme, setTheme] = useState<'light' | 'dark' | 'auto'>('auto') useEffect(() => { const loadAsyncStorageData = async (): Promise => { try { - const data = await AsyncStorage.getItem('accentColor') - if (data != null) { - setAccentColor(data) + const keys = ['accentColor', 'theme'] + const [accentColorData, themeData] = await Promise.all( + keys.map(async (key) => await AsyncStorage.getItem(key)) + ) + + if (accentColorData != null) { + setAccentColor(accentColorData) } else { setAccentColor('blue') } + + if (themeData != null) { + setTheme(themeData as 'light' | 'dark' | 'auto') + } else { + setTheme('auto') + } } catch (error) { console.error( 'Error while retrieving theme data from AsyncStorage:', @@ -42,8 +55,19 @@ export function useTheme(): ThemeHook { void AsyncStorage.setItem('accentColor', name) } + /** + * Function to toggle the theme of the app. + * @param theme - The new theme to be set. + */ + function toggleTheme(theme: 'light' | 'dark' | 'auto'): void { + setTheme(theme) + void AsyncStorage.setItem('theme', theme) + } + return { accentColor, toggleAccentColor, + theme, + toggleTheme, } } diff --git a/src/localization/de/settings.ts b/src/localization/de/settings.ts index 18a4f66b..fbbf70e8 100644 --- a/src/localization/de/settings.ts +++ b/src/localization/de/settings.ts @@ -21,10 +21,13 @@ export default { formlist: { preferences: { title: 'Einstellungen', - theme: 'Design', food: 'Essen', language: 'Sprache', }, + appearance: { + title: 'Darstellung', + theme: 'Design', + }, language: { title: 'Sprache wechseln', message: @@ -118,10 +121,6 @@ export default { accent: { title: 'Akzentfarbe', }, - exclusive: { - title: 'Exklusive Designs', - description: 'Demnächst verfügbar', - }, colors: { teal: 'Türkis', blue: 'Blau', @@ -133,7 +132,13 @@ export default { orange: 'Orange', green: 'Neuland', }, - footer: 'Ändere die Akzentfarbe, um deinen Stil zu entsprechen. Das ändert die Farbe der Symbole und Schaltflächen in der App.', + footer: 'Das ändert die Farbe der Symbole und Schaltflächen in der App.', + themes: { + title: 'Design', + default: 'Automatisch', + dark: 'Dunkel', + light: 'Hell', + }, }, dashboard: { shown: 'Angezeigte Karten', diff --git a/src/localization/en/navigation.ts b/src/localization/en/navigation.ts index 73fb8fce..dc65a0f9 100644 --- a/src/localization/en/navigation.ts +++ b/src/localization/en/navigation.ts @@ -11,7 +11,7 @@ export default { allergensSearch: 'Search allergens', allergens: 'Allergens', details: 'Details', - theme: 'Appearance', + theme: 'Design', profile: 'Profile', about: 'About', advancedSearch: 'Advanced Search', diff --git a/src/localization/en/settings.ts b/src/localization/en/settings.ts index 62fe1524..dab4db01 100644 --- a/src/localization/en/settings.ts +++ b/src/localization/en/settings.ts @@ -19,10 +19,13 @@ export default { formlist: { preferences: { title: 'Preferences', - theme: 'Appearance', food: 'Food', language: 'Language', }, + appearance: { + title: 'Appearance', + theme: 'Design', + }, language: { title: 'Change language', message: 'Confirm to change the app language to German.', @@ -116,10 +119,6 @@ export default { accent: { title: 'Accent color', }, - exclusive: { - title: 'Exclusive designs', - description: 'Coming soon', - }, colors: { teal: 'Teal', blue: 'Blue', @@ -131,7 +130,13 @@ export default { orange: 'Orange', green: 'Neuland', }, - footer: 'Change the accent color to match your style. This changes the color of the icons and buttons in the app.', + footer: 'This changes the color of the icons and buttons in the app.', + themes: { + title: 'Theme', + default: 'Automatic', + dark: 'Dark', + light: 'Light', + }, }, dashboard: { shown: 'Shown cards', diff --git a/src/utils/ui-utils.ts b/src/utils/ui-utils.ts index 19a69159..8d8bd3ad 100644 --- a/src/utils/ui-utils.ts +++ b/src/utils/ui-utils.ts @@ -110,17 +110,6 @@ export const lighten = (percentage: number, color: string): string => { return newColor } -/** - * Returns the appropriate status bar style based on the platform. Used for Status Bar component in modal screens. - * @returns The appropriate status bar style. - * @example - * // Usage - * - */ -export const getStatusBarStyle = (): 'light' | 'auto' => { - return Platform.OS === 'ios' ? (Platform.isPad ? 'auto' : 'light') : 'auto' -} - let toast: any = null export const showToast = async ( message: string, @@ -140,3 +129,36 @@ export const showToast = async ( ...options, }) } + +export const getStatusBarStyle = ( + theme: 'light' | 'dark' | 'auto' +): 'light' | 'dark' | 'auto' => { + switch (theme) { + case 'light': + return 'dark' + case 'dark': + return 'light' + default: + return 'auto' + } +} + +export function getBarTintColor( + theme: string, + isDark: boolean +): string | undefined { + if (Platform.OS === 'android') { + return undefined + } + const darkDarkColor = '#2e2e2e' + const darkLightColor = '#8f8f8f' + const lightDarkColor = '#999999' + const lightLightColor = '#ebebeb' + if (theme === 'auto') { + return undefined + } + if (theme === 'dark') { + return isDark ? darkDarkColor : darkLightColor + } + return isDark ? lightDarkColor : lightLightColor +}