Commit Graph

406 Commits (5710140a739ad73ed7650cdc1e1a848a4ee273a4)

Author SHA1 Message Date
Paul Frazee 25cc5b997f
Rework the me.follows cache to reduce network load (#384) 2023-04-03 19:50:46 -05:00
Paul Frazee b12cd53a4d
Improve "Load more" error handling in feeds (#379)
* Add explicit load-more error handling to posts feed

* Add explicit load-more error handling to notifications feed

* Properly set hasMore to false after an error
2023-04-03 15:57:17 -05:00
Paul Frazee 2045c615a8
Reorganize state models for clarity (#378) 2023-04-03 15:21:17 -05:00
Paul Frazee cc7b2a246e Lex refactor fixes (#368)
* Fix: handle validation failures correctly in feed-view

* Fix: convert the off-spec feed view to lex objects

* Fix to fetching all follows during init

* Bump @atproto/api@0.2.1

* Fix: properly group together like notifications

* 1.12
2023-04-02 14:20:19 -05:00
Paul Frazee a3334a01a2 Lex refactor (#362)
* Remove the hackcheck for upgrades

* Rename the PostEmbeds folder to match the codebase style

* Updates to latest lex refactor

* Update to use new bsky agent

* Update to use api package's richtext library

* Switch to upsertProfile

* Add TextEncoder/TextDecoder polyfill

* Add Intl.Segmenter polyfill

* Update composer to calculate lengths by grapheme

* Fix detox

* Fix login in e2e

* Create account e2e passing

* Implement an e2e mocking framework

* Don't use private methods on mobx models as mobx can't track them

* Add tooling for e2e-specific builds and add e2e media-picker mock

* Add some tests and fix some bugs around profile editing

* Add shell tests

* Add home screen tests

* Add thread screen tests

* Add tests for other user profile screens

* Add search screen tests

* Implement profile imagery change tools and tests

* Update to new embed behaviors

* Add post tests

* Fix to profile-screen test

* Fix session resumption

* Update web composer to new api

* 1.11.0

* Fix pagination cursor parameters

* Add quote posts to notifications

* Fix embed layouts

* Remove youtube inline player and improve tap handling on link cards

* Reset minimal shell mode on all screen loads and feed swipes (close #299)

* Update podfile.lock

* Improve post notfound UI (close #366)

* Bump atproto packages
2023-03-31 13:17:26 -05:00
Paul Frazee f6f1fe2558 Feed updates (Closes #344) (#356)
* Rework feed polling to correctly detect when new content is available (close #344)

* Tweak how the tuner works for consistency

* Improve the feed-update behavior after posting

* Load latest notifications when opening the tab
2023-03-22 15:46:49 -05:00
Paul Frazee 449f9243f3 Filter content by your device's configured languages (#354) 2023-03-22 13:23:12 -05:00
Paul Frazee 4f814207bc Merge the suggested actors model with the general suggestion system (#343) 2023-03-21 19:18:15 -05:00
Paul Frazee a7e3ce2585 Add fulltext search for posts and profiles (closes #340) (#342)
* Refactor mobile search screen

* Remove 'staleness' fetch trigger on search

* Implement a temporary fulltext search solution

* Add missing key from profile search result

* A few UI & UX improvements to the search suggestions

* Update web search suggestions

* Implement search in web build
2023-03-21 17:58:50 -05:00
Paul Frazee 48e18662f6 Fix bug in checking for latest 2023-03-21 13:51:27 -05:00
Paul Frazee eab855ffff A few fixes to ensure threads show up as often as possible 2023-03-21 13:47:17 -05:00
Paul Frazee 1e34e62259 Elide long threads in the feed (close #333) 2023-03-21 13:36:27 -05:00
Paul Frazee 858d4c8c88 Introduce an image sizes cache to improve feed layouts (close #213) (#335)
* Introduce an image sizes cache to improve feed layouts (close #213)

* Clear out resolved promises from the image cache
2023-03-21 12:59:10 -05:00
Paul Frazee 91b360fd19 Fix: poll for unread notifications globally (close #303) (#330) 2023-03-20 16:18:42 -05:00
Paul Frazee 1de724b24b Add custom feeds selector, rework search, simplify onboarding (#325)
* Get home screen's swipable pager working with the drawer

* Add tab bar to pager

* Implement popular & following views on home screen

* Visual tune-up

* Move the feed selector to the footer

* Fix to 'new posts' poll

* Add the view header as a feed item

* Use the native driver on the tabbar indicator to improve perf

* Reduce home polling to the currently active page; also reuse some code

* Add soft reset on tap selected in tab bar

* Remove explicit 'onboarding' flow

* Choose good stuff based on service

* Add foaf-based follow discovery

* Fall back to who to follow

* Fix backgrounds

* Switch to the off-spec goodstuff route

* 1.8

* Fix for dev & staging

* Swap the tab bar items and rename suggested to what's hot

* Go to whats-hot by default if you have no follows

* Implement pager and tabbar for desktop web

* Pin deps to make expo happy

* Add language filtering to goodstuff
2023-03-19 18:53:57 -05:00
Paul Frazee c50a20d214 Refactor feed manipulation and rendering to be more robust (#297) 2023-03-16 15:54:06 -05:00
Paul Frazee 64c8689a29 Update team handles and fetch more data in discovery 2023-03-15 17:29:38 -05:00
Paul Frazee 474b4b7840 Optimize and refactor profile rendering a bit 2023-03-15 15:46:39 -05:00
Paul Frazee 3c05a08482 Logout bug hunt (#294)
* Stop storing the log on disk

* Add more info to the session logging

* Only clear session tokens from storage when they've expired

* Retry session resumption a few times if it's a network issue

* Improvements to the 'connecting' screen
2023-03-15 15:05:13 -05:00
Paul Frazee 617d93fb48 Add waitlist signup 2023-03-14 13:30:20 -05:00
Paul Frazee 4eb9eb006c Fix redundant filename 2023-03-14 13:12:13 -05:00
Paul Frazee 7ff4e91363 Move the shell-ui model to the ui folder 2023-03-14 13:11:46 -05:00
Paul Frazee cf30c66c33 Move the profile-ui model to the new ui folder 2023-03-14 13:11:04 -05:00
Paul Frazee acf0f80de2 Rework account creation and login views 2023-03-14 13:03:43 -05:00
Paul Frazee 774fb83719 Rework logged out state to preserve routing and work for web 2023-03-13 23:30:12 -05:00
Paul Frazee 56cf890deb Move to expo and react-navigation (#288)
* 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
2023-03-13 16:01:43 -05:00
Paul Frazee e74f94bc72 Big batch of UI updates (#276)
* Replace react-native-root-toast with a custom toast that fits the visual style

* Tune dark mode colors

* Tune colors a bit more

* Move the reply prompt to a fixed position in the footer

* Fully hide muted posts but give a control to show anyway (close #270)

* Improve thread rendering (better clarity on reply lines)

* Add follower/following counts to side menu

* Fix issues with display name overflows
2023-03-07 15:52:24 -06:00
Paul Frazee 2f3fc4fe4e Handle-change modal with custom domain support (#273)
* Dont append the server's domain name when a custom domain is used

* Update the settings look & feel and add a tool to remove accounts from the switcher

* Try not rendering the bottomsheet when no modal is active.

There are cases where the bottomsheet decides to show itself when
it's not supposed to. It seems obvious to do what this change is
doing -- just dont render bottomsheet if no modal is active -- but
previously we experienced issues with that approach. This time it
seems to be working, so we're gonna yolo try it.

* Implement a handle-change modal with support for custom domains (closes #65)
2023-03-06 21:37:48 -06:00
Paul Frazee 20de7782ba Fix typo 2023-03-06 15:46:44 -06:00
Paul Frazee bb6bd905c2 Fix: fetch follows before everything else to avoid rendering follow buttons wrongly 2023-03-06 15:40:52 -06:00
Paul Frazee 36791e68b3 Onboarding tweaks (#272)
* Small fix to side menu rendering

* Change onboarding to use an explicit 'is onboarding' mode to more clearly control the flow

* Add a progress bar to the welcome banner

* Dont show the 'unfollow button' on posts in weird times (close #271)

* Improve the empty state of the feed

* Only suggest recent posts
2023-03-06 15:34:22 -06:00
Paul Frazee 74c30c60b8 Show replies in the main feed if they have 2 or more upvotes (#269) 2023-03-06 14:49:42 -06:00
arcalinea d74ff9c219 New user constants (#260)
* update users

* update

* With constructed intro feed, only grab 20 random suggested users to avoid perf issues

* Don't 'check for latest' in the feed with the suggestions feed

* Show/hide the welcome banner on account change (close #257)

---------

Co-authored-by: Jay Graber <arcalinea@gmail.com>
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
2023-03-03 15:37:17 -06:00
Paul Frazee c2bfa111ac Remove replies from the home feed (#259)
* Remove replies from the home feed (close #252)

* Increase the 'load more' threshhold
2023-03-03 14:43:18 -06:00
Paul Frazee fd9d6327b4 Edit profile fixes (#258)
* Fix: only clear banner or avi when requested in edit profile

* Set the default snap points to 90% to ensure the modal never fails to raise
2023-03-03 14:02:40 -06:00
Ansh e592e59f4e 72-delete-avatar-and-cover (#255)
* allow to delete profile pic

* allow for removing banner
2023-03-02 18:53:18 -06:00
Ansh 75174a6c37 73-post-embeds (#253)
* update api to 0.1.3

* add repost modal with reposting functionality

* add quote post UI

* allow creation and view of quote posts

* Validate the post record before rendering a quote post

* Use createdAt in quote posts for now

* add web modal support

* Tune the quote post rendering

* Make did and declarationCid optional in postmeta

* Make did and declarationCid optional in postmeta

* dont allow image or link preview if quote post

* Handle no-text quote posts

* Tune the repost modal

* Tweak composer post text

* Fix lint

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
2023-03-02 18:09:48 -06:00
Ansh bd9386d81c New onboarding (#241)
* 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>
2023-03-02 12:21:33 -06:00
Paul Frazee 9b46b2e6a9 A couple various fixes (#242)
* Fix: set the status bar color for dark mode when logging in

* Add some logging

* Improve read/unread tracking behaviors in notifications
2023-03-01 16:54:50 -06:00
Paul Frazee dc7b5a34e7 Add a temporary lexicon refactor guard (#235)
* Add a temporary lexicon refactor guard

* Fix test

* Fix tsconfig formatting
2023-02-28 11:57:49 -06:00
Paul Frazee dc6cdeae60 Fix lint 2023-02-27 10:45:59 -06:00
Paul Frazee 55a8a8fa4c Sync browser navigation with app 2023-02-24 17:47:53 -06:00
Michael Staub 693cbb9f18 Merge branch 'rnw' of github.com:bluesky-social/social-app into rnw 2023-02-23 16:34:25 -08:00
Paul Frazee 154c34e915 Rework modals to support multiple active 2023-02-23 17:22:03 -06:00
Paul Frazee 4182edfd7e Implement image uploading in the web composer 2023-02-23 16:02:31 -06:00
Michael Staub f709c50809 fix: browser history 2023-02-23 13:52:12 -08:00
Paul Frazee f28334739b Merge main into the Web PR (#230)
* 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>
2023-02-22 14:23:57 -06:00
Paul Frazee 7916b26aad Break out the web/native image picking code and make some progress on the web version 2023-01-27 15:51:24 -06:00
Paul Frazee 57d876a530 Fix: move imports and constants for the api-polyfill over from their old location 2023-01-26 17:38:25 -06:00
Paul Frazee 751dfb20fd Add web polyfills 2023-01-26 12:36:27 -06:00
Paul Frazee 7e3f6f0306 Fix all type errors 2023-01-26 11:25:52 -06:00
Paul Frazee 67e9b3596d Fix: dont dedup reposts that are in threads, as that can cause rendering issues (close #71) 2023-01-25 17:57:53 -06:00
Paul Frazee e08a46f0c6 Add a sanity check to avoid bad references, close #77 2023-01-25 17:49:22 -06:00
Paul Frazee 1090783f91 Fix pagination and rendering of suggested follows (#95) 2023-01-25 17:46:14 -06:00
Paul Frazee 5f18931915 Push notification & session management cleanup (#92)
* Add some temporary logging to help suss out the session drop issue

* Fix to session resumption: copy session tokens during a resumeSession attempt

* Factor out notifee display into a lib and add to storybook

* Tune the bg notifications fetch to only get what is needed

* Fix: run account update inside a mobx action

* Remove debugging logs for sessions

* Fixes to bg notifications fetch
2023-01-25 11:31:09 -06:00
Paul Frazee 869f6c4e0e Initial pass at push notifications + some fixes to the session management (#91)
* 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()
2023-01-24 19:32:24 -06:00
Paul Frazee f36c956536 Resolve all remaining lint issues (#88)
* Rework 'navIdx' variables from number arrays to strings to avoid equality-check failures in react hooks

* Resolve all remaining lint issues

* Fix tests

* Use node v18 in gh action test
2023-01-24 13:00:11 -06:00
Aryan Goharzad 3a90114f3a more prettier and lint cleanup (#82)
* more prettier and lint cleanup

* Fixes more lint issues

* lint

* ignore more files

* remove todos

* lint
2023-01-24 11:03:18 -06:00
Paul Frazee 9027882fb4 Account switcher (#85)
* Update the account-create and signin views to use the design system.

Also:
- Add borderDark to the theme
- Start to an account selector in the signin flow

* Dark mode fixes in signin ui

* Track multiple active accounts and provide account-switching UI

* Add test tooling for an in-memory pds

* Add complete integration tests for login and the account switcher
2023-01-24 09:06:27 -06:00
Aryan Goharzad 06e41167d0 Lints some errors and warnings (#76) 2023-01-20 13:43:28 -06:00
Paul Frazee d4b9ef3b0a Only use cursors supplied by the server (ref #59) 2023-01-20 10:39:00 -06:00
Paul Frazee 6dcf9f8d5b Fixes to likes list 2023-01-19 16:54:30 -06:00
Paul Frazee a24b29d64b Fixes to reposted-by list 2023-01-19 16:50:16 -06:00
Paul Frazee c11bfc7541 Fixes to follows listing 2023-01-19 16:39:40 -06:00
Paul Frazee aec0f1c3ba Fixes to the followers list view 2023-01-19 16:38:12 -06:00
Paul Frazee 9230d52ff5 Improve link meta fetching for bsky links (#54)
* Add share dropdown item to profiles

* Temporary improvement for links to content on the network

* Enlarge text slightly on embed cards
2023-01-19 12:30:28 -06:00
Paul Frazee 6588961d2e Update composer to preview external link cards (#52)
* Fetch external link metadata during compose so the user can preview and remove the embed

* Add missing mocks

* Update tests to match recent changes
2023-01-18 18:14:46 -06:00
Paul Frazee bda32c1ceb Remove log 2023-01-18 16:52:00 -06:00
Paul Frazee ebc2033d18 Handle post deletions by removing from active views (close #37) 2023-01-18 16:45:48 -06:00
Paul Frazee d0364c09ad Hackfix around 'images too large' issue 2023-01-18 14:47:42 -06:00
Paul Frazee bf03167ca6 Update compose prompt for isual balance and to include image button 2023-01-18 13:57:53 -06:00
Paul Frazee 80e035cede Remove leftover code 2023-01-17 20:47:43 -06:00
Paul Frazee b449ab842f Switch to a better lightbox implementation (close #42) 2023-01-17 19:34:12 -06:00
Paul Frazee bccc8a64d0 Give a more sensible default crop in the post image picker (related #39) 2023-01-17 18:35:37 -06:00
Paul Frazee 90ac2fe1fc Group together notifications more aggressively 2023-01-17 16:25:10 -06:00
Paul Frazee 050df83db7 Fix an issue that caused the feed to rearrange on loadmore 2023-01-17 10:58:51 -06:00
Paul Frazee e5ec07b919 Remove duplicate posts caused by reposts 2023-01-17 10:45:37 -06:00
Paul Frazee bf1092ad86 Remove scenes (#36)
* Remove scenes from the main menu

* Remove scenes from the profile view

* Remove 'scenes explainer' from onboarding flow

* Remove scene-related modals

* Remove member/membership code

* Remove all scenes-related items from notifications

* Remove scene-related code from posts feed

* Remove scene-related API helpers

* Update tests
2023-01-17 10:11:30 -06:00
Paul Frazee 1b5c347667 Fix: remove duplicates in the TL caused by rendering reply parents 2023-01-16 14:49:58 -06:00
Paul Frazee 429cc1abf1 Bump deps to pull in some bugfixes 2023-01-03 14:31:12 -06:00
Paul Frazee b9b0965000 Implement validation and proper type detection 2023-01-03 13:08:56 -06:00
Paul Frazee 147b85c7fb Fix to feed update 2023-01-03 11:26:51 -06:00
Paul Frazee 42d7dc1c6c Fix session hydration during load 2023-01-03 11:08:39 -06:00
Paul Frazee 4eabc2d65a Improve error logging 2023-01-02 21:39:15 -06:00
Paul Frazee 6885fb2b41 Bump api@0.0.5 and use the type guard helpers 2023-01-02 20:56:35 -06:00
Paul Frazee f6a0e634d7 Implement logging system 2023-01-02 17:38:13 -06:00
Paul Frazee 8cd2b4a721 Implement account muting 2023-01-02 13:40:14 -06:00
Paul Frazee a90fd5d26f Add dark mode toggle 2022-12-30 15:48:34 -06:00
Paul Frazee 55ca7dcce1 Update threads to use design system 2022-12-30 12:19:45 -06:00
Paul Frazee 838fc601c1 Start with highest quality compression and find a suitable size (#33) 2022-12-26 12:01:40 -06:00
Paul Frazee 4913a07e33 Unvendor the api and switch to @atproto/api 2022-12-22 09:17:07 -06:00
Paul Frazee e7d971410f Update to use new getTimeline, getAuthorFeed, and getPostThread output models 2022-12-20 22:54:56 -06:00
Paul Frazee 99a28c0aae Proper fix to the previous panic fix: put threads at the end when they should be there 2022-12-20 09:20:53 -06:00
Paul Frazee 71e4b3d756 Fix to error condition that breaks the feed 2022-12-20 09:02:38 -06:00
Paul Frazee 0401dfc5d3 A couple more android updates 2022-12-19 19:43:28 -06:00
Paul Frazee 0d7385a41a Remove prefetch of feed (it wasnt working) 2022-12-19 19:16:56 -06:00
Paul Frazee e99eb7bfad Fix to thread ordering in the feed: correctly identify the starts of threads when adjacent 2022-12-19 13:22:18 -06:00
Paul Frazee ae3099dfca Improve thread rendering 2022-12-18 18:54:05 -06:00
Paul Frazee 69b86255c6 Add WIP 'report account' modal 2022-12-18 17:45:23 -06:00
Paul Frazee 66a0f8e848 Add WIP 'report post' modal 2022-12-18 17:28:28 -06:00
Paul Frazee d7e71e079f Prefetch feed refreshes to speed up 'load more posts' 2022-12-16 15:37:13 -06:00
Paul Frazee 3aded6887d Add swipe gestures to the lightbox 2022-12-16 11:57:45 -06:00
Paul Frazee d0a437f8fb Improve handling of connection loss 2022-12-14 16:03:10 -06:00
Paul Frazee 7181a75bfb Reset feeds on login 2022-12-14 15:49:38 -06:00
Paul Frazee 4966b2152e Add post embeds (images and external links) 2022-12-14 15:35:15 -06:00
Paul Frazee 345ec83f26 Move posts feed to root store (me) and ensure new posts always update the feed 2022-12-13 15:52:18 -06:00
Paul Frazee ebfa6e5581 Fix: avoid dup keynames in posts feed 2022-12-13 15:51:54 -06:00
Paul Frazee ac97667206 Fix: avoid duplicate key names in notifications 2022-12-13 15:35:11 -06:00
Paul Frazee 8af8d782c7 Fix issue that caused repost & trend data to get lost on feed updates 2022-12-13 15:17:18 -06:00
Paul Frazee e4ee6e5bb6 Fix: show avatars in all notifications 2022-12-13 14:53:00 -06:00
Paul Frazee 9e1bb898f0 Debug: disable feed reordering to isolate bugs 2022-12-13 11:15:32 -06:00
Paul Frazee 1aec0ee156 Hide footer on scroll down (minimal shell mode) 2022-12-12 16:04:14 -06:00
Paul Frazee b2239228e7 Add profile image lightbox 2022-12-12 14:54:56 -06:00
Paul Frazee b32bf69be7 Improve session management 2022-12-12 14:39:02 -06:00
Paul Frazee 693d6bfd0a Add banner image upload to profiles 2022-12-12 13:47:18 -06:00
Paul Frazee fbf8e5fa14 Add main menu button 2022-12-09 11:22:19 -06:00
Paul Frazee e73c7cee39 Turn the main menu into a 'drawer' instead of a screen in the history 2022-12-08 15:34:22 -06:00
Paul Frazee 53b8f0d040 Switch to temporary 'fixed tabs' model for default and notifications 2022-12-08 14:21:28 -06:00
Paul Frazee 539bf5d350 Add avatar images and fix some type signatures 2022-12-08 13:45:23 -06:00
Paul Frazee 9ce02dff5b Add HorzSwipe gesture and integrate it into the ViewSelector 2022-12-07 15:51:06 -06:00
Paul Frazee ae522c86fe Fix mention-creation and implement mentions in notifications 2022-12-06 13:47:52 -06:00
Paul Frazee 246b0e19e1 Add context to replies when appearing in the feed 2022-12-06 12:29:13 -06:00
João Ferreiro 84a60592a8 Upload profile image (#29)
* add editable button profile picture

* add editable button cover picture

* upload profile photos (save them locally)

* rollback pbxproj changes

* rollback podfile checksum (for git only)

* move edit photos onto edit profile modal

* adjust edit icon and image cropping size

* added temporary (react state) image

* added IMAGES_ENABLED flag

* minor lint fix

* save local photos on edit profile upload (wip)

* save profile photos on profile view state (wip)

* remove unecessary computed

* save photo in state before pushing it to viewmodel

* refactor profile pictures's state

* remove unnecessary isMe prop

* removing old comments

* tweak icon size & position

* A few styling tweaks and a fix to mobx state management

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
2022-12-06 10:57:15 -06:00
Paul Frazee 8d3d26134f Never allow undefined values in me model 2022-12-06 10:11:45 -06:00
Paul Frazee 474c4f9b5d Rework the 'main menu' to be a screen that's always in history 2022-12-06 10:11:32 -06:00
Paul Frazee 65e5f2ac86 Fix: never attempt update on 0 items 2022-12-05 13:36:13 -06:00
Paul Frazee f27e32e54c Ensure the UI always renders, even in bad network conditions (close #6) 2022-12-05 13:25:04 -06:00
João Ferreiro 67c4dcff37 Upload image in composer (#27)
* 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>
2022-12-02 10:41:01 -06:00
Paul Frazee 88c868dd80 Improve handling of deleted posts 2022-11-28 16:37:39 -06:00
Paul Frazee 9051aecdcb Use a persistent notifications model to improve load times of the notifications view 2022-11-28 14:19:49 -06:00
Paul Frazee 6ec33dd89f Batch notification loads to avoid layout reflows due to async 2022-11-28 13:45:49 -06:00
Paul Frazee c86ff23757 Set a page-size on notifications 2022-11-28 10:22:52 -06:00
Paul Frazee 9c4f62ffeb Fix 'load more' showing up incorrectly 2022-11-28 08:30:34 -06:00
Paul Frazee f5ff0fd274 Add link embeds to posts 2022-11-23 17:01:00 -06:00
Paul Frazee eb106a9758 Include reposts in no-replies view of feeds 2022-11-23 16:27:49 -06:00
Paul Frazee 4eb8bc1249 Detect links in profile bios 2022-11-23 14:53:33 -06:00
Paul Frazee 2b37b6549b Add replying-to context to threads 2022-11-23 14:22:40 -06:00
Paul Frazee a993499890 Ensure threads group together posts by op 2022-11-23 13:45:50 -06:00
Paul Frazee 1370353ff6 Fix: Adjust home TL post dedup to ensure polling works correctly 2022-11-23 13:29:26 -06:00
Paul Frazee fbcf0d79d1 Show parent post in composer when replying (close #3) 2022-11-23 13:28:29 -06:00
Paul Frazee ba837ad9af Add threading to post feeds 2022-11-23 10:39:28 -06:00
Paul Frazee 99b50e2fd5 Keep fetching suggestions to reach a full list 2022-11-22 15:53:23 -06:00
Paul Frazee eaa2105570 Add 'posts & replies' view to profiles 2022-11-22 12:26:53 -06:00
Paul Frazee d608d67bfe Turn home button into a 'go back to start of nav history' 2022-11-22 12:19:38 -06:00
Paul Frazee c2a39d7c1f Refactor: create src/lib to reflect actual sharing of that code 2022-11-22 12:02:31 -06:00
Paul Frazee e858bb52de Merge branch 'simplify' into main 2022-11-21 18:55:08 -06:00
Paul Frazee b2dba9a15b Track rotated auth tokens 2022-11-21 16:17:40 -06:00
Paul Frazee ed146a582c Add web linking and proper share controls 2022-11-21 16:07:26 -06:00
Paul Frazee a21bcf10dd Add build flags and disable tabs for now 2022-11-20 12:00:40 -06:00
Paul Frazee 39058cd36a Dont group notifications that are an hour apart 2022-11-18 15:38:20 -06:00
Paul Frazee e02b39bf84 Fix data loss on notifications-view update 2022-11-18 14:17:26 -06:00
Paul Frazee fbb9689e4a Dedup posts in the home TL 2022-11-18 14:05:19 -06:00
Paul Frazee a3bca154c4 Improve reliability of screen titles 2022-11-17 16:01:29 -06:00
Paul Frazee b2160ae159 Add new tab animation 2022-11-17 15:44:54 -06:00
Paul Frazee 2b98714548 Add live search to autocomplete and only highlight known handles 2022-11-17 14:35:12 -06:00
Paul Frazee 859087f21d Fix loadLatest() on home feed 2022-11-17 13:17:08 -06:00
Paul Frazee 5d7f3e1863 Invalidate profiles cache on direct load 2022-11-17 13:01:57 -06:00
Paul Frazee 0d70a09777 Clear session when auth fails 2022-11-17 12:33:59 -06:00
Paul Frazee eae5ac839c Poll periodically for new posts 2022-11-17 12:33:19 -06:00
Paul Frazee 6b715224f2 Include tab count and move btn to center 2022-11-17 10:37:30 -06:00
Paul Frazee 41ae87e770 Add post deletion 2022-11-16 16:16:43 -06:00
Paul Frazee bd1a4b198e Clear notifications count optimistically 2022-11-16 14:36:16 -06:00
Paul Frazee e9102bcbac Reduce jank in refreshes 2022-11-16 13:18:53 -06:00
Paul Frazee fe09567760 Fix up/down vote number changes 2022-11-16 11:02:36 -06:00
Paul Frazee 64d095a96b Update prod service URL 2022-11-16 10:06:57 -06:00
Paul Frazee 3725a2eed1 Add a server instance selector and drop env vars 2022-11-15 15:09:50 -06:00
Paul Frazee 9a6df95ade Switch to using setVote() 2022-11-15 13:19:21 -06:00
Paul Frazee 4ae6fbd3c8 Better loading screens 2022-11-15 12:07:41 -06:00
Paul Frazee fb3a43c216 Improve error messages 2022-11-15 10:46:12 -06:00
Paul Frazee 6e93301542 Add profile info caching 2022-11-14 16:56:59 -06:00
Paul Frazee 723dee5704 Disable storing nav state due to bugs 2022-11-14 16:56:40 -06:00
Paul Frazee 700d4e99b9 Restore nav state hydration 2022-11-14 16:28:58 -06:00
Paul Frazee 9170040acb Update all state on profile change 2022-11-14 15:55:38 -06:00
Paul Frazee ef071c0915 Fix issue causing double-loads of notifications 2022-11-14 15:02:42 -06:00
Paul Frazee 23fd43e306 Fix empty states for scene members and memberships 2022-11-14 14:24:23 -06:00
Paul Frazee 75f801ed71 Dont suggest followed users and add empty state to suggestions 2022-11-14 13:48:57 -06:00
Paul Frazee e5cb141954 Dont include self in suggested follows 2022-11-14 13:42:53 -06:00
Paul Frazee 210082be93 Add staging env 2022-11-11 15:02:19 -06:00
Paul Frazee 38ed9a7943 Implement profile updates 2022-11-11 14:15:43 -06:00
Paul Frazee fe52d19c48 Add UI to remove members from scenes 2022-11-11 13:28:23 -06:00
Paul Frazee 22849fb4fc Implement trending 2022-11-11 13:10:05 -06:00
Paul Frazee 486ce26a91 Handle pending invites correctly 2022-11-11 12:49:53 -06:00
Paul Frazee 3a0e9f52f3 Only suggest users in invite suggestions 2022-11-11 10:17:14 -06:00
Paul Frazee cc015d1686 Fixes to onboarding 2022-11-10 17:19:45 -06:00
Paul Frazee 0fc8ef3358 Fixes to account creation 2022-11-10 17:05:26 -06:00
Paul Frazee f6b3e5f9e0 Fix follows 2022-11-10 16:35:13 -06:00
Paul Frazee d3707f30e3 Implement scene invitation and membership controls 2022-11-10 16:30:14 -06:00
Paul Frazee ecf56729b0 More informative empty state for scenes 2022-11-09 17:34:55 -06:00
Paul Frazee e7536289cb Add scene creator 2022-11-09 15:57:49 -06:00
Paul Frazee 41a18bf32f Add creator to scene profile header 2022-11-09 13:12:03 -06:00
Paul Frazee 0cdfd089f5 Implement scene member/memberships listings 2022-11-08 16:37:21 -06:00
Paul Frazee e6429182a1 Implement scenes listing in main menu 2022-11-08 15:56:22 -06:00
Paul Frazee 1fbc4cf1f2 Finish the upvote/downvote implementation 2022-11-08 12:14:51 -06:00
Paul Frazee e650d98924 Add search view; factor out SuggestedFollows component; add suggested follows to search 2022-11-07 16:24:06 -06:00
Paul Frazee d228a5f4f5 Add onboarding (WIP) 2022-11-07 15:35:51 -06:00
Paul Frazee b4097e25d6 Reuse service address 2022-11-07 11:45:26 -06:00
Paul Frazee 60b1c53d85 Add actor types to the profiles and clean up the UI 2022-11-05 11:58:48 -05:00
Paul Frazee f333a90fab Update to the latest APIs 2022-11-04 17:39:54 -05:00
Paul Frazee 8ae6e67eea Rework the composer to a less buggy solution 2022-11-01 14:25:41 -05:00
Paul Frazee 05055e184d Remove old tabs selector modal 2022-11-01 14:00:58 -05:00