diff options
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/form/status_batch.rb | 39 | ||||
-rw-r--r-- | app/models/user.rb | 4 | ||||
-rw-r--r-- | app/models/web/push_subscription.rb | 8 |
3 files changed, 48 insertions, 3 deletions
diff --git a/app/models/form/status_batch.rb b/app/models/form/status_batch.rb new file mode 100644 index 000000000..a97b4aa28 --- /dev/null +++ b/app/models/form/status_batch.rb @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +class Form::StatusBatch + include ActiveModel::Model + + attr_accessor :status_ids, :action + + ACTION_TYPE = %w(nsfw_on nsfw_off delete).freeze + + def save + case action + when 'nsfw_on', 'nsfw_off' + change_sensitive(action == 'nsfw_on') + when 'delete' + delete_statuses + end + end + + private + + def change_sensitive(sensitive) + media_attached_status_ids = MediaAttachment.where(status_id: status_ids).pluck(:status_id) + ApplicationRecord.transaction do + Status.where(id: media_attached_status_ids).find_each do |status| + status.update!(sensitive: sensitive) + end + end + true + rescue ActiveRecord::RecordInvalid + false + end + + def delete_statuses + Status.where(id: status_ids).find_each do |status| + RemovalWorker.perform_async(status.id) + end + true + end +end diff --git a/app/models/user.rb b/app/models/user.rb index becf0018f..25dc25864 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -83,6 +83,10 @@ class User < ApplicationRecord settings.default_sensitive end + def setting_unfollow_modal + settings.unfollow_modal + end + def setting_boost_modal settings.boost_modal end diff --git a/app/models/web/push_subscription.rb b/app/models/web/push_subscription.rb index 4440706a6..baf6a1ece 100644 --- a/app/models/web/push_subscription.rb +++ b/app/models/web/push_subscription.rb @@ -12,6 +12,9 @@ # updated_at :datetime not null # +require 'webpush' +require_relative '../../models/setting' + class Web::PushSubscription < ApplicationRecord include RoutingHelper include StreamEntriesHelper @@ -37,7 +40,6 @@ class Web::PushSubscription < ApplicationRecord nsfw = notification.target_status.nil? || notification.target_status.spoiler_text.empty? ? nil : notification.target_status.spoiler_text # TODO: Make sure that the payload does not exceed 4KB - Webpush::PayloadTooLarge - # TODO: Queue the requests - Webpush::TooManyRequests Webpush.payload_send( message: JSON.generate( title: title, @@ -59,7 +61,7 @@ class Web::PushSubscription < ApplicationRecord p256dh: key_p256dh, auth: key_auth, vapid: { - # subject: "mailto:#{Setting.site_contact_email}", + subject: "mailto:#{Setting.site_contact_email}", private_key: Rails.configuration.x.vapid_private_key, public_key: Rails.configuration.x.vapid_public_key, }, @@ -166,7 +168,7 @@ class Web::PushSubscription < ApplicationRecord p256dh: key_p256dh, auth: key_auth, vapid: { - # subject: "mailto:#{Setting.site_contact_email}", + subject: "mailto:#{Setting.site_contact_email}", private_key: Rails.configuration.x.vapid_private_key, public_key: Rails.configuration.x.vapid_public_key, }, |