diff options
author | multiple creatures <dev@multiple-creature.party> | 2019-07-15 13:34:05 -0500 |
---|---|---|
committer | multiple creatures <dev@multiple-creature.party> | 2019-07-15 14:12:24 -0500 |
commit | cf3ec71aa564c7fe47ec79f8dd5f14e3bce0b85c (patch) | |
tree | 49a3356c4177157b377aeca223a7d1c1e2e3dc17 /app/lib/bangtags.rb | |
parent | 0a5eba734e6aa6a6e7e8f64b022af8ea129c9f5d (diff) |
local visibility scope, chat scope+tags, unlisted tags
Diffstat (limited to 'app/lib/bangtags.rb')
-rw-r--r-- | app/lib/bangtags.rb | 25 |
1 files changed, 21 insertions, 4 deletions
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 |