diff --git a/src/lib/constants.ts b/src/lib/constants.ts index b73ecbbb9..a2107d03c 100644 --- a/src/lib/constants.ts +++ b/src/lib/constants.ts @@ -40,7 +40,9 @@ export enum Dependencies { WEBHOOK = 'dependency:webhook', WEBHOOKS = 'dependency:webhooks', MIGRATIONS = 'dependency:migrations', - COLLECTIONS = 'dependency:collections' + COLLECTIONS = 'dependency:collections', + RUNTIMES = 'dependency:runtimes', + CONSOLE_VARIABLES = 'dependency:console_variables' } export const scopes: { diff --git a/src/lib/helpers/debounce.ts b/src/lib/helpers/debounce.ts index afb93f4a2..6a36b4e47 100644 --- a/src/lib/helpers/debounce.ts +++ b/src/lib/helpers/debounce.ts @@ -1,6 +1,6 @@ -export function debounce void>(fn: F, delay: number) { +export function debounce void>(fn: F, delay: number) { let timeoutID: ReturnType = null; - const debounceFn = function (this: any, ...args: any[]) { + const debounceFn = function (this: unknown, ...args: unknown[]) { clearTimeout(timeoutID); timeoutID = window.setTimeout(() => fn.apply(this, args), delay) as unknown as ReturnType< typeof setTimeout diff --git a/src/lib/helpers/object.ts b/src/lib/helpers/object.ts index fb09d2ab5..0a901aed3 100644 --- a/src/lib/helpers/object.ts +++ b/src/lib/helpers/object.ts @@ -45,7 +45,7 @@ export function deepMap( return result; } -export function parseIfString(value: unknown): any { +export function parseIfString(value: unknown): unknown { if (typeof value === 'string') { try { return JSON.parse(value); diff --git a/src/lib/helpers/project.ts b/src/lib/helpers/project.ts index ff8f887b0..a8a88cd3f 100644 --- a/src/lib/helpers/project.ts +++ b/src/lib/helpers/project.ts @@ -1,5 +1,5 @@ export function getProjectId() { - const pathname = window.location.pathname; + const pathname = window.location.pathname + '/'; const projectMatch = pathname.match(/\/project-(.*?)\//); return projectMatch?.[1] || null; } diff --git a/src/lib/helpers/stores.ts b/src/lib/helpers/stores.ts index 509693a9e..13a63437d 100644 --- a/src/lib/helpers/stores.ts +++ b/src/lib/helpers/stores.ts @@ -9,7 +9,7 @@ import { deepClone, objectEntries } from './object'; * * @export */ -export function createConservative>(obj: Obj) { +export function createConservative>(obj: Obj) { const stores = Object.fromEntries( objectEntries(obj).map(([key, value]) => [key, writable(value)]) ) as { diff --git a/src/lib/pages/domains/wizard/step1.svelte b/src/lib/pages/domains/wizard/step1.svelte index 6c37353c2..2eea50d4d 100644 --- a/src/lib/pages/domains/wizard/step1.svelte +++ b/src/lib/pages/domains/wizard/step1.svelte @@ -9,6 +9,7 @@ import { onMount } from 'svelte'; import { ProxyTypes } from '../index.svelte'; import { domain, typeStore } from './store'; + import { consoleVariables } from '$routes/console/store'; let error = null; let isDomainsEnabled = false; @@ -17,9 +18,9 @@ if (!isSelfHosted) { return; } - const vars = await sdk.forConsole.console.variables(); + //@ts-expect-error needs an sdk release - isDomainsEnabled = vars?._APP_DOMAIN_ENABLED === true; + isDomainsEnabled = (await $consoleVariables)?._APP_DOMAIN_ENABLED === true; }); async function createDomain() { diff --git a/src/lib/wizards/functions/cover.svelte b/src/lib/wizards/functions/cover.svelte index f38cfa2b2..ee607e3c3 100644 --- a/src/lib/wizards/functions/cover.svelte +++ b/src/lib/wizards/functions/cover.svelte @@ -2,7 +2,7 @@ import CreateTemplate from './createTemplate.svelte'; export function connectTemplate(template: MarketplaceTemplate, runtime: string | null = null) { - const variables: any = {}; + const variables: Record = {}; template.variables.forEach((variable) => { variables[variable.name] = variable.value ?? ''; }); @@ -29,17 +29,19 @@
@@ -282,7 +280,7 @@ {:else} - {#if isSelfHosted && !isVcsEnabled} + {#if isSelfHosted && !isVcsEnabled($consoleVariables)} Installing Git to a self-hosted instance diff --git a/src/lib/stores/consoleVariables.ts b/src/routes/console/project-[project]/functions/store.ts similarity index 56% rename from src/lib/stores/consoleVariables.ts rename to src/routes/console/project-[project]/functions/store.ts index 887820b6b..029ac922d 100644 --- a/src/lib/stores/consoleVariables.ts +++ b/src/routes/console/project-[project]/functions/store.ts @@ -2,7 +2,7 @@ import { page } from '$app/stores'; import { derived } from 'svelte/store'; import type { Models } from '@appwrite.io/console'; -export const consoleVariables = derived( +export const runtimes = derived( page, - ($page) => $page.data.consoleVariables as Models.ConsoleVariables + async ($page) => (await $page.data.runtimes) as Models.RuntimeList ); diff --git a/src/routes/console/project-[project]/functions/templates/template-[template]/+page.svelte b/src/routes/console/project-[project]/functions/templates/template-[template]/+page.svelte index 6b089bce2..850de5371 100644 --- a/src/routes/console/project-[project]/functions/templates/template-[template]/+page.svelte +++ b/src/routes/console/project-[project]/functions/templates/template-[template]/+page.svelte @@ -4,12 +4,10 @@ import { Pill } from '$lib/elements'; import { Button } from '$lib/elements/forms'; import { Container } from '$lib/layout'; - import { consoleVariables } from '$lib/stores/consoleVariables'; import { isSelfHosted } from '$lib/system'; import { connectTemplate } from '$lib/wizards/functions/cover.svelte'; + import { consoleVariables, isVcsEnabled } from '$routes/console/store'; import { template } from './store'; - - $: isVcsEnabled = $consoleVariables?._APP_VCS_ENABLED === true; @@ -62,7 +60,7 @@

{$template.tagline}

- {#if isSelfHosted && !isVcsEnabled} + {#if isSelfHosted && !isVcsEnabled($consoleVariables)} Cloning templates to a self-hosted instance diff --git a/src/routes/console/project-[project]/functions/wizard/step1.svelte b/src/routes/console/project-[project]/functions/wizard/step1.svelte index 53c58e72e..7bbecddbf 100644 --- a/src/routes/console/project-[project]/functions/wizard/step1.svelte +++ b/src/routes/console/project-[project]/functions/wizard/step1.svelte @@ -5,7 +5,7 @@ import { WizardStep } from '$lib/layout'; import { onMount } from 'svelte'; import { createFunction } from './store'; - import { runtimes } from '$lib/wizards/functions/store'; + import { runtimes } from '../store'; let showCustomId = false; diff --git a/src/routes/console/project-[project]/rawVariableEditor.svelte b/src/routes/console/project-[project]/rawVariableEditor.svelte index 97382f807..012caaf69 100644 --- a/src/routes/console/project-[project]/rawVariableEditor.svelte +++ b/src/routes/console/project-[project]/rawVariableEditor.svelte @@ -12,9 +12,13 @@ export let showEditor = false; export let variableList: Models.VariableList; - export let sdkCreateVariable: (key: string, value: string) => Promise; - export let sdkUpdateVariable: (variableId: string, key: string, value: string) => Promise; - export let sdkDeleteVariable: (variableId: string) => Promise; + export let sdkCreateVariable: (key: string, value: string) => Promise; + export let sdkUpdateVariable: ( + variableId: string, + key: string, + value: string + ) => Promise; + export let sdkDeleteVariable: (variableId: string) => Promise; let error = ''; let envCode = variableList.variables diff --git a/src/routes/console/project-[project]/settings/+page.ts b/src/routes/console/project-[project]/settings/+page.ts index e57a62558..125a929bd 100644 --- a/src/routes/console/project-[project]/settings/+page.ts +++ b/src/routes/console/project-[project]/settings/+page.ts @@ -1,18 +1,13 @@ import { Dependencies, PAGE_LIMIT } from '$lib/constants'; import { sdk } from '$lib/stores/sdk'; -import { Query, type Models } from '@appwrite.io/console'; +import { Query } from '@appwrite.io/console'; import type { PageLoad } from './$types'; -import { isSelfHosted } from '$lib/system'; export const load: PageLoad = async ({ depends, url }) => { depends(Dependencies.PROJECT_VARIABLES); depends(Dependencies.PROJECT_INSTALLATIONS); const limit = PAGE_LIMIT; const offset = Number(url.searchParams.get('offset') ?? 0); - let consoleVariables: Models.ConsoleVariables = null; - if (isSelfHosted) { - consoleVariables = await sdk.forConsole.console.variables(); - } return { limit, @@ -21,7 +16,6 @@ export const load: PageLoad = async ({ depends, url }) => { installations: await sdk.forProject.vcs.listInstallations([ Query.limit(limit), Query.offset(offset) - ]), - consoleVariables + ]) }; }; diff --git a/src/routes/console/project-[project]/settings/updateInstallations.svelte b/src/routes/console/project-[project]/settings/updateInstallations.svelte index 6a36b1452..5ccb5b1f3 100644 --- a/src/routes/console/project-[project]/settings/updateInstallations.svelte +++ b/src/routes/console/project-[project]/settings/updateInstallations.svelte @@ -29,7 +29,7 @@ import GitDisconnectModal from './GitDisconnectModal.svelte'; import dayjs from 'dayjs'; import { isSelfHosted } from '$lib/system'; - import { consoleVariables } from '$lib/stores/consoleVariables'; + import { consoleVariables, isVcsEnabled } from '$routes/console/store'; export let total: number; export let limit: number; @@ -76,8 +76,6 @@ noScroll: true }); } - - $: isVcsEnabled = $consoleVariables?._APP_VCS_ENABLED === true; @@ -181,7 +179,7 @@ bind:offset /> {:else} - {#if isSelfHosted && !isVcsEnabled} + {#if isSelfHosted && !isVcsEnabled($consoleVariables)} Installing Git to a self-hosted instance diff --git a/src/routes/console/project-[project]/store.ts b/src/routes/console/project-[project]/store.ts index a7051573b..4413c76dd 100644 --- a/src/routes/console/project-[project]/store.ts +++ b/src/routes/console/project-[project]/store.ts @@ -4,7 +4,6 @@ import type { BarSeriesOption } from 'echarts/charts'; import { derived, writable } from 'svelte/store'; export const project = derived(page, ($page) => $page.data.project as Models.Project); - export const onboarding = derived( project, ($project) => $project?.platforms?.length === 0 && $project?.keys?.length === 0 diff --git a/src/routes/console/project-[project]/updateVariables.svelte b/src/routes/console/project-[project]/updateVariables.svelte index a9057b0f0..f9232bf84 100644 --- a/src/routes/console/project-[project]/updateVariables.svelte +++ b/src/routes/console/project-[project]/updateVariables.svelte @@ -37,9 +37,13 @@ export let globalVariableList: Models.VariableList | undefined = undefined; export let isGlobal: boolean; - export let sdkCreateVariable: (key: string, value: string) => Promise; - export let sdkUpdateVariable: (variableId: string, key: string, value: string) => Promise; - export let sdkDeleteVariable: (variableId: string) => Promise; + export let sdkCreateVariable: (key: string, value: string) => Promise; + export let sdkUpdateVariable: ( + variableId: string, + key: string, + value: string + ) => Promise; + export let sdkDeleteVariable: (variableId: string) => Promise; let showVariablesDropdown = []; let selectedVar: Models.Variable = null; diff --git a/src/routes/console/project-[project]/uploadVariablesModal.svelte b/src/routes/console/project-[project]/uploadVariablesModal.svelte index 1d8e7b406..0a8484b7c 100644 --- a/src/routes/console/project-[project]/uploadVariablesModal.svelte +++ b/src/routes/console/project-[project]/uploadVariablesModal.svelte @@ -9,8 +9,12 @@ export let isGlobal: boolean; export let show = false; export let variableList: Models.VariableList; - export let sdkCreateVariable: (key: string, value: string) => Promise; - export let sdkUpdateVariable: (variableId: string, key: string, value: string) => Promise; + export let sdkCreateVariable: (key: string, value: string) => Promise; + export let sdkUpdateVariable: ( + variableId: string, + key: string, + value: string + ) => Promise; let files: FileList; let error: string; diff --git a/src/routes/console/store.ts b/src/routes/console/store.ts index 2e8023dda..d8f11992f 100644 --- a/src/routes/console/store.ts +++ b/src/routes/console/store.ts @@ -1,4 +1,12 @@ import { page } from '$app/stores'; +import type { Models } from '@appwrite.io/console'; import { derived } from 'svelte/store'; export const version = derived(page, ($page) => $page.data.version as string | null); +export const consoleVariables = derived( + page, + async ($page) => (await $page.data.consoleVariables) as Models.ConsoleVariables +); +export async function isVcsEnabled(store: Promise) { + return (await store)?._APP_VCS_ENABLED === true; +} diff --git a/src/routes/store.ts b/src/routes/store.ts index c2f973b21..be6859877 100644 --- a/src/routes/store.ts +++ b/src/routes/store.ts @@ -7,4 +7,4 @@ export const loading = writable(true); export const organizations = derived(page, ($page) => { return $page.data.organizations as Models.TeamList; }); -export const requestedMigration = writable | null>(null); +export const requestedMigration = writable | null>(null);