Commit Graph

977 Commits

Author SHA1 Message Date
Eric Bailey 4004d9eeda Prefetch data needed for interaction settings 2024-08-12 16:18:06 -05:00
Eric Bailey 5d78f69d95 Plumbing 2024-08-12 15:33:50 -05:00
Eric Bailey 7adaf159c1 Add new mutation, handle app view ready and invalidation 2024-08-12 14:55:22 -05:00
Eric Bailey 1aba70cd18 Queries can't save undefined 2024-08-12 14:54:56 -05:00
Eric Bailey 372a235dd7 Rename everything 2024-08-12 10:38:39 -05:00
Eric Bailey 045c511196 Add post interaction settings to dropdown for all users 2024-08-09 16:23:08 -05:00
Eric Bailey 26e7d31557 Integrate postgates into ThreadgateEditor dialog 2024-08-09 15:22:45 -05:00
Eric Bailey f9e988c5fb Some renaming 2024-08-09 11:37:20 -05:00
Eric Bailey c4e5782e1e Add queries 2024-08-08 15:22:09 -05:00
Eric Bailey b2c9dc4e34 Merge remote-tracking branch 'origin/main' into reply-qp-moderation
* origin/main: (30 commits)
  Show just-posted replies above OP replies (#4901)
  Remove client filtering of starter packs (#4753)
  Remove show_avi_follow_button (#4900)
  Remove native_pwi_disabled (#4896)
  Fix overflow on posts (#4899)
  Move onPressReply into child component (#4898)
  Remove new_user_progress_guide (#4895)
  Remove explore_page_profile_card_social_proof (#4894)
  Remove ungroup_follow_backs gate (#4893)
  Remove unnecessary state update for reply gate (#4897)
  Include follow-based suggestions in interstitial (#4889)
  Cleanup flags (#4891)
  ALF suggested follows in profile header (#4828)
  Added trans (#4890)
  Keep interstitial fresh on refresh (#4888)
  Include popcluster in suggestion ranking (#4887)
  Add logging of selected feed preference when displaying the following feed (#4789)
  [Video] Visibility detection view (#4741)
  [Videos] Video player - PR #2 - better web support (#4732)
  [Video] Authed video upload (#4885)
  ...
2024-08-08 13:46:57 -05:00
dan e782db33dc Show just-posted replies above OP replies (#4901)
* Unify onPostReply handler

* Show just-posted replies above OP replies

* Only do this for the highlighted post or thread mode

It's confusing to have your post displace OP thread or other people's leaf posts.
2024-08-08 19:19:58 +01:00
Hailey c1af767fa6 Remove client filtering of starter packs (#4753) 2024-08-08 10:51:54 -07:00
Eric Bailey 85fe95c988 Remove new_user_progress_guide (#4895) 2024-08-08 11:48:42 -05:00
Eric Bailey f3a9f874d9 Remove ungroup_follow_backs gate (#4893) 2024-08-08 11:48:24 -05:00
dan 2174feed44 Include follow-based suggestions in interstitial (#4889) 2024-08-08 15:49:34 +01:00
Eric Bailey 1e3b2d6f42 ALF suggested follows in profile header (#4828)
* Refactor ProfileHeaderSuggestedFollows

* Load fresh data every time

* Oops, missed a file

* Update ProfileCard.Link usage, tweak copy
2024-08-08 09:19:51 -05:00
Eric Bailey 71aec717f5 Fix allow setting clobbering 2024-08-07 17:45:08 -05:00
Eric Bailey defd61e85b Sort hidden replies to bottom 2024-08-07 16:16:45 -05:00
Samuel Newman fff2c079c2 [Videos] Video player - PR #2 - better web support (#4732)
* attempt some sort of "usurping" system

* polling-based active video approach

* split into inner component again

* click to steal active video

* disable findAndActivateVideo on native

* new intersectionobserver approach - wip

* fix types

* disable perf optimisation to allow overflow

* make active player indicator subtler, clean up video utils

* partially fix double-playing

* start working on controls

* fullscreen API

* get buttons working somewhat

* rm source from where it shouldn't be

* use video elem as source of truth

* fix keyboard nav + mute state

* new icons, add fullscreen + time + fix play

* unmount when far offscreen + round 2dp

* listen globally to clicks rather than blur event

* move controls to new file

* reduce quality when not active

* add hover state to buttons

* stop propagation of videoplayer click

* move around autoplay effects

* increase background contrast

* add subtitles button

* add stopPropagation to root of video player

* clean up VideoWebControls

* fix chrome

* change quality based on focused state

* use autoLevelCapping instead of nextLevel

* get subtitle track from stream

* always use hlsjs

* rework hls into a ref

* render player earlier, allowing preload

* add error boundary

* clean up component structure and organisation

* rework fullscreen API

* disable fullscreen on iPhone

* don't play when ready on pause

* debounce buffering

* simplify giant list of event listeners

* update pref

* reduce prop drilling

* minimise rerenders in `ActiveViewContext`

* restore prop drilling

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
Co-authored-by: Hailey <me@haileyok.com>
2024-08-07 18:47:51 +01:00
Eric Bailey 89f57ff879 Fix retries in threadgate too, add comments 2024-08-07 11:50:00 -05:00
Eric Bailey d7ea522301 Dropdown menu improvements 2024-08-07 11:45:54 -05:00
Eric Bailey 751923cda2 Add a lil check to shadow handling 2024-08-07 11:03:18 -05:00
Eric Bailey cdf022e48e Handle failed reattachment req 2024-08-07 10:58:05 -05:00
Samuel Newman b701e8c68c [Video] Authed video upload (#4885)
* add service auth call

* update API package

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-08-07 16:56:12 +01:00
Eric Bailey f576db3023 Clean up embed replacement 2024-08-07 10:55:10 -05:00
Eric Bailey a61bef8716 Clean up dropdown logic 2024-08-07 10:40:16 -05:00
Eric Bailey 12a0164464 Few fixes 2024-08-06 18:59:26 -05:00
Eric Bailey 413e87f4c5 Use post shadow to swap detached quotes 2024-08-06 18:27:34 -05:00
dan 5845e08eee Show own replies before follows' replies in threads (#4882) 2024-08-06 17:12:27 +01:00
Eric Bailey 4b5952c08c Fix RQ error, return null for query 2024-08-05 19:45:34 -05:00
dan 686d5ebb53 [Persisted] Make broadcast subscriptions granular by key (#4874)
* Add fast path for guaranteed noop updates

* Change persisted.onUpdate() API to take a key

* Implement granular broadcast listeners
2024-08-06 01:30:52 +01:00
dan 966f6c511f [Persisted] Fix the race condition causing clobbered writes between tabs (#4873)
* Broadcast the update in the same tick

The motivation for the original code is unclear. I was not able to reproduce the described behavior and have not seen it mentioned on the web. I'll assume that this was a misunderstanding.

* Remove defensive programming

The only places in this code that we can expect to throw are schema.parse(), JSON.parse(), JSON.stringify(), and localStorage.getItem/setItem/removeItem. Let's push try/catch'es where we expect them to be necessary.

* Don't write or clobber defaults

Writing defaults to local storage is unnecessary. We would write them as a part of next update anyway. So I'm removing that to reduce the number of moving pieces.

However, we do need to be wary of _state being set to defaults. Because _state gets mutated on write. We don't want to mutate the defaults object. To avoid having to think about this, let's copy on write. We don't write to this object very often.

* Refactor: extract tryParse

* Refactor: move string parsing into tryParse

* Extract tryStringify, split logging by platform

Shared data parsing/stringification errors are always logged. Storage errors are only logged on native because we trust the web APIs to work.

* Add a layer of caching to readFromStorage to web

We're going to be doing a read on every write so let's add a fast path that avoids parsing and validating.

* Fix the race condition causing clobbered writes between tabs
2024-08-06 01:03:27 +01:00
dan 5bf7f3769d [Persisted] Fork web and native, make it synchronous on the web (#4872)
* Delete logic for legacy storage

* Delete superfluous tests

At this point these tests aren't testing anything useful, let's just get rid of them.

* Inline store.ts methods into persisted/index.ts

* Fork persisted/index.ts into index.web.ts

* Remove non-essential code and comments from both forks

* Remove async/await from web fork of persisted/index.ts

* Remove unused return

* Enforce that forked types match
2024-08-06 00:30:58 +01:00
Eric Bailey 15862a6f7f Add postgate queries, begin integration 2024-08-05 17:04:02 -05:00
Eric Bailey 926595493d Enable un-hiding of replies 2024-08-05 15:30:42 -05:00
dan 74b0318d89 Show replies in context of their threads (#4871)
* Don't reconstruct threads from separate posts

* Remove post-level dedupe for now

* Change repost dedupe condition to look just at length

* Delete unused isThread

* Delete another isThread field

It is now meaningless because there's nothing special about author threads.

* Narrow down slice item shape so it does not need reply

* Consolidate slice validation criteria in one place

* Show replies in context

* Make fallback marker work

* Remove misleading and now-unused property

It was called rootUri but it was actually the leaf URI. Regardless, it's not used anymore.

* Add by-thread dedupe to non-author feeds

* Add post-level dedupe

* Always count from the start

This is easier to think about.

* Only tuner state need to be untouched on dry run

* Account for threads in reply filtering

* Remove repost deduping

This is already being taken care of by item-level deduping. It's also now wrong and removing too much (since it wasn't filtering for reposts directly).

* Calculate rootUri correctly

* Apply Following settings to all lists

* Don't dedupe intentional reposts by thread

* Show reply parent when ambiguous

* Explicitly remove orphaned replies from following/lists

* Fix thread dedupe to work across pages

* Mark grandparent-blocked as orphaned

* Guard tuner state change by dryRun

* Remove dead code

* Don't dedupe feedgen threads

* Revert "Apply Following settings to all lists"

This reverts commit aff86be6d37b60cc5d0ac38f22c31a4808342cf4.

Let's not do this yet and have a bit more discussion. This is a chunky change already.

* Reason belongs to a slice, not item

* Logically feedContext belongs to the slice

* Update comment to reflect latest behavior
2024-08-05 20:51:41 +01:00
Eric Bailey bb912321d6 Make 'everbody' setting more clear 2024-08-05 14:50:28 -05:00
Eric Bailey cfbcd99552 Work around historical handling of allow field 2024-08-05 14:32:15 -05:00
Hailey 18b423396b Add PlatformInfo module (#4877) 2024-08-05 12:21:34 -07:00
Eric Bailey 19c600843d Start to break apart queries for better composition 2024-08-05 12:38:30 -05:00
Eric Bailey 50b8e6c63c Replace createThreadgate handling 2024-08-05 10:52:45 -05:00
Eric Bailey 9be0d49e78 Re-org 2024-08-05 10:22:02 -05:00
Eric Bailey a5676e5cb4 Add opposite direction conversion 2024-08-05 10:06:01 -05:00
Eric Bailey dcb6aa41cc Do some renaming for clarity 2024-08-05 09:59:48 -05:00
Eric Bailey 571d00cf41 Thread through threadgate record, validate approach 2024-08-05 09:55:59 -05:00
Eric Bailey 380c4dbf24 Integrate live threadgate query 2024-08-02 16:20:31 -05:00
Eric Bailey c3d8beee6d Respect labels on feeds and lists (#4818)
* Prep

* Pass in optional moderation to FeedCard

* Compute moderation decision, filter contentList contexts, pass into card

* Let's go a different route

* Filter from within search queries

* Use same search query for starter packs

* Filter lists from profile tabs

* Cleanup

* Filter from profile feeds

* Moderate post embeds

* Memoize

* Use ScreenHider on lists

* Hide both list types

* Fix crash on iOS in screen hider, fix lineheight

* Memoize renderItem

* Reuse objects to prevent re-renders
2024-08-02 13:05:33 -05:00
dan 7f292abf51 Always limit Following replies to the people you follow (#4868)
* Limit feed replies to people you follow

* Remove dead code
2024-08-01 22:05:40 +01:00
Eric Bailey b0e130a4d8 Update muted words dialog with expiresAt and actorTarget (#4801)
* WIP not working dropdown

* Update MutedWords dialog

* Add i18n formatDistance

* Comments

* Handle text wrapping

* Update label copy

Co-authored-by: Hailey <me@haileyok.com>

* Fix alignment

* Improve translation output

* Revert toggle changes

* Better types for useFormatDistance

* Tweaks

* Integrate new sdk version into TagMenu

* Use ampersand

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Bump SDK

---------

Co-authored-by: Hailey <me@haileyok.com>
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-08-01 10:29:27 -05:00
dan d2e88cc623 Fetch enough pages to fill a page's worth of items (#4863)
* Fetch enough pages to fill a page's worth of items

* Add failsafe in case of appview bug
2024-08-01 02:27:25 +01:00