* WIP - adding expo
* WIP - adding expo 2
* Fix tsc
* Finish adding expo
* Disable the 'require cycle' warning
* Tweak plist
* Modify some dependency versions to make expo happy
* Fix icon fill
* Get Web compiling for expo
* 1.7
* Switch to react-navigation in expo2 (#287)
* WIP Switch to react-navigation
* WIP Switch to react-navigation 2
* WIP Switch to react-navigation 3
* Convert all screens to react navigation
* Update BottomBar for react navigation
* Update mobile menu to be react-native drawer
* Fixes to drawer and bottombar
* Factor out some helpers
* Replace the navigation model with react-navigation
* Restructure the shell folder and fix the header positioning
* Restore the error boundary
* Fix tsc
* Implement not-found page
* Remove react-native-gesture-handler (no longer used)
* Handle notifee card presses
* Handle all navigations from the state layer
* Fix drawer behaviors
* Fix two linking issues
* Switch to our react-native-progress fork to fix an svg rendering issue
* Get Web working with react-navigation
* Refactor routes and navigation for a bit more clarity
* Remove dead code
* Rework Web shell to left/right nav to make this easier
* Fix ViewHeader for desktop web
* Hide profileheader back btn on desktop web
* Move the compose button to the left nav
* Implement reply prompt in threads for desktop web
* Composer refactors
* Factor out all platform-specific text input behaviors from the composer
* Small fix
* Update the web build to use tiptap for the composer
* Tune up the mention autocomplete dropdown
* Simplify the default avatar and banner
* Fixes to link cards in web composer
* Fix dropdowns on web
* Tweak load latest on desktop
* Add web beta message and feedback link
* Fix up links in desktop web
* delete old onboarding files and code
* add custom FollowButton component to Post, FeedItem, & ProfileCard
* move building suggested feed into helper lib
* show suggested posts/feed if follower list is empty
* Update tsconfig.json
* add pagination to getting new onboarding
* remove unnecessary console log
* fix naming, add better null check for combinedCursor
* In locally-combined feeds, correctly produce an undefined cursor when out of data
* Minor refactors of the suggested posts lib functions
* Show 'follow button' style of post meta in certain conditions only
* Only show follow btn in posts on the main feed and the discovery feed
* Add a welcome notice to the home feed
* Tune the timing of when the welcome banner shows or hides
* Make the follow button an observer (closes#244)
* Update postmeta to keep the follow btn after press until next render
* A couple of fixes that ensure consistent welcome screen
* Fix lint
* Rework the welcome banner
* Fix cache invalidation of follows model on user switch
* Show welcome banner while loading
* Update the home onboarding feed to get top posts from hardcode recommends
* Drop unused helper function
* Update happy path tests
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* Update to RN 71.1.0 (#100)
* Update to RN 71
* Adds missing lint plugin
* Add missing native changes
* Bump @atproto/api@0.0.7 (#112)
* Image not loading on swipe (#114)
* Adds prefetching to images
* Adds image prefetch
* bugfix for images not showing on swipe
* Fixes prefetch bug
* Update src/view/com/util/PostEmbeds.tsx
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* Fixes to session management (#117)
* Update session-management to solve incorrectly dropped sessions
* Reset the nav on account switch
* Reset the feed on me.load()
* Update tests to reflect new account-switching behavior
* Increase max image resolutions and sizes (#118)
* Slightly increase the hitslop for post controls
* Fix character counter color in dark mode
* Update login to use new session.create api, which enables email login (close#93) (#119)
* Replaces the alert with dropdown for profile image and banner (#123)
* replaces the alert with dropdown for profile image and banner
* lint
* Fix to ordering of images in the embed grid (#121)
* Add explicit link-embed controls to the composer (#120)
* Add explicit link-embed controls
* Update the target rez/size of link embed thumbs
* Remove the alert before publishing without a link card
* [Draft] Fixes image failing on reupload issue (#128)
* Fixes image failing on reupload issue
* Use tmp folder instead of documents
* lint
* Image performance improvements (#126)
* Switch out most images for FastImage
* Add image loading placeholders
* Fix tests
* Collection of fixes to list rendering (#127)
* Fix bug that caused endless spinners in profile feeds
* Bundle fetches of suggested actors into one update
* Fixes to suggested follow rendering
* Fix missing replacement of flex:1 to height:100
* Fixes to navigation swipes (#129)
* Nav swipe: increase the distance traveled in response to gesture movement.
This causes swipes to feel faster and more responsive.
* Fix: fully clamp the swipe against the edge
* Improve the performance of swipes by skipping the interaction manager
* Adds dark mode to the edit screen (#130)
* Adds dark mode to edit screen
* lint
* lint
* lint
* Reduce render cost of post controls and improve perceived responsiveness (#132)
* Move post control animations into conditional render and increase perceived responsiveness
* Remove log
* Adds dark mode to the dropdown (#131)
* Adds dark mode to the bottom sheet
* Make background button lighter (like before)
* lint
* Fix bug in lightbox rendering (#133)
* Fix layout in onboarding to not overflow the footer
* Configure feed FlatList (removeClippedSubviews=true) to improve scroll performance (#136)
* Disable like/repost animations to see if theyre causing #135 (#137)
* Composer: mention tagging now works in middle of text (close#105) (#139)
* Implement account deletion (#141)
* Fix photo & camera permission management (#140)
* Check photo & camera perms and alert the user if not available (close#64)
- Adds perms checks with a prompt to update settings if needed
- Moves initial access of photos in the composer so that the initial prompt
occurs at an intuitive time.
* Add react-native-permissions test mock
* Fix issue causing multiple access requests
* Use longer var names
* Update podfile.lock
* Lint fix
* Move photo perm request in composer to the gallery btn instead of when the carousel is opened
* Adds more tracking all around the app (#142)
* Adds more tracking all around the app
* more events
* lint
* using better analytics naming
* missed file
* more fixes
* Calculate image aspect ratio on load (#146)
* Calculate image aspect ratio on load
* Move aspect ratio bounds to constants
* Adds detox testing and instructions (#147)
* Adds detox testing and instructions
* lint
* lint
* Error cleanup (close#79) (#148)
* Avoid surfacing errors to the user when it's not critical
* Remove now-unused GetAssertionsView
* Apply cleanError() consistently
* Give a better error message for Upstream Failures (http status 502)
* Hide errors in notifications because they're not useful
* More e2e tests (create account) (#150)
* Adds respots under the 'post' tab under profile (#158)
* Adds dark mode to delete account screen (#159)
* 87 dark mode edit profile (#162)
* Adds dark mode to delete account screen
* Adds one more missed darkmode
* more fixes
* Remove fallback gradient on external links without thumbs (#164)
* Remove fallback gradient on external links without thumbs
* Remove fallback gradient on external links without thumbs in the composer preview
* Fix refresh behavior around a series of models (repost, graph, vote) (#163)
* Fix refresh behavior around a series of models (repost, graph, vote)
* Fix cursor behavior in reposted-by view
* Fixes issue where retrying on image upload fails (#166)
* Fixes issue where retrying on image upload fails
* Lint, longer test time
* Longer waitfor time in tests
* even longer timeout
* longer timeout
* missed file
* Update src/view/com/composer/ComposePost.tsx
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* Update src/view/com/composer/ComposePost.tsx
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* 154 cached image profile (#167)
* Fixes issue where retrying on image upload fails
* Lint, longer test time
* Longer waitfor time in tests
* even longer timeout
* longer timeout
* missed file
* Fixes image cache error on second try for profile screen
* lint
* lint
* lint
* Refactor session management to use a new "Agent" API (#165)
* Add the atp-agent implementation (temporarily in this repo)
* Rewrite all session & API management to use the new atp-agent
* Update tests for the atp-agent refactor
* Refactor management of session-related state. Includes:
- More careful management of when state is cleared or fetched
- Debug logging to help trace future issues
- Clearer APIs overall
* Bubble session-expiration events to the user and display a toast to explain
* Switch to the new @atproto/api@0.1.0
* Minor aesthetic cleanup in SessionModel
* Wire up ReportAccount and ReportPost (#168)
* Fixes embeds for youtube channels (#169)
* Bump app ios version to 1.1 (needed after app store submission)
* Fix potential issues with promise guards when an error occurs (#170)
* Refactor models to use bundleAsync and lock regions (#171)
* Fix to an edge case with feed re-ordering for threads (#172)
* 151 fix youtube channel embed (#173)
* Fixes embeds for youtube channels
* Tests for youtube extract meta
* lint
* Add 'doesnt use non-exempt encryption' to ios config
* Rework the search UI and add (#174)
* Add search tab and move icon to footer
* Remove subtitles from view header
* Remove unused code
* Clean up UI of search screen
* Search: give better user feedback to UI state and add a cancel button
* Add WhoToFollow section to search
* Add a temporary SuggestedPosts solution using the patented 'bsky team algo'
* Trigger reload of suggested content in search on open
* Wait five min between reloading discovery content
* Reduce weight of solid search icon in footer
* Fix lint
* Fix tests
* 151 feat youtube embed iframe (#176)
* youtube embed iframe temp commit
* Fixes styling and code cleanup
* lint
* Now clicking between the pause and settings button doesn't trigger the parent
* use modest branding (less yt logos)
* Stop playing the video once there's a navigation event
* Make sure the iframe is unmounted on any navigation event
* fixes tests
* lint
* Add scroll-to-top for all screens (#177)
* Adds hardcoded suggested list (#178)
* Adds hardcoded suggested list
* Update suggested-actors-view to support page sizes smaller than the hardcoded list
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* more robust centering of the play button (#181)
Co-authored-by: Aryan Goharzad <arrygoo@gmail.com>
* Bundle of UI modifications (#175)
* Adjust visual balance of SuggestedPosts and WhoToFollow
* Fix bug in the discovery load trigger
* Adjust search header aesthetic and have it scroll away
* More visual balance tweaks on the search page
* Even more visual balance tweaks on the search page
* Hide the footer on scroll in search
* Ditch the composer prompt buttons in the home feed
* Center the view header title
* Hide header on scroll on the home feed
* Fix e2e tests
* Fix home feed positioning (closes#189) (#195)
* Fix home feed positioning for floating header
* Fix positioning of errors in home feed
* Fix lint
* Don't show new-content notification for reposts (close#179) (#197)
* Show the splash screen during session resumption (close#186) (#199)
* Fix to suggested follows: chunk the hardcoded fetches to 25 at a time (close#196) (#198)
* UI updates to the floating action button (#201)
* Update FAB to use a plus icon and not drop shadow
* Update FAB positioning to be more consistent in different shell modes
* Animate the FAB's repositioning
* Remove the 'loading' placeholder from images as it degraded feed perf (#202)
* Remove the 'loading' placeholder from images as it degraded feed perf
* Remove references
* Fix RN bug that causes home feed not to load more; also fix home feed load view. (#208)
RN has a bug where rendering a flatlist with an empty array appears to break its
virtual list windowing behaviors. See https://stackoverflow.com/a/67873596
* Only give the loading spinner on the home feed during PTR (#207)
(cherry picked from commit b7a5da12fdfacef74873b5cf6d75f20d259bde0e)
* Implement our own lifecycle tracking to ensure it never fires while the app is backgrounded (close#193) (#211)
* Push notification fixes (#210)
* Fix to when screen analytics events are firing
* Fix: dont trigger update state when backgrounded
* Small fix to notifee API usage
* Fix: properly load notification info for push card
* Add feedback link to main menu (close#191) (#212)
* Add "follows you" information and sync follow state between views (#215)
* Bump @atproto/api@0.1.2 and update API usage
* Add 'follows you' pill to profile header (close#110)
* Add 'follows you' to followers and follows (close#103)
* Update reposted-by and liked-by views to use the same components as followers and following
* Create a local follows cache MyFollowsModel to keep views in sync (close#205)
* Add incremental hydration to the MyFollows model
* Fix tests
* Update deps
* Fix lint
* Fix to paginated fetches
* Fix reference
* Fix potential state-desync issue
* Fixes to notifications (#216)
* Improve push-notification for follows
* Refresh notifications on screen open (close#214)
* Avoid showing loader more than needed in post threads
* Refactor notification polling to handle view-state more effectively
* Delete a bunch of tests taht werent adding value
* Remove the accounts integration test; we'll use the e2e test instead
* Load latest in notifications when the screen is open rather than full refresh
* Randomize hard-coded suggested follows (#226)
* Ensure follows are loaded before filtering hardcoded suggestions
* Randomize hard-coded suggested profiles (close#219)
* Sanitizes posts on publish and render (#217)
* Sanatizes posts on publish and render
* lint
* lint and added sanitize to thread view as well
* adjusts indices based on replaced text
* Woops, fixes a bug
* bugfix + cleanup
* comment
* lint
* move sanitize text to later in the flow
* undo changes to compose post
* Add RichText library building upon the sanitizePost library method
* Add lodash.clonedeep dep
* Switch to RichText processing on record load & render
* Fix lint
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* A group of notifications fixes (#227)
* Fix: don't group together notifications that can't visually be grouped (close#221)
* Mark all notifications read on PTR
* Small optimization: useCallback and useMemo in posts feed
* Add loading spinner to footer of notifications (close#222)
* Fix to scrolling to posts within a thread (#228)
* Fix: render the entire thread at start so that scrollToIndex works always (close#270)
* Visual fixes to thread 'load more'
* A few small perf improvements to thread rendering
* Fix lint
* 1.2
* Remove unused logger lib
* Remove state-mock
* Type fixes
* Reorganize the folder structure for lib and switch to typescript path aliases
* Move build-flags into lib
* Move to the state path alias
* Add view path alias
* Fix lint
* iOS build fixes
* Wrap analytics in native/web splitter and re-enable in all view code
* Add web version of react-native-webview
* Add web split for version number
* Fix BlurView import for web
* Add web split for fastimage
* Create web split for permissions lib
* Fix for web high priority images
---------
Co-authored-by: Aryan Goharzad <arrygoo@gmail.com>
* Saves image on long press
* Adds save on long press
* Forking lightbox
* move to wrapper only to the bottom sheet to reduce impact of this change
* lint
* lint
* lint
* Use official `share` API
* Clean up cache after download
* comment
* comment
* Reduce swipe close velocity
* Updates per feedback
* lint
* bugfix
* Adds delayed press-in for TouchableOpacity
* Fix: test the session during resume to ensure it's valid
* Don't delete sessions for now
* Add notifee and request notif permissions on first login
* Set unread notifications badge on app icon
* Trigger a notifee card on new notifications
* Experimental: use react-native-background-fetch to check for notifications
* Add missing mocks
* Fix to resumeSession()
* fixes youtube embed
* move extractMetaHtml test to its own file
* tests cleanup
* Add fallback for youtube meta data
* lint
* Check for youtube in the url domain
* use hostname instead of full url to check for link domain
* checks only for domain
* upload images in composer v1
* fix android compile
* reafctor image carousel into new component;
fix photo overlapping text in composer
* revert android changes
* further refactoring code into different components
* move show carousel out of the component
* fixing add photo using camera
* fix typescript issue; force mediatype photo
* change post test with photo attached;
remove auto linking settings
* use runInAction in getPhotos model
* react-hooks/exhaustive-deps fixes
* crop every photo;
make use of useCallback
* moving placeholder condition
* Cleanup
Co-authored-by: Paul Frazee <pfrazee@gmail.com>