Method: Deliver::AppScreenshotIterator#each_local_screenshot
- Defined in:
- deliver/lib/deliver/app_screenshot_iterator.rb
#each_local_screenshot(screenshots_per_language) {|localization, app_screenshot_set, app_screenshot| ... } ⇒ Object
Iterate given local app_screenshot over localizations and app_screenshot_sets
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'deliver/lib/deliver/app_screenshot_iterator.rb', line 63 def each_local_screenshot(screenshots_per_language, &block) return enum_for(__method__, screenshots_per_language) unless block_given? # filter unnecessary localizations supported_localizations = @localizations.reject { |l| screenshots_per_language[l.locale].nil? } # build a hash that can access app_screenshot_set corresponding to given locale and display_type # via parallelized each_app_screenshot_set to gain performance app_screenshot_set_per_locale_and_display_type = each_app_screenshot_set(supported_localizations) .each_with_object({}) do |(localization, app_screenshot_set), hash| hash[localization.locale] ||= {} hash[localization.locale][app_screenshot_set.screenshot_display_type] = app_screenshot_set end # iterate over screenshots per localization screenshots_per_language.each do |language, screenshots_for_language| localization = supported_localizations.find { |l| l.locale == language } screenshots_per_display_type = screenshots_for_language.reject { |screenshot| screenshot.device_type.nil? }.group_by(&:device_type) screenshots_per_display_type.each do |display_type, screenshots| # create AppScreenshotSet for given display_type if it doesn't exist app_screenshot_set = (app_screenshot_set_per_locale_and_display_type[language] || {})[display_type] app_screenshot_set ||= localization.create_app_screenshot_set(attributes: { screenshotDisplayType: display_type }) # iterate over screenshots per display size with index screenshots.each.with_index do |screenshot, index| yield(localization, app_screenshot_set, screenshot, index) end end end end |