Commit graph

9430 commits

Author SHA1 Message Date
Claire 5c808ee0de Revert support from loading Home timeline from database
Unfortunately, the database query could turn out very inefficient and I did not
manage to find a way to improve that. Furthermore, there were still behavior
inconsistencies between fetching the timeline from Redis and fetching it from
Postgres.
2022-04-19 15:06:38 +02:00
Claire ec4a8d81b1 Revert DM support in HomeFeed#from_database
Fixes #1746

Queries could get prohibitively expensive.
2022-04-16 21:28:46 +02:00
Claire 5db3a14388
Fix loading Home TL from database not respecting min_id and not including DMs (#1744)
* Rework tests

* Add tests

* Fix HomeFeed#get with min_id fetching from database

* Minor code cleanup and optimizations

* Add tests

* Take DMs into account when fetching home TL from database

* Fix not listing own DMs in Home timeline

* Add tests

* Please CodeClimate
2022-04-14 17:44:21 +02:00
Claire e06b0234df Merge branch 'main' into glitch-soc/merge-upstream 2022-04-14 14:21:14 +02:00
Eugen Rochko 07994cf4f6
New Crowdin updates (#17995)
* New translations en.json (Catalan)

* New translations en.yml (Persian)

* New translations en.yml (Romanian)

* New translations en.yml (Afrikaans)

* New translations en.yml (Bulgarian)

* New translations en.yml (Czech)

* New translations en.yml (Spanish, Argentina)

* New translations en.yml (Spanish, Mexico)

* New translations en.yml (Sanskrit)

* New translations en.yml (Asturian)

* New translations en.yml (Serbian (Latin))

* New translations en.yml (Kurmanji (Kurdish))

* New translations en.yml (Sorani (Kurdish))

* New translations en.yml (Corsican)

* New translations en.yml (Sardinian)

* New translations en.yml (Kabyle)

* New translations en.yml (Cornish)

* New translations en.yml (Ido)

* New translations en.yml (Taigi)

* New translations en.yml (Silesian)

* New translations en.yml (Standard Moroccan Tamazight)

* New translations en.json (Czech)

* New translations en.json (Hungarian)

* New translations en.yml (Kannada)

* New translations en.yml (Sinhala)

* New translations en.yml (Bengali)

* New translations en.yml (Hindi)

* New translations en.yml (Marathi)

* New translations en.yml (Croatian)

* New translations en.yml (Norwegian Nynorsk)

* New translations en.yml (Kazakh)

* New translations en.yml (Estonian)

* New translations en.yml (Latvian)

* New translations en.yml (Malay)

* New translations en.yml (Breton)

* New translations en.yml (Telugu)

* New translations en.yml (Welsh)

* New translations en.yml (Esperanto)

* New translations en.yml (Uyghur)

* New translations en.yml (Chinese Traditional, Hong Kong)

* New translations en.yml (Tatar)

* New translations en.yml (Malayalam)

* New translations en.json (Icelandic)

* New translations en.json (Vietnamese)

* New translations en.yml (Korean)

* New translations en.yml (Catalan)

* New translations en.yml (Czech)

* New translations en.yml (Icelandic)

* New translations en.json (Korean)

* New translations en.json (Polish)

* New translations en.yml (Albanian)

* New translations en.json (Albanian)

* New translations en.yml (Vietnamese)

* New translations en.yml (Chinese Traditional)

* New translations en.json (Chinese Traditional)

* New translations en.json (Vietnamese)

* New translations en.json (Russian)

* New translations en.yml (Russian)

* New translations en.json (Russian)

* New translations en.json (Latvian)

* New translations en.yml (Spanish, Argentina)

* New translations en.json (Spanish, Argentina)

* New translations en.yml (Danish)

* New translations en.yml (Latvian)

* New translations en.yml (Spanish)

* New translations en.json (Spanish)

* New translations simple_form.en.yml (Catalan)

* New translations simple_form.en.yml (Chinese Traditional)

* New translations simple_form.en.yml (Portuguese)

* New translations simple_form.en.yml (Russian)

* New translations simple_form.en.yml (Slovak)

* New translations simple_form.en.yml (Albanian)

* New translations simple_form.en.yml (Serbian (Cyrillic))

* New translations simple_form.en.yml (Swedish)

* New translations simple_form.en.yml (Turkish)

* New translations simple_form.en.yml (Ukrainian)

* New translations simple_form.en.yml (Dutch)

* New translations simple_form.en.yml (Vietnamese)

* New translations simple_form.en.yml (Galician)

* New translations simple_form.en.yml (Icelandic)

* New translations simple_form.en.yml (Portuguese, Brazilian)

* New translations simple_form.en.yml (Indonesian)

* New translations simple_form.en.yml (Persian)

* New translations simple_form.en.yml (Tamil)

* New translations simple_form.en.yml (Spanish, Argentina)

* New translations simple_form.en.yml (Spanish, Mexico)

* New translations simple_form.en.yml (Bengali)

* New translations simple_form.en.yml (Norwegian)

* New translations simple_form.en.yml (Slovenian)

* New translations simple_form.en.yml (Danish)

* New translations simple_form.en.yml (Chinese Simplified)

* New translations simple_form.en.yml (Thai)

* New translations simple_form.en.yml (Polish)

* New translations simple_form.en.yml (Romanian)

* New translations simple_form.en.yml (French)

* New translations simple_form.en.yml (Spanish)

* New translations simple_form.en.yml (Arabic)

* New translations simple_form.en.yml (Bulgarian)

* New translations simple_form.en.yml (Czech)

* New translations simple_form.en.yml (German)

* New translations simple_form.en.yml (Greek)

* New translations simple_form.en.yml (Basque)

* New translations simple_form.en.yml (Finnish)

* New translations simple_form.en.yml (Hebrew)

* New translations simple_form.en.yml (Hungarian)

* New translations simple_form.en.yml (Armenian)

* New translations simple_form.en.yml (Italian)

* New translations simple_form.en.yml (Japanese)

* New translations simple_form.en.yml (Georgian)

* New translations simple_form.en.yml (Korean)

* New translations simple_form.en.yml (Croatian)

* New translations simple_form.en.yml (Ido)

* New translations simple_form.en.yml (Kabyle)

* New translations simple_form.en.yml (Sardinian)

* New translations simple_form.en.yml (Corsican)

* New translations simple_form.en.yml (Sorani (Kurdish))

* New translations simple_form.en.yml (Kurmanji (Kurdish))

* New translations simple_form.en.yml (Serbian (Latin))

* New translations simple_form.en.yml (Occitan)

* New translations simple_form.en.yml (Asturian)

* New translations simple_form.en.yml (Scottish Gaelic)

* New translations simple_form.en.yml (Norwegian Nynorsk)

* New translations simple_form.en.yml (Sinhala)

* New translations simple_form.en.yml (Breton)

* New translations simple_form.en.yml (Malayalam)

* New translations simple_form.en.yml (Tatar)

* New translations simple_form.en.yml (Chinese Traditional, Hong Kong)

* New translations simple_form.en.yml (Esperanto)

* New translations simple_form.en.yml (Welsh)

* New translations simple_form.en.yml (Latvian)

* New translations simple_form.en.yml (Estonian)

* New translations simple_form.en.yml (Kazakh)

* New translations simple_form.en.yml (Standard Moroccan Tamazight)

* New translations simple_form.en.yml (Czech)

* New translations simple_form.en.yml (Latvian)

* New translations simple_form.en.yml (Spanish)

* New translations simple_form.en.yml (Czech)

* New translations simple_form.en.yml (Korean)

* New translations simple_form.en.yml (Russian)

* New translations simple_form.en.yml (Spanish, Argentina)

* New translations simple_form.en.yml (Polish)

* New translations en.json (Swedish)

* New translations en.yml (Italian)

* New translations en.json (Italian)

* New translations simple_form.en.yml (Italian)

* New translations simple_form.en.yml (Catalan)

* New translations en.yml (Portuguese)

* New translations en.json (Portuguese)

* New translations en.yml (Kurmanji (Kurdish))

* New translations simple_form.en.yml (Portuguese)

* New translations simple_form.en.yml (Russian)

* New translations en.json (French)

* New translations simple_form.en.yml (French)

* New translations en.json (Polish)

* New translations en.json (Polish)

* New translations en.yml (Kurmanji (Kurdish))

* New translations simple_form.en.yml (Kurmanji (Kurdish))

* New translations simple_form.en.yml (Arabic)

* New translations en.yml (Arabic)

* New translations simple_form.en.yml (Arabic)

* New translations doorkeeper.en.yml (Arabic)

* New translations en.yml (Arabic)

* New translations doorkeeper.en.yml (Arabic)

* New translations simple_form.en.yml (Chinese Traditional)

* New translations en.yml (Esperanto)

* New translations en.json (Esperanto)

* New translations en.yml (Esperanto)

* New translations en.yml (Turkish)

* New translations en.json (Turkish)

* New translations simple_form.en.yml (Turkish)

* New translations en.yml (Czech)

* New translations en.yml (Esperanto)

* New translations en.yml (Esperanto)

* New translations en.yml (Esperanto)

* New translations en.yml (Greek)

* New translations en.json (Greek)

* New translations simple_form.en.yml (Greek)

* New translations simple_form.en.yml (Icelandic)

* New translations en.yml (Czech)

* New translations en.yml (Ukrainian)

* New translations en.yml (Ukrainian)

* New translations en.json (Ukrainian)

* New translations simple_form.en.yml (Ukrainian)

* New translations en.yml (Ukrainian)

* New translations en.json (Ukrainian)

* New translations doorkeeper.en.yml (Ukrainian)

* New translations simple_form.en.yml (Danish)

* New translations en.yml (Galician)

* New translations en.json (Galician)

* New translations simple_form.en.yml (Galician)

* New translations simple_form.en.yml (Vietnamese)

* New translations en.yml (German)

* New translations en.json (German)

* New translations en.yml (Esperanto)

* New translations en.yml (Esperanto)

* New translations en.yml (Esperanto)

* New translations en.yml (Esperanto)

* New translations en.yml (Esperanto)

* New translations en.yml (Esperanto)

* New translations en.json (French)

* New translations en.yml (Indonesian)

* New translations en.json (Indonesian)

* New translations en.yml (Indonesian)

* New translations simple_form.en.yml (Indonesian)

* New translations en.yml (Thai)

* New translations en.json (Thai)

* New translations simple_form.en.yml (Thai)

* New translations simple_form.en.yml (Thai)

* New translations en.yml (Armenian)

* New translations en.json (Armenian)

* New translations en.yml (Italian)

* New translations en.json (Italian)

* New translations en.yml (Catalan)

* New translations en.json (Catalan)

* New translations en.yml (Spanish, Argentina)

* New translations en.json (Kurmanji (Kurdish))

* New translations simple_form.en.yml (Hungarian)

* New translations en.yml (Chinese Simplified)

* New translations simple_form.en.yml (Chinese Simplified)

* New translations en.json (Chinese Simplified)

* New translations en.yml (Chinese Simplified)

* New translations en.yml (Chinese Simplified)

* New translations en.yml (Chinese Simplified)

* New translations en.yml (Chinese Simplified)

* New translations en.json (Chinese Simplified)

* New translations en.yml (Chinese Simplified)

* New translations simple_form.en.yml (Chinese Simplified)

* New translations en.yml (Chinese Simplified)

* New translations en.json (Polish)

* New translations en.json (Polish)

* New translations en.json (Polish)

* New translations en.json (Polish)

* New translations doorkeeper.en.yml (Polish)

* New translations doorkeeper.en.yml (Polish)

* New translations en.yml (Polish)

* New translations en.yml (Polish)

* New translations en.yml (Polish)

* New translations en.yml (Polish)

* New translations simple_form.en.yml (Polish)

* New translations en.json (Polish)

* New translations en.json (Polish)

* New translations en.json (Catalan)

* New translations en.json (Vietnamese)

* New translations en.yml (Vietnamese)

* New translations en.json (Vietnamese)

* New translations en.json (Vietnamese)

* New translations en.yml (Vietnamese)

* Run `yarn manage:translations`

* Run `bundle exec i18n-tasks normalize`

Co-authored-by: Yamagishi Kazutoshi <ykzts@desire.sh>
2022-04-14 02:52:53 +09:00
Jeong Arm 1de748bf5e
Fix FetchFeaturedCollectionService (#18030) 2022-04-13 13:25:42 +02:00
Jeong Arm d353bb5ee3
Implement infinity home timeline (#1610)
* Implement infinity home timeline

* Fix test for infinite home timeline

* Fix infinity home timeline with min_id

* Fix infinite home timeline duplicated statuses

* Codeclimate for infinite home timeline

* Refactor code as reviewed

* Fix redis sufficient check

* Fix typo on variable name
2022-04-12 17:52:14 +02:00
dogelover911 4c9949560d
FeedManager: skip account when target_account's last status is too old (#18009)
Co-authored-by: dogelover911 <dogelover911@localhost>
2022-04-11 21:17:03 +02:00
Claire f9fbff8539 Merge branch 'main' into glitch-soc/merge-upstream 2022-04-11 16:16:33 +02:00
Claire dc50347247
Fix crash in alias settings page (#18004) 2022-04-09 20:11:06 +02:00
Claire eff62528de Merge branch 'main' into glitch-soc/merge-upstream 2022-04-08 23:00:03 +02:00
0x2019 012537452a
Fix error resposes for from search prefix (#17963)
* Fix error responses in `from` search prefix (addresses mastodon/mastodon#17941)

Using unsupported prefixes now reports a 422; searching for posts from an
account the instance is not aware of reports a 404. TODO: The UI for this
on the front end is abysmal.

Searching `from:username@domain` now succeeds when `domain` is the local
domain; searching `from:@username(@domain)?` now works as expected.

* Remove unused methods on new Error classes as they are not being used

Currently when `raise`d there are error messages being supplied, but
this is not actually being used. The associated `raise`s have been
edited accordingly.

* Remove needless comments

* Satisfy rubocop

* Try fixing tests being unable to find AccountFindingConcern methods

* Satisfy rubocop

* Simplify `from` prefix logic

This incorporates @ClearlyClaire's suggestion (see
https://github.com/mastodon/mastodon/pull/17963#pullrequestreview-933986737).

Accepctable account strings in `from:` clauses are more lenient than
before this commit; for example, `from:@user@example.org@asnteo +cat`
will not error, and return posts by @user@example.org containing the
word "cat". This is more consistent with how Mastodon matches mentions
in statuses. In addition, `from` clauses will not be checked for
syntatically invalid usernames or domain names, simply 404ing when
`Account.find_remote!` raises ActiveRecord::NotFound.

New code for this PR that is no longer used has been removed.
2022-04-08 21:21:49 +02:00
Claire a8d89aabb2 [Glitch] Auto-fill timeline gaps when getting re-connecting to Websocket/EventSource stream
Port a39bf04fe6 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2022-04-08 20:05:33 +02:00
Claire 43aff90d0e [Glitch] Fix potentially missing statuses when reconnecting to websocket
Port ebe01ea194 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2022-04-08 20:02:49 +02:00
Claire ff73d43b35 Merge branch 'main' into glitch-soc/merge-upstream
Conflicts:
- `Gemfile.lock`:
  Not a real conflict, just an upstream dependency udpated
  textually too close to a glitch-soc-only dependency.
  Updated dependencies like upstream.
- `app/controllers/settings/preferences_controller.rb`:
  Upstream added settings where we had extra glitch-soc-specific settings.
  Added upstream's new settings.
- `app/models/user.rb`:
  Upstream added settings where we had extra glitch-soc-specific settings.
  Added upstream's new settings.
- `config/i18n-tasks.yml`:
  Not a real conflict, just a new upstream line too textually close to
  a glitch-soc-only line.
  Ported upstream's change.
2022-04-08 19:53:32 +02:00
Eugen Rochko 68273a7c6d
Fix dangling language-specific trends (#17997)
- Change score half-life for trending statuses from 2 to 6 hours
- Change score threshold for trimming old items from 1 to 0.3
2022-04-08 19:35:31 +02:00
Claire a39bf04fe6
Auto-fill timeline gaps when getting re-connecting to Websocket/EventSource stream (#17987) 2022-04-08 19:17:54 +02:00
Claire 3906dd67ed
Fix extremely rare race condition when deleting a toot or account (#17994) 2022-04-08 19:17:37 +02:00
Eugen Rochko 8e20e16cf0
Change e-mail notifications to only be sent when recipient is offline (#17984)
* Change e-mail notifications to only be sent when recipient is offline

Change the default for follow and mention notifications back on

* Add preference to always send e-mail notifications

* Change wording
2022-04-08 18:03:31 +02:00
Eugen Rochko fd9a9b07c2
Fix trends returning less results per page when filtered in REST API (#17996)
- Change filtering and pagination to occur in SQL instead of Redis
- Change rank/score displayed on trends in admin UI to be locale-specific
2022-04-08 17:10:53 +02:00
Eugen Rochko f06a3b56a3
New Crowdin updates (#17897)
* New translations en.yml (Danish)

* New translations en.yml (German)

* New translations en.yml (Basque)

* New translations en.yml (Finnish)

* New translations en.yml (Hungarian)

* New translations en.yml (Hebrew)

* New translations en.yml (Catalan)

* New translations en.yml (Spanish)

* New translations en.yml (French)

* New translations en.yml (Arabic)

* New translations en.yml (Armenian)

* New translations en.yml (Afrikaans)

* New translations en.yml (Polish)

* New translations en.yml (Punjabi)

* New translations en.yml (Serbian (Cyrillic))

* New translations en.yml (Portuguese)

* New translations en.yml (Albanian)

* New translations en.yml (Dutch)

* New translations en.yml (Turkish)

* New translations en.yml (Chinese Traditional)

* New translations en.yml (Urdu (Pakistan))

* New translations en.yml (Icelandic)

* New translations en.yml (Portuguese, Brazilian)

* New translations en.yml (Indonesian)

* New translations en.yml (Tamil)

* New translations en.yml (Spanish, Argentina)

* New translations en.yml (Norwegian)

* New translations en.yml (Korean)

* New translations en.yml (Macedonian)

* New translations en.yml (Slovenian)

* New translations en.yml (Chinese Simplified)

* New translations en.yml (Swedish)

* New translations en.yml (Italian)

* New translations en.yml (Japanese)

* New translations en.yml (Russian)

* New translations en.yml (Slovak)

* New translations en.yml (Vietnamese)

* New translations en.yml (Lithuanian)

* New translations en.yml (Scottish Gaelic)

* New translations en.yml (Occitan)

* New translations en.yml (Persian)

* New translations en.yml (Galician)

* New translations en.yml (Georgian)

* New translations en.yml (Spanish, Mexico)

* New translations en.yml (Bengali)

* New translations en.yml (Sinhala)

* New translations en.yml (Silesian)

* New translations en.yml (Taigi)

* New translations en.yml (Ido)

* New translations en.yml (Kabyle)

* New translations en.yml (Sanskrit)

* New translations en.yml (Sardinian)

* New translations en.yml (Corsican)

* New translations en.yml (Sorani (Kurdish))

* New translations en.yml (Kurmanji (Kurdish))

* New translations en.yml (Serbian (Latin))

* New translations en.yml (Asturian)

* New translations en.yml (Kannada)

* New translations en.yml (Cornish)

* New translations en.yml (Breton)

* New translations en.yml (Marathi)

* New translations en.yml (Malayalam)

* New translations en.yml (Tatar)

* New translations en.yml (Chinese Traditional, Hong Kong)

* New translations en.yml (Uyghur)

* New translations en.yml (Esperanto)

* New translations en.yml (Welsh)

* New translations en.yml (Telugu)

* New translations en.yml (Malay)

* New translations en.yml (Hindi)

* New translations en.yml (Latvian)

* New translations en.yml (Estonian)

* New translations en.yml (Kazakh)

* New translations en.yml (Norwegian Nynorsk)

* New translations en.yml (Croatian)

* New translations en.yml (Standard Moroccan Tamazight)

* New translations en.yml (German)

* New translations en.yml (Icelandic)

* New translations en.yml (Catalan)

* New translations en.yml (Czech)

* New translations en.yml (Italian)

* New translations doorkeeper.en.yml (Czech)

* New translations en.yml (Danish)

* New translations en.json (Czech)

* New translations doorkeeper.en.yml (Czech)

* New translations en.yml (Czech)

* New translations doorkeeper.en.yml (Czech)

* New translations en.yml (Latvian)

* New translations doorkeeper.en.yml (Czech)

* New translations en.yml (Czech)

* New translations en.yml (Indonesian)

* New translations en.yml (Czech)

* New translations en.yml (Kurmanji (Kurdish))

* New translations en.yml (Czech)

* New translations en.yml (Czech)

* New translations simple_form.en.yml (Czech)

* New translations en.yml (Czech)

* New translations en.yml (Hungarian)

* New translations simple_form.en.yml (Czech)

* New translations simple_form.en.yml (Czech)

* New translations en.yml (Korean)

* New translations en.yml (Spanish)

* New translations en.yml (Czech)

* New translations simple_form.en.yml (Czech)

* New translations en.yml (Czech)

* New translations en.yml (Portuguese)

* New translations en.yml (Polish)

* New translations en.yml (Chinese Traditional)

* New translations en.yml (Czech)

* New translations en.yml (Czech)

* New translations en.yml (Czech)

* New translations en.yml (Czech)

* New translations en.json (Chinese Traditional)

* New translations en.yml (Czech)

* New translations en.yml (Czech)

* New translations en.yml (Czech)

* New translations en.json (Chinese Traditional)

* New translations en.json (Chinese Traditional)

* New translations en.yml (Czech)

* New translations en.json (Chinese Traditional)

* New translations en.yml (Czech)

* New translations en.yml (Czech)

* New translations en.yml (Czech)

* New translations en.yml (Czech)

* New translations en.yml (Czech)

* New translations en.yml (Czech)

* New translations en.yml (Spanish, Argentina)

* New translations en.json (Chinese Traditional)

* New translations en.yml (Czech)

* New translations en.yml (Czech)

* New translations en.json (Italian)

* New translations en.yml (Galician)

* New translations en.yml (French)

* New translations en.yml (Vietnamese)

* New translations simple_form.en.yml (Vietnamese)

* New translations en.yml (Vietnamese)

* New translations simple_form.en.yml (Vietnamese)

* New translations en.yml (Vietnamese)

* New translations simple_form.en.yml (Vietnamese)

* New translations simple_form.en.yml (Vietnamese)

* New translations en.yml (Korean)

* New translations en.json (Korean)

* New translations simple_form.en.yml (Galician)

* New translations en.yml (Korean)

* New translations en.yml (Portuguese)

* New translations en.yml (Hungarian)

* New translations en.yml (Armenian)

* New translations en.yml (Dutch)

* New translations en.yml (Norwegian)

* New translations en.yml (Polish)

* New translations en.yml (Albanian)

* New translations en.yml (Basque)

* New translations en.yml (Turkish)

* New translations en.yml (Ukrainian)

* New translations en.yml (Chinese Traditional)

* New translations en.yml (Icelandic)

* New translations en.yml (Portuguese, Brazilian)

* New translations en.yml (Indonesian)

* New translations en.yml (Tamil)

* New translations en.yml (Spanish, Argentina)

* New translations en.yml (Finnish)

* New translations en.yml (Greek)

* New translations en.yml (Galician)

* New translations en.yml (Slovak)

* New translations en.yml (Chinese Simplified)

* New translations en.yml (Swedish)

* New translations en.yml (Arabic)

* New translations en.yml (French)

* New translations en.yml (Spanish)

* New translations en.yml (Catalan)

* New translations en.yml (Italian)

* New translations en.yml (Japanese)

* New translations en.yml (Russian)

* New translations en.yml (Slovenian)

* New translations en.yml (German)

* New translations en.yml (Vietnamese)

* New translations en.yml (Thai)

* New translations en.yml (Scottish Gaelic)

* New translations en.yml (Occitan)

* New translations en.yml (Persian)

* New translations en.yml (Romanian)

* New translations en.yml (Czech)

* New translations en.yml (Danish)

* New translations en.yml (Spanish, Mexico)

* New translations en.yml (Kabyle)

* New translations en.yml (Sardinian)

* New translations en.yml (Corsican)

* New translations en.yml (Sorani (Kurdish))

* New translations en.yml (Kurmanji (Kurdish))

* New translations en.yml (Breton)

* New translations en.yml (Chinese Traditional, Hong Kong)

* New translations en.yml (Esperanto)

* New translations en.yml (Welsh)

* New translations en.yml (Latvian)

* New translations en.yml (Norwegian Nynorsk)

* New translations en.yml (Croatian)

* New translations en.yml (Catalan)

* New translations en.yml (Latvian)

* New translations en.yml (Catalan)

* New translations en.yml (Latvian)

* New translations en.yml (Icelandic)

* New translations en.yml (Chinese Traditional)

* New translations en.yml (Swedish)

* New translations en.yml (Russian)

* New translations en.yml (Czech)

* New translations en.yml (Spanish, Argentina)

* New translations en.yml (Czech)

* New translations en.yml (Spanish, Argentina)

* New translations en.yml (Danish)

* New translations en.yml (Danish)

* New translations en.yml (Korean)

* New translations en.yml (Korean)

* New translations en.yml (Galician)

* New translations en.yml (Vietnamese)

* New translations en.yml (Galician)

* New translations en.yml (Turkish)

* New translations en.yml (Polish)

* New translations en.yml (Hungarian)

* New translations en.yml (Hungarian)

* New translations en.yml (Kurmanji (Kurdish))

* New translations en.yml (Kurmanji (Kurdish))

* New translations en.yml (Italian)

* New translations en.yml (Spanish)

* New translations en.yml (Arabic)

* New translations en.json (Arabic)

* New translations doorkeeper.en.yml (Arabic)

* New translations en.yml (Arabic)

* New translations en.yml (French)

* New translations en.json (Arabic)

* New translations en.json (Arabic)

* New translations en.json (Arabic)

* New translations en.json (Breton)

* New translations en.yml (Arabic)

* New translations en.json (Arabic)

* New translations en.yml (Vietnamese)

* New translations en.yml (Korean)

* New translations en.yml (Vietnamese)

* New translations en.yml (Esperanto)

* New translations en.json (Esperanto)

* New translations en.json (Esperanto)

* New translations en.json (Esperanto)

* New translations en.json (Esperanto)

* New translations en.yml (Esperanto)

* New translations en.json (Esperanto)

* New translations en.yml (Esperanto)

* New translations en.yml (Esperanto)

* New translations en.yml (Esperanto)

* Run `yarn manage:translations`

* Run `bundle exec i18n-tasks normalzie`

Co-authored-by: Yamagishi Kazutoshi <ykzts@desire.sh>
2022-04-08 19:52:22 +09:00
Eugen Rochko 465ee7792f
Fix pagination header on empty trends responses in REST API (#17986) 2022-04-07 18:06:15 +02:00
Claire ebe01ea194
Fix potentially missing statuses when reconnecting to websocket (#17981)
* Fix potentially missing statuses when reconnecting to websocket

* Add gap on reconnect rather than maintaining it constantly
2022-04-07 16:08:17 +02:00
Claire ed8a0bfbb8 [Glitch] Fix older items possibly disappearing on timeline updates
Port 1b91359a45 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2022-04-07 15:05:06 +02:00
Claire 489f250877 Merge branch 'main' into glitch-soc/merge-upstream 2022-04-07 15:03:54 +02:00
Claire ce9dcbea32
Fix failure when sending warning emails with custom text (#17983)
* Add tests

* Fix failure when sending warning emails with custom text
2022-04-07 14:47:30 +02:00
Claire 1b91359a45
Fix older items possibly disappearing on timeline updates (#17980)
In some rare cases, when receiving statuses out of order from the streaming
API then polling from the REST API, it was possible for the
`expandNormalizedTimeline` function to remove older items from the timeline.

This commit ensures that any item from the replaced slice that is older
than the oldest item retrieved from the API gets added back to the replaced
slice.
2022-04-07 11:27:35 +02:00
Eugen Rochko f382192862
Add pagination for trending statuses in web UI (#17976) 2022-04-06 22:53:29 +02:00
Claire e2f4bafc13 [Glitch] Fix possible duplicate statuses in timelines in some edge cases
Port dd4c156f33 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2022-04-06 21:16:07 +02:00
Claire b368c75029 Merge branch 'main' into glitch-soc/merge-upstream
Conflicts:
- `app/controllers/concerns/sign_in_token_authentication_concern.rb`:
  Upstream removed this file, while glitch-soc had changes to deal with
  its theming system.
  Removed the file like upstream did.
2022-04-06 21:10:23 +02:00
Claire dd4c156f33
Fix possible duplicate statuses in timelines in some edge cases (#17971)
In some rare cases, when receiving statuses out of order from the streaming
API then polling from the REST API, it was possible for the
`expandNormalizedTimeline` function to insert duplicates in the timeline,
which would then result in several bugs.

This commits ensures that there are no duplicates inserted in the
timeline.
2022-04-06 21:01:41 +02:00
Claire 8f91e304a5
Fix spurious edits and require incoming edits to be explicitly marked as such (#17918)
* Change post text edit to not be considered significant if it's identical after reformatting

* We don't need to clear previous change information anymore

* Require status edits to be explicit, except for poll tallies

* Fix tests

* Add some tests

* Add poll-related tests

* Add HTML-formatting related tests
2022-04-06 21:01:02 +02:00
Claire 454ef42aab
Fix error when encountering invalid pinned posts (#17964) 2022-04-06 20:58:23 +02:00
Eugen Rochko 6221b36b27
Remove sign-in token authentication, instead send e-mail about new sign-in (#17970) 2022-04-06 20:58:12 +02:00
Claire abb11778d7
Fix inconsistency in error handling when removing a status (#17974)
Not completely sure this could actually have any ill effect, but if
`RemoveStatusService` fails to acquire a lock in an
`ActivityPub::ProcessingWorker` job processing a `Delete`, the status
is currently discarded and causes a job failure but the next time the
job is attempted, it will skip deleting the status due to it being
discarded.

This commit makes the behavior of `RemoveStatusService` a bit more consistent
in case of failure to acquire the lock.
2022-04-06 20:57:52 +02:00
Claire 62c6e12fa5
Fix admin API unconditionally requiring CSRF token (#17975)
Fixes #17898

Since #17204, the admin API has only been available through the web
application because of the unconditional requirement to provide a valid CSRF
token.

This commit changes it back to `null_session`, which should make it work
both with session-based authentication (provided a CSRF token) and with a
bearer token.
2022-04-06 20:57:18 +02:00
Eugen Rochko d116cb7733
Fix GET /api/v1/trends/tags missing offset param in REST API (#17973) 2022-04-06 20:56:57 +02:00
CommanderRoot 9b95077885 [Glitch] Replace deprecated String.prototype.substr()
Port 0ec695e036 to glitch-soc

Signed-off-by: Tobias Speicher <rootcommander@gmail.com>
Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2022-04-06 16:08:33 +02:00
Claire c02644ef10 Merge branch 'main' into glitch-soc/merge-upstream 2022-04-06 16:06:15 +02:00
rinsuki 275dad9702
fix: returns nil instead of empty URL on status.application.website (#17962) 2022-04-05 12:00:31 +02:00
quinn a73806ea32
Update composer.scss 2022-04-05 17:35:50 +10:00
quinn 1f0ff1ea98
Update status.scss 2022-04-05 17:17:00 +10:00
quinn e989147a91
Update composer.scss 2022-04-05 17:16:21 +10:00
CommanderRoot 0ec695e036
Replace deprecated String.prototype.substr() (#17949)
* Replace deprecated String.prototype.substr()

.substr() is deprecated so we replace it with .slice() which works similarily but isn't deprecated

* Change String.prototype.substring() to String.prototype.slice()

.substring() and .slice() work very similary but .slice() is a bit faster and stricter

* Add ESLint rule to forbid usage of .substr and .substring

.substr() is deprecated and .substring() is very similar to .slice() so better to use .slice() at all times

Signed-off-by: Tobias Speicher <rootcommander@gmail.com>
2022-04-04 12:19:45 -04:00
Claire d01c5b0b8c Merge branch 'main' into glitch-soc/merge-upstream 2022-04-04 17:25:57 +02:00
Claire 0a8a0fb599
Fix unusual number formatting in some locales (#17929)
* Fix unusual number formatting in some locales

Fixes #17904

* Fix typo
2022-04-01 23:59:13 +02:00
Holger ea0cfd8e7e
fix: PWA web manifest not changed to new routes (#17921) 2022-03-31 11:20:26 +02:00
Claire 6bdec0aec9 Merge branch 'main' into glitch-soc/merge-upstream 2022-03-31 10:36:23 +02:00
Claire ef196c913c
Fix error MethodError in Chewy::Strategy::Sidekiq::Worker (#17912)
Also refactor a bit to reduce code duplication.
2022-03-31 00:49:24 +02:00
Claire fc5dd0c538 Merge branch 'main' into glitch-soc/merge-upstream 2022-03-30 15:02:56 +02:00