@@ -117,23 +117,33 @@ export const getDokployUrl = async () => {
117117 return `http://${ settings ?. serverIp } :${ process . env . PORT } ` ;
118118} ;
119119
120+ const TRUSTED_ORIGINS_CACHE_TTL_MS = 30 * 60_000 ;
121+ let trustedOriginsCache : { data : string [ ] ; expiresAt : number } | null = null ;
122+
120123export const getTrustedOrigins = async ( ) => {
121- const members = await db . query . member . findMany ( {
122- where : eq ( member . role , "owner" ) ,
123- with : {
124- user : true ,
125- } ,
126- } ) ;
124+ const runQuery = async ( ) => {
125+ const rows = await db
126+ . select ( { trustedOrigins : user . trustedOrigins } )
127+ . from ( member )
128+ . innerJoin ( user , eq ( member . userId , user . id ) )
129+ . where ( eq ( member . role , "owner" ) ) ;
130+ return Array . from ( new Set ( rows . flatMap ( ( r ) => r . trustedOrigins ?? [ ] ) ) ) ;
131+ } ;
127132
128- if ( members . length === 0 ) {
129- return [ ] ;
133+ if ( IS_CLOUD ) {
134+ const now = Date . now ( ) ;
135+ if ( trustedOriginsCache && now < trustedOriginsCache . expiresAt ) {
136+ return trustedOriginsCache . data ;
137+ }
138+ const trustedOrigins = await runQuery ( ) ;
139+ trustedOriginsCache = {
140+ data : trustedOrigins ,
141+ expiresAt : now + TRUSTED_ORIGINS_CACHE_TTL_MS ,
142+ } ;
143+ return trustedOrigins ;
130144 }
131145
132- const trustedOrigins = members . flatMap (
133- ( member ) => member . user . trustedOrigins || [ ] ,
134- ) ;
135-
136- return Array . from ( new Set ( trustedOrigins ) ) ;
146+ return runQuery ( ) ;
137147} ;
138148
139149export const getTrustedProviders = async ( ) => {
0 commit comments