diff --git a/app/models/user_first.rb b/app/models/user_first.rb index 4f7862037..80e875b7e 100644 --- a/app/models/user_first.rb +++ b/app/models/user_first.rb @@ -1,7 +1,9 @@ class UserFirst < ActiveRecord::Base def self.types - @types ||= Enum.new(used_emoji: 1, mentioned_user: 2) + @types ||= Enum.new(used_emoji: 1, + mentioned_user: 2 #unused now + ) end def self.create_for(user_id, type, post_id=nil) diff --git a/db/fixtures/006_badges.rb b/db/fixtures/006_badges.rb index c75ba4d3d..9de13c996 100644 --- a/db/fixtures/006_badges.rb +++ b/db/fixtures/006_badges.rb @@ -365,10 +365,10 @@ Badge.seed do |b| b.multiple_grant = false b.target_posts = true b.show_posts = true - b.query = BadgeQueries.has_user_first(:mentioned_user) + b.query = BadgeQueries::FirstMention b.badge_grouping_id = BadgeGrouping::GettingStarted b.default_badge_grouping_id = BadgeGrouping::GettingStarted - b.trigger = Badge::Trigger::PostProcessed + b.trigger = Badge::Trigger::PostRevision b.system = true end diff --git a/lib/badge_queries.rb b/lib/badge_queries.rb index f32bbf7cf..8f32017b1 100644 --- a/lib/badge_queries.rb +++ b/lib/badge_queries.rb @@ -134,6 +134,22 @@ SQL HAVING COUNT(p.id) > 0 SQL + FirstMention = <<-SQL + SELECT acting_user_id AS user_id, min(target_post_id) AS post_id, min(p.created_at) AS granted_at + FROM user_actions + JOIN posts p ON p.id = target_post_id + JOIN topics t ON t.id = topic_id + JOIN categories c on c.id = category_id + WHERE action_type = 7 + AND NOT read_restricted + AND p.deleted_at IS NULL + AND t.deleted_at IS NULL + AND t.visible + AND t.archetype <> 'private_message' + AND (:backfill OR p.id IN (:post_ids)) + GROUP BY acting_user_id +SQL + def self.invite_badge(count,trust_level) " SELECT u.id user_id, current_timestamp granted_at diff --git a/lib/cooked_post_processor.rb b/lib/cooked_post_processor.rb index cbb71e0d4..6b730d719 100644 --- a/lib/cooked_post_processor.rb +++ b/lib/cooked_post_processor.rb @@ -45,10 +45,6 @@ class CookedPostProcessor created |= UserFirst.create_for(@post.user_id, :used_emoji, @post.id) end - if @doc.css("span.mention, a.mention").size > 0 - created |= UserFirst.create_for(@post.user_id, :mentioned_user, @post.id) - end - if created BadgeGranter.queue_badge_grant(Badge::Trigger::PostProcessed, user: @post.user) end diff --git a/spec/models/user_firsts_spec.rb b/spec/models/user_firsts_spec.rb index 5bbe8733f..c93d49103 100644 --- a/spec/models/user_firsts_spec.rb +++ b/spec/models/user_firsts_spec.rb @@ -31,17 +31,6 @@ describe UserFirst do end - context 'mentioning' do - let(:codinghorror) { Fabricate(:codinghorror) } - - it "creates one the first time a user mentions another" do - post = PostCreator.create(user, title: "gonna mention another user", raw: "what is up @codinghorror?") - uf = UserFirst.where(user_id: user.id, first_type: UserFirst.types[:mentioned_user]).first - expect(uf).to be_present - expect(uf.post_id).to eq(post.id) - end - end - context "privacy" do let(:codinghorror) { Fabricate(:codinghorror) }