Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
03e0b48
feat: add restaurant service to service selection
godetremy Jun 3, 2026
725e36b
feat: restaurant service detection on home
godetremy Jun 7, 2026
328ddd3
fix: readability on scroll (thanks liquid glass...)
godetremy Jun 7, 2026
83f17c6
feat: ui for home header
godetremy Jun 7, 2026
21b84b0
feat: data for balance
godetremy Jun 7, 2026
f29f45c
Merge remote-tracking branch 'origin/dev' into feat/extern_service_only
godetremy Jun 7, 2026
7a64e05
feat: card and balance history
godetremy Jun 8, 2026
f09592f
build(expo): bump SDK to Expo 56
ecnivtwelve Jun 9, 2026
2182f00
build(expo): update build tooling and app configuration
ecnivtwelve Jun 9, 2026
ce7d5bb
build(expo): update iOS native project for SDK 56
ecnivtwelve Jun 9, 2026
fe8f323
build(expo): update Android manifest for SDK 56
ecnivtwelve Jun 9, 2026
5b4ab27
build(expo): migrate react-navigation imports to expo-router/react-na…
ecnivtwelve Jun 9, 2026
7029ac2
build(expo): update countly patch to version 25.4.1
ecnivtwelve Jun 9, 2026
e66e23c
fix(wallpaper): Wallpaper modal header distance
ecnivtwelve Jun 9, 2026
43f473c
chore(docs): Remove AI tools from folder tree
ecnivtwelve Jun 9, 2026
13e58a9
feat(SplashScreen): Use new Expo SplashScreen config plugin
ecnivtwelve Jun 9, 2026
6162053
fix(Tabs): Truncated tab bar labels
ecnivtwelve Jun 9, 2026
4a629f9
fix(build): Make app buildable on Xcode 27
ecnivtwelve Jun 10, 2026
bc72559
chore: Merge branch 'bump/expo-56' into feat/extern_service_only
ecnivtwelve Jun 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -53,4 +53,7 @@ yarn.lock

secrets.json
.vscode/
.idea/
.idea/

