This commit is contained in:
Benoît Guchet 2025-05-06 16:48:46 +02:00 committed by GitHub
commit 7d57566d18
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 16 additions and 5 deletions

View File

@ -26,6 +26,7 @@ export interface BaseApiAccountJSON {
fields: ApiAccountFieldJSON[];
followers_count: number;
following_count: number;
used_languages: string[];
group: boolean;
header: string;
header_static: string;

View File

@ -20,10 +20,10 @@ const messages = defineMessages({
});
const getAccountLanguages = createSelector([
(state, accountId) => state.getIn(['timelines', `account:${accountId}`, 'items'], ImmutableList()),
state => state.get('statuses'),
], (statusIds, statuses) =>
ImmutableSet(statusIds.map(statusId => statuses.get(statusId)).filter(status => !status.get('reblog')).map(status => status.get('language'))));
(state, accountId) => state.getIn(['accounts', accountId, 'used_languages']),
], (used_languages) => {
return ImmutableSet(used_languages);
});
const mapStateToProps = (state, { accountId }) => ({
acct: state.getIn(['accounts', accountId, 'acct']),

View File

@ -97,6 +97,7 @@ export const accountDefaultValues: AccountShape = {
// This comes from `ApiMutedAccountJSON`, but we should eventually
// store that in a different object.
mute_expires_at: null,
used_languages: []
};
const AccountFactory = ImmutableRecord<AccountShape>(accountDefaultValues);

View File

@ -36,4 +36,12 @@ class AccountStat < ApplicationRecord
def statuses_count
[attributes['statuses_count'], 0].max
end
def used_languages
list = Status.where(account_id: attributes['account_id'])
.distinct
.reorder(:language)
.pluck(:language)
list
end
end

View File

@ -17,6 +17,7 @@ module Account::Counters
:followers_count,
:followers_count=,
:last_status_at,
:used_languages,
to: :account_stat
# @param [Symbol] key

View File

@ -7,7 +7,7 @@ class REST::AccountSerializer < ActiveModel::Serializer
# Please update `app/javascript/mastodon/api_types/accounts.ts` when making changes to the attributes
attributes :id, :username, :acct, :display_name, :locked, :bot, :discoverable, :indexable, :group, :created_at,
:note, :url, :uri, :avatar, :avatar_static, :header, :header_static,
:note, :url, :uri, :avatar, :avatar_static, :header, :header_static, :used_languages,
:followers_count, :following_count, :statuses_count, :last_status_at, :hide_collections
has_one :moved_to_account, key: :moved, serializer: REST::AccountSerializer, if: :moved_and_not_nested?