* 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>
* 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
* 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
* 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>
* 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
* 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
* 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>
* 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
* 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
* 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
* 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
* 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
* 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
* 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>
* 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
* 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>
* 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>
* 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>
* 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
* 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>
* 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
* 🐛 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>
* 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>
* 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
* 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
* 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
* 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
* 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`
* 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>
* 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
* 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>
* 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
* 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
* 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>
* 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
* 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>
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
* 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
* 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
* 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
* 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
* 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