* remove type assertion
* DMs NUX
* delete button for testing
* tweak styles and copy
* rm log
* style tweaks
* reduce amount of words
* Fix not showing on first load
* Spacing tweaks
---------
Co-authored-by: Eric Bailey <git@esb.lol>
* Make feeds easier to reorder
* Add reorder e2e test
* Tweak feed card to only allow one line (#4002)
---------
Co-authored-by: Eric Bailey <git@esb.lol>
* cleanup the current logic
* add statsig logs
* implement requests for permissions where needed
* oops
* let `addPushTokenListener` handle the token registration
* place new log event type with the other `notifications` type
* place registration next to handler
* more organization
* only call `gate()` if permission is not yet granted
* be more specific to prevent gate pollution
* nit
* make `token` non-optional in `registerToken`
* remove `prevDid`, move `registerPushToken` into `useEffect`
* keep it outside actually
* nit
* download CAR file using AtpAgent instead of building URL
* add loader icon on download car button
* actually save to disk on android
* style nits
* bottom margin nit
* localize toast
* remove fallback so back button works correctly
* keep throwing an error if mime type isn't used
* be more explicit with toasts
* send errors to sentry when encountered
---------
Co-authored-by: Hailey <me@haileyok.com>
* Handle home algo with backwards compat
* Remove todo, fix pwi view
* Simplify filter logic
* Handle edge case
* Handle home algo in FeedSourceCard
* Fix handling of pinned feed if home algo is disabled
* Handle home algo on ProfileFeed screen
* Rename
* Fix pinned feeds key
* Improve perf of pinned feeds with primary algo
* Update statsig API
* Revert unneeded changes
* Support following feed as well
* Better formatting
* Clarify primary algo usage
* Better comment
* Handle saved feed screen edge case
* Restore Feeds sparkle, fix line height
* Move gate call down
* Filter out primary algo from feeds page
* Filter dupe from Feeds screen
* Simplify logic
* Missing following handling
* Hide primary feed setting outside exp
* Revert testing change
* Migrate usePinnedFeedInfos
* Migrate FeedSourceCard
* Migrate Feeds screen
* Migrate SavedFeeds screen
* Handle timeline in feed infos
* Finish migrating ProfileFeed, FeedSourceCard
* Migrate ProfileList
* Finalize mutation hooks
* Allow unsaving lists
* Handle following feed on Feeds screen
* Handle following on SavedFeeds
* Get rid of deprecated interface usages
* Handle no pinned feeds
* Handle no feeds on Feeds screen
* Reuse component on SavedFeeds screen
* Handle no following feed
* Remove primary algo references
* Migrate to new plural APIs
* Remove unused event
* Prevent duplicate keys
* Make handling much more clear
* Dedupe useHeaderOffset
* Filter unknown feed types at source
* Use just following
* Immprove key handling
* Resume from last tab
* Bump sdk
* Revert Gemfile
* Additional protection in FeedSourceCard
* Fix ProfileList save/unsave handling
* Translate
* Translate
* Match existing handling post-signup
* Ensure onboarding results in correct selected feeds
* Some testing tweaks on create/onboarding
* Revert primary algo consderations
* Remove comment
* Handle default feed setting
* Rm unnecessary type cast
* Remove premature gate check
* Remove nullable check in onPageSelecting, assume the pager checks bounds
* Use null for default selected feed
* Rm unrelated change
* Remove the concept of __key__
I don't think this concept is consistent.
It's introduced on FeedSourceInfo which is used both by pinned feeds and by useFeedSourceInfoQuery. Pinned feeds use the pinning ID there. But there is no pinning ID for useFeedSourceInfoQuery. So this means this field is sometimes one thing and sometimes some other thing. That is a decent sign that it shouldn't be on that type at all.
It's not used anywhere except the desktop feed enumeration. It seems reasonable to assume there that we wouldn't want to show the same feed URL twice. (And if it does occur in the array twice, IMO we should solve that at the API level and dedupe it on read or next write.) So I think we should just use the URL in that place. (I used the descriptor, which is equivalent.)
* Dedupe pinned feeds by URL on read
* Filter timeline out of mergefeed sources
* Put FeedDescriptor into FeedSourceInfo
* Group saved info with feed for pins
This removes a loop within a loop within a loop.
* Fix Feeds link on native
---------
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
* Implement onViewableItemsChanged on List.web.tsx
* Introduce onItemSeen to List API
* Add FeedFeedback tracker
* Add clickthrough interaction tracking
* Add engagement interaction tracking
* Reduce duplicate sends, introduce a flushAndReset to be triggered on refreshes, and modify the api design a bit
* Wire up SDK types and feedContext
* Avoid needless function allocations
* Fix schema usage
* Add show more / show less buttons
* Fix minor rendering issue on mobile menu
* Wire up sendInteractions()
* Fix logic error
* Fix: it's item not uri
* Update 'seen' to mean 3 seconds on-screen with some significant portion visible
* Fix non-reactive debounce
* Move methods out
* Use a WeakSet for deduping
* Reset timeout
* 3 -> 2 seconds
* Oopsie
* Throttle instead
* Fix divider
* Remove explicit flush calls
* Rm unused
---------
Co-authored-by: dan <dan.abramov@gmail.com>
* Replace pluralize with plural or Plural
* Replace all pluralize (defined by src/lib/strings/helpers.ts) with plural or Plural (defined by @lingui/macro) to make some UI elements translatable.
* Delete pluralize() and related test.
* Import @formatjs polyfill libraries for plural on ios and android
- ios and andorid: import `@formtjs/intl-locale` and `@formatjs/intl-pluralrules` to polyfill `Intl.Locale` and `Intl.PluralRules` which are used in `plural()` and '<Plural />'.
- update `plural` use in notification messages for better translation.
* Rewrite to pass lint
* Add Catalan plural polyfill
* more replacement
* import zh plural data for zh-CN
* Refactor feed header components (#2964)
* Move home-related files to view/com/home
* Add HomeHeader in front of FeedTabBar
* Move isDekstop check outside FeedsTabBar
* Remove PWI logic from tabbar
* Separate platform-specific layout from shared logic
* Rename Home Feed Prefs to Following Feed Prefs (#2965)
* use `useOpenLink` hook for links in ALF (#2975)
* use `useOpenLink` hook for links in ALF
* web only for `outline`
* increase timeout to 15s (#2958)
* Normalize relative day (#2874)
* fix: normalize relative date
* chore: add comments
* refactor: skip flooring normalized diff
* refactor: let -> const
* fix: get own copy of date to prevent mutating
* refactor: rounding does the same trick
* Add handle validation to create account UI (#2959)
* show uiState errors in the box as well
simplify copy
update ui for only letters and numbers
add ui validation to handle selection
* simplify names
* Fix accidental text-node render
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* Make dim theme dim (#2966)
* Make dim color scheme dim
* Tweaks
* Overall tweaks
* We have to go darker
* Tweak saturation of blues in dim
* Increase contrast on dark-dark mode
* adjust dim
---------
Co-authored-by: Eric Bailey <git@esb.lol>
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
Co-authored-by: Hailey <me@haileyok.com>
* Fix dim mode unread notif color
* use `showControls` to show/hide live text icon on ios (#2982)
* Update .po files
* fix reversed icons in validator 🤦 (#2991)
* Adjust `windowSize` on `PostThread` `FlatList` (#2989)
* adjust window size, cells batching period
* rm batching period change
* Pluralize 'follow(s)'
* Include a space between the msgid count and "follower(s)/following(s)" so the translator can adjust the translated count line to fit within the Drawer.
* pluralie '# following'
* Fix & Update
* Rewrite to use Plural
* rmeove unused import
* When commiting changes, disable 'simple-import-sort' plugin in .eslintrc.js to sync with bluesky-social:main
* Revert simple-import-sort/imports related changes
* Move ProfileHoverCard web to plural util
* Followings -> following
* Add plural following to hovercard
* Followings -> Following
---------
Co-authored-by: Takayuki KUSANO <kusano@tkusano.jp>
Co-authored-by: Takayuki KUSANO <65759+tkusano@users.noreply.github.com>
Co-authored-by: dan <dan.abramov@gmail.com>
Co-authored-by: Hailey <me@haileyok.com>
Co-authored-by: Mary <148872143+mary-ext@users.noreply.github.com>
Co-authored-by: Eric Bailey <git@esb.lol>
* add bundle identifiers to `app-info`
* add them to the `.env.example`
* add environment variables for docker build
* add environment variables for native builds and bundles
* also include the hour in bundle date
* organize app info better in settings
* add new routes with placeholder screens
* add clops list
* add a clop input
* add some better padding to the clops
* some more adjustments
* add rnkc
* implement rnkc
* implement rnkc
* be a little less weird about it
* rename clop stuff
* rename more clop
* one more
* add codegenerated lexicon
* replace hailey's types
* use codegen'd types in components
* fix error + throw if fetch failed
* remove bad imports
* update messageslist and messageitem
* import useState
* replace hailey's types
* use codegen'd types in components
* add FAB
* new chat dialog
* error + default search term
* fix typo
* fix web styles
* optimistically set chat data
* use cursor instead of last rev
* [Clipclops] Temp codegenerated lexicon (#3749)
* add codegenerated lexicon
* replace hailey's types
* use codegen'd types in components
* fix error + throw if fetch failed
* remove bad imports
* update messageslist and messageitem
* import useState
* add clop service URL hook
* add dm service url storage
* use context
* use context for service url (temp)
* remove log
* cleanup merge
* fix merge error
* disable hack
* sender-based message styles
* temporary filter
* merge cleanup
* add `hideBackButton`
* rm unneeded return
* tried to be smart
* hide go back button
* use `searchActorTypeahead` instead
---------
Co-authored-by: Hailey <me@haileyok.com>
* add new routes with placeholder screens
* add clops list
* add a clop input
* add some better padding to the clops
* some more adjustments
* add rnkc
* implement rnkc
* implement rnkc
* be a little less weird about it
* rename clop stuff
* rename more clop
* one more
* [Clipclops] Temp codegenerated lexicon (#3749)
* add codegenerated lexicon
* replace hailey's types
* use codegen'd types in components
* fix error + throw if fetch failed
* remove bad imports
* update messageslist and messageitem
* import useState
* add clop service URL hook
* add dm service url storage
* use context
* use context for service url (temp)
* remove log
* nits
---------
Co-authored-by: Samuel Newman <mozzius@protonmail.com>
* Extract SearchHistory to a component
* Extract AutocompleteResults to a component
* Extract SearchInputBox to a component
* Add a bunch of memoization
* Optimize switching by rendering both
* Remove subdomain matching
This is only ever useful if you type it exactly correct. Search now does a better job anyway.
* Give recent search decent hitslops
* improve hit area of search text input
use text cursor on web
use a pressable instead
use a vertical padding of 9
oops
move vertical padding to `TextInput` to increase hit area
* Hide it from a11y tree, change cursor
* Hide clear on empty text
* Render either Clear or Cancel
* Remove Clear button
* Animate it
* Better animation
---------
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
Revert "properly check if the ref is null"
This reverts commit 8f563808a5d39389b0bc47a31e73cd147d1e7e8b.
properly check if the ref is null
ensure dialog is closed on unmount
* dont select the text on web
* TODO REVERT THESE CHANGES
* use `usethrottledvalue` for autocomplete
* use `isFetching` from query
* rm setTimeout
* getting there
* improve functionality of cancel button
* rm todo
* add comment back
* encode `searchText` rather than `queryTerm`
* use "back" on web in some cases
* don't flash results in autocomplete
* remove unnecesary usestate
* rename everything to `query` temporarily
* revert accidental lint
* rm todo
* rm comment
* use `useFocusEffect` to update the query term on back navigation
* `searchText` is always defined here
* Fix race
* remove back functionality
* use `keepPreviousData` for query
* rename `q` to `queryParam`
* remove hack
* remove `q=` on cancel
* blur on submit
* use `setParams` instead of `replace`
* use `replace` on web still
* clear the search input when we clear `q` on native
* onPress dismiss attempt
* Adjustments
* Fix search history
* Always hide autocomplete
* Clear right pane search on select
* `blur` on autosuggestion press
* Rename to reduce diff
* Fixes
* Unify codepaths
* Fixes
* precache the autosuggestion
* do the cache in the link card
* Revert "precache the autosuggestion"
This reverts commit 79c433e984621ba4231a2a4c4b3f4690b0516b4d.
* use `throttledValue` and `keepPreviousData` in sidebar search
* show spinner when fetching pt 1
* show spinner when fetching pt 2
* show spinner properly for autocomplete
* Fix extra border
* Position fixed
* TS
* Revert "TS"
This reverts commit df187ea2d7a96d0f1832bc2392215f4d969a87c9.
* Revert "Position fixed"
This reverts commit 9c721c952b0fa4e5e4a23de38cab916ab13397e6.
* Maybe fix iPad
* Revert "TODO REVERT THESE CHANGES"
This reverts commit 279f717f3091c9df8c73ba35f9a038e12f5a1122.
* Rename var
---------
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
* Add email 2fa toggle
* Add UI elements needed for 2fa codes in login
* Wire up to the server
* Give a better failure message for bad 2fa code
* Handle enter key in login form 2fa field
* Trim spaces
* Improve error message
* add autoplay preference
* group accessibility settings into a dedicated page
* fix gray background on web
* Put a11y first
---------
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
* create dialog with flatlist in it
* use alf for composer photos/camera/gif buttons
* add gif icons
* focus textinput on gif dialog close
* add giphy API + gif grid
* web support
* add consent confirmation
* track gif select
* desktop web consent styles
* use InlineLinkText instead of Link
* add error/loading state
* hide sideborders on web
* disable composer buttons where necessary
* skip cardyb and set thumbnail directly
* switch legacy analytics to statsig
* remove autoplay prop
* disable photo/gif buttons if external media is present
* memoize listmaybeplaceholder
* fix pagination
* don't set `value` of TextInput, clear via ref
* remove console.log
* close modal if press escape
* pass alt text in the description
* Fix typo
* Rm dialog
---------
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
* Enable home and feeds on the PWI
* Add global SigninDialog to drive useRequireAuth()
* Tweak desktop styles
* Make the logo in leftnav PWI a clickable home link
* Add label
* Improve dialog on web
* Fix query key
* Go to home after signout from settings screen
* Filter out feeds from the discover listing for logged out users which are known to break without auth
* Update profile header follow/subscribe to give signin prompt
* Show profile feeds tabs on pwi
* Add language selector to account creation footer and pwi left nav desktop
---------
Co-authored-by: dan <dan.abramov@gmail.com>