Sha256: 9ad9a4d3d4147d5f1b05fda6d7c5bba3717a0a1cd6e15d9962855a9f3c7262bb

Contents?: true

Size: 1.76 KB

Versions: 3

Compression:

Stored size: 1.76 KB

Contents

module Workarea
  module Storefront
    class SearchAutocompleteViewModel < ApplicationViewModel
      def trending_products?
        query_string.blank? || full_results.products.blank?
      end
      alias_method :trending_searches?, :trending_products?

      def products
        @products ||= begin
          results = trending_products? ? trending_products : full_results.products
          results.take(Workarea.config.storefront_search_autocomplete_max_products)
        end
      end

      def searches
        @searches ||= begin
          results = trending_searches? ? trending_searches : autocomplete_searches
          results.take(Workarea.config.storefront_search_autocomplete_max_searches)
        end
      end

      def query_string
        autocomplete_searches.first.presence || model
      end

      def content
        Storefront::SearchViewModel.new(response, options)
      end

      private

      def autocomplete_searches
        return [] if model.blank?

        @autocomplete_searches ||= Metrics::SearchByWeek.autocomplete(
          model,
          max: Workarea.config.storefront_search_autocomplete_max_searches
        )
      end

      def trending_searches
        @trending_searches ||= begin
          Workarea::Insights::TrendingSearches.current.results.map do |v|
            v['query_string']
          end
        end
      end

      def trending_products
        @trending_products ||= SearchAutocompleteProductsViewModel.wrap(
          Workarea::Insights::TrendingProducts.current,
          options
        )
      end

      def full_results
        @full_results ||= SearchViewModel.wrap(response, options)
      end

      def response
        @response ||= Search::StorefrontSearch.new(q: query_string).response
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
workarea-search_autocomplete-1.0.2 app/view_models/workarea/storefront/search_autocomplete_view_model.rb
workarea-search_autocomplete-1.0.1 app/view_models/workarea/storefront/search_autocomplete_view_model.rb
workarea-search_autocomplete-1.0.0 app/view_models/workarea/storefront/search_autocomplete_view_model.rb