Skip to content

Commit f741c2e

Browse files
committed
Merge commit 'c43508b3e0b05c5e739d726bad53f1eef89e9376' into glitch-soc/merge-upstream
Conflicts: - `app/lib/content_security_policy.rb`: Upstream added support for `EXTRA_MEDIA_HOSTS` which is very similar to glitch-soc's `EXTRA_DATA_HOST`. Deprecate `EXTRA_DATA_HOST` FOR `EXTRA_MEDIA_HOST`.
2 parents 21c05f8 + c43508b commit f741c2e

File tree

14 files changed

+199
-40
lines changed

14 files changed

+199
-40
lines changed

Diff for: .env.production.sample

+3
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,9 @@ MAX_POLL_OPTION_CHARS=100
309309
# HCAPTCHA_SECRET_KEY=
310310
# HCAPTCHA_SITE_KEY=
311311

312+
# Optional list of hosts that are allowed to serve media for your instance
313+
# EXTRA_MEDIA_HOSTS=https://data.example1.com,https://data.example2.com
314+
312315
# IP and session retention
313316
# -----------------------
314317
# Make sure to modify the scheduling of ip_cleanup_scheduler in config/sidekiq.yml

Diff for: app/javascript/mastodon/locales/br.json

+30
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,14 @@
8181
"alert.rate_limited.title": "Feur bevennet",
8282
"alert.unexpected.message": "Ur fazi dic'hortozet zo degouezhet.",
8383
"alert.unexpected.title": "Hopala !",
84+
"alt_text_modal.cancel": "Nullañ",
85+
"alt_text_modal.change_thumbnail": "Kemmañ ar velvenn",
86+
"alt_text_modal.done": "Graet",
8487
"announcement.announcement": "Kemennad",
8588
"annual_report.summary.followers.followers": "heulier",
8689
"annual_report.summary.highlighted_post.possessive": "{name}",
90+
"annual_report.summary.most_used_hashtag.none": "Hini ebet",
91+
"annual_report.summary.new_posts.new_posts": "toudoù nevez",
8792
"attachments_list.unprocessed": "(ket meret)",
8893
"audio.hide": "Kuzhat ar c'hleved",
8994
"block_modal.show_less": "Diskouez nebeutoc'h",
@@ -109,9 +114,11 @@
109114
"column.blocks": "Implijer·ezed·ien berzet",
110115
"column.bookmarks": "Sinedoù",
111116
"column.community": "Red-amzer lec'hel",
117+
"column.create_list": "Krouiñ ul listenn",
112118
"column.direct": "Menegoù prevez",
113119
"column.directory": "Mont a-dreuz ar profiloù",
114120
"column.domain_blocks": "Domani berzet",
121+
"column.edit_list": "Kemmañ al listenn",
115122
"column.favourites": "Muiañ-karet",
116123
"column.firehose": "Redoù war-eeun",
117124
"column.follow_requests": "Rekedoù heuliañ",
@@ -162,9 +169,12 @@
162169
"confirmations.delete.message": "Ha sur oc'h e fell deoc'h dilemel an toud-mañ ?",
163170
"confirmations.delete_list.confirm": "Dilemel",
164171
"confirmations.delete_list.message": "Ha sur eo hoc'h eus c'hoant da zilemel ar roll-mañ da vat ?",
172+
"confirmations.delete_list.title": "Dilemel al listenn?",
165173
"confirmations.discard_edit_media.confirm": "Nac'hañ",
166174
"confirmations.discard_edit_media.message": "Bez ez eus kemmoù n'int ket enrollet e deskrivadur ar media pe ar rakwel, nullañ anezho evelato?",
167175
"confirmations.edit.confirm": "Kemmañ",
176+
"confirmations.edit.message": "Kemmañ bremañ a zilamo ar gemennadenn emaoc'h o skrivañ. Sur e oc'h e fell deoc'h kenderc'hel ganti?",
177+
"confirmations.follow_to_list.title": "Heuliañ an implijer·ez?",
168178
"confirmations.logout.confirm": "Digevreañ",
169179
"confirmations.logout.message": "Ha sur oc'h e fell deoc'h digevreañ ?",
170180
"confirmations.mute.confirm": "Kuzhat",
@@ -266,8 +276,10 @@
266276
"footer.privacy_policy": "Reolennoù prevezded",
267277
"footer.source_code": "Gwelet ar c'hod mammenn",
268278
"footer.status": "Statud",
279+
"footer.terms_of_service": "Divizoù implijout hollek",
269280
"generic.saved": "Enrollet",
270281
"getting_started.heading": "Loc'hañ",
282+
"hashtag.admin_moderation": "Digeriñ an etrefas evezhiañ evit #{name}",
271283
"hashtag.column_header.tag_mode.all": "ha(g) {additional}",
272284
"hashtag.column_header.tag_mode.any": "pe {additional}",
273285
"hashtag.column_header.tag_mode.none": "hep {additional}",
@@ -337,8 +349,14 @@
337349
"limited_account_hint.action": "Diskouez an aelad memes tra",
338350
"limited_account_hint.title": "Kuzhet eo bet ar profil-mañ gant an evezhierien eus {domain}.",
339351
"link_preview.author": "Gant {name}",
352+
"lists.add_member": "Ouzhpennañ",
353+
"lists.add_to_list": "Ouzhpennañ d'al listenn",
354+
"lists.create": "Krouiñ",
355+
"lists.create_list": "Krouiñ ul listenn",
340356
"lists.delete": "Dilemel al listenn",
357+
"lists.done": "Graet",
341358
"lists.edit": "Kemmañ al listenn",
359+
"lists.list_name": "Anv al listenn",
342360
"lists.replies_policy.followed": "Pep implijer.ez heuliet",
343361
"lists.replies_policy.list": "Izili ar roll",
344362
"lists.replies_policy.none": "Den ebet",
@@ -373,11 +391,17 @@
373391
"notification.follow": "heuliañ a ra {name} ac'hanoc'h",
374392
"notification.follow.name_and_others": "{name} <a>{count, plural, one {hag # den all} two {ha # zen all} few {ha # den all} many {ha # den all} other {ha # den all}}</a> zo o heuliañ ac'hanoc'h",
375393
"notification.follow_request": "Gant {name} eo bet goulennet ho heuliañ",
394+
"notification.label.reply": "Respont",
376395
"notification.moderation-warning.learn_more": "Gouzout hiroc'h",
377396
"notification.own_poll": "Echu eo ho sontadeg",
378397
"notification.reblog": "Gant {name} eo bet skignet ho toud",
398+
"notification.relationships_severance_event.learn_more": "Gouzout hiroc'h",
379399
"notification.status": "Emañ {name} o paouez toudañ",
380400
"notification.update": "Gant {name} ez eus bet kemmet un toud",
401+
"notification_requests.accept": "Asantiñ",
402+
"notification_requests.dismiss": "Diverkañ",
403+
"notification_requests.edit_selection": "Kemmañ",
404+
"notification_requests.exit_selection": "Graet",
381405
"notifications.clear": "Skarzhañ ar c'hemennoù",
382406
"notifications.clear_confirmation": "Ha sur oc'h e fell deoc'h skarzhañ ho holl kemennoù ?",
383407
"notifications.column_settings.admin.report": "Disklêriadurioù nevez :",
@@ -410,6 +434,10 @@
410434
"notifications.permission_denied": "Kemennoù war ar burev n'int ket hegerz rak pedadenn aotren ar merdeer a zo bet nullet araok",
411435
"notifications.permission_denied_alert": "Kemennoù wa ar burev na c'hellont ket bezañ lezelet, rak aotre ar merdeer a zo bet nac'het a-raok",
412436
"notifications.permission_required": "Kemennoù war ar burev n'int ket hegerz abalamour d'an aotre rekis n'eo ket bet roet.",
437+
"notifications.policy.accept": "Asantiñ",
438+
"notifications.policy.accept_hint": "Diskouez er c’hemennoù",
439+
"notifications.policy.drop": "Tremen e-bioù",
440+
"notifications.policy.filter": "Silañ",
413441
"notifications.policy.filter_new_accounts_title": "Kontoù nevez",
414442
"notifications_permission_banner.enable": "Lezel kemennoù war ar burev",
415443
"notifications_permission_banner.how_to_control": "Evit reseviñ kemennoù pa ne vez ket digoret Mastodon, lezelit kemennoù war ar burev. Gallout a rit kontrollañ peseurt eskemmoù a c'henel kemennoù war ar burev gant ar {icon} nozelenn a-us kentre ma'z int lezelet.",
@@ -515,6 +543,7 @@
515543
"search_results.accounts": "Profiloù",
516544
"search_results.all": "Pep tra",
517545
"search_results.hashtags": "Hashtagoù",
546+
"search_results.no_results": "Disoc'h ebet.",
518547
"search_results.see_all": "Gwelet pep tra",
519548
"search_results.statuses": "Toudoù",
520549
"server_banner.active_users": "implijerien·ezed oberiant",
@@ -579,6 +608,7 @@
579608
"subscribed_languages.target": "Cheñch ar yezhoù koumanantet evit {target}",
580609
"tabs_bar.home": "Degemer",
581610
"tabs_bar.notifications": "Kemennoù",
611+
"terms_of_service.title": "Divizoù implijout",
582612
"time_remaining.days": "{number, plural,one {# devezh} other {# a zevezh}} a chom",
583613
"time_remaining.hours": "{number, plural, one {# eurvezh} other{# eurvezh}} a chom",
584614
"time_remaining.minutes": "{number, plural, one {# munut} other{# a vunut}} a chom",

