File tree Expand file tree Collapse file tree 2 files changed +47
-5
lines changed Expand file tree Collapse file tree 2 files changed +47
-5
lines changed Original file line number Diff line number Diff line change 6
6
7
7
import { useEffect , useState } from "react" ;
8
8
import Alert from "./components/Alert" ;
9
- import { getGitpodService } from "./service/service" ;
9
+ import { getGitpodService , gitpodHostUrl } from "./service/service" ;
10
10
11
11
const KEY_APP_NOTIFICATIONS = "gitpod-app-notifications" ;
12
12
@@ -36,6 +36,7 @@ export function AppNotifications() {
36
36
} ;
37
37
38
38
const topNotification = notifications [ 0 ] ;
39
+
39
40
if ( topNotification === undefined ) {
40
41
return null ;
41
42
}
@@ -45,6 +46,25 @@ export function AppNotifications() {
45
46
setNotifications ( [ ] ) ;
46
47
} ;
47
48
49
+ const getManageBilling = ( ) => {
50
+ let href ;
51
+ if ( notifications . length === 1 ) {
52
+ href = `${ gitpodHostUrl } billing` ;
53
+ } else if ( notifications . length === 2 ) {
54
+ href = `${ gitpodHostUrl } t/${ notifications [ notifications . length - 1 ] } /billing` ;
55
+ }
56
+ return (
57
+ < span >
58
+ { " " }
59
+ Manage
60
+ < a className = "gp-link hover:text-gray-600" href = { href } >
61
+ { " " }
62
+ billing.
63
+ </ a >
64
+ </ span >
65
+ ) ;
66
+ } ;
67
+
48
68
return (
49
69
< div className = "app-container pt-2" >
50
70
< Alert
@@ -55,6 +75,7 @@ export function AppNotifications() {
55
75
className = "flex rounded mb-2 w-full"
56
76
>
57
77
< span > { topNotification } </ span >
78
+ { getManageBilling ( ) }
58
79
</ Alert >
59
80
</ div >
60
81
) ;
Original file line number Diff line number Diff line change @@ -2254,10 +2254,31 @@ export class GitpodServerEEImpl extends GitpodServerImpl {
2254
2254
const billingMode = await this . billingModes . getBillingModeForUser ( user , new Date ( ) ) ;
2255
2255
if ( billingMode . mode === "usage-based" ) {
2256
2256
const limit = await this . billingService . checkUsageLimitReached ( user ) ;
2257
- if ( limit . reached ) {
2258
- result . unshift ( "The usage limit is reached." ) ;
2259
- } else if ( limit . almostReached ) {
2260
- result . unshift ( "The usage limit is almost reached." ) ;
2257
+ let teamOrUser ;
2258
+ switch ( limit . attributionId . kind ) {
2259
+ case "user" : {
2260
+ if ( limit . reached ) {
2261
+ result . unshift ( `You have reached your usage limit.` ) ;
2262
+ } else if ( limit . almostReached ) {
2263
+ result . unshift ( `You have reached 80% or more of your usage limit.` ) ;
2264
+ }
2265
+ break ;
2266
+ }
2267
+ case "team" : {
2268
+ teamOrUser = await this . teamDB . findTeamById ( limit . attributionId . teamId ) ;
2269
+ if ( teamOrUser ) {
2270
+ if ( limit . reached ) {
2271
+ result . push ( teamOrUser ?. slug ) ;
2272
+ result . unshift ( `Your team '${ teamOrUser ?. name } ' has reached its usage limit.` ) ;
2273
+ } else if ( limit . almostReached ) {
2274
+ result . push ( teamOrUser ?. slug ) ;
2275
+ result . unshift (
2276
+ `Your team '${ teamOrUser ?. name } ' has reached 80% or more of its usage limit.` ,
2277
+ ) ;
2278
+ }
2279
+ }
2280
+ break ;
2281
+ }
2261
2282
}
2262
2283
}
2263
2284
} catch ( error ) {
You can’t perform that action at this time.
0 commit comments