From 962e895c2bafde29b17267bea1010fcd951e3918 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 18 Apr 2024 06:25:29 +0000 Subject: [PATCH 01/22] user source --- src/routes/+layout.svelte | 43 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index fad7b4487..7e63cf3f5 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -21,7 +21,50 @@ window.VERCEL_ANALYTICS_ID = import.meta.env.VERCEL_ANALYTICS_ID?.toString() ?? false; } + let getCookie = (name) => { + let nameEQ = name + '='; + let ca = document.cookie.split(';'); + console.log(ca); + for (var i = 0; i < ca.length; i++) { + let c = ca[i]; + while (c.charAt(0) == ' ') c = c.substring(1, c.length); + if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length); + } + return null; + }; + + let setCookie = (name, value) => { + document.cookie = + name + + '=' + + (value || '') + + '; path=/; Secure; Domain=.appwrite.io; SameSite=Lax'; + }; + onMount(async () => { + // handle sources + if(browser) { + const source = getCookie('source'); + let sources = source ? decodeURIComponent(source).split(',') : []; + console.log(sources); + + const urlParams = $page.url.searchParams; + const ref = urlParams.get('ref'); + const utm_source = urlParams.get('utm_source'); + const utm_medium = urlParams.get('utm_medium'); + const utm_campaign = urlParams.get('utm_campaign'); + + // Aggregate and display sources from URL parameters + if (ref) sources.push(`ref=${ref}`); + if (utm_source) sources.push(`utm_source=${utm_source}`); + if (utm_medium) sources.push(`utm_medium=${utm_medium}`); + if (utm_campaign) sources.push(`utm_campaign=${utm_campaign}`); + + sources = [...new Set(sources)]; + const encodedSources = encodeURIComponent(sources.join(',')); + setCookie('source', encodedSources); + } + if ($page.url.searchParams.has('migrate')) { const migrateData = $page.url.searchParams.get('migrate'); requestedMigration.set(parseIfString(migrateData) as Record); From b559b64a4a180c6b131e6ca430043cd0f0d5619e Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Tue, 23 Apr 2024 01:55:34 +0000 Subject: [PATCH 02/22] use js-cookie --- package-lock.json | 9 +++++++++ package.json | 1 + src/routes/+layout.svelte | 25 +++---------------------- 3 files changed, 13 insertions(+), 22 deletions(-) diff --git a/package-lock.json b/package-lock.json index 351b33296..407ce8384 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,6 +19,7 @@ "deep-equal": "^2.2.2", "dotenv": "^16.3.1", "echarts": "^5.4.3", + "js-cookie": "^3.0.5", "nanoid": "^4.0.2", "plausible-tracker": "^0.3.8", "pretty-bytes": "^6.1.1", @@ -6707,6 +6708,14 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "engines": { + "node": ">=14" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", diff --git a/package.json b/package.json index e89c79e28..26331e3a7 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,7 @@ "deep-equal": "^2.2.2", "dotenv": "^16.3.1", "echarts": "^5.4.3", + "js-cookie": "^3.0.5", "nanoid": "^4.0.2", "plausible-tracker": "^0.3.8", "pretty-bytes": "^6.1.1", diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 7e63cf3f5..ae59b3bc3 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -16,35 +16,16 @@ import { loading, requestedMigration } from './store'; import { parseIfString } from '$lib/helpers/object'; import Consent from '$lib/components/consent.svelte'; + import Cookies from 'js-cookie'; if (browser) { window.VERCEL_ANALYTICS_ID = import.meta.env.VERCEL_ANALYTICS_ID?.toString() ?? false; } - let getCookie = (name) => { - let nameEQ = name + '='; - let ca = document.cookie.split(';'); - console.log(ca); - for (var i = 0; i < ca.length; i++) { - let c = ca[i]; - while (c.charAt(0) == ' ') c = c.substring(1, c.length); - if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length); - } - return null; - }; - - let setCookie = (name, value) => { - document.cookie = - name + - '=' + - (value || '') + - '; path=/; Secure; Domain=.appwrite.io; SameSite=Lax'; - }; - onMount(async () => { // handle sources if(browser) { - const source = getCookie('source'); + const source = Cookies.get('source'); let sources = source ? decodeURIComponent(source).split(',') : []; console.log(sources); @@ -62,7 +43,7 @@ sources = [...new Set(sources)]; const encodedSources = encodeURIComponent(sources.join(',')); - setCookie('source', encodedSources); + Cookies.set('source', encodedSources); } if ($page.url.searchParams.has('migrate')) { From c78a937d9b5195a9d7bf891695cce7d45de0f8bb Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Tue, 23 Apr 2024 01:55:51 +0000 Subject: [PATCH 03/22] fix cookie --- src/routes/+layout.svelte | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index ae59b3bc3..6be21d54d 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -42,8 +42,7 @@ if (utm_campaign) sources.push(`utm_campaign=${utm_campaign}`); sources = [...new Set(sources)]; - const encodedSources = encodeURIComponent(sources.join(',')); - Cookies.set('source', encodedSources); + Cookies.set('source', sources); } if ($page.url.searchParams.has('migrate')) { From 86b297d47a456aa259e1a32b1df2e7a6c902707f Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Tue, 23 Apr 2024 01:58:24 +0000 Subject: [PATCH 04/22] add domain --- src/routes/+layout.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 6be21d54d..8198a90ab 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -42,7 +42,7 @@ if (utm_campaign) sources.push(`utm_campaign=${utm_campaign}`); sources = [...new Set(sources)]; - Cookies.set('source', sources); + Cookies.set('source', sources, { domain: '.appwrite.io'}); } if ($page.url.searchParams.has('migrate')) { From 1f7ced9ff1b04806831c660b560f74b7e4b54bfe Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Tue, 23 Apr 2024 02:04:41 +0000 Subject: [PATCH 05/22] added referrer --- src/routes/+layout.svelte | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 8198a90ab..8d359d94f 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -34,15 +34,18 @@ const utm_source = urlParams.get('utm_source'); const utm_medium = urlParams.get('utm_medium'); const utm_campaign = urlParams.get('utm_campaign'); + const referrer = document.referrer; // Aggregate and display sources from URL parameters if (ref) sources.push(`ref=${ref}`); if (utm_source) sources.push(`utm_source=${utm_source}`); if (utm_medium) sources.push(`utm_medium=${utm_medium}`); if (utm_campaign) sources.push(`utm_campaign=${utm_campaign}`); + if (referrer) sources.push(`referrer=${referrer}`); + sources = [...new Set(sources)]; - Cookies.set('source', sources, { domain: '.appwrite.io'}); + Cookies.set('source', sources, { domain: '.appwrite.io' }); } if ($page.url.searchParams.has('migrate')) { From 933353efc3cc19a363f88159b8566c3f5f31fc3d Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Tue, 23 Apr 2024 07:43:23 +0000 Subject: [PATCH 06/22] count source --- src/routes/+layout.svelte | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 8d359d94f..108fffbc0 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -22,29 +22,43 @@ window.VERCEL_ANALYTICS_ID = import.meta.env.VERCEL_ANALYTICS_ID?.toString() ?? false; } + let format = (arr) => { + const counts = {}; // Object to store the counts + + // Loop through each item in the array + arr.forEach((item) => { + // Increment the count for each key in the object + counts[item] = (counts[item] || 0) + 1; + }); + + // Convert counts object into the required string format array + const formattedArray = Object.entries(counts).map(([key, value]) => `${key},${value}`); + + return formattedArray; + }; + onMount(async () => { // handle sources - if(browser) { + if (browser) { const source = Cookies.get('source'); let sources = source ? decodeURIComponent(source).split(',') : []; console.log(sources); - + const urlParams = $page.url.searchParams; const ref = urlParams.get('ref'); const utm_source = urlParams.get('utm_source'); const utm_medium = urlParams.get('utm_medium'); const utm_campaign = urlParams.get('utm_campaign'); const referrer = document.referrer; - + // Aggregate and display sources from URL parameters if (ref) sources.push(`ref=${ref}`); if (utm_source) sources.push(`utm_source=${utm_source}`); if (utm_medium) sources.push(`utm_medium=${utm_medium}`); if (utm_campaign) sources.push(`utm_campaign=${utm_campaign}`); if (referrer) sources.push(`referrer=${referrer}`); - - - sources = [...new Set(sources)]; + + sources = format(sources); Cookies.set('source', sources, { domain: '.appwrite.io' }); } From a41f60427687656e793f88567d8e734b9b2e1db5 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Tue, 23 Apr 2024 07:56:39 +0000 Subject: [PATCH 07/22] fix source formatting --- src/routes/+layout.svelte | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 108fffbc0..00c1d92ba 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -22,25 +22,22 @@ window.VERCEL_ANALYTICS_ID = import.meta.env.VERCEL_ANALYTICS_ID?.toString() ?? false; } + // Format source array to count source occurrences let format = (arr) => { - const counts = {}; // Object to store the counts + const counts = {}; - // Loop through each item in the array arr.forEach((item) => { - // Increment the count for each key in the object - counts[item] = (counts[item] || 0) + 1; + const key = item.split(';')[0]; + counts[key] = (counts[key] || 0) + 1; }); - - // Convert counts object into the required string format array - const formattedArray = Object.entries(counts).map(([key, value]) => `${key},${value}`); - - return formattedArray; + return Object.entries(counts).map(([key, count]) => `${key};${count}`); }; onMount(async () => { // handle sources if (browser) { const source = Cookies.get('source'); + console.log(source); let sources = source ? decodeURIComponent(source).split(',') : []; console.log(sources); From 35fe967d790c900a0922fff10883800fd382b82e Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Wed, 24 Apr 2024 03:59:45 +0000 Subject: [PATCH 08/22] update cookie format --- src/routes/+layout.svelte | 36 +++++++++++++----------------------- 1 file changed, 13 insertions(+), 23 deletions(-) diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 00c1d92ba..22929bc9e 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -22,25 +22,10 @@ window.VERCEL_ANALYTICS_ID = import.meta.env.VERCEL_ANALYTICS_ID?.toString() ?? false; } - // Format source array to count source occurrences - let format = (arr) => { - const counts = {}; - - arr.forEach((item) => { - const key = item.split(';')[0]; - counts[key] = (counts[key] || 0) + 1; - }); - return Object.entries(counts).map(([key, count]) => `${key};${count}`); - }; - onMount(async () => { // handle sources if (browser) { - const source = Cookies.get('source'); - console.log(source); - let sources = source ? decodeURIComponent(source).split(',') : []; - console.log(sources); - + let currentSources = []; const urlParams = $page.url.searchParams; const ref = urlParams.get('ref'); const utm_source = urlParams.get('utm_source'); @@ -49,14 +34,19 @@ const referrer = document.referrer; // Aggregate and display sources from URL parameters - if (ref) sources.push(`ref=${ref}`); - if (utm_source) sources.push(`utm_source=${utm_source}`); - if (utm_medium) sources.push(`utm_medium=${utm_medium}`); - if (utm_campaign) sources.push(`utm_campaign=${utm_campaign}`); - if (referrer) sources.push(`referrer=${referrer}`); + if (ref) currentSources.push(`ref=${ref}`); + if (utm_source) currentSources.push(`utm_source=${utm_source}`); + if (utm_medium) currentSources.push(`utm_medium=${utm_medium}`); + if (utm_campaign) currentSources.push(`utm_campaign=${utm_campaign}`); + if (referrer) currentSources.push(`referrer=${referrer}`); - sources = format(sources); - Cookies.set('source', sources, { domain: '.appwrite.io' }); + if (currentSources.length) { + let currentSource = currentSources.join(';'); + const source = Cookies.get('source'); + let sources = source ? decodeURIComponent(source).split(',') : []; + sources.push(currentSource); + Cookies.set('source', sources, { domain: '.gitpod.io' }); + } } if ($page.url.searchParams.has('migrate')) { From 11883a2fd6bc47bd53c2d8214df3a927b176bb9b Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Wed, 24 Apr 2024 04:01:08 +0000 Subject: [PATCH 09/22] set max sources to 50 --- src/routes/+layout.svelte | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 22929bc9e..aca31ff09 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -45,6 +45,9 @@ const source = Cookies.get('source'); let sources = source ? decodeURIComponent(source).split(',') : []; sources.push(currentSource); + if(sources.length > 50) { + sources.shift(); + } Cookies.set('source', sources, { domain: '.gitpod.io' }); } } From 654f4464517f5b04295fd88fcb231b0a95dadcb6 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Wed, 24 Apr 2024 04:07:24 +0000 Subject: [PATCH 10/22] fix domain --- src/routes/+layout.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index aca31ff09..4e3d066df 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -48,7 +48,7 @@ if(sources.length > 50) { sources.shift(); } - Cookies.set('source', sources, { domain: '.gitpod.io' }); + Cookies.set('source', sources, { domain: '.appwrite.io' }); } } From 7ada3ca62ad80b33152eb42c0049520e900cc8bd Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Sun, 28 Apr 2024 09:54:31 +0000 Subject: [PATCH 11/22] create source --- src/lib/sdk/sources.ts | 35 +++++++++++++++++++++++++++++++++++ src/lib/stores/sdk.ts | 4 +++- src/routes/+layout.svelte | 33 ++++++++++++--------------------- 3 files changed, 50 insertions(+), 22 deletions(-) create mode 100644 src/lib/sdk/sources.ts diff --git a/src/lib/sdk/sources.ts b/src/lib/sdk/sources.ts new file mode 100644 index 000000000..20a6527a5 --- /dev/null +++ b/src/lib/sdk/sources.ts @@ -0,0 +1,35 @@ +import type { Client } from '@appwrite.io/console'; + +export class Sources { + client: Client; + + constructor(client: Client) { + this.client = client; + } + + async create( + ref: string, + referrer: string, + utmSource: string, + utmCampaign: string, + utmMedium: string, + ): Promise { + const path = `/console/sources`; + const params = { + ref, + referrer, + utmSource, + utmCampaign, + utmMedium, + }; + const uri = new URL(this.client.config.endpoint + path); + return await this.client.call( + 'POST', + uri, + { + 'content-type': 'application/json' + }, + params + ); + } +} \ No newline at end of file diff --git a/src/lib/stores/sdk.ts b/src/lib/stores/sdk.ts index caacafee7..a53b7bbce 100644 --- a/src/lib/stores/sdk.ts +++ b/src/lib/stores/sdk.ts @@ -21,6 +21,7 @@ import { Vcs } from '@appwrite.io/console'; import { Billing } from '../sdk/billing'; +import { Sources } from '$lib/sdk/sources'; const endpoint = VARS.APPWRITE_ENDPOINT ?? `${globalThis?.location?.origin}/v1`; @@ -70,7 +71,8 @@ export const sdk = { migrations: new Migrations(clientConsole), console: new Console(clientConsole), assistant: new Assistant(clientConsole), - billing: new Billing(clientConsole) + billing: new Billing(clientConsole), + sources: new Sources(clientConsole), }, get forProject() { const projectId = getProjectId(); diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 4e3d066df..a73d8a3cf 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -16,7 +16,7 @@ import { loading, requestedMigration } from './store'; import { parseIfString } from '$lib/helpers/object'; import Consent from '$lib/components/consent.svelte'; - import Cookies from 'js-cookie'; + import { sdk } from '$lib/stores/sdk'; if (browser) { window.VERCEL_ANALYTICS_ID = import.meta.env.VERCEL_ANALYTICS_ID?.toString() ?? false; @@ -25,30 +25,21 @@ onMount(async () => { // handle sources if (browser) { - let currentSources = []; const urlParams = $page.url.searchParams; const ref = urlParams.get('ref'); - const utm_source = urlParams.get('utm_source'); - const utm_medium = urlParams.get('utm_medium'); - const utm_campaign = urlParams.get('utm_campaign'); + const utmSource = urlParams.get('utm_source'); + const utmMedium = urlParams.get('utm_medium'); + const utmCampaign = urlParams.get('utm_campaign'); const referrer = document.referrer; - // Aggregate and display sources from URL parameters - if (ref) currentSources.push(`ref=${ref}`); - if (utm_source) currentSources.push(`utm_source=${utm_source}`); - if (utm_medium) currentSources.push(`utm_medium=${utm_medium}`); - if (utm_campaign) currentSources.push(`utm_campaign=${utm_campaign}`); - if (referrer) currentSources.push(`referrer=${referrer}`); - - if (currentSources.length) { - let currentSource = currentSources.join(';'); - const source = Cookies.get('source'); - let sources = source ? decodeURIComponent(source).split(',') : []; - sources.push(currentSource); - if(sources.length > 50) { - sources.shift(); - } - Cookies.set('source', sources, { domain: '.appwrite.io' }); + if (ref || referrer || utmSource || utmCampaign || utmMedium) { + await sdk.forConsole.sources.create( + ref, + referrer, + utmSource, + utmCampaign, + utmMedium + ); } } From 5581382789f2565b78951f896167a2560eb2980b Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Mon, 29 Apr 2024 01:25:00 +0000 Subject: [PATCH 12/22] source tracking --- src/routes/+layout.svelte | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index a73d8a3cf..65a6e7a04 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -33,13 +33,17 @@ const referrer = document.referrer; if (ref || referrer || utmSource || utmCampaign || utmMedium) { - await sdk.forConsole.sources.create( - ref, - referrer, - utmSource, - utmCampaign, - utmMedium - ); + try { + await sdk.forConsole.sources.create( + ref, + referrer, + utmSource, + utmCampaign, + utmMedium + ); + } catch (e) { + // ignore error + } } } From ddd9fbe93e8af93246962afa13c82d1919147475 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Mon, 29 Apr 2024 01:37:53 +0000 Subject: [PATCH 13/22] fix empty referrer --- src/routes/+layout.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 65a6e7a04..c91821b2e 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -30,7 +30,7 @@ const utmSource = urlParams.get('utm_source'); const utmMedium = urlParams.get('utm_medium'); const utmCampaign = urlParams.get('utm_campaign'); - const referrer = document.referrer; + const referrer = document.referrer.length ? document.referrer : null; if (ref || referrer || utmSource || utmCampaign || utmMedium) { try { From a0799e831a004885bb025d348dd9001bc23895aa Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Mon, 29 Apr 2024 01:38:32 +0000 Subject: [PATCH 14/22] remove js-cookie --- package-lock.json | 9 --------- package.json | 1 - 2 files changed, 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index 407ce8384..351b33296 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,6 @@ "deep-equal": "^2.2.2", "dotenv": "^16.3.1", "echarts": "^5.4.3", - "js-cookie": "^3.0.5", "nanoid": "^4.0.2", "plausible-tracker": "^0.3.8", "pretty-bytes": "^6.1.1", @@ -6708,14 +6707,6 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/js-cookie": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", - "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", - "engines": { - "node": ">=14" - } - }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", diff --git a/package.json b/package.json index 26331e3a7..e89c79e28 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,6 @@ "deep-equal": "^2.2.2", "dotenv": "^16.3.1", "echarts": "^5.4.3", - "js-cookie": "^3.0.5", "nanoid": "^4.0.2", "plausible-tracker": "^0.3.8", "pretty-bytes": "^6.1.1", From 75a32584aaef23d04969ca7795ad96180a09ad7a Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Mon, 29 Apr 2024 08:49:04 +0000 Subject: [PATCH 15/22] skip own domain and check if cloud --- src/routes/+layout.svelte | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index c91821b2e..ec3b7d999 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -24,13 +24,18 @@ onMount(async () => { // handle sources - if (browser) { + if (browser && isCloud) { const urlParams = $page.url.searchParams; const ref = urlParams.get('ref'); const utmSource = urlParams.get('utm_source'); const utmMedium = urlParams.get('utm_medium'); const utmCampaign = urlParams.get('utm_campaign'); - const referrer = document.referrer.length ? document.referrer : null; + let referrer = document.referrer.length ? document.referrer : null; + + // Skip our own + if(referrer?.includes('appwrite.io')) { + referrer = null; + } if (ref || referrer || utmSource || utmCampaign || utmMedium) { try { From 6a977cd6ecd16c618ac2d1167e3104d6ebe61f48 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Mon, 29 Apr 2024 15:01:39 +0545 Subject: [PATCH 16/22] Update src/routes/+layout.svelte Co-authored-by: Torsten Dittmann --- src/routes/+layout.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index ec3b7d999..e8b9e4115 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -24,7 +24,7 @@ onMount(async () => { // handle sources - if (browser && isCloud) { + if (isCloud) { const urlParams = $page.url.searchParams; const ref = urlParams.get('ref'); const utmSource = urlParams.get('utm_source'); From d0db425d428c6063e5d2de1e8df0107b95843f0e Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Mon, 29 Apr 2024 09:20:05 +0000 Subject: [PATCH 17/22] fix linter --- src/routes/+layout.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index e8b9e4115..78a8b552d 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -33,7 +33,7 @@ let referrer = document.referrer.length ? document.referrer : null; // Skip our own - if(referrer?.includes('appwrite.io')) { + if (referrer?.includes('appwrite.io')) { referrer = null; } From 6674fbaf999ed2be8fa4c76916bc864e52d4fd8e Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Mon, 29 Apr 2024 09:31:46 +0000 Subject: [PATCH 18/22] fix formatting --- src/lib/sdk/sources.ts | 6 +++--- src/lib/stores/sdk.ts | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/lib/sdk/sources.ts b/src/lib/sdk/sources.ts index 20a6527a5..45fd74821 100644 --- a/src/lib/sdk/sources.ts +++ b/src/lib/sdk/sources.ts @@ -12,7 +12,7 @@ export class Sources { referrer: string, utmSource: string, utmCampaign: string, - utmMedium: string, + utmMedium: string ): Promise { const path = `/console/sources`; const params = { @@ -20,7 +20,7 @@ export class Sources { referrer, utmSource, utmCampaign, - utmMedium, + utmMedium }; const uri = new URL(this.client.config.endpoint + path); return await this.client.call( @@ -32,4 +32,4 @@ export class Sources { params ); } -} \ No newline at end of file +} diff --git a/src/lib/stores/sdk.ts b/src/lib/stores/sdk.ts index a53b7bbce..c01d750a5 100644 --- a/src/lib/stores/sdk.ts +++ b/src/lib/stores/sdk.ts @@ -72,7 +72,7 @@ export const sdk = { console: new Console(clientConsole), assistant: new Assistant(clientConsole), billing: new Billing(clientConsole), - sources: new Sources(clientConsole), + sources: new Sources(clientConsole) }, get forProject() { const projectId = getProjectId(); From 4652df107aff16e22637719e3d804da55e88201f Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Mon, 29 Apr 2024 09:40:33 +0000 Subject: [PATCH 19/22] add type --- src/lib/sdk/sources.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/lib/sdk/sources.ts b/src/lib/sdk/sources.ts index 45fd74821..bf9f703c7 100644 --- a/src/lib/sdk/sources.ts +++ b/src/lib/sdk/sources.ts @@ -1,5 +1,15 @@ import type { Client } from '@appwrite.io/console'; +type Source = { + $id: string; + fingerprint: string; + referrer: string; + ref: string; + utmSource: string; + utmCampaign: string; + utmMedium: string; +}; + export class Sources { client: Client; @@ -13,7 +23,7 @@ export class Sources { utmSource: string, utmCampaign: string, utmMedium: string - ): Promise { + ): Promise { const path = `/console/sources`; const params = { ref, From f2119db7b61b08f59efee1b548a76b5c80920d5b Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Mon, 29 Apr 2024 09:59:14 +0000 Subject: [PATCH 20/22] update check --- src/routes/+layout.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 78a8b552d..fcf7d19de 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -33,7 +33,7 @@ let referrer = document.referrer.length ? document.referrer : null; // Skip our own - if (referrer?.includes('appwrite.io')) { + if (referrer?.includes('//appwrite.io')) { referrer = null; } From 0fc4603ccafe133de4af72d3d10f5947efebe89c Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Mon, 29 Apr 2024 10:04:16 +0000 Subject: [PATCH 21/22] do not await --- src/routes/+layout.svelte | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index fcf7d19de..282a3a21c 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -22,7 +22,7 @@ window.VERCEL_ANALYTICS_ID = import.meta.env.VERCEL_ANALYTICS_ID?.toString() ?? false; } - onMount(async () => { + onMount(() => { // handle sources if (isCloud) { const urlParams = $page.url.searchParams; @@ -38,17 +38,13 @@ } if (ref || referrer || utmSource || utmCampaign || utmMedium) { - try { - await sdk.forConsole.sources.create( - ref, - referrer, - utmSource, - utmCampaign, - utmMedium - ); - } catch (e) { - // ignore error - } + sdk.forConsole.sources.create( + ref, + referrer, + utmSource, + utmCampaign, + utmMedium + ); } } From a5a9f0b8bd98b83606c52f56032328e4dcc5595b Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Mon, 29 Apr 2024 10:06:51 +0000 Subject: [PATCH 22/22] fix error --- src/routes/+layout.svelte | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 282a3a21c..783d31374 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -22,7 +22,7 @@ window.VERCEL_ANALYTICS_ID = import.meta.env.VERCEL_ANALYTICS_ID?.toString() ?? false; } - onMount(() => { + onMount(async () => { // handle sources if (isCloud) { const urlParams = $page.url.searchParams; @@ -38,13 +38,7 @@ } if (ref || referrer || utmSource || utmCampaign || utmMedium) { - sdk.forConsole.sources.create( - ref, - referrer, - utmSource, - utmCampaign, - utmMedium - ); + sdk.forConsole.sources.create(ref, referrer, utmSource, utmCampaign, utmMedium); } }