Diff for: app/javascript/mastodon/locales/et.json

+2
Original file line numberDiff line numberDiff line change
@@ -562,6 +562,7 @@
562562
"notification.favourite": "{name} märkis su postituse lemmikuks",
563563
"notification.favourite.name_and_others_with_link": "{name} ja <a>{count, plural, one {# veel} other {# teist}}</a> märkis su postituse lemmikuks",
564564
"notification.favourite_pm": "{name} märkis sinu privaatse mainimise lemmikuks",
565+
"notification.favourite_pm.name_and_others_with_link": "{name} ja <a>{count, plural, one {# veel} other {# veel}}</a> märkisid su privaatse mainimise lemmikuks",
565566
"notification.follow": "{name} alustas su jälgimist",
566567
"notification.follow.name_and_others": "{name} ja veel {count, plural, one {# kasutaja} other {# kasutajat}} hakkas sind jälgima",
567568
"notification.follow_request": "{name} soovib sind jälgida",
@@ -696,6 +697,7 @@
696697
"poll_button.remove_poll": "Eemalda küsitlus",
697698
"privacy.change": "Muuda postituse nähtavust",
698699
"privacy.direct.long": "Kõik postituses mainitud",
700+
"privacy.direct.short": "Privaatne mainimine",
699701
"privacy.private.long": "Ainult jälgijad",
700702
"privacy.private.short": "Jälgijad",
701703
"privacy.public.long": "Nii kasutajad kui mittekasutajad",

