forked from fedi/mastodon
Adding user settings (model and mailer), no form yet
This commit is contained in:
parent
943c69c65d
commit
06016453bd
1
Gemfile
1
Gemfile
|
@ -38,6 +38,7 @@ gem 'simple_form'
|
||||||
gem 'will_paginate'
|
gem 'will_paginate'
|
||||||
gem 'rack-attack'
|
gem 'rack-attack'
|
||||||
gem 'sidekiq'
|
gem 'sidekiq'
|
||||||
|
gem 'ledermann-rails-settings'
|
||||||
|
|
||||||
gem 'react-rails'
|
gem 'react-rails'
|
||||||
gem 'browserify-rails'
|
gem 'browserify-rails'
|
||||||
|
|
|
@ -145,6 +145,8 @@ GEM
|
||||||
json (1.8.3)
|
json (1.8.3)
|
||||||
launchy (2.4.3)
|
launchy (2.4.3)
|
||||||
addressable (~> 2.3)
|
addressable (~> 2.3)
|
||||||
|
ledermann-rails-settings (2.4.2)
|
||||||
|
activerecord (>= 3.1)
|
||||||
letter_opener (1.4.1)
|
letter_opener (1.4.1)
|
||||||
launchy (~> 2.2)
|
launchy (~> 2.2)
|
||||||
libv8 (3.16.14.15)
|
libv8 (3.16.14.15)
|
||||||
|
@ -364,6 +366,7 @@ DEPENDENCIES
|
||||||
httplog
|
httplog
|
||||||
jbuilder (~> 2.0)
|
jbuilder (~> 2.0)
|
||||||
jquery-rails
|
jquery-rails
|
||||||
|
ledermann-rails-settings
|
||||||
letter_opener
|
letter_opener
|
||||||
link_header
|
link_header
|
||||||
lograge
|
lograge
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
class NotificationMailer < ApplicationMailer
|
class NotificationMailer < ApplicationMailer
|
||||||
helper StreamEntriesHelper
|
helper StreamEntriesHelper
|
||||||
helper AtomBuilderHelper
|
|
||||||
|
|
||||||
def mention(mentioned_account, status)
|
def mention(mentioned_account, status)
|
||||||
@me = mentioned_account
|
@me = mentioned_account
|
||||||
@status = status
|
@status = status
|
||||||
|
|
||||||
|
return unless @me.user.settings(:notification_emails).mention
|
||||||
mail to: @me.user.email, subject: "You were mentioned by #{@status.account.acct}"
|
mail to: @me.user.email, subject: "You were mentioned by #{@status.account.acct}"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -13,6 +13,7 @@ class NotificationMailer < ApplicationMailer
|
||||||
@me = followed_account
|
@me = followed_account
|
||||||
@account = follower
|
@account = follower
|
||||||
|
|
||||||
|
return unless @me.user.settings(:notification_emails).follow
|
||||||
mail to: @me.user.email, subject: "#{@account.acct} is now following you"
|
mail to: @me.user.email, subject: "#{@account.acct} is now following you"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -21,6 +22,7 @@ class NotificationMailer < ApplicationMailer
|
||||||
@account = from_account
|
@account = from_account
|
||||||
@status = target_status
|
@status = target_status
|
||||||
|
|
||||||
|
return unless @me.user.settings(:notification_emails).favourite
|
||||||
mail to: @me.user.email, subject: "#{@account.acct} favourited your status"
|
mail to: @me.user.email, subject: "#{@account.acct} favourited your status"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -29,6 +31,7 @@ class NotificationMailer < ApplicationMailer
|
||||||
@account = from_account
|
@account = from_account
|
||||||
@status = target_status
|
@status = target_status
|
||||||
|
|
||||||
|
return unless @me.user.settings(:notification_emails).reblog
|
||||||
mail to: @me.user.email, subject: "#{@account.acct} reblogged your status"
|
mail to: @me.user.email, subject: "#{@account.acct} reblogged your status"
|
||||||
end
|
end
|
||||||
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 :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 :recent, -> { order('created_at desc') }
|
||||||
scope :admins, -> { where(admin: true) }
|
scope :admins, -> { where(admin: true) }
|
||||||
|
|
||||||
|
has_settings do |s|
|
||||||
|
s.key :notification_emails, defaults: { follow: true, reblog: true, favourite: true, mention: true }
|
||||||
|
end
|
||||||
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.
|
# 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
|
# These are extensions that must be enabled in order to support this database
|
||||||
enable_extension "plpgsql"
|
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
|
t.index ["uid"], name: "index_oauth_applications_on_uid", unique: true, using: :btree
|
||||||
end
|
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|
|
create_table "statuses", force: :cascade do |t|
|
||||||
t.string "uri"
|
t.string "uri"
|
||||||
t.integer "account_id", null: false
|
t.integer "account_id", null: false
|
||||||
|
|
Loading…
Reference in a new issue