notification-settings 1.0.0.beta10 → 1.0.0.beta11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/models/notification_settings/setting.rb +13 -0
- data/app/models/notification_settings/subscription.rb +13 -0
- data/lib/notification_settings/engine.rb +1 -0
- data/lib/notification_settings/notification_library.rb +3 -0
- data/lib/notification_settings/notification_scopes.rb +3 -0
- data/lib/notification_settings/setting_library.rb +2 -0
- data/lib/notification_settings/subscribable.rb +18 -6
- data/lib/notification_settings/subscriber.rb +19 -7
- data/lib/notification_settings/subscription_library.rb +2 -0
- data/lib/notification_settings/target.rb +16 -5
- metadata +33 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 373bfbfd097d24c61d0d6881814ee07e545c6bb109c7b7b9e839e716bc0c4a29
         | 
| 4 | 
            +
              data.tar.gz: 64e7f2541ed76c489f8e83136a6e322aa51a187ebdb35bad8edf2819e1fe6e86
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: aa397acc0fbe8f45ced4ee1a40d1fc97e59a65010276929089ee33e0d186e8eee69380f4ddb6d4473384340df21a396ef10c484dd149c122484f3ddb846a52af
         | 
| 7 | 
            +
              data.tar.gz: d975e08193e541ab11b20be1e83438f63403ffbe89be6a8dfed0e9e91f3f08bfc5b07b80d63fff2734c2cf127e812e8e581500efab5d029e09012334c4487c13
         | 
| @@ -0,0 +1,13 @@ | |
| 1 | 
            +
            class NotificationSettings::Setting < ActiveRecord::Base
         | 
| 2 | 
            +
             | 
| 3 | 
            +
                self.table_name = 'notification_settings_settings'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
                include NotificationSettings::SettingLibrary
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                serialize :settings, Hash
         | 
| 8 | 
            +
                serialize :category_settings, Hash
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                belongs_to :object, polymorphic: true, optional: true
         | 
| 11 | 
            +
                belongs_to :subscription, optional: true
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            end
         | 
| @@ -0,0 +1,13 @@ | |
| 1 | 
            +
            class NotificationSettings::Subscription < ActiveRecord::Base
         | 
| 2 | 
            +
             | 
| 3 | 
            +
                self.table_name = 'notification_settings_subscriptions'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
                include NotificationSettings::SubscriptionLibrary
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                belongs_to :subscriber, polymorphic: true
         | 
| 8 | 
            +
                belongs_to :subscribable, polymorphic: true
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                has_many :notifications, class_name: '::Notification'
         | 
| 11 | 
            +
                has_one :notification_setting, class_name: 'Setting'
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            end
         | 
| @@ -1,14 +1,26 @@ | |
| 1 | 
            +
            require 'active_support'
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            module NotificationSettings
         | 
| 2 4 | 
             
                module Subscribable
         | 
| 3 5 |  | 
| 4 | 
            -
                     | 
| 5 | 
            -
             | 
| 6 | 
            +
                    extend ActiveSupport::Concern
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                    included do
         | 
| 9 | 
            +
                        has_many :notification_subscriptions, as: :subscribable, class_name: 'NotificationSettings::Subscription', dependent: :destroy
         | 
| 10 | 
            +
                        has_many :notification_subscribers, through: :notification_subscriptions, source: :subscriber
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                        include NotificationSettings::Subscribable::InstanceMethods
         | 
| 13 | 
            +
                    end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                    module InstanceMethods
         | 
| 6 16 |  | 
| 7 | 
            -
             | 
| 8 | 
            -
             | 
| 9 | 
            -
             | 
| 10 | 
            -
             | 
| 17 | 
            +
                        def notify_subscribers options = {}
         | 
| 18 | 
            +
                            options[:object] = self
         | 
| 19 | 
            +
                            self.notification_subscribers.each do |subscriber|
         | 
| 20 | 
            +
                                subscriber.notify options
         | 
| 21 | 
            +
                            end
         | 
| 11 22 | 
             
                        end
         | 
| 23 | 
            +
             | 
| 12 24 | 
             
                    end
         | 
| 13 25 |  | 
| 14 26 | 
             
                end
         | 
| @@ -1,16 +1,28 @@ | |
| 1 | 
            +
            require 'active_support'
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            module NotificationSettings
         | 
| 2 4 | 
             
                module Subscriber
         | 
| 3 5 |  | 
| 4 | 
            -
                     | 
| 5 | 
            -
             | 
| 6 | 
            +
                    extend ActiveSupport::Concern
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                    included do
         | 
| 9 | 
            +
                        has_many :notification_subscriptions, as: :subscriber, class_name: 'NotificationSettings::Subscription', dependent: :destroy
         | 
| 10 | 
            +
                        has_many :notification_subscribables, through: :notification_subscriptions, source: :subscribable
         | 
| 6 11 |  | 
| 7 | 
            -
             | 
| 8 | 
            -
                        self.notification_subscriptions.create options
         | 
