* Initial library setup
* Add docblocks
* Some cleanup
* New storybook
* Playing around
* Remove silly test, use for...in
* Memo
* Memo
* Add hooks example
* Tweak colors, bit of cleanup
* Improve macro handling
* Add some more examples
* Rename for better diff
* Cleanup
* Add nested context example
* Add todo
* Less break more perf
* Buttons, you get the idea
* Fix test
* Remove temp colors
* Add a few more common macros
* Docs
* Perf improvements
* Alf go brrrr
* Update breakpoint handling
* I think it'll work
* Better naming, better code
* Fix typo
* Some renaming
* More complete pass at Tailwind naming
* Build out storybook
* Playing around with curves
* Revert "Playing around with curves"
This reverts commit 6b0e0e5c9d842a2d9af31b53affe2f6291c3fa0d.
* Smooth brain
* Remove outdated docs
* Some docs, fix line-height values, export tokens
* add apple music embed
* add vimeo embed
* add logic for tenor and giphy embeds
* keep it simple, use playerUri for images too
* add gif embed player
* lint, fix tests
* remove links that can't produce a thumb
* Revert "remove links that can't produce a thumb"
This reverts commit 985b92b4e622db936bb0c79fdf324099b9c8fcd8.
* Revert "Revert "remove links that can't produce a thumb""
This reverts commit 4895ded8b5120c4fc52b43ae85c9a01ea0b1a733.
* Revert "Revert "Revert "remove links that can't produce a thumb"""
This reverts commit 36d04b517ba5139e1639f2eda28d7f9aaa2dbfb6.
* properly obtain giphy metadata regardless of used url
* test fixes
* adjust gif player
* add all twitch embed types
* support m.youtube links
* few logic adjustments
* adjust spotify player height
* prefetch gif before showing
* use memory-disk cache policy on gifs
* use `disk` cachePolicy on ios - can't start/stop animation
* support pause/play on web
* onLoad fix
* remove extra pressable, add accessibility, fix scale issues
* improve size of embed
* add settings
* fix(?) settings
* add source to embed player params
* update tests
* better naming and settings options
* consent modal
* fix test id
* why is webstorm adding .tsx
* web modal
* simplify types
* adjust snap points
* remove unnecessary yt embed library. just use the webview always
* remove now useless WebGifStill 😭
* more type cleanup
* more type cleanup
* combine parse and prefs check in one memo
* improve dimensions of youtube shorts
* oops didn't commit the test 🫥
* add shorts as separate embed type
* fix up schema
* shorts modal
* hide gif details
* support localized spotify embeds
* more cleanup
* improve look and accessibility of gif embeds
* Update routing for the external embeds settings page
* Update and simplify the external embed preferences screen
* Update copy in embedconsent modal and add 'allow all' button
---------
Co-authored-by: Hailey <me@haileyok.com>
* Readd discover to default feeds for new users
* Fallback just to discover in home when mergefeed is disabled
* Always provide a cursor with mergefeed (no 'end of feed' condition)
* fix canvas
* fix external link embed styles
* Use the same link-card style on web and mobile and give a little more height on desktop to the card images
* Use dark border on link embeds to match quote post style
* Fix the highlighting behavior on linkcards and quoteposts
---------
Co-authored-by: Hailey <me@haileyok.com>
* rework emoji picker
* dynamic position
* always prefer the left if it will fit
* add accessibility label
* Update EmojiPicker.web.tsx
oops. remove accessibility from fake button
* Disable autocomplete, autocapitalize, and autocorrect in create account login
* Add username textContentType to login to try to prompt password manager more regularly
* Fix type
* Enforce UTC for birthdate picker
* Handle locales
* Remove log
* Add a second snap point to the date input in case text is zoomed
* Guard against bad dates
* Log message
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* handle taps while keyboard is displayed
* dismiss keyboard on drag when searching feeds
* dismiss on drag and persist taps on suggested follows
* add hitslop to clear button
* add hitslop to cancel button
* dismiss keyboard on drag when searching users
* hit slop for feed search clear button
* move import
* Split out web dropdown
* Remove unused
* Remove unused style
* Close on escape
* Reduce chance of opening while scrolling
* Tune web dropdown styles
* Fix type
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* Set up hidden posts persisted state
* Wrap moderatePost
* Integrate hidden posts into moderation
* Complete hide-post behaviors
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* Bump to react-native@0.73, bump expo@next
Includes bumps for all expo deps and dev dependencies. Updates
react-native patch and others, and removes the babel-preset-expo patch.
* Remove duplicate Splash ref
* Bump more deps
* Properly install expo-notifications
* Bump webview dep
* Bump packages according to expo fix; remove pager-view patch as it is no longer needed
* Don't access expo-camera from Web
* Fix crypto dep on web
* Fix some type issues
* Build esnext modules to support dynamic imports
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* Implement embed player for YT, spotify, and twitch
* fix: handle blur event
* fix: use video dimensions for twitch
* fix: remove hack (?)
* fix: remove origin whitelist (?)
* fix: prevent ads from opening in browser
* fix: handle embeds that don't have a thumb
* feat: handle dark/light mode
* fix: ts warning
* fix: adjust height of no-thumb label
* fix: adjust height of no-thumb label
* fix: remove debug log, set collapsable to false for player view
* fix: fix dimensions "flash"
* chore: remove old youtube link test
* tests: add tests
* fix: thumbless embed position when loading
* fix: remove background from webview
* cleanup embeds (almost)
* more refactoring
- Use separate layers for player and overlay to prevent weird sizing issues
- Be sure the image is not visible under the player
- Clean up some
* cleanup styles
* parse youtube shorts urls
* remove debug
* add soundcloud tracks and sets (playlists)
* move logic into `ExternalLinkEmbed`
* border radius for yt player on native
* fix styling on web
* allow scrolling in webview on android
* remove unnecessary check
* autoplay yt on web
* fix tests after adding autoplay
* move `useNavigation` to top of component
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* 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
* 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>
* 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>
* 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
* 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