From c105e5deee30093d70ef3cd361a9b8f4a7ab667b Mon Sep 17 00:00:00 2001 From: ItzNotABug Date: Tue, 1 Oct 2024 20:41:46 +0530 Subject: [PATCH] add: tracking events. --- .../project-[project]/databases/create.svelte | 30 +++++++++++++ .../database-[database]/backups/+page.svelte | 43 ++++++++++++++++++- .../database-[database]/backups/policy.svelte | 2 + .../database-[database]/backups/table.svelte | 6 +++ 4 files changed, 79 insertions(+), 2 deletions(-) diff --git a/src/routes/(console)/project-[project]/databases/create.svelte b/src/routes/(console)/project-[project]/databases/create.svelte index 79f41b924..82d1f5b87 100644 --- a/src/routes/(console)/project-[project]/databases/create.svelte +++ b/src/routes/(console)/project-[project]/databases/create.svelte @@ -24,6 +24,35 @@ let showCustomId = false; let showPlanUpgradeAlert = true; + const trackEvents = (policies) => { + policies.forEach((policy) => { + let actualDay = null; + const monthlyBackupFrequency = policy.monthlyBackupFrequency; + switch (monthlyBackupFrequency) { + case 'first': + actualDay = '1st'; + break; + case 'middle': + actualDay = '15th'; + break; + case 'end': + default: + actualDay = '28th'; + break; + } + + const message = { + keepFor: `${policy.retained} days`, + frequency: policy.plainTextFrequency, + policy: policy.default ? 'preset' : 'custom' + }; + + if (actualDay) message['monthlyInterval'] = actualDay; + + trackEvent('submit_policy_submit', message); + }); + }; + const createPolicies = async (resourceId: string) => { if (!totalPolicies.length) return; @@ -41,6 +70,7 @@ }); await Promise.all(totalPoliciesPromise); + trackEvents(totalPolicies); }; const create = async () => { diff --git a/src/routes/(console)/project-[project]/databases/database-[database]/backups/+page.svelte b/src/routes/(console)/project-[project]/databases/database-[database]/backups/+page.svelte index 93cebe1c8..8380d8689 100644 --- a/src/routes/(console)/project-[project]/databases/database-[database]/backups/+page.svelte +++ b/src/routes/(console)/project-[project]/databases/database-[database]/backups/+page.svelte @@ -20,6 +20,7 @@ import { ID } from '@appwrite.io/console'; import { showCreateBackup, showCreatePolicy } from './store'; import { getProjectId } from '$lib/helpers/project'; + import { trackEvent } from '$lib/actions/analytics'; let policyCreateError: string; let totalPolicies: UserBackupPolicy[] = []; @@ -68,6 +69,7 @@ message: 'Database backup initiated' }); invalidate(Dependencies.BACKUPS); + trackEvent('click_manual_submit'); showFeedbackNotification(); } catch (error) { addNotification({ @@ -79,6 +81,35 @@ } }; + const trackEvents = (policies) => { + policies.forEach((policy) => { + let actualDay = null; + const monthlyBackupFrequency = policy.monthlyBackupFrequency; + switch (monthlyBackupFrequency) { + case 'first': + actualDay = '1st'; + break; + case 'middle': + actualDay = '15th'; + break; + case 'end': + default: + actualDay = '28th'; + break; + } + + const message = { + keepFor: `${policy.retained} days`, + frequency: policy.plainTextFrequency, + policy: policy.default ? 'preset' : 'custom' + }; + + if (actualDay) message['monthlyInterval'] = actualDay; + + trackEvent('submit_policy_submit', message); + }); + }; + const createPolicies = async () => { const totalPoliciesPromise = totalPolicies.map((policy) => { cronExpression(policy); @@ -107,6 +138,8 @@ message }); + trackEvents(totalPolicies); + invalidate(Dependencies.BACKUPS); showFeedbackNotification(); } catch (err) { @@ -142,7 +175,10 @@ buttonEvent="create_backup" buttonType="secondary" buttonDisabled={isDisabled} - buttonMethod={() => ($showCreatePolicy = true)} /> + buttonMethod={() => { + $showCreatePolicy = true; + trackEvent('click_policy_create'); + }} /> ($showCreateBackup = true)} /> + buttonMethod={() => { + $showCreateBackup = true; + trackEvent('click_manual_create'); + }} /> {#if data.backups.total}
diff --git a/src/routes/(console)/project-[project]/databases/database-[database]/backups/policy.svelte b/src/routes/(console)/project-[project]/databases/database-[database]/backups/policy.svelte index 3a5f9bd53..67fca30e8 100644 --- a/src/routes/(console)/project-[project]/databases/database-[database]/backups/policy.svelte +++ b/src/routes/(console)/project-[project]/databases/database-[database]/backups/policy.svelte @@ -17,6 +17,7 @@ import EmptyLight from '$lib/images/backups/backups-light.png'; import type { BackupPolicy, BackupPolicyList } from '$lib/sdk/backups'; import { backupFrequencies } from '$lib/helpers/backups'; + import { Submit, trackEvent } from '$lib/actions/analytics'; let showDropdown = []; let showDelete = false; @@ -167,6 +168,7 @@ showDelete = true; selectedPolicy = policy; showDropdown[index] = false; + trackEvent('click_policy_delete'); }}> Delete diff --git a/src/routes/(console)/project-[project]/databases/database-[database]/backups/table.svelte b/src/routes/(console)/project-[project]/databases/database-[database]/backups/table.svelte index a4874eecc..3eb1697dd 100644 --- a/src/routes/(console)/project-[project]/databases/database-[database]/backups/table.svelte +++ b/src/routes/(console)/project-[project]/databases/database-[database]/backups/table.svelte @@ -24,6 +24,7 @@ import { ID } from '@appwrite.io/console'; import { page } from '$app/stores'; import type { BackupArchive } from '$lib/sdk/backups'; + import { trackEvent } from '$lib/actions/analytics'; export let data: PageData; const databaseId = $page.params.database; @@ -82,6 +83,9 @@ }); invalidate(Dependencies.BACKUPS); + trackEvent('backup_restore_submit', { + newDatabaseName: newDatabaseInfo.name + }); } catch (error) { addNotification({ type: 'error', @@ -191,6 +195,7 @@ showRestore = true; selectedBackup = backup; showDropdown[index] = false; + trackEvent('click_backup_restore'); }}> Restore @@ -200,6 +205,7 @@ showDelete = true; selectedBackup = backup; showDropdown[index] = false; + trackEvent('click_backup_delete'); }}> Delete