From cf3ec71aa564c7fe47ec79f8dd5f14e3bce0b85c Mon Sep 17 00:00:00 2001 From: multiple creatures Date: Mon, 15 Jul 2019 13:34:05 -0500 Subject: local visibility scope, chat scope+tags, unlisted tags --- app/lib/bangtags.rb | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) (limited to 'app/lib/bangtags.rb') diff --git a/app/lib/bangtags.rb b/app/lib/bangtags.rb index 4f4452486..e106dc582 100644 --- a/app/lib/bangtags.rb +++ b/app/lib/bangtags.rb @@ -452,8 +452,9 @@ class Bangtags 'group' => :private, 'unlisted' => :unlisted, - 'local' => :unlisted, - 'monsterpit' => :unlisted, + + 'local' => :local, + 'monsterpit' => :local, 'public' => :public, 'world' => :public, @@ -552,9 +553,25 @@ class Bangtags end def add_tags(to_status, *tags) - records = [] - valid_name = /^[[:word:]:_\-]*[[:alpha:]:_·\-][[:word:]:_\-]*$/ + valid_name = /^[[:word:]:._\-]*[[:alpha:]:._·\-][[:word:]:._\-]*$/ tags = tags.select {|t| t.present? && valid_name.match?(t)}.uniq ProcessHashtagsService.new.call(to_status, tags) + to_status.save + end + + def del_tags(from_status, *tags) + valid_name = /^[[:word:]:._\-]*[[:alpha:]:._·\-][[:word:]:._\-]*$/ + tags = tags.select {|t| t.present? && valid_name.match?(t)}.uniq + tags.map { |str| str.mb_chars.downcase }.uniq(&:to_s).each do |name| + name.gsub!(/[:.]+/, '.') + next if name.blank? || name == '.' + if name.ends_with?('.') + filtered_tags = from_status.tags.select { |t| t.name == name || t.name.starts_with?(name) } + else + filtered_tags = from_status.tags.select { |t| t.name == name } + end + from_status.tags.destroy(filtered_tags) + end + from_status.save end end -- cgit