* Copy FeedViewPost into FeedSliceItem
* Explicitly construct feed slice items by copying known fields
* Type rootItem as FeedViewPost for now
Mergefeed logic relies on that.
* Unify reason and __source for slice items
* Move feedContext out of FeedSliceItem
* Remove slice.isFlattenedReply
* Remove unnused slice.ts
* Inline slice.isFullThread
* Refactor condition for clarity
* Extract slice.includesThreadRoot
* Encapsulate more usages of slice.rootItem into slice
* Rename slice.rootItem so semi-private slice._feedPost
* Move reason into slice
* Simplify slice ctor argument
* Reorder getters to reduce diff
* Make feedContext a getter to reduce diff
* add ffmpeg-kit-react-native
* get select video button + compression working
* up res to 1080p
* add progress component
* move logic out of compressVideo
* (WIP) add lonestar compression
* rework web compression a bit
* mess around with adding a thumbnail
* 3mbps
* replace
* use 3mbps
* add expo-video
* remove unnecessary try/catch
* rm ToastAndroid
* fix web
* wrap lazy component in suspense
* gate video select button
* rm web compression
* flip sign
* remove expo-video from web
* review nits
* add video picker permissions + rm temp buttons
* add ffmpeg-kit-react-native
* replace
* hls-capable player
* start trying to hoist up video player instance
* hoist video player and move things around
* always show native controls
* fix controls on expo video android
* gate temp video player in feed
* rm IS_DEV, doesn't do what I thought it did
* use __DEV__ instead
---------
Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
Co-authored-by: Hailey <me@haileyok.com>
* fix web
* show back button on tablet for certain settings screens
* move headers to inside of scrollview
---------
Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
* set height to 20+(2*hairline)
* animate switch
* Try to align on line height across platforms
* Use border 1px
---------
Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
Co-authored-by: Eric Bailey <git@esb.lol>
* use appropriate icons for toasts
* use info for session expiry
* tweak size
* message -> safeMessage
---------
Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
* replace unused `followers` prop with social proof
* Introduce 'minimal' version
* Gate social proof one explore page, fix space if no desc
* Use smaller avis for minimal
---------
Co-authored-by: Eric Bailey <git@esb.lol>
* header display name rtl support
* highlighted post rtl
* move `NON_BREAKING_SPACE` to an external constant
* rtl support in search dropdown
* profile card rtl
* old profile card rtl
* hover card
* wizard list card
* new chat
* account card
* chat header
* clean up notifications
* just force LTR on meta display name
* use a scale of `1` on QR code inner logo
* remove logo entirely
* Revert "remove logo entirely"
This reverts commit dee57f48c7bf5e3b5765631b8cbbd1c746e9c884.
* use scale of 0.95
* Update French localization
* écriture inclusive for other usage of `amis`
* add one more string
* Apply suggestions from code review
Co-authored-by: Stanislas Signoud <signez@stanisoft.net>
* Update revision date
* translate new strings
* Apply suggestions from code review
Co-authored-by: Stanislas Signoud <signez@stanisoft.net>
---------
Co-authored-by: Stanislas Signoud <signez@stanisoft.net>
* Use user action and viewing history to inform suggested follows
* Remove dynamic spreads
* Track more info about seen posts
* Add ranking
---------
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
* handle off screen visibility observer.
* Revert "handle off screen visibility observer."
This reverts commit e499ea0ed66b31964f79261b41f58a288b0cdb6f.
* key ftw
* Remove special case
---------
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
* Add the animated checkmark svg
* Add progress guide list and task components
* Add ProgressGuide Toast component
* Implement progress-guide controller
* Add 7 follows to the progress guide
* Wire up action captures
* Wire up progress-guide persistence
* Trigger progress guide on account creation
* Clear the progress guide from storage on complete
* Add progress guide interstitial, put behind gate
* Fix: read progress guide state from prefs
* Some defensive type checks
* Create separate toast for completion
* List tweaks
* Only show on Discover
* Spacing and progress tweaks
* Completely hide when complete
* Capture the progress guide in local state, and only render toasts while guide is active
* Fix: ensure persisted hydrates into local state
* Gate
---------
Co-authored-by: Eric Bailey <git@esb.lol>
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
* Add home guided tour (WIP)
* Add web handling of the tour
* Switch to our fork of rn-tourguide
* Bump guided-tour
* Fix alignment on android
* Implement home page tour trigger after account creation
* Add new_user_guided_tour gate
* Add a title line to the tour tooltips
* A11y improvements: proper labels, focus capture, scroll capture
* Silence type error
* Native a11y
* Use FocusScope
* Switch to useWebBodyScrollLock()
---------
Co-authored-by: Eric Bailey <git@esb.lol>
* Use discriminated union
* Integrate interstitials
* Add gates and handling for variants
* Only show interstitials for logged in accounts since flags are based on user ID
* Nit
---------
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
* Add interstitials, component tweaks, placeholders
* Tweak feed card styles
* Port over same fix to ProfileCard
* Add browse more link on desktop
* Rm Gemfile
* Update logContext
* Update logContext
* Add click metric to cards
* Pass through props to ProfileCard.Link
* 2-up grid for profile cards on desktop web
* Add secondary_inverted button color
* Use inverted button color
* Adjust follow button layout
* Update skeleton
* Use round button
* Translate
* New label pills
* Fix type errors, add default case
* Remove negative margin, only works in some places
* Fix alignment edge case
* Add a bit of padding
---------
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
* Change login form to use uncontrolled inputs
* Debounce state updates in account creation to reduce flicker
* Refactor state-control of account creation forms to fix perf without relying on debounces
* Remove canNext and enforce is13
* Re-add live validation to signup form (#4720)
* Update validation in real time
* Disable on invalid
* Clear server error on typing
* Remove unnecessary clearing of error
---------
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
* Extract ListCard from FeedCard
* Export FeedCard.Action and optionally include in ListCard
* Remove list dual usage from most of FeedCard
* Update usages of FeedCard and ListCard
* Add back list purpose logic
* Make Action comp easier to use, clarify list purpose
* Rename Action to SaveButton
* Break up new profile card for easier re-use
* Break things up a bit more
* Add round variant support and other button props
* Handle blocks
* Add Outer export
* Tweak space
* Fix footer messages in StarterPack wizard and updates ja messages
* Updates to minimize diff
* Revert "Updates to minimize diff"
This reverts commit 4d1dfe131a5ffc31fc5e6162dbcc90e77e042734.
* Revert "Fix footer messages in StarterPack wizard and updates ja messages"
This reverts commit 9a90898abc66c281f44696347043ce5da5859d60.
* Fix labels for plurals in starter packs
* Update translations
---------
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
* replace threadgate modal with alf dialog
* add accessibility to selectable
* add aria
* hide spinner once fetched
* add `hasOpenDialogs` value to context
* remove state
* Rm loading state
* Update the threadgate dialog button theming
* Factor out the threadgate editor and add editing to post views
* Mark messages for localization
* Use colors from mute dialog
* Remove unnecessary effect
* Reset state on dialog dismiss
* Clearer CTA
* Fix bugs
* Scope keyboard fix
* Rm getAreDialogsActive (no longer needed)
---------
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
Co-authored-by: Eric Bailey <git@esb.lol>
Co-authored-by: Samuel Newman <mozzius@protonmail.com>
* Add lists support to FeedCard
* Add useSavedFeeds query, similar to usePinnedFeedInfos
* Integrate into Feeds screen
* Fix alignment on mobile
* Update usages
* Add placeholder loading state
* Handle no feeds state
* Reuse previous data for placeholder
* Staged loading
* Improve staged loading
* Use setQueryData approach to pre-caching
* Add types for a little more safety
* Fix precaching
---------
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
* Rework WhoCanReply controls in threads to blend more nicely
* Fix layout
* Fix post control hitslops
* Move dialog content to separate component
---------
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
* add pref for large alt badge
* add to settings
* do the large badge bit
* Tweak wording
---------
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
* add support for `ListEmptyComponent`, allow `undefined` data
* change `header` and `footer` to be in line with `emptyComponent`
* don't render `onEndReached` or `onStartReached` `Visibility` if empty
* Fix: dont blur parents in threads that embed blocks
* After tapping 'Show hidden replies', show the individual hider cards
* Add shape override to UserAvatar and fix the fallback avi for labelers
* Fix precedence
* Detect shape for DefaultAvatar
---------
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
* Better handle nested conditionals, use renderable items to determine UI
* Better translate
* Fix translation and fix missing case in the process
* Clarify naming
* Add safeguard
* Remove unneeded msg
---------
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
* Clarify intent
* Increase email reminder period to once per day
* Fallback
* Snooze immediately after account creation, prevent showing right after signup
* Fix e2e test exports
* Remove redundant check
* Better simple date generation
* Replace in DateField
* Use non-string comparison
* Revert change to unrelated code
* Also parse
* Remove side effect
* migrate thread mutes
* don't try and clear if not logged in yet
* migrate mutes one at a time
* write before mutating
* only migrate mutes of self posts
* use /** @deprecated */
* shouldLike -> shouldMute