about summary refs log tree commit diff
path: root/app/javascript/mastodon
AgeCommit message (Collapse)Author
2020-01-02Fix 12661 (#12744)Matt Panaro
* Revert "persist last-intersected status update and restore when ScrollableList is restored" This reverts commit 07e26142ef6a8e74bd2ac5e9b461a5a1699bd4c8. accidentally merged spurious code in https://github.com/tootsuite/mastodon/pull/12661. https://github.com/tootsuite/mastodon/pull/12735 removes the slowdown that this code was trying to solve; and other functionality successfully restores the view state of the list * Revert "cache currently-viewing status id to avoid calling redux with identical value" This reverts commit c93df2159fbd3888a5c48d8a8b8ae61dbbc54b89. accidentally merged spurious code in https://github.com/tootsuite/mastodon/pull/12661. https://github.com/tootsuite/mastodon/pull/12735 removes the slowdown that this code was trying to solve; and other functionality successfully restores the view state of the list
2019-12-31refactor IntersectionObserver to observe viewport in single-column mode (#12735)Matt Panaro
2019-12-30Fix undefined error regression in status component in web UI (#12712)Eugen Rochko
Regression from #12661
2019-12-29Fix shortNumberFormat to within 3 chars without units (#12706)Takeshi Umeda
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-19Merge branch 'master' into glitch-soc/masterThibaut Girka
Conflicts: - `config/locales/en.yml` No real conflict, upstream added a translatable string “too close” to one specific to glitch-soc - `lib/mastodon/statuses_cli.rb` Fixes made upstream, while changed in glitch-soc to keep bookmarked statuses - `package.json` No real conflict, additional dependency in glitch-soc
2019-12-19fix multiple space (#12655)Marcin Mikołajczak
2019-12-16Fix tooltip messages of multiple poll switcher are reversed (#12616)Acid Chicken (硫酸鶏)
2019-12-12Merge branch 'master' into glitch-soc/merge-upstreamThibaut Girka
Conflicts: - app/controllers/application_controller.rb Minor conflict due to glitch-soc's theming system
2019-12-10Revert "Fix an eslint warning (#12426)" (#12596)Eugen Rochko
This reverts commit 054ef83fc5808596643dd366286b4e85446b850c.
2019-12-07Merge branch 'master' into glitch-soc/merge-upstreamThibaut Girka
Conflicts: - package.json Not really a conflict, caused by an additional dependency in glitch-soc. - yarn.lock Not really a conflict, caused by an additional dependency in glitch-soc.
2019-12-05Fix media open hotkey (#12546)Jeong Arm
2019-12-04Add basic support for group actors (#12071)Takeshi Umeda
* Show badge on group actor in WebUI * Do not notify in case of by following group actor * If you mention group actor, also mention group actor followers * Relax characters that can be used in username (same as Application) * Revert "Relax characters that can be used in username (same as Application)" This reverts commit 7e10a137b878d0db1b5252c52106faef5e09ca4b. * Delete display_name method
2019-12-04upgrade/replace websocket.js to @gamestdio/websocket v2 (#12543)Shlee
* Update stream.js * Update package.json * Update yarn.lock Co-authored-by: hina <hina@hinaloe.net>
2019-12-03Fix poll options not being selectable via keyboard (#12538)ThibG
* Fix poll options not being selectable via keyboard Fixes #12384 * Improve styling of poll option checkboxes/radio buttons * Use more appropriate ARIA roles for poll options * Allow switching between single and multiple choice from keyboard * Coding style * Avoid using .bind()
2019-12-02Fix blocking/unblocking users from status dropdown menu (#12535)ThibG
Fixes #12511
2019-12-02Fix notifications label (#12517)mayaeh
* Fix translations not being displayed * ran `yarn manage:translations en`
2019-12-01Add follow_request notification type (#12198)ThibG
* Add follow_request notification type The notification type already existed in the backend but was never pushed to the front-end. This also means translation strings were also available for the backend, from the notification mailer. Unlike other notification types, these are off by default, to match what I remember of Gargron's view on the topic: that follow requests should not clutter notifications and should instead be reviewed at the user's own leisure in the dedicated column. Since follow requests have their own column, I've deemed it unnecessary to add a specific tab for them in the notification quick filter. * Show follow request link in single-column if there are pending requests, even if account isn't locked * Push follow requests from notifications to the follow_requests list * Offer to accept or reject follow request from the notification * Redesign follow request notification
2019-12-01Merge branch 'master' into glitch-soc/merge-upstreamThibaut Girka
2019-12-01Fix conversations not having an unread indicator in web UI (#12506)Eugen Rochko
2019-11-30Fix lost focus when modals open/close (#12437)ThibG
* Fix lost focus after modal closes Regression caused by the use of the wicg-inert polyfill * Fix regression introduced by wicg-inert * Catch errors to please CodeClimate
2019-11-30Merge branch 'master' into glitch-soc/merge-upstreamThibaut Girka
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-11-29Fix pending upload count not being decremented on error (#12499)ThibG
The arguments were passed to the wrong function… also, there is no need to have a conditional decrementation: failure to upload means we marked an upload as pending, in all cases.
2019-11-25Fix OCR with delete & redraft (#12465)ThibG
2019-11-23Merge branch 'master' into glitch-soc/merge-upstreamThibaut Girka
2019-11-22Fix an eslint warning (#12426)Dimitri Merejkowsky
2019-11-21Change media description label to be context-sensitive (#12270)ThibG
“Describe for the visually impaired” makes no sense when the uploaded media is an audio file.
2019-11-20Merge branch 'master' into glitch-soc/merge-upstreamThibaut Girka
Conflicts: - README.md discarded upstream changes - app/controllers/api/v1/bookmarks_controller.rb finally merged upstream, some code style fixes and slightly changed pagination code - app/controllers/application_controller.rb changed upstream to always return HTML error pages slight conflict caused by theming code - app/models/bookmark.rb finally merged upstream, no real conflict - spec/controllers/api/v1/bookmarks_controller_spec.rb finally merged upstream, slightly changed pagination code
2019-11-20Fix account dropdown not opening due to regression from #12377 (#12430)Eugen Rochko
2019-11-19Add relationship-based options to status dropdowns (#12377)Eugen Rochko
Move bookmark action in inline statuses from action bar to dropdown
2019-11-13New Crowdin translations (#12146)Eugen Rochko
* New translations en.json (Tamil) [ci skip] * New translations en.json (Bengali) [ci skip] * New translations en.json (Portuguese, Brazilian) [ci skip] * New translations en.yml (Portuguese, Brazilian) [ci skip] * New translations en.json (Tamil) [ci skip] * New translations en.json (Tamil) [ci skip] * New translations devise.en.yml (Bengali) [ci skip] * New translations en.json (Tamil) [ci skip] * New translations devise.en.yml (Bengali) [ci skip] * New translations simple_form.en.yml (Bengali) [ci skip] * New translations devise.en.yml (Bengali) [ci skip] * New translations devise.en.yml (Bengali) [ci skip] * New translations devise.en.yml (Bengali) [ci skip] * New translations en.json (Thai) [ci skip] * New translations en.json (Tamil) [ci skip] * New translations en.json (Persian) [ci skip] * New translations en.yml (Persian) [ci skip] * New translations devise.en.yml (Tamil) [ci skip] * New translations devise.en.yml (Tamil) [ci skip] * New translations devise.en.yml (Tamil) [ci skip] * New translations en.json (Occitan) [ci skip] * New translations simple_form.en.yml (Occitan) [ci skip] * New translations en.json (Tamil) [ci skip] * New translations en.json (Occitan) [ci skip] * New translations en.yml (Occitan) [ci skip] * New translations en.json (Tamil) [ci skip] * New translations simple_form.en.yml (Tamil) [ci skip] * New translations en.json (Tamil) [ci skip] * New translations simple_form.en.yml (Tamil) [ci skip] * New translations activerecord.en.yml (Tamil) [ci skip] * New translations en.json (Tamil) [ci skip] * New translations en.json (Tamil) [ci skip] * New translations en.json (Arabic) [ci skip] * New translations en.yml (Arabic) [ci skip] * New translations simple_form.en.yml (Arabic) [ci skip] * New translations en.json (Finnish) [ci skip] * New translations en.json (Danish) [ci skip] * New translations en.json (Kannada) [ci skip] * New translations en.yml (Kannada) [ci skip] * New translations simple_form.en.yml (Kannada) [ci skip] * New translations activerecord.en.yml (Kannada) [ci skip] * New translations devise.en.yml (Kannada) [ci skip] * New translations doorkeeper.en.yml (Kannada) [ci skip] * New translations en.json (Marathi) [ci skip] * New translations en.yml (Marathi) [ci skip] * New translations simple_form.en.yml (Marathi) [ci skip] * New translations activerecord.en.yml (Marathi) [ci skip] * New translations devise.en.yml (Marathi) [ci skip] * New translations doorkeeper.en.yml (Marathi) [ci skip] * New translations en.json (Marathi) [ci skip] * New translations en.json (Hindi) [ci skip] * New translations en.yml (Hindi) [ci skip] * New translations simple_form.en.yml (Hindi) [ci skip] * New translations activerecord.en.yml (Hindi) [ci skip] * New translations devise.en.yml (Hindi) [ci skip] * New translations doorkeeper.en.yml (Hindi) [ci skip] * New translations en.json (Marathi) [ci skip] * New translations en.json (Urdu (Pakistan)) [ci skip] * New translations en.yml (Urdu (Pakistan)) [ci skip] * New translations simple_form.en.yml (Urdu (Pakistan)) [ci skip] * New translations activerecord.en.yml (Urdu (Pakistan)) [ci skip] * New translations devise.en.yml (Urdu (Pakistan)) [ci skip] * New translations doorkeeper.en.yml (Urdu (Pakistan)) [ci skip] * New translations activerecord.en.yml (Marathi) [ci skip] * New translations doorkeeper.en.yml (Marathi) [ci skip] * New translations doorkeeper.en.yml (Marathi) [ci skip] * New translations en.json (Marathi) [ci skip] * New translations simple_form.en.yml (Finnish) [ci skip] * New translations en.json (Marathi) [ci skip] * New translations en.json (Marathi) [ci skip] * New translations en.json (Marathi) [ci skip] * New translations en.json (Tamil) [ci skip] * New translations en.json (Marathi) [ci skip] * New translations en.json (Marathi) [ci skip] * New translations en.json (Marathi) [ci skip] * New translations en.json (Hindi) [ci skip] * New translations en.yml (Persian) [ci skip] * New translations simple_form.en.yml (Persian) [ci skip] * New translations devise.en.yml (Bengali) [ci skip] * New translations en.json (Hindi) [ci skip] * New translations devise.en.yml (Bengali) [ci skip] * New translations en.json (Hindi) [ci skip] * New translations en.json (Hindi) [ci skip] * New translations en.json (Hindi) [ci skip] * New translations en.json (Hindi) [ci skip] * New translations en.json (Hindi) [ci skip] * New translations en.json (Hindi) [ci skip] * New translations en.json (Hindi) [ci skip] * New translations en.json (Malayalam) [ci skip] * New translations en.yml (Malayalam) [ci skip] * New translations simple_form.en.yml (Malayalam) [ci skip] * New translations activerecord.en.yml (Malayalam) [ci skip] * New translations devise.en.yml (Malayalam) [ci skip] * New translations doorkeeper.en.yml (Malayalam) [ci skip] * New translations en.yml (Slovak) [ci skip] * New translations en.json (Slovak) [ci skip] * New translations en.yml (Slovak) [ci skip] * New translations simple_form.en.yml (Slovak) [ci skip] * New translations devise.en.yml (Slovak) [ci skip] * New translations en.json (Slovak) [ci skip] * New translations simple_form.en.yml (Slovak) [ci skip] * New translations doorkeeper.en.yml (Slovak) [ci skip] * New translations en.yml (Bengali) [ci skip] * New translations en.json (Ukrainian) [ci skip] * New translations simple_form.en.yml (Ukrainian) [ci skip] * New translations en.json (Norwegian Nynorsk) [ci skip] * New translations en.yml (Bengali) [ci skip] * New translations en.json (Hindi) [ci skip] * New translations devise.en.yml (Ukrainian) [ci skip] * New translations simple_form.en.yml (Ukrainian) [ci skip] * New translations en.json (Norwegian Nynorsk) [ci skip] * New translations en.json (Hindi) [ci skip] * New translations en.json (Norwegian Nynorsk) [ci skip] * New translations en.json (Hindi) [ci skip] * New translations en.json (Norwegian Nynorsk) [ci skip] * New translations en.json (Hindi) [ci skip] * New translations en.json (Malayalam) [ci skip] * New translations en.yml (Indonesian) [ci skip] * New translations en.json (Norwegian Nynorsk) [ci skip] * New translations simple_form.en.yml (Tamil) [ci skip] * New translations en.json (Hindi) [ci skip] * New translations en.yml (Malayalam) [ci skip] * New translations en.yml (Indonesian) [ci skip] * New translations en.json (Hindi) [ci skip] * New translations en.yml (Indonesian) [ci skip] * New translations en.json (Hindi) [ci skip] * New translations en.json (Hindi) [ci skip] * New translations en.json (Hindi) [ci skip] * New translations en.json (Hindi) [ci skip] * New translations en.json (Italian) [ci skip] * New translations en.json (Hindi) [ci skip] * New translations en.json (Hindi) [ci skip] * New translations en.yml (Hindi) [ci skip] * New translations en.json (Hindi) [ci skip] * New translations en.json (Marathi) [ci skip] * New translations en.json (Marathi) [ci skip] * New translations devise.en.yml (Tamil) [ci skip] * New translations en.json (Marathi) [ci skip] * New translations devise.en.yml (Tamil) [ci skip] * New translations en.json (Marathi) [ci skip] * New translations en.yml (Galician) [ci skip] * New translations simple_form.en.yml (Galician) [ci skip] * New translations simple_form.en.yml (Chinese Simplified) [ci skip] * New translations doorkeeper.en.yml (Chinese Simplified) [ci skip] * New translations en.json (Hungarian) [ci skip] * New translations en.yml (Hungarian) [ci skip] * New translations simple_form.en.yml (Japanese) [ci skip] * New translations en.yml (Chinese Simplified) [ci skip] * New translations en.json (Bengali) [ci skip] * New translations en.json (Basque) [ci skip] * New translations en.json (Spanish, Argentina) [ci skip] * New translations en.json (Russian) [ci skip] * New translations en.yml (Persian) [ci skip] * New translations en.yml (Russian) [ci skip] * New translations en.yml (Catalan) [ci skip] * New translations en.yml (Greek) [ci skip] * New translations en.yml (Swedish) [ci skip] * New translations en.yml (Swedish) [ci skip] * New translations en.json (Estonian) [ci skip] * New translations en.yml (Estonian) [ci skip] * New translations en.yml (Spanish, Argentina) [ci skip] * New translations en.yml (Estonian) [ci skip] * New translations en.yml (Japanese) [ci skip] * New translations devise.en.yml (Estonian) [ci skip] * New translations en.yml (Bengali) [ci skip] * New translations en.yml (Indonesian) [ci skip] * New translations en.yml (Bengali) [ci skip] * New translations en.yml (Kazakh) [ci skip] * New translations en.yml (Bengali) [ci skip] * New translations en.yml (Finnish) [ci skip] * New translations doorkeeper.en.yml (Finnish) [ci skip] * New translations en.json (Malayalam) [ci skip] * New translations doorkeeper.en.yml (Finnish) [ci skip] * New translations en.json (Malayalam) [ci skip] * New translations en.yml (Tamil) [ci skip] * New translations en.yml (Tamil) [ci skip] * New translations en.yml (Tamil) [ci skip] * New translations en.json (Malayalam) [ci skip] * New translations simple_form.en.yml (Estonian) [ci skip] * New translations en.json (Malayalam) [ci skip] * New translations devise.en.yml (Malayalam) [ci skip] * New translations en.yml (Estonian) [ci skip] * New translations simple_form.en.yml (Estonian) [ci skip] * New translations simple_form.en.yml (Malayalam) [ci skip] * New translations en.yml (Turkish) [ci skip] * New translations devise.en.yml (Portuguese, Brazilian) [ci skip] * New translations simple_form.en.yml (Portuguese, Brazilian) [ci skip] * New translations devise.en.yml (Portuguese, Brazilian) [ci skip] * New translations simple_form.en.yml (Portuguese, Brazilian) [ci skip] * New translations en.yml (Hungarian) [ci skip] * New translations en.yml (Swedish) [ci skip] * New translations en.yml (Swedish) [ci skip] * New translations en.yml (Swedish) [ci skip] * New translations en.yml (Swedish) [ci skip] * New translations en.yml (Swedish) [ci skip] * New translations en.yml (Corsican) [ci skip] * New translations en.yml (French) [ci skip] * New translations en.json (Esperanto) [ci skip] * New translations simple_form.en.yml (Slovak) [ci skip] * New translations devise.en.yml (Slovak) [ci skip] * New translations en.json (Hindi) [ci skip] * New translations devise.en.yml (Tamil) [ci skip] * New translations en.yml (Tamil) [ci skip] * New translations doorkeeper.en.yml (Tamil) [ci skip] * New translations doorkeeper.en.yml (Tamil) [ci skip] * New translations doorkeeper.en.yml (Slovak) [ci skip] * New translations en.yml (Spanish) [ci skip] * New translations en.yml (Estonian) [ci skip] * New translations en.yml (Estonian) [ci skip] * New translations en.yml (Estonian) [ci skip] * New translations en.yml (Estonian) [ci skip] * New translations en.yml (Estonian) [ci skip] * New translations en.json (Chinese Simplified) [ci skip] * New translations devise.en.yml (Chinese Simplified) [ci skip] * New translations en.yml (Chinese Simplified) [ci skip] * New translations devise.en.yml (Chinese Simplified) [ci skip] * New translations en.yml (Chinese Simplified) [ci skip] * New translations en.yml (Chinese Simplified) [ci skip] * New translations en.yml (Chinese Simplified) [ci skip] * New translations en.yml (Chinese Simplified) [ci skip] * New translations simple_form.en.yml (Chinese Simplified) [ci skip] * New translations en.json (Hindi) [ci skip] * New translations en.json (Hindi) [ci skip] * New translations en.json (Hindi) [ci skip] * New translations en.json (Hindi) [ci skip] * New translations en.yml (Basque) [ci skip] * New translations en.yml (Czech) [ci skip] * New translations en.yml (Danish) [ci skip] * New translations en.yml (Danish) [ci skip] * New translations en.yml (Ukrainian) [ci skip] * New translations devise.en.yml (Ukrainian) [ci skip] * New translations en.yml (Russian) [ci skip] * New translations en.json (Malayalam) [ci skip] * New translations en.json (Malayalam) [ci skip] * New translations en.json (Malayalam) [ci skip] * New translations en.yml (Bengali) [ci skip] * New translations en.yml (Bengali) [ci skip] * New translations en.json (Hindi) [ci skip] * New translations en.yml (Galician) [ci skip] * New translations en.json (Tamil) [ci skip] * New translations en.json (Russian) [ci skip] * New translations en.yml (Russian) [ci skip] * New translations doorkeeper.en.yml (Russian) [ci skip] * New translations en.json (Estonian) [ci skip] * New translations en.yml (Chinese Simplified) [ci skip] * New translations doorkeeper.en.yml (Chinese Simplified) [ci skip] * New translations en.yml (French) [ci skip] * New translations en.json (Bengali) [ci skip] * i18n-tasks normalize * yarn manage:translations
2019-11-13Add bookmarks (#7107)ThibG
* Add backend support for bookmarks Bookmarks behave like favourites, except they aren't shared with other users and do not have an associated counter. * Add spec for bookmark endpoints * Add front-end support for bookmarks * Introduce OAuth scopes for bookmarks * Add bookmarks to archive takeout * Fix migration * Coding style fixes * Fix rebase issue * Update bookmarked_statuses to latest UI changes * Update bookmark actions to properly reflect status changes in state * Add bookmarks item to single-column layout * Make active bookmarks red
2019-11-11Fix unread toot indicator not honoring onlyMedia in public and community ↵ThibG
timelines (#12330) * Fix unread toot indicator not honoring onlyMedia in public and community timelines * Fixup: `unread` already accounts for new content in pending items
2019-11-07Merge branch 'master' into glitch-soc/merge-upstreamThibaut Girka
Conflicts: - `app/javascript/mastodon/features/compose/components/poll_form.js` conflict because of the poll option limit being different than upstream's
2019-11-07Fix WebUI allowing to upload more items than the limit (#12300)ThibG
Until this patch, drag'n'drop and copy-paste allowed to start uploading as long as the number of *finished* uploads was below the limit.
2019-11-07Minor improvements to poll composing UI (#12319)ThibG
- Disable the “add option” button instead of hiding it - Allow poll option inputs to scale to full width
2019-11-06Merge branch 'master' into glitch-soc/merge-upstreamThibaut Girka
Conflicts: - `package.json`
2019-11-04Use inert polyfill (#12209)Gabriel Rubens
* Inserting wicg-inert in project * Import wicg-inert in moda_root component * Update yarn.lock * Solving code style problems * Removing package-lock
2019-11-04Integrate own poll's translation into own_poll. (#12231)mayaeh
run `yarn manage:translations en`
2019-11-04fix: support KaiOS arrow navigation on public pages (#12251)Nolan Lawson
2019-11-04Fix filtered out items being counted as pending items (#12266)ThibG
2019-11-04Fix notification filters not applying to poll options (#12269)ThibG
2019-11-04Add support for submitting media description with ctrl+enter (#12272)ThibG
2019-11-04dont crash with null-ref (#12274)Hinaloe
2019-10-27Fix notification message for own poll (#12219)Yamagishi Kazutoshi
2019-10-27Fix an issue where polls with 'expires_at' not set expired (#12222)Takeshi Umeda
2019-10-27Merge branch 'master' into glitch-soc/merge-upstreamThibaut Girka
Conflicts: - README.md - app/helpers/statuses_helper.rb Upstream moved account helpers to their own file, we had extra helpers there, moved too. - app/lib/sanitize_config.rb - app/models/user.rb - app/serializers/initial_state_serializer.rb - config/locales/simple_form.en.yml - spec/lib/sanitize_config_spec.rb
2019-10-25Add download button to audio and video players (#12179)Nima Boscarino
* Add download button for audio player * Add download button for video player * fix padding for download button in Audio component
2019-10-24Add setting for whether to crop images in unexpanded toots (#12126)Faye Duxovni