* Move video state into composer state
* Represent video as embed
This is slightly broken. In particular, we can't remove video yet because there's no action that results in video embed being removed.
* Properly represent video as embed
This aligns the video state lifetime with the embed lifetime. Video can now be properly added and removed.
* Disable Add Video when we have images
* Ignore empty image pick
* Remove unused video field
* Stop exposing video dispatch
* Move cancellation out of the reducer
* Make useUploadStatusQuery controlled by jobId
* Rename SetStatus to SetProcessing
This action only has one callsite and it's always passing "processing".
* Move jobId into video reducer state
* Make cancellation scoped
* Inline useCompressVideoMutation
* Move processVideo down the file
* Extract getErrorMessage
* useServiceAuthToken -> getServiceAuthToken
* useVideoAgent -> createVideoAgent
* useVideoUploadLimits -> getVideoUploadLimits
* useUploadVideoMutation -> uploadVideo
* Use async/await in processVideo
* Inline onVideoCompressed into processVideo
* Use async/await for uploadVideo
* Factor out error messages
* Guard dispatch with signal
This lets us remove the scattered signal checks around dispatch.
* Move job polling out of RQ
* Handle poll failures
* Remove unnecessary guards
* Slightly more accurate condition
* Move initVideoUri handling out of the hook
* Remove dead argument
It wasn't being used before either.
* Remove unused detailed status
This isn't being used because we're only respecting that state variable when isProcessing=true, but isProcessing is always false during video upload.
If we want to re-add this later, it should really just be derived from the reducer state.
* Harden the video reducer
* Tie all spawned work to a signal
* Preserve asset/media for nicer error state
* Rename actions to match states
* Inline useUploadVideo
This abstraction is getting in the way of some future work.
* Move MIME check to the only place that handles it
* add to dropdown menu
* use normal profile mutation hook
* add pin as reason
* request pins
* shadow update
* rm logs
* get prev pinned from getProfile
* fix toasts
* invalidate after appview ready
* don't mutate params
* rm log
* use checkCommited rather than manual whenAppViewReady
* move to mutation
* even more optimistic optimistic update
* allow pins in `posts_and_author_threads`
* update @atproto/api
* add reasonPin type
* fix strange type error in unrelated query
* another missing type
* grow banner when overscrolling
* add blurview
* make backdrop blur as it scrolls
* add activity indicator
* use rotated spinner instead of arrow
* persist position of back button
* make back button prettier
* make blur less jarring
* Unify effects
* Tweak impl
* determine if should animate based on scroll amount
* sign comment
---------
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
* Set up additional mod authorities
* Filter out non-configurable mod authorities
* WIP
* Working
* Cleanup, add mod
* Cleanup
* Add more debug logs
* Tweak logs
* Filter out imperative labels from typeaheads
* Filter hideable content from notifications
* Add api
* Fall back in dev
* Remove space
* Use prod endpoint
* Add tiny notice
* Add notice to labeler card, show all labelers
* 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
* Add fontScale, gate it, fix some computes
* Add inter, integrate
* Clean up
* Apply to old Text component
* Use numeric weight
* Cleanup
* Clean up appearance settings
* Global tracking
* Fix regular italic variant
* Refactor settings and fontScale values
* Remove flags
* Get rid of lower weight font usage
* Remove gate from settings
* Refactor appearance settings for reuse
* Add neue type nux
* Update defaults
* Load fonts, add fallback families
* Load fonts via plugin in production
* Fixes
* Fix for web
* Nits
---------
Co-authored-by: Hailey <me@haileyok.com>
* Pre-fill alt text with 10-million card post (#5377)
* Clean up type
* Tweak alt copy
* Add pt translation, fix typo
---------
Co-authored-by: Calvin <clavin@users.noreply.github.com>
* feat: Add hook on web app to open composer with 'N' keyboard shortcut
* Extract, don't fire open composer if already open
* Ignore interactive elements
---------
Co-authored-by: João Gabriel <joaog@nocorp.io>
Co-authored-by: Hailey <me@haileyok.com>
* DRY up video service auth code
* throw error if over upload limits
* use token
* xmark on toast
* errors with nice translatable error messages
* Update src/state/queries/video/video.ts
---------
Co-authored-by: Hailey <me@haileyok.com>
* tweak
* error state for upload toolbar
* catch errors in upload status query
* stop query on error
---------
Co-authored-by: Hailey <me@haileyok.com>
* 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