File tree Expand file tree Collapse file tree 1 file changed +49
-0
lines changed
static/app/views/dashboards Expand file tree Collapse file tree 1 file changed +49
-0
lines changed Original file line number Diff line number Diff line change 1+ // scaffold basic context provider and hook
2+
3+ import { createContext , useContext } from 'react' ;
4+ import {
5+ useAsyncQueuer ,
6+ type AsyncQueuerOptions ,
7+ type ReactAsyncQueuer ,
8+ } from '@tanstack/react-pacer' ;
9+
10+ import type GenericWidgetQueries from 'sentry/views/dashboards/widgetCard/genericWidgetQueries' ;
11+
12+ export type QueueItem < SeriesResponse , TableResponse > = {
13+ widget : GenericWidgetQueries < SeriesResponse , TableResponse > ;
14+ } ;
15+
16+ type Context = {
17+ queue : ReactAsyncQueuer < QueueItem < unknown , unknown > > ;
18+ } ;
19+
20+ const WidgetQueueContext = createContext < Context | undefined > ( undefined ) ;
21+
22+ export function useWidgetQueryQueue ( ) {
23+ return useContext ( WidgetQueueContext ) ;
24+ }
25+
26+ export function WidgetQueryQueueProvider ( { children} : { children : React . ReactNode } ) {
27+ const queueOptions : AsyncQueuerOptions < QueueItem < unknown , unknown > > = {
28+ concurrency : 2 ,
29+ wait : 5000 ,
30+ started : true ,
31+ } ;
32+
33+ const queue = useAsyncQueuer < QueueItem < unknown , unknown > > (
34+ fetchWidgetItem ,
35+ queueOptions
36+ ) ;
37+
38+ const context = {
39+ queue,
40+ } ;
41+ return (
42+ < WidgetQueueContext . Provider value = { context } > { children } </ WidgetQueueContext . Provider >
43+ ) ;
44+ }
45+
46+ const fetchWidgetItem = async ( item : QueueItem < unknown , unknown > ) => {
47+ const result = await item . widget . fetchData ( ) ;
48+ return result ;
49+ } ;
You can’t perform that action at this time.
0 commit comments