* 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
* Use safe check, check for next page, handle varied lengths
* Fix border width
* Move safe check
* Add font_heavy and use it on the explore page headers
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* Create a testable version of ago() and re-enable the disabled test (#4364)
* Enable the test of ago()
* Use test cases
This puts the input and the expected values next to each other.
* Create dateDiff function
This is a copy of ago(), but with the ability to specify the second date instead of using Date.now().
* Let ago() use dateDiff()
* Move constants close to usage
* Test dateDiff instead of ago
This makes it possible to test the dates without being forced to rely on what the current date is.
The commented out tests do not yet pass. This is fixed in later commits.
* Update dateDiff and enable the remaining tests
* Split up tests, use date-fns as helpers
* Remove old test
* Add long format
* Add hook
* Migrate to hooks
* Delete old code
* Or equal to
* Update comment
---------
Co-authored-by: Jan Aagaard <jan@aagaard.net>