1
0
Fork 0
forked from gitea/nas

Add stop streaming config

This commit is contained in:
KMY 2023-04-28 21:36:44 +09:00
parent c47f85eddf
commit f5332b0654
10 changed files with 19 additions and 9 deletions

View file

@ -20,7 +20,7 @@ class Settings::ProfilesController < Settings::BaseController
private
def account_params
params.require(:account).permit(:display_name, :note, :avatar, :header, :locked, :my_actor_type, :searchability, :dissubscribable, :group_allow_private_message, :discoverable, :hide_collections, fields_attributes: [:name, :value])
params.require(:account).permit(:display_name, :note, :avatar, :header, :locked, :my_actor_type, :searchability, :dissubscribable, :stop_emoji_reaction_streaming, :group_allow_private_message, :discoverable, :hide_collections, fields_attributes: [:name, :value])
end
def set_account

View file

@ -100,7 +100,7 @@ class ActivityPub::Activity::Like < ActivityPub::Activity
emoji_group = @original_status.emoji_reactions_grouped_by_name
.find { |reaction_group| reaction_group['name'] == emoji_reaction.name && (!reaction_group.key?(:domain) || reaction_group['domain'] == emoji_reaction.custom_emoji&.domain) }
emoji_group['status_id'] = @original_status.id.to_s
FeedAnyJsonWorker.perform_async(render_emoji_reaction(emoji_group), @original_status.id, emoji_reaction.account_id)
DeliveryEmojiReactionWorker.perform_async(render_emoji_reaction(emoji_group), @original_status.id, emoji_reaction.account_id)
end
def render_emoji_reaction(emoji_group)

View file

@ -151,7 +151,7 @@ class ActivityPub::Activity::Undo < ActivityPub::Activity
emoji_group = { 'name' => emoji_reaction.name, 'count' => 0, 'account_ids' => [], 'status_id' => @original_status.id.to_s }
emoji_group['domain'] = emoji_reaction.custom_emoji.domain if emoji_reaction.custom_emoji
end
FeedAnyJsonWorker.perform_async(render_emoji_reaction(emoji_group), @original_status.id, emoji_reaction.account_id)
DeliveryEmojiReactionWorker.perform_async(render_emoji_reaction(emoji_group), @original_status.id, emoji_reaction.account_id)
end
def render_emoji_reaction(emoji_group)

View file

@ -53,6 +53,7 @@
# group_allow_private_message :boolean
# searchability :integer default("private"), not null
# dissubscribable :boolean default(FALSE), not null
# stop_emoji_reaction_streaming :boolean default(FALSE)
#
class Account < ApplicationRecord

View file

@ -57,7 +57,7 @@ class EmojiReactService < BaseService
emoji_group = emoji_reaction.status.emoji_reactions_grouped_by_name
.find { |reaction_group| reaction_group['name'] == emoji_reaction.name && (!reaction_group.key?(:domain) || reaction_group['domain'] == emoji_reaction.custom_emoji&.domain) }
emoji_group['status_id'] = emoji_reaction.status_id.to_s
FeedAnyJsonWorker.perform_async(render_emoji_reaction(emoji_group), emoji_reaction.status_id, emoji_reaction.account_id)
DeliveryEmojiReactionWorker.perform_async(render_emoji_reaction(emoji_group), emoji_reaction.status_id, emoji_reaction.account_id)
end
def bump_potential_friendship(account, status)

View file

@ -45,7 +45,7 @@ class UnEmojiReactService < BaseService
emoji_group = { 'name' => emoji_reaction.name, 'count' => 0, 'account_ids' => [], 'status_id' => @status.id.to_s }
emoji_group['domain'] = emoji_reaction.custom_emoji.domain if emoji_reaction.custom_emoji
end
FeedAnyJsonWorker.perform_async(render_emoji_reaction(emoji_group), @status.id, emoji_reaction.account_id)
DeliveryEmojiReactionWorker.perform_async(render_emoji_reaction(emoji_group), @status.id, emoji_reaction.account_id)
end
def build_json(emoji_reaction)

View file

@ -41,6 +41,9 @@
.fields-group
= f.input :dissubscribable, as: :boolean, wrapper: :with_label, hint: t('simple_form.hints.defaults.dissubscribable')
.fields-group
= f.input :stop_emoji_reaction_streaming, as: :boolean, wrapper: :with_label, hint: t('simple_form.hints.defaults.stop_emoji_reaction_streaming')
%hr.spacer/
.fields-row

View file

@ -1,6 +1,6 @@
# frozen_string_literal: true
class FeedAnyJsonWorker
class DeliveryEmojiReactionWorker
include Sidekiq::Worker
include Redisable
include Lockable
@ -12,11 +12,11 @@ class FeedAnyJsonWorker
status = Status.find(status_id.to_i)
if status.present?
scope_status(status).find_each do |account|
scope_status(status).where.not(stop_emoji_reaction_streaming: true).find_each do |account|
redis.publish("timeline:#{account.id}", payload_json) if redis.exists?("subscribed:timeline:#{account.id}")
end
if status.visibility.to_sym != :public && status.visibility.to_sym != :unlisted && status.visibility.to_sym != :public_unlisted && status.account_id != my_account_id &&
if !([:public, :unlisted, :public_unlisted].include?(status.visibility.to_sym)) && status.account_id != my_account_id &&
redis.exists?("subscribed:timeline:#{status.account_id}")
redis.publish("timeline:#{status.account_id}", payload_json)
end

View file

@ -0,0 +1,5 @@
class AddEmojiReactionStreamingToAccounts < ActiveRecord::Migration[6.1]
def change
add_column :accounts, :stop_emoji_reaction_streaming, :boolean, default: false
end
end

View file

@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 2023_04_27_233749) do
ActiveRecord::Schema.define(version: 2023_04_28_111230) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@ -192,6 +192,7 @@ ActiveRecord::Schema.define(version: 2023_04_27_233749) do
t.boolean "group_allow_private_message"
t.integer "searchability", default: 2, null: false
t.boolean "dissubscribable", default: false, null: false
t.boolean "stop_emoji_reaction_streaming", default: false
t.index "(((setweight(to_tsvector('simple'::regconfig, (display_name)::text), 'A'::\"char\") || setweight(to_tsvector('simple'::regconfig, (username)::text), 'B'::\"char\")) || setweight(to_tsvector('simple'::regconfig, (COALESCE(domain, ''::character varying))::text), 'C'::\"char\")))", name: "search_index", using: :gin
t.index "lower((username)::text), COALESCE(lower((domain)::text), ''::text)", name: "index_accounts_on_username_and_domain_lower", unique: true
t.index ["moved_to_account_id"], name: "index_accounts_on_moved_to_account_id", where: "(moved_to_account_id IS NOT NULL)"