Merge pull request #1045 from appwrite/feat-source

Track source
This commit is contained in:
Torsten Dittmann
2024-05-02 11:25:29 +02:00
committed by GitHub
3 changed files with 68 additions and 1 deletions
+45
View File
@@ -0,0 +1,45 @@
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;
constructor(client: Client) {
this.client = client;
}
async create(
ref: string,
referrer: string,
utmSource: string,
utmCampaign: string,
utmMedium: string
): Promise<Source> {
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
);
}
}
+3 -1
View File
@@ -22,6 +22,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`;
@@ -72,7 +73,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();
+20
View File
@@ -13,9 +13,29 @@
import { loading, requestedMigration } from './store';
import { parseIfString } from '$lib/helpers/object';
import Consent from '$lib/components/consent.svelte';
import { sdk } from '$lib/stores/sdk';
import type { Models } from '@appwrite.io/console';
onMount(async () => {
// handle sources
if (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');
let referrer = document.referrer.length ? document.referrer : null;
// Skip our own
if (referrer?.includes('//appwrite.io')) {
referrer = null;
}
if (ref || referrer || utmSource || utmCampaign || utmMedium) {
sdk.forConsole.sources.create(ref, referrer, utmSource, utmCampaign, utmMedium);
}
}
if ($page.url.searchParams.has('migrate')) {
const migrateData = $page.url.searchParams.get('migrate');
requestedMigration.set(parseIfString(migrateData) as Record<string, string>);