20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
# File 'lib/graphql/subscriptions/default_subscription_resolve_extension.rb', line 20
def after_resolve(value:, context:, object:, arguments:, **rest)
if value.is_a?(GraphQL::ExecutionError)
value
elsif @field.resolver&.method_defined?(:subscription_written?) &&
(subscription_namespace = context.namespace(:subscriptions)) &&
(subscriptions_by_path = subscription_namespace[:subscriptions])
(subscription_instance = subscriptions_by_path[context.current_path])
if !subscription_instance.subscription_written?
events = context.namespace(:subscriptions)[:events]
events << subscription_instance.event
end
value
elsif (events = context.namespace(:subscriptions)[:events])
event = Subscriptions::Event.new(
name: field.name,
arguments: arguments,
context: context,
field: field,
)
events << event
value
elsif context.query.subscription_topic == Subscriptions::Event.serialize(
field.name,
arguments,
field,
scope: (field.subscription_scope ? context[field.subscription_scope] : nil),
)
value
else
context.skip
end
end
|