From d9339677d6daa33dc020cf3400c3dec210b06f31 Mon Sep 17 00:00:00 2001 From: Fire Demon Date: Fri, 31 Jul 2020 10:58:52 -0500 Subject: [Command Tags] Add support for persistent variables --- app/lib/command_tag/command/account_tools.rb | 37 ++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 app/lib/command_tag/command/account_tools.rb (limited to 'app/lib/command_tag/command/account_tools.rb') diff --git a/app/lib/command_tag/command/account_tools.rb b/app/lib/command_tag/command/account_tools.rb new file mode 100644 index 000000000..6d2e8eca3 --- /dev/null +++ b/app/lib/command_tag/command/account_tools.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true +module CommandTag::Command::AccountTools + def handle_account_at_start(args) + return if args[0].blank? + + case args[0].downcase + when 'set' + handle_account_set(args[1..-1]) + end + end + + alias handle_acct_at_start handle_account_at_start + + private + + def handle_account_set(args) + return if args[0].blank? + + case args[0].downcase + when 'v', 'p', 'visibility', 'privacy', 'default-visibility', 'default-privacy' + args[1] = read_visibility_from(args[1]) + return if args[1].blank? + + if args[2].blank? + @account.user.settings.default_privacy = args[1] + elsif args[1] == 'public' + domains = args[2..-1].map { |domain| normalize_domain(domain) unless domain == '*' }.uniq.compact + @account.domain_permissions.where(domain: domains).destroy_all if domains.present? + else + args[2..-1].flat_map(&:split).uniq.each do |domain| + domain = normalize_domain(domain) unless domain == '*' + @account.domain_permissions.create_or_update(domain: domain, visibility: args[1]) if domain.present? + end + end + end + end +end -- cgit