Sha256: 66419b2c6ae6a52114f7a78286bb5ee4a77802fbf43a79e8df46a07f3fa958e2
Contents?: true
Size: 1.9 KB
Versions: 1
Compression:
Stored size: 1.9 KB
Contents
# frozen_string_literal: true module Decidim # The form object that handles the data behind updating a user's # notifications settings in their profile page. class NotificationsSettingsForm < Form mimic :user attribute :email_on_moderations, Boolean attribute :newsletter_notifications, Boolean attribute :notifications_from_followed, Boolean attribute :notifications_from_own_activity, Boolean attribute :allow_public_contact, Boolean attribute :notification_settings, Hash attribute :notifications_sending_frequency, String def map_model(user) self.newsletter_notifications = user.newsletter_notifications_at.present? self.notifications_from_followed = ["all", "followed-only"].include? user.notification_types self.notifications_from_own_activity = ["all", "own-only"].include? user.notification_types self.allow_public_contact = user.direct_message_types == "all" self.notifications_sending_frequency = user.notifications_sending_frequency end def newsletter_notifications_at return nil unless newsletter_notifications Time.current end def notification_types if notifications_from_followed && notifications_from_own_activity "all" elsif notifications_from_followed "followed-only" elsif notifications_from_own_activity "own-only" else "none" end end def direct_message_types allow_public_contact ? "all" : "followed-only" end def user_is_moderator?(user) Decidim.participatory_space_manifests.map do |manifest| participatory_space_type = manifest.model_class_name.constantize return true if participatory_space_type.moderators(user.organization).exists?(id: user.id) end false end def meet_push_notifications_requirements? Rails.application.secrets.dig(:vapid, :enabled) || false end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
decidim-core-0.27.4 | app/forms/decidim/notifications_settings_form.rb |