Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
234 commits
Select commit Hold shift + click to select a range
0e85981
refactor: remove unused icon imports from the icons index file to str…
b0nsu Jan 7, 2026
7d63865
refactor: update DrawingCanvas component to use fixed font size and c…
b0nsu Jan 7, 2026
5b6f87a
refactor: update useGetQnaImages hook to accept query parameters and …
b0nsu Jan 7, 2026
0a723d6
refactor: remove unused onMove action from DeletedScrapHeader compone…
b0nsu Jan 7, 2026
8753bab
refactor: enhance FilterBar component by adding scroll handling and i…
b0nsu Jan 7, 2026
ac8587d
refactor: remove unused onMove action from DeletedScrapScreen to stre…
b0nsu Jan 7, 2026
47a84d5
refactor: replace unused image upload utility with new file upload ho…
b0nsu Jan 7, 2026
285fdea
refactor: add sorting functionality to LoadQnaImageModal with SortDro…
b0nsu Jan 7, 2026
8675268
refactor: enhance ScrapCard and TrashCard components with improved to…
b0nsu Jan 7, 2026
60f73ce
refactor: update RecentScrapCard component to improve styling and ens…
b0nsu Jan 7, 2026
fc0f495
feat: add ScrapDetailHeader component for enhanced scrap management w…
b0nsu Jan 7, 2026
fabb02c
refactor: update import path for ScrapDetailHeader component to impro…
b0nsu Jan 7, 2026
ffcd1b6
feat: add hover effect to RecentScrapCard for improved user interacti…
b0nsu Jan 7, 2026
d86fec8
refactor: improve image display in ProblemSection by adding backgroun…
b0nsu Jan 7, 2026
803f7f8
refactor: implement cleanup logic for deleted scraps in ScrapItemTool…
b0nsu Jan 7, 2026
774eabf
refactor: update triggerBackgroundColor in TooltipPopover to use colo…
b0nsu Jan 7, 2026
b900a15
feat: add search functionality to ScrapGrid and SearchResultCard comp…
b0nsu Jan 7, 2026
a3cda9b
refactor(admin): adjust MessageBubble layout and text wrapping for im…
sterdsterd Jan 8, 2026
42bec4d
refactor(native): consolidate image handling imports in AddScrapToolt…
sterdsterd Jan 8, 2026
6e49ce8
refactor: enhance styling in FilterBar, PointingsList, ProblemSection…
b0nsu Jan 8, 2026
331436c
feat: add new API endpoints for managing child problems and QnA subsc…
b0nsu Jan 8, 2026
ad5b89f
Merge branch 'native' into feat/native/menu-#152
b0nsu Jan 8, 2026
2375089
feat(native): add ChevronUpFilledIcon and CircleCheckDashed to system…
b0nsu Jan 8, 2026
6ff3369
feat(native): add showChevron prop to IconMenuItem and InfoSection fo…
b0nsu Jan 8, 2026
06ca068
refactor(native): remove commented-out user info loading logic from M…
b0nsu Jan 8, 2026
5c9e192
feat(native): implement dynamic notice display with API integration a…
b0nsu Jan 8, 2026
8b71f85
refactor(native): update UI components and integrate API calls for fe…
b0nsu Jan 8, 2026
a0e9c1d
feat(native): add style prop to TextButton for customizable styling
b0nsu Jan 8, 2026
1b4caf9
refactor(native): improve modal component styles and enhance LoadQnaI…
b0nsu Jan 8, 2026
41ae7f9
refactor(native): update sorting keys in DeletedScrapScreen and Folde…
b0nsu Jan 8, 2026
ada3b17
refactor(native): MyinfoScreen Not implemented
b0nsu Jan 8, 2026
096c48f
feat(native): introduce AnimatedPressable component for enhanced pres…
sterdsterd Jan 8, 2026
13eb777
refactor(native): replace Pressable with AnimatedPressable in various…
sterdsterd Jan 8, 2026
0c5b929
refactor(native): update ChatRoom components to use AnimatedPressable…
sterdsterd Jan 8, 2026
e5afb85
refactor(native): replace Pressable with AnimatedPressable across mul…
sterdsterd Jan 8, 2026
a4bc124
feat(native): implement logic to identify first incomplete problem an…
sterdsterd Jan 8, 2026
9ee3485
feat(native): enhance AnswerKeyboardSheet to support multiple choice …
sterdsterd Jan 8, 2026
40b0ced
lint(native): AnswerKeyboardSheet
sterdsterd Jan 8, 2026
8d50bcb
feat(native): add style prop to TextButton for customizable styling
sterdsterd Jan 8, 2026
0b47120
refactor(native): replace Pressable with AnimatedPressable in LoginSc…
sterdsterd Jan 8, 2026
ee7154d
feat(native): add PointerLogo component and integrate it into LoginSc…
sterdsterd Jan 9, 2026
a6f5519
chore(native): update Firebase dependencies and add Google Services c…
sterdsterd Jan 9, 2026
a31c859
refactor(native): update useGetSchool hook to use parameters object f…
b0nsu Jan 9, 2026
1f64c0b
feat(native): implement edit screens for nickname, school, score, and…
b0nsu Jan 9, 2026
d10b1f8
fix(native): update TrashCard text color based on days until permanen…
b0nsu Jan 9, 2026
05a09b8
feat(native): add useFcmToken hook for automatic FCM token registrati…
sterdsterd Jan 9, 2026
9c23947
feat(native): configure Google Services for iOS and Android, add EAS …
sterdsterd Jan 9, 2026
efbda41
feat(native): export useFcmToken hook in index.ts for easier access
sterdsterd Jan 9, 2026
b24b506
feat(native): add EditGradeScreen and integrate it into MenuNavigator…
b0nsu Jan 9, 2026
3cc6ac7
refactor(native): enhance MenuScreen layout with SafeAreaView and upd…
b0nsu Jan 9, 2026
be494de
style(native): adjust padding in SearchScrapHeader for improved layou…
b0nsu Jan 9, 2026
825cca6
style(native): add bottom margin to SafeAreaView in FeedbackScreen an…
b0nsu Jan 9, 2026
fbcf7a4
feat(native): replace PopUpModal with ConfirmationModal in TrashCard …
b0nsu Jan 9, 2026
2e9429d
feat(native): enhance DrawingToolbar and ScrapDetailScreen with respo…
b0nsu Jan 10, 2026
6107b7c
refactor(native): replace View with Pressable in ProblemSection for i…
b0nsu Jan 10, 2026
0fcb234
refactor(native): simplify MyinfoScreen by removing unused state and …
b0nsu Jan 10, 2026
c8e4228
style(native): add bottom margin to OptionButton for improved layout …
b0nsu Jan 10, 2026
5f041fc
feat(native): implement text input confirmation handling in DrawingCa…
b0nsu Jan 10, 2026
92a338c
feat(native): add new API endpoints for push notification settings, f…
b0nsu Jan 10, 2026
9af15c9
refactor(native): replace postAllowPush with usePutAllowPush and useP…
b0nsu Jan 11, 2026
afdb6fd
feat(native): add useGetPushSetting hook for fetching push notificati…
b0nsu Jan 11, 2026
c9d396b
refactor(native): update Edit screens to use putMe mutation for state…
b0nsu Jan 11, 2026
e732ba4
refactor(native): integrate feedback submission and notification sett…
b0nsu Jan 11, 2026
d27dc74
refactor(native): update deleteAccount function to use POST method wi…
b0nsu Jan 11, 2026
37c7710
feat(native): add notice count functionality to MenuScreen for improv…
b0nsu Jan 11, 2026
3499d2e
feat(native): enhance WithdrawalScreen with reason mapping and improv…
b0nsu Jan 11, 2026
b42bb50
refactor(native): update Edit screens to use usePutMe for improved AP…
b0nsu Jan 11, 2026
b4b5d7b
feat(native): implement query invalidation on MenuScreen to refresh u…
b0nsu Jan 11, 2026
d667d37
Merge pull request #160 from team-ppointer/feat/native/menu,scrap-#159
b0nsu Jan 11, 2026
da55a41
feat(native): update FCM token handling with expo-notifications, remo…
sterdsterd Jan 11, 2026
03f5944
feat(native): integrate Google Sign-In functionality in LoginScreen, …
sterdsterd Jan 12, 2026
55d98a3
feat(native): integrate Kakao & Google Social Login
sterdsterd Jan 12, 2026
0587409
feat(native): add Apple Sign-In support, update app configuration, an…
sterdsterd Jan 12, 2026
9a60250
feat(native): add expo-linear-gradient dependency and implement Linea…
sterdsterd Jan 13, 2026
f80a682
Merge remote-tracking branch 'origin/native' into refactor/native/#155
sterdsterd Jan 13, 2026
f3924cf
refactor(native): remove AppVersionItem and TextOnlyMenuItem componen…
sterdsterd Jan 13, 2026
e8352eb
feat(native): add disableScale prop to AnimatedPressable for optional…
sterdsterd Jan 13, 2026
0fa1913
refactor(native): menu screen
sterdsterd Jan 13, 2026
e95563c
chore(native): update prettier and related plugins to latest versions…
sterdsterd Jan 13, 2026
e92cabd
chore(native): update API schema
sterdsterd Jan 13, 2026
e6a66f9
refactor(native): remove redundant api
sterdsterd Jan 13, 2026
b1832d4
feat(native): add new authentication APIs for local login, password r…
sterdsterd Jan 13, 2026
b43f17a
feat(native): implement native OAuth login functionality with support…
sterdsterd Jan 13, 2026
7962bfe
feat(native): integrate email authentication flow with new EmailAuthS…
sterdsterd Jan 13, 2026
afb1027
feat(native): enhance onboarding flow by integrating email login, rem…
sterdsterd Jan 13, 2026
e3c1433
feat(native): add useGetScrapStatusById API and integrate it into Ana…
sterdsterd Jan 13, 2026
115519b
feat(native): enhance message handling by adding createdAt, updatedAt…
sterdsterd Jan 13, 2026
f557596
feat(native): disable font scaling for Text and TextInput components …
sterdsterd Jan 14, 2026
07c419b
feat(native): update app configuration to include UIBackgroundModes f…
sterdsterd Jan 14, 2026
d52aa9c
refactor(native): clean up ChatRoomList component by removing unused …
sterdsterd Jan 14, 2026
239888d
feat(native): integrate Firebase messaging and modular headers suppor…
sterdsterd Jan 15, 2026
b9de2c9
fix(native): update PhoneNumberScreen to validate 6-digit verificatio…
b0nsu Jan 15, 2026
b8d4ada
feat(native): add password reset and verification endpoints to API sc…
b0nsu Jan 15, 2026
8adcbb3
feat(native): implement keyboard avoidance in ScrapDetailScreen for i…
b0nsu Jan 15, 2026
2b4b8e8
Merge pull request #162 from team-ppointer/refactor/native/#155
sterdsterd Jan 15, 2026
aff14aa
refactor(native): update scrap name mutation to include additional qu…
b0nsu Jan 15, 2026
17aedd5
refactor(native): update styling and layout in ScrapDetailHeader, Sea…
b0nsu Jan 15, 2026
423a8c5
feat(native): add loading state management in CreateFolderModal to pr…
b0nsu Jan 15, 2026
2e93ac7
fix(native): update handleSave function in useHandwritingManager to r…
b0nsu Jan 15, 2026
81b83b2
feat(native): enhance ScrapDetailScreen with automatic note title upd…
b0nsu Jan 15, 2026
708d570
Resolve merge conflict by incorporating both suggestions
b0nsu Jan 15, 2026
a72ed60
Merge branch 'native' into refactor/native/161
b0nsu Jan 15, 2026
0d270c5
Merge pull request #163 from team-ppointer/refactor/native/161
b0nsu Jan 15, 2026
9cde9fa
chore(native): run prettier
sterdsterd Jan 15, 2026
56cbedc
fix(native): set text color to black for month picker in ProblemCalen…
sterdsterd Jan 15, 2026
ab41b4f
feat(native): set default font family to 'Pretendard' for Text and Te…
sterdsterd Jan 15, 2026
f5eb007
refactor(native): streamline MenuScreen and MyInfoScreen components b…
b0nsu Jan 16, 2026
608613f
fix(native): update nickname mutation parameter from 'nickname' to 'n…
b0nsu Jan 16, 2026
15b14f7
refactor(native): update styling in EditPhoneNumberScreen to improve …
b0nsu Jan 16, 2026
ccad42b
refactor(native): optimize ScrapDetailScreen layout by replacing Dime…
b0nsu Jan 16, 2026
60f37c4
Merge pull request #164 from team-ppointer/refactor/native/161
b0nsu Jan 16, 2026
b3909e3
fix(native): adjust padding in Container component for improved layou…
sterdsterd Jan 16, 2026
1e7376a
fix(native): standardize button height in LoginScreen for consistent UI
sterdsterd Jan 17, 2026
bf353da
chore(native): remove unused dependency 'react-native-tooltips' from …
b0nsu Jan 17, 2026
b37cf1f
feat(native): add ScrapFolderDefaultIcon and ScrapFolderStackIcon com…
b0nsu Jan 17, 2026
ee25b18
feat(native): enhance ScrapCard and ScrapHeadCard components with new…
b0nsu Jan 17, 2026
b5eaa1f
refactor(native): update text labels in DeletedScrapHeader and ScrapH…
b0nsu Jan 17, 2026
76cd2d2
refactor(native): update ScrapFolderDefaultIcon and ScrapFolderStackI…
b0nsu Jan 17, 2026
130e113
feat(native): enhance TeacherInfoCard component to display a fallback…
b0nsu Jan 17, 2026
7d775d4
feat(native): add skip functionality to EditScreenLayout and EditScho…
b0nsu Jan 17, 2026
5d06e92
feat(native): enhance ScrapCard component with improved fallback rend…
b0nsu Jan 17, 2026
3c48762
feat(native): add success message support to OnboardingInput componen…
sterdsterd Jan 17, 2026
6d32d52
feat(native): implement phone number verification flow in IdentitySte…
sterdsterd Jan 17, 2026
32913a3
refactor(native): streamline QnA chat handling by consolidating admin…
sterdsterd Jan 19, 2026
dea0b61
feat(native): add file size validation in useUploadFile hook and upda…
sterdsterd Jan 19, 2026
687f520
refactor(native): enhance serialization logic in JSON to HTML convers…
sterdsterd Jan 19, 2026
867c2a2
feat(native): add fontStyle prop to ProblemViewer and update related …
sterdsterd Jan 19, 2026
636292b
fix(native): update ProblemViewer to correctly calculate webview heig…
sterdsterd Jan 19, 2026
24c888f
refactor(native): streamline FeedbackScreen component by consolidatin…
b0nsu Jan 19, 2026
8800cb0
Merge pull request #165 from team-ppointer/refactor/native/161
b0nsu Jan 19, 2026
78d75b6
Merge remote-tracking branch 'origin/native' into refactor/native/#155
sterdsterd Jan 19, 2026
b858ada
fix(native): update TeacherInfoCard to improve text styling and simpl…
sterdsterd Jan 19, 2026
ec5f533
refactor(native): enhance Container component by adding ViewProps sup…
sterdsterd Jan 19, 2026
ab2cec1
refactor(native): improve MyInfoScreen layout with safe area insets a…
sterdsterd Jan 19, 2026
4e6b6f2
refactor(native): update terminology in MyInfoScreen and EditNickname…
sterdsterd Jan 19, 2026
2d314a7
refactor(native): add useInvalidateNoticeData hook and update queries…
sterdsterd Jan 19, 2026
9ccfc2d
feat(native): add CircleXFilledIcon to icon library for enhanced visu…
b0nsu Jan 19, 2026
80f4dd7
Merge branch 'refactor/native/161' of https://github.com/team-ppointe…
b0nsu Jan 19, 2026
03f95a8
refactor/test(native): update ScrapFolderDefaultIcon and ScrapFolderS…
b0nsu Jan 19, 2026
37c115e
feat(native): implement deep link handling and add getPublishDetailBy…
sterdsterd Jan 19, 2026
4162c63
feat(native): replace LoadingScreen with CustomSplashScreen and updat…
sterdsterd Jan 19, 2026
0802220
feat(native): enhance RecentScrapCard and ScrapCard components to inc…
b0nsu Jan 19, 2026
8ccd6db
fix(native): update background color in Skeleton component from gray-…
b0nsu Jan 19, 2026
f469608
feat(native): enhance scrap management by adding folder ID handling i…
b0nsu Jan 19, 2026
5e6a66d
fix(native): update FolderScrapScreen to use React's useEffect direct…
b0nsu Jan 19, 2026
c99064b
feat(native): implement tab screen transition and refactor StudentTab…
sterdsterd Jan 19, 2026
7297040
refactor(native): replace SafeAreaView with View in multiple componen…
sterdsterd Jan 19, 2026
530e694
Merge pull request #166 from team-ppointer/refactor/native/161
b0nsu Jan 20, 2026
bd83c68
feat(native): update ios icon
sterdsterd Jan 20, 2026
1430171
feat(native): Implement pull-to-refresh on the home screen using a ne…
sterdsterd Jan 20, 2026
b6c4f40
feat(native): Add shadow tokens and apply `shadow[100]` to various UI…
sterdsterd Jan 20, 2026
fcc7845
style(native): Center text on the splash screen.
sterdsterd Jan 20, 2026
3627e48
refactor(native): replace Alert with showToast for error and success …
b0nsu Jan 20, 2026
3aa9a6a
Merge branch 'refactor/native/161' of https://github.com/team-ppointe…
b0nsu Jan 20, 2026
b47a191
refactor(native): simplify note handling in RecentScrapCard and Scrap…
b0nsu Jan 20, 2026
13053f0
refactor(native): Enhance problem, pointing, and analysis screens wit…
sterdsterd Jan 20, 2026
f225b35
style(native): Adjust the background and text color of the '네' button…
sterdsterd Jan 20, 2026
66399e0
feat(native): Add API and UI for toggling scrap status on reading tip…
sterdsterd Jan 20, 2026
6a2fd3d
Merge remote-tracking branch 'origin/native' into refactor/native/#155
sterdsterd Jan 20, 2026
9b2f6b1
refactor(native): Remove duplicate import and export of `CircleXFille…
sterdsterd Jan 20, 2026
3892ad5
fix(native): Overlay the splash screen on top of the app content with…
sterdsterd Jan 20, 2026
269faa9
refactor(native): streamline scrap management by updating RecentScrap…
b0nsu Jan 20, 2026
72df1dc
refactor(native): update modal components to use async mutations for …
b0nsu Jan 20, 2026
c20e50e
refactor(native): simplify ScrapHeadCard layout by removing unnecessa…
b0nsu Jan 20, 2026
044ff16
refactor(native): update background color in ImageWithSkeleton compon…
b0nsu Jan 20, 2026
334e424
Merge pull request #168 from team-ppointer/refactor/native/161
b0nsu Jan 20, 2026
7684b68
refactor(native): update EditSchoolScreen to handle optional schoolId…
b0nsu Jan 20, 2026
b8f6052
refactor(native): update ScrapCard and TrashCard components to use co…
b0nsu Jan 20, 2026
882519b
Merge pull request #169 from team-ppointer/refactor/native/161
b0nsu Jan 20, 2026
e5d23cf
style(native): Adjust layout and padding in AllPointingsScreen for im…
sterdsterd Jan 20, 2026
adaddaf
Merge remote-tracking branch 'origin/native' into refactor/native/#155
sterdsterd Jan 20, 2026
a5d055b
fix(native): correct spelling of ScrapFolderDefaultIcon in imports an…
sterdsterd Jan 20, 2026
dc743d7
refactor(native): remove scrap button from AnalysisScreen and Pointin…
sterdsterd Jan 20, 2026
d5e42f9
Merge pull request #170 from team-ppointer/refactor/native/#155
sterdsterd Jan 20, 2026
1ba44c5
feat(native): add ScrapDefalutIcon and ScrapFolderDefalutIcon compone…
b0nsu Jan 21, 2026
76354c1
refactor(native): update ScrapCard and TrashCard components to use co…
b0nsu Jan 21, 2026
f76a2f9
Merge branch 'native' of https://github.com/team-ppointer/Pointer int…
b0nsu Jan 21, 2026
9276be0
Merge pull request #171 from team-ppointer/refactor/native/161
b0nsu Jan 21, 2026
3158841
refactor(native): correct spelling of ScrapDefaultIcon and ScrapFolde…
b0nsu Jan 21, 2026
e951042
Merge pull request #172 from team-ppointer/refactor/native/161
b0nsu Jan 21, 2026
ed16e46
style(native): update text alignment and max width for ScrapDetailHea…
b0nsu Jan 21, 2026
2e14f57
feat(native): integrate useQueryClient in ScrapItemTooltip for enhanc…
b0nsu Jan 21, 2026
f7bbd58
feat(native): add fallback rendering for Scrap and Folder icons in Se…
b0nsu Jan 21, 2026
a62388d
feat(native): implement loading state management in modals and toolti…
b0nsu Jan 21, 2026
a1615c7
feat(native): invalidate scrap search queries in ScrapItemTooltip to …
b0nsu Jan 21, 2026
8b91fc9
feat(native): integrate safe area insets in FolderScrapScreen for imp…
b0nsu Jan 21, 2026
b5530a4
fix(native): adjust padding in SearchScrapScreen to improve layout an…
b0nsu Jan 21, 2026
1c92e2a
chore(native): Update tablet breakpoint to 740px in theme tokens and …
sterdsterd Jan 22, 2026
acc8ad0
Merge remote-tracking branch 'origin/native' into refactor/native/#155
sterdsterd Jan 22, 2026
6f3d1a6
feat(native): add MobileProfileCard component for enhanced student pr…
b0nsu Jan 24, 2026
3247f4f
style(native): simplify layout in ScreenLayout component by adjusting…
b0nsu Jan 24, 2026
ea51bf9
feat(native): enhance MenuScreen with responsive profile display usin…
b0nsu Jan 24, 2026
150f7e1
feat(native): refactor MyInfoScreen to manage local state and handle …
b0nsu Jan 24, 2026
ffd43ec
feat(native): update MenuStackParamList to include optional updatedDa…
b0nsu Jan 24, 2026
db16f10
feat(native): add Q&A status update endpoints for teacher, student, a…
b0nsu Jan 24, 2026
63951aa
feat(native): add auto-focus functionality to TextInput in SearchScra…
b0nsu Jan 25, 2026
90d4ed9
feat(native): implement text editing functionality in DrawingCanvas, …
b0nsu Jan 25, 2026
d183b01
feat(native): extend mapUIKeyToAPIKey function to include 'TYPE' as a…
b0nsu Jan 25, 2026
68d047b
refactor(native): deprecate sortedData logic in ScrapScreen and strea…
b0nsu Jan 25, 2026
a4812b2
feat(native): add ExplanationSection component to display explanation…
b0nsu Jan 25, 2026
80ca82c
chore(native): remove react-native-image-picker dependency from packa…
b0nsu Jan 25, 2026
5999625
feat(native): add animation playback for save action in ScrapDetailHe…
b0nsu Jan 25, 2026
0e06ae0
feat(native): enhance drawing and handwriting management with reset f…
b0nsu Jan 25, 2026
688c18a
refactor(native): improve styling consistency in ExplanationSection c…
b0nsu Jan 25, 2026
55238d3
fix(native): restore visibility of '전체보기' text in FilterBar component…
b0nsu Jan 25, 2026
6e5c3a0
feat(native): implement scrap detail transformation and add TipTap JS…
b0nsu Jan 25, 2026
bf7ce9f
feat(native): refactor useGetScrapsByFolder to accept parameters for …
b0nsu Jan 26, 2026
d779204
feat(native): update LoadQnaImageModal with improved checkbox styling…
b0nsu Jan 26, 2026
8630fd8
feat(native): enhance useGetScrapsByFolder to support sorting order a…
b0nsu Jan 27, 2026
5e4be1e
fix(native): update useGetScrapsByFolder to accept optional query par…
b0nsu Jan 27, 2026
746b293
refactor(native): update ScrapDetailScreen to improve explanation han…
b0nsu Jan 27, 2026
e863128
Merge pull request #174 from team-ppointer/fix/native-QA-173
b0nsu Jan 27, 2026
be4fefd
feat(native): add analytics core module
sterdsterd Jan 28, 2026
5bb0e04
feat(native): add AnalyticsProvider and TrackedAnimatedPressable
sterdsterd Jan 28, 2026
206ff3f
feat(native): integrate analytics with navigation
sterdsterd Jan 28, 2026
583fc09
refactor(native): add tracking to BottomActionBar and TextButton
sterdsterd Jan 28, 2026
5dc6ab9
refactor(native): replace AnimatedPressable with TrackedAnimatedPress…
sterdsterd Jan 28, 2026
cd2d429
feat(native): add detailed debug logging for analytics
sterdsterd Jan 28, 2026
2235aac
fix(native): fix analytics events type casting
sterdsterd Jan 28, 2026
b58c356
feat(native): log full analytics request body for debugging
sterdsterd Jan 28, 2026
d6c6987
fix(native): fix analytics occurredAt date format for server compatib…
sterdsterd Jan 28, 2026
40fdf17
fix(native): add queue clear and migration for old date format
sterdsterd Jan 28, 2026
73ff05b
refactor(native): remove flush on screen transition, use threshold only
sterdsterd Jan 28, 2026
bb90ef9
refactor(native): move analytics to features/student and scope to stu…
sterdsterd Jan 28, 2026
1cd25d2
fix(native): add navigation back functionality after resetting local …
b0nsu Jan 28, 2026
224b548
fix(native): validate phone number input in EditPhoneNumberScreen and…
b0nsu Jan 28, 2026
f0cbf18
fix(native): add feedback message for verification code and improve i…
b0nsu Jan 28, 2026
8d995f9
fix(native): correct label assignment in ScrapDetailScreen to use poi…
b0nsu Jan 29, 2026
c03b439
Merge pull request #176 from team-ppointer/feat/native/analytics-#175
sterdsterd Jan 29, 2026
ee7f403
Merge remote-tracking branch 'origin/native' into refactor/native/#155
sterdsterd Jan 29, 2026
08a6b64
fix(native): update background color in ScrapHeader component for imp…
b0nsu Jan 29, 2026
2bc18ac
Merge pull request #178 from team-ppointer/refactor/native/#155
sterdsterd Jan 29, 2026
97e5778
Merge pull request #177 from team-ppointer/fix/native-QA-173
b0nsu Jan 29, 2026
1c526ea
fix(native): comment out debug logout button in EmailStep and adjust …
sterdsterd Jan 29, 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
4 changes: 3 additions & 1 deletion .npmrc
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
@team-ppointer:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=${NPM_TOKEN}
//npm.pkg.github.com/:_authToken=${NPM_TOKEN}

node-linker=hoisted
4 changes: 2 additions & 2 deletions apps/admin/src/routes/_GNBLayout/qna/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -458,7 +458,7 @@ const MessageBubble = ({
);
case 'text':
default:
return <p className='text-sm whitespace-pre-wrap text-gray-900'>{content}</p>;
return <p className='text-sm break-all text-gray-900'>{content}</p>;
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CSS change removes whitespace preservation in chat messages

Medium Severity

Replacing whitespace-pre-wrap with break-all removes whitespace and newline preservation for text messages. In a QnA/chat context, user-entered line breaks and intentional spacing will no longer be displayed correctly. whitespace-pre-wrap preserves formatting while break-all only controls word breaking behavior without preserving whitespace sequences.

Fix in Cursor Fix in Web

}
};

Expand Down Expand Up @@ -502,7 +502,7 @@ const MessageBubble = ({
)}

{/* Message Content */}
<div className={`max-w-[70%] ${!isMe ? 'flex flex-col' : ''}`}>
<div className={`max-w-[60%] ${!isMe ? 'flex flex-col' : ''}`}>
{!isMe && showProfile && senderName && (
<p className='mb-1 text-xs font-medium text-gray-600'>{senderName}</p>
)}
Expand Down
4 changes: 4 additions & 0 deletions apps/native/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -44,3 +44,7 @@ app-example
# generated native folders
/ios
/android

# Firebase Google Services
google-services.json
GoogleService-Info.plist
54 changes: 34 additions & 20 deletions apps/native/App.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import 'react-native-gesture-handler';
import React from 'react';
import React, { useState } from 'react';
import { NavigationContainer, DefaultTheme, Theme } from '@react-navigation/native';
import { StatusBar } from 'expo-status-bar';
import { SafeAreaProvider } from 'react-native-safe-area-context';
Expand All @@ -8,11 +8,17 @@ import RootNavigator from '@navigation/RootNavigator';
import { colors } from '@theme/tokens';
import '@/app/providers/global.css';
import '@/app/providers/api';
import { LoadingScreen } from '@components/common';
import { useLoadAssets } from '@hooks';
import { CustomSplashScreen } from '@/features/splash/screens/SplashScreen';
import { useLoadAssets, useDeepLinkHandler } from '@hooks';
import { GestureHandlerRootView } from 'react-native-gesture-handler';
import { Text, TextInput } from 'react-native';
import Toast from 'react-native-toast-message';
import { toastConfig } from '@/features/student/scrap/components/Notification/Toast';
import { env } from '@utils';
import { initializeKakaoSDK } from '@react-native-kakao/core';
import { navigationRef } from '@/services/navigation';

initializeKakaoSDK(env.kakaoNativeAppKey);

const queryClient = new QueryClient();

Expand All @@ -25,31 +31,39 @@ const navigationTheme: Theme = {
},
};

const linking = {
prefixes: ['pointer://', 'http://localhost:3000'],
config: {
screens: {
AuthCallback: 'auth/callback',
},
},
};
if ((Text as any).defaultProps == null) (Text as any).defaultProps = {};
(Text as any).defaultProps.allowFontScaling = false;
(Text as any).defaultProps.style = [{ fontFamily: 'Pretendard' }];

if ((TextInput as any).defaultProps == null) (TextInput as any).defaultProps = {};
(TextInput as any).defaultProps.allowFontScaling = false;
(TextInput as any).defaultProps.style = [{ fontFamily: 'Pretendard' }];

export default function App() {
const { loading } = useLoadAssets();
const { isReady } = useLoadAssets();
const [isSplashAnimationFinished, setIsSplashAnimationFinished] = useState(false);

if (loading) {
return <LoadingScreen />;
}
// FCM 푸시 알림 딥링크 핸들러
useDeepLinkHandler();

return (
<QueryClientProvider client={queryClient}>
<GestureHandlerRootView style={{ flex: 1 }}>
<SafeAreaProvider>
<NavigationContainer theme={navigationTheme} linking={linking}>
<StatusBar style='dark' />
<RootNavigator />
<Toast config={toastConfig} style={{ zIndex: 9999 }} />
</NavigationContainer>
{isReady && (
<NavigationContainer ref={navigationRef} theme={navigationTheme}>
<StatusBar style='dark' />
<RootNavigator />
<Toast config={toastConfig} />
</NavigationContainer>
)}

{!isSplashAnimationFinished && (
<CustomSplashScreen
isAppReady={isReady}
onAnimationFinish={() => setIsSplashAnimationFinished(true)}
/>
)}
</SafeAreaProvider>
</GestureHandlerRootView>
</QueryClientProvider>
Expand Down
99 changes: 97 additions & 2 deletions apps/native/app.config.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,55 @@
import type { ExpoConfig } from 'expo/config';
import { withDangerousMod, type ConfigPlugin } from 'expo/config-plugins';
import * as fs from 'fs';
import * as path from 'path';
import 'dotenv/config';

/**
* Custom Expo Config Plugin to enforce modular headers for Firebase dependencies.
* This fixes the "Module 'FirebaseCore' not found" error by ensuring critical Firebase pods
* use modular headers, allowing Swift/Obj-C interop without global useFrameworks: 'static'.
*/
const withFirebaseModularHeaders: ConfigPlugin = (config) => {
return withDangerousMod(config, [
'ios',
async (config) => {
const podfilePath = path.join(config.modRequest.platformProjectRoot, 'Podfile');

if (!fs.existsSync(podfilePath)) {
return config;
}

let podfileContent = await fs.promises.readFile(podfilePath, 'utf-8');

// Force modular headers for key Firebase pods
// We inject this just before `use_react_native!` to ensure it overrides or sits alongside Expo's definitions
const modularHeadersPatch = `
pod 'FirebaseCore', :modular_headers => true
pod 'FirebaseMessaging', :modular_headers => true
pod 'GoogleUtilities', :modular_headers => true
`;

if (!podfileContent.includes("pod 'FirebaseCore', :modular_headers => true")) {
podfileContent = podfileContent.replace(
/use_react_native!/g,
`${modularHeadersPatch}\n use_react_native!`
);
}

await fs.promises.writeFile(podfilePath, podfileContent);
return config;
},
]);
};

const androidGoogleServicesFile =
process.env.ANDROID_GOOGLE_SERVICES_JSON || './google-services.json';

const iosGoogleServicesFile = process.env.IOS_GOOGLE_SERVICES_PLIST || './GoogleService-Info.plist';

const isDev =
process.env.APP_VARIANT === 'development' || process.env.EAS_BUILD_PROFILE === 'development';
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unused variable isDev in app config

Low Severity

The isDev variable is defined based on APP_VARIANT and EAS_BUILD_PROFILE environment variables but is never used anywhere in the configuration file. This is dead code that should either be removed or used for its intended purpose.

Fix in Cursor Fix in Web


const config: ExpoConfig = {
name: 'Pointer',
slug: 'pointer',
Expand All @@ -13,9 +62,16 @@ const config: ExpoConfig = {
ios: {
bundleIdentifier: 'com.math-pointer.pointer',
supportsTablet: true,
usesAppleSignIn: true,
infoPlist: {
ITSAppUsesNonExemptEncryption: false,
UIBackgroundModes: ['remote-notification'],
},
googleServicesFile: iosGoogleServicesFile,
icon: './assets/ios-pointer.icon',
},
android: {
package: 'com.math-pointer.pointer',
package: 'com.math_pointer.pointer',
adaptiveIcon: {
backgroundColor: '#E6F4FE',
foregroundImage: './assets/images/android-icon-foreground.png',
Expand All @@ -24,11 +80,23 @@ const config: ExpoConfig = {
},
edgeToEdgeEnabled: true,
predictiveBackGestureEnabled: false,
googleServicesFile: androidGoogleServicesFile,
},
web: {
bundler: 'metro',
},
plugins: [
[
'expo-build-properties',
{
ios: {
deploymentTarget: '15.1',
},
android: {
extraMavenRepos: ['https://devrepo.kakao.com/nexus/content/groups/public/'],
},
},
],
[
'expo-splash-screen',
{
Expand All @@ -41,16 +109,43 @@ const config: ExpoConfig = {
},
},
],
[
'@react-native-google-signin/google-signin',
{
iosUrlScheme: 'com.googleusercontent.apps.743865706187-4aj7gacd57ucldfarm5ton9ko9tm044l',
},
],
[
'@react-native-kakao/core',
{
nativeAppKey: process.env.KAKAO_NATIVE_APP_KEY,
android: {
authCodeHandlerActivity: true,
},
ios: {
handleKakaoOpenUrl: true,
},
},
],
['expo-apple-authentication'],
'expo-notifications',
'@react-native-firebase/app',
],
extra: {
apiBaseUrl: process.env.NATIVE_API_BASE_URL,
authRedirectUri: process.env.NATIVE_AUTH_REDIRECT_URI,
devAccessToken: process.env.NATIVE_DEV_ACCESS_TOKEN,
devRefreshToken: process.env.NATIVE_DEV_REFRESH_TOKEN,
googleWebClientId: process.env.GOOGLE_WEB_CLIENT_ID,
googleIosClientId: process.env.GOOGLE_IOS_CLIENT_ID,
kakaoNativeAppKey: process.env.KAKAO_NATIVE_APP_KEY,
eas: {
projectId: '76a68921-8c65-4e50-98b0-fb5ef457ab7e',
},
},
experiments: {
reactCompiler: true,
},
};

export default config;
export default withFirebaseModularHeaders(config);
10 changes: 10 additions & 0 deletions apps/native/assets/ios-pointer.icon/Assets/inner.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 10 additions & 0 deletions apps/native/assets/ios-pointer.icon/Assets/outer.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
40 changes: 40 additions & 0 deletions apps/native/assets/ios-pointer.icon/icon.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
{
"fill" : {
"automatic-gradient" : "display-p3:0.32157,0.41961,0.91765,1.00000"
},
"groups" : [
{
"layers" : [
{
"image-name" : "outer.svg",
"name" : "outer"
},
{
"image-name" : "inner.svg",
"name" : "inner"
}
],
"position" : {
"scale" : 1.3,
"translation-in-points" : [
15,
0
]
},
"shadow" : {
"kind" : "neutral",
"opacity" : 0.5
},
"translucency" : {
"enabled" : true,
"value" : 0.5
}
}
],
"supported-platforms" : {
"circles" : [
"watchOS"
],
"squares" : "shared"
}
}
Loading