diff --git a/android/app/build.gradle b/android/app/build.gradle index 10d42f74..e3c9d0fd 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -92,7 +92,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode 274 - versionName "0.11.1" + versionName "0.11.2" } signingConfigs { debug { diff --git a/app.config.json b/app.config.json index 0ee1d387..9b9d24a2 100644 --- a/app.config.json +++ b/app.config.json @@ -4,7 +4,7 @@ "slug": "neuland-app-native", "scheme": "neuland", "owner": "neuland-ingolstadt", - "version": "0.11.1", + "version": "0.11.2", "githubUrl": "https://github.com/neuland-ingolstadt/neuland.app-native/", "userInterfaceStyle": "automatic", "newArchEnabled": false, diff --git a/bun.lockb b/bun.lockb index e52c7275..8656d613 100755 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/ios/NeulandNext.xcodeproj/project.pbxproj b/ios/NeulandNext.xcodeproj/project.pbxproj index 634b39c1..e0d01940 100644 --- a/ios/NeulandNext.xcodeproj/project.pbxproj +++ b/ios/NeulandNext.xcodeproj/project.pbxproj @@ -537,7 +537,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; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) DEBUG"; @@ -603,7 +606,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 8d5ce936..4f990230 100644 --- a/ios/NeulandNext/Info.plist +++ b/ios/NeulandNext/Info.plist @@ -21,7 +21,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 0.11.1 + 0.11.2 CFBundleSignature ???? CFBundleIcons diff --git a/ios/Podfile.lock b/ios/Podfile.lock index acf896a3..a425ff55 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -10,7 +10,7 @@ PODS: - DGSwiftUtilities (~> 0.11) - ContextMenuAuxiliaryPreview (0.5.2): - DGSwiftUtilities (~> 0.29) - - DGSwiftUtilities (0.44.0) + - DGSwiftUtilities (0.46.3) - DoubleConversion (1.1.6) - EXApplication (6.0.1): - ExpoModulesCore @@ -21,7 +21,7 @@ PODS: - ExpoModulesCore - Expo (52.0.23): - ExpoModulesCore - - expo-dev-client (5.0.7): + - expo-dev-client (5.0.8): - EXManifests - expo-dev-launcher - expo-dev-menu @@ -113,10 +113,10 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - expo-dev-menu (6.0.14): + - expo-dev-menu (6.0.15): - DoubleConversion - - expo-dev-menu/Main (= 6.0.14) - - expo-dev-menu/ReactNativeCompatibles (= 6.0.14) + - expo-dev-menu/Main (= 6.0.15) + - expo-dev-menu/ReactNativeCompatibles (= 6.0.15) - glog - hermes-engine - RCT-Folly (= 2024.01.01.00) @@ -137,7 +137,7 @@ PODS: - ReactCommon/turbomodule/core - Yoga - expo-dev-menu-interface (1.9.2) - - expo-dev-menu/Main (6.0.14): + - expo-dev-menu/Main (6.0.15): - DoubleConversion - EXManifests - expo-dev-menu-interface @@ -164,7 +164,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - expo-dev-menu/ReactNativeCompatibles (6.0.14): + - expo-dev-menu/ReactNativeCompatibles (6.0.15): - DoubleConversion - glog - hermes-engine @@ -185,7 +185,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - expo-dev-menu/SafeAreaView (6.0.14): + - expo-dev-menu/SafeAreaView (6.0.15): - DoubleConversion - ExpoModulesCore - glog @@ -207,7 +207,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - expo-dev-menu/Vendored (6.0.14): + - expo-dev-menu/Vendored (6.0.15): - DoubleConversion - expo-dev-menu/SafeAreaView - glog @@ -229,7 +229,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - ExpoAlternateAppIcons (1.2.0): + - ExpoAlternateAppIcons (1.3.0): - ExpoModulesCore - ExpoAsset (11.0.1): - ExpoModulesCore @@ -318,11 +318,11 @@ PODS: - hermes-engine (0.76.5): - hermes-engine/Pre-built (= 0.76.5) - hermes-engine/Pre-built (0.76.5) - - maplibre-react-native (10.0.0-beta.15): - - maplibre-react-native/DynamicLibrary (= 10.0.0-beta.15) + - maplibre-react-native (10.0.0-beta.17): + - maplibre-react-native/DynamicLibrary (= 10.0.0-beta.17) - React - React-Core - - maplibre-react-native/DynamicLibrary (10.0.0-beta.15): + - maplibre-react-native/DynamicLibrary (10.0.0-beta.17): - React - React-Core - MMKV (2.0.2): @@ -1975,9 +1975,9 @@ PODS: - DGSwiftUtilities - ExpoModulesCore - ReactNativeIosUtilities - - ReactNativeIosUtilities (4.5.1): + - ReactNativeIosUtilities (4.5.3): - ComputableLayout (~> 0.7) - - DGSwiftUtilities (~> 0.27) + - DGSwiftUtilities (~> 0.46.3) - ExpoModulesCore - rn-quick-actions (0.0.3): - React @@ -2537,18 +2537,18 @@ SPEC CHECKSUMS: Burnt: dde5dd245f124a4594098e3938ba71aae4ec83c3 ComputableLayout: c50faffac4ed9f8f05b0ce5e6f3a60df1f6042c8 ContextMenuAuxiliaryPreview: 20be0be795b783b68f8792732eed4bed9f202c1c - DGSwiftUtilities: e100e66cb66a1a238ea69025073a4b809229b573 + DGSwiftUtilities: 2f0d35d5ff3d57bd70ccc42f15971460db202c41 DoubleConversion: f16ae600a246532c4020132d54af21d0ddb2a385 EXApplication: e1ad9c950c98b2b134578092c948b10b403f3ea7 EXConstants: dd2fe64c6cdb1383b694c309a63028a8e9f2be6d EXJSONUtils: 01fc7492b66c234e395dcffdd5f53439c5c29c93 EXManifests: f30a0c5d3d6cad8db9c01bab579e0aa0df5d3cb2 Expo: 37cea4167605a3a1b88fa0caf8349ae76c0d389c - expo-dev-client: 4cc2c40efd66b42fc6f3d14a52435c2de431e9bd + expo-dev-client: ec22c0535228bbf784a4fa7c40f90d3944d7724e expo-dev-launcher: 47c6da6d00c48be318e77134335b4619a810fb40 - expo-dev-menu: 297e955ed2220736e01d70c14cf5fdff8fac6e63 + expo-dev-menu: 9e2c8a4c01ed3d51859bd6375a14683f15e2ec30 expo-dev-menu-interface: 4baf2f8b3b79ce37cf4b900e4b3ba6df3384f0a1 - ExpoAlternateAppIcons: 9b0c7b9de66b48b9764c8a08aaaf0434adebcc1c + ExpoAlternateAppIcons: 671807310405004cc3e70238c465df88cc4c2f53 ExpoAsset: 8138f2a9ec55ae1ad7c3871448379f7d97692d15 ExpoBlur: 562b3da84d3cd79016c411671eaf71a404266415 ExpoBrightness: ce777f6a365592f745428cb0acc9066b400182e8 @@ -2573,7 +2573,7 @@ SPEC CHECKSUMS: fmt: 10c6e61f4be25dc963c36bd73fc7b1705fe975be glog: 08b301085f15bcbb6ff8632a8ebaf239aae04e6a hermes-engine: 06a9c6900587420b90accc394199527c64259db4 - maplibre-react-native: f389778b3797b0d3460557c369c75c89157cd1c9 + maplibre-react-native: c0a3e12dc3b53d50713c0f0729fe4ad0ade00174 MMKV: 3eacda84cd1c4fc95cf848d3ecb69d85ed56006c MMKVCore: 508b4d3a8ce031f1b5c8bd235f0517fb3f4c73a9 RCT-Folly: bf5c0376ffe4dd2cf438dcf86db385df9fdce648 @@ -2644,7 +2644,7 @@ SPEC CHECKSUMS: ReactCodegen: 8d7f9f05befdeb108948bbaa18d149b25a964f72 ReactCommon: 858d61cce81635d57be89348568b603e838b3cac ReactNativeIosContextMenu: 4601cc5113ca45bc7295707bf5c76987caac8bd7 - ReactNativeIosUtilities: 4980803356bff7906929d5d034da58bfc9bb824a + ReactNativeIosUtilities: 44fa1cb515396b7a73c22f56695aae19bdb76f09 rn-quick-actions: dbd80c5223df43389c11920e035d09f4b7694176 RNDateTimePicker: 40ffda97d071a98a10fdca4fa97e3977102ccd14 RNDeviceInfo: 3f2e5fcca3637f75c6d30ba287293c2f97206781 diff --git a/package.json b/package.json index 8e2bd118..d280f499 100644 --- a/package.json +++ b/package.json @@ -33,21 +33,21 @@ "@gorhom/bottom-sheet": "^5.0.6", "@howljs/calendar-kit": "^2.2.1", "@kichiyaki/react-native-barcode-generator": "^0.6.7", - "@maplibre/maplibre-react-native": "^10.0.0-beta.15", + "@maplibre/maplibre-react-native": "^10.0.0-beta.17", "@react-native-community/datetimepicker": "8.2.0", "@react-native-community/netinfo": "11.4.1", "@react-native-menu/menu": "^1.2.0", "@react-navigation/native": "^7.0.14", "@react-navigation/stack": "^7.1.1", "@shopify/flash-list": "1.7.2", - "@tanstack/query-sync-storage-persister": "^5.62.9", - "@tanstack/react-query": "^5.62.11", - "@tanstack/react-query-persist-client": "^5.62.11", + "@tanstack/query-sync-storage-persister": "^5.62.16", + "@tanstack/react-query": "^5.62.16", + "@tanstack/react-query-persist-client": "^5.62.16", "@th3rdwave/react-navigation-bottom-sheet": "0.3.2", "burnt": "^0.12.2", "color": "^4.2.3", "expo": "~52.0.23", - "expo-alternate-app-icons": "^1.2.0", + "expo-alternate-app-icons": "^1.3.0", "expo-application": "~6.0.1", "expo-blur": "~14.0.1", "expo-brightness": "~13.0.2", @@ -67,7 +67,7 @@ "expo-system-ui": "~4.0.6", "fuse.js": "^7.0.0", "graphql": "^16.10.0", - "i18next": "^24.2.0", + "i18next": "^24.2.1", "lucide-react-native": "^0.469.0", "metro": "^0.81.0", "moment": "^2.30.1", @@ -75,7 +75,7 @@ "react": "18.3.1", "react-content-loader": "^7.0.2", "react-dom": "18.3.1", - "react-i18next": "^15.3.0", + "react-i18next": "^15.4.0", "react-native": "0.76.5", "react-native-bottom-tabs": "0.7.6", "react-native-collapsible": "1.6.1", @@ -83,10 +83,10 @@ "react-native-device-info": "^14.0.2", "react-native-drag-drop-ios": "^0.1.1", "react-native-drag-sort": "^2.4.4", - "react-native-edge-to-edge": "^1.1.3", + "react-native-edge-to-edge": "^1.2.0", "react-native-gesture-handler": "~2.20.2", "react-native-ios-context-menu": "^2.5.3", - "react-native-ios-utilities": "^4.5.1", + "react-native-ios-utilities": "^4.5.3", "react-native-mmkv": "^2.12.2", "react-native-pager-view": "6.6.1", "react-native-reanimated": "~3.16.6", @@ -125,14 +125,14 @@ "@types/bun": "latest", "@types/color": "^3.0.6", "@types/geojson": "^7946.0.15", - "@types/node": "^22.10.2", + "@types/node": "^22.10.5", "@types/prop-types": "^15.7.14", "@types/react": "~18.3.18", "@types/sanitize-html": "^2.13.0", - "@typescript-eslint/eslint-plugin": "^8.18.2", - "@typescript-eslint/parser": "^8.18.2", + "@typescript-eslint/eslint-plugin": "^8.19.1", + "@typescript-eslint/parser": "^8.19.1", "ajv": "^8.17.1", - "babel-plugin-formatjs": "^10.5.29", + "babel-plugin-formatjs": "^10.5.30", "babel-plugin-transform-inline-environment-variables": "^0.4.4", "eslint": "^8.57.1", "eslint-config-prettier": "^9.1.0", @@ -146,7 +146,7 @@ "eslint-plugin-react-native": "^4.1.0", "eslint-plugin-react-native-unistyles": "^0.2.9", "expo-atlas": "^0.4.0", - "expo-dev-client": "~5.0.7", + "expo-dev-client": "~5.0.8", "graphql-codegen-typescript-operation-types": "^2.0.1", "husky": "^9.1.7", "lint-staged": "^15.3.0", diff --git a/src/data/licenses.json b/src/data/licenses.json index 27affa69..c00d8e42 100644 --- a/src/data/licenses.json +++ b/src/data/licenses.json @@ -47,7 +47,7 @@ "licenseUrl": "https://github.com/Kichiyaki/react-native-barcode-generator/raw/master/LICENSE", "parents": "neuland" }, - "@maplibre/maplibre-react-native@10.0.0-beta.15": { + "@maplibre/maplibre-react-native@10.0.0-beta.17": { "licenses": "MIT", "repository": "https://github.com/maplibre/maplibre-react-native", "licenseUrl": "https://github.com/maplibre/maplibre-react-native/raw/master/LICENSE.md", @@ -89,19 +89,19 @@ "licenseUrl": "https://github.com/Shopify/flash-list/raw/master/LICENSE.md", "parents": "neuland" }, - "@tanstack/query-sync-storage-persister@5.62.9": { + "@tanstack/query-sync-storage-persister@5.62.16": { "licenses": "MIT", "repository": "https://github.com/TanStack/query", "licenseUrl": "https://github.com/TanStack/query/raw/master/LICENSE", "parents": "neuland" }, - "@tanstack/react-query-persist-client@5.62.11": { + "@tanstack/react-query-persist-client@5.62.16": { "licenses": "MIT", "repository": "https://github.com/TanStack/query", "licenseUrl": "https://github.com/TanStack/query/raw/master/LICENSE", "parents": "neuland" }, - "@tanstack/react-query@5.62.11": { + "@tanstack/react-query@5.62.16": { "licenses": "MIT", "repository": "https://github.com/TanStack/query", "licenseUrl": "https://github.com/TanStack/query/raw/master/LICENSE", @@ -125,7 +125,7 @@ "licenseUrl": "https://github.com/Qix-/color/raw/master/LICENSE", "parents": "neuland" }, - "expo-alternate-app-icons@1.2.0": { + "expo-alternate-app-icons@1.3.0": { "licenses": "MIT", "repository": "https://github.com/pchalupa/expo-alternate-app-icons", "licenseUrl": "https://github.com/pchalupa/expo-alternate-app-icons/raw/master/LICENSE", @@ -251,7 +251,7 @@ "licenseUrl": "https://github.com/graphql/graphql-js/raw/master/LICENSE", "parents": "neuland" }, - "i18next@24.2.0": { + "i18next@24.2.1": { "licenses": "MIT", "repository": "https://github.com/i18next/i18next", "licenseUrl": "https://github.com/i18next/i18next/raw/master/LICENSE", @@ -293,7 +293,7 @@ "licenseUrl": "https://github.com/facebook/react/raw/master/LICENSE", "parents": "neuland" }, - "react-i18next@15.3.0": { + "react-i18next@15.4.0": { "licenses": "MIT", "repository": "https://github.com/i18next/react-i18next", "licenseUrl": "https://github.com/i18next/react-i18next/raw/master/LICENSE", @@ -335,7 +335,7 @@ "licenseUrl": "https://github.com/mochixuan/react-native-drag-sort", "parents": "neuland" }, - "react-native-edge-to-edge@1.1.3": { + "react-native-edge-to-edge@1.2.0": { "licenses": "MIT", "repository": "https://github.com/zoontek/react-native-edge-to-edge", "licenseUrl": "https://github.com/zoontek/react-native-edge-to-edge/raw/master/LICENSE", @@ -353,7 +353,7 @@ "licenseUrl": "https://github.com/dominicstop/react-native-ios-context-menu/raw/master/LICENSE", "parents": "neuland" }, - "react-native-ios-utilities@4.5.1": { + "react-native-ios-utilities@4.5.3": { "licenses": "MIT", "repository": "https://github.com/dominicstop/react-native-ios-utilities", "licenseUrl": "https://github.com/dominicstop/react-native-ios-utilities/raw/master/LICENSE", diff --git a/src/utils/storage.ts b/src/utils/storage.ts index f85644e2..e9e2e774 100644 --- a/src/utils/storage.ts +++ b/src/utils/storage.ts @@ -30,10 +30,15 @@ export async function saveSecure( } export function loadSecure(key: string): string | null { - if (Platform.OS === 'web') { - return secureWebStorage.getString(key) ?? null + try { + if (Platform.OS === 'web') { + return secureWebStorage.getString(key) ?? null + } + return SecureStore.getItem(key) + } catch (error) { + console.error(`Failed to load secure item with key ${key}:`, error) + return null } - return SecureStore.getItem(key) } export async function deleteSecure(key: string): Promise { @@ -47,7 +52,11 @@ export async function deleteSecure(key: string): Promise { const clientStorage = { setItem: (key: string, value: string | number | boolean | ArrayBuffer) => { - storage.set(key, value) + if (value instanceof ArrayBuffer) { + storage.set(key, new Uint8Array(value)) + } else { + storage.set(key, value) + } }, getItem: (key: string) => { const value = storage.getString(key)