diff --git a/CHANGELOG.md b/CHANGELOG.md index 6f3bb604..f603f77a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### Changed + +- Improved the onboarding for iOS + ## 1.162.0 - 18.06.2022 ### Added diff --git a/apps/client/src/app/services/data.service.ts b/apps/client/src/app/services/data.service.ts index c0dd5ef8..f6b92ac2 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 91523611..0c945367 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 5023369f..da666e4e 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