Commit graph

111 commits

Author SHA1 Message Date
Nick Schonning
c49213f0ea
Upgrade ESlint to v8 () 2023-01-30 01:45:35 +01:00
Connor Shea
30e895299c
Add listing of followed hashtags ()
* Add followed_tags route.

This at least gets us to the point where the page can actually be
rendered, although it doesn't display any hashtags (yet?).

Attempting to implement .

* Fix minor issues.

* I've got the followed tags data partially working

But the Hashtag component errors for some reason. Something about the
value of the history attribute being invalid.

* Fix a mistake in the code

* Minor change.

* Get the followed hashtags list fully working.

Still need to add the Follow/Unfollow buttons, though.

* Resolve JS linter issues.

* Add pagination logic to followed tags list view.

However, it currently loads further pages immediately on page load, so
that's not ideal. Need to figure that one out.

* Appease the linter.

* Apply suggestions from code review

Co-authored-by: Claire <claire.github-309c@sitedethib.com>

* Fixes and resolve some other feedback.

* Use set/update instead of setIn/updateIn.

Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2023-01-18 16:44:33 +01:00
Claire
3970a6f433
Add option to make the landing page be /about even when trends are enabled ()
* Add option to make the landing page be /about even when trends are enabled

* Restablish /explore as landing page by default
2023-01-18 16:43:58 +01:00
Cutls
553b169d48
Do not show drag&drop dialog when not logined ()
* Cannot upload until login

* and do not fire upload

* change username props to context
2022-11-11 21:19:48 +01:00
Eugen Rochko
1fd6460b02
Change floating action button to be a button in header in web UI ()
- Fix theme color
- Fix elephant being too big on error page on small screens
- Remove "Follows and Followers" link from navigation panel
2022-10-23 15:58:24 +02:00
Eugen Rochko
a43a823768
Add error boundary around routes in web UI ()
* Add error boundary around routes in web UI

* Update app/javascript/mastodon/features/ui/util/react_router_helpers.js

Co-authored-by: Yamagishi Kazutoshi <ykzts@desire.sh>

* Update app/javascript/mastodon/features/ui/util/react_router_helpers.js

Co-authored-by: Yamagishi Kazutoshi <ykzts@desire.sh>

* Update app/javascript/mastodon/features/ui/components/bundle_column_error.js

Co-authored-by: Yamagishi Kazutoshi <ykzts@desire.sh>

Co-authored-by: Yamagishi Kazutoshi <ykzts@desire.sh>
2022-10-22 23:18:32 +02:00
Claire
062b3c9090
Change landing page to be /about instead of /explore when trends are disabled () 2022-10-22 18:09:51 +02:00
Eugen Rochko
839f893168
Change public accounts pages to mount the web UI ()
* Change public accounts pages to mount the web UI

* Fix handling of remote usernames in routes

- When logged in, serve web app
- When logged out, redirect to permalink
- Fix `app-body` class not being set sometimes due to name conflict

* Fix missing `multiColumn` prop

* Fix failing test

* Use `discoverable` attribute to control indexing directives

* Fix `<ColumnLoading />` not using `multiColumn`

* Add `noindex` to accounts in REST API

* Change noindex directive to not be rendered by default before a route is mounted

* Add loading indicator for detailed status in web UI

* Fix missing indicator appearing while account is loading in web UI
2022-10-20 14:35:29 +02:00
Takeshi Umeda
4c7b5fb6c1
Add featured tags selector for WebUI ()
* Add featured tags selector for WebUI

