Commit graph

17032 commits

Author SHA1 Message Date
Jeremy Kescher
1661561640
Merge branch 'reactions' into develop
# Conflicts:
#	Gemfile.lock
#	app/javascript/flavours/glitch/locales/de.js
#	app/javascript/flavours/glitch/locales/en.js
#	app/javascript/flavours/glitch/locales/es.js
#	app/javascript/flavours/glitch/locales/fr.js
#	app/javascript/flavours/glitch/locales/ja.js
#	app/javascript/flavours/glitch/locales/ko.js
#	app/javascript/flavours/glitch/locales/pl.js
#	app/javascript/flavours/glitch/locales/zh-CN.js
#	app/javascript/mastodon/actions/interactions.js
#	app/javascript/mastodon/locales/fr.json
#	db/migrate/20221124114030_create_status_reactions.rb
2022-12-22 00:18:36 +01:00
Jeremy Kescher
e8448c496e
Re-include translations after locales change 2022-12-21 23:57:39 +01:00
Jeremy Kescher
2379efb52f
Merge remote-tracking branch 'upstream/main' into reactions
# Conflicts:
#	app/javascript/flavours/glitch/locales/de.js
#	app/javascript/flavours/glitch/locales/en.js
#	app/javascript/flavours/glitch/locales/fr.js
#	app/javascript/mastodon/actions/interactions.js
#	app/javascript/mastodon/locales/fr.json
#	config/locales-glitch/de.yml
#	config/locales-glitch/fr.yml
#	config/locales-glitch/simple_form.de.yml
#	config/locales-glitch/simple_form.fr.yml
2022-12-21 23:45:28 +01:00
Claire
0b71a4770f
New Crowdin updates (#2032)
* New translations en.json (French)
[ci skip]

* New translations en.json (Belarusian)
[ci skip]

* New translations en.json (Frisian)
[ci skip]

* New translations en.json (Spanish, Argentina)
[ci skip]

* New translations en.json (Spanish, Mexico)
[ci skip]

* New translations en.json (English, United Kingdom)
[ci skip]

* New translations en.json (Burmese)
[ci skip]

* New translations en.json (Faroese)
[ci skip]

* New translations en.json (Latin)
[ci skip]

* New translations en.json (Bosnian)
[ci skip]

* New translations en.json (French, Quebec)
[ci skip]

* New translations en.json (Aragonese)
[ci skip]

* New translations en.json (Scots)
[ci skip]

* New translations en.json (Igbo)
[ci skip]

* New translations en.yml (Romanian)
[ci skip]

* New translations en.yml (French)
[ci skip]

* New translations en.yml (Spanish)
[ci skip]

* New translations en.yml (Afrikaans)
[ci skip]

* New translations en.yml (Arabic)
[ci skip]

* New translations en.yml (Belarusian)
[ci skip]

* New translations en.yml (Bulgarian)
[ci skip]

* New translations en.yml (Catalan)
[ci skip]

* New translations en.yml (Danish)
[ci skip]

* New translations en.yml (German)
[ci skip]

* New translations en.yml (Greek)
[ci skip]

* New translations en.yml (Frisian)
[ci skip]

* New translations en.yml (Basque)
[ci skip]

* New translations en.yml (Finnish)
[ci skip]

* New translations en.yml (Irish)
[ci skip]

* New translations en.yml (Hebrew)
[ci skip]

* New translations en.yml (Hungarian)
[ci skip]

* New translations en.yml (Armenian)
[ci skip]

* New translations en.yml (Italian)
[ci skip]

* New translations en.yml (Japanese)
[ci skip]

* New translations en.yml (Georgian)
[ci skip]

* New translations en.yml (Korean)
[ci skip]

* New translations en.yml (Lithuanian)
[ci skip]

* New translations en.yml (Macedonian)
[ci skip]

* New translations en.yml (Dutch)
[ci skip]

* New translations en.yml (Norwegian)
[ci skip]

* New translations en.yml (Punjabi)
[ci skip]

* New translations en.yml (Polish)
[ci skip]

* New translations en.yml (Portuguese)
[ci skip]

* New translations en.yml (Russian)
[ci skip]

* New translations en.yml (Slovak)
[ci skip]

* New translations en.yml (Slovenian)
[ci skip]

* New translations en.yml (Albanian)
[ci skip]

* New translations en.yml (Serbian (Cyrillic))
[ci skip]

* New translations en.yml (Swedish)
[ci skip]

* New translations en.yml (Turkish)
[ci skip]

* New translations en.yml (Ukrainian)
[ci skip]

* New translations en.yml (Chinese Simplified)
[ci skip]

* New translations en.yml (Chinese Traditional)
[ci skip]

* New translations en.yml (Urdu (Pakistan))
[ci skip]

* New translations en.yml (Vietnamese)
[ci skip]

* New translations en.yml (Galician)
[ci skip]

* New translations en.yml (Icelandic)
[ci skip]

* New translations en.yml (Portuguese, Brazilian)
[ci skip]

* New translations en.yml (Indonesian)
[ci skip]

* New translations en.yml (Persian)
[ci skip]

* New translations en.yml (Tamil)
[ci skip]

* New translations en.yml (Spanish, Argentina)
[ci skip]

* New translations en.yml (Spanish, Mexico)
[ci skip]

* New translations en.yml (Bengali)
[ci skip]

* New translations en.yml (Marathi)
[ci skip]

* New translations en.yml (Thai)
[ci skip]

* New translations en.yml (Croatian)
[ci skip]

* New translations en.yml (Norwegian Nynorsk)
[ci skip]

* New translations en.yml (Kazakh)
[ci skip]

* New translations en.yml (Estonian)
[ci skip]

* New translations en.yml (Latvian)
[ci skip]

* New translations en.yml (Hindi)
[ci skip]

* New translations en.yml (Malay)
[ci skip]

* New translations en.yml (Telugu)
[ci skip]

* New translations en.yml (English, United Kingdom)
[ci skip]

* New translations en.yml (Burmese)
[ci skip]

* New translations en.yml (Welsh)
[ci skip]

* New translations en.yml (Faroese)
[ci skip]

* New translations en.yml (Esperanto)
[ci skip]

* New translations en.yml (Uyghur)
[ci skip]

* New translations en.yml (Chinese Traditional, Hong Kong)
[ci skip]

* New translations en.yml (Tatar)
[ci skip]

* New translations en.yml (Malayalam)
[ci skip]

* New translations en.yml (Breton)
[ci skip]

* New translations en.yml (Latin)
[ci skip]

* New translations en.yml (Bosnian)
[ci skip]

* New translations en.yml (French, Quebec)
[ci skip]

* New translations en.yml (Sinhala)
[ci skip]

* New translations en.yml (Cornish)
[ci skip]

* New translations en.yml (Kannada)
[ci skip]

* New translations en.yml (Scottish Gaelic)
[ci skip]

* New translations en.yml (Asturian)
[ci skip]

* New translations en.yml (Aragonese)
[ci skip]

* New translations en.yml (Occitan)
[ci skip]

* New translations en.yml (Serbian (Latin))
[ci skip]

* New translations en.yml (Kurmanji (Kurdish))
[ci skip]

* New translations en.yml (Sorani (Kurdish))
[ci skip]

* New translations en.yml (Scots)
[ci skip]

* New translations en.yml (Igbo)
[ci skip]

* New translations en.yml (Corsican)
[ci skip]

* New translations en.yml (Sardinian)
[ci skip]

* New translations en.yml (Sanskrit)
[ci skip]

* New translations en.yml (Kabyle)
[ci skip]

* New translations en.yml (Ido)
[ci skip]

* New translations simple_form.en.yml (Romanian)
[ci skip]

* New translations simple_form.en.yml (French)
[ci skip]

* New translations simple_form.en.yml (Spanish)
[ci skip]

* New translations simple_form.en.yml (Afrikaans)
[ci skip]

* New translations simple_form.en.yml (Arabic)
[ci skip]

* New translations simple_form.en.yml (Belarusian)
[ci skip]

* New translations simple_form.en.yml (Bulgarian)
[ci skip]

* New translations simple_form.en.yml (Catalan)
[ci skip]

* New translations simple_form.en.yml (Danish)
[ci skip]

* New translations simple_form.en.yml (German)
[ci skip]

* New translations simple_form.en.yml (Greek)
[ci skip]

* New translations simple_form.en.yml (Frisian)
[ci skip]

* New translations simple_form.en.yml (Basque)
[ci skip]

* New translations simple_form.en.yml (Finnish)
[ci skip]

* New translations simple_form.en.yml (Irish)
[ci skip]

* New translations simple_form.en.yml (Hebrew)
[ci skip]

* New translations simple_form.en.yml (Hungarian)
[ci skip]

* New translations simple_form.en.yml (Armenian)
[ci skip]

* New translations simple_form.en.yml (Italian)
[ci skip]

* New translations simple_form.en.yml (Japanese)
[ci skip]

* New translations simple_form.en.yml (Georgian)
[ci skip]

* New translations simple_form.en.yml (Korean)
[ci skip]

* New translations simple_form.en.yml (Lithuanian)
[ci skip]

* New translations simple_form.en.yml (Macedonian)
[ci skip]

* New translations simple_form.en.yml (Dutch)
[ci skip]

* New translations simple_form.en.yml (Norwegian)
[ci skip]

* New translations simple_form.en.yml (Punjabi)
[ci skip]

* New translations simple_form.en.yml (Polish)
[ci skip]

* New translations simple_form.en.yml (Portuguese)
[ci skip]

* New translations simple_form.en.yml (Russian)
[ci skip]

* New translations simple_form.en.yml (Slovak)
[ci skip]

* New translations simple_form.en.yml (Slovenian)
[ci skip]

* New translations simple_form.en.yml (Albanian)
[ci skip]

* New translations simple_form.en.yml (Serbian (Cyrillic))
[ci skip]

* New translations simple_form.en.yml (Swedish)
[ci skip]

* New translations simple_form.en.yml (Turkish)
[ci skip]

* New translations simple_form.en.yml (Ukrainian)
[ci skip]

* New translations simple_form.en.yml (Chinese Simplified)
[ci skip]

* New translations simple_form.en.yml (Chinese Traditional)
[ci skip]

* New translations simple_form.en.yml (Urdu (Pakistan))
[ci skip]

* New translations simple_form.en.yml (Vietnamese)
[ci skip]

* New translations simple_form.en.yml (Galician)
[ci skip]

* New translations simple_form.en.yml (Icelandic)
[ci skip]

* New translations simple_form.en.yml (Portuguese, Brazilian)
[ci skip]

* New translations simple_form.en.yml (Indonesian)
[ci skip]

* New translations simple_form.en.yml (Persian)
[ci skip]

* New translations simple_form.en.yml (Tamil)
[ci skip]

* New translations simple_form.en.yml (Spanish, Argentina)
[ci skip]

* New translations simple_form.en.yml (Spanish, Mexico)
[ci skip]

* New translations simple_form.en.yml (Bengali)
[ci skip]

* New translations simple_form.en.yml (Marathi)
[ci skip]

* New translations simple_form.en.yml (Thai)
[ci skip]

* New translations simple_form.en.yml (Croatian)
[ci skip]

* New translations simple_form.en.yml (Norwegian Nynorsk)
[ci skip]

* New translations simple_form.en.yml (Kazakh)
[ci skip]

* New translations simple_form.en.yml (Estonian)
[ci skip]

* New translations simple_form.en.yml (Latvian)
[ci skip]

* New translations simple_form.en.yml (Hindi)
[ci skip]

* New translations simple_form.en.yml (Malay)
[ci skip]

* New translations simple_form.en.yml (Telugu)
[ci skip]

* New translations simple_form.en.yml (English, United Kingdom)
[ci skip]

* New translations simple_form.en.yml (Burmese)
[ci skip]

* New translations simple_form.en.yml (Welsh)
[ci skip]

* New translations simple_form.en.yml (Faroese)
[ci skip]

* New translations simple_form.en.yml (Esperanto)
[ci skip]

* New translations simple_form.en.yml (Uyghur)
[ci skip]

* New translations simple_form.en.yml (Chinese Traditional, Hong Kong)
[ci skip]

* New translations simple_form.en.yml (Tatar)
[ci skip]

* New translations simple_form.en.yml (Malayalam)
[ci skip]

* New translations simple_form.en.yml (Breton)
[ci skip]

* New translations simple_form.en.yml (Latin)
[ci skip]

* New translations simple_form.en.yml (Bosnian)
[ci skip]

* New translations simple_form.en.yml (French, Quebec)
[ci skip]

* New translations simple_form.en.yml (Sinhala)
[ci skip]

* New translations simple_form.en.yml (Cornish)
[ci skip]

* New translations simple_form.en.yml (Kannada)
[ci skip]

* New translations simple_form.en.yml (Scottish Gaelic)
[ci skip]

* New translations simple_form.en.yml (Asturian)
[ci skip]

* New translations simple_form.en.yml (Aragonese)
[ci skip]

* New translations simple_form.en.yml (Occitan)
[ci skip]

* New translations simple_form.en.yml (Serbian (Latin))
[ci skip]

* New translations simple_form.en.yml (Kurmanji (Kurdish))
[ci skip]

* New translations simple_form.en.yml (Sorani (Kurdish))
[ci skip]

* New translations simple_form.en.yml (Scots)
[ci skip]

* New translations simple_form.en.yml (Igbo)
[ci skip]

* New translations simple_form.en.yml (Corsican)
[ci skip]

* New translations simple_form.en.yml (Sardinian)
[ci skip]

* New translations simple_form.en.yml (Sanskrit)
[ci skip]

* New translations simple_form.en.yml (Kabyle)
[ci skip]

* New translations simple_form.en.yml (Ido)
[ci skip]
2022-12-21 23:19:14 +01:00
Claire
e79981936f
Add crowdin configuration file (#2030) 2022-12-21 22:13:22 +01:00
Claire
a5e446a4a0
Change locales file generation to use JSON sources (#2028)
* Change locales file generation to use JSON sources

Instead of inheriting in JS files, set locale inheritance in the
theme's YML file, and inherit in the generated locale file, rather
than the source file.

* Convert glitch-soc JS translation files to JSON

Obtained running the following:

```sh
sed -i -z "s/import inherited from '.*';\s*\nconst messages = //" *.js
sed -i "s/\s*\/\/.*//" *.js
sed -i -z "s/;\s*export default .*/\n/" *.js
for i in *.js; do
  json5 $i | json_pp > ${i}on;
done
```

* Change `yarn manage:translations` to exclude any translation already defined upstream

* Run yarn manage:translations
2022-12-21 22:13:14 +01:00
Claire
18bcabf26a
Change i18n-tasks config to consider glitch-soc translation files (#2027)
* Change i18n-tasks config to consider glitch-soc translation files

* Normalize locales-glitch YML files

* Consider upstream Rails translations as external

* Add simple_form.glitch_only to ignore_unused

* Remove unused keybase-related strings
2022-12-21 22:13:04 +01:00
Claire
2f2ef1d4fe
Merge pull request #2029 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes
2022-12-21 16:43:33 +01:00
Claire
b248aa4d3e Merge branch 'main' into glitch-soc/merge-upstream 2022-12-21 15:59:39 +01:00
dependabot[bot]
c4a429ed47
Bump fog-openstack from 0.3.2 to 0.3.10 (#22597)
Bumps [fog-openstack](https://github.com/fog/fog-openstack) from 0.3.2 to 0.3.10.
- [Release notes](https://github.com/fog/fog-openstack/releases)
- [Changelog](https://github.com/fog/fog-openstack/blob/master/CHANGELOG.md)
- [Commits](https://github.com/fog/fog-openstack/compare/v0.3.2...v0.3.10)

---
updated-dependencies:
- dependency-name: fog-openstack
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-21 12:40:50 +09:00
dependabot[bot]
fbe2c95ff1
Bump fog-core from 2.1.0 to 2.3.0 (#22596)
Bumps [fog-core](https://github.com/fog/fog-core) from 2.1.0 to 2.3.0.
- [Release notes](https://github.com/fog/fog-core/releases)
- [Changelog](https://github.com/fog/fog-core/blob/master/changelog.md)
- [Commits](https://github.com/fog/fog-core/compare/v2.1.0...v2.3.0)

---
updated-dependencies:
- dependency-name: fog-core
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-21 12:06:44 +09:00
dependabot[bot]
a0af356df6
Bump fog-openstack from 0.3.2 to 0.3.10 (#22593)
Bumps [fog-openstack](https://github.com/fog/fog-openstack) from 0.3.2 to 0.3.10.
- [Release notes](https://github.com/fog/fog-openstack/releases)
- [Changelog](https://github.com/fog/fog-openstack/blob/master/CHANGELOG.md)
- [Commits](https://github.com/fog/fog-openstack/compare/v0.3.2...v0.3.10)

---
updated-dependencies:
- dependency-name: fog-openstack
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-21 11:58:01 +09:00
dependabot[bot]
dac312a11a
Bump fog-core from 2.1.0 to 2.3.0 (#22544)
Bumps [fog-core](https://github.com/fog/fog-core) from 2.1.0 to 2.3.0.
- [Release notes](https://github.com/fog/fog-core/releases)
- [Changelog](https://github.com/fog/fog-core/blob/master/changelog.md)
- [Commits](https://github.com/fog/fog-core/compare/v2.1.0...v2.3.0)

---
updated-dependencies:
- dependency-name: fog-core
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-21 11:22:22 +09:00
fef
598f3b9b31
move emoji reaction strings to locales-glitch 2022-12-20 18:27:57 +01:00
Jeremy Kescher
bf139fefa1
Fix status reactions preventing an on_cascade delete 2022-12-20 18:27:57 +01:00
fef
c27dcb40e1
bypass reaction limit for foreign accounts 2022-12-20 18:27:57 +01:00
fef
6cad7718eb
fix 404 when reacting with Keycap Number Sign
The Unicode sequence for this emoji starts with an
ASCII # character, which the browser's URI parser
truncates before sending the request to the
backend.
2022-12-20 18:27:56 +01:00
fef
c739d89b0c
fix status action bar after upstream changes 2022-12-20 18:27:56 +01:00
fef
fd2a116071
fix schema after rebase 2022-12-20 18:27:56 +01:00
fef
4b6e75512f
delete reaction notifications when deleting status 2022-12-20 18:27:56 +01:00
fef
e0637a3c1d
support reacting with foreign custom emojis 2022-12-20 18:27:56 +01:00
fef
18e408c6af
properly disable reactions when not logged in 2022-12-20 18:27:56 +01:00
fef
14d1f7d9b3
serialize custom emoji reactions properly for AP
Akkoma and possibly others expect the `tag` field
in an EmojiReact activity to be an array, not just
a single object, so it's being wrapped into one
now.  I'm not entirely sure whether this is the
idiomatic way of doing it tbh, but it works fine.
2022-12-20 18:27:55 +01:00
fef
a556d81cde
also disable reaction buttons in vanilla flavour 2022-12-20 18:27:55 +01:00
fef
e05874cffd
disable reaction button when not signed in 2022-12-20 18:27:55 +01:00
fef
47ac7a2e50
fix image for new custom emoji reactions 2022-12-20 18:27:55 +01:00
fef
e4949a252e
run i18n-tasks normalize 2022-12-20 18:27:55 +01:00
fef
f0197c80dc
display external custom emoji reactions properly
Using an emoji map was completely unnecessary in
the first place, because the reaction list from
the API response includes URLs for every custom
emoji anyway.  The reaction list now also contains
a boolean field indicating whether it is an
external custom emoji, which is required because
people should only be able to react with Unicode
emojis and local custom ones, not with custom
emojis from other servers.
2022-12-20 18:27:55 +01:00
fef
7175d10935
handle incoming custom emoji reactions properly 2022-12-20 18:27:54 +01:00
fef
6d51a3de13
support Undo action for EmojiReaction 2022-12-20 18:27:54 +01:00
fef
bd026ad118
download remote custom emojis from reactions
Emoji reactions containing custom emojis from
remote instances were assumed to already have
been downloaded and stored in the database.
This might obviously not be the case.
2022-12-20 18:27:54 +01:00
fef
17d23d1c73
fix integer cast bug
Gotta love Rails.
2022-12-20 18:27:54 +01:00
fef
77491a8f22
sanitize setting for number of visible reactions
This is kind of a hack, but the lack of
validation for settings unfortunately makes it
necessary.
2022-12-20 18:27:54 +01:00
Jeremy Kescher
e3f76a1cb0
Add reaction limit to instance serializer 2022-12-20 18:27:53 +01:00
fef
65d727a9e6
fix padding on posts without reactions
The margins of the elements above and below the
main reaction list element overlapped before
reactions were added.  Adding display: none to
empty reaction bars restores this exact look.
2022-12-20 18:27:53 +01:00
fef
a2db70b3c8
rename nop handler to handleNoOp
This also adds the comment in action_bar.js to
status_action_bar.js, clarifying that a future
version could improve this code by modifying
EmojiPickerDropdown.
2022-12-20 18:27:53 +01:00
fef
a9bb743db7
cleanup JS imports and other minor stuff 2022-12-20 18:27:53 +01:00
fef
04467e8f6d
remove unnecessary parameter 2022-12-20 18:27:53 +01:00
fef
a0d7cadcfd
change reaction api to match other interactions
Status reactions had an API similar to that of
announcement reactions, using PUT and DELETE at a
single endpoint.  I believe that for statuses, it
makes more sense to follow the convention of the
other interactions and use separate POST endpoints
for create and destroy respectively.
2022-12-20 18:27:52 +01:00
fef
f4faa1b511
fix reaction deletion bug and clean up controller
Turns out the strange error where it would delete
the wrong reaction occurred because I forgot to
pass the emoji name to the query, which resulted
in the database deleting the first reaction it
found.  Also, this removes the unused set_reaction
callback and includes the Authorization module for
the status reactions controller.
2022-12-20 18:27:52 +01:00
fef
f580ffb127
remove outdated comments 2022-12-20 18:27:52 +01:00
fef
e405eb76f4
clean up new imports in vanilla flavour 2022-12-20 18:27:52 +01:00
fef
7cbe6dc3e8
rebase with upstream 2022-12-20 18:27:51 +01:00
fef
7250a4f6c2
make number of visible reactions a vanilla setting
Reactions will be backported to the vanilla
flavour, which requires all related settings to
be accessible from the vanilla settings page
rather than the glitch specific settings modal.
2022-12-20 18:27:46 +01:00
fef
47d0271957
make number of displayed reactions a setting
This adds an extra item to the local settings for
specifying the number of reactions shown in toots.
The detailed status view always shows all
reactions.
2022-12-20 18:25:43 +01:00
fef
c19e74051c
change default reaction limit to 1 2022-12-20 18:24:21 +01:00
fef
38b8c494b8
limit number of reactions displayed
Too many reactions on a single post quickly get
spammy, so they are now sorted by count and only
the first MAX_REACTIONS number of different
emojis are actually displayed.
2022-12-20 18:24:21 +01:00
fef
21b5bb587d
fix reaction margins and paddings 2022-12-20 18:24:20 +01:00
fef
f129b47f13
cleanup frontend emoji reaction code 2022-12-20 18:24:20 +01:00
fef
89a8c21f80
cleanup backend emoji reaction code 2022-12-20 18:24:20 +01:00