Commit Graph

1689 Commits

Author SHA1 Message Date
sepeterson
d09ccd313d MOB-674 figure out how to use flex 2025-11-05 15:59:54 -06:00
sepeterson
9c85a2fcb3 MOB-674 upload status text to 2 lines if necessary 2025-11-03 15:42:17 -06:00
Abbey Campbell
50761c5e95 reverse spread order for grid styles 2025-10-31 09:24:08 -07:00
Ryan Stelly
d523bf4d99 Merge pull request #3112 from FLGMwt/fix-developer-warning-login-screen
fix developer warning on login screen, provide react key
2025-10-31 08:45:47 -05:00
Ryan Stelly
38d8f774fe add taxon types 2025-10-30 10:46:49 -05:00
Johannes Klein
6fc1da07f7 Remove deprecated (React 19) forwardRef 2025-10-28 16:44:49 +01:00
Johannes Klein
ada0cfb74e Fix type import 2025-10-28 16:43:23 +01:00
Johannes Klein
b742a1ff58 Migrate to use FlashListRef type 2025-10-28 16:16:48 +01:00
Johannes Klein
b5b0156dbe Remove deprecated disableAutoLayout prop 2025-10-28 16:10:22 +01:00
Johannes Klein
129052778d Remove Function type 2025-10-28 16:09:55 +01:00
Johannes Klein
bac5d02289 Remove deprecated estimatedItemSize prop 2025-10-28 16:07:17 +01:00
Corey Farwell
54f6e55691 Perform some trivial TypeScript migrations. (#3160)
* Perform some trivial TypeScript migrations.

No changes needed to convert these files.

* Remove unused comments

---------

Co-authored-by: Johannes Klein <johannes.t.klein@gmail.com>
2025-10-28 11:46:13 +01:00
Corey Farwell
61691c098f Migrate NetworkService.js to TypeScript. (#3162) 2025-10-28 11:46:08 +01:00
Corey Farwell
595d689e05 Migrate ErrorBoundary boundary to TypeScript. (#3159)
* Migrate `ErrorBoundary` boundary to TypeScript.

* Extend from PropsWithChildren

---------

Co-authored-by: Johannes Klein <johannes.t.klein@gmail.com>
2025-10-28 11:32:44 +01:00
budowski
f6b3ba1841 MOB-860 - empty states for user's followers/following/projects screens (#3110)
* MOB-860 - empty states for user's followers/following/projects screens

* Also expose isFetching from users list query

* Render either activity indicator or zero data component

* Render either activity indicator or zero data component

* Fix for: 0 is falsey

* Remove useCallback

---------

Co-authored-by: Johannes Klein <johannes.t.klein@gmail.com>
2025-10-23 11:40:55 +02:00
Ryan Stelly
69b6cff914 Merge pull request #3149 from inaturalist/959-android-limit-image-picker-to-100
(android) limit image picker to 100 max
2025-10-22 07:53:03 -05:00
Corey Farwell
723b0bf35a Migrate StartupService components to TypeScript. (#3151) 2025-10-22 11:26:22 +02:00
Ryan Stelly
1da712d18d Merge branch 'main' into 959-android-limit-image-picker-to-100 2025-10-21 19:12:27 -05:00
Corey Farwell
00c2b22a93 Migrate RotatingINatIconButton component to TypeScript. (#3150)
* Migrate `RotatingINatIconButton` component to TypeScript.

* Let functional component return type be inferred

* Change Props to an interface

* Extend Props from PropsWithChildren

* Import as type

---------

Co-authored-by: Johannes Klein <johannes.t.klein@gmail.com>
2025-10-22 00:22:49 +02:00
Corey Farwell
3583d24c61 Migrate ForgotPassword component to TypeScript. (#3147)
* Migrate `ForgotPassword` component to TypeScript.

* Rely on type inference
2025-10-21 17:57:17 +02:00
Ryan Stelly
5d43334400 (android) limit image picker to 100 max 2025-10-18 10:48:59 -05:00
Johannes Klein
bad9c5a4d8 Add firebase dependency, and basic logging (#3127)
* Update package.json

* Update AppDelegate.mm

* Update Podfile

* Update .gitignore

* Update link-inat-model-files.sh

* Add plist file to project

* Update project.pbxproj

* Add analytics package

* Update project.pbxproj

* Update PrivacyInfo.xcprivacy

* Basic screen tracking

* Basic button press logging to firebase

* Update package-lock.json

* Update Podfile.lock

* Add Android setup

* Update .gitignore

* Add analytics mock

* Ignore rubocop warning here

* Create GoogleService-Info.example.plist

* Create google-services.example.json

* Add instructions to set up Firebase configs

* Update e2e_ios.yml

* Update e2e_android.yml

* Better plural

* Use specific XCode version in e2e CI

* Update GoogleService-Info.example.plist

* Revert "Update GoogleService-Info.example.plist"

This reverts commit 0bc0ed4862.

* We need an actual real app id or we get a crash during app start

* My bad, we do need both files for building

* Also set API key

* Add comments

* Add comment

* Update Podfile.lock

* Revert "Use specific XCode version in e2e CI"

This reverts commit cbd63d1b5d.
2025-10-16 13:15:10 +02:00
Johannes Klein
b20a99adec Show offline profile picture in header (#3142)
* Rename file without changes

* Revert "Rename file without changes"

This reverts commit a3de5e100d.

* Rename file without changes

* Refactor InlineUserBase to TS

* Update component Props

* Import as type

* Check if the user displayed is the current user and if so

also display the user image while offline.

* Update src/components/SharedComponents/InlineUser/InlineUserBase.tsx

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update InlineUser.test.js

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-16 00:19:35 +02:00
Corey Farwell
b18d21c1e2 Migrate SharedComponents/index.ts and sharedHooks/index.ts to TypeScript`. (#3136) 2025-10-14 21:25:03 +02:00
Johannes Klein
6aa195ceaf Fix: Double border on user icon in Me tab (#3135)
* Use Image with nativewind styling instead of FasterImageView

* Update UserIcon.test.js.snap

* Update unit tests
2025-10-14 21:22:24 +02:00
Johannes Klein
316caf6687 922 share sheet changes (#3129)
* Allow 500 photos in image picker

* Allow 500 photos from share extension

* Basic React share sheet setup

Following the setup here: f5805e9208/SHARE_EXTENSION_VIEW.md

* Basic ShareSheet React component

* Update ShareSheet.tsx

* Update ShareSheet.tsx
2025-10-14 01:16:29 +02:00
Ryan Stelly
2f56074089 fix remaining warnings due to <Trans /> component lists, update readme 2025-10-10 10:34:10 -05:00
Ryan Stelly
f8c2fdfb06 Merge branch 'main' into fix-developer-warning-login-screen 2025-10-10 09:44:25 -05:00
Ryan Stelly
e2f18df60c Merge pull request #3117 from inaturalist/apply-link-styles-to-user-links
apply link styles to UserText links
2025-10-10 09:29:29 -05:00
Kirk van Gorkom
2e08467692 Prevent WebView iframe loads from updating source (#3107)
* Prevent WebView iframe loads from updating source

* Use request type directly from the library that provides this param

---------

Co-authored-by: Johannes Klein <johannes.t.klein@gmail.com>
2025-10-09 14:26:10 +02:00
Johannes Klein
3b5e298d36 Call navigate directly in onPress handler (#3124)
And not over setting a state and navigating based on state on modal close.
2025-10-08 23:02:34 +02:00
Johannes Klein
52af36cd77 Fix: Observation photos not showing (#3120)
* Move file and fix warnings

* Add state type

* Change to interface

* Call setState only once per image load

This fixes the OflineNotice being shown even when. load succeeds.

* Copy over fix into default mode PhotoContainer

* Update src/components/ObsDetailsDefaultMode/PhotoContainer.tsx

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update PhotoContainer.tsx

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-08 22:39:04 +02:00
Corey Farwell
3b11a7349e Disable spellcheck functionality in login form fields. (#3088) 2025-10-08 12:26:49 +02:00
Corey Farwell
446245bcd9 Migrate src/components/styledComponents to TypeScript. (#3075) 2025-10-08 12:20:47 +02:00
Ryan Stelly
fd1ed66ef7 MOB-927 apply link styles to UserText links 2025-09-30 15:33:10 -05:00
Ryan Stelly
03ed3db556 fix developer warning on login screen, provide react key 2025-09-23 11:37:09 -05:00
Johannes Klein
a3aaa66ed5 Update react-native-share-menu to build with use_frameworks static (#3109)
* Update react-native-share-menu

* Update Podfile.lock

* Create react-native-share-menu+6.0.0.patch

This is required as long as we are not setting use_frameworks to static

* Breaking change: Android react-native-share-menu now also has same Share structure as iOS

* Remove Android specific test structure

Because Android and iOS now have the same return type from our fork of react-native-share-menu
2025-09-21 18:23:20 -06:00
budowski
c49c0f6ae2 MOB-835 - show info icon and link in taxon search results when searching from explore filters modal (#3072)
* MOB-835 - show info icon and link in taxon search results when searching from explore filters modal

* Migrate ExploreTaxonSearchModal to TS

* Close Explore filters modal on info button pressed

* Fix order

---------

Co-authored-by: Johannes Klein <johannes.t.klein@gmail.com>
2025-09-09 13:10:14 +02:00
Johannes Klein
cb32bcddca Fix: Back button not showing on ObsEdit (#3101) 2025-09-08 14:24:08 +02:00
Johannes Klein
fc16b91ded Fix a crash in SuggestionsResult (#3100) 2025-09-08 14:23:02 +02:00
Corey Farwell
a43446909c Remove the need to specify TypeScript file extensions in imports (#3094)
* Don't require TS extensions in imports

* Resolve all import extension errors

* Remove file extension from import paths used in mocks

* Remove .d of type definition file paths

* Remove .d of type definition file and import as type

---------

Co-authored-by: Johannes Klein <johannes.t.klein@gmail.com>
2025-09-07 23:41:42 +02:00
Johannes Klein
a5c359ea44 Show only date picker first and add time picker as second step (#3093) 2025-09-05 13:49:25 +02:00
Johannes Klein
0f6aa5b11d Migrate BackButton to TS (#3092)
* Migrate to TS

* Update imports
2025-09-05 13:31:40 +02:00
Corey Farwell
19d0dcf17b Migrate src/sharedHelpers/getImageDimensions to TypeScript. (#3078) 2025-09-05 13:16:11 +02:00
Johannes Klein
f5e9a6d812 Migrate to react-native-vector-icons 12.x (#3091)
* Update package.json

* Update package-lock.json

* Update Podfile

* Update build.gradle

* Update Podfile.lock

* Update INatIcon.ts
2025-09-01 22:46:03 +02:00
Johannes Klein
49091f8fc4 Enable React Compiler (#3082)
* Update package.json

* Update package-lock.json

* Enable plugin

* Update package.json

* Update package-lock.json

* Update .eslintrc.js

* Create a new object instead of mutating the existing one

* Update SoundRecorder.js

* Do not mutate prop directly

* Do not mutate store value directly

* Disable compiler for zoom hook

Because it uses reanimated logic, and previous work laid out we should specifically disregard a rule of react here, unsure what to do here for now.

* Move array for tracking results into component

* Disable compiler for StandardCamera

* Do not mutate store value directly

* Disable compiler for FullPageWebView

* Do not mutate route param

* Remove unnecessary check if state is true before setting it to false

* Fix: user might be undefined

* Update reanimated usage with new compiler compliant API

* Fix: taxon might be undefined

* Fix: taxon might be undefined

* Fix: common pitfall of trying to render text outside of Text component

* Update interface

* Add package override

* Update package-lock.json

* Refactor updating of user preferences into User model

* Remove no memo directive from zoom

* Update file imports

* Migrate safeRealmWrite to TS

* Update interface and import path

* Update interface

* Refactor useLocaalObservation hook to not mutate return value of a function that should not be mutated

* Update tests to new return structure

* Remove useSafeRoute hook

We get the same information from error contexts and surrounding documents, and this hook was violating the rules of react by conditionally calling another hook.

* Use optional chaining

* Update TaxonNamesSetting.test.js

* Fix: use optional chaining

* Extend on RNTLs renderHook instead of re-implementing

* Remove unnecessary mock

* Remove unnecessary mock

* Remove unecessary mock

* Remove trailing spaces
2025-09-01 17:06:51 +02:00
Johannes Klein
11050afe86 Do not log empty sentinel files to the server (#3076)
* Only log sentinel files only if there is any data in the stages array

* Fix indentation

* Also delete sentinel files when exiting camera through Gallery button

* Update AICameraButtons.tsx
2025-08-28 16:47:29 +02:00
budowski
36cd8638e8 MOB-873 - fix - potential disagreement sheet not showing up in certain flows (#3057)
Co-authored-by: Johannes Klein <johannes.t.klein@gmail.com>
2025-08-26 15:02:25 +02:00
Johannes Klein
bf96d9a53c Update lodash types (#3063)
* Update package.json

* Update package-lock.json

* Change to named import
2025-08-22 10:32:05 +02:00
Johannes Klein
a15e4c7076 Allow some time for camera initialization, add log if no device found (#3059)
* Start screen in a loading state for 700ms

One idea I have about the bug is that maybe it takes a few renders to initialize the device. As we are immediately backing out of the screen in case we have no device, maybe just adding a few ms to give the native side time helps.

* If no device is selected log the length of devices available

* Add missing mock
2025-08-13 19:20:36 +02:00