Diff for: app/lib/content_security_policy.rb

+3-3
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ def assets_host
1010
end
1111

1212
def media_hosts
13-
[assets_host, cdn_host_value, paperclip_root_url].concat(extra_data_hosts).compact
13+
[assets_host, cdn_host_value, paperclip_root_url].concat(extra_media_hosts).compact
1414
end
1515

1616
def sso_host
@@ -31,8 +31,8 @@ def sso_host
3131

3232
private
3333

34-
def extra_data_hosts
35-
ENV.fetch('EXTRA_DATA_HOSTS', '').split('|')
34+
def extra_media_hosts
35+
ENV.fetch('EXTRA_MEDIA_HOSTS', '').split(/(?:\s*,\s*|\s+)/).presence
3636
end
3737

3838
def url_from_configured_asset_host

Diff for: app/models/account.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ class Account < ApplicationRecord
153153
scope :not_excluded_by_account, ->(account) { where.not(id: account.excluded_from_timeline_account_ids) }
154154
scope :not_domain_blocked_by_account, ->(account) { where(arel_table[:domain].eq(nil).or(arel_table[:domain].not_in(account.excluded_from_timeline_domains))) }
155155
scope :dormant, -> { joins(:account_stat).merge(AccountStat.without_recent_activity) }
156-
scope :with_username, ->(value) { where arel_table[:username].lower.eq(value.to_s.downcase) }
156+
scope :with_username, ->(value) { value.is_a?(Array) ? where(arel_table[:username].lower.in(value.map { |x| x.to_s.downcase })) : where(arel_table[:username].lower.eq(value.to_s.downcase)) }
157157
scope :with_domain, ->(value) { where arel_table[:domain].lower.eq(value&.to_s&.downcase) }
158158
scope :without_memorial, -> { where(memorial: false) }
159159
scope :duplicate_uris, -> { select(:uri, Arel.star.count).group(:uri).having(Arel.star.count.gt(1)) }

Diff for: app/serializers/rest/instance_serializer.rb

