* Update the feed to only check latest on focus after 30s, but to do a full reset on focus after 1 hour to avoid very stale data
* Remove the isFeedPublic query
* Fix: avoid double next-page fetches
* Reduce some poll intervals to reduce server load
* Guard against double-fires of fetchNextPage
* Reduce polling on blurred screens
* Add logo to left nav in logged out
* Protect last routes
* Hide links in left nav, hide nav
* Replace bottom bar for pwi
* Remove same links from drawer
* Hide reply prompt
* Allow search
* Enable PWI
* Disable access to feeds on PWI
* Remove feeds nav item from drawer when signed out
* Replace discover feed on home with a CTA
* Wire up the sign in and create account buttons to go straight to their respective screens
* Give a custom ScreenHider interface for no-pwi
* Add side borders on desktop to the screen hider
* Filter accounts in the autocomplete according to mod settings
* Trim replies in the post thread that are pwi opt-out
* Show 'learn more' on the content hider when no-override is enabled
* Apply the moderation filter on profile cards
* Disable post search on logged-out view
* Update locale files
* Bump api pkg
* Ensure feeds with no posts don't show as NSFPublic
* Fix types
---------
Co-authored-by: Eric Bailey <git@esb.lol>
* Add an intermediate List component
* Fix type
* Add onScrolledDownChange
* Port pager to use onScrolledDownChange
* Fix on mobile
* Don't pass down onScroll (replacement TBD)
* Remove resetMainScroll
* Replace onMainScroll with MainScrollProvider
* Hook ScrollProvider to pager
* Fix the remaining special case
* Optimize a bit
* Enforce that onScroll cannot be passed
* Keep value updated even if no handler
* Also memo it
* add japanese to list of languages
* add japanese translations
* change `jp` to `ja`
* minor changes to Japanese translation
* minor changes to Japanese translation
* update japanese strings with feedback
* Update languages.ts
* Extract translations
* Gitignore new compiled file
* allow switching to japanese
---------
Co-authored-by: Jake Gold <jake@blueskyweb.xyz>
Co-authored-by: Eric Bailey <git@esb.lol>
* Resolve links in profile bios
* Improve solution
* On mobile, dont disable pointer events on the bio richtext
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* Revise FeedSourceCard load state to allow deletion for failures
* Translate
* Remove test error feed
* Fix missing uri param
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* Dont poll for new content on profiles
* Drop the whenAppReady query after new post to reduce traffic overhead
* Reduce getPosts calls in notifs to only use them when needed
* Reduce calls to getFeedGenerator by the mergefeed
* Dont run end-of-follows mergefeed requests until actually at the end of the feed
* build AWS container
---------
Co-authored-by: Jake Gold <jake@blueskyweb.xyz>
* Add threadgating
* UI improvements
* More ui work
* Remove comment
* Tweak colors
* Add missing keys
* Tweak sizing
* Only show composer option on non-reply
* Flex wrap fix
* Move the threadgate control to the top of the composer
* Dont reset notifications feed on push notification event
* Dont separate notifications by read state to avoid jank
* On notifications screen focus, check latest and only rerender if not scrolled down
* Reuse the cached notifs page when its not stale
* Bump ios build number
* Improve comments
* Change the 'mark all read' condition to avoid firing too early
* Fix quote post moderation check
* Restore the ContentHider check
* Apply the content hider to quote posts
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* Allow going directly to password input screen when switching accounts and password is required
* Revise state handling
* Handle logged out states, enable clearing requestedAccount
---------
Co-authored-by: Eric Bailey <git@esb.lol>
* Move moderatePost up to feed query
* Attemt to fill page up to 30
* Add the 'ensure full page' behavior to notifs
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* Remove listenSessionLoaded from analytics
* Move analytics init call to navigation ready
* Remove zod dependency from analytics
* Mirror changes on the web
* Delete listenSessionLoaded
* Only set up listeners once
* Inline never-imported export
* Remove pretense at handling cleanup
* Extract per-session listener to a function
* Split notifications.init() from notifications.onSessionLoaded()
* Tweak forked code to be more similar
* Remove unnecessary guards
* Split notifications.onSessionLoaded in two
* Always use getAgent()
* Remove dep on listenSessionLoaded, add cleanup
* Add logged out e2e ctrl, fix login test
* Fix log handling via env vars in expo
* Fix create account test
* Upgrade dev-env
* Fix home screen tests
* Fix composer tests
* Fix curate-lists tests, split in two
* Fix invite codes test
* Fix curate-lists tests
* Give up on mergefeed test
* Fix mod lists
* Fix app view url
* Fix profile tests
* Fix profile test with hack
* Keep using globals
* Fix two more
* Fix thread view
* Better skip for merge feed
* Revert debug code
* Do no poll when screen is not focused
* Avoid polling unless focused
* Handle homepage in background
* Fix the intl:check to ignore comments in diffs
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* Install lingui eslint plugin, ignore compiled files
* Add lingui step to Lint workflow
* Run check in other job
* Add compile step to web build
* Temp: add a new string to test with
* Add message
* Revert "Temp: add a new string to test with"
This reverts commit ef5459d00c3ea9798279e000a5ac43effc117486.
* Un-track compiled files
* Add check scripts to package.json, build step
* Make sure to compile translations prior to test/typecheck
* Rename scripts
* fixed lack of styles on 1300px web viewport width by adjusting tablet breakpoints
* fixed lack of styles on 800px web viewport width by adjusting mobile breakpoints
* changed `maxWidth` values in viewports to `n - 1` format
* Reset
* Associate shadows with the cache
* Use colocated helpers
* Fix types
* Reorder for clarity
* More types
* Copy paste logic for profile
* Hook up profile query
* Hook up suggested follows
* Hook up other profile things
* Fix shape
* Pass setShadow into the effect deps
* Include reply posts in the shadow cache search
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* Dont group read & unread notifications together
* Remove and reduce some stale cache times
* Keep the staleTime on the post-feed
* Bring back the load-bearing staletime on profile
* Assign keys to feed slices via a counter, to enable duplicate items in the feed if needed
* Move post-feed query state into the query's page params to consistently bind their lifecycles
* Optimisticaly update order of saved feeds
* Better show disabled state for pin button
* Improve loading/disabled states
* Improve placeholder
* Simplify loading components
* show logged out view when adding accounts
* Handle existing signed-in account
* Show which account is currently logged in
* Fix showing toasts
---------
Co-authored-by: Eric Bailey <git@esb.lol>
* Rework resolve-did and resolve-uri queries to be smarter about cache reuse
* Precache handle resolutions
* Remove old unused code
* Load placeholder threads from the post-feed and notifications-feed queries
* Remove logs
* Fix bad ref
* Add loading spinners to the cache-loading thread view
* Scroll replies into view when loading threads
* Add caching within a thread
* Fix: dont show bottom border when the child spinner is active
* Vendor createNativeStackNavigator for further tweaks
* Completely disable withAuthRequired
* Render LoggedOut for protected routes
* Move web shell into the navigator
* Simplify the logic
* Add login modal
* Delete withAuthRequired
* Reset app state on session change
* Move TS suppression
* Make shadow a type-only concept
* Prevent unnecessary init state recalc
* Use derived state instead of effects
* Batch emitter updates
* Use object first seen time instead of dataUpdatedAt
* Stop threading dataUpdatedAt through
* Use same value consistently
* Base work for public view
* Make default moderation settings more restrictive
* Fix type
* Handle showing sign-in on authed actions
* Fix hoc logic
* Simplify prefs logic
* Remove duplicate method
* Add todo
* Clean up RepostButton.web
* Fix x button color
* Add todo
* Retain existing label prefs for now, use separate logged out settings
* Clean up useAuthedMethod, rename to useRequireAuth
* Add todos
* Move dismiss logic to withAuthRequired
* Ooops add web
* Block public view in prod
* Add todo
* Fix bad import
* get basic hindi support to work
* get web app language switcher in
* Refactor i18n implementation and remove unused
code
* add missing strings
* add dropdowns and modals missing strings
* complete all hindi translations
* fix merge conflicts
* fix legeacy persisted state
* fix data in RecommendedFeeds
* fix lint
* Dont use the stale cache for notifs-feed
* Add a delay to marking all read to avoid marking upcoming posts as read
* Trigger automatic notifications refresh when navigating to the tab, in certain conditions
* Prototype a queue
* Track both current and pending actions
* Skip unnecessary actions
* Commit last confirmed state to shadow
* Thread state through actions over time
* Fix the logic to skip redundant mutations
* Track status
* Extract an abstraction
* Fix standalone mutations
* Add types
* Move to another file
* Return stable function
* Clean up
* Use queue for muting
* Use queue for blocking
* Convert other follow buttons
* Don't export non-queue mutations
* Properly handle canceled tasks
* Fix copy paste
* Update login page to use service query
* Update modal to use session instead of store
* Move image sizes cache off store
* Update settings to no longer use store
* Update link-meta fetch to use agent instead of rootstore
* Remove deprecated resolveName()
* Delete deprecated link-metas cache
* Delete deprecated posts cache
* Delete all remaining mobx models, including the root store
* Strip out unused mobx observer wrappers
* Replace me model in post dropdown btn
* Replace delete account logic
* Replace me model in bottom bar web
* Replace me model in bottom bar
* Replace me model in reply prompt
* Better fallback
* Fix reference
* Fix bad ref in bottom bar
* Refactor ChangeHandle to use new methods
* Better telemetry
* Remove unused logic
* Remove caching
* Add error message
* Persist service changes, don't fall back on change handle
* Move tick-every-minute into a hook/context
* Move soft-reset event out of the shell model
* Update soft-reset listener on new search page
* Implement session-loaded and session-dropped events
* Update analytics and push-notifications to use new session system
* Unify the autocomplete code; drop fuse
* Persist autocomplete results while they're in progress
* Commit lockfile
* Use ReturnType helper
---------
Co-authored-by: Eric Bailey <git@esb.lol>
* Port user followers to RQ
* Port user follows to RQ
* Start porting FollowButton to RQ
* Fix RQ key
* Check pending
* Fix shadow and pending states
* Rm unused
* Remove last usage of useFollowProfile
* Add my-blocked-accounts and my-muted-accounts queries
* Update ProfileCard to use the profile shadow cache and useModerationOpts
* Update blocked accounts and muted accounts screens
* Refactor first onboarding step
* Replace old FeedSourceCard
* Clean up CustomFeedEmbed
* Remove discover feeds model
* Refactor ProfileFeed screen
* Remove useCustomFeed
* Delete some unused models
* Rip out more prefs
* Factor out treeView from thread comp
* Improve last commit
* Profile tabs WIP
* Refactor the profile screen to use react-query (WIP)
* Add the profile shadow and get follow, mute, and block working
* Cleanup
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* Move broadcast channel to lib
* Refactor view/com/post/Post and remove temporary 2 components
* Add useModerationOpts hook
* Refactor notifications to use react-query
* Fix: only trigger updates in useModerationOpts when the values have changed
* Implement unread notification tracking
* Add moderation filtering to notifications
* Handle native/push notifications
* Remove dead code
---------
Co-authored-by: Eric Bailey <git@esb.lol>
* Refactor lists queries to react-query
* Delete old lists-list model
* Implement list, list-members, and list-memberships react-queries
* Update CreateOrEditList modal
* First pass at my-follows and actor-autocomplete queries
* Update ListAddUserModal to use new queries, change to ListAddRemoveUsersModal
* Update UserAddRemoveLists modal
* Remove old TODO
* Fix indent, autocomplete query
* Add a todo
---------
Co-authored-by: Eric Bailey <git@esb.lol>
* Add initial preferences query, couple mutations
* Remove unused
* Clean up labels, migrate getModerationOpts
* Add birth date handling
* Migrate feed prefs
* Migrate thread view prefs
* Migrate homeFeed to use existing key name
* Fix up saved feeds in response, no impl yet
* Migrate saved feeds to new hooks
* Clean up more of preferences
* Fix PreferencesThreads load state
* Fix modal dismissal
* Small spacing fix
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* Revert "Pull animated scroll handler down from pager"
This reverts commit ecebb78e40148b9160f832d26ada1d366551b645.
* Only handle onScroll for current page
* Add post and post-thread queries
* Update PostThread components to use new queries
* Move from normalized cache to shadow cache model
* Merge post shadow into the post automatically
* Remove dead code
* Remove old temporary session
* Fix: set agent on session creation
* Temporarily double-login
* Handle post-thread uri resolution errors
* Disable existing code that toggles shell
* Make shell mode a float
* Translate based on the gesture
* Track header and footer heights
* Add web support
* Fix types and cleanup
* Add back isScrolled logic
* Add comments
* install and setup lingui
* setup dynamic locale activation and async loading
* first pass of automated replacement of text messages
* add some more documentaton
* fix nits
* add `es` and `hi`locales for testing purposes
* make accessibilityLabel localized
* compile and extract new messages
* fix merge conflicts
* fix eslint warning
* change instructions from sending email to opening PR
* fix comments
* Add persistent state provider
* Catch write error
* Handle read errors, update error msgs
* Fix lint
* Don't provide initial state to loader
* Remove colorMode from shell state
* Idea: hook into persisted context from other files
* Migrate settings to new hook
* Rework persisted state to split individual contexts
* Tweak persisted schema and validation
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* WIP
* Add shell state
* Integrate new shell state for drawer and minimal shell mode
* Replace isDrawerSwipeDisabled
* Split shell state into separate contexts to avoid needless re-renders
* Fix typo
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* Defer showing pager content until its header settles
* Introduce the concept of headerOnlyHeight
* Keep headerOnlyHeight in state, make headerHeight derived
* Hide content until *both* header (only) and tabbar are measured
* Hide tabbar to read its layout earlier
* Give consistent keys to pages
* Add lists screen
* Update Lists screen and List create/edit modal to support curate lists
* Rework the ProfileList screen and add curatelist support
* More ProfileList progress
* Update list modals
* Rename mutelists to modlists
* Layout updates/fixes
* More layout fixes
* Modal fixes
* List list screen updates
* Update feed page to give more info
* Layout fixes to ListAddUser modal
* Layout fixes to FlatList and Feed on desktop
* Layout fix to LoadLatestBtn on Web
* Handle did resolution before showing the ProfileList screen
* Rename the CustomFeed routes to ProfileFeed for consistency
* Fix layout issues with the pager and feeds
* Factor out some common code
* Fix UIs for mobile
* Fix user list rendering
* Fix: dont bubble custom feed errors in the merge feed
* Refactor feed models to reduce usage of the SavedFeeds model
* Replace CustomFeedModel with FeedSourceModel which abstracts feed-generators and lists
* Add the ability to pin lists
* Add pinned lists to mobile
* Remove dead code
* Rework the ProfileScreenHeader to create more real-estate for action buttons
* Improve layout behavior on web mobile breakpoints
* Refactor feed & list pages to use new Tabs layout component
* Refactor to ProfileSubpageHeader
* Implement modlist block and mute
* Switch to new api and just modify state on modlist actions
* Fix some UI overflows
* Fix: dont show edit buttons on lists you dont own
* Fix alignment issue on long titles
* Improve loading and error states for feeds & lists
* Update list dropdown icons for ios
* Fetch feed display names in the mergefeed
* Improve rendering off offline feeds in the feed-listing page
* Update Feeds listing UI to react to changes in saved/pinned state
* Refresh list and feed on posts tab press
* Fix pinned feed ordering UI
* Fixes to list pinning
* Remove view=simple qp
* Add list to feed tuners
* Render richtext
* Add list href
* Add 'view avatar'
* Remove unused import
* Fix missing import
* Correctly reflect block by list state
* Replace the <Tabs> component with the more effective <PagerWithHeader> component
* Improve the responsiveness of the PagerWithHeader
* Fix visual jank in the feed loading state
* Improve performance of the PagerWithHeader
* Fix a case that would cause the header to animate too aggressively
* Add the ability to scroll to top by tapping the selected tab
* Fix unit test runner
* Update modlists test
* Add curatelist tests
* Fix: remove link behavior in ListAddUser modal
* Fix some layout jank in the PagerWithHeader on iOS
* Simplify ListItems header rendering
* Wait for the appview to recognize the list before proceeding with list creation
* Fix glitch in the onPageSelecting index of the Pager
* Fix until()
* Copy fix
Co-authored-by: Eric Bailey <git@esb.lol>
---------
Co-authored-by: Eric Bailey <git@esb.lol>
* Remove cropped area in Edit profile screen iOS
* Hide cancel button when saving changes in EditProfile
* Disable fadeOut animation cancel button for web in EditProfile screen
Since react-native-reanimated is not configured for web support (https://docs.swmansion.com/react-native-reanimated/docs/2.x/fundamentals/web-support/), we are enabling fade out animation for iOS and android solely
* Copypaste UserAvatar to EditableUserAvatar
* Swap usages with onSelectNewAvatar to EditableUserAvatar
* Split prop types into UserAvatarProps and EditableUserAvatarProps
* Remove dead branches from EditableUserAvatar
* Remove dead branches from UserAvatar
* upgrade sentry to support profiling monitoring
* remove console logs in production builds
* feeds tab bar and bottom bar animation centralized
* refactor FeedPage out of Home
* add script to start in production mode
* move FAB inner to reanimated
* move FABInner back to `Animated` RN animation
* add perf commands
* add testing with Maestro and perf with Flashlight
* fix merge conflicts
* fix resourceClass name in eas.json
* fix onEndReachedThreshold in Feed
* memoize styles
* go back to old styling for LoadLatestBtn
* remove reanimated code from useMinimalShellMode
* move shell animations to hook/reanimated for perf
* fix empty state issue
* make shell animation feel smoother
* make shell animation more smooth
* run animation with autorun
* specify keys for tab bar properly
* remove comments
* remove already imported dep
* fix lint
* add testing instructions
* mock sentry-expo for jest
* fix jest mocks
* Fix the load-latest button on desktop and tablet
* Fix: don't move the FAB in tablet mode
* Fix type error
* Fix tabs bar positioning on tablet
* Fix types
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* Add top inset for profile preview to match target screen
* Avoid flicker by waiting for profile screen navigation
* Fix glimmer to align with the content
* A more reliable (but non-scientific) fix for the flash
* Lower the timeout
* Update testrunner to use new dev-env
* Fix label testcase
* Vendor the dev-infra scripts from the atproto repo for the dev-env server runner
* Bump detox to fix the ios sim control issue
* Use iphone 15 pro for tests
* Ensure the reminders never trigger during tests
* Skip the shell tests due to a crash bug with detox and the drawer
* Update follows cache to maintain some user info
* Prioritize follows in composer autocomplete
* Clean up logic and add new autocomplete to search
* Update follow hook
* Fix: improve the 'end of feed' detection condition
* Fix the feeds link on mobile in the empty state
* Align the following empty state better on web
* Dont autofocus the search input in the search tab
* Fix the error boundary render
* Add 'end of feed' CTA to following feed
* Reduce the default feeds to discover now that we have feed-selection during onboarding
* Fix case where loading spinner fails to stop rendering in bottom of feed
* Fix: dont show loading spinner at footer of feed when refreshing
* Fix: dont fire reminders during onboarding
* Optimize adding feeds and update to mirror the api behaviors more closely
* Use the lock in preferences to avoid clobbering in-flight updates
* Refresh the feed after onboarding to ensure content is visible
* Remove the now-incorrect comment
* Tune copy
- Replaced `useWebMediaQueries().isDesktop` with `isWeb` in `DesktopWebTextLink` component to fix inconsistent behavior due to media query changes.
- `isWeb` doesn't rely on media queries, offering stable judgement and avoiding fluctuation when adjusting the browser window.
* Add link warning modal when URLs do not match their text
* Simplify the misleading link case for clarity
* Fix typecheck
* fix dark mode
* Give a stronger visual indication of the root domain in the link warning
* More rigorous URL mismatch logic
* Remove debug
---------
Co-authored-by: Ansh Nanda <anshnanda10@gmail.com>
* Refactor `useOnMainScroll` function to use responsive device detection
- Replace static `isDesktopWeb` with `useWebMediaQueries` hook to enable dynamic device type detection.
- Create `useDeviceLimits` hook to dynamically determine `DY_LIMIT_UP` and `DY_LIMIT_DOWN` based on device type.
- Update dependency arrays for the `useCallback` hooks to include new dynamic variables.
* Refactor styles to be responsive to device type
- Create `useStyles` hook that generates styles object based on device type detected from `useWebMediaQueries`.
- Replace static styles object with dynamic styles object generated from `useStyles` hook in components.
- This allows `paddingLeft` values for 'ul' and 'ol' styles to adapt to device type dynamically.
- This allows `maxWidth` values for 'metaItem'' styles to adapt to device type dynamically.
* Remove `isDesktopWeb` in favor of `useWebMediaQueries().isDesktop`
* Refactor `SplashScreen` component for responsive design
* Revision based on review results
* Fix isNative check
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* quick switch menu
* Some small tweaks and fixes to the account switch modal
* Factor out the account switcher logic to a hook
* Add haptic feedback on account switcher open
* Fix bad merge
---------
Co-authored-by: Samuel Newman <mozzius@protonmail.com>
* Don't automatically mention users with invalid handles
* don't mention when using did urls
* resolve profile from cache
* a little clearer
---------
Co-authored-by: Samuel Newman <mozzius@protonmail.com>
* move content languages to screen
* add dropdown library, style primary lang select
* update settings button
* show selected langauges in button
* use primary language in translator link
* update copy
* lint
* Prefilter the mergefeed to ensure a better mix of following and custom feeds
* Test suite improvements & tests for the mergefeed (#1499)
* Disable invite codes test for now
* Update test sim to latest iphone
* Introduce TestCtrls driver
* Add mergefeed tests
* Bold the saved feeds on mobile
* Improve the saved feeds loading state
* Add soft reset handler to feeds page
* Show feed descriptions in profile listing
* Add an 'about this feed' modal
* Fix type assertion
* Add tree-view experiment to threads
* Fix typo
* Remove extra minimalshellmode call
* Fix to parent line rendering
* Fix extra border
* Some ui cleanup
* upgrade api package
* add RecommendedFollows as a step in onboarding
* add list of recommended follows from suggested actor model
* remove dead code
* hoist suggestedActors into onboarding model
* add comments
* load more suggested follows on follow
* styling changes
* add animation
* tweak animations
* adjust styling slightly
* adjust styles on mobile
* styling improvements for web
* fix text alignment in RecommendedFollows
* dedupe inserted suggestions
* fix animation duration
* Minor spacing tweak
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com> and Eric Bailey <git@esb.lol>
* 🐛 Handle middle mouse click on feed list items
* ♻️ Refactor the event listener and turn it into a dedicated hook for web
* 🧹 Cleanup unnecessary Link changes
* Fix import
* Create native version of useAuxClick
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* Fix error state for recommended feeds
* Handle failure to set default feeds more safely
* Dont return undefined within react-query
* Update yarn.lock
* Feeds navigation on right side of desktop (#1403)
* Remove home feed header on desktop
* Add feeds to right sidebar
* Add simple non-moving header to desktop
* Improve loading state of custom feed header
* Remove log
Co-authored-by: Eric Bailey <git@esb.lol>
* Remove dead comment
---------
Co-authored-by: Eric Bailey <git@esb.lol>
* Redesign feeds tab (#1439)
* consolidate saved feeds and discover into one screen
* Add hoverStyle behavior to <Link>
* More UI work on SavedFeeds
* Replace satellite icon with a hashtag
* Tune My Feeds mobile ui
* Handle no results in my feeds
* Remove old DiscoverFeeds screen
* Remove multifeed
* Remove DiscoverFeeds from router
* Improve loading placeholders
* Small fixes
* Fix types
* Fix overflow issue on firefox
* Add icons prompting to open feeds
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* Merge feed prototype [WIP] (#1398)
* POC WIP for the mergefeed
* Add feed API wrapper and move mergefeed into it
* Show feed source in mergefeed
* Add lodash.random dep
* Improve mergefeed sampling and reliability
* Tune source ui element
* Improve mergefeed edge condition handling
* Remove in-place update of feeds for performance
* Fix link on native
* Fix bad ref
* Improve variety in mergefeed sampling
* Fix types
* Fix rebase error
* Add missing source field (got dropped in merge)
* Update find more link
* Simplify the right hand feeds nav
* Bring back load latest button on desktop & unify impl
* Add 'From' to source
* Add simple headers to desktop home & notifications
* Fix thread view jumping around horizontally
* Add unread indicators to desktop headers
* Add home feed preference for enabling the mergefeed
* Add a preference for showing replies among followed users only (#1448)
* Add a preference for showing replies among followed users only
* Simplify the reply filter UI
* Fix typo
* Simplified custom feed header
* Add soft reset to custom feed screen
* Drop all the in-post translate links except when expanded (#1455)
* Update mobile feed settings links to match desktop
* Fixes to feeds screen loading states
* Bolder active state of feeds tab on mobile web
* Fix dark mode issue
---------
Co-authored-by: Eric Bailey <git@esb.lol>
Co-authored-by: Ansh <anshnanda10@gmail.com>
* add React Query and hook up to existing functionality
* wire in remote data, add error message
* remove hard-coded feeds
* oops fix logic
* add loading state
* fix loading on mobile
---------
Co-authored-by: Eric Bailey <git@esb.lol>
* 🗺️ fix an issue where web devices that see the Drawer couldn't access Profile from said Drawer
* fix routes on web
* handle profile button active state
* add hack for web navigation
* fix comment
---------
Co-authored-by: Micah Maligie <kerosuppi@gmail.com>
* Update time.ts to handle very small or negative time differences
Right now, posts can appear to be from the future with a negative time difference (i.e. -3s appears). This change defines 'NOW' as less than 5 seconds old, and returns 'now' in that case.
It's not clear how localisation is handled - this may need translation.
* Add test for 'now' in time/ago(...)
Add tests for ago() for right now (i.e. 'now') and 10s ago to ensure the seconds case is still tested
Fixes#1263
Previously, opening the crop tool had 1:1 selected by default. So if you opened it and pressed Done without changing anything, it would format the image as 1:1.
After this change, None is selected by default. So if you open the crop tool and press Done without changing anything, nothing will change.
* update to expo 49
* update expo-camera to fix console erorrs
* run doctor again
* fix ts errors
* patch @sentry/react-native
Getting `cannot read property 'ignoreLogs' of undefined` in this file.
Ironically, this may be a cyclical imports problem. LogBox isn't enabled
in production, so this patch should only affect dev/test.
* fix type error
* reinstall newer reanimated
* pin expo-dev-client to fix reanimated dev-build issue
* fix type errors, fix bad conflict res
* Fix to notifications badge z-index on desktop
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* Move most responsive queries to the hook
* Fix invalid CSS value
* Fixes to tablet render of post thread
* Fix overflow issues on web
* Fix search header on tablet
* Fix QP margin in web composer
* Fix: only apply double gutter once to flatlist (close#1368)
* Fix styles on discover feeds header
* Fix double discover links in multifeed
* move `PreferencesHomeFeed` to a screen instead of a modal
* add web route for home feed preferences
* upgrade `@miblanchard/react-native-slider` to fix lint
* fix web route naming
* fix desktop web styling
* add `react-native-slider` mock
* Default isAdultContentEnabled to false on all devices.
The original intent of setting the default based on the device was
to make the maximally-permissive choice. It turns out this was a
mistake as it created sync issues between devices; users would be
confused by the lack of congruity between them. We have to go with
false by default to ensure sync is retained.
* Update preferences model to use new sdk api
* Delete dead code
* Dont show the iOS adult content warning in content filtering settings if adult content is enabled
* Bump @atproto/api@0.6.8
* Codebase style consistency
* use cursor for post cards
* ignore type error
* handle meta keys on non native links
(cherry picked from commit daccafea0b7ab21af6572767e496d20f32ead353)
* remove cursor on non-post notifications, not quite right
* Simplify link handling
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* defer loading of feeds until visible
* Fix: use existing hasLoaded
* Fix: dont query for latest during initial load
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* add emoji-mart package for emoji dropdown picker
* remove emoji picker modal
* load emoji mart data not as part of the main bundle
* remove @emoji-mart/data
* setup emoji insertion with events
* get emoji data from local static assets
* close emoji picker after one emoji has been inserted
* Switch emoji picker trigger to an icon
* Update emoji-mart-data.js
* make grabbing emoji data work on more browsers
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* allow toggling off/on multiple from main composer lang menu
* fix dropdown styles for long labels
* udpate model to use new string field
* update language UI
* save langs to history on submit
* remove edit
* clean up use new fields
* default to deviceLocales
* fix default valu
* feedback
* use radio icon
* add likes tab
(cherry picked from commit 6c5ffd964ca0b185ddfc37088d82712a006a1163)
* only show Likes tab to authenticated user
(cherry picked from commit ecc1254411d760158b6d7a4c5f05d940db872dfc)
* Bump @atproto/api@0.6.5
* fix types
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* add title attr to text text links
* Revert "add title attr to text text links"
This reverts commit c028cd184efd3b2788d8f46134eecf521e5d7b07.
* use css tooltips
* add to expanded post state
* handle theming
* add to bskyweb
The tiptap useEditor() hook creates an awkward challenge for passing
event handlers into its plugins and native events. By introducing a
memoized editor, we should be able to shuttle events out of tiptap
without retriggering the useEditor hook. The emitter can then change
its registered handlers with each state update.
* Don't insert a newline on cmd+entrl (close#1173)
* Don't linkify selected text on url-paste (close#1149)
* Disable the adult content controls if there is no media on the post (close#1169)
* Modify toShortUrl() to always include the full domain
* Shorten links in the composer to save on characters
* Apply some limits to the link card suggester
* ✨ Repupose report post modal and re-use for list reporting
* ✨ Allow reporting a feed generator
* ✨♻️ Refactor report modal into one shared component for reporting different collections
* ✅ Adjust report option selector in tests
* ✅ Add test for list reporting
* ♻️✨ Refactor reason options and add options for list and feedgen
* 🧹 Cleanup remaining todo
* Fix to mutelist react keys
* Fix regression from rebase
* Improve customfeed mobile header
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* add media tab
* fix loading state
* cleanup
* update naming
* upgrade api package
* fix load state
* add scroll view to tabs
* fix overflow on mobile web
* Add self-label modal
* Use the shield-exclamation icon consistently on post moderation
* Wire up self-labeling
* Bump @atproto/api@0.6.0
* Bump @atproto/dev-env@^0.2.3
* Add e2e test for self-labeling
* Fix types
* First pass moving to the new labeling sdk (it compiles)
* Correct behaviors around interpreting label moderation
* Improve moderation state rendering
* Improve hiders and alerts
* Improve handling of mutes
* Improve profile warnings
* Add profile blurring to profile header
* Add blocks to test cases
* Render labels on profile cards, do not filter
* Filter profiles from suggestions using moderation
* Apply profile blurring to ProfileCard
* Handle blocked and deleted quote posts
* Temporarily translate content filtering settings to new labels
* Fix types
* Tune ContentHider & PostHider click targets
* Put a warning on profilecard label pills
* Fix screenhider learnmore link on mobile
* Enforce no-override on user avatar
* Dont enumerate profile blur-media labels in alerts
* Fixes to muted posts (esp quotes of muted users)
* Fixes to account/profile warnings
* Bump @atproto/api@0.5.0
* Bump @atproto/api@0.5.1
* Fix tests
* 1.43
* Remove log
* Bump @atproto/api@0.5.2
* Update the ProfilePreview to use a swipe-up to navigate
* Use the profile cache to optimize load performance
* Hack to align the header in the profile preview against the screen view
* Fix profiles cache logic to ensure cache is used
* Fix dark mode on profile preview
* Use a post and handle-resolution cache to enable quick postthread loading
* Fix positioning of thread when loaded from cache and give more visual cues
* Include parent posts in cache
* Include notifications in cache
* fix comments
* add zeego package
* get basic native dropdown working
* add separator and icon components
* refined native dropdown component
* add android build properties to app.json
* move `PostDropdownBtn` to its own component
* fix selectors issue
* move `PostDropdownBtn` to its own component
* fix hitslop
* fix post dropdown hitslop
* fix android dropdown icons
* move `UserAvatar.tsx` to native dropdown
* use native dropdown in `ProfileHeader.tsx`
* use native dropdown in `PostThreadItem.tsx`
* use native dropdown in `UserBanner.tsx`
* use native dropdown in `CustomFeed.tsx`
* replace `testId` with `testID` (which is what is used everywhere)
* move `Settings.tsx` to use native dropdown
* create jest mocks for zeego
* create jest mock for `zeego/dropdown-menu`
* web styles for native dropdown
* remove example native dropdown
* adjust web styles
* fix propagation
* fix pressable in `Settings.tsx`
* animate dropdown on web
* add keyboard nav and hover styles
* add hitslop to constants
* add comments to NativeDropdown component
* temporarily removed android icons
* add testID to PostDropdownBtn
* add testID back to all NativeDropdown button implementations
* add postDropdownBtn testID
* add testID to dropdown items
* remove testID from dropdown menu item
* refactor home-screen tests for native dropdown
* refactor profile-screen tests for native dropdown
* refactor thread-muting tests for native dropdown
* refactor thread-screen tests for native dropdown
* fix dropdown color for post dropdown button
* remove icons from android dropdown menu
* fix `create-account.test.ts`
* fix `invite-codes.test.ts`
* 💄 Hide Add to List option on own profile
* ✨ Remove Lists tab when last list is removed
* ✨ Add listener to list delete on profile screen
* ✨ Only show save changes in list modal when changes are made
* Update profile link construction to support handle.invalid
* Update list links to support using handles
* Use did for isMe check to ensure invalid handles dont distort the check
* Shift the red (error) colors away from the pink spectrum
* Add ThemedText helper component
* Add sanitizedHandle() helper to render invalid handles well
* Fix regression: only show avatar in PostMeta when needed
* Restore the color of likes
* Remove users with invalid handles from default autosuggests
* add comments to step 1-3
* add onboarding screen
* add analytics for onboarding tracking
* fix useEffect
* change text
* change icon size
* put onboarding into bottom sheet modal instead of react navigation
* wip
* Simplify the type validation
* Fix: only trigger onboarding modal when account creation succeeds
* Add the 'session-ready' event which fires when the new session is stable
* Use the 'session-ready' event to trigger the onboarding modal
* update copy
* update copy
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* add TimeElapsed util component, integrate into PostThreadItem
* integrate into posts
* use consistent naming
* use mobx and single interval for TimeElapsed
* Fix cursor not being a pointer on profile back button
* Change TouchableOpacity to Pressable
* switch back to TouchableWithoutFeedback
---------
Co-authored-by: Ansh Nanda <anshnanda10@gmail.com>
* Fix: use more reliable navigation method
* Fix: show lightbox over the active modal
* Fix: close the profile preview on navigation
* Factor out UserPreviewLink and add preview behavior to notifications
* Fix postmeta overflow on web
* Fix lint
* Update postmeta to put the timestamp on the right side on mobile
* Drop the two-line PostMeta mode
* Add ProfilePreview modal
* Tune PostMeta to give the best behavior possible for a given platform
* Remove old showFollowBtn attributes
* Fix style issue
* Switch the follow button in the profile header to use the inverted color for consistency with the rest of the app
* Fix lint
* Fix darkmode
* Tune the profile preview footer
* Better analytics choice
* use Touchables from react-native-gesture-handler
* upgrade `react-native-gesture-handler` to latest version
* add FixedTouchableHighlight for android
* add workaround comment
* wait for animations to complete before loading data
* downgrade RNGH back to the version we had
* Replace the ImageHider blurring effect with a simpler and more reliable card
* A few improvements to ImageHider layout
* Simplify the ImageHider a bit more
* Small web layout tweak
* Clarify hate-group moderation as it's currently used
* Update src/lib/labeling/const.ts
Co-authored-by: Emily Liu <emilyliu7321@gmail.com>
---------
Co-authored-by: Ansh <anshnanda10@gmail.com>
Co-authored-by: Emily Liu <emilyliu7321@gmail.com>
* Fix composer character-counter bouncing around UI elements
* Fix composer toolbar padding when keyboard is dismissed on iOS
* Use the full name of the language in the composer footer
* Add headings to the DropdownButton
* Update the composer language control to use a simpler dropdown
* Fix lint
* Add translate link to Post component used in notifications
* Fix lint
* Add the new zendesk feedback form URL
* Dont wrap handle or display name in the drawer
* Add help link
* Tune drawer footer layout
* Type fixes
* make helpdesk urls more composable for future
* fix typo
---------
Co-authored-by: Ansh Nanda <anshnanda10@gmail.com>
* Added instructions for .well-known method
* Factor out SelectableBtn
* Rework the ChangeHandle modal to be a little clearer
* Fix lint
* Fix desktop layout
---------
Co-authored-by: Haider Ali Punjabi <haiderali@cyberservices.com>
Co-authored-by: Haider Ali Punjabi <haideralipunjabi@hackesta.org>
* Add alt text validation option to user preferences
* Fix typos/linting issues
* Update accessibility setting to match styles
* Update the required alt text reminder to go away once it's added
---------
Co-authored-by: Emma Fuller <emma@emmafuller.dev>
* Fix: include alt text on the web lightbox image
* a11y: Dont read the 'ALT' label
* a11y: remove a wrapper behavior from posts
This appears to have been introduced with the goal of creating meta
actions on posts, but the behavior seems counter-productive. The
accessibility inspector was unable to access individual items within
the post and therefore most content was simply skipped.
There may be a way to support the post actions without losing the
ability to access the inner elements but I couldnt find it. -prf
* a11y: apply alt tags to image wrappers so they get read
* a11y: set Link accessibilityLabel to the title if none set
* a11y: skip the SANDBOX watermark
* a11y: improve post meta to not read UI and give a useful date
* ally: improve post controls
* a11y: add labels to lightbox images on mobile
* fix types
* catch permission errors when saving image to album
* Save photos to media library alone (not an album)
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* add separate scroll up/down thresholds to prevent rapid state changes
* set `DY_LIMIT_DOWN` to 150
* Use a different scroll dy limit on web/mobile
---------
Co-authored-by: Sehyun Chung <sehyun.chung@icloud.com>
* Add locale helpers for narrowing languages
* Add a translate link to posts in a different language
* Update language filtering to use narrowing when multiple declared
* Fix a few more RTL layout cases
* Fix types
* Fix: enable font scaling in the composer text input
* Fix: cancel button in search no longer wraps
* Fix: report modals no longer clip off the bottom with scaled fonts
* Fix scrolling on android
* Allow wrapping in dropdown items until we can handle proper sizing
* export track function from analytics.tsx
* fix create account tracking
* fix tracking sign in
* add custom feed events
* fix type errors
* refactor create post event
* add profile follow & unfollow events
* refactor PostsFeedSliceModel into its own file
* refactor PostThreadItemModel into its own file
* reorganize code a lil bit
* refactor post-thread-item to use post-feed-item model under the hood
* add post events
* add post reply tracking
* track custom feed load more
* track list subscribe and unsubscribe
* Add an image preview in the alt modal
* Composer: add info about alt text and a green checkmark when done
* Shrink the alt visual indicator a bit so it doesnt obscure the image
* Fix typo
* Fix: avoid requiring multiple tabs to save alt text
* update react-native-screens
* Improve the alt text help tip
* Remove redundant hints
---------
Co-authored-by: Ansh Nanda <anshnanda10@gmail.com>
* replace delete list button text with icon
* fix mute list styling on desktop
* add share button to nav bar on a list
* fix styling when on profile
* bug: add key to ImageHorzList
* clean up code & refactor
* fix styling for ListItems
* create a reusable ListActions component for actions on a list
* remove dead styles
* add keys to ListActions
* add helpers to set list embed
* render list embeds
* fix list sharing on web
* make style prop optional in ListCard
* update `@atproto/api` to `0.3.13`
* add SelectLangBtn
* memoized objects that are created to reduce re-creation on re-render
* add langs when uploading post
* only send the top 3 languages otherwise backend will throw error
* mv ContentLanguagesSettings to folder
* add post languages settings modal and state
* fix typos
* modify feed manip to also check langs label on post
* Fix tests
* Remove log
* Update feed-manip.ts
* Fix syntax errors
* UI tuneups
* Show the currently selected languages in the composer
* fix linting
* Use a bcp-47 matching function
* Fix a duplicate language issue
* Fix web
* Dont include lang in prompt
* Make select language btn an observer
* Keep device languages on top of language selection UIs
* Fix android build settings
* Enforce a max of 3 languages in posts
* Fix tests
* Fix types
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* Update Reanimated API to v3
* Fix failing tests after updating Reanimated
* Include changes from package.json in Reanimated library to patch
* upgrade reanimated to 3.3.0
* remove patch
* upgrade bottom sheet
---------
Co-authored-by: Ansh Nanda <anshnanda10@gmail.com>
* fix desktop window size
* fix desktop window size
* add listener for resize events
* fix when going from mobile to web
* only add eventListener for web
* allow user to add text when reporting post
* add DMCA override
* increase modal size
* fix dark mode text color
* re-organize components
* add details option when reporting account
* hard-code modal size so it works on smaller devices
* fix modal on web
* Remove outline from textarea focus
* Tweak some styles
* Fix lint
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* add 1000ms fallbackToCacheTimeout
* add listener via useOTAUpdate hook and show modal if update is available
* finish expo-updates setup
* setup useOTAUpdate hook
* add 1000ms fallbackToCacheTimeout
* add listener via useOTAUpdate hook and show modal if update is available
* finish expo-updates setup
* setup useOTAUpdate hook
* add OTA updates
* Update build.md
* temporarily disable ota updates
* refactor useOTAUpdate code
* Move suggested follow recommendations to the server
* fix search results color in dark mode
---------
Co-authored-by: Ansh Nanda <anshnanda10@gmail.com>
* Remove extraneous custom-feed health check
* Fixes to custom feed preference sync
* Fix lint
* Remove dead code (client-side suggested posts constructor)
* Enforce the feed-fetch limit in the client if the generator fails to observe the parameter
* Bump the number of items fetched in the multifeed per feed from 5 to 10
* Reset the currently active feed when the pinned feeds change
* Some fixes to icons
* Add a prompt to load latest to the multifeed
* Remove debug
* Remove extraneous custom-feed health check
* Fixes to custom feed preference sync
* Fix lint
* Fix to how preferences are synced to enable membership modifications
* Update Navigation.tsx
Missing If statement within the Deep Linking function that broke the ability to change state to hometab
* Updated the function correctly, I missed a bracket
* format
* add pre-existing home state when unspecified path
* Remove unnecessary log
---------
Co-authored-by: Gai <68623807+that-gai-gai@users.noreply.github.com>
Co-authored-by: that-gai-gai <kgai@protonmail.com>
* Use proxy for fetching link meta
* Remove link meta test due to hitting proxy
* setup different staging and prod proxy URLs
---------
Co-authored-by: Ansh Nanda <anshnanda10@gmail.com>
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* Support arrow key navigation for Lightbox.web.tsx
renames onEscape to onKeyDown
* appease eslint
* appease eslint again
* wrap onPressLeft and onPressRight in useCallback
* feat: add basic visual feedback on Button interaction
* Use a more efficient approach to providing visual feedback
* Fix some lint issues left over from another PR
---------
Co-authored-by: Simek <gosimek@gmail.com>
For any `Screen` that shows on desktop, `title` is "(1) ... - Bluesky"
where "(1)" is the unread notification count.
The titles are unlocalized and the string "Bluesky" is hardcoded,
following the pattern of the rest of the app.
Display names and post content are loaded into the title as effects.
Tested:
* all screens
* screen changes / component mounts/unmounts
* long posts with links and images
* display name set/unset
* spamming myself with notifications, clearing notifications
* /profile/did:... links
* lint (only my changed files), jest, e2e.
New utilities: `useUnreadCountLabel`, `bskyTitle`,
`combinedDisplayName`, `useSetTitle`.
resolves: #626#599
* Use dropdown for web reposting and quote posting
* Remove collateral damage
* Tune the repost dropdown positioning
* Move postctrls into their own folder
* Factor out repost button into native/web build
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* reporting: new anti-social post report option
* reporting: alarm emoji on urgent report option
* reporting: appease 'make lint'
I originally had text on a separate line, but that failed, so I put
text+tags on a line and thought that worked, but failed again? Seems
inconsistent, but trying again.
* Remove emojis and increase report post height
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* Add lists and profilelist screens
* Implement lists screen and lists-list in profiles
* Add empty states to the lists screen
* Switch (mostly) from blocklists to mutelists
* Rework: create a new moderation screen and move everything related under it
* Fix moderation screen on desktop web
* Tune the empty state code
* Change content moderation modal to content filtering
* Add CreateMuteList modal
* Implement mutelist creation
* Add lists listings
* Add the ability to create new mutelists
* Add 'add to list' tool
* Satisfy the hashtag hyphen haters
* Add update/delete/subscribe/unsubscribe to lists
* Show which list caused a mute
* Add list un/subscribe
* Add the mute override when viewing a profile's posts
* Update to latest backend
* Add simulation tests and tune some behaviors
* Fix lint
* Bump deps
* Fix list refresh after creation
* Mute list subscriptions -> Mute lists
* labels: fix 'consentual' typo
This label has never been applied, so safe to just change it.
* labels: new 'nsfl' label, under both porn and gore categories
* labels: new account-security label (always warn)
* labling: re-word spam subtitle
* Identify adult content labels and handle them more specifically
* Change adult content defaults to more conservative settings
* Add an adultcontentenabled override that prohibits access on iOS
* Improve usability of the content hider
* Fix lint
* added ios scheme and intentFilters for deep linking
* added intentFilters for android deep linking
* add .env files to .gitignore
* add autoVerify for android deep links
* Make leftnav elements act as anchor tags (bonus feature in this pr)
* Add screen reset behavior to the desktop left nav
* Move the leftnav link into the text
* Replace the long press on the lightbox with footer controls
* Remove long-press from images in the feed
* Tune the lightbox footer control ui
* Replace the AltImageRead modal with the ability to view all alt text in the lightbox footer
* Tune lightbox footer for iOS
* Add alt text to the web lightbox
* Fix lint
* a11y slight changes
---------
Co-authored-by: renahlee <renahlee@outlook.com>
* Add a content-language preference control
* Update whats hot to only show the selected languages and to refresh on lang pref changes
* Fix lint
* Fix tests
* Add missing accessibility role
* Add keyboard shortcuts: new, escape, and hard break
* Add preferences modal
* Remove code accidentally re-added due to rebase
* Fix incorrect copy and lint
* Put stuff back so diffs are clearer
* Re-add invite codes to settings
* Address comments
* Tune the copy
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* Tune the language filter to accept posts when a determination cant be made
* use j instead of i since i has been declared in upper scope
* use j instead of i since i has been declared in upper scope
* Pass the j man
---------
Co-authored-by: Ansh Nanda <anshnanda10@gmail.com>
* React Native accessibility
* First round of changes
* Latest update
* Checkpoint
* Wrap up
* Lint
* Remove unhelpful image hints
* Fix navigation
* Fix rebase and lint
* Mitigate an known issue with the password entry in login
* Fix composer dismiss
* Remove focus on input elements for web
* Remove i and npm
* pls work
* Remove stray declaration
* Regenerate yarn.lock
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* setup sentry
* add sentry to transformIgnorePatterns to fix jest issues
* update README with sourcemap instructions
* only enable integrations on native
* fix sentry web
* remove testing code
* fix sentry authToken
* Switch over to paul's auth tokens temporarily (lol)
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* Quick fix to prompt
* Add blocked accounts screen
* Add blocking tools to profile
* Blur avis/banners of blocked users
* Factor blocking state into moderation dsl
* Filter post slices from the feed if any are hidden
* Handle various block UIs
* Filter in the client on blockedBy
* Implement block list
* Fix some copy
* Bump deps
* Fix lint
* Add ScreenHider component
* Add blur attribute to UserAvatar and UserBanner
* Remove dead suggested posts component and model
* Bump @atproto/api@0.2.10
* Rework moderation tooling to give a more precise DSL
* Add label mocks
* Apply finer grained moderation controls
* Refactor ProfileCard to just take the profile object
* Apply moderation to user listings and banner
* Apply moderation to notifications
* Fix lint
* Tune avatar & banner blur settings per platform
* 1.24
* Prevent keyboard from blocking alt image modal
* Tune padding of altimage modal on desktop web
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* Switch android to use slide left/right animations on navigation
* Bump the repost icon down by a pixel
* Tune theme colors for contrast and darker bg on darkmode
* Move back handler to a point in the init flow that leads to more consistent capture of events
* Fix image share flow on android
* Fix lint
* Add todo about sharing not available
* Drop the android slide animation because it's too slow
* Fix 'flashes of white' in dark mode android
* create and delete app passwords
* add randomly generated name
* Tweak copy and layout of app passwords
* Improve app passwords on desktop web
* Rearrange settings
* Change app-passwords route and add to backend
* Fix link
* Fix some more desktop web
* Remove log
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* Add alt text support and rework image layout
* Add additional BottomSheet implementation to account for nested Composer modal
* Use mobile gallery layout on mobile web
* Missing key
* Fix lint
* Move altimage modal into the standard modal system
* Fix overflow wrapping of images
* Fixes to the alt-image modal
* Remove unnecessary switch
* Restore old imagelayoutgrid code
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* Refresh or sync notifications when the tab is navigated to
* Fix to bad textnode render
* Speed up initial session load
* Fix lint
* Restore updateSessionState() on session resumption
* Reduce frequency of the notifications sync
* Reduce frequency of home feed polling
* Ensure loading spinner is visible in notifications
* Render notifications loading spinner in the flatlist
* Fixes and performance improvements to notifications
* Render 30+ on notifications if at max
* Fix issue with repeating posts in home feed
* Dont check for unread notifs if we're already at max
* Add cursor to clickable elements
* Add cursor to clickable elements
* Update per comments
* Fix word wrap in notifications
* Center the web login-load screen
* Add hover states on web
* Fix lint
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* add isLikedPressed flag to disallow like counter out of sync
* create revertible helper for updateDataOptimistically
* test implementation
* Update updateDataOptimistically() and apply to reposts
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* add prebuild command to package.json
* add ProfileTab navigator and screen
* add prop to remove back button from profile
* fix MyProfileTabNavigatorParams type
* fix dep array for rendering ProfileHeader
* just added ts-ignore
* enable opening drawer in profile tab
* clean up useNavigationTabState
* clean up code
* fix hideBackButton code flow
* Split image cropping into secondary step
* Use ImageModel and GalleryModel
* Add fix for pasting image URLs
* Move models to state folder
* Fix things that broke after rebase
* Latest -- has image display bug
* Remove contentFit
* Fix iOS display in gallery
* Tuneup the api signatures and implement compress/resize on web
* Fix await
* Lint fix and remove unused function
* Fix android image pathing
* Fix external embed x button on android
* Remove min-height from composer (no longer useful and was mispositioning the composer on android)
* Fix e2e picker
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* Fix web home feed sizing (close#432)
* Fix lint
* Fix positioning of profile not found error
* Fix load latest on mobile
* Fix overflow issues on mobile web (visible in postthread)
* Fix bottom pad on mobile web
* Remove old comment
* Change dark mode borders to be slightly lighter than the bg rather than slightly darker
* Add dark mode styling to web composer
* Fix editprofile darkmode
* add ThemeProvider to App.web.tsx
* make FlatNavigator use themed color
* fix extra padding on top in web
* add observer to App.web.tsx to make it react to theme changes
* fix TS for useColorSchemeStyle
* add dark mode toggle button to web LeftNav
* fix index.web.tsx border colors for web
* Move the darkmode desktop web toggle to the right nav column
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* WIP
* WIP
* Fix header offset on web
* Remove debug
* Fix web mobile feed and FAB layout
* Fix modals on mobile web
* Remove dead code
* Remove ios config that shouldnt be committed now
* Move bottom bar into its own folder
* Fix web drawer navigation and state behaviors
* Remove dark mode toggle from web drawer for now
* Fix search on mobile web
* Fix the logged out splash screen on mobile web
* Fixes to detox simulator
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* Rework notifications to sync locally in full and give users better control
* Fix positioning of load more btn on web
* Improve behavior of load more notifications btn
* Fix to post rendering
* Fix notification fetch abort condition
* Add start of post-hiding by labels
* Create a standard postcontainer and improve show/hide UI on posts
* Add content hiding to expanded post form
* Improve label rendering to give more context to users when appropriate
* Fix rendering bug
* Add user/profile labeling
* Implement content filtering preferences
* Filter notifications by content prefs
* Update test-pds config
* Bump deps
* add android & ios folders to .gitignore
* delete android and ios dirs
* fix android build errors
* fix status bar color
* fix top cutoff on composer in android
* fix weird whitespace issue in post
* fix greyed out header android
* fix main feed getting cut off android
* fix swiping on main feed
* fix profile tabs switching on android
* A few app.json config items for iOS
* Update app.json for bgfetch
* make swiping work on android
* make splash screen cover
* add eas.json
* fix image container on android
* fix android status bar color
* use expo-splash-screen instead of react-native-splash-screen
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* Add mobile UIs for invite codes
* Update invite code UIs for web
* Finish implementing invite code behaviors (including notifications of invited users)
* Bump deps
* Update web right nav to use real data; also fix lint
* 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
* Fix click targets for post controls (#332)
* Add padding to the right side of the post controls
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* 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
* 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
* 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
* 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
* Fix dark mode rendering of 'follows you' pill
* Fix the darkmode coloring of the PTR
* Fix dark mode styles in dns instructions
* Only lint the src dir
* 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
* 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
* 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
* Bring back the FAB and move compose out of the footer
* Increase the touch target sizes of the header back btns (close#279)
* Trigger 'load more' sooner (close#280)
* 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
* 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)
* 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
* Remove old tab controls from the mobile shell
* Add 'compose' and 'profile' to the footer; remove the FAB
* Fix lint
* Tune the footer icons
* Tune the 'current' state of footer icons
* Add 2xl text styles
* Tune the footer icons a bit more
* Fix lint
* More footer tuning
* 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>
* 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>
* 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
* 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
* 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()
* 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
* 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
* 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
* Increase left margin on feed and embiggen avis
* Decrease feed margins a bit
* Tweak post bottom margin
* Update loading placeholder to match feed
* Update 'view full thread' positioning
* Update postthread to match feed layout
* Update notifications and individual post to match new layout
* Add missing aborted check
* 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