Skip to content

Commit aa9cc56

Browse files
authored
improvement(usage-indicator): update query invalidation for usage to update in realtime (#2607)
* improvement(usage-indicator): update query invalidation for usage to update in realtime * ack PR comments
1 parent fdba1cf commit aa9cc56

File tree

6 files changed

+23
-15
lines changed

6 files changed

+23
-15
lines changed

apps/sim/app/workspace/[workspaceId]/w/[workflowId]/hooks/use-wand.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ export function useWand({
252252
})
253253

254254
setTimeout(() => {
255-
queryClient.invalidateQueries({ queryKey: subscriptionKeys.user() })
255+
queryClient.invalidateQueries({ queryKey: subscriptionKeys.all })
256256
}, 1000)
257257
} catch (error: any) {
258258
if (error.name === 'AbortError') {

apps/sim/app/workspace/[workspaceId]/w/[workflowId]/hooks/use-workflow-execution.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -573,7 +573,7 @@ export function useWorkflowExecution() {
573573

574574
// Invalidate subscription queries to update usage
575575
setTimeout(() => {
576-
queryClient.invalidateQueries({ queryKey: subscriptionKeys.user() })
576+
queryClient.invalidateQueries({ queryKey: subscriptionKeys.all })
577577
}, 1000)
578578

579579
safeEnqueue(encodeSSE({ event: 'final', data: result }))
@@ -646,7 +646,7 @@ export function useWorkflowExecution() {
646646

647647
// Invalidate subscription queries to update usage
648648
setTimeout(() => {
649-
queryClient.invalidateQueries({ queryKey: subscriptionKeys.user() })
649+
queryClient.invalidateQueries({ queryKey: subscriptionKeys.all })
650650
}, 1000)
651651
}
652652
return result

apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/subscription/components/cancel-subscription/cancel-subscription.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ export function CancelSubscription({ subscription, subscriptionData }: CancelSub
165165
logger.info('Subscription restored successfully', result)
166166
}
167167

168-
await queryClient.invalidateQueries({ queryKey: subscriptionKeys.user() })
168+
await queryClient.invalidateQueries({ queryKey: subscriptionKeys.all })
169169
if (activeOrgId) {
170170
await queryClient.invalidateQueries({ queryKey: organizationKeys.detail(activeOrgId) })
171171
await queryClient.invalidateQueries({ queryKey: organizationKeys.billing(activeOrgId) })

apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/usage-indicator/usage-indicator.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ export function UsageIndicator({ onClick }: UsageIndicatorProps) {
199199
useEffect(() => {
200200
const handleOperationConfirmed = () => {
201201
setTimeout(() => {
202-
queryClient.invalidateQueries({ queryKey: subscriptionKeys.user() })
202+
queryClient.invalidateQueries({ queryKey: subscriptionKeys.all })
203203
}, 1000)
204204
}
205205
onOperationConfirmed(handleOperationConfirmed)

apps/sim/hooks/queries/subscription.ts

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -98,13 +98,13 @@ export function useUpdateUsageLimit() {
9898
return response.json()
9999
},
100100
onMutate: async ({ limit }) => {
101-
await queryClient.cancelQueries({ queryKey: subscriptionKeys.user() })
102-
await queryClient.cancelQueries({ queryKey: subscriptionKeys.usage() })
101+
await queryClient.cancelQueries({ queryKey: subscriptionKeys.all })
103102

104-
const previousSubscriptionData = queryClient.getQueryData(subscriptionKeys.user())
103+
const previousSubscriptionData = queryClient.getQueryData(subscriptionKeys.user(false))
104+
const previousSubscriptionDataWithOrg = queryClient.getQueryData(subscriptionKeys.user(true))
105105
const previousUsageData = queryClient.getQueryData(subscriptionKeys.usage())
106106

107-
queryClient.setQueryData(subscriptionKeys.user(), (old: any) => {
107+
const updateSubscriptionData = (old: any) => {
108108
if (!old) return old
109109
const currentUsage = old.data?.usage?.current || 0
110110
const newPercentUsed = limit > 0 ? (currentUsage / limit) * 100 : 0
@@ -120,7 +120,10 @@ export function useUpdateUsageLimit() {
120120
},
121121
},
122122
}
123-
})
123+
}
124+
125+
queryClient.setQueryData(subscriptionKeys.user(false), updateSubscriptionData)
126+
queryClient.setQueryData(subscriptionKeys.user(true), updateSubscriptionData)
124127

125128
queryClient.setQueryData(subscriptionKeys.usage(), (old: any) => {
126129
if (!old) return old
@@ -133,19 +136,24 @@ export function useUpdateUsageLimit() {
133136
}
134137
})
135138

136-
return { previousSubscriptionData, previousUsageData }
139+
return { previousSubscriptionData, previousSubscriptionDataWithOrg, previousUsageData }
137140
},
138141
onError: (_err, _variables, context) => {
139142
if (context?.previousSubscriptionData) {
140-
queryClient.setQueryData(subscriptionKeys.user(), context.previousSubscriptionData)
143+
queryClient.setQueryData(subscriptionKeys.user(false), context.previousSubscriptionData)
144+
}
145+
if (context?.previousSubscriptionDataWithOrg) {
146+
queryClient.setQueryData(
147+
subscriptionKeys.user(true),
148+
context.previousSubscriptionDataWithOrg
149+
)
141150
}
142151
if (context?.previousUsageData) {
143152
queryClient.setQueryData(subscriptionKeys.usage(), context.previousUsageData)
144153
}
145154
},
146155
onSettled: () => {
147-
queryClient.invalidateQueries({ queryKey: subscriptionKeys.user() })
148-
queryClient.invalidateQueries({ queryKey: subscriptionKeys.usage() })
156+
queryClient.invalidateQueries({ queryKey: subscriptionKeys.all })
149157
},
150158
})
151159
}

apps/sim/stores/panel/copilot/store.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2661,7 +2661,7 @@ export const useCopilotStore = create<CopilotStore>()(
26612661
// Invalidate subscription queries to update usage
26622662
setTimeout(() => {
26632663
const queryClient = getQueryClient()
2664-
queryClient.invalidateQueries({ queryKey: subscriptionKeys.user() })
2664+
queryClient.invalidateQueries({ queryKey: subscriptionKeys.all })
26652665
}, 1000)
26662666
} finally {
26672667
clearTimeout(timeoutId)

0 commit comments

Comments
 (0)