Adding user settings (model and mailer), no form yet
This commit is contained in:
		
							parent
							
								
									943c69c65d
								
							
						
					
					
						commit
						06016453bd
					
				
					 6 changed files with 45 additions and 2 deletions
				
			
		
							
								
								
									
										1
									
								
								Gemfile
									
										
									
									
									
								
							
							
						
						
									
										1
									
								
								Gemfile
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -38,6 +38,7 @@ gem 'simple_form'
 | 
			
		|||
gem 'will_paginate'
 | 
			
		||||
gem 'rack-attack'
 | 
			
		||||
gem 'sidekiq'
 | 
			
		||||
gem 'ledermann-rails-settings'
 | 
			
		||||
 | 
			
		||||
gem 'react-rails'
 | 
			
		||||
gem 'browserify-rails'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -145,6 +145,8 @@ GEM
 | 
			
		|||
    json (1.8.3)
 | 
			
		||||
    launchy (2.4.3)
 | 
			
		||||
      addressable (~> 2.3)
 | 
			
		||||
    ledermann-rails-settings (2.4.2)
 | 
			
		||||
      activerecord (>= 3.1)
 | 
			
		||||
    letter_opener (1.4.1)
 | 
			
		||||
      launchy (~> 2.2)
 | 
			
		||||
    libv8 (3.16.14.15)
 | 
			
		||||
| 
						 | 
				
			
			@ -364,6 +366,7 @@ DEPENDENCIES
 | 
			
		|||
  httplog
 | 
			
		||||
  jbuilder (~> 2.0)
 | 
			
		||||
  jquery-rails
 | 
			
		||||
  ledermann-rails-settings
 | 
			
		||||
  letter_opener
 | 
			
		||||
  link_header
 | 
			
		||||
  lograge
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,11 +1,11 @@
 | 
			
		|||
class NotificationMailer < ApplicationMailer
 | 
			
		||||
  helper StreamEntriesHelper
 | 
			
		||||
  helper AtomBuilderHelper
 | 
			
		||||
 | 
			
		||||
  def mention(mentioned_account, status)
 | 
			
		||||
    @me     = mentioned_account
 | 
			
		||||
    @status = status
 | 
			
		||||
 | 
			
		||||
    return unless @me.user.settings(:notification_emails).mention
 | 
			
		||||
    mail to: @me.user.email, subject: "You were mentioned by #{@status.account.acct}"
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -13,6 +13,7 @@ class NotificationMailer < ApplicationMailer
 | 
			
		|||
    @me      = followed_account
 | 
			
		||||
    @account = follower
 | 
			
		||||
 | 
			
		||||
    return unless @me.user.settings(:notification_emails).follow
 | 
			
		||||
    mail to: @me.user.email, subject: "#{@account.acct} is now following you"
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -21,6 +22,7 @@ class NotificationMailer < ApplicationMailer
 | 
			
		|||
    @account = from_account
 | 
			
		||||
    @status  = target_status
 | 
			
		||||
 | 
			
		||||
    return unless @me.user.settings(:notification_emails).favourite
 | 
			
		||||
    mail to: @me.user.email, subject: "#{@account.acct} favourited your status"
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -29,6 +31,7 @@ class NotificationMailer < ApplicationMailer
 | 
			
		|||
    @account = from_account
 | 
			
		||||
    @status  = target_status
 | 
			
		||||
 | 
			
		||||
    return unless @me.user.settings(:notification_emails).reblog
 | 
			
		||||
    mail to: @me.user.email, subject: "#{@account.acct} reblogged your status"
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,4 +9,8 @@ class User < ApplicationRecord
 | 
			
		|||
  scope :prolific, -> { joins('inner join statuses on statuses.account_id = users.account_id').select('users.*, count(statuses.id) as statuses_count').group('users.id').order('statuses_count desc') }
 | 
			
		||||
  scope :recent,   -> { order('created_at desc') }
 | 
			
		||||
  scope :admins,   -> { where(admin: true) }
 | 
			
		||||
 | 
			
		||||
  has_settings do |s|
 | 
			
		||||
    s.key :notification_emails, defaults: { follow: true, reblog: true, favourite: true, mention: true }
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										21
									
								
								db/migrate/20161006213403_rails_settings_migration.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								db/migrate/20161006213403_rails_settings_migration.rb
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,21 @@
 | 
			
		|||
MIGRATION_BASE_CLASS = if ActiveRecord::VERSION::MAJOR >= 5
 | 
			
		||||
  ActiveRecord::Migration[5.0]
 | 
			
		||||
else
 | 
			
		||||
  ActiveRecord::Migration
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
class RailsSettingsMigration < MIGRATION_BASE_CLASS
 | 
			
		||||
  def self.up
 | 
			
		||||
    create_table :settings do |t|
 | 
			
		||||
      t.string     :var,    :null => false
 | 
			
		||||
      t.text       :value
 | 
			
		||||
      t.references :target, :null => false, :polymorphic => true
 | 
			
		||||
      t.timestamps :null => true
 | 
			
		||||
    end
 | 
			
		||||
    add_index :settings, [ :target_type, :target_id, :var ], :unique => true
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def self.down
 | 
			
		||||
    drop_table :settings
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										13
									
								
								db/schema.rb
									
										
									
									
									
								
							
							
						
						
									
										13
									
								
								db/schema.rb
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -10,7 +10,7 @@
 | 
			
		|||
#
 | 
			
		||||
# It's strongly recommended that you check this file into your version control system.
 | 
			
		||||
 | 
			
		||||
ActiveRecord::Schema.define(version: 20161003145426) do
 | 
			
		||||
ActiveRecord::Schema.define(version: 20161006213403) do
 | 
			
		||||
 | 
			
		||||
  # These are extensions that must be enabled in order to support this database
 | 
			
		||||
  enable_extension "plpgsql"
 | 
			
		||||
| 
						 | 
				
			
			@ -126,6 +126,17 @@ ActiveRecord::Schema.define(version: 20161003145426) do
 | 
			
		|||
    t.index ["uid"], name: "index_oauth_applications_on_uid", unique: true, using: :btree
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  create_table "settings", force: :cascade do |t|
 | 
			
		||||
    t.string   "var",         null: false
 | 
			
		||||
    t.text     "value"
 | 
			
		||||
    t.string   "target_type", null: false
 | 
			
		||||
    t.integer  "target_id",   null: false
 | 
			
		||||
    t.datetime "created_at"
 | 
			
		||||
    t.datetime "updated_at"
 | 
			
		||||
    t.index ["target_type", "target_id", "var"], name: "index_settings_on_target_type_and_target_id_and_var", unique: true, using: :btree
 | 
			
		||||
    t.index ["target_type", "target_id"], name: "index_settings_on_target_type_and_target_id", using: :btree
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  create_table "statuses", force: :cascade do |t|
 | 
			
		||||
    t.string   "uri"
 | 
			
		||||
    t.integer  "account_id",                  null: false
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue