about summary refs log tree commit diff
path: root/src/state/persisted
Commit message (Collapse)AuthorAgeFilesLines
* Add `isSelfHosted` to `SessionAccount` (#7028)Eric Bailey2024-12-091-0/+1
| | | | | * Add isSelfHosted to SessionAccount * Update snaps
* Revert "Pass referrer on native (with an opt out) (#6648)" (#6732)dan2024-11-251-2/+0
| | | This reverts commit ac5b2cf31f2bb45f1bf8a180705249d3cce8017d.
* Pass referrer on native (with an opt out) (#6648)dan2024-11-221-0/+2
| | | | | | | | | | | | | | | | | * Pass referer on native * Add ChainLink3 * Add an opt out for sending utm * Remove noreferrer on links We do have <meta name="referrer" content="origin-when-cross-origin"> in HTML, should be sufficient. * Narrow down the condition slightly --------- Co-authored-by: Eric Bailey <git@esb.lol>
* Language fixes (#5384)Eric Bailey2024-09-204-17/+109
| | | | | | | | | | | | | | | | | | | | | | | * Add some comments * Decouple language settings * Normalize on read/write * Refactor * Support device locale on app startup * Cleanup, port to web * Clean up comments * Comment * Try not to mutate * Protect util handling, update test * Dedupe array values
* [Videos] Video player - PR #2 - better web support (#4732)Samuel Newman2024-08-071-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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>
* [Persisted] Make broadcast subscriptions granular by key (#4874)dan2024-08-063-8/+43
| | | | | | | * 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
* Add `PlatformInfo` module (#4877)Hailey2024-08-051-2/+3
|
* Starter Packs (#4332)Hailey2024-06-211-0/+2
| | | | | | | 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>
* Option for large alt badges (#4571)Samuel Newman2024-06-201-0/+2
| | | | | | | | | | | | | * 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>
* Migrate local thread mutes (#4523)Samuel Newman2024-06-191-1/+2
| | | | | | | | | | | | | | | * 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
* Stringify path error (#4379)Eric Bailey2024-06-111-1/+1
|
* Only validate persisted data for existing users (#4465)Eric Bailey2024-06-101-0/+6
|
* [🙅] Integrate deactivate (#4308)Eric Bailey2024-06-051-3/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Update types (cherry picked from commit 27deac1f367825771ba76fa098ec1b0a62dcf64a) * Integrate into deactivate dialog (cherry picked from commit 84f299a447259cc1fbfc7be607e28197779e4ec1) * Integrate into Deactivated screen (cherry picked from commit 29193f34822ecdf11e2a407197fa230285dfe846) * Bump api sdk (cherry picked from commit 738c622d3e5a23bfbb0d3bdce3a6bdf01e54ca60) * Update permalink (cherry picked from commit c10bf5c071d76c3054bc4ce9d313c10b1820f038) * Bump sdk pkg * Update types to match backend * Loosen types for forwards compat * Hydrate status from persisted data * Refresh session when re-activating, clear query cache * Show app password error * Refactor dialog to clear state when closed * Add app password error to Deactivated screen
* Report persisted schema validation failures (#4358)Eric Bailey2024-06-041-2/+13
| | | | | * Report persisted schema validation failures * Make it safer
* [🙅] Disambiguation of the deactivation (#4267)Eric Bailey2024-06-041-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Disambiguation of the deactivation * Snapshot crackle pop * Change log context * [🙅] Add status to session state (#4269) * Add status to session state * [🙅] Add new deactivated screen (#4270) * Add new deactivated screen * Update copy, handle logout * Remove icons, adjust padding * [🙅] Add deactivate account dialog (#4290) * Deactivate dialog (cherry picked from commit 33940e2dfe0d710c0665a7f68b198b46f54db4a2) * Factor out dialog, add to delete modal too (cherry picked from commit 47d70f6b74e7d2ea7330fd172499fe91ba41062d) * Update copy, icon (cherry picked from commit e6efabbe78c3f3d9f0f8fb0a06a6a1c4fbfb70a9) * Update copy (cherry picked from commit abb0ce26f6747ab0548f6f12df0dee3c64464852) * Sizing tweaks (cherry picked from commit fc716d5716873f0fddef56496fc48af0614b2e55) * Add a11y label
* Support for Flickr album and group pool embeds (#3936)Thomas Dickerson2024-06-031-0/+1
| | | | | | | | | | | | | | | * Support for Flickr album and group pool embeds * Oops, forgot to add flickr to the persisted externalEmbeds schema * Need a bigint since our id can have more than 52 bits... * Remove unexpected trailing / from test data to match the expected behavior * nits --------- Co-authored-by: Hailey <me@haileyok.com>
* Add kawaii mode (#3773)Samuel Newman2024-05-012-4/+6
|
* Session fixes, pt. 1 (#3762)dan2024-04-301-2/+19
| | | | | | | | | | | | | | | | | * Update persisted schema for new source of truth, implement in existing session (cherry picked from commit b1e5f12baee932721d66c60dd51c981b46b0c274) * Improve toasts, log caught error, during switch account (cherry picked from commit fe0d1507063d2e532b7b1a447670b689292d1dc3) * Handle thrown errors from initSession during login (cherry picked from commit 2c85c045917e923901284b9ba310a82e28f37b5c) --------- Co-authored-by: Eric Bailey <git@esb.lol>
* Persist PDS URL for session resumption (#3620)Mary2024-04-241-0/+1
| | | | | | | | | | | * fix: store PDS URL for session resumption * fix: handle a few more cases * fix: blocking resumption should also use pds url * refactor: do it in the construct itself * fix: revert ce96223
* Disable autoplay by default if prefers-reduced-motion (#3671)dan2024-04-231-2/+2
|
* Email auth factor (#3602)Paul Frazee2024-04-221-0/+1
| | | | | | | | | | | | | | | * 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 disable autoplay preference and group related settings into a dedicated ↵Samuel Newman2024-04-191-0/+2
| | | | | | | | | | | | | | | page (#3626) * 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>
* Improve Android haptic, offer toggle for haptics in the app (#3482)Hailey2024-04-112-1/+5
| | | | | | | | | | | | | | | * improve android haptics, offer toggle for haptics * update haptics.ts * default to false * simplify to `playHaptic` * just leave them as `feedInfo` * use a hook for `playHaptic` * missed one of them
* Scale back sentry logs for trivial events (#2997)Hailey2024-02-263-10/+10
| | | | | * scale back sentry logs * update migrate log tests
* Improved server selector during account creation and signin (#2840)Paul Frazee2024-02-122-0/+3
| | | | | | | | | | | | | | | | | * Replace the ServerInput modal with a new dialog based on alf that remembers your server address history and doesnt put staging and localdev in the options * Update the server selector during account creation * dont apply capitalization, use url keyboard * Apply insets to dialog top * Improve padding of dialogs on native * Fix race condition in dialog close; also fix fire of the onClose event in dialogs --------- Co-authored-by: Hailey <me@haileyok.com>
* Refactor Home feed pager rendering logic (#2768)dan2024-02-062-0/+3
| | | | | * Use new persistence API for selected feed * Refactor Home feeds pager data source
* Options for selecting dark theme, fix some white flashes when in dark mode ↵Hailey2024-02-062-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (#2722) * add dark theme selection to settings/schema * use `useThemePrefs` where needed * adjust theme providers to support various themes * update storybook * handle web themes * better themeing for web * dont show dark theme prefs when color mode is light * drop the inverted text change on oled theme * get the color mode inside of `useColorModeTheme` * use `ThemeName` type everywhere * typo * use dim/dark instead of dark/oled * prevent any fickers on web * fix styles * use `dim` for dark default * more cleanup * 🤔 * set system background color * ts
* Clean up some sentry logs (#2630)Eric Bailey2024-01-254-35/+7
| | | | | | | * Change prop name for sentry ingestion * Fix test * Add default object
* Add account-activation queueing to signup (#2613)Paul Frazee2024-01-251-0/+1
| | | | | | | | | | | | | | | | | | | * Add deactivated-account tracking * Center button text * Add Deactivated screen * Add icon to Deactivated screen * Abort session resumption if the session is deactivated * Implement deactivated screen status checks * Bump api@0.9.5 * Use new typo-fixed scope * UI refinements
* Reduce some Sentry logs (#2549)Eric Bailey2024-01-162-5/+5
| | | | | * Reduce some Sentry logs * Update tests
* (optional) In app browser (#2490)Paul Frazee2024-01-121-0/+2
| | | | | | | | | | | | | * add expo web browser + modal * add in app browser option to settings * don't show toggle on web * Tweak browser-choice UIs --------- Co-authored-by: Samuel Newman <mozzius@protonmail.com>
* Additional embed sources and external-media consent controls (#2424)Paul Frazee2024-01-042-0/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * add apple music embed * add vimeo embed * add logic for tenor and giphy embeds * keep it simple, use playerUri for images too * add gif embed player * lint, fix tests * remove links that can't produce a thumb * Revert "remove links that can't produce a thumb" This reverts commit 985b92b4e622db936bb0c79fdf324099b9c8fcd8. * Revert "Revert "remove links that can't produce a thumb"" This reverts commit 4895ded8b5120c4fc52b43ae85c9a01ea0b1a733. * Revert "Revert "Revert "remove links that can't produce a thumb""" This reverts commit 36d04b517ba5139e1639f2eda28d7f9aaa2dbfb6. * properly obtain giphy metadata regardless of used url * test fixes * adjust gif player * add all twitch embed types * support m.youtube links * few logic adjustments * adjust spotify player height * prefetch gif before showing * use memory-disk cache policy on gifs * use `disk` cachePolicy on ios - can't start/stop animation * support pause/play on web * onLoad fix * remove extra pressable, add accessibility, fix scale issues * improve size of embed * add settings * fix(?) settings * add source to embed player params * update tests * better naming and settings options * consent modal * fix test id * why is webstorm adding .tsx * web modal * simplify types * adjust snap points * remove unnecessary yt embed library. just use the webview always * remove now useless WebGifStill 😭 * more type cleanup * more type cleanup * combine parse and prefs check in one memo * improve dimensions of youtube shorts * oops didn't commit the test 🫥 * add shorts as separate embed type * fix up schema * shorts modal * hide gif details * support localized spotify embeds * more cleanup * improve look and accessibility of gif embeds * Update routing for the external embeds settings page * Update and simplify the external embed preferences screen * Update copy in embedconsent modal and add 'allow all' button --------- Co-authored-by: Hailey <me@haileyok.com>
* Hide posts tool (#2299)Eric Bailey2023-12-242-0/+3
| | | | | | | | | | | | | * 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>
* Patch bad migration, sanitize bad value (#2179)Eric Bailey2023-12-111-1/+2
|
* Add tests for migration and persisted state (#2118)Eric Bailey2023-12-065-3/+222
| | | | | | | | | | | | | * Add tests for migrate * Add test for persisted.init * Add legacy transform test * Set NODE_ENV for testing * Mock logger * Set expo var to test
* Improvements to persisted state migration (#2098)Eric Bailey2023-12-054-20/+38
| | | | | | | | | | | * Fix session email/emailConfirmed types, update usage for safer access * Handle fallback better, better errors * Better handling, add test * Add test for default data * Remove fallback, not needed, update logs
* Add more debugging to auth (#2009)Eric Bailey2023-11-271-1/+29
|
* Raise levels of some logs during pre-release (#1994)Eric Bailey2023-11-262-6/+9
|
* Add dev-only button to clear storage (#1965)Eric Bailey2023-11-212-0/+21
| | | | | | | * Add dev-only button to clear storage * Add legacy storage clearing too * Use try/catch
* Hindi Internationalization (#1914)Ansh2023-11-202-0/+4
| | | | | | | | | | | | | | | | | | | | | | * 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
* Refactor notifications to use react-query (#1878)Paul Frazee2023-11-123-8/+1
| | | | | | | | | | | | | | | | | | | | | | | * 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>
* Web login/signup and shellEric Bailey2023-11-091-0/+2
|
* First pass at a session handler (#1850)Eric Bailey2023-11-093-20/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * First pass at a session handler * TODOs * Fix recursion * Couple more things * Add back resume session concept * Handle ready * Cleanup of initial loading states * Handle init failure * Cleanup * Remove account * Add updateCurrentAccount * Remove log * Cleanup * Integrate removeAccount * Add hasSession * Add to App.native, harden migration * Use effect to persist data
* Move invite-state to new persistence + context and replace the notifications ↵Paul Frazee2023-11-082-8/+4
| | | | with just showing uses in the modal (#1840)
* Move onboarding state to new persistence + reducer context (#1835)Paul Frazee2023-11-081-3/+3
|
* Move require alt-text to new persistence + context (#1839)Paul Frazee2023-11-081-1/+1
|
* Move reminders to new persisted state layer (#1834)Paul Frazee2023-11-072-4/+4
|
* Add persistent state provider (#1830)Eric Bailey2023-11-076-0/+321
* Add persistent state provider * Catch write error * Handle read errors, update error msgs * Fix lint * Don't provide initial state to loader * Remove colorMode from shell state * Idea: hook into persisted context from other files * Migrate settings to new hook * Rework persisted state to split individual contexts * Tweak persisted schema and validation --------- Co-authored-by: Paul Frazee <pfrazee@gmail.com>