Change: #428 emoji_reaction_available_serverプロパティをStatusからAccountオブジェクトに移動する (#434)

* Change: `emoji_reaction_available_server`プロパティを`Status`から`Account`オブジェクトに移動する

* Fix test
This commit is contained in:
KMY(雪あすか) 2024-01-09 10:43:59 +09:00 committed by GitHub
parent 616d0c5267
commit d315f23bed
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 14 additions and 12 deletions

View file

@ -41,6 +41,7 @@ export interface ApiAccountJSON {
discoverable: boolean;
indexable: boolean;
display_name: string;
emoji_reaction_available_server: boolean;
emojis: ApiCustomEmojiJSON[];
fields: ApiAccountFieldJSON[];
followers_count: number;

View file

@ -599,7 +599,7 @@ class Status extends ImmutablePureComponent {
let emojiReactionsBar = null;
if (!this.props.withoutEmojiReactions && status.get('emoji_reactions')) {
const emojiReactions = status.get('emoji_reactions');
const emojiReactionAvailableServer = !isHideItem('emoji_reaction_unavailable_server') || status.get('emoji_reaction_available_server');
const emojiReactionAvailableServer = !isHideItem('emoji_reaction_unavailable_server') || status.getIn(['account', 'emoji_reaction_available_server']);
if (emojiReactions.size > 0 && enableEmojiReaction && emojiReactionAvailableServer) {
emojiReactionsBar = <StatusEmojiReactionsBar emojiReactions={emojiReactions} myReactionOnly={!isShowItem('emoji_reaction_on_timeline')} status={status} onEmojiReact={this.props.onEmojiReact} onUnEmojiReact={this.props.onUnEmojiReact} />;
}

View file

@ -461,7 +461,7 @@ class StatusActionBar extends ImmutablePureComponent {
<IconButton className='status__action-bar__button' title={intl.formatMessage(messages.hide)} icon='eye' iconComponent={VisibilityIcon} onClick={this.handleHideClick} />
);
const emojiReactionAvailableServer = !isHideItem('emoji_reaction_unavailable_server') || status.get('emoji_reaction_available_server');
const emojiReactionAvailableServer = !isHideItem('emoji_reaction_unavailable_server') || account.get('emoji_reaction_available_server');
const emojiReactionPolicy = account.getIn(['other_settings', 'emoji_reaction_policy']) || 'allow';
const following = emojiReactionPolicy !== 'following_only' || (relationship && relationship.get('following'));
const followed = emojiReactionPolicy !== 'followers_only' || (relationship && relationship.get('followed_by'));

View file

@ -369,7 +369,7 @@ class ActionBar extends PureComponent {
reblogIconComponent = RepeatDisabledIcon;
}
const emojiReactionAvailableServer = !isHideItem('emoji_reaction_unavailable_server') || status.get('emoji_reaction_available_server');
const emojiReactionAvailableServer = !isHideItem('emoji_reaction_unavailable_server') || account.get('emoji_reaction_available_server');
const emojiReactionPolicy = account.getIn(['other_settings', 'emoji_reaction_policy']) || 'allow';
const following = emojiReactionPolicy !== 'following_only' || (relationship && relationship.get('following'));
const followed = emojiReactionPolicy !== 'followers_only' || (relationship && relationship.get('followed_by'));

View file

@ -232,7 +232,7 @@ class DetailedStatus extends ImmutablePureComponent {
let emojiReactionsBar = null;
if (status.get('emoji_reactions')) {
const emojiReactions = status.get('emoji_reactions');
const emojiReactionAvailableServer = !isHideItem('emoji_reaction_unavailable_server') || status.get('emoji_reaction_available_server');
const emojiReactionAvailableServer = !isHideItem('emoji_reaction_unavailable_server') || status.getIn(['account', 'emoji_reaction_available_server']);
if (emojiReactions.size > 0 && enableEmojiReaction && emojiReactionAvailableServer) {
emojiReactionsBar = <StatusEmojiReactionsBar emojiReactions={emojiReactions} status={status} onEmojiReact={this.props.onEmojiReact} onUnEmojiReact={this.props.onUnEmojiReact} />;
}

View file

@ -88,6 +88,7 @@ export const accountDefaultValues: AccountShape = {
indexable: false,
display_name: '',
display_name_html: '',
emoji_reaction_available_server: false,
emojis: List<CustomEmoji>(),
fields: List<AccountField>(),
group: false,

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, :subscribable,
:note, :url, :uri, :avatar, :avatar_static, :header, :header_static, :subscribable, :emoji_reaction_available_server,
:followers_count, :following_count, :statuses_count, :last_status_at, :hide_collections, :other_settings, :noindex
has_one :moved_to_account, key: :moved, serializer: REST::AccountSerializer, if: :moved_and_not_nested?
@ -119,6 +119,12 @@ class REST::AccountSerializer < ActiveModel::Serializer
object.unavailable? ? false : object.indexable
end
def emoji_reaction_available_server
return Setting.enable_emoji_reaction if object.local?
InstanceInfo.emoji_reaction_available?(object.domain)
end
def moved_to_account
object.unavailable? ? nil : AccountDecorator.new(object.moved_to_account)
end

View file

@ -6,7 +6,7 @@ class REST::StatusSerializer < ActiveModel::Serializer
attributes :id, :created_at, :in_reply_to_id, :in_reply_to_account_id,
:sensitive, :spoiler_text, :visibility, :visibility_ex, :limited_scope, :language,
:uri, :url, :replies_count, :reblogs_count, :searchability, :markdown,
:status_reference_ids, :status_references_count, :status_referred_by_count, :emoji_reaction_available_server,
:status_reference_ids, :status_references_count, :status_referred_by_count,
:favourites_count, :emoji_reactions, :emoji_reactions_count, :reactions, :edited_at
attribute :favourited, if: :current_user?
@ -164,12 +164,6 @@ class REST::StatusSerializer < ActiveModel::Serializer
end
end
def emoji_reaction_available_server
return Setting.enable_emoji_reaction if object.local?
InstanceInfo.emoji_reaction_available?(object.account.domain)
end
def reactions
emoji_reactions.tap do |rs|
rs.each do |emoji_reaction|