about summary refs log tree commit diff
path: root/app/javascript/mastodon/components/status.js
AgeCommit message (Collapse)Author
2023-02-20Rename JSX files with proper `.jsx` extension (#23733)Renaud Chaput
2023-02-13Enable ESLint no-useless-escape (#23311)Nick Schonning
2023-01-30Upgrade ESlint to v8 (#23305)Nick Schonning
2022-11-13Change in-app links to keep you in-app (#20540)trwnh
* Change in-app links to keep you in-app * refactor Permalink into Link * rewrite link hrefs in status content * please linter * please linter again
2022-11-10Remove preview cards from fav and boost notifications (#20335)Claire
Fixes #20329
2022-10-25Change layout of posts in web UI (#19423)Eugen Rochko
2022-10-07Add interaction modal to logged-out web UI (#19306)Eugen Rochko
2022-09-23Add user content translations with configurable backends (#19218)Eugen Rochko
2022-08-25Fix case where boolean was passed to onFilter on StatusActionBar (#18923)Takeshi Umeda
2022-08-25Add ability to filter individual posts (#18945)Claire
* Add database table for status-specific filters * Add REST endpoints, entities and attributes * Show status filters in /filters interface * Perform server-side filtering for individual posts filters * Fix filtering on context mismatch * Refactor `toServerSideType` by moving it to its own module * Move loupe and delete icons to their own module * Add ability to filter individual posts from WebUI * Replace keyword list by warnings (expired, context mismatch) * Refactor server-side filtering code * Add tests
2022-08-13Add warning for sensitive audio posts (#17885)Rens Groothuijsen
2022-06-30Fix reblogged statuses being erroneously shown as filtered (#18744)Claire
2022-06-28Revamp post filtering system (#18058)Claire
* Add model for custom filter keywords * Use CustomFilterKeyword internally Does not change the API * Fix /filters/edit and /filters/new * Add migration tests * Remove whole_word column from custom_filters (covered by custom_filter_keywords) * Redesign /filters Instead of a list, present a card that displays more information and handles multiple keywords per filter. * Redesign /filters/new and /filters/edit to add and remove keywords This adds a new gem dependency: cocoon, as well as a npm dependency: cocoon-js-vanilla. Those are used to easily populate and remove form fields from the user interface when manipulating multiple keyword filters at once. * Add /api/v2/filters to edit filter with multiple keywords Entities: - `Filter`: `id`, `title`, `filter_action` (either `hide` or `warn`), `context` `keywords` - `FilterKeyword`: `id`, `keyword`, `whole_word` API endpoits: - `GET /api/v2/filters` to list filters (including keywords) - `POST /api/v2/filters` to create a new filter `keywords_attributes` can also be passed to create keywords in one request - `GET /api/v2/filters/:id` to read a particular filter - `PUT /api/v2/filters/:id` to update a new filter `keywords_attributes` can also be passed to edit, delete or add keywords in one request - `DELETE /api/v2/filters/:id` to delete a particular filter - `GET /api/v2/filters/:id/keywords` to list keywords for a filter - `POST /api/v2/filters/:filter_id/keywords/:id` to add a new keyword to a filter - `GET /api/v2/filter_keywords/:id` to read a particular keyword - `PUT /api/v2/filter_keywords/:id` to edit a particular keyword - `DELETE /api/v2/filter_keywords/:id` to delete a particular keyword * Change from `irreversible` boolean to `action` enum * Remove irrelevent `irreversible_must_be_within_context` check * Fix /filters/new and /filters/edit with update for filter_action * Fix Rubocop/Codeclimate complaining about task names * Refactor FeedManager#phrase_filtered? This moves regexp building and filter caching to the `CustomFilter` class. This does not change the functional behavior yet, but this changes how the cache is built, doing per-custom_filter regexps so that filters can be matched independently, while still offering caching. * Perform server-side filtering and output result in REST API * Fix numerous filters_changed events being sent when editing multiple keywords at once * Add some tests * Use the new API in the WebUI - use client-side logic for filters we have fetched rules for. This is so that filter changes can be retroactively applied without reloading the UI. - use server-side logic for filters we haven't fetched rules for yet (e.g. network error, or initial timeline loading) * Minor optimizations and refactoring * Perform server-side filtering on the streaming server * Change the wording of filter action labels * Fix issues pointed out by linter * Change design of “Show anyway” link in accordence to review comments * Drop “irreversible” filtering behavior * Move /api/v2/filter_keywords to /api/v1/filters/keywords * Rename `filter_results` attribute to `filtered` * Rename REST::LegacyFilterSerializer to REST::V1::FilterSerializer * Fix systemChannelId value in streaming server * Simplify code by removing client-side filtering code The simplifcation comes at a cost though: filters aren't retroactively applied anymore.
2022-05-30Remove unnused otherAccounts property (#18556)Claire
Leftover from before #11896
2022-05-06Replace leftover `envelope` icons with `at` icons (#18305)Stefano Pigozzi
2022-04-29Change "Direct" status visibility to "Only people I mention" in web UI (#18146)Eugen Rochko
- Change name of conversations column in web UI - Change hotkey for opening conversations column from `g d` to `g c` in web UI - Remove shortcuts for creating direct-visibility statuses from web UI
2022-01-19Add support for editing for published statuses (#16697)Eugen Rochko
* Add support for editing for published statuses * Fix references to stripped-out code * Various fixes and improvements * Further fixes and improvements * Fix updates being potentially sent to unauthorized recipients * Various fixes and improvements * Fix wrong words in test * Fix notifying accounts that were tagged but were not in the audience * Fix mistake
2021-11-26Fix opening wrong profile when clicking on username of boosting user in ↵Claire
WebUI (#17060) Fixes #16799
2021-09-26Change routing paths to use usernames in web UI (#16171)Eugen Rochko
2021-07-23Fix crashes with Microsoft Translate on Microsoft Edge (#16525)Claire
Fixes #16509 Microsoft Edge with translation enabled rewrites the DOM in ways that confuse react and prevent it from working properly. Wrapping the offending parts in a span avoids this issue.
2020-12-09Fix open media hotkey (#15308)Jeong Arm
* Fix open media hotkey * Update status.js Co-authored-by: Eugen Rochko <eugen@zeonfederated.com>
2020-12-08Fix the Open handler for PreviewCard (#15305)Takeshi Umeda
2020-12-07Fix unnecessary re-rendering of various components when typing in web UI ↵Eugen Rochko
(#15286)
2020-12-07Fix not being able to open audio modal in web UI (#15283)Eugen Rochko
Fix #15280 Also adds the new action bar and blurhash-based background color to audio and video modals
2020-11-27Change media modals look in web UI (#15217)Eugen Rochko
- Change overlay background to match color of viewed image - Add interactive reply/boost/favourite buttons to footer of modal - Change ugly "View context" link to button among the action bar
2020-11-21Fix hardcoded frame rate for frame by frame video navigation in web UI (#15198)Eugen Rochko
2020-11-16Fix pop-out player appearing on mobile screens in web UI (#15157)Eugen Rochko
Fix #15092
2020-10-27Make visibility icon clickable as part of the time of a toot (#15053)Mélanie Chauvel
- Makes permalink to a toot more easily clickable - Fix clicking between icon and time in fact clicking the display name - Fix clicking slightly under time in fact clicking the display name
2020-09-28Add pop-out player for audio/video in web UI (#14870)Eugen Rochko
Fix #11160
2020-09-26Add unread notification markers (#14818)ThibG
* Add unread notification markers Fixes #14804 * Allow IntersectionObserverArticle's children to be updated
2020-07-09Freeze scroll position when a dropdown menu is open in the TL (#14271)ThibG
* Freeze scroll position when a dropdown menu is open in the TL * Apply this to direct TL as well * Fix case when mouse leaves the menu
2020-07-05Add color extraction for audio thumbnails (#14209)Eugen Rochko
2020-06-29Add customizable thumbnails for audio and video attachments (#14145)Eugen Rochko
- Change audio files to not be stripped of metadata - Automatically extract cover art from audio if it exists - Add `thumbnail` parameter to `POST /api/v1/media`, `POST /api/v2/media` and `PUT /api/v1/media/:id` - Add `icon` to represent it in attachments in ActivityPub - Fix `preview_url` containing URL of missing missing image when there is no thumbnail instead of null - Fix duration of audio not being displayed on public pages until the file is loaded
2020-06-25Add a visibility icon to status (#14123)Takeshi Umeda
* Add a visibility icon to status * Change to using the icon element * Fix RTL * Add a public globe
2020-06-23Change volume control and download buttons in web UI (#14122)Eugen Rochko
* Fix audio download button not starting download in web UI * Fix volume controls on audio and video players in web UI * Remove download button from video player in web UI
2020-06-21Change design of audio players in web UI (#14095)Eugen Rochko
2020-06-06Hide sensitive preview cards with blurhash (#13985)ThibG
* Use preview card blurhash in WebUI * Handle sensitive preview cards
2020-04-25Fix expanded video player issues (#13541)ThibG
Fixes #13536 - Expanding a paused video doesn't autoplay anymore - Default volume level for the expanded video inherited from the original video Position/playing state/volume are carried over from the original video player to the modal, but they're not reported back to the modal as it would require deeper changes.
2020-03-31Improve toot clicking areas (#13327)Mélanie Chauvel (ariasuni)
* Make the area to the left “Show Thread” also expand the toot in Web UI * Clicking the left part of a conversation with the avatars now opens it in Web UI
2019-12-30Fix undefined error regression in status component in web UI (#12712)Eugen Rochko
Regression from #12661
2019-12-29Summary: fix slowness due to layout thrashing when reloading a large … ↵Matt Panaro
(#12661) * Summary: fix slowness due to layout thrashing when reloading a large set of status updates in order to limit the maximum size of a status in a list view (e.g. the home timeline), so as to avoid having to scroll all the way through an abnormally large status update (see https://github.com/tootsuite/mastodon/pull/8205), the following steps are taken: •the element containing the status is rendered in the browser •its height is calculated, to determine if it exceeds the maximum height threshold. Unfortunately for performance, these steps are carried out in the componentDidMount(/Update) method, which also performs style modifications on the element. The combination of height request and style modification during javascript evaluation in the browser leads to layout-thrashing, where the elements are repeatedly re-laid-out (see https://developers.google.com/web/fundamentals/performance/rendering/avoid-large-complex-layouts-and-layout-thrashing & https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Performance_best_practices_for_Firefox_fe_engineers). The solution implemented here is to memoize the collapsed state in Redux the first time the status is seen (e.g. when fetched as part of a small batch, to populate the home timeline) , so that on subsequent re-renders, the value can be queried, rather than recalculated. This strategy is derived from https://github.com/tootsuite/mastodon/pull/4439 & https://github.com/tootsuite/mastodon/pull/4909, and should resolve https://github.com/tootsuite/mastodon/issues/12455. Andrew Lin (https://github.com/onethreeseven) is thanked for his assistance in root cause analysis and solution brainstorming * remove getSnapshotBeforeUpdate from status * remove componentWillUnmount from status * persist last-intersected status update and restore when ScrollableList is restored e.g. when navigating from home-timeline to a status conversational thread and <Back again * cache currently-viewing status id to avoid calling redux with identical value * refactor collapse toggle to pass explicit boolean
2019-12-05Fix media open hotkey (#12546)Jeong Arm
2019-11-29Add hotkey for opening media files (#12498)ThibG
* [WiP] Add hotkey to open media * Give focus to play/pause button when opening video modal
2019-10-24Add noopener and/or noreferrer (#12202)BSKY
2019-08-25Fix more visual issues with the audio player (#11654)Eugen Rochko
* Fix more visual issues with the audio player - Add horizontal baseline in the middle of waveform - Fix audio player colors in light theme - Use audio element instead of web audio API - Do not render any bars until the file is loaded - Do not allow interactions with waveform until the file is loaded * Fix code style issue
2019-08-23Add audio player (#11644)Eugen Rochko
2019-08-19Fix hidden statuses losing focus (#11208)ThibG
Fixes #10991
2019-06-19Add audio uploads (#11123)Eugen Rochko
* Add audio uploads Fix #4827 Accept uploads of OGG, WAV, FLAC, OPUS and MP3 files, and converts them to OGG. Media attachments get a new `audio` type. In the UI, audio uploads are displayed identically to video uploads. * Improve code style
2019-06-10Fix clicking on the left side of a conversation not marking it as read (#11041)ThibG
2019-06-08Put poll options behind content warnings (#10983)ThibG
* Put poll options behind CWs in WebUI * Put polls behind CWs on public pages * Add poll icon to public pages CWs * Revert to not showing an icon in the CW button