|
1 | | -import { Ref, watch, onUnmounted, ref, getCurrentInstance } from '@vue/composition-api' |
| 1 | +import { Ref, watch, onUnmounted, ref, getCurrentInstance, onBeforeUnmount } from '@vue/composition-api' |
2 | 2 |
|
3 | 3 | export interface LoadingTracking { |
4 | 4 | queries: Ref<number> |
@@ -58,38 +58,33 @@ export function getCurrentTracking () { |
58 | 58 | } |
59 | 59 | } |
60 | 60 |
|
61 | | -export function trackQuery (loading: Ref<boolean>) { |
| 61 | +function track (loading: Ref<boolean>, type: keyof LoadingTracking) { |
62 | 62 | const { appTracking, tracking } = getCurrentTracking() |
63 | 63 |
|
64 | 64 | watch(loading, (value, oldValue) => { |
65 | | - if (oldValue != null) { |
| 65 | + if (oldValue != null && value !== oldValue) { |
66 | 66 | const mod = value ? 1 : -1 |
67 | | - tracking.queries.value += mod |
68 | | - appTracking.queries.value += mod |
| 67 | + tracking[type].value += mod |
| 68 | + appTracking[type].value += mod |
69 | 69 | } |
70 | 70 | }) |
71 | | -} |
72 | | - |
73 | | -export function trackMutation (loading: Ref<boolean>) { |
74 | | - const { appTracking, tracking } = getCurrentTracking() |
75 | 71 |
|
76 | | - watch(loading, (value, oldValue) => { |
77 | | - if (oldValue != null) { |
78 | | - const mod = value ? 1 : -1 |
79 | | - tracking.mutations.value += mod |
80 | | - appTracking.mutations.value += mod |
| 72 | + onBeforeUnmount(() => { |
| 73 | + if (loading.value) { |
| 74 | + tracking[type].value-- |
| 75 | + appTracking[type].value-- |
81 | 76 | } |
82 | 77 | }) |
83 | 78 | } |
84 | 79 |
|
85 | | -export function trackSubscription (loading: Ref<boolean>) { |
86 | | - const { appTracking, tracking } = getCurrentTracking() |
| 80 | +export function trackQuery (loading: Ref<boolean>) { |
| 81 | + track(loading, 'queries') |
| 82 | +} |
87 | 83 |
|
88 | | - watch(loading, (value, oldValue) => { |
89 | | - if (oldValue != null) { |
90 | | - const mod = value ? 1 : -1 |
91 | | - tracking.subscriptions.value += mod |
92 | | - appTracking.subscriptions.value += mod |
93 | | - } |
94 | | - }) |
| 84 | +export function trackMutation (loading: Ref<boolean>) { |
| 85 | + track(loading, 'mutations') |
| 86 | +} |
| 87 | + |
| 88 | +export function trackSubscription (loading: Ref<boolean>) { |
| 89 | + track(loading, 'subscriptions') |
95 | 90 | } |
0 commit comments