diff --git a/src/lib/stores/sdk.ts b/src/lib/stores/sdk.ts index f6f84a275..f3a44d3cf 100644 --- a/src/lib/stores/sdk.ts +++ b/src/lib/stores/sdk.ts @@ -9,11 +9,11 @@ import { Functions, Health, Locale, + Migrations, Projects, Storage, Teams, Users - // Migrations } from '@appwrite.io/console'; const endpoint = VARS.APPWRITE_ENDPOINT ?? `${globalThis?.location?.origin}/v1`; @@ -34,8 +34,8 @@ const sdkForProject = { project: new Project(clientProject), storage: new Storage(clientProject), teams: new Teams(clientProject), - users: new Users(clientProject) - // migrations: new Migrations(clientProject) + users: new Users(clientProject), + migrations: new Migrations(clientProject) }; export const getSdkForProject = (projectId: string) => { @@ -56,8 +56,8 @@ export const sdk = { locale: new Locale(clientConsole), projects: new Projects(clientConsole), teams: new Teams(clientConsole), - users: new Users(clientConsole) - // migrations: new Migrations(clientConsole) + users: new Users(clientConsole), + migrations: new Migrations(clientConsole) }, get forProject() { const projectId = getProjectId(); diff --git a/src/routes/console/project-[project]/settings/migrations/(import)/step1.svelte b/src/routes/console/project-[project]/settings/migrations/(import)/step1.svelte index 41df2cfbb..8e51ea1e4 100644 --- a/src/routes/console/project-[project]/settings/migrations/(import)/step1.svelte +++ b/src/routes/console/project-[project]/settings/migrations/(import)/step1.svelte @@ -3,7 +3,10 @@ import { Button, FormList, InputNumber, InputPassword, InputText } from '$lib/elements/forms'; import { WizardStep } from '$lib/layout'; import type { Provider } from '$lib/stores/migration'; + import { sdk } from '$lib/stores/sdk'; + import { page } from '$app/stores'; import { provider } from '.'; + import { addNotification } from '$lib/stores/notifications'; const providers: Record = { appwrite: 'Appwrite Self-hosted', @@ -12,7 +15,40 @@ nhost: 'NHost' }; + function connectGoogle() { + const redirect = new URL($page.url); + const target = new URL( + `${sdk.forProject.client.config.endpoint}/migrations/firebase/connect` + ); + target.searchParams.set('projectId', $page.params.project); + target.searchParams.set('redirect', redirect.toString()); + return target; + } + + function getFirebaseProjects() { + sdk.forProject.migrations.listFirebaseProjects().then((res) => { + firebaseProjects = res.projects; + }); + } + + function deauthorizeGoogle() { + sdk.forProject.migrations.firebaseDeauthorize().then(() => { + firebaseProjects = []; + }); + + addNotification({ + type: 'success', + message: 'Signed out of Google successfully' + }); + } + + let firebaseProjects = []; + let showAuth = false; + + $: if ($provider.provider === 'firebase') { + getFirebaseProjects(); + } @@ -57,13 +93,30 @@ bind:value={$provider.apiKey} /> {:else if $provider.provider === 'firebase'} -
-

Sign in with Google to get started

- -
+ {#if firebaseProjects.length == 0} +
+

Sign in with Google to get started

+ +
+ {:else} + {#each firebaseProjects as project} +
+
+

{project.displayName}

+ {project.projectId} +
+
+ {/each} +

+ Signed in as test@test.com +

+ {/if}