about summary refs log tree commit diff
path: root/src/state
Commit message (Collapse)AuthorAgeFilesLines
* [Videos] avoid using fetch for blob handling where possible (#5041)Samuel Newman2024-08-304-4/+5
| | | | | | | * avoid using fetch where possible * whoopsie wrong branch * more import fixes
* [Video] Captions and alt text (#5009)Samuel Newman2024-08-301-1/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | * video settings modal in composer * show done button on web * rm download options * fix logic for showing settings button * add language picker (wip) * subtitle list with language select * send captions & alt text with video when posting * style "ensure you have selected a language" text * include aspect ratio with video * filter out captions where the lang is not set * rm log * fix label and add hint * minor scrubber fix
* [Videos] Fix uploads (#5042)Samuel Newman2024-08-302-12/+10
| | | | | | | * fix pds url * fix service auth exp * whoopsie wrong branch
* Composer blocks (#5040)Eric Bailey2024-08-301-7/+20
| | | | | | | * Move i18n provider up the stack * Protect composer opening for a blocked post * Protect ctrls from interacting with blocked user
* extend token lifetime to 30 minutes (#5019)Samuel Newman2024-08-302-0/+2
|
* [Video] Properly get the service auth aud from the session (#5025)Hailey2024-08-292-6/+16
|
* [Video] Remove old env var (#5018)Hailey2024-08-291-1/+1
|
* [Video] Make compress/upload cancelable (#4996)Samuel Newman2024-08-294-36/+62
| | | | | | | * add abort controller to video upload system * rm log * rm log 2
* [Video] Add uploaded video to post (#4884)Samuel Newman2024-08-294-77/+86
| | | | | | | | | | | | | | | | | | | | | * video uploads! * use video upload lexicons * add missing postgate * remove references to prerelease package * fix scrubber showing a "0" * Delete types.ts * rm logs * rm upload header --------- Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
* fix `findAll*` type in `post-thread` (#4986)Hailey2024-08-231-8/+12
|
* Optimistic hidden replies (#4977)Eric Bailey2024-08-235-53/+31
|
* Fix fixed footer experiment (#4969)dan2024-08-221-10/+33
| | | | | | | | | | | | | | | | | * Split minimal shell mode into headerMode and footerMode For now, we'll always write them in sync. When we read them, we'll use headerMode as source of truth. This will let us keep footerMode independent in a future commit. * Remove fixed_bottom_bar special cases during calculation This isn't the right time to determine special behavior. Instead we'll adjust footerMode itself conditionally on the gate. * Copy-paste setMode into MainScrollProvider This lets us fork the implementation later just for this case. * Gate footer adjustment in MainScrollProvider This is the final piece. Normal calls to setMode() keep setting both header and footer, but MainScrollProvider adjusts the footer conditionally.
* update `usePostThreadQuery` to check quote query data (#4975)Hailey2024-08-222-1/+5
| | | | | | | * update `usePostThreadQuery` to check quote query data * search notifs before quotes * oops
* add `quoteCount` to view creators (#4972)Hailey2024-08-222-0/+2
|
* tweak rqkey and cache search for useAllListMembersQuery (#4971)Hailey2024-08-221-1/+18
|
* Prep threadgate shadow hack (#4970)Eric Bailey2024-08-213-2/+46
| | | | Co-authored-by: Hailey <me@haileyok.com>
* Change size (#4957)Hailey2024-08-212-24/+68
|
* Detached QPs and hidden replies (#4878)Eric Bailey2024-08-2111-53/+1167
| | | | Co-authored-by: Hailey <me@haileyok.com>
* Show quote posts (#4865)Samuel Newman2024-08-214-0/+131
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * show quote posts * fix filter * fix keyExtractor * move likedby and repostedby to new file structure * use modern list component * remove relative imports * update quotes count after quoting * call `onPost` after updating quote count * Revert "update quotes count after quoting" This reverts commit 1f1887730a210c57c1e5a0eb0f47c42c42cf1b4b. * implement * update like count in quotes list * only add `onPostReply` where needed * Filter quotes with detached embeds * Bump SDK * Don't show error for no results --------- Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com> Co-authored-by: Hailey <me@haileyok.com> Co-authored-by: Eric Bailey <git@esb.lol>
* Add `list hidden` screen (#4958)Hailey2024-08-201-1/+1
| | | | | Co-authored-by: Hailey <me@haileyok.com> Co-authored-by: Eric Bailey <git@esb.lol>
* Fix orphaned feed slices, handle blocks (#4944)Eric Bailey2024-08-191-0/+2
| | | | | | | | | | | * Fix orphaned feed slices, handle blocks * Revert to filerting out orphan threads * Support NotFoundPost views too * Just kidding, use ReplyRef.root as source of grandparent data * Fixes
* Move global "Sign out" out of the current account row (#4941)dan2024-08-154-17/+159
| | | | | | | | | | | | | | | | | | | | | | | * Rename logout to logoutEveryAccount * Add logoutCurrentAccount() * Make all "Log out" buttons refer to current account Each of these usages is completely contextual and refers to a specific account. * Add Sign out of all accounts to Settings * Move single account Sign Out below as well * Prompt on account removal * Add Other Accounts header to reduce ambiguity * Spacing fix --------- Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* Don't kick to login screen on network error (#4911)dan2024-08-135-13/+51
| | | | | | | | | | | | | | | | | | | | | * Don't kick the user on network errors * Track online status for RQ * Use health endpoint * Update test with new behavior * Only poll while offline * Handle races between the check and network events * Reduce the poll kickoff interval * Don't cache partially fetched pinned feeds This isn't a new issue but it's more prominent with the offline handling. We're currently silently caching pinned infos that failed to fetch. This avoids showing a big spinner on failure but it also kills all feeds which is very confusing. If the request to get feed gens fails, let's fail the whole query. Then it can be retried.
* Remove .withProxy() calls (#4929)dan2024-08-131-31/+15
|
* subclass agent to add setPersistSessionHandler (#4928)Hailey2024-08-122-82/+60
| | | | Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
* Upgrade API, implement XRPC rework (#4857)Hailey2024-08-125-51/+95
| | | | Co-authored-by: Matthieu Sieben <matthieu.sieben@gmail.com>
* Show just-posted replies above OP replies (#4901)dan2024-08-082-3/+21
| | | | | | | | | * 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.
* Remove client filtering of starter packs (#4753)Hailey2024-08-081-12/+4
|
* Remove new_user_progress_guide (#4895)Eric Bailey2024-08-081-6/+1
|
* Remove ungroup_follow_backs gate (#4893)Eric Bailey2024-08-083-14/+3
|
* Include follow-based suggestions in interstitial (#4889)dan2024-08-082-0/+28
|
* ALF suggested follows in profile header (#4828)Eric Bailey2024-08-081-0/+1
| | | | | | | | | * Refactor ProfileHeaderSuggestedFollows * Load fresh data every time * Oops, missed a file * Update ProfileCard.Link usage, tweak copy
* [Videos] Video player - PR #2 - better web support (#4732)Samuel Newman2024-08-073-1/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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>
* [Video] Authed video upload (#4885)Samuel Newman2024-08-072-11/+37
| | | | | | | | | * add service auth call * update API package --------- Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
* Show own replies before follows' replies in threads (#4882)dan2024-08-061-1/+12
|
* [Persisted] Make broadcast subscriptions granular by key (#4874)dan2024-08-0617-42/+95
| | | | | | | * Add fast path for guaranteed noop updates * Change persisted.onUpdate() API to take a key * Implement granular broadcast listeners
* [Persisted] Fix the race condition causing clobbered writes between tabs (#4873)dan2024-08-063-104/+130
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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
* [Persisted] Fork web and native, make it synchronous on the web (#4872)dan2024-08-069-497/+185
| | | | | | | | | | | | | | | | | | | * 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
* Show replies in context of their threads (#4871)dan2024-08-053-69/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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
* Add `PlatformInfo` module (#4877)Hailey2024-08-052-4/+5
|
* Respect labels on feeds and lists (#4818)Eric Bailey2024-08-023-32/+80
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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
* Always limit Following replies to the people you follow (#4868)dan2024-08-012-9/+4
| | | | | * Limit feed replies to people you follow * Remove dead code
* Update muted words dialog with `expiresAt` and `actorTarget` (#4801)Eric Bailey2024-08-011-0/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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>
* Fetch enough pages to fill a page's worth of items (#4863)dan2024-08-012-37/+83
| | | | | * Fetch enough pages to fill a page's worth of items * Add failsafe in case of appview bug
* Remove unused NoopFeedTuner (#4856)dan2024-07-311-22/+7
|
* [Video] Uploads (#4754)Hailey2024-07-306-0/+401
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * state for video uploads * get upload working * add a debug log * add post progress * progress * fetch data * add some progress info, web uploads * post on finished uploading (wip) * add a note * add some todos * clear video * merge some stuff * convert to `createUploadTask` * patch expo modules core * working native upload progress * platform fork * upload progress for web * cleanup * cleanup * more tweaks * simplify * fix type errors --------- Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
* Boolean filter improvement alternative: TS upgrade (#4840)Dmitrii Kartashev2024-07-262-3/+3
| | | | | * upgrade typescript and use new feature * fix: typing error
* Refactor feed slices (#4834)dan2024-07-251-7/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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
* Fix sloppy filter(Boolean) types (#4830)dan2024-07-252-19/+32
| | | | | | | | | | | | | * Fix sloppy filter(Boolean) in threadgate * Fix sloppy filter(Boolean) in Explore * Fix sloppy filter(Boolean) in post-feed * Harden FeedPostSliceItem.reason type def * Harden parentAuthor types * Fix lying component types, handle blocks
* special invalidation logic (#4820)Samuel Newman2024-07-241-0/+2
| | | Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>