mirror of
https://github.com/appwrite/console.git
synced 2026-06-06 19:27:48 +00:00
Merge pull request #1867 from appwrite/fix-rules-domains
Fix: domains flow on sites
This commit is contained in:
9 files changed
+92
-30
No files matched your search
+19
-3
@@ -18,6 +18,8 @@
|
||||
import { onMount } from 'svelte';
|
||||
import { ConnectRepoModal } from '$lib/components/git/index.js';
|
||||
import { isValueOfStringEnum } from '$lib/helpers/types.js';
|
||||
import { isCloud } from '$lib/system';
|
||||
import { project } from '$routes/(console)/project-[region]-[project]/store';
|
||||
|
||||
const routeBase = `${base}/project-${page.params.region}-${page.params.project}/functions/function-${page.params.function}/domains`;
|
||||
|
||||
@@ -29,8 +31,8 @@
|
||||
let behaviour: 'REDIRECT' | 'BRANCH' | 'ACTIVE' = $state('ACTIVE');
|
||||
let domainName = $state('');
|
||||
let redirect: string = $state(null);
|
||||
let statusCode = $state(307);
|
||||
let branch: string = $state(null);
|
||||
let statusCode = $state(StatusCode.TemporaryRedirect307);
|
||||
|
||||
onMount(() => {
|
||||
if (
|
||||
@@ -45,6 +47,21 @@
|
||||
});
|
||||
|
||||
async function addDomain() {
|
||||
let domain = data.domains?.domains.find((d) => d.domain === domainName);
|
||||
|
||||
if (!domain && isCloud) {
|
||||
try {
|
||||
domain = await sdk.forConsole.domains.create($project.teamId, domainName);
|
||||
} catch (error) {
|
||||
addNotification({
|
||||
type: 'error',
|
||||
message: error.message
|
||||
});
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
let rule: Models.ProxyRule;
|
||||
if (behaviour === 'BRANCH') {
|
||||
@@ -52,10 +69,9 @@
|
||||
.forProject(page.params.region, page.params.project)
|
||||
.proxy.createFunctionRule(domainName, page.params.function, branch);
|
||||
} else if (behaviour === 'REDIRECT') {
|
||||
const sc = Object.values(StatusCode).find((code) => parseInt(code) === statusCode);
|
||||
rule = await sdk
|
||||
.forProject(page.params.region, page.params.project)
|
||||
.proxy.createRedirectRule(domainName, $protocol + redirect, sc);
|
||||
.proxy.createRedirectRule(domainName, $protocol + redirect, statusCode);
|
||||
} else if (behaviour === 'ACTIVE') {
|
||||
rule = await sdk
|
||||
.forProject(page.params.region, page.params.project)
|
||||
|
||||
+5
-2
@@ -2,23 +2,26 @@ import { sdk } from '$lib/stores/sdk';
|
||||
import { Query } from '@appwrite.io/console';
|
||||
import { RuleTrigger, RuleType } from '$lib/stores/sdk';
|
||||
import { Dependencies } from '$lib/constants';
|
||||
import { isCloud } from '$lib/system';
|
||||
|
||||
export const load = async ({ parent, depends, params }) => {
|
||||
const { function: func } = await parent();
|
||||
depends(Dependencies.DOMAINS, Dependencies.FUNCTION_DOMAINS);
|
||||
|
||||
const [domains, installations] = await Promise.all([
|
||||
const [rules, installations, domains] = await Promise.all([
|
||||
sdk
|
||||
.forProject(params.region, params.project)
|
||||
.proxy.listRules([
|
||||
Query.equal('type', RuleType.DEPLOYMENT),
|
||||
Query.equal('trigger', RuleTrigger.MANUAL)
|
||||
]),
|
||||
sdk.forProject(params.region, params.project).vcs.listInstallations()
|
||||
sdk.forProject(params.region, params.project).vcs.listInstallations(),
|
||||
isCloud ? sdk.forConsole.domains.list() : Promise.resolve(null)
|
||||
]);
|
||||
|
||||
return {
|
||||
func,
|
||||
rules,
|
||||
domains,
|
||||
installations,
|
||||
branches:
|
||||
|
||||
+5
-4
@@ -9,10 +9,11 @@ export const load = async ({ depends, params }) => {
|
||||
let domain: Domain;
|
||||
let domainsList: DomainsList;
|
||||
if (isCloud) {
|
||||
[domain, domainsList] = await Promise.all([
|
||||
sdk.forConsole.domains.get(params.domain),
|
||||
sdk.forConsole.domains.list()
|
||||
]);
|
||||
domainsList = await sdk.forConsole.domains.list();
|
||||
const domainId = domainsList.domains.find(
|
||||
(domain: Domain) => domain.domain === params.domain
|
||||
).$id;
|
||||
domain = await sdk.forConsole.domains.get(domainId);
|
||||
}
|
||||
|
||||
return {
|
||||
|
||||
+18
-1
@@ -9,10 +9,12 @@
|
||||
import { Dependencies } from '$lib/constants';
|
||||
import { writable } from 'svelte/store';
|
||||
import { onMount } from 'svelte';
|
||||
import { isCloud } from '$lib/system';
|
||||
import { project } from '$routes/(console)/project-[region]-[project]/store';
|
||||
|
||||
const routeBase = `${base}/project-${page.params.region}-${page.params.project}/settings/domains`;
|
||||
|
||||
// let { data } = $props();
|
||||
let { data } = $props();
|
||||
|
||||
let formComponent: Form;
|
||||
let isSubmitting = $state(writable(false));
|
||||
@@ -25,6 +27,21 @@
|
||||
});
|
||||
|
||||
async function addDomain() {
|
||||
let domain = data.domains?.domains.find((d) => d.domain === domainName);
|
||||
|
||||
if (!domain && isCloud) {
|
||||
try {
|
||||
domain = await sdk.forConsole.domains.create($project.teamId, domainName);
|
||||
} catch (error) {
|
||||
addNotification({
|
||||
type: 'error',
|
||||
message: error.message
|
||||
});
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
const rule = await sdk
|
||||
.forProject(page.params.region, page.params.project)
|
||||
|
||||
+6
-3
@@ -2,20 +2,23 @@ import { Query } from '@appwrite.io/console';
|
||||
import { sdk } from '$lib/stores/sdk';
|
||||
import { RuleTrigger, RuleType } from '$lib/stores/sdk';
|
||||
import { Dependencies } from '$lib/constants.js';
|
||||
import { isCloud } from '$lib/system';
|
||||
|
||||
export const load = async ({ depends, params }) => {
|
||||
depends(Dependencies.DOMAINS);
|
||||
|
||||
const [rules] = await Promise.all([
|
||||
const [rules, domains] = await Promise.all([
|
||||
sdk
|
||||
.forProject(params.region, params.project)
|
||||
.proxy.listRules([
|
||||
Query.equal('type', RuleType.API),
|
||||
Query.equal('trigger', RuleTrigger.MANUAL)
|
||||
])
|
||||
]),
|
||||
isCloud ? sdk.forConsole.domains.list() : Promise.resolve(null)
|
||||
]);
|
||||
|
||||
return {
|
||||
rules
|
||||
rules,
|
||||
domains
|
||||
};
|
||||
};
|
||||
+5
-4
@@ -9,10 +9,11 @@ export const load = async ({ depends, params }) => {
|
||||
let domain: Domain;
|
||||
let domainsList: DomainsList;
|
||||
if (isCloud) {
|
||||
[domain, domainsList] = await Promise.all([
|
||||
sdk.forConsole.domains.get(params.domain),
|
||||
sdk.forConsole.domains.list()
|
||||
]);
|
||||
domainsList = await sdk.forConsole.domains.list();
|
||||
const domainId = domainsList.domains.find(
|
||||
(domain: Domain) => domain.domain === params.domain
|
||||
).$id;
|
||||
domain = await sdk.forConsole.domains.get(domainId);
|
||||
}
|
||||
|
||||
return {
|
||||
|
||||
+21
-5
@@ -16,13 +16,15 @@
|
||||
Adapter,
|
||||
BuildRuntime,
|
||||
Framework,
|
||||
StatusCode,
|
||||
type Models
|
||||
type Models,
|
||||
StatusCode
|
||||
} from '@appwrite.io/console';
|
||||
import { statusCodeOptions } from '$lib/stores/domains';
|
||||
import { writable } from 'svelte/store';
|
||||
import { onMount } from 'svelte';
|
||||
import { ConnectRepoModal } from '$lib/components/git/index.js';
|
||||
import { project } from '$routes/(console)/project-[region]-[project]/store';
|
||||
import { isCloud } from '$lib/system';
|
||||
|
||||
const routeBase = `${base}/project-${page.params.region}-${page.params.project}/sites/site-${page.params.site}/domains`;
|
||||
|
||||
@@ -34,8 +36,8 @@
|
||||
let behaviour: 'REDIRECT' | 'BRANCH' | 'ACTIVE' = $state('ACTIVE');
|
||||
let domainName = $state('');
|
||||
let redirect: string = $state(null);
|
||||
let statusCode = $state(307);
|
||||
let branch: string = $state(null);
|
||||
let statusCode = $state(StatusCode.TemporaryRedirect307);
|
||||
|
||||
onMount(() => {
|
||||
if (
|
||||
@@ -50,6 +52,21 @@
|
||||
});
|
||||
|
||||
async function addDomain() {
|
||||
let domain = data.domains?.domains.find((d) => d.domain === domainName);
|
||||
|
||||
if (!domain && isCloud) {
|
||||
try {
|
||||
domain = await sdk.forConsole.domains.create($project.teamId, domainName);
|
||||
} catch (error) {
|
||||
addNotification({
|
||||
type: 'error',
|
||||
message: error.message
|
||||
});
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
let rule: Models.ProxyRule;
|
||||
if (behaviour === 'BRANCH') {
|
||||
@@ -57,10 +74,9 @@
|
||||
.forProject(page.params.region, page.params.project)
|
||||
.proxy.createSiteRule(domainName, page.params.site, branch);
|
||||
} else if (behaviour === 'REDIRECT') {
|
||||
const sc = Object.values(StatusCode).find((code) => parseInt(code) === statusCode);
|
||||
rule = await sdk
|
||||
.forProject(page.params.region, page.params.project)
|
||||
.proxy.createRedirectRule(domainName, $protocol + redirect, sc);
|
||||
.proxy.createRedirectRule(domainName, $protocol + redirect, statusCode);
|
||||
} else if (behaviour === 'ACTIVE') {
|
||||
rule = await sdk
|
||||
.forProject(page.params.region, page.params.project)
|
||||
|
||||
+5
-2
@@ -2,24 +2,27 @@ import { Query } from '@appwrite.io/console';
|
||||
import { sdk } from '$lib/stores/sdk';
|
||||
import { RuleTrigger, RuleType } from '$lib/stores/sdk';
|
||||
import { Dependencies } from '$lib/constants.js';
|
||||
import { isCloud } from '$lib/system';
|
||||
|
||||
export const load = async ({ parent, depends, params }) => {
|
||||
const { site } = await parent();
|
||||
depends(Dependencies.DOMAINS, Dependencies.SITES_DOMAINS);
|
||||
|
||||
const [rules, installations] = await Promise.all([
|
||||
const [rules, installations, domains] = await Promise.all([
|
||||
sdk
|
||||
.forProject(params.region, params.project)
|
||||
.proxy.listRules([
|
||||
Query.equal('type', RuleType.DEPLOYMENT),
|
||||
Query.equal('trigger', RuleTrigger.MANUAL)
|
||||
]),
|
||||
sdk.forProject(params.region, params.project).vcs.listInstallations()
|
||||
sdk.forProject(params.region, params.project).vcs.listInstallations(),
|
||||
isCloud ? sdk.forConsole.domains.list() : Promise.resolve(null)
|
||||
]);
|
||||
|
||||
return {
|
||||
site,
|
||||
rules,
|
||||
domains,
|
||||
installations,
|
||||
branches:
|
||||
site?.installationId && site?.providerRepositoryId
|
||||
|
||||
+8
-6
@@ -1,19 +1,21 @@
|
||||
import { sdk } from '$lib/stores/sdk';
|
||||
import { Dependencies } from '$lib/constants.js';
|
||||
import { isCloud } from '$lib/system';
|
||||
import { Dependencies } from '$lib/constants.js';
|
||||
import type { Domain, DomainsList } from '$lib/sdk/domains.js';
|
||||
|
||||
export const load = async ({ parent, depends, params }) => {
|
||||
const { site } = await parent();
|
||||
depends(Dependencies.DOMAINS);
|
||||
depends(Dependencies.SITES_DOMAINS);
|
||||
|
||||
let domain: Domain;
|
||||
let domainsList: DomainsList;
|
||||
|
||||
if (isCloud) {
|
||||
[domain, domainsList] = await Promise.all([
|
||||
sdk.forConsole.domains.get(params.domain),
|
||||
sdk.forConsole.domains.list()
|
||||
]);
|
||||
domainsList = await sdk.forConsole.domains.list();
|
||||
const domainId = domainsList.domains.find(
|
||||
(domain: Domain) => domain.domain === params.domain
|
||||
).$id;
|
||||
domain = await sdk.forConsole.domains.get(domainId);
|
||||
}
|
||||
|
||||
return {
|
||||
|
||||
Reference in new issue
Block a user