| 12 | 
            +
                        include NotificationSettings::Subscriber::InstanceMethods
         | 
| 9 13 | 
             
                    end
         | 
| 10 14 |  | 
| 11 | 
            -
                     | 
| 12 | 
            -
             | 
| 13 | 
            -
                         | 
| 15 | 
            +
                    module InstanceMethods
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                        def subscribe options = {}
         | 
| 18 | 
            +
                            self.notification_subscriptions.create options
         | 
| 19 | 
            +
                        end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                        def unsubscribe subscribable
         | 
| 22 | 
            +
                            subscription = self.notification_subscriptions.find_by subscribable_id: subscribable.id, subscribable_type: subscribable.class.to_s
         | 
| 23 | 
            +
                            subscription.destroy
         | 
| 24 | 
            +
                        end
         | 
| 25 | 
            +
             | 
| 14 26 | 
             
                    end
         | 
| 15 27 |  | 
| 16 28 | 
             
                end
         | 
| @@ -1,14 +1,25 @@ | |
| 1 | 
            +
            require 'active_support'
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            module NotificationSettings
         | 
| 2 4 | 
             
                module Target
         | 
| 3 5 |  | 
| 4 | 
            -
                     | 
| 6 | 
            +
                    extend ActiveSupport::Concern
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                    included do
         | 
| 9 | 
            +
                        has_one :notification_setting, as: :object, class_name: 'NotificationSettings::Setting', dependent: :destroy
         | 
| 10 | 
            +
                        after_create_commit :create_notification_setting
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                        include NotificationSettings::Target::InstanceMethods
         | 
| 13 | 
            +
                    end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                    module InstanceMethods
         | 
| 5 16 |  | 
| 6 | 
            -
             | 
| 17 | 
            +
                        private
         | 
| 7 18 |  | 
| 8 | 
            -
             | 
| 19 | 
            +
                        def create_notification_setting
         | 
| 20 | 
            +
                            self.notification_setting.create!
         | 
| 21 | 
            +
                        end
         | 
| 9 22 |  | 
| 10 | 
            -
                    def create_notification_setting
         | 
| 11 | 
            -
                        self.notification_setting.create!
         | 
| 12 23 | 
             
                    end
         | 
| 13 24 |  | 
| 14 25 | 
             
                end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: notification-settings
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.0.0. | 
| 4 | 
            +
              version: 1.0.0.beta11
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Jonas Hübotter
         | 
| @@ -24,20 +24,48 @@ dependencies: | |
| 24 24 | 
             
                - - ">="
         | 
| 25 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 26 | 
             
                    version: '5.0'
         | 
| 27 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 28 | 
            +
              name: activerecord
         | 
| 29 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 | 
            +
                requirements:
         | 
| 31 | 
            +
                - - ">="
         | 
| 32 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            +
                    version: '5.0'
         | 
| 34 | 
            +
              type: :runtime
         | 
| 35 | 
            +
              prerelease: false
         | 
| 36 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 | 
            +
                requirements:
         | 
| 38 | 
            +
                - - ">="
         | 
| 39 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            +
                    version: '5.0'
         | 
| 41 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 42 | 
            +
              name: activesupport
         | 
| 43 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 44 | 
            +
                requirements:
         | 
| 45 | 
            +
                - - ">="
         | 
| 46 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            +
                    version: '5.0'
         | 
| 48 | 
            +
              type: :runtime
         | 
| 49 | 
            +
              prerelease: false
         | 
| 50 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 51 | 
            +
                requirements:
         | 
| 52 | 
            +
                - - ">="
         | 
| 53 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            +
                    version: '5.0'
         | 
| 27 55 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 56 | 
             
              name: notification-handler
         | 
| 29 57 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 58 | 
             
                requirements:
         | 
| 31 59 | 
             
                - - '='
         | 
| 32 60 | 
             
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            -
                    version: 1.0.0. | 
| 61 | 
            +
                    version: 1.0.0.beta11
         | 
| 34 62 | 
             
              type: :runtime
         | 
| 35 63 | 
             
              prerelease: false
         | 
| 36 64 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 65 | 
             
                requirements:
         | 
| 38 66 | 
             
                - - '='
         | 
| 39 67 | 
             
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            -
                    version: 1.0.0. | 
| 68 | 
            +
                    version: 1.0.0.beta11
         | 
| 41 69 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 42 70 | 
             
              name: rspec
         | 
| 43 71 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -76,6 +104,8 @@ files: | |
| 76 104 | 
             
            - CHANGELOG.md
         | 
| 77 105 | 
             
            - LICENSE
         | 
| 78 106 | 
             
            - README.md
         | 
| 107 | 
            +
            - app/models/notification_settings/setting.rb
         | 
| 108 | 
            +
            - app/models/notification_settings/subscription.rb
         | 
| 79 109 | 
             
            - lib/generators/notification_settings/install_generator.rb
         | 
| 80 110 | 
             
            - lib/generators/templates/install/README.md
         | 
| 81 111 | 
             
            - lib/generators/templates/install/initializer.rb
         |