Sha256: a86c8777c325c6482cfbf94ca06436d1ee833ad2d6a5bd36e0bd2654f3dae982

Contents?: true

Size: 1.4 KB

Versions: 17

Compression:

Stored size: 1.4 KB

Contents

module Volt
  class Task
    if RUBY_PLATFORM == 'opal'
      # On the front-end we setup a proxy class to the backend that returns
      # promises for all calls.
      def self.method_missing(name, *args, &block)
        # Meta data is passed from the browser to the server so the server can know
        # things like who's logged in.
        meta_data = {}

        user_id = $page.cookies._user_id
        unless user_id.nil?
          meta_data['user_id'] = user_id
        end

        $page.tasks.call(self.name, name, meta_data, *args, &block)
      end
    else
      def initialize(channel = nil, dispatcher = nil)
        @channel    = channel
        @dispatcher = dispatcher
      end

      def self.inherited(subclass)
        @subclasses ||= []
        @subclasses << subclass
      end

      def self.known_handlers
        @subclasses ||= []
      end

      # On the backend, we proxy all class methods like we would
      # on the front-end.  This returns a promise, even if the
      # original code did not.
      def self.method_missing(name, *args, &block)
        # TODO: optimize: this could run the inside first to see if it
        # returns a promise, so we don't have to wrap it.
        Promise.new.then do
          new(nil, nil).send(name, *args, &block)
        end.resolve(nil)
      end

      # Provide access to the store collection
      def store
        $page.store
      end
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
volt-0.9.1 lib/volt/tasks/task_handler.rb
volt-0.9.1.pre5 lib/volt/tasks/task_handler.rb
volt-0.9.1.pre4 lib/volt/tasks/task_handler.rb
volt-0.9.1.pre3 lib/volt/tasks/task_handler.rb
volt-0.9.1.pre2 lib/volt/tasks/task_handler.rb
volt-0.9.1.pre1 lib/volt/tasks/task_handler.rb
volt-0.9.0 lib/volt/tasks/task_handler.rb
volt-0.9.0.pre7 lib/volt/tasks/task_handler.rb
volt-0.9.0.pre6 lib/volt/tasks/task_handler.rb
volt-0.9.0.pre5 lib/volt/tasks/task_handler.rb
volt-0.9.0.pre4 lib/volt/tasks/task_handler.rb
volt-0.9.0.pre3 lib/volt/tasks/task_handler.rb
volt-0.9.0.pre2 lib/volt/tasks/task_handler.rb
volt-0.9.0.pre1 lib/volt/tasks/task_handler.rb
volt-0.8.27.beta9 lib/volt/tasks/task_handler.rb
volt-0.8.27.beta8 lib/volt/tasks/task_handler.rb
volt-0.8.27.beta7 lib/volt/tasks/task_handler.rb