11import { Dependencies , PAGE_LIMIT } from '$lib/constants' ;
2+ import { isCloud } from '$lib/system' ;
23import { sdk } from '$lib/stores/sdk' ;
3- import { Query } from '@appwrite.io/console' ;
4+ import { Addon , Query } from '@appwrite.io/console' ;
45import type { PageLoad } from './$types' ;
56
67function isReadonlySettingsPermissionError ( error : unknown ) : boolean {
@@ -11,26 +12,41 @@ function isReadonlySettingsPermissionError(error: unknown): boolean {
1112export const load : PageLoad = async ( { depends, url, params } ) => {
1213 depends ( Dependencies . PROJECT_VARIABLES ) ;
1314 depends ( Dependencies . PROJECT_INSTALLATIONS ) ;
15+ depends ( Dependencies . ADDONS ) ;
1416
1517 const limit = PAGE_LIMIT ;
1618 const offset = Number ( url . searchParams . get ( 'offset' ) ?? 0 ) ;
1719 const variablesOffset = Number ( url . searchParams . get ( 'variablesOffset' ) ?? 0 ) ;
1820 const projectSdk = sdk . forProject ( params . region , params . project ) ;
19- const [ variablesResult , installationsResult ] = await Promise . allSettled ( [
20- projectSdk . projectApi . listVariables ( {
21- queries : [ Query . limit ( limit ) , Query . offset ( variablesOffset ) ]
22- } ) ,
23- projectSdk . vcs . listInstallations ( {
24- queries : [ Query . limit ( limit ) , Query . offset ( offset ) ]
25- } )
26- ] ) ;
21+ const [ variablesResult , installationsResult , addonsResult , addonPriceResult ] =
22+ await Promise . allSettled ( [
23+ projectSdk . projectApi . listVariables ( {
24+ queries : [ Query . limit ( limit ) , Query . offset ( variablesOffset ) ]
25+ } ) ,
26+ projectSdk . vcs . listInstallations ( {
27+ queries : [ Query . limit ( limit ) , Query . offset ( offset ) ]
28+ } ) ,
29+ isCloud
30+ ? sdk
31+ . forConsoleIn ( params . region )
32+ . projects . listAddons ( { projectId : params . project } )
33+ . catch ( ( ) => null )
34+ : Promise . resolve ( null ) ,
35+ isCloud
36+ ? sdk
37+ . forConsoleIn ( params . region )
38+ . projects . getAddonPrice ( {
39+ projectId : params . project ,
40+ addon : Addon . Premiumgeodb
41+ } )
42+ . catch ( ( ) => null )
43+ : Promise . resolve ( null )
44+ ] ) ;
2745
2846 const variables =
2947 variablesResult . status === 'fulfilled'
3048 ? variablesResult . value
3149 : ( ( ) => {
32- // Read-only users can be blocked from write-adjacent settings APIs.
33- // Only silence those permission errors so genuine load failures still surface.
3450 if ( ! isReadonlySettingsPermissionError ( variablesResult . reason ) ) {
3551 throw variablesResult . reason ;
3652 }
@@ -45,8 +61,6 @@ export const load: PageLoad = async ({ depends, url, params }) => {
4561 installationsResult . status === 'fulfilled'
4662 ? installationsResult . value
4763 : ( ( ) => {
48- // Read-only users can be blocked from write-adjacent settings APIs.
49- // Only silence those permission errors so genuine load failures still surface.
5064 if ( ! isReadonlySettingsPermissionError ( installationsResult . reason ) ) {
5165 throw installationsResult . reason ;
5266 }
@@ -57,11 +71,16 @@ export const load: PageLoad = async ({ depends, url, params }) => {
5771 } ;
5872 } ) ( ) ;
5973
74+ const addons = addonsResult . status === 'fulfilled' ? addonsResult . value : null ;
75+ const addonPrice = addonPriceResult . status === 'fulfilled' ? addonPriceResult . value : null ;
76+
6077 return {
6178 limit,
6279 offset,
6380 variablesOffset,
6481 variables,
65- installations
82+ installations,
83+ addons,
84+ addonPrice
6685 } ;
6786} ;
0 commit comments