* Add title to tag count
2022-10-16 08:43:59 +02:00
Yamagishi Kazutoshi
7afc6a630c
Redirect non-logged-in user to owner statuses on single user mode () 2022-10-12 21:07:30 +02:00
Yamagishi Kazutoshi
a5112b51fd
Add title to pages with missing title in Web UI () 2022-10-09 03:55:09 +02:00
Eugen Rochko
a2ba011326
Change privacy policy to be rendered in web UI, add REST API ()
Source string no longer localized, Markdown instead of raw HTML
2022-10-08 06:01:11 +02:00
Eugen Rochko
d2528b26b6
Add server banner to web app, add GET /api/v2/instance to REST API () 2022-10-05 03:47:56 +02:00
Eugen Rochko
e2b561e3a5
Fix logged-out web UI on smaller screens () 2022-10-04 20:13:23 +02:00
Eugen Rochko
43b5d5e38d
Add logged-out access to the web UI () 2022-09-29 04:39:33 +02:00
Claire
02851848e9
Revamp post filtering system ()
* 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-06-28 09:42:13 +02:00
Claire
eed5a4bf9c
Fix empty “Server rules violation” report option () 2022-04-28 21:29:29 +02:00
Eugen Rochko
d4592bbfcd
Add explore page to web UI ()
* Add explore page to web UI

* Fix not removing loaded statuses from trends on mute/block action
2022-02-25 00:34:33 +01:00
Claire
11502ae46e
Add aliases for WebUI routes that were renamed in ()
* Add aliases for some WebUI routes that were renamed in 

Accounts and statuses routes need more work as they use different parameters.

