metadata_presenter 2.16.14 → 2.17.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 731bc206c6ebcab227b6701942b8a55a15c78c6e48209357955e86b8ed7bd56a
4
- data.tar.gz: ed47c6089c0a157972195556f1308451405b4a6e1785895366737003977289a2
3
+ metadata.gz: 69339189940b628d7be7e2a6515c4382cc44d5726d3ecac9adb86b975cd1d5d8
4
+ data.tar.gz: 1d5724fabda8bf28f79d6d31b28f348d9c144f63f49b3ac945e9f4f7a372bd61
5
5
  SHA512:
6
- metadata.gz: f4b212304f483990f280b4d1ec5c1731a3e32c6653ece1309c546d902a6b8284f792f2c0fc2616ae22c4f7b8791362089409981e36e1595c6d89c9616143a302
7
- data.tar.gz: ac9a1b36d98b1fa162ed67a4cdcbbe4633c5edd1ff925b2e106a2c9c72f542ba7335800ddbaa4a56bebc3d651c934242d8dc43af2787d98c981da2aa899f560e
6
+ metadata.gz: 768d25f256f70733fb563fc75604e90690c36e78d7a8191b8d468c1b678e17d7e158e88bcfda50f028c40e21aeb6de3ca509650e21f1323965a3a01923460eff
7
+ data.tar.gz: 026c6ba54417b041a173a8523b11baadb3e15a18eaaab57ace3db3376bf47c6b46059ea6706900940deaeaf4edb61f9959ee6d7b9c2b098a61697739845dfda8
@@ -34,7 +34,7 @@ class MetadataPresenter::Service < MetadataPresenter::Metadata
34
34
  end
35
35
 
36
36
  def start_page
37
- pages.first
37
+ pages.find { |page| page.type == 'page.start' }
38
38
  end
39
39
 
40
40
  def service_slug
@@ -6,41 +6,42 @@ module MetadataPresenter
6
6
  @service = service
7
7
  @user_data = user_data
8
8
  @pages = [service.start_page]
9
- @current_page = current_page || service.pages[-1]
9
+ @current_page = current_page
10
10
  end
11
11
 
12
12
  delegate :last, to: :all
13
13
 
14
14
  def all
15
- page_uuid = service.start_page.uuid
15
+ next_object = service.start_page
16
16
 
17
17
  service.flow.size.times do
18
- break if page_uuid == current_page.uuid
19
-
20
- flow_object = service.flow_object(page_uuid)
21
-
22
- if flow_object.branch?
23
- page = EvaluateConditionals.new(
24
- service: service,
25
- flow: flow_object,
26
- user_data: user_data
27
- ).page
28
- page_uuid = page.uuid
29
- else
30
- page_uuid = flow_object.default_next
31
- page = service.find_page_by_uuid(page_uuid)
32
- end
33
-
34
- @pages.push(page) if page && page.uuid != current_page.uuid
18
+ break if next_object.blank? || next_object.uuid == current_page&.uuid
19
+
20
+ flow_object = service.flow_object(next_object.uuid)
21
+ next_object = flow_object.branch? ? evaluated_page(flow_object) : next_flow_object(flow_object.default_next)
22
+ @pages.push(next_object) if page_in_flow?(next_object)
35
23
  end
36
24
 
37
25
  @pages
38
26
  end
39
27
 
40
- def latest_pages
41
- index = service.pages.index(current_page).to_i - 1
28
+ private
29
+
30
+ def evaluated_page(flow_object)
31
+ EvaluateConditionals.new(
32
+ service: service,
33
+ flow: flow_object,
34
+ user_data: user_data
35
+ ).page
36
+ end
37
+
38
+ def next_flow_object(uuid)
39
+ obj = service.flow_object(uuid)
40
+ obj.branch? ? obj : service.find_page_by_uuid(uuid)
41
+ end
42
42
 
43
- service.pages[0..index]
43
+ def page_in_flow?(obj)
44
+ obj.is_a?(MetadataPresenter::Page) && obj.uuid != current_page&.uuid
44
45
  end
45
46
  end
46
47
  end
@@ -1,3 +1,3 @@
1
1
  module MetadataPresenter
2
- VERSION = '2.16.14'.freeze
2
+ VERSION = '2.17.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metadata_presenter
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.16.14
4
+ version: 2.17.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - MoJ Forms