+
-
+
{log.clientName}
{log.clientVersion}
on {log.osName}
diff --git a/src/routes/console/[project]/authentication/user/[user]/activity.svelte b/src/routes/console/[project]/authentication/user/[user]/activity.svelte
index a4695372d..8100cd430 100644
--- a/src/routes/console/[project]/authentication/user/[user]/activity.svelte
+++ b/src/routes/console/[project]/authentication/user/[user]/activity.svelte
@@ -39,7 +39,7 @@
-
+
-
-
- {log.clientName}
- {log.clientVersion}
-
-
- on {log.osName}
- {log.osVersion}
-
-
+
+ {log.clientName}
+ {log.clientVersion}
+ on {log.osName}
+ {log.osVersion}
+
{log.event}
From 02d28678bb697834716ff491e9e38763eb5112ec Mon Sep 17 00:00:00 2001
From: Arman
Date: Mon, 8 Aug 2022 12:37:33 +0200
Subject: [PATCH 016/118] chore: update css
---
package-lock.json | 28 ++++++++++++++--------------
package.json | 4 ++--
2 files changed, 16 insertions(+), 16 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 965d160ca..1ae439b95 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,8 +9,8 @@
"version": "0.0.1",
"dependencies": {
"@aw-labs/appwrite-console": "^1.0.0-0",
- "@aw-labs/icons": "0.0.0-37",
- "@aw-labs/ui": "0.0.0-37",
+ "@aw-labs/icons": "0.0.0-39",
+ "@aw-labs/ui": "0.0.0-39",
"echarts": "^5.3.3"
},
"devDependencies": {
@@ -69,14 +69,14 @@
}
},
"node_modules/@aw-labs/icons": {
- "version": "0.0.0-37",
- "resolved": "https://registry.npmjs.org/@aw-labs/icons/-/icons-0.0.0-37.tgz",
- "integrity": "sha512-4II+SFnVlDWuFwlzU2pMAy5y9Bq09bOEP1mEknZ+0BlPhDlvks742N5m0cNjlTQFCZwa/Y5YxzLNXgVszFqEfA=="
+ "version": "0.0.0-39",
+ "resolved": "https://registry.npmjs.org/@aw-labs/icons/-/icons-0.0.0-39.tgz",
+ "integrity": "sha512-NU4zzLVQMHM6Gcv/ZC64q1Kgp8n/UmWvLSSUcZ8KgfUtgMOExoVk3nWoP5ALjZZAYlBE8NQG5cFMoo8S5re2Mg=="
},
"node_modules/@aw-labs/ui": {
- "version": "0.0.0-37",
- "resolved": "https://registry.npmjs.org/@aw-labs/ui/-/ui-0.0.0-37.tgz",
- "integrity": "sha512-OxAM0ZDedo6yipN3I5CcHt1Jbc7v3vZk9k+hAVWc7F6OPF5JJ7R3ZadVvyl4fxEMo2ooK+jbbkeG62/PxgwEWw==",
+ "version": "0.0.0-39",
+ "resolved": "https://registry.npmjs.org/@aw-labs/ui/-/ui-0.0.0-39.tgz",
+ "integrity": "sha512-LnP9t7G48eJB1tcFRjlibMus9hYxhKJp9J1gHsUjVz0KsrAKTnJzbnttkvoAXwu3EmBmdFhnOjPc5s23m/kkaQ==",
"dependencies": {
"@aw-labs/icons": "*"
}
@@ -8060,14 +8060,14 @@
}
},
"@aw-labs/icons": {
- "version": "0.0.0-37",
- "resolved": "https://registry.npmjs.org/@aw-labs/icons/-/icons-0.0.0-37.tgz",
- "integrity": "sha512-4II+SFnVlDWuFwlzU2pMAy5y9Bq09bOEP1mEknZ+0BlPhDlvks742N5m0cNjlTQFCZwa/Y5YxzLNXgVszFqEfA=="
+ "version": "0.0.0-39",
+ "resolved": "https://registry.npmjs.org/@aw-labs/icons/-/icons-0.0.0-39.tgz",
+ "integrity": "sha512-NU4zzLVQMHM6Gcv/ZC64q1Kgp8n/UmWvLSSUcZ8KgfUtgMOExoVk3nWoP5ALjZZAYlBE8NQG5cFMoo8S5re2Mg=="
},
"@aw-labs/ui": {
- "version": "0.0.0-37",
- "resolved": "https://registry.npmjs.org/@aw-labs/ui/-/ui-0.0.0-37.tgz",
- "integrity": "sha512-OxAM0ZDedo6yipN3I5CcHt1Jbc7v3vZk9k+hAVWc7F6OPF5JJ7R3ZadVvyl4fxEMo2ooK+jbbkeG62/PxgwEWw==",
+ "version": "0.0.0-39",
+ "resolved": "https://registry.npmjs.org/@aw-labs/ui/-/ui-0.0.0-39.tgz",
+ "integrity": "sha512-LnP9t7G48eJB1tcFRjlibMus9hYxhKJp9J1gHsUjVz0KsrAKTnJzbnttkvoAXwu3EmBmdFhnOjPc5s23m/kkaQ==",
"requires": {
"@aw-labs/icons": "*"
}
diff --git a/package.json b/package.json
index 973a854ac..397458ba9 100644
--- a/package.json
+++ b/package.json
@@ -20,8 +20,8 @@
},
"dependencies": {
"@aw-labs/appwrite-console": "^1.0.0-0",
- "@aw-labs/icons": "0.0.0-37",
- "@aw-labs/ui": "0.0.0-37",
+ "@aw-labs/icons": "0.0.0-39",
+ "@aw-labs/ui": "0.0.0-39",
"echarts": "^5.3.3"
},
"devDependencies": {
From a224a5d2bd35cdf350c8862d33d2bb96b2718d03 Mon Sep 17 00:00:00 2001
From: Arman
Date: Mon, 8 Aug 2022 12:37:59 +0200
Subject: [PATCH 017/118] feat: move tag to top right
---
.../authentication/user/[user]/index.svelte | 58 ++++++++++---------
1 file changed, 30 insertions(+), 28 deletions(-)
diff --git a/src/routes/console/[project]/authentication/user/[user]/index.svelte b/src/routes/console/[project]/authentication/user/[user]/index.svelte
index 63a3b772c..eff6a55a1 100644
--- a/src/routes/console/[project]/authentication/user/[user]/index.svelte
+++ b/src/routes/console/[project]/authentication/user/[user]/index.svelte
@@ -193,37 +193,39 @@
{$user.name}
- {#if !$user.status}
-
blocked
- {:else if $user.email && $user.phone}
-
- {$user.emailVerification && $user.phoneVerification
- ? 'verified'
- : $user.emailVerification
- ? 'verified email'
- : $user.phoneVerification
- ? 'verified phone'
- : 'unverified'}
-
- {:else}
-
- {$user.emailVerification
- ? 'verified '
- : $user.phoneVerification
- ? 'verified '
- : 'unverified'}
-
- {/if}
-
- {#if $user.email}
-
{$user.email}
+
+
+ {#if $user.email}
+
{$user.email}
+ {/if}
+ {#if $user.phone}
+
{$user.phone}
+ {/if}
+
Joined: {toLocaleDateTime($user.registration)}
+
+ {#if !$user.status}
+
blocked
+ {:else if $user.email && $user.phone}
+
+ {$user.emailVerification && $user.phoneVerification
+ ? 'verified'
+ : $user.emailVerification
+ ? 'verified email'
+ : $user.phoneVerification
+ ? 'verified phone'
+ : 'unverified'}
+
+ {:else}
+
+ {$user.emailVerification
+ ? 'verified '
+ : $user.phoneVerification
+ ? 'verified '
+ : 'unverified'}
+
{/if}
- {#if $user.phone}
-
{$user.phone}
- {/if}
-
Joined: {toLocaleDateTime($user.registration)}
From a68b3339a741ace19d8f64550e8c131537eb2315 Mon Sep 17 00:00:00 2001
From: Arman
Date: Mon, 8 Aug 2022 13:10:52 +0200
Subject: [PATCH 018/118] typo: auth methods label
---
src/lib/stores/auth-methods.ts | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/lib/stores/auth-methods.ts b/src/lib/stores/auth-methods.ts
index 82b7ecb6d..8ca530178 100644
--- a/src/lib/stores/auth-methods.ts
+++ b/src/lib/stores/auth-methods.ts
@@ -5,7 +5,7 @@ function createAuthMethods() {
const { subscribe, set } = writable({
list: [
{
- label: 'Password',
+ label: 'Email/Password',
method: 'email-password',
value: null
},
@@ -43,7 +43,7 @@ function createAuthMethods() {
load: (project: Models.Project) => {
const list = [
{
- label: 'Password',
+ label: 'Email/Password',
method: 'email-password',
value: project.authEmailPassword
},
From f82b8410f5023ee7f104a1092574f91d459a29f3 Mon Sep 17 00:00:00 2001
From: Arman
Date: Mon, 8 Aug 2022 16:55:24 +0200
Subject: [PATCH 019/118] chore: add missing browser icons
---
static/icons/dark/color/firefox.svg | 106 ++++++++++++++++++
static/icons/dark/color/microsoft_edge.svg | 41 +++++++
static/icons/dark/color/opera.svg | 17 +++
static/icons/dark/color/safari.svg | 42 +++++++
static/icons/dark/grayscale/firefox.svg | 3 +
.../icons/dark/grayscale/microsoft_edge.svg | 3 +
static/icons/dark/grayscale/opera.svg | 3 +
static/icons/dark/grayscale/safari.svg | 3 +
static/icons/light/color/firefox.svg | 106 ++++++++++++++++++
static/icons/light/color/microsoft_edge.svg | 41 +++++++
static/icons/light/color/opera.svg | 17 +++
static/icons/light/color/safari.svg | 42 +++++++
static/icons/light/grayscale/firefox.svg | 3 +
.../icons/light/grayscale/microsoft_edge.svg | 3 +
static/icons/light/grayscale/opera.svg | 3 +
static/icons/light/grayscale/safari.svg | 3 +
16 files changed, 436 insertions(+)
create mode 100644 static/icons/dark/color/firefox.svg
create mode 100644 static/icons/dark/color/microsoft_edge.svg
create mode 100644 static/icons/dark/color/opera.svg
create mode 100644 static/icons/dark/color/safari.svg
create mode 100644 static/icons/dark/grayscale/firefox.svg
create mode 100644 static/icons/dark/grayscale/microsoft_edge.svg
create mode 100644 static/icons/dark/grayscale/opera.svg
create mode 100644 static/icons/dark/grayscale/safari.svg
create mode 100644 static/icons/light/color/firefox.svg
create mode 100644 static/icons/light/color/microsoft_edge.svg
create mode 100644 static/icons/light/color/opera.svg
create mode 100644 static/icons/light/color/safari.svg
create mode 100644 static/icons/light/grayscale/firefox.svg
create mode 100644 static/icons/light/grayscale/microsoft_edge.svg
create mode 100644 static/icons/light/grayscale/opera.svg
create mode 100644 static/icons/light/grayscale/safari.svg
diff --git a/static/icons/dark/color/firefox.svg b/static/icons/dark/color/firefox.svg
new file mode 100644
index 000000000..2c2d6095e
--- /dev/null
+++ b/static/icons/dark/color/firefox.svg
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/static/icons/dark/color/microsoft_edge.svg b/static/icons/dark/color/microsoft_edge.svg
new file mode 100644
index 000000000..07a4e636c
--- /dev/null
+++ b/static/icons/dark/color/microsoft_edge.svg
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/static/icons/dark/color/opera.svg b/static/icons/dark/color/opera.svg
new file mode 100644
index 000000000..0efa1752f
--- /dev/null
+++ b/static/icons/dark/color/opera.svg
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/static/icons/dark/color/safari.svg b/static/icons/dark/color/safari.svg
new file mode 100644
index 000000000..3b7c36e91
--- /dev/null
+++ b/static/icons/dark/color/safari.svg
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/static/icons/dark/grayscale/firefox.svg b/static/icons/dark/grayscale/firefox.svg
new file mode 100644
index 000000000..d73dc97f5
--- /dev/null
+++ b/static/icons/dark/grayscale/firefox.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/static/icons/dark/grayscale/microsoft_edge.svg b/static/icons/dark/grayscale/microsoft_edge.svg
new file mode 100644
index 000000000..1a54e0f1f
--- /dev/null
+++ b/static/icons/dark/grayscale/microsoft_edge.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/static/icons/dark/grayscale/opera.svg b/static/icons/dark/grayscale/opera.svg
new file mode 100644
index 000000000..57a6f9113
--- /dev/null
+++ b/static/icons/dark/grayscale/opera.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/static/icons/dark/grayscale/safari.svg b/static/icons/dark/grayscale/safari.svg
new file mode 100644
index 000000000..4c38e6ebb
--- /dev/null
+++ b/static/icons/dark/grayscale/safari.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/static/icons/light/color/firefox.svg b/static/icons/light/color/firefox.svg
new file mode 100644
index 000000000..2c2d6095e
--- /dev/null
+++ b/static/icons/light/color/firefox.svg
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/static/icons/light/color/microsoft_edge.svg b/static/icons/light/color/microsoft_edge.svg
new file mode 100644
index 000000000..07a4e636c
--- /dev/null
+++ b/static/icons/light/color/microsoft_edge.svg
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/static/icons/light/color/opera.svg b/static/icons/light/color/opera.svg
new file mode 100644
index 000000000..0efa1752f
--- /dev/null
+++ b/static/icons/light/color/opera.svg
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/static/icons/light/color/safari.svg b/static/icons/light/color/safari.svg
new file mode 100644
index 000000000..3b7c36e91
--- /dev/null
+++ b/static/icons/light/color/safari.svg
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/static/icons/light/grayscale/firefox.svg b/static/icons/light/grayscale/firefox.svg
new file mode 100644
index 000000000..692e2ec0d
--- /dev/null
+++ b/static/icons/light/grayscale/firefox.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/static/icons/light/grayscale/microsoft_edge.svg b/static/icons/light/grayscale/microsoft_edge.svg
new file mode 100644
index 000000000..c5450831b
--- /dev/null
+++ b/static/icons/light/grayscale/microsoft_edge.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/static/icons/light/grayscale/opera.svg b/static/icons/light/grayscale/opera.svg
new file mode 100644
index 000000000..4fdf7668d
--- /dev/null
+++ b/static/icons/light/grayscale/opera.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/static/icons/light/grayscale/safari.svg b/static/icons/light/grayscale/safari.svg
new file mode 100644
index 000000000..09b484189
--- /dev/null
+++ b/static/icons/light/grayscale/safari.svg
@@ -0,0 +1,3 @@
+
+
+
From 39d6b1f04517b0679ac318d2bd461f7fc8bc3b9d Mon Sep 17 00:00:00 2001
From: Arman
Date: Mon, 8 Aug 2022 17:42:33 +0200
Subject: [PATCH 020/118] feat: add fallback for missing browser icons
---
.../teams/[team]/activity.svelte | 26 ++++++++++++++-----
.../user/[user]/activity.svelte | 26 ++++++++++++++-----
2 files changed, 38 insertions(+), 14 deletions(-)
diff --git a/src/routes/console/[project]/authentication/teams/[team]/activity.svelte b/src/routes/console/[project]/authentication/teams/[team]/activity.svelte
index 3f2881bd7..5e297e945 100644
--- a/src/routes/console/[project]/authentication/teams/[team]/activity.svelte
+++ b/src/routes/console/[project]/authentication/teams/[team]/activity.svelte
@@ -19,6 +19,14 @@
const limit = 5;
$: request = sdkForProject.teams.listLogs($page.params.team, limit, offset);
+
+ let browsers = {
+ firefox: 'firefox',
+ chrome: 'chrome',
+ safari: 'safari',
+ opera: 'opera',
+ edge: 'edge'
+ };
@@ -40,13 +48,17 @@
-
+ {#if browsers[log.clientName.toLocaleLowerCase()]}
+
+ {:else}
+
+ {/if}
{log.clientName}
diff --git a/src/routes/console/[project]/authentication/user/[user]/activity.svelte b/src/routes/console/[project]/authentication/user/[user]/activity.svelte
index 8100cd430..bc592f64f 100644
--- a/src/routes/console/[project]/authentication/user/[user]/activity.svelte
+++ b/src/routes/console/[project]/authentication/user/[user]/activity.svelte
@@ -19,6 +19,14 @@
const limit = 25;
$: request = sdkForProject.users.getLogs($page.params.user, limit, offset);
+
+ let browsers = {
+ firefox: 'firefox',
+ chrome: 'chrome',
+ safari: 'safari',
+ opera: 'opera',
+ edge: 'edge'
+ };
@@ -40,13 +48,17 @@
-
+ {#if browsers[log.clientName.toLocaleLowerCase()]}
+
+ {:else}
+
+ {/if}
{log.clientName}
From bbef22b1d504b1445b10014568ea9b36b4c1b0f3 Mon Sep 17 00:00:00 2001
From: Arman
Date: Tue, 9 Aug 2022 11:00:59 +0200
Subject: [PATCH 021/118] feat: add notifications
---
src/lib/stores/auth-methods.ts | 6 ++++++
.../[project]/authentication/_appleOAuth.svelte | 6 ++++++
.../[project]/authentication/_auth0OAuth.svelte | 6 ++++++
.../[project]/authentication/_mainOAuth.svelte | 6 ++++++
.../[project]/authentication/_microsoftOAuth.svelte | 6 ++++++
.../[project]/authentication/_oktaOAuth.svelte | 7 ++++++-
.../console/[project]/authentication/settings.svelte | 12 +++++++-----
7 files changed, 43 insertions(+), 6 deletions(-)
diff --git a/src/lib/stores/auth-methods.ts b/src/lib/stores/auth-methods.ts
index 8ca530178..b4fbd07b9 100644
--- a/src/lib/stores/auth-methods.ts
+++ b/src/lib/stores/auth-methods.ts
@@ -1,6 +1,12 @@
import { writable } from 'svelte/store';
import type { Models } from '@aw-labs/appwrite-console';
+export type AuthMethod = {
+ label: string;
+ method: string;
+ value: boolean | null;
+};
+
function createAuthMethods() {
const { subscribe, set } = writable({
list: [
diff --git a/src/routes/console/[project]/authentication/_appleOAuth.svelte b/src/routes/console/[project]/authentication/_appleOAuth.svelte
index 157ce1900..f7e18291b 100644
--- a/src/routes/console/[project]/authentication/_appleOAuth.svelte
+++ b/src/routes/console/[project]/authentication/_appleOAuth.svelte
@@ -29,6 +29,12 @@
secret
);
showModal = false;
+ addNotification({
+ type: 'success',
+ message: `${provider.name} authentication has been ${
+ provider.active ? 'enabled' : 'disabled'
+ }`
+ });
} catch (error) {
addNotification({
type: 'error',
diff --git a/src/routes/console/[project]/authentication/_auth0OAuth.svelte b/src/routes/console/[project]/authentication/_auth0OAuth.svelte
index ee16907db..7baa58b4d 100644
--- a/src/routes/console/[project]/authentication/_auth0OAuth.svelte
+++ b/src/routes/console/[project]/authentication/_auth0OAuth.svelte
@@ -29,6 +29,12 @@
secret
);
showModal = false;
+ addNotification({
+ type: 'success',
+ message: `${provider.name} authentication has been ${
+ provider.active ? 'enabled' : 'disabled'
+ }`
+ });
} catch (error) {
addNotification({
type: 'error',
diff --git a/src/routes/console/[project]/authentication/_mainOAuth.svelte b/src/routes/console/[project]/authentication/_mainOAuth.svelte
index 85677ab84..f874c8198 100644
--- a/src/routes/console/[project]/authentication/_mainOAuth.svelte
+++ b/src/routes/console/[project]/authentication/_mainOAuth.svelte
@@ -25,6 +25,12 @@
provider.secret
);
showModal = false;
+ addNotification({
+ type: 'success',
+ message: `${provider.name} authentication has been ${
+ provider.active ? 'enabled' : 'disabled'
+ }`
+ });
} catch (error) {
addNotification({
type: 'error',
diff --git a/src/routes/console/[project]/authentication/_microsoftOAuth.svelte b/src/routes/console/[project]/authentication/_microsoftOAuth.svelte
index 432e54569..fc3bff73a 100644
--- a/src/routes/console/[project]/authentication/_microsoftOAuth.svelte
+++ b/src/routes/console/[project]/authentication/_microsoftOAuth.svelte
@@ -29,6 +29,12 @@
);
showModal = false;
+ addNotification({
+ type: 'success',
+ message: `${provider.name} authentication has been ${
+ provider.active ? 'enabled' : 'disabled'
+ }`
+ });
} catch (error) {
addNotification({
type: 'error',
diff --git a/src/routes/console/[project]/authentication/_oktaOAuth.svelte b/src/routes/console/[project]/authentication/_oktaOAuth.svelte
index 32bb06db6..fb32e4b64 100644
--- a/src/routes/console/[project]/authentication/_oktaOAuth.svelte
+++ b/src/routes/console/[project]/authentication/_oktaOAuth.svelte
@@ -28,8 +28,13 @@
provider.id,
secret
);
-
showModal = false;
+ addNotification({
+ type: 'success',
+ message: `${provider.name} authentication has been ${
+ provider.active ? 'enabled' : 'disabled'
+ }`
+ });
} catch (error) {
addNotification({
type: 'error',
diff --git a/src/routes/console/[project]/authentication/settings.svelte b/src/routes/console/[project]/authentication/settings.svelte
index d30450a32..41972c7d3 100644
--- a/src/routes/console/[project]/authentication/settings.svelte
+++ b/src/routes/console/[project]/authentication/settings.svelte
@@ -6,7 +6,7 @@
import { addNotification } from '$lib/stores/notifications';
import { sdkForConsole } from '$lib/stores/sdk';
import { project } from '../store';
- import { authMethods } from '$lib/stores/auth-methods';
+ import { authMethods, type AuthMethod } from '$lib/stores/auth-methods';
import { OAuthProviders } from '$lib/stores/oauth-providers';
import { event } from '$lib/actions/analytics';
import type { Provider } from '$lib/stores/oauth-providers';
@@ -17,12 +17,14 @@
$: OAuthProviders.load($project);
let showModal = false;
- const authUpdate = async (id: string, value: boolean) => {
+ const authUpdate = async (box: AuthMethod) => {
try {
- await sdkForConsole.projects.updateAuthStatus(projectId, id, value);
+ await sdkForConsole.projects.updateAuthStatus(projectId, box.method, box.value);
addNotification({
type: 'success',
- message: 'Updated project authentication status successfully'
+ message: `${box.label} authentication has been ${
+ box.value ? 'enabled' : 'disabled'
+ }`
});
} catch (error) {
addNotification({
@@ -50,7 +52,7 @@
id={box.method}
bind:value={box.value}
on:change={() => {
- authUpdate(box.method, box.value);
+ authUpdate(box);
}} />
{/each}
From 7ee1a0aa328735275a037f753e283f123d5cf829 Mon Sep 17 00:00:00 2001
From: Arman
Date: Tue, 9 Aug 2022 11:08:53 +0200
Subject: [PATCH 022/118] fix: copyInput readonly, typos
---
src/lib/components/copyInput.svelte | 2 +-
src/routes/console/[project]/authentication/settings.svelte | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/lib/components/copyInput.svelte b/src/lib/components/copyInput.svelte
index 7eb0900e7..5eb558fc3 100644
--- a/src/lib/components/copyInput.svelte
+++ b/src/lib/components/copyInput.svelte
@@ -22,7 +22,7 @@
-
+
diff --git a/src/routes/console/[project]/authentication/settings.svelte b/src/routes/console/[project]/authentication/settings.svelte
index 41972c7d3..801a6ce52 100644
--- a/src/routes/console/[project]/authentication/settings.svelte
+++ b/src/routes/console/[project]/authentication/settings.svelte
@@ -87,7 +87,7 @@
{provider.name}
- {provider.active ? 'Enabled' : 'Disabled'}
+ {provider.active ? 'enabled' : 'disabled'}
From 308d0bbee9c85a851eafe40629e58c156907f076 Mon Sep 17 00:00:00 2001
From: Arman
Date: Tue, 9 Aug 2022 13:22:21 +0200
Subject: [PATCH 023/118] fix: icon in alert
---
src/lib/components/alert.svelte | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/src/lib/components/alert.svelte b/src/lib/components/alert.svelte
index ee90958e6..b227a6a6b 100644
--- a/src/lib/components/alert.svelte
+++ b/src/lib/components/alert.svelte
@@ -6,10 +6,24 @@
export let type: '' | 'info' | 'success' | 'warning' | 'danger' = 'info';
export let buttons: Buttons[] = [];
+ let icon = {
+ success: 'icon-check-circle',
+ warning: 'icon-exclamation',
+ error: 'icon-exclamation-circle',
+ info: 'icon-info'
+ };
+
+ let typeClass = {
+ success: 'is-success',
+ warning: 'is-warning',
+ error: 'is-danger',
+ info: 'is-info'
+ };
+
const dispatch = createEventDispatcher();
-
+
{#if dismissible}
{/if}
-
+
{#if $$slots.title}
From 70e4a42a9be73ecfa68db2ba8c9013e698ba5c0f Mon Sep 17 00:00:00 2001
From: Arman
Date: Tue, 9 Aug 2022 13:22:54 +0200
Subject: [PATCH 024/118] feat: add error section to modals
---
src/lib/components/modal.svelte | 12 ++++++++++++
.../console/[project]/users/_createTeam.svelte | 9 ++++-----
.../console/[project]/users/_createUser.svelte | 9 ++++-----
3 files changed, 20 insertions(+), 10 deletions(-)
diff --git a/src/lib/components/modal.svelte b/src/lib/components/modal.svelte
index 7843b7c91..3a1263411 100644
--- a/src/lib/components/modal.svelte
+++ b/src/lib/components/modal.svelte
@@ -1,10 +1,12 @@
{:else if search}
@@ -113,7 +112,7 @@
class="u-flex u-margin-block-start-32
u-main-space-between">
Total results: {$memberships.total}
-
+
{:else}
diff --git a/src/routes/console/[project]/authentication/user/[user]/sessions.svelte b/src/routes/console/[project]/authentication/user/[user]/sessions.svelte
index c0a39a3ba..e5ef924bd 100644
--- a/src/routes/console/[project]/authentication/user/[user]/sessions.svelte
+++ b/src/routes/console/[project]/authentication/user/[user]/sessions.svelte
@@ -16,13 +16,13 @@
import DeleteSessions from './_deleteSession.svelte';
import { toLocaleDateTime } from '$lib/helpers/date';
import { app } from '$lib/stores/app';
+ import { pageLimit } from '$lib/stores/layout';
let offset = 0;
let showDelete = false;
let showDeleteAll = false;
let selectedSessionId: string = null;
- const limit = 5;
const request = sdkForProject.users.getSessions($page.params.user);
//TODO: replace session.expire with "last activity"
@@ -104,7 +104,7 @@
class="u-flex u-margin-block-start-32
u-main-space-between">
Total results: {response.total}
-
+
{/await}
diff --git a/src/routes/console/[project]/storage/index.svelte b/src/routes/console/[project]/storage/index.svelte
index 3c16cd351..d65192ec9 100644
--- a/src/routes/console/[project]/storage/index.svelte
+++ b/src/routes/console/[project]/storage/index.svelte
@@ -10,19 +10,19 @@
import { base } from '$app/paths';
import { bucketList } from './store';
import { tooltip } from '$lib/actions/tooltip';
+ import { pageLimit } from '$lib/stores/layout';
let showCreate = false;
let search = '';
let offset = 0;
- const limit = 5;
const project = $page.params.project;
const bucketCreated = async (event: CustomEvent) => {
showCreate = false;
await goto(`${base}/console/${project}/storage/bucket/${event.detail.$id}`);
};
- $: bucketList.load(search, limit, offset ?? 0);
+ $: bucketList.load(search, $pageLimit, offset ?? 0);
$: if (search) offset = 0;
@@ -97,7 +97,7 @@
Total results: {$bucketList.total}
-
+
{:else if search}
@@ -113,7 +113,7 @@
Total results: {$bucketList?.total}
-
+
{:else}
From 9e53cf29e7b7d309573d8170f2f06ed94df79def Mon Sep 17 00:00:00 2001
From: Arman
Date: Fri, 12 Aug 2022 15:44:10 +0200
Subject: [PATCH 047/118] initial commit
---
src/lib/layout/header.svelte | 2 +-
src/lib/layout/shell.svelte | 47 +++++++--
src/lib/stores/layout.ts | 13 ++-
src/routes/console/[project]/__layout.svelte | 10 +-
src/routes/console/[project]/store.ts | 4 +-
src/routes/console/__layout-intro.svelte | 38 ++++++-
src/routes/console/index@intro.svelte | 102 ++++++++++++-------
src/routes/console/members@intro.svelte | 5 +
src/routes/console/settings@intro.svelte | 5 +
src/routes/console/store.ts | 60 +++++++++++
10 files changed, 227 insertions(+), 59 deletions(-)
create mode 100644 src/routes/console/members@intro.svelte
create mode 100644 src/routes/console/settings@intro.svelte
create mode 100644 src/routes/console/store.ts
diff --git a/src/lib/layout/header.svelte b/src/lib/layout/header.svelte
index 9cdaaec94..eafe66f91 100644
--- a/src/lib/layout/header.svelte
+++ b/src/lib/layout/header.svelte
@@ -51,7 +51,7 @@
class:icon-cheveron-down={!showDropdown} />
- New organisation
+ New organization
Your Account
diff --git a/src/lib/layout/shell.svelte b/src/lib/layout/shell.svelte
index 97ca79d1d..c82713e93 100644
--- a/src/lib/layout/shell.svelte
+++ b/src/lib/layout/shell.svelte
@@ -1,18 +1,19 @@
diff --git a/src/routes/console/index@intro.svelte b/src/routes/console/index@intro.svelte
index f02af6248..5b115c3b9 100644
--- a/src/routes/console/index@intro.svelte
+++ b/src/routes/console/index@intro.svelte
@@ -1,67 +1,95 @@
Appwrite - Console
- Your Organizations
- (addOrganization = true)}>Add Organization
+
+
Projects
- {#await request}
-
- {:then organizations}
- {#each organizations as organization}
-
{organization.name}
-
- {#each organization.projects as project}
-
- {/each}
-
-
createProject(organization.$id)}>Create Project
- {/each}
- {/await}
+
{
+ showCreate = true;
+ }}>
+ Create project
+
+
+
+ {#if projects?.length}
+ 3 ? '22rem' : '25rem'};`}>
+ {#each projects as project}
+
+ XX apps
+
+ {project.name}
+
+ {#each project.platforms as platform}
+
+
+ {platform.type}
+ {/each}
+
+ {/each}
+ {#if projects.length % 2 !== 0}
+ (showCreate = true)}>
+
+
+
+
+
+
+
+ {/if}
+
+
+
+
Total results: {projects.length}
+
+
+ {/if}
diff --git a/src/routes/console/members@intro.svelte b/src/routes/console/members@intro.svelte
new file mode 100644
index 000000000..b5ead8b19
--- /dev/null
+++ b/src/routes/console/members@intro.svelte
@@ -0,0 +1,5 @@
+
+ Appwrite - Console
+
+
+Members
diff --git a/src/routes/console/settings@intro.svelte b/src/routes/console/settings@intro.svelte
new file mode 100644
index 000000000..423bdc9e5
--- /dev/null
+++ b/src/routes/console/settings@intro.svelte
@@ -0,0 +1,5 @@
+
+ Appwrite - Console
+
+
+settings
diff --git a/src/routes/console/store.ts b/src/routes/console/store.ts
new file mode 100644
index 000000000..5b90e4a26
--- /dev/null
+++ b/src/routes/console/store.ts
@@ -0,0 +1,60 @@
+import { sdkForConsole } from '$lib/stores/sdk';
+import type { Models } from '@aw-labs/appwrite-console';
+import { writable } from 'svelte/store';
+import { browser } from '$app/env';
+
+function createOrganizationList() {
+ const { subscribe, set } = writable(
+ browser ? JSON.parse(sessionStorage.getItem('organizationList')) : null
+ );
+
+ return {
+ subscribe,
+ set,
+ load: async () => {
+ const team = await sdkForConsole.teams.list();
+ set(team);
+ }
+ };
+}
+function createOrganization() {
+ const { subscribe, set } = writable(
+ browser ? JSON.parse(sessionStorage.getItem('organization')) : null
+ );
+
+ return {
+ subscribe,
+ set,
+ load: async (teamId: string) => {
+ const team = await sdkForConsole.teams.get(teamId);
+ set(team);
+ }
+ };
+}
+
+function createProjectList() {
+ const { subscribe, set } = writable(
+ browser ? JSON.parse(sessionStorage.getItem('projectList')) : null
+ );
+
+ return {
+ subscribe,
+ set,
+ load: async () => {
+ const projects = await sdkForConsole.projects.list();
+ set(projects);
+ }
+ };
+}
+
+export const organizationList = createOrganizationList();
+export const organization = createOrganization();
+export const projectList = createProjectList();
+
+if (browser) {
+ organizationList.subscribe((n) =>
+ sessionStorage?.setItem('organizationList', JSON.stringify(n ?? ''))
+ );
+ organization.subscribe((n) => sessionStorage?.setItem('organization', JSON.stringify(n ?? '')));
+ projectList.subscribe((n) => sessionStorage?.setItem('projectList', JSON.stringify(n ?? '')));
+}
From ad0c42a6ecc228198d8672b1f93da4fccabf4fcf Mon Sep 17 00:00:00 2001
From: Arman
Date: Fri, 12 Aug 2022 17:15:33 +0200
Subject: [PATCH 048/118] feat: members page
---
src/lib/layout/shell.svelte | 3 +-
src/routes/console/__layout-intro.svelte | 27 ++++--
src/routes/console/index@intro.svelte | 25 +++---
src/routes/console/members@intro.svelte | 100 ++++++++++++++++++++++-
src/routes/console/settings@intro.svelte | 4 -
src/routes/console/store.ts | 34 ++++++--
6 files changed, 155 insertions(+), 38 deletions(-)
diff --git a/src/lib/layout/shell.svelte b/src/lib/layout/shell.svelte
index c82713e93..308aaf688 100644
--- a/src/lib/layout/shell.svelte
+++ b/src/lib/layout/shell.svelte
@@ -4,6 +4,7 @@
import { Cover } from '.';
import { Copy, DropList, DropListItem } from '$lib/components';
import { Pill } from '$lib/elements';
+ import { organization } from '../../routes/console/store';
export let isOpen = false;
export let showSideNavigation = false;
@@ -90,7 +91,7 @@
class="button is-text u-padding-inline-0"
on:click={() => (showDropdown = !showDropdown)}>
- drop
+ {$organization.name}
-
-
-
-
-
-
-
+
+ Appwrite - Console
+
+
+{#if $organization}
+
+
+
+
+
+
+
+{/if}
diff --git a/src/routes/console/index@intro.svelte b/src/routes/console/index@intro.svelte
index 5b115c3b9..ff24b1d82 100644
--- a/src/routes/console/index@intro.svelte
+++ b/src/routes/console/index@intro.svelte
@@ -8,17 +8,13 @@
import type { Models } from '@aw-labs/appwrite-console';
import CreateOrganization from './_createOrganization.svelte';
import CreateProject from './_createProject.svelte';
- import { organizationList, organization, projectList } from './store';
+ import { organization, projectList } from './store';
import { onMount } from 'svelte';
let projects: Models.Project[] = [];
onMount(async () => {
- organizationList.load();
- if (!$organization) {
- organization.load($organizationList.teams[0].$id);
- }
- projectList.load();
+ await projectList.load();
projects = $projectList.projects.filter((a) => a.teamId === $organization.$id);
});
@@ -35,9 +31,6 @@
//TODO: fix technology icon display
-
- Appwrite - Console
-
Projects
@@ -56,7 +49,8 @@
style={`--grid-gap:2rem; --grid-item-size:${projects.length > 3 ? '22rem' : '25rem'};`}>
{#each projects as project}
- XX apps
+ {project?.platforms?.length ?? 0} apps
{project.name}
@@ -89,7 +83,10 @@
-
+
+{#if projects?.length}
+
+{/if}
diff --git a/src/routes/console/members@intro.svelte b/src/routes/console/members@intro.svelte
index b5ead8b19..5409ba64a 100644
--- a/src/routes/console/members@intro.svelte
+++ b/src/routes/console/members@intro.svelte
@@ -1,5 +1,97 @@
-
- Appwrite - Console
-
+
+
+
+ {#if $memberList?.total}
+
+
Members
+
+ {
+ showCreate = true;
+ }}>
+
+ Create project
+
+
+
+
+
+ Name
+ Email
+ Role
+
+
+
+ {#each $memberList.memberships as member}
+
+
+
+
+
{member.userName ? member.userName : 'n/a'}
+ {#if member.invited && !member.joined}
+
Pending
+ {/if}
+
+
+ {member.userEmail}
+
+ {#if member.invited && !member.joined}
+ Resend
+ {:else}
+ {member.roles}
+ {/if}
+
+
+
+ {
+ // selectedMembership = membership;
+ showDelete = true;
+ }}>
+
+
+
+
+ {/each}
+
+
+
+
Total results: {$memberList.total}
+
+
+ {/if}
+
diff --git a/src/routes/console/settings@intro.svelte b/src/routes/console/settings@intro.svelte
index 423bdc9e5..a01c11a41 100644
--- a/src/routes/console/settings@intro.svelte
+++ b/src/routes/console/settings@intro.svelte
@@ -1,5 +1 @@
-
- Appwrite - Console
-
-
settings
diff --git a/src/routes/console/store.ts b/src/routes/console/store.ts
index 5b90e4a26..1afbbef00 100644
--- a/src/routes/console/store.ts
+++ b/src/routes/console/store.ts
@@ -12,8 +12,8 @@ function createOrganizationList() {
subscribe,
set,
load: async () => {
- const team = await sdkForConsole.teams.list();
- set(team);
+ const response = await sdkForConsole.teams.list();
+ set(response);
}
};
}
@@ -26,8 +26,8 @@ function createOrganization() {
subscribe,
set,
load: async (teamId: string) => {
- const team = await sdkForConsole.teams.get(teamId);
- set(team);
+ const response = await sdkForConsole.teams.get(teamId);
+ set(response);
}
};
}
@@ -41,8 +41,28 @@ function createProjectList() {
subscribe,
set,
load: async () => {
- const projects = await sdkForConsole.projects.list();
- set(projects);
+ const response = await sdkForConsole.projects.list();
+ set(response);
+ }
+ };
+}
+
+function createMemberList() {
+ const { subscribe, set } = writable(
+ browser ? JSON.parse(sessionStorage.getItem('memberList')) : null
+ );
+
+ return {
+ subscribe,
+ set,
+ load: async (teamId: string, search: string, limit: number, offset: number) => {
+ const response = await sdkForConsole.teams.getMemberships(
+ teamId,
+ search,
+ limit,
+ offset
+ );
+ set(response);
}
};
}
@@ -50,6 +70,7 @@ function createProjectList() {
export const organizationList = createOrganizationList();
export const organization = createOrganization();
export const projectList = createProjectList();
+export const memberList = createMemberList();
if (browser) {
organizationList.subscribe((n) =>
@@ -57,4 +78,5 @@ if (browser) {
);
organization.subscribe((n) => sessionStorage?.setItem('organization', JSON.stringify(n ?? '')));
projectList.subscribe((n) => sessionStorage?.setItem('projectList', JSON.stringify(n ?? '')));
+ memberList.subscribe((n) => sessionStorage?.setItem('memberList', JSON.stringify(n ?? '')));
}
From 37f244a8586ae2a55fa20e28a3555d25bd034267 Mon Sep 17 00:00:00 2001
From: Torsten Dittmann
Date: Tue, 16 Aug 2022 17:10:36 +0200
Subject: [PATCH 049/118] fix by torsten
---
src/lib/components/InnerModal.svelte | 2 +-
src/lib/components/alert.svelte | 16 ++++----
src/lib/components/modal.svelte | 13 +++---
src/lib/elements/forms/helper.svelte | 26 +++++++-----
src/lib/elements/forms/inputCheckbox.svelte | 26 ++++++------
src/lib/elements/forms/inputCustomId.svelte | 2 +
src/lib/elements/forms/inputEmail.svelte | 25 ++++++-----
src/lib/elements/forms/inputFile.svelte | 2 +-
src/lib/elements/forms/inputNumber.svelte | 20 ++++-----
src/lib/elements/forms/inputPassword.svelte | 41 +++++++++----------
src/lib/elements/forms/inputPhone.svelte | 33 +++++++++------
src/lib/elements/forms/inputRadio.svelte | 23 +++++------
src/lib/elements/forms/inputSearch.svelte | 11 ++---
src/lib/elements/forms/inputSelect.svelte | 24 +++++------
src/lib/elements/forms/inputSwitch.svelte | 20 ++++-----
src/lib/elements/forms/inputTags.svelte | 27 ++++++------
src/lib/elements/forms/inputText.svelte | 22 +++++-----
src/lib/elements/forms/inputTextarea.svelte | 20 ++++-----
src/lib/layout/notification.svelte | 28 ++++++-------
src/lib/layout/shell.svelte | 10 ++---
.../console/[project]/storage/_create.svelte | 29 +++++++------
.../storage/bucket/[bucket]/_create.svelte | 16 ++++----
.../bucket/[bucket]/_deleteBucket.svelte | 2 +-
.../bucket/[bucket]/_deleteFile.svelte | 2 +-
.../[bucket]/file/[file]/_deleteFile.svelte | 2 +-
.../[project]/users/_appleOAuth.svelte | 13 +++---
.../[project]/users/_auth0OAuth.svelte | 8 ++--
.../[project]/users/_createTeam.svelte | 15 +++----
.../[project]/users/_createUser.svelte | 28 +++++++------
.../console/[project]/users/_mainOAuth.svelte | 10 +++--
.../[project]/users/_microsoftOAuth.svelte | 14 ++++---
.../console/[project]/users/_oktaOAuth.svelte | 8 ++--
.../teams/[team]/_createMembership.svelte | 10 ++---
.../teams/[team]/_deleteMembership.svelte | 3 +-
.../users/teams/[team]/_deleteTeam.svelte | 2 +-
.../user/[user]/_deleteAllMemberships.svelte | 2 +-
.../user/[user]/_deleteAllSessions.svelte | 3 +-
.../user/[user]/_deleteMembership.svelte | 2 +-
.../users/user/[user]/_deleteSession.svelte | 2 +-
.../users/user/[user]/_deleteUser.svelte | 2 +-
.../[project]/users/user/[user]/index.svelte | 33 +++++++++------
tests/unit/elements/inputPhone.test.ts | 1 -
vite.config.js | 2 +-
43 files changed, 302 insertions(+), 298 deletions(-)
diff --git a/src/lib/components/InnerModal.svelte b/src/lib/components/InnerModal.svelte
index 5b59d4f1c..384880389 100644
--- a/src/lib/components/InnerModal.svelte
+++ b/src/lib/components/InnerModal.svelte
@@ -17,7 +17,7 @@
-
+
diff --git a/src/lib/components/alert.svelte b/src/lib/components/alert.svelte
index f83488a7f..bf06d2c28 100644
--- a/src/lib/components/alert.svelte
+++ b/src/lib/components/alert.svelte
@@ -3,16 +3,9 @@
import type { Buttons } from '../stores/notifications';
export let dismissible = false;
- export let type: '' | 'info' | 'success' | 'warning' | 'error' = 'info';
+ export let type: 'info' | 'success' | 'warning' | 'error' = 'info';
export let buttons: Buttons[] = [];
- let icon = {
- success: 'icon-check-circle',
- warning: 'icon-exclamation',
- error: 'icon-exclamation-circle',
- info: 'icon-info'
- };
-
const dispatch = createEventDispatcher();
@@ -31,7 +24,12 @@
{/if}
-
+
{#if $$slots.title}
diff --git a/src/lib/components/modal.svelte b/src/lib/components/modal.svelte
index 3a1263411..137463f0f 100644
--- a/src/lib/components/modal.svelte
+++ b/src/lib/components/modal.svelte
@@ -1,5 +1,6 @@
-
+
{#if type}
-
+
{/if}
diff --git a/src/lib/elements/forms/inputCheckbox.svelte b/src/lib/elements/forms/inputCheckbox.svelte
index 6e9e3c75a..cecc2a441 100644
--- a/src/lib/elements/forms/inputCheckbox.svelte
+++ b/src/lib/elements/forms/inputCheckbox.svelte
@@ -7,23 +7,21 @@
export let value = false;
export let required = false;
export let disabled = false;
- export let errorMessage = 'An error occurred';
- export let errorType: false | 'success' | 'warning' | 'error' = 'warning';
- export let showHelper = false;
let element: HTMLInputElement;
+ let error: string;
const handleInvalid = (event: Event) => {
- errorMessage = element.validationMessage;
- if (element.validity.valueMissing) {
- errorMessage = 'This field is required';
- }
event.preventDefault();
- showHelper = true;
+ if (element.validity.valueMissing) {
+ error = 'This field is required';
+ return;
+ }
+ error = element.validationMessage;
};
$: if (value) {
- showHelper = false;
+ error = null;
}
@@ -31,15 +29,15 @@
{label}
+ bind:this={element}
+ bind:checked={value}
+ on:invalid={handleInvalid} />
- {#if showHelper}
- {errorMessage}
+ {#if error}
+ {error}
{/if}
diff --git a/src/lib/elements/forms/inputCustomId.svelte b/src/lib/elements/forms/inputCustomId.svelte
index 2d30b8da4..09d43093e 100644
--- a/src/lib/elements/forms/inputCustomId.svelte
+++ b/src/lib/elements/forms/inputCustomId.svelte
@@ -7,9 +7,11 @@
export let placeholder = '';
export let required = false;
export let autofocus = false;
+
let element: HTMLInputElement;
let unique = true;
let bench = '';
+
const toggle = async () => {
unique = !unique;
if (unique) {
diff --git a/src/lib/elements/forms/inputEmail.svelte b/src/lib/elements/forms/inputEmail.svelte
index 9b07303d7..1358a5202 100644
--- a/src/lib/elements/forms/inputEmail.svelte
+++ b/src/lib/elements/forms/inputEmail.svelte
@@ -11,11 +11,9 @@
export let disabled = false;
export let autofocus = false;
export let autocomplete = false;
- export let errorMessage = 'An error occurred';
- export let errorType: false | 'success' | 'warning' | 'error' = 'warning';
- export let showHelper = false;
let element: HTMLInputElement;
+ let error: string;
onMount(() => {
if (element && autofocus) {
@@ -25,18 +23,19 @@
const handleInvalid = (event: Event) => {
event.preventDefault();
- errorMessage = element.validationMessage;
if (element.validity.typeMismatch) {
- errorMessage = 'Your email should be formatted as: name@example.com';
+ error = 'Your email should be formatted as: name@example.com';
+ return;
}
if (element.validity.valueMissing) {
- errorMessage = 'This field is required';
+ error = 'This field is required';
+ return;
}
- showHelper = true;
+ error = element.validationMessage;
};
$: if (value) {
- showHelper = false;
+ error = null;
}
@@ -44,18 +43,18 @@
{label}
+ bind:this={element}
+ on:invalid={handleInvalid} />
- {#if showHelper}
- {errorMessage}
+ {#if error}
+ {error}
{/if}
diff --git a/src/lib/elements/forms/inputFile.svelte b/src/lib/elements/forms/inputFile.svelte
index 545523e77..bb1431cd4 100644
--- a/src/lib/elements/forms/inputFile.svelte
+++ b/src/lib/elements/forms/inputFile.svelte
@@ -12,6 +12,6 @@
{label}
-
+
diff --git a/src/lib/elements/forms/inputNumber.svelte b/src/lib/elements/forms/inputNumber.svelte
index acf1453e6..1aab304d5 100644
--- a/src/lib/elements/forms/inputNumber.svelte
+++ b/src/lib/elements/forms/inputNumber.svelte
@@ -12,11 +12,9 @@
export let autofocus = false;
export let maxlength: number = null;
export let minlength: number = null;
- export let errorMessage = 'An error occurred';
- export let errorType: false | 'success' | 'warning' | 'error' = 'warning';
- export let showHelper = false;
let element: HTMLInputElement;
+ let error: string;
onMount(() => {
if (element && autofocus) {
@@ -27,16 +25,16 @@
const handleInvalid = (event: Event) => {
event.preventDefault();
- errorMessage = element.validationMessage;
if (element.validity.valueMissing) {
- errorMessage = 'This field is required';
+ error = 'This field is required';
+ return;
}
- showHelper = true;
+ error = element.validationMessage;
};
$: if (value) {
- showHelper = false;
+ error = null;
}
@@ -44,7 +42,6 @@
{label}
+ bind:this={element}
+ on:invalid={handleInvalid} />
- {#if showHelper}
- {errorMessage}
+ {#if error}
+ {error}
{/if}
diff --git a/src/lib/elements/forms/inputPassword.svelte b/src/lib/elements/forms/inputPassword.svelte
index 452834751..d1e0aa1fd 100644
--- a/src/lib/elements/forms/inputPassword.svelte
+++ b/src/lib/elements/forms/inputPassword.svelte
@@ -13,13 +13,11 @@
export let meter = false;
export let autocomplete = false;
export let showPasswordButton = false;
- export let errorMessage = 'An error occurred';
- export let errorType: false | 'success' | 'warning' | 'error' = 'warning';
- export let showHelper = false;
export let minlength = 8;
export let maxlength: number = null;
let element: HTMLInputElement;
+ let error: string;
let showInPlainText = false;
onMount(() => {
@@ -30,21 +28,22 @@
const handleInvalid = (event: Event) => {
event.preventDefault();
- errorMessage = element.validationMessage;
- console.log(element.validity);
+
if (element.validity.valueMissing) {
- errorMessage = 'This field is required';
+ error = 'This field is required';
+ return;
}
if (element.validity.tooShort) {
- errorMessage = 'Password should contain at least 8 characters';
+ error = 'Password should contain at least 8 characters';
+ return;
}
- showHelper = true;
+ error = element.validationMessage;
};
- $: if (value) {
- showHelper = false;
- }
$: strength = value ? value.length * 10 : 0;
+ $: if (value) {
+ error = null;
+ }
@@ -52,32 +51,32 @@
{#if showInPlainText}
+ bind:this={element}
+ on:invalid={handleInvalid} />
{:else}
+ bind:this={element}
+ on:invalid={handleInvalid} />
{/if}
{#if meter}
@@ -104,7 +103,7 @@
{/if}
- {#if showHelper}
- {errorMessage}
+ {#if error}
+ {error}
{/if}
diff --git a/src/lib/elements/forms/inputPhone.svelte b/src/lib/elements/forms/inputPhone.svelte
index 5fa512e5b..47e331e79 100644
--- a/src/lib/elements/forms/inputPhone.svelte
+++ b/src/lib/elements/forms/inputPhone.svelte
@@ -12,11 +12,11 @@
export let autofocus = false;
export let autocomplete = false;
export let maxlength: number = null;
- export let errorMessage = 'Allowed characters: leading ‘+’ and maximum of 15 digits';
- export let errorType: false | 'success' | 'warning' | 'error' = 'warning';
- export let showHelper = false;
+
+ const pattern = String.raw`^\+?[1-9]\d{1,14}$`;
let element: HTMLInputElement;
+ let error: string;
onMount(() => {
if (element && autofocus) {
@@ -26,15 +26,21 @@
const handleInvalid = (event: Event) => {
event.preventDefault();
- errorMessage = element.validationMessage;
- if (element.validity.valueMissing) {
- errorMessage = 'This field is required';
+
+ if (element.validity.patternMismatch) {
+ error = "Allowed characters: leading '+' and maximum of 15 digits";
+ return;
}
- showHelper = true;
+ if (element.validity.valueMissing) {
+ error = 'This field is required';
+ return;
+ }
+
+ error = element.validationMessage;
};
$: if (value) {
- showHelper = false;
+ error = null;
}
@@ -42,19 +48,20 @@
{label}
+ bind:this={element}
+ on:invalid={handleInvalid} />
- {#if showHelper}
- {errorMessage}
+ {#if error}
+ {error}
{/if}
diff --git a/src/lib/elements/forms/inputRadio.svelte b/src/lib/elements/forms/inputRadio.svelte
index 681885ac1..ac1734e0d 100644
--- a/src/lib/elements/forms/inputRadio.svelte
+++ b/src/lib/elements/forms/inputRadio.svelte
@@ -9,41 +9,40 @@
export let name: string;
export let required = false;
export let disabled = false;
- export let errorMessage = 'An error occurred';
- export let errorType: false | 'success' | 'warning' | 'error' = 'warning';
- export let showHelper = false;
let element: HTMLInputElement;
+ let error: string;
const handleInvalid = (event: Event) => {
event.preventDefault();
- errorMessage = element.validationMessage;
+
if (element.validity.valueMissing) {
- errorMessage = 'This field is required';
+ error = 'This field is required';
+ return;
}
- showHelper = true;
+ error = element.validationMessage;
};
$: if (value) {
- showHelper = false;
+ error = null;
}
+ bind:group
+ bind:this={element}
+ on:invalid={handleInvalid} />
{label}
- {#if showHelper}
- {errorMessage}
+ {#if error}
+ {error}
{/if}
diff --git a/src/lib/elements/forms/inputSearch.svelte b/src/lib/elements/forms/inputSearch.svelte
index 5b3651c40..e1806d3d7 100644
--- a/src/lib/elements/forms/inputSearch.svelte
+++ b/src/lib/elements/forms/inputSearch.svelte
@@ -40,16 +40,11 @@
{required}
type="search"
class="input-text"
- on:input={valueChange}
- bind:this={element} />
+ bind:this={element}
+ on:input={valueChange} />
{#if isWithEndButton && value}
- {
- value = '';
- }}>
+ (value = '')}>
{/if}
diff --git a/src/lib/elements/forms/inputSelect.svelte b/src/lib/elements/forms/inputSelect.svelte
index 6129cb11e..ef96176c7 100644
--- a/src/lib/elements/forms/inputSelect.svelte
+++ b/src/lib/elements/forms/inputSelect.svelte
@@ -11,24 +11,22 @@
value: string;
label: string;
}[];
- export let errorMessage = 'An error occurred';
- export let errorType: false | 'success' | 'warning' | 'error' = 'warning';
- export let showHelper = false;
let element: HTMLSelectElement;
+ let error: string;
const handleInvalid = (event: Event) => {
event.preventDefault();
- errorMessage = element.validationMessage;
if (element.validity.valueMissing) {
- errorMessage = 'This field is required';
+ error = 'This field is required';
+ return;
}
- showHelper = true;
+ error = element.validationMessage;
};
$: if (value) {
- showHelper = false;
+ error = null;
}
@@ -36,12 +34,12 @@
{label}
+ {disabled}
+ bind:this={element}
+ bind:value
+ on:invalid={handleInvalid}>
{#each options as option}
{option.label}
@@ -50,7 +48,7 @@
- {#if showHelper}
- {errorMessage}
+ {#if error}
+ {error}
{/if}
diff --git a/src/lib/elements/forms/inputSwitch.svelte b/src/lib/elements/forms/inputSwitch.svelte
index 1e395cbfb..a4891363e 100644
--- a/src/lib/elements/forms/inputSwitch.svelte
+++ b/src/lib/elements/forms/inputSwitch.svelte
@@ -6,24 +6,22 @@
export let value = false;
export let required = false;
export let disabled = false;
- export let errorMessage = 'An error occurred';
- export let errorType: false | 'success' | 'warning' | 'error' = 'warning';
- export let showHelper = false;
let element: HTMLInputElement;
+ let error: string;
const handleInvalid = (event: Event) => {
event.preventDefault();
- errorMessage = element.validationMessage;
if (element.validity.valueMissing) {
- errorMessage = 'This field is required';
+ error = 'This field is required';
+ return;
}
- showHelper = true;
+ error = element.validationMessage;
};
$: if (value) {
- showHelper = false;
+ error = null;
}
@@ -31,7 +29,6 @@
+ on:change
+ on:invalid={handleInvalid} />
- {#if showHelper}
- {errorMessage}
+ {#if error}
+ {error}
{/if}
diff --git a/src/lib/elements/forms/inputTags.svelte b/src/lib/elements/forms/inputTags.svelte
index a1d4e41e3..0ad75a294 100644
--- a/src/lib/elements/forms/inputTags.svelte
+++ b/src/lib/elements/forms/inputTags.svelte
@@ -8,12 +8,10 @@
export let tags: string[] = [];
export let placeholder = '';
export let autofocus = false;
- export let errorMessage = 'An error occurred';
- export let errorType: false | 'success' | 'warning' | 'error' = 'warning';
- export let showHelper = false;
let value = '';
let element: HTMLInputElement;
+ let error: string;
onMount(() => {
if (element && autofocus) {
@@ -53,15 +51,16 @@
const handleInvalid = (event: Event) => {
event.preventDefault();
- errorMessage = element.validationMessage;
+
if (element.validity.valueMissing) {
- errorMessage = 'This field is required';
+ error = 'This field is required';
+ return;
}
- showHelper = true;
+ error = element.validationMessage;
};
$: if (value) {
- showHelper = false;
+ error = null;
}
@@ -88,18 +87,18 @@
+ on:invalid={handleInvalid} />
- {#if showHelper}
- {errorMessage}
+ {#if error}
+ {error}
{/if}
diff --git a/src/lib/elements/forms/inputText.svelte b/src/lib/elements/forms/inputText.svelte
index 5235c215c..013caca3f 100644
--- a/src/lib/elements/forms/inputText.svelte
+++ b/src/lib/elements/forms/inputText.svelte
@@ -12,11 +12,9 @@
export let autofocus = false;
export let autocomplete = false;
export let maxlength: number = null;
- export let errorMessage = 'An error occurred';
- export let errorType: false | 'success' | 'warning' | 'error' = 'warning';
- export let showHelper = false;
let element: HTMLInputElement;
+ let error: string;
onMount(() => {
if (element && autofocus) {
@@ -26,15 +24,17 @@
const handleInvalid = (event: Event) => {
event.preventDefault();
- errorMessage = element.validationMessage;
+
if (element.validity.valueMissing) {
- errorMessage = 'This field is required';
+ error = 'This field is required';
+ return;
}
- showHelper = true;
+
+ error = element.validationMessage;
};
$: if (value) {
- showHelper = false;
+ error = null;
}
@@ -42,7 +42,6 @@
{label}
+ bind:this={element}
+ on:invalid={handleInvalid} />
- {#if showHelper}
- {errorMessage}
+ {#if error}
+ {error}
{/if}
diff --git a/src/lib/elements/forms/inputTextarea.svelte b/src/lib/elements/forms/inputTextarea.svelte
index 6d02c9675..5736943e7 100644
--- a/src/lib/elements/forms/inputTextarea.svelte
+++ b/src/lib/elements/forms/inputTextarea.svelte
@@ -11,11 +11,9 @@
export let disabled = false;
export let autofocus = false;
export let maxlength: number = null;
- export let errorMessage = 'An error occurred';
- export let errorType: false | 'success' | 'warning' | 'error' = 'warning';
- export let showHelper = false;
let element: HTMLTextAreaElement;
+ let error: string;
onMount(() => {
if (element && autofocus) {
@@ -25,15 +23,15 @@
const handleInvalid = (event: Event) => {
event.preventDefault();
- errorMessage = element.validationMessage;
if (element.validity.valueMissing) {
- errorMessage = 'This field is required';
+ error = 'This field is required';
+ return;
}
- showHelper = true;
+ error = element.validationMessage;
};
$: if (value) {
- showHelper = false;
+ error = null;
}
@@ -41,7 +39,6 @@
{label}
+ bind:this={element}
+ on:invalid={handleInvalid} />
- {#if showHelper}
- {errorMessage}
+ {#if error}
+ {error}
{/if}
diff --git a/src/lib/layout/notification.svelte b/src/lib/layout/notification.svelte
index a5f8cbe35..0cca8694d 100644
--- a/src/lib/layout/notification.svelte
+++ b/src/lib/layout/notification.svelte
@@ -6,29 +6,25 @@
export let title: Notification['title'];
export let buttons: Notification['buttons'];
- let icon = {
- success: 'icon-check-circle',
- warning: 'icon-exclamation',
- error: 'icon-exclamation-circle',
- info: 'icon-info'
- };
-
- let typeClass = {
- success: 'is-success',
- warning: 'is-warning',
- error: 'is-danger',
- info: 'is-info'
- };
-
const dispatch = createEventDispatcher();
-
+
dispatch('dismiss')}>
-
+
{#if title}
diff --git a/src/lib/layout/shell.svelte b/src/lib/layout/shell.svelte
index 97ca79d1d..da74cd3eb 100644
--- a/src/lib/layout/shell.svelte
+++ b/src/lib/layout/shell.svelte
@@ -68,7 +68,7 @@
class="icon-button is-no-desktop"
aria-label="Open Menu"
on:click={() => (isOpen = !isOpen)}>
-
+
@@ -88,10 +88,10 @@
{#if $copyData?.value}
- {$copyData.text}
+
+
+ {$copyData.text}
+
{/if}
diff --git a/src/routes/console/[project]/storage/_create.svelte b/src/routes/console/[project]/storage/_create.svelte
index 801526f5c..f4b926da8 100644
--- a/src/routes/console/[project]/storage/_create.svelte
+++ b/src/routes/console/[project]/storage/_create.svelte
@@ -12,7 +12,7 @@
let name = '';
let id: string = null;
let showDropdown = false;
- let modalError: string;
+ let error: string;
const create = async () => {
try {
@@ -24,8 +24,8 @@
name = null;
showCreate = false;
dispatch('created', bucket);
- } catch (error) {
- modalError = error.message;
+ } catch ({ message }) {
+ error = message;
}
};
@@ -34,12 +34,12 @@
}
$: if (!showCreate) {
showDropdown = false;
- modalError = null;
+ error = null;
}
-
+
Create Bucket
- (showDropdown = !showDropdown)}
- >
- Bucket ID
-
+ (showDropdown = !showDropdown)}>
+
+ Bucket ID
+
{:else}
Bucket ID
- Enter a custom bucket ID. Leave blank for a randomly generated one.
+
+ Enter a custom bucket ID. Leave blank for a randomly generated one.
+
- Allowed characters: alphanumeric, hyphen, non-leading
- underscore, period
+
+ Allowed characters: alphanumeric, hyphen, non-leading
+ underscore, period
+
diff --git a/src/routes/console/[project]/storage/bucket/[bucket]/_create.svelte b/src/routes/console/[project]/storage/bucket/[bucket]/_create.svelte
index 30f6aa42c..38317a0af 100644
--- a/src/routes/console/[project]/storage/bucket/[bucket]/_create.svelte
+++ b/src/routes/console/[project]/storage/bucket/[bucket]/_create.svelte
@@ -19,8 +19,8 @@
let read: string[] = [];
let write: string[] = [];
let id: string = null;
+ let error: string;
let showDropdown = false;
- let modalError: string;
const create = async () => {
try {
@@ -36,8 +36,8 @@
showDropdown = false;
uploader.addFile(file);
dispatch('created');
- } catch (error) {
- modalError = error.message;
+ } catch ({ message }) {
+ error = message;
}
};
@@ -68,12 +68,10 @@
}
$: if (!showCreate) {
- id = null;
+ id = files = error = null;
list = new DataTransfer();
- files = null;
read = [];
write = [];
- modalError = null;
}
$: if (!showDropdown) {
@@ -84,7 +82,7 @@
-
+
Upload File
@@ -135,7 +133,9 @@
{:else}
File ID
- Enter a custom file ID. Leave blank for a randomly generated one.
+
+ Enter a custom file ID. Leave blank for a randomly generated one.
+
diff --git a/src/routes/console/[project]/users/_mainOAuth.svelte b/src/routes/console/[project]/users/_mainOAuth.svelte
index 7429b7385..c760a1fdb 100644
--- a/src/routes/console/[project]/users/_mainOAuth.svelte
+++ b/src/routes/console/[project]/users/_mainOAuth.svelte
@@ -14,8 +14,10 @@
export let showModal = false;
export let provider: Provider;
+
const projectId = $page.params.project;
- let modalError: string;
+
+ let error: string;
const update = async () => {
try {
@@ -26,14 +28,14 @@
provider.secret
);
showModal = false;
- } catch (error) {
- modalError = error.message;
+ } catch ({ message }) {
+ error = message;
}
};
-
+
{provider.name} OAuth2 Settings
diff --git a/src/routes/console/[project]/users/_microsoftOAuth.svelte b/src/routes/console/[project]/users/_microsoftOAuth.svelte
index 73e1ae506..d1e0a2938 100644
--- a/src/routes/console/[project]/users/_microsoftOAuth.svelte
+++ b/src/routes/console/[project]/users/_microsoftOAuth.svelte
@@ -14,8 +14,9 @@
export let showModal = false;
export let provider: Provider;
+
let { clientSecret, tenantID } = JSON.parse(provider.secret);
- let modalError: string;
+ let error: string;
const projectId = $page.params.project;
@@ -30,21 +31,22 @@
);
showModal = false;
- } catch (error) {
- modalError = error.message;
+ } catch ({ message }) {
+ error = message;
}
};
-
+
{provider.name} OAuth2 Settings
To use {provider.name} authentication in your application, first fill in this form. For
more info you can
- visit the docs.
+
+ visit the docs.
+
-
+
{provider.name} OAuth2 Settings
diff --git a/src/routes/console/[project]/users/teams/[team]/_createMembership.svelte b/src/routes/console/[project]/users/teams/[team]/_createMembership.svelte
index 53df2076f..d128d7b22 100644
--- a/src/routes/console/[project]/users/teams/[team]/_createMembership.svelte
+++ b/src/routes/console/[project]/users/teams/[team]/_createMembership.svelte
@@ -11,8 +11,8 @@
const dispatch = createEventDispatcher();
- let name: string, email: string, roles: [];
- let modalError: string;
+ let name: string, email: string, roles: string[];
+ let error: string;
const create = async () => {
const url = `${$page.url.origin}/console/${$page.params.project}/users/teams/${$page.params.team}/members`;
@@ -33,14 +33,14 @@
roles = [];
showCreate = false;
dispatch('created', user);
- } catch (error) {
- modalError = error.message;
+ } catch ({ message }) {
+ error = message;
}
};
-
+
Create Membership
-
+
Delete Member
-
Are you sure you want to delete {selectedMembership.userName} from '{selectedMembership.teamName}'?
diff --git a/src/routes/console/[project]/users/teams/[team]/_deleteTeam.svelte b/src/routes/console/[project]/users/teams/[team]/_deleteTeam.svelte
index 1b1a18398..dacd5e9d2 100644
--- a/src/routes/console/[project]/users/teams/[team]/_deleteTeam.svelte
+++ b/src/routes/console/[project]/users/teams/[team]/_deleteTeam.svelte
@@ -26,7 +26,7 @@
-
+
Delete Team
diff --git a/src/routes/console/[project]/users/user/[user]/_deleteAllMemberships.svelte b/src/routes/console/[project]/users/user/[user]/_deleteAllMemberships.svelte
index f5c76479c..da8a539c3 100644
--- a/src/routes/console/[project]/users/user/[user]/_deleteAllMemberships.svelte
+++ b/src/routes/console/[project]/users/user/[user]/_deleteAllMemberships.svelte
@@ -25,7 +25,7 @@
-
+
Delete All Memberships
diff --git a/src/routes/console/[project]/users/user/[user]/_deleteAllSessions.svelte b/src/routes/console/[project]/users/user/[user]/_deleteAllSessions.svelte
index 8905281b6..13ec19bad 100644
--- a/src/routes/console/[project]/users/user/[user]/_deleteAllSessions.svelte
+++ b/src/routes/console/[project]/users/user/[user]/_deleteAllSessions.svelte
@@ -26,9 +26,8 @@
-
+
Delete All Sessions
-
Are you sure you want to delete all of {$user.name}'s sessions?
diff --git a/src/routes/console/[project]/users/user/[user]/_deleteMembership.svelte b/src/routes/console/[project]/users/user/[user]/_deleteMembership.svelte
index 4d5cf77f8..30e5f4a8b 100644
--- a/src/routes/console/[project]/users/user/[user]/_deleteMembership.svelte
+++ b/src/routes/console/[project]/users/user/[user]/_deleteMembership.svelte
@@ -35,7 +35,7 @@
-
+
Delete Member
Are you sure you want to delete {selectedMembership.userName} from '{selectedMembership.teamName}'?
diff --git a/src/routes/console/[project]/users/user/[user]/_deleteSession.svelte b/src/routes/console/[project]/users/user/[user]/_deleteSession.svelte
index ee2ca5781..b447e8f90 100644
--- a/src/routes/console/[project]/users/user/[user]/_deleteSession.svelte
+++ b/src/routes/console/[project]/users/user/[user]/_deleteSession.svelte
@@ -26,7 +26,7 @@
-
+
Delete Sessions
Are you sure you want to delete this session?
diff --git a/src/routes/console/[project]/users/user/[user]/_deleteUser.svelte b/src/routes/console/[project]/users/user/[user]/_deleteUser.svelte
index 2b2d31892..ca9482f6f 100644
--- a/src/routes/console/[project]/users/user/[user]/_deleteUser.svelte
+++ b/src/routes/console/[project]/users/user/[user]/_deleteUser.svelte
@@ -30,7 +30,7 @@
-
+
Delete User
Are you sure you want to delete {$user.name} from '{$project.name}'?
diff --git a/src/routes/console/[project]/users/user/[user]/index.svelte b/src/routes/console/[project]/users/user/[user]/index.svelte
index 2d685b872..0278da85f 100644
--- a/src/routes/console/[project]/users/user/[user]/index.svelte
+++ b/src/routes/console/[project]/users/user/[user]/index.svelte
@@ -228,7 +228,8 @@
text={$user.status}
secondary={!$user.status}
on:click={() => updateStatus()}
- >{$user.status ? 'Block account' : 'Unblock account'}
+ >{$user.status ? 'Block account' : 'Unblock account'}
+
{#if $user.status}
{#if $user.phone && $user.email}
- updateVerificationEmail()}
- >{$user.emailVerification ? 'Unverify' : 'Verify'} email
+ updateVerificationEmail()}>
+ {$user.emailVerification ? 'Unverify' : 'Verify'} email
+
updateVerificationPhone()}>
- {$user.phoneVerification ? 'Unverify' : 'Verify'} phone
+ {$user.phoneVerification ? 'Unverify' : 'Verify'} phone
+
{:else if !$user.phone}
@@ -300,8 +305,9 @@
- Update
+
+ Update
+
@@ -321,8 +327,9 @@
- Update
+
+ Update
+
@@ -334,7 +341,7 @@
- Enter a new password. A password must contain at least 8 characters.
+ Enter a new password. A password must contain at least 8 characters.
- Max file size: {bytesToSize($bucket.maximumFileSize)}
+ Max file size: {calculateSize($bucket.maximumFileSize)}
{#if !showDropdown}
diff --git a/src/routes/console/[project]/storage/bucket/[bucket]/file/[file]/index.svelte b/src/routes/console/[project]/storage/bucket/[bucket]/file/[file]/index.svelte
index d8dce4d29..95b977653 100644
--- a/src/routes/console/[project]/storage/bucket/[bucket]/file/[file]/index.svelte
+++ b/src/routes/console/[project]/storage/bucket/[bucket]/file/[file]/index.svelte
@@ -7,7 +7,7 @@
import { toLocaleDate, toLocaleDateTime } from '$lib/helpers/date';
import { sdkForProject } from '$lib/stores/sdk';
import { addNotification } from '$lib/stores/notifications';
- import { bytesToSize } from '$lib/helpers/sizeConvertion';
+ import { calculateSize } from '$lib/helpers/sizeConvertion';
import Delete from './_deleteFile.svelte';
import { page } from '$app/stores';
import { onMount } from 'svelte';
@@ -101,7 +101,7 @@
MIME Type: {$file.mimeType}
-
Size: {bytesToSize($file.sizeOriginal)}
+
Size: {calculateSize($file.sizeOriginal)}
Created: {toLocaleDate($file.$createdAt)}
Last Updated: {toLocaleDate($file.$updatedAt)}
diff --git a/src/routes/console/[project]/storage/bucket/[bucket]/index.svelte b/src/routes/console/[project]/storage/bucket/[bucket]/index.svelte
index 3d8647b4e..6e248005e 100644
--- a/src/routes/console/[project]/storage/bucket/[bucket]/index.svelte
+++ b/src/routes/console/[project]/storage/bucket/[bucket]/index.svelte
@@ -17,7 +17,7 @@
TableCell
} from '$lib/elements/table';
import { toLocaleDate } from '$lib/helpers/date';
- import { bytesToSize } from '$lib/helpers/sizeConvertion';
+ import { calculateSize } from '$lib/helpers/sizeConvertion';
import { Container } from '$lib/layout';
import { base } from '$app/paths';
import { files } from './store';
@@ -97,7 +97,7 @@
{file.mimeType}
{bytesToSize(file.sizeOriginal)}
+ >{calculateSize(file.sizeOriginal)}
{toLocaleDate(file.$createdAt)}
@@ -132,7 +132,7 @@
{file.mimeType}
{bytesToSize(file.sizeOriginal)}
+ >{calculateSize(file.sizeOriginal)}
{toLocaleDate(file.$createdAt)}
diff --git a/src/routes/console/[project]/storage/bucket/[bucket]/settings.svelte b/src/routes/console/[project]/storage/bucket/[bucket]/settings.svelte
index fce6a9482..751db091d 100644
--- a/src/routes/console/[project]/storage/bucket/[bucket]/settings.svelte
+++ b/src/routes/console/[project]/storage/bucket/[bucket]/settings.svelte
@@ -2,17 +2,17 @@
import { Alert, CardGrid, Box } from '$lib/components';
import { Container } from '$lib/layout';
import {
+ Form,
Button,
InputText,
InputTags,
InputNumber,
InputSelect,
- InputSwitch,
- Helper
+ InputSwitch
} from '$lib/elements/forms';
import { bucket } from './store';
import { toLocaleDateTime } from '$lib/helpers/date';
- import { sizeToBytes } from '$lib/helpers/sizeConvertion';
+ import { sizeToBytes, bytesToSize } from '$lib/helpers/sizeConvertion';
import { sdkForProject } from '$lib/stores/sdk';
import { addNotification } from '$lib/stores/notifications';
import Delete from './_deleteBucket.svelte';
@@ -20,9 +20,7 @@
import { page } from '$app/stores';
let showDelete = false;
- let showError: false | 'name' | 'size' = false,
- errorMessage = 'Something went wrong',
- errorType: 'error' | 'warning' | 'success' = 'error';
+
let enabled: boolean = null,
bucketName: string = null,
bucketPermissions: string = null,
@@ -32,7 +30,7 @@
encryption: boolean = null,
antivirus: boolean = null,
maxSize: number;
- let byteUnit: 'Bytes' | 'KB' | 'MB' | 'GB' = 'Bytes',
+ let byteUnit: 'Bytes' | 'KB' | 'MB' | 'GB' = 'MB',
options = [
{ label: 'Bytes', value: 'Bytes' },
{ label: 'Kilobytes', value: 'KB' },
@@ -53,7 +51,7 @@
encryption ??= $bucket.encryption;
antivirus ??= $bucket.antivirus;
});
-
+ $: maxSizePlaceholder = bytesToSize($bucket.maximumFileSize, byteUnit);
$: if (bucketPermissions || bucketRead || bucketWrite) {
if (bucketPermissions !== $bucket.permission) {
arePermsDisabled = false;
@@ -73,12 +71,6 @@
} else isExtensionsDisabled = true;
}
- function addError(location: typeof showError, message: string, type: typeof errorType) {
- showError = location;
- errorMessage = message;
- errorType = type;
- }
-
async function toggleBucket() {
try {
await sdkForProject.storage.updateBucket(
@@ -105,13 +97,15 @@
try {
await sdkForProject.storage.updateBucket($bucket.$id, $bucket.name, $bucket.permission);
$bucket.name = bucketName;
- showError = false;
addNotification({
message: 'Name has been updated',
type: 'success'
});
} catch (error) {
- addError('name', error.message, 'error');
+ addNotification({
+ message: error.message,
+ type: 'error'
+ });
}
}
async function updatePermissions() {
@@ -156,7 +150,7 @@
$bucket.encryption = encryption;
$bucket.antivirus = antivirus;
addNotification({
- message: `${$bucket.name} has been updatede`,
+ message: `${$bucket.name} has been updated`,
type: 'success'
});
} catch (error) {
@@ -181,7 +175,7 @@
);
$bucket.maximumFileSize = maxSize;
addNotification({
- message: `${$bucket.name} has been updatede`,
+ message: `${$bucket.name} has been updated`,
type: 'success'
});
} catch (error) {
@@ -206,7 +200,7 @@
);
$bucket.allowedFileExtensions = extensions;
addNotification({
- message: `${$bucket.name} has been updatede`,
+ message: `${$bucket.name} has been updated`,
type: 'success'
});
} catch (error) {
@@ -220,230 +214,225 @@
{#if $bucket}
-
- {$bucket.name}
+
+
+ {$bucket.name}
-
-
- Created: {toLocaleDateTime($bucket.$createdAt)}
- Last Updated: {toLocaleDateTime($bucket.$updatedAt)}
-
+
+
+ Created: {toLocaleDateTime($bucket.$createdAt)}
+ Last Updated: {toLocaleDateTime($bucket.$updatedAt)}
+
-
- {
- toggleBucket();
- }}>Update
-
-
+
+ Update
+
+
+
-
- Update Name
+
+
+ Update Name
+
+
+
-
-
-
- {#if showError === 'name'}
- {errorMessage}
+
+ Update
+
+
+
+
+
+
+ Update Permissions
+
+ Assign read or write permissions at the Bucket Level or
+ File Level . If Bucket Level permissions are assigned, file permissions
+ will be ignored.
+
+
+
+
+
+ Tip: Add role:all for wildcards access. Check out our
+ documentation for more on Permissions
+
+
+ {#if bucketPermissions === 'bucket'}
+
{/if}
-
-
+
+
+ Update
+
+
+
-
- {
- updateName();
- }}>Update
-
-
-
- Update Permissions
-
- Assign read or write permissions at the Bucket Level or
- File Level . If Bucket Level permissions are assigned, file permissions will
- be ignored.
-
-
-
-
-
- Tip: Add role:all for wildcards access. Check out our documentation
- for more on Permissions
-
-
- {#if bucketPermissions === 'bucket'}
+
+
+ Update Security Settings
+
+ Enable or disable security services for the bucket including Ecryption
+ and Antivirus scanning.
+
+
+
+
+
+
+ Update
+
+
+
+
+
+
+ Update Maximum File Size
+ Set the maximum file size allowed in the bucket.
+
+
+
+
+
+ Update
+
+
+
+
+
+
+ Update Allowed File Extensions
+
+ A maxiumum of 100 file extensions can be added. Leave blank to allow all file
+ types.
+
+
+
+
+ Tip: Commonly added extensions include JPG, PNG, SVG, GIF, HTML, PDF,
+ MP4.
+
+
-
+ label="Allowed file extensions"
+ placeholder="Allowed file extensions (mp4, jpg, pdf, etc.)"
+ bind:tags={extensions} />
- {/if}
-
-
- {
- updatePermissions();
- }}>Update
-
-
-
- Update Security Settings
-
- Enable or disable security services for the bucket including Ecryption
- and Antivirus scanning.
-
-
-
-
-
-
- {
- updateSecurity();
- }}>Update
-
-
-
- Update Maximum File Size
- Set the maximum file size allowed in the bucket.
-
-
-
-
-
- {
- updateMaxSize();
- }}>Update
-
-
-
- Update Allowed File Extensions
-
- A maxiumum of 100 file extensions can be added. Leave blank to allow all file types.
-
-
-
-
- Tip: Commonly added extensions include JPG, PNG, SVG, GIF, HTML, PDF, MP4.
-
-
-
-
-
-
- {
- updateAllowedExtensions();
- }}>Update
-
-
Delete Bucket
From b77a62aab4ea6b03df39f36a9842c58f1104c7ff Mon Sep 17 00:00:00 2001
From: Arman
Date: Mon, 22 Aug 2022 12:48:51 +0200
Subject: [PATCH 061/118] fix: hide placeholder when there are tags
---
src/lib/elements/forms/inputTags.svelte | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/lib/elements/forms/inputTags.svelte b/src/lib/elements/forms/inputTags.svelte
index 0ad75a294..b9dc93686 100644
--- a/src/lib/elements/forms/inputTags.svelte
+++ b/src/lib/elements/forms/inputTags.svelte
@@ -88,7 +88,7 @@
Date: Mon, 22 Aug 2022 12:56:53 +0200
Subject: [PATCH 062/118] feat: add selected state to pill (tag)
---
src/lib/elements/pill.svelte | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/lib/elements/pill.svelte b/src/lib/elements/pill.svelte
index 2a175a7f7..66805f240 100644
--- a/src/lib/elements/pill.svelte
+++ b/src/lib/elements/pill.svelte
@@ -1,5 +1,6 @@
+
+
diff --git a/src/routes/console/_deleteMember.svelte b/src/routes/console/_deleteMember.svelte
new file mode 100644
index 000000000..215cee0a8
--- /dev/null
+++ b/src/routes/console/_deleteMember.svelte
@@ -0,0 +1,50 @@
+
+
+
diff --git a/src/routes/console/members@intro.svelte b/src/routes/console/members@intro.svelte
index 5409ba64a..65aeaed28 100644
--- a/src/routes/console/members@intro.svelte
+++ b/src/routes/console/members@intro.svelte
@@ -12,20 +12,26 @@
import { Pill } from '$lib/elements';
import { Button } from '$lib/elements/forms';
import { Container } from '$lib/layout';
+ import Delete from './_deleteMember.svelte';
+ import Create from './_createMember.svelte';
import { organization, memberList } from './store';
import { sdkForProject } from '$lib/stores/sdk';
+ import type { Models } from '@aw-labs/appwrite-console';
+ import { pageLimit } from '$lib/stores/layout';
- const limit = 5;
let search = '';
let offset: number = null;
+ let selectedMember: Models.Membership;
let showCreate = false;
let showDelete = false;
const getAvatar = (name: string) => sdkForProject.avatars.getInitials(name, 32, 32).toString();
+ const deleted = () => memberList.load($organization.$id, search, $pageLimit, offset ?? 0);
+ const created = () => memberList.load($organization.$id, search, $pageLimit, offset ?? 0);
$: if (search) offset = 0;
- $: memberList.load($organization.$id, search, limit, offset ?? 0);
+ $: memberList.load($organization.$id, search, $pageLimit, offset ?? 0);