1
1
import { Box } from "@mantine/core" ;
2
2
import { useEffect , useState } from "react" ;
3
3
import { App , RateLimit , Subscription } from "../../Apis/api-types" ;
4
+ import { useIsAdmin } from "../../Context/AuthContext" ;
5
+ import { useInArea } from "../utility" ;
4
6
import { CustomMetadataEditor } from "./CustomMetadataEditor" ;
5
- import { RateLimitEditor } from "./RateLimitEditor " ;
7
+ import { RateLimitSection } from "./RateLimitSection " ;
6
8
7
9
export interface SharedMetadataProps {
8
10
item : App | Subscription ;
@@ -21,37 +23,50 @@ export const MetadataDisplay = ({
21
23
} : SharedMetadataProps & {
22
24
onIsWideChange ?: ( newIsWide : boolean ) => void ;
23
25
} ) => {
26
+ const isAdmin = useIsAdmin ( ) ;
24
27
const [ isEditingCustomMetadata , setIsEditingCustomMetadata ] = useState ( false ) ;
25
28
const [ isEditingRateLimit , setIsEditingRateLimit ] = useState ( false ) ;
26
29
27
30
useEffect ( ( ) => {
28
31
onIsWideChange ?.( isEditingCustomMetadata || isEditingCustomMetadata ) ;
29
32
} , [ isEditingCustomMetadata , isEditingRateLimit ] ) ;
30
33
34
+ const inAppDetailsPage = useInArea ( [ `apps/${ props . item . id } ` ] ) ;
35
+ const isSubscription = "apiProductId" in props . item ;
36
+
37
+ // This component is reused for apps and subscription rate limit & metadata.
38
+ // Here we show the rate limit when:
39
+ // - This is an admin
40
+ // - We are on the app details page
41
+ // - This is a subscription
42
+ const showingRateLimit = ! ! isAdmin || inAppDetailsPage || isSubscription ;
43
+
31
44
return (
32
- < Box sx = { { textAlign : "left" } } >
33
- < Box mb = { ! ! customMetadata || ! ! isEditingCustomMetadata ? "10px" : "0px" } >
34
- < CustomMetadataEditor
35
- isEditingCustomMetadata = { isEditingCustomMetadata }
36
- onIsEditingCustomMetadataChange = { ( value ) =>
37
- setIsEditingCustomMetadata ( value )
38
- }
39
- customMetadata = { customMetadata }
40
- rateLimitInfo = { rateLimitInfo }
41
- { ...props }
42
- />
43
- </ Box >
44
- < Box mb = "10px" >
45
- < RateLimitEditor
46
- isEditingRateLimit = { isEditingRateLimit }
47
- onIsEditingRateLimitChange = { ( newIsEditingRateLimit ) =>
48
- setIsEditingRateLimit ( newIsEditingRateLimit )
49
- }
50
- customMetadata = { customMetadata }
51
- rateLimitInfo = { rateLimitInfo }
52
- { ...props }
53
- />
54
- </ Box >
45
+ < Box sx = { { textAlign : "left" , width : "100%" } } >
46
+ < CustomMetadataEditor
47
+ isEditingCustomMetadata = { isEditingCustomMetadata }
48
+ onIsEditingCustomMetadataChange = { ( value ) =>
49
+ setIsEditingCustomMetadata ( value )
50
+ }
51
+ customMetadata = { customMetadata }
52
+ rateLimitInfo = { rateLimitInfo }
53
+ { ...props }
54
+ />
55
+ { showingRateLimit && (
56
+ < Box mb = "10px" >
57
+ < RateLimitSection
58
+ inAppDetailsPage = { inAppDetailsPage }
59
+ isSubscription = { isSubscription }
60
+ isEditingRateLimit = { isEditingRateLimit }
61
+ onIsEditingRateLimitChange = { ( newIsEditingRateLimit ) =>
62
+ setIsEditingRateLimit ( newIsEditingRateLimit )
63
+ }
64
+ customMetadata = { customMetadata }
65
+ rateLimitInfo = { rateLimitInfo }
66
+ { ...props }
67
+ />
68
+ </ Box >
69
+ ) }
55
70
</ Box >
56
71
) ;
57
72
} ;
0 commit comments