Module: Turbo::Session::VisitableDelegateMethods

Included in:
Turbo::Session
Defined in:
lib/turbo/session/visitable_delegate_methods.rb

Instance Method Summary collapse

Instance Method Details

#visitableDidRequestRefresh(visitable) ⇒ Object



42
43
44
45
46
47
48
# File 'lib/turbo/session/visitable_delegate_methods.rb', line 42

def visitableDidRequestRefresh(visitable)
  if visitable == topmostVisitable
    @refreshing = true
    visitable.visitableWillRefresh
    reload
  end
end

#visitableDidRequestReload(visitable) ⇒ Object



36
37
38
39
40
# File 'lib/turbo/session/visitable_delegate_methods.rb', line 36

def visitableDidRequestReload(visitable)
  if visitable == topmostVisitable
    reload
  end
end

#visitableViewDidAppear(visitable) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/turbo/session/visitable_delegate_methods.rb', line 23

def visitableViewDidAppear(visitable)
  if currentVisit && visitable == currentVisit.visitable
    # Appearing after successful navigation
    completeNavigationForCurrentVisit
    if currentVisit.state.to_sym != :failed
      activateVisitable(visitable)
    end
  elsif topmostVisit && visitable == topmostVisit.visitable && topmostVisit.state == :completed
    # Reappearing after canceled navigation
    visitVisitable(visitable, action: :restore)
  end
end

#visitableViewWillAppear(visitable) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/turbo/session/visitable_delegate_methods.rb', line 4

def visitableViewWillAppear(visitable)
  return unless topmostVisit && currentVisit

  if visitable == topmostVisit.visitable && visitable.visitableViewController.isMovingToParentViewController
    # Back swipe gesture canceled
    if topmostVisit.state.to_sym == :completed
      currentVisit.cancel
    else
      visitVisitable(visitable, action: :advance)
    end
  elsif visitable == currentVisit.visitable && currentVisit.state.to_sym == :started
    # Navigating forward - complete navigation early
    completeNavigationForCurrentVisit
  elsif visitable != topmostVisit.visitable
    # Navigating backward
    visitVisitable(visitable, action: :restore)
  end
end