* Add aliases for /statuses/* routes

* Add aliases for /accounts/* WebUI routes

Does not correctly set the “active” state on the navigation tabs but this is
a minor issue.

* Fix some routes

* Fix /accounts/:id/{media,followers,following} not loading on legacy routes
2021-09-27 07:23:48 +02:00
Eugen Rochko
52e5c07948
Change routing paths to use usernames in web UI () 2021-09-26 05:46:13 +02:00
Claire
d3791cca0c
Improve modal flow and back button handling ()
* Refactor shouldUpdateScroll passing

So far, shouldUpdateScroll has been manually passed down from the very top of
the React component hierarchy even though it is a static function common to
all ScrollContainer instances, so replaced that with a custom class extending
ScrollContainer.

* Generalize “press back to close modal” to any modal and to public pages

* Fix boost confirmation modal closing media modal
2021-07-13 15:45:17 +02:00
Claire
92f1d739b5
Fix unread notification count when polling ()
* Fix unread notification count when polling

Fixes 

* Immediately fetch markers to avoid incorrect unread notification count
2021-05-19 23:51:05 +02:00
Eugen Rochko
0ad240cb6b
Change home timeline to reload after follow recommendations in web UI () 2021-05-07 14:33:57 +02:00
Eugen Rochko
bf903dc510
Change onboarding by replacing tutorial with follow recommendations in web UI () 2021-04-19 14:45:15 +02:00
Eugen Rochko
18ca4e0e9a
Fix pop-out player appearing on mobile screens in web UI ()
Fix 
2020-11-16 05:16:39 +01:00
ThibG
f54ca3d08e
Fix browser notification permission request logic ()
* Add notification permission handling code

* Request notification permission when enabling any notification setting

* Add badge to notification settings when permissions insufficient

* Disable alerts by default, requesting permission and enable them on onboarding
2020-10-13 00:37:21 +02:00
ThibG
63770d3aac
Ignore alt-key hotkeys in text fields ()
Fixes 

This used to be the case until , which introduced a hotkey to toggle
the Content Warning field.

Unfortunately, MacOS relies on the “alt” key for many things, including
composing text (see ), therefore, even if that makes the CW toggle
hotkey significantly less useful, it makes sense to not interfere with
composing toots.
2020-10-05 22:04:06 +02:00
Takeshi Umeda
bec8b12bb5
Fix mark as read in notifications to be saved immediately ()
* Fix mark as read in notifications to be saved immediately

* fix code style
2020-10-01 04:17:46 +02:00
Eugen Rochko
d88a79b456
Add pop-out player for audio/video in web UI ()
Fix 
2020-09-28 13:29:43 +02:00
ThibG
ff89025979
Add unread notification markers ()
* Add unread notification markers

Fixes 

* Allow IntersectionObserverArticle's children to be updated
2020-09-26 20:57:07 +02:00
ThibG
6b6a9d0ea3
Add hotkey for toggling content warning composer field () 2020-06-09 10:32:32 +02:00
ThibG
eeddb1a624
Fix unsent toot confirmation dialog not popping up in single column () 2020-05-31 20:38:56 +02:00
ThibG
5aff2a6957
Fix timeline markers not working on Chrome ()
* Periodically save timeline markers

This saves timeline markers immediately upon message arrival, but not more
than once every 5 minutes.

This does not change how the markers are saved on closing the window,
except that it avoids submitting them if there is no need for it.

* Use the Fetch API when possible instead of XHR on window unload
2020-05-29 16:14:16 +02:00
ThibG
a690b3e470 Add hotkey for opening media files ()
* [WiP] Add hotkey to open media

* Give focus to play/pause button when opening video modal
2019-11-29 17:02:35 +01:00
ThibG
dfea7368c9 Add bookmarks ()
* 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-13 23:02:10 +01:00
Hinaloe
8568018935 dont crash with null-ref () 2019-11-04 12:58:19 +01:00
Jeong Arm
3abe003f59 Fix drag and drop link to composebox () 2019-10-02 17:10:56 +02:00
Eugen Rochko
bdeff5ae15
Fix web UI allowing uploads past status limit via drag & drop ()
Fix 
2019-09-16 20:42:19 +02:00
Eugen Rochko
e445a8af64
Add timeline read markers API ()
Fix 
2019-09-06 13:55:51 +02:00
Eugen Rochko
cb447b28c4
Add profile directory to web UI ()
* Add profile directory to web UI

* Add a line of bio to the directory
2019-08-30 00:14:36 +02:00
ThibG
bd4099d976 Change window resize handler to switch to/from mobile layout as soon as needed () 2019-08-25 15:48:50 +02:00
Eugen Rochko
c09ecbc53e
Add indicator of unread content to window title when web UI is out of focus ()
Fix 
2019-08-13 12:22:16 +02:00
Eugen Rochko
aa22b38fdb
Change single-column mode to scroll the whole page ()
Fix 
2019-07-19 09:25:22 +02:00
ThibG
a472190729 Add a keyboard shortcut to hide/show media ()
* Move control of media visibility to parent component

* Add keyboard shortcut to toggle media visibility
2019-05-25 23:20:51 +02:00
Eugen Rochko
1e5532e693
Add responsive panels to the single-column layout ()
* Add responsive panels to the single-column layout

* Fixes

* Fix not being able to save the preference

* Fix code style issues

* Set max-height on the compose textarea and add a link to relationship manager
2019-05-25 21:27:00 +02:00
Eugen Rochko
9ddeb30f90
Add forceSingleColumn prop to <UI /> ()
* Move TabsBar rendering logic from CSS to the ColumnsArea component

* Add forceSingleColumn mode

* Add unread notifications counter to tabs bar

* Add toggle to control `forceSingleColumn`

* Increase paddings in mobile layout responsively at large sizes
2019-05-23 01:35:22 +02:00
ThibG
4f73cde4e1 Minor account media gallery fixes ()
* Make the cursor icon consistant across media types in account media gallery

* Fix the video player modal causing scroll position to reset
2019-05-04 17:36:43 +02:00
ThibG
5121d9c12f When selecting a toot via keyboard, ensure it is scrolled into view () 2019-05-03 06:20:35 +02:00
tmm576
750c67660d Allow multiple files upload through web UI, including drag & drop ()
* Allow drag and drop uploads of multiple files to compose

* Calculate aggregate upload progress for single action

* Allow multiple uploads to compose through traditional input, consolidate update file limit logic, provide file limit feedback
2019-02-02 20:22:05 +01:00
tmm576
4cd0a10793 Allow event defaults on index for text data transfer () 2019-01-17 23:27:51 +01:00