From 79c3093c72ea219485f88f670a4ee8f5b17edfe9 Mon Sep 17 00:00:00 2001 From: Thomas <4159106+dtslvr@users.noreply.github.com> Date: Wed, 22 Jun 2022 20:11:06 +0200 Subject: [PATCH] Improve onboarding for iOS --- apps/client/src/app/services/data.service.ts | 14 +++++++------ apps/client/src/main.ts | 14 +++++++------ libs/common/src/lib/permissions.ts | 22 ++++++++++++++++++++ 3 files changed, 38 insertions(+), 12 deletions(-) diff --git a/apps/client/src/app/services/data.service.ts b/apps/client/src/app/services/data.service.ts index c0dd5ef89..f6b92ac2a 100644 --- a/apps/client/src/app/services/data.service.ts +++ b/apps/client/src/app/services/data.service.ts @@ -32,7 +32,7 @@ import { PortfolioSummary, User } from '@ghostfolio/common/interfaces'; -import { permissions } from '@ghostfolio/common/permissions'; +import { filterGlobalPermissions } from '@ghostfolio/common/permissions'; import { DateRange } from '@ghostfolio/common/types'; import { DataSource, Order as OrderModel } from '@prisma/client'; import { parseISO } from 'date-fns'; @@ -115,12 +115,14 @@ export class DataService { public fetchInfo(): InfoItem { const info = cloneDeep((window as any).info); + const utmSource = <'ios' | 'trusted-web-activity'>( + window.localStorage.getItem('utm_source') + ); - if (window.localStorage.getItem('utm_source') === 'trusted-web-activity') { - info.globalPermissions = info.globalPermissions.filter( - (permission) => permission !== permissions.enableSubscription - ); - } + info.globalPermissions = filterGlobalPermissions( + info.globalPermissions, + utmSource + ); return info; } diff --git a/apps/client/src/main.ts b/apps/client/src/main.ts index 915236117..0c9453676 100644 --- a/apps/client/src/main.ts +++ b/apps/client/src/main.ts @@ -3,7 +3,7 @@ import { LOCALE_ID } from '@angular/core'; import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { locale } from '@ghostfolio/common/config'; import { InfoItem } from '@ghostfolio/common/interfaces'; -import { permissions } from '@ghostfolio/common/permissions'; +import { filterGlobalPermissions } from '@ghostfolio/common/permissions'; import { AppModule } from './app/app.module'; import { environment } from './environments/environment'; @@ -11,12 +11,14 @@ import { environment } from './environments/environment'; (async () => { const response = await fetch('/api/v1/info'); const info: InfoItem = await response.json(); + const utmSource = <'ios' | 'trusted-web-activity'>( + window.localStorage.getItem('utm_source') + ); - if (window.localStorage.getItem('utm_source') === 'trusted-web-activity') { - info.globalPermissions = info.globalPermissions.filter( - (permission) => permission !== permissions.enableSubscription - ); - } + info.globalPermissions = filterGlobalPermissions( + info.globalPermissions, + utmSource + ); (window as any).info = info; diff --git a/libs/common/src/lib/permissions.ts b/libs/common/src/lib/permissions.ts index 5023369f7..da666e4e5 100644 --- a/libs/common/src/lib/permissions.ts +++ b/libs/common/src/lib/permissions.ts @@ -73,6 +73,28 @@ export function getPermissions(aRole: Role): string[] { } } +export function filterGlobalPermissions( + aGlobalPermissions: string[], + aUtmSource: 'ios' | 'trusted-web-activity' +) { + const globalPermissions = aGlobalPermissions; + + if (aUtmSource === 'ios') { + return globalPermissions.filter((permission) => { + return ( + permission !== permissions.enableSocialLogin && + permission !== permissions.enableSubscription + ); + }); + } else if (aUtmSource === 'trusted-web-activity') { + return globalPermissions.filter((permission) => { + return permission !== permissions.enableSubscription; + }); + } + + return globalPermissions; +} + export function hasPermission( aPermissions: string[] = [], aPermission: string