11import "server-only" ;
22import { API_SERVER_URL } from "@/constants/env" ;
3+ import { unstable_cache } from "next/cache" ;
34import { getAuthToken } from "../../app/api/lib/getAuthToken" ;
5+ import { teamsCacheTag } from "../constants/cacheTags" ;
46
57type EnabledTeamScope =
68 | "pay"
@@ -29,16 +31,31 @@ export type Team = {
2931 enabledScopes : EnabledTeamScope [ ] ;
3032} ;
3133
32- export async function getTeamBySlug ( slug : string ) {
33- const token = await getAuthToken ( ) ;
34+ export async function getTeamBySlug ( teamSlug : string ) {
35+ const authToken = await getAuthToken ( ) ;
3436
35- if ( ! token ) {
37+ if ( ! authToken ) {
3638 return null ;
3739 }
3840
39- const teamRes = await fetch ( `${ API_SERVER_URL } /v1/teams/${ slug } ` , {
41+ const getCachedTeam = unstable_cache (
42+ getTeamBySlugAndAuthToken ,
43+ [ "getTeamBySlug" ] ,
44+ {
45+ tags : [ teamsCacheTag ( authToken ) ] ,
46+ revalidate : 3600 , // 1 hour
47+ } ,
48+ ) ;
49+
50+ return getCachedTeam ( teamSlug , authToken ) ;
51+ }
52+
53+ async function getTeamBySlugAndAuthToken ( teamSlug : string , authToken : string ) {
54+ console . log ( "FETCHING TEAM ------------------------" , teamSlug ) ;
55+
56+ const teamRes = await fetch ( `${ API_SERVER_URL } /v1/teams/${ teamSlug } ` , {
4057 headers : {
41- Authorization : `Bearer ${ token } ` ,
58+ Authorization : `Bearer ${ authToken } ` ,
4259 } ,
4360 } ) ;
4461 if ( teamRes . ok ) {
@@ -48,14 +65,26 @@ export async function getTeamBySlug(slug: string) {
4865}
4966
5067export async function getTeams ( ) {
51- const token = await getAuthToken ( ) ;
52- if ( ! token ) {
68+ const authToken = await getAuthToken ( ) ;
69+
70+ if ( ! authToken ) {
5371 return null ;
5472 }
5573
74+ const getCachedTeams = unstable_cache ( getTeamsForAuthToken , [ "getTeams" ] , {
75+ tags : [ teamsCacheTag ( authToken ) ] ,
76+ revalidate : 3600 , // 1 hour
77+ } ) ;
78+
79+ return getCachedTeams ( authToken ) ;
80+ }
81+
82+ async function getTeamsForAuthToken ( authToken : string ) {
83+ console . log ( "FETCHING ALL TEAMs ------------------------" ) ;
84+
5685 const teamsRes = await fetch ( `${ API_SERVER_URL } /v1/teams` , {
5786 headers : {
58- Authorization : `Bearer ${ token } ` ,
87+ Authorization : `Bearer ${ authToken } ` ,
5988 } ,
6089 } ) ;
6190 if ( teamsRes . ok ) {
@@ -70,24 +99,39 @@ type TeamNebulaWaitList = {
7099} ;
71100
72101export async function getTeamNebulaWaitList ( teamSlug : string ) {
73- const token = await getAuthToken ( ) ;
102+ const authToken = await getAuthToken ( ) ;
74103
75- if ( ! token ) {
104+ if ( ! authToken ) {
76105 return null ;
77106 }
78107
108+ const getCachedNebulaWaitlist = unstable_cache (
109+ getTeamNebulaWaitListForAuthToken ,
110+ [ "getTeamNebulaWaitList" ] ,
111+ {
112+ tags : [ teamsCacheTag ( authToken ) ] ,
113+ revalidate : 3600 , // 1 hour
114+ } ,
115+ ) ;
116+
117+ return getCachedNebulaWaitlist ( teamSlug , authToken ) ;
118+ }
119+
120+ async function getTeamNebulaWaitListForAuthToken (
121+ teamSlug : string ,
122+ authToken : string ,
123+ ) {
79124 const res = await fetch (
80125 `${ API_SERVER_URL } /v1/teams/${ teamSlug } /waitlist?scope=nebula` ,
81126 {
82127 headers : {
83- Authorization : `Bearer ${ token } ` ,
128+ Authorization : `Bearer ${ authToken } ` ,
84129 } ,
85130 } ,
86131 ) ;
87132
88133 if ( res . ok ) {
89134 return ( await res . json ( ) ) . result as TeamNebulaWaitList ;
90135 }
91-
92136 return null ;
93137}
0 commit comments