.claude/
.codex/
3 changes: 3 additions & 0 deletions android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" tools:replace="android:maxSdkVersion"/>
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" tools:node="remove"/>
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" tools:node="remove"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.VIBRATE"/>
Expand All @@ -21,6 +23,7 @@
</queries>
<application android:name=".MainApplication" android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android:roundIcon="@mipmap/ic_launcher_round" android:allowBackup="true" android:theme="@style/AppTheme" android:supportsRtl="true" android:enableOnBackInvokedCallback="true" android:fullBackupContent="@xml/secure_store_backup_rules" android:dataExtractionRules="@xml/secure_store_data_extraction_rules">
<meta-data android:name="expo.modules.updates.ENABLED" android:value="false"/>
<meta-data android:name="expo.modules.updates.ENABLE_BSDIFF_PATCH_SUPPORT" android:value="true"/>
<meta-data android:name="expo.modules.updates.EXPO_UPDATES_CHECK_ON_LAUNCH" android:value="ALWAYS"/>
<meta-data android:name="expo.modules.updates.EXPO_UPDATES_LAUNCH_WAIT_MS" android:value="0"/>
<service android:name="expo.modules.audio.service.AudioControlsService" android:exported="false" android:foregroundServiceType="mediaPlayback">
Expand Down
20 changes: 9 additions & 11 deletions app.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,6 @@ export default {
scheme: ["papillon", "izly", "skoapp-prod"],
platforms: ["ios", "android"],
userInterfaceStyle: "automatic",
newArchEnabled: true,
splash: {
image: "./assets/images/splash.png",
resizeMode: "cover",
backgroundColor: "#003A21",
},
ios: {
appStoreUrl:
"https://apps.apple.com/us/app/papillon-lappli-scolaire/id6477761165",
Expand Down Expand Up @@ -94,11 +88,6 @@ export default {
monochromeImage: "./assets/images/monochrome-icon.png",
},
edgeToEdgeEnabled: true,
splash: {
image: "./assets/images/splash_android.png",
resizeMode: "cover",
backgroundColor: "#003A21",
},
supportsTablet: true,
predictiveBackGestureEnabled: true
},
Expand All @@ -109,12 +98,21 @@ export default {
},
plugins: [
"expo-router",
"expo-status-bar",
"expo-font",
"expo-video",
"expo-audio",
"expo-localization",
"expo-asset",
"@react-native-community/datetimepicker",
[
"expo-splash-screen",
{
"backgroundColor": "#29947A",
"image": "./assets/images/logotype.png",
"imageWidth": 240
}
],
[
"expo-image-picker",
{
Expand Down
2 changes: 1 addition & 1 deletion app/(dev)/request.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import React, { useEffect, useState, useMemo } from "react";
import { View } from "react-native";
import { useLocalSearchParams } from "expo-router";
import * as Clipboard from "expo-clipboard";
import { useTheme } from "@react-navigation/native";
import { useTheme } from "expo-router/react-navigation";

import { useNetworkStore } from "@/stores/logs";
import Button from "@/ui/components/Button";
Expand Down
2 changes: 1 addition & 1 deletion app/(dev)/requests.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import List from "@/ui/new/List";
import Typography from "@/ui/new/Typography";
import adjust from "@/utils/adjustColor";
import { Papicons } from "@getpapillon/papicons";
import { useTheme } from "@react-navigation/native";
import { useTheme } from "expo-router/react-navigation";
import { router, useLocalSearchParams } from "expo-router"
import { useState } from "react";
import { View } from "react-native";
Expand Down
3 changes: 1 addition & 2 deletions app/(features)/(cards)/specific.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { useCallback, useEffect, useState, useMemo } from "react";
import { Platform, ScrollView, View } from "react-native";
import { useHeaderHeight } from "@react-navigation/elements";
import { useTheme } from "@react-navigation/native";
import { useHeaderHeight, useTheme } from "expo-router/react-navigation";
import { LinearGradient } from "expo-linear-gradient";
import { router, useLocalSearchParams } from "expo-router";
import { Switch } from "react-native-gesture-handler";
Expand Down
2 changes: 1 addition & 1 deletion app/(features)/(news)/specific.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import { VARIANTS } from "@/ui/components/Typography";

import HTMLView from 'react-native-htmlview';
import * as WebBrowser from 'expo-web-browser';
import { useTheme } from "@react-navigation/native";
import { useTheme } from "expo-router/react-navigation";
import { NativeHeaderPressable, NativeHeaderSide } from "@/ui/components/NativeHeader";
import { MenuView } from "@react-native-menu/menu";
import Icon from "@/ui/components/Icon";
Expand Down
3 changes: 1 addition & 2 deletions app/(features)/attendance.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,14 @@ import { NativeHeaderHighlight, NativeHeaderPressable, NativeHeaderSide, NativeH
import { router, useLocalSearchParams } from "expo-router";
import { Platform, ScrollView, View } from "react-native";
import { Papicons } from "@getpapillon/papicons"
import { useTheme } from "@react-navigation/native";
import { useTheme, useHeaderHeight } from "expo-router/react-navigation";
import { Dynamic } from "@/ui/components/Dynamic";
import { MenuView } from "@react-native-menu/menu";
import { Period } from "@/services/shared/grade";
import { getPeriodName, getPeriodNumber, isPeriodWithNumber } from "@/utils/services/periods";
import { useMemo, useState } from "react";
import { Attendance } from "@/services/shared/attendance";
import Stack from "@/ui/components/Stack";
import { useHeaderHeight } from "@react-navigation/elements";
import AnimatedNumber from "@/ui/components/AnimatedNumber";
import adjust from "@/utils/adjustColor";
import { error } from "@/utils/logger/logger";
Expand Down
3 changes: 1 addition & 2 deletions app/(modals)/address.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Papicons } from "@getpapillon/papicons";
import { useTheme } from "@react-navigation/native";
import { useTheme, useHeaderHeight } from "expo-router/react-navigation";
import * as Linking from "expo-linking";
import * as Location from "expo-location";
import * as React from "react";
Expand All @@ -22,7 +22,6 @@ import Item, { Leading, Trailing } from "@/ui/components/Item";
import List from "@/ui/components/List";
import Search from "@/ui/components/Search";
import Typography from "@/ui/components/Typography";
import { useHeaderHeight } from "@react-navigation/elements";
import AndroidBackButton, { AndroidBackButtonStyles } from "@/utils/theme/AndroidBackButton";
import Icon from "@/ui/components/Icon";

Expand Down
2 changes: 1 addition & 1 deletion app/(modals)/course.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Papicons } from '@getpapillon/papicons';
import { useRoute, useTheme } from "@react-navigation/native";
import { useRoute, useTheme } from "expo-router/react-navigation";
import { formatDistanceStrict, formatDistanceToNow } from 'date-fns'
import * as DateLocale from 'date-fns/locale';
import i18n, { t } from "i18next";
Expand Down
2 changes: 1 addition & 1 deletion app/(modals)/grade.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Papicons } from '@getpapillon/papicons';
import { useRoute, useTheme } from "@react-navigation/native";
import { useRoute, useTheme } from "expo-router/react-navigation";
import { t } from "i18next";
import React from "react";
import { Platform, View } from "react-native";
Expand Down
3 changes: 1 addition & 2 deletions app/(modals)/news.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import { VARIANTS } from "@/ui/components/Typography";

import HTMLView from 'react-native-htmlview';
import * as WebBrowser from 'expo-web-browser';
import { useTheme } from "@react-navigation/native";
import { useTheme, HeaderBackButton } from "expo-router/react-navigation";
import { NativeHeaderPressable, NativeHeaderSide } from "@/ui/components/NativeHeader";
import { MenuView } from "@react-native-menu/menu";
import Icon from "@/ui/components/Icon";
Expand All @@ -25,7 +25,6 @@ import { cleanHtmlForArticle } from "@/utils/news/cleanUpHTMLNews";
import { news } from "pawnote";
import Avatar from "@/ui/components/Avatar";
import { getInitials } from "@/utils/chats/initials";
import { HeaderBackButton } from "@react-navigation/elements";
import { runsIOS26 } from "@/ui/utils/IsLiquidGlass";
import { IconNames, Papicons } from "@getpapillon/papicons";
import { getAttachmentIcon } from "@/utils/news/getAttachmentIcon";
Expand Down
2 changes: 1 addition & 1 deletion app/(modals)/notifications.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Papicons } from "@getpapillon/papicons";
import { useTheme } from "@react-navigation/native";
import { useTheme } from "expo-router/react-navigation";
import { useTranslation } from "react-i18next";

import Stack from "@/ui/components/Stack";
Expand Down
3 changes: 1 addition & 2 deletions app/(modals)/profile.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { Papicons } from "@getpapillon/papicons";
import { MenuView, NativeActionEvent } from "@react-native-menu/menu";
import { useHeaderHeight } from "@react-navigation/elements";
import { useTheme } from "@react-navigation/native";
import { useHeaderHeight, useTheme } from "expo-router/react-navigation";
import * as ImagePicker from "expo-image-picker"
import { router } from "expo-router";
import React, { useEffect, useState } from "react";
Expand Down
2 changes: 1 addition & 1 deletion app/(modals)/task.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Papicons } from "@getpapillon/papicons";
import { useRoute, useTheme } from "@react-navigation/native";
import { useRoute, useTheme } from "expo-router/react-navigation";
import { LinearGradient } from "expo-linear-gradient";
import * as WebBrowser from "expo-web-browser";
import { t } from "i18next";
Expand Down
7 changes: 3 additions & 4 deletions app/(modals)/wallpaper.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { Wallpaper } from "@/stores/settings/types"
import AnimatedPressable from "@/ui/components/AnimatedPressable"
import Stack from "@/ui/components/Stack"
import Typography from "@/ui/components/Typography"
import { useTheme } from "@react-navigation/native"
import { useTheme } from "expo-router/react-navigation"
import React, { useEffect, useState } from "react"
import { FlatList, Image, Platform, RefreshControl, View } from "react-native"
import { File, Directory, Paths } from 'expo-file-system';
Expand Down Expand Up @@ -155,13 +155,12 @@ const WallpaperModal = () => {
<FlatList
ref={flatListRef}
data={collections}
contentInsetAdjustmentBehavior="automatic"
style={{
flex: 1,
}}
contentContainerStyle={{
gap: 16,
paddingTop: Platform.OS === 'android' ? 20 : 0
paddingTop: Platform.OS === 'android' ? 20 : 72
}}
renderItem={({ item, index }) => (
<View>
Expand Down Expand Up @@ -208,7 +207,7 @@ const WallpaperModal = () => {
<RefreshControl
refreshing={refreshing}
onRefresh={() => fetchCollections(true)}
progressViewOffset={72}
progressViewOffset={128}
/>
}
/>
Expand Down
2 changes: 1 addition & 1 deletion app/(modals)/wrapped/stories/consent.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Papicons } from '@getpapillon/papicons';
import { useTheme } from '@react-navigation/native';
import { useTheme } from "expo-router/react-navigation";
import { LiquidGlassView } from '@sbaiahmed1/react-native-blur';
import React, { memo, useCallback, useState } from 'react';
import { Dimensions, FlatList, StyleSheet, Switch, View } from 'react-native';
Expand Down
2 changes: 1 addition & 1 deletion app/(new)/event.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import DateTimePicker, { DateTimePickerAndroid } from '@react-native-community/datetimepicker';
import { useTheme } from "@react-navigation/native";
import { useTheme } from "expo-router/react-navigation";
import * as Localization from "expo-localization";
import { useRouter } from "expo-router";
import { CalendarDays, Check, Clock4Icon, MapPinIcon, TypeIcon, User2Icon, X } from "lucide-react-native";
Expand Down
3 changes: 1 addition & 2 deletions app/(onboarding)/ageSelection.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { useHeaderHeight } from "@react-navigation/elements";
import { useTheme } from "@react-navigation/native";
import { useHeaderHeight, useTheme } from "expo-router/react-navigation";
import { useNavigation } from "expo-router";
import React, { useState } from "react";
import { FlatList, StatusBar, View } from "react-native";
Expand Down
2 changes: 1 addition & 1 deletion app/(onboarding)/components/LoginView.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { useTheme } from '@react-navigation/native';
import { useTheme } from "expo-router/react-navigation";
import React from 'react';
import { Alert, Image, View } from 'react-native';
import { useTranslation } from "react-i18next";
Expand Down
2 changes: 1 addition & 1 deletion app/(onboarding)/components/OnboardingSelector.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Papicons } from "@getpapillon/papicons";
import { useTheme } from "@react-navigation/native";
import { useTheme } from "expo-router/react-navigation";
import { LinearGradient } from "expo-linear-gradient";
import React from "react";
import { View } from "react-native";
Expand Down
3 changes: 1 addition & 2 deletions app/(onboarding)/components/OnboardingWebView.tsx
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
import { Papicons } from "@getpapillon/papicons";
import { useTheme } from "@react-navigation/native";
import { useTheme, useHeaderHeight } from "expo-router/react-navigation";
import React from "react";
import { Platform, View } from "react-native";
import { useSafeAreaInsets } from "react-native-safe-area-context";
import WebView from "react-native-webview";

import { Dynamic } from "@/ui/components/Dynamic";
import Typography from "@/ui/new/Typography";
import { useHeaderHeight } from "@react-navigation/elements";
import AndroidBackButton from "@/utils/theme/AndroidBackButton";

export default function OnboardingWebView({ webViewRef, ...props }: React.ComponentProps<typeof WebView>) {
Expand Down
2 changes: 1 addition & 1 deletion app/(onboarding)/restaurants/alise.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import { useAlert } from "@/ui/components/AlertProvider";
import { t } from "i18next";
import OnboardingInput from "@/components/onboarding/OnboardingInput";
import { useSafeAreaInsets } from "react-native-safe-area-context";
import { useTheme } from "@react-navigation/native";
import { useTheme } from "expo-router/react-navigation";
import { Alise } from "@/services/alise";
import { authenticateWithCredentials } from "alise-api";
import { initializeAccountManager } from "@/services/shared";
Expand Down
2 changes: 1 addition & 1 deletion app/(onboarding)/restaurants/ard.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/* eslint-disable @typescript-eslint/no-require-imports */
import { useTheme } from "@react-navigation/native";
import { useTheme } from "expo-router/react-navigation";
import { router, useLocalSearchParams, useNavigation } from "expo-router";
import { t } from "i18next";
import LottieView from "lottie-react-native";
Expand Down
2 changes: 1 addition & 1 deletion app/(onboarding)/restaurants/izly.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/* eslint-disable @typescript-eslint/no-require-imports */
import { useTheme } from "@react-navigation/native";
import { useTheme } from "expo-router/react-navigation";
import { router, useLocalSearchParams, useNavigation } from "expo-router";
import { login, tokenize } from "ezly";
import LottieView from "lottie-react-native";
Expand Down
3 changes: 1 addition & 2 deletions app/(onboarding)/restaurants/method.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { Papicons } from "@getpapillon/papicons";
import { useHeaderHeight } from "@react-navigation/elements";
import { useRoute, useTheme } from "@react-navigation/native";
import { useHeaderHeight, useRoute, useTheme } from "expo-router/react-navigation";
import { useRouter } from "expo-router";
import React, { useMemo, useState } from "react";
import { Image, ScrollView, View } from "react-native";
Expand Down
2 changes: 1 addition & 1 deletion app/(onboarding)/restaurants/turboself.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/* eslint-disable @typescript-eslint/no-require-imports */
import { useTheme } from "@react-navigation/native";
import { useTheme } from "expo-router/react-navigation";
import { router, useLocalSearchParams, useNavigation } from 'expo-router';
import LottieView from 'lottie-react-native';
import React, { useEffect, useMemo, useState } from 'react';
Expand Down
2 changes: 1 addition & 1 deletion app/(onboarding)/restaurants/turboselfHost.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import Button from '@/ui/components/Button';
import uuid from '@/utils/uuid/uuid';
import { useAccountStore } from '@/stores/account';
import { Services } from '@/stores/account/types';
import { useTheme } from '@react-navigation/native';
import { useTheme } from "expo-router/react-navigation";
import AnimatedPressable from '@/ui/components/AnimatedPressable';
import OnboardingBackButton from "@/components/onboarding/OnboardingBackButton";
import { useTranslation } from 'react-i18next';
Expand Down
Loading