+1
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ def registrations
107107
{
108108
enabled: registrations_enabled?,
109109
approval_required: Setting.registrations_mode == 'approved',
110+
reason_required: Setting.registrations_mode == 'approved' && Setting.require_invite_text,
110111
message: registrations_enabled? ? nil : registrations_message,
111112
min_age: Setting.min_age.presence,
112113
url: ENV.fetch('SSO_ACCOUNT_SIGN_UP', nil),

Diff for: app/services/activitypub/synchronize_followers_service.rb

+45-19
Original file line numberDiff line numberDiff line change
@@ -4,32 +4,46 @@ class ActivityPub::SynchronizeFollowersService < BaseService
44
include JsonLdHelper
55
include Payloadable
66

7+
MAX_COLLECTION_PAGES = 10
8+
79
def call(account, partial_collection_url)
810
@account = account
11+
@expected_followers_ids = []
12+
13+
return unless process_collection!(partial_collection_url)
14+
15+
remove_unexpected_local_followers!
16+
end
917

10-
items = collection_items(partial_collection_url)
11-
return if items.nil?
18+
private
19+
20+
def process_page!(items)
21+
page_expected_followers = extract_local_followers(items)
22+
@expected_followers_ids.concat(page_expected_followers.pluck(:id))
1223

13-
# There could be unresolved accounts (hence the call to .compact) but this
24+
handle_unexpected_outgoing_follows!(page_expected_followers)
25+
end
26+
27+
def extract_local_followers(items)
28+
# There could be unresolved accounts (hence the call to .filter_map) but this
1429
# should never happen in practice, since in almost all cases we keep an
1530
# Account record, and should we not do that, we should have sent a Delete.
1631
# In any case there is not much we can do if that occurs.
17-
@expected_followers = items.filter_map { |uri| ActivityPub::TagManager.instance.uri_to_resource(uri, Account) }
1832

19-
remove_unexpected_local_followers!
20-
handle_unexpected_outgoing_follows!
21-
end
33+
# TODO: this will need changes when switching to numeric IDs
2234

23-
private
35+
usernames = items.filter_map { |uri| ActivityPub::TagManager.instance.uri_to_local_id(uri, :username)&.downcase }
36+
Account.local.with_username(usernames)
37+
end
2438

2539
def remove_unexpected_local_followers!
26-
@account.followers.local.where.not(id: @expected_followers.map(&:id)).reorder(nil).find_each do |unexpected_follower|
40+
@account.followers.local.where.not(id: @expected_followers_ids).reorder(nil).find_each do |unexpected_follower|
2741
UnfollowService.new.call(unexpected_follower, @account)
2842
end
2943
end
3044

31-
def handle_unexpected_outgoing_follows!
32-
@expected_followers.each do |expected_follower|
45+
def handle_unexpected_outgoing_follows!(expected_followers)
46+
expected_followers.each do |expected_follower|
3347
next if expected_follower.following?(@account)
3448

3549
if expected_follower.requested?(@account)
@@ -50,21 +64,33 @@ def build_undo_follow_json(follow)
5064
Oj.dump(serialize_payload(follow, ActivityPub::UndoFollowSerializer))
5165
end
5266

53-
def collection_items(collection_or_uri)
54-
collection = fetch_collection(collection_or_uri)
55-
return unless collection.is_a?(Hash)
67+
# Only returns true if the whole collection has been processed
68+
def process_collection!(collection_uri, max_pages: MAX_COLLECTION_PAGES)
69+
collection = fetch_collection(collection_uri)
70+
return false unless collection.is_a?(Hash)
5671

5772
collection = fetch_collection(collection['first']) if collection['first'].present?
58-
return unless collection.is_a?(Hash)
5973

60-
# Abort if we'd have to paginate through more than one page of followers
61-
return if collection['next'].present?
74+
while collection.is_a?(Hash)
75+
process_page!(as_array(collection_page_items(collection)))
76+
77+
max_pages -= 1
78+
79+
return true if collection['next'].blank? # We reached the end of the collection
80+
return false if max_pages <= 0 # We reached our pages limit
81+
82+
collection = fetch_collection(collection['next'])
83+
end
84+
85+
false
86+
end
6287

88+
def collection_page_items(collection)
6389
case collection['type']
6490
when 'Collection', 'CollectionPage'
65-
as_array(collection['items'])
91+
collection['items']
6692
when 'OrderedCollection', 'OrderedCollectionPage'
67-
as_array(collection['orderedItems'])
93+
collection['orderedItems']
6894
end
6995
end
7096

Diff for: config/initializers/content_security_policy.rb

+12
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,18 @@
88

99
require_relative '../../app/lib/content_security_policy'
1010

11+
# TODO: Remove after 4.4.0
12+
if ENV['EXTRA_DATA_HOSTS']
13+
extra_media_hosts = ENV['EXTRA_DATA_HOSTS'].split('|').join(',')
14+
Rails.logger.warn "EXTRA_DATA_HOSTS is deprecated, use EXTRA_MEDIA_HOSTS=#{extra_media_hosts}"
15+
16+
if ENV['EXTRA_MEDIA_HOSTS']
17+
Rails.logger.warn "Ignoring EXTRA_DATA_HOSTS as EXTRA_MEDIA_HOSTS is set"
18+
else
19+
ENV['EXTRA_MEDIA_HOSTS'] = extra_media_hosts
20+
end
21+
end
22+
1123
policy = ContentSecurityPolicy.new
1224
assets_host = policy.assets_host
1325
media_hosts = policy.media_hosts

Diff for: config/locales/activerecord.ko.yml

+2
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ ko:
5555
too_soon: 너무 이릅니다. %{date} 이후로 지정해야 합니다
5656
user:
5757
attributes:
58+
date_of_birth:
59+
below_limit: 나이 제한보다 아래입니다
5860
email:
5961
blocked: 허용되지 않은 이메일 제공자입니다
6062
unreachable: 존재하지 않는 것 같습니다

Diff for: config/locales/br.yml

+3
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ br:
4747
demote: Argilañ
4848
disable: Skornañ
4949
disabled: Skornet
50+
display_name: Anv diskouezet
5051
domain: Domani
5152
edit: Kemmañ
5253
email: Postel
@@ -66,6 +67,7 @@ br:
6667
moderation:
6768
active: Oberiant
6869
all: Pep tra
70+
disabled: Diweredekaet
6971
pending: War ober
7072
silenced: Bevennet
7173
suspended: Astalet
@@ -98,6 +100,7 @@ br:
98100
action_logs:
99101
action_types:
100102
destroy_status: Dilemel ar c'hannad
103+
reset_password_user: Adderaouekaat ar ger-tremen
101104
update_status: Hizivaat ar c'hannad
102105
actions:
103106
destroy_status_html: Dilamet eo bet toud %{target} gant %{name}

Diff for: config/locales/devise.lv.yml

+10-10
Original file line numberDiff line numberDiff line change
@@ -85,25 +85,25 @@ lv:
8585
title: Drošības atslēgas iespējotas
8686
omniauth_callbacks:
8787
failure: Nevarēja autentificēt tevi no %{kind}, jo "%{reason}".
88-
success: Veiksmīgi autentificēts no %{kind} konta.
88+
success: Sekmīgi autentificēts no %{kind} konta.
8989
passwords:
9090
no_token: Tu nevari piekļūt šai lapai, ja neesi saņēmis paroles atiestatīšanas e-pasta ziņojumu. Ja ienāci no paroles atiestatīšanas e-pasta, lūdzu, pārliecinies, vai izmanto visu norādīto URL.
9191
send_instructions: Ja Tava e-pasta adrese ir mūsu datubāzē, pēc dažām minūtēm savā e-pasta adresē saņemsi paroles atkopes saiti. Lūgums pārbaudīt mēstuļu mapi, ja nesaņēmi šo e-pasta ziņojumu.
9292
send_paranoid_instructions: Ja Tava e-pasta adrese ir mūsu datubāzē, pēc dažām minūtēm savā e-pasta adresē saņemsi paroles atkopes saiti. Lūgums pārbaudīt mēstuļu mapi, ja nesaņēmi šo e-pasta ziņojumu.
93-
updated: Tava parole tika veiksmīgi nomainīta. Tagad esi pieteicies.
94-
updated_not_active: Tava parole ir veiksmīgi nomainīta.
93+
updated: Tava parole tika sekmīgi nomainīta. Tagad esi pieteicies.
94+
updated_not_active: Tava parole tika sekmīgi nomainīta.
9595
registrations:
96-
destroyed: Visu labu! Tavs konts ir veiksmīgi atcelts. Mēs ceram tevi drīz atkal redzēt.
97-
update_needs_confirmation: Tu veiksmīgi atjaunināji savu kontu, taču mums ir jāapliecina Tava jaunā e-pasta adrese. Lūgums pārbaudīt savu e-pastu un sekot apstiprinājuma saitei, lai apstiprinātu savu jauno e-pasta adresi. Lūgums pārbaudīt mēstuļu mapi, ja nesaņēmi šo e-pasta ziņojumu.
98-
updated: Tavs konts ir veiksmīgi atjaunināts.
96+
destroyed: Visu labu! Tavs konts ir sekmīgi atcelts. Mēs ceram Tevi drīz atkal redzēt.
97+
update_needs_confirmation: Tu sekmīgi atjaunināji savu kontu, taču mums ir jāapliecina Tava jaunā e-pasta adrese. Lūgums pārbaudīt savu e-pastu un sekot apstiprinājuma saitei, lai apstiprinātu savu jauno e-pasta adresi. Lūgums pārbaudīt mēstuļu mapi, ja nesaņēmi šo e-pasta ziņojumu.
98+
updated: Tavs konts tika sekmīgi atjaunināts.
9999
sessions:
100-
already_signed_out: Veiksmīgi izrakstījies.
101-
signed_in: Veiksmīgi pieteicies.
102-
signed_out: Veiksmīgi izrakstījies.
100+
already_signed_out: Sekmīgi izrakstījies.
101+
signed_in: Sekmīgi pierakstījies.
102+
signed_out: Sekmīgi izrakstījies.
103103
unlocks:
104104
send_instructions: Pēc dažām minūtēm Tu saņemsi e-pasta ziņojumu ar norādēm, kā atslēgt savu kontu. Lūgums pārbaudīt mēstuļu mapi, ja nesaņēmi šo e-pasta ziņojumu.
105105
send_paranoid_instructions: Ja Tavs konts pastāv, dažu minūšu laikā saņemsi e-pasta ziņojumu ar norādēm, kā to atslēgt. Lūgums pārbaudīt mēstuļu mapi, ja nesaņēmi šo e-pasta ziņojumu.
106-
unlocked: Konts tika veiksmīgi atbloķēts. Lūgums pieteikties, lai turpinātu.
106+
unlocked: Konts tika sekmīgi atslēgts. Lūgums pieteikties, lai turpinātu.
107107
errors:
108108
messages:
109109
already_confirmed: jau tika apstiprināts, lūgums mēģināt pieteikties

Diff for: config/locales/simple_form.ko.yml

+5-1
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ ko:
153153
position: 특정 상황에서 충돌이 발생할 경우 더 높은 역할이 충돌을 해결합니다. 특정 작업은 우선순위가 낮은 역할에 대해서만 수행될 수 있습니다
154154
webhook:
155155
events: 전송할 이벤트를 선택하세요
156-
template: 원하는 JSON 페이로드를 변수와 함께 작성하거나, 그냥 냅둬서 기본 JSON을 사용할 수 있습니다.
156+
template: 원하는 JSON 페이로드를 변수와 함께 작성하거나, 그대로 두어 기본 JSON을 사용할 수 있습니다.
157157
url: 이벤트가 어디로 전송될 지
158158
labels:
159159
account:
@@ -269,6 +269,7 @@ ko:
269269
favicon: 파비콘
270270
mascot: 사용자 정의 마스코트 (legacy)
271271
media_cache_retention_period: 미디어 캐시 유지 기한
272+
min_age: 최소 연령 제한
272273
peers_api_enabled: API에 발견 된 서버들의 목록 발행
273274
profile_directory: 프로필 책자 활성화
274275
registrations_mode: 누가 가입할 수 있는지
@@ -347,6 +348,9 @@ ko:
347348
jurisdiction: 법적 관할권
348349
min_age: 최소 연령
349350
user:
351+
date_of_birth_1i:
352+
date_of_birth_2i:
353+
date_of_birth_3i:
350354
role: 역할
351355
time_zone: 시간대
352356
user_role:

Diff for: spec/requests/api/v2/notifications_spec.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@
169169
end
170170

171171
context 'with min_id param' do
172-
let(:params) { { min_id: user.account.notifications.reload.first.id - 1 } }
172+
let(:params) { { min_id: user.account.notifications.order(id: :asc).first.id - 1 } }
173173

174174
it 'returns a notification group covering all notifications' do
175175
subject

0 commit comments

Comments
 (0)