diff --git a/frontend/app/api_client.ts b/frontend/app/api_client.ts index 2a9394687..570efbd66 100644 --- a/frontend/app/api_client.ts +++ b/frontend/app/api_client.ts @@ -59,7 +59,7 @@ export default class APIClient { constructor() { const jwt = store.getState().getIn(['user', 'jwt']); - const siteId = store.getState().getIn(['site', 'siteId']); + const siteId = store.getState().site.siteId; this.init = { headers: new Headers({ Accept: 'application/json', diff --git a/frontend/app/duck/site.js b/frontend/app/duck/site.js index 9678b94a9..86216cb99 100644 --- a/frontend/app/duck/site.js +++ b/frontend/app/duck/site.js @@ -1,4 +1,4 @@ -import Site from 'Types/site'; +import Site from "Types/site"; import GDPR from 'Types/site/gdpr'; import { mergeReducers, @@ -164,4 +164,3 @@ export default mergeReducers( ...getCRUDRequestTypes(name) }) ); - diff --git a/frontend/app/types/index.js b/frontend/app/types/index.js deleted file mode 100644 index d58b7449e..000000000 --- a/frontend/app/types/index.js +++ /dev/null @@ -1,4 +0,0 @@ -import Run from './run'; - -export const Results = results => Run(results); - diff --git a/frontend/app/types/site/gdpr.js b/frontend/app/types/site/gdpr.js deleted file mode 100644 index 9b6c58fd4..000000000 --- a/frontend/app/types/site/gdpr.js +++ /dev/null @@ -1,19 +0,0 @@ -import Record from 'Types/Record'; - -export default Record({ - id: undefined, - maskEmails: false, - maskNumbers: false, - defaultInputMode: 'plain', - sampleRate: 0, -}, { - idKey: 'id', - methods: { - toData() { - const js = this.toJS(); - - delete js.key; - return js; - }, - }, -}); diff --git a/frontend/app/types/site/gdpr.ts b/frontend/app/types/site/gdpr.ts new file mode 100644 index 000000000..1c899405f --- /dev/null +++ b/frontend/app/types/site/gdpr.ts @@ -0,0 +1,18 @@ +export interface IGDPR { + id?: number; + maskEmails: boolean; + maskNumbers: boolean; + defaultInputMode: string; + sampleRate: number; +} + +export default function GDPR(data?: Partial): IGDPR { + const defaults: IGDPR = { + id: undefined, + maskEmails: false, + maskNumbers: false, + defaultInputMode: 'plain', + sampleRate: 0, + } + return Object.assign({}, defaults, data); +} \ No newline at end of file diff --git a/frontend/app/types/site/site.js b/frontend/app/types/site/site.js deleted file mode 100644 index 6684c5752..000000000 --- a/frontend/app/types/site/site.js +++ /dev/null @@ -1,53 +0,0 @@ -import Record from 'Types/Record'; -import GDPR from './gdpr'; - -export const RED = 'red'; -export const YELLOW = 'yellow'; -export const GREEN = 'green'; - -export const STATUS_COLOR_MAP = { - [RED]: '#CC0000', - [YELLOW]: 'orange', - [GREEN]: 'green', -}; - -export default Record( - { - id: undefined, - name: '', - host: '', - platform: 'web', - status: RED, - lastRecordedSessionAt: undefined, - gdpr: GDPR(), - recorded: undefined, - stackIntegrations: false, - projectKey: undefined, - trackerVersion: undefined, - saveRequestPayloads: false, - sampleRate: 0, - conditionsCount: 0, - }, - { - idKey: 'id', - methods: { - validate() { - return this.name.length > 0; - }, - - toData() { - const js = this.toJS(); - delete js.key; - delete js.gdpr; - return js; - }, - }, - fromJS: ({ gdpr, projectId, name, ...rest }) => ({ - ...rest, - host: name, - name: name, - id: projectId === undefined ? undefined : `${projectId}`, //?!?!?!?!? - gdpr: GDPR(gdpr), - }), - } -); diff --git a/frontend/app/types/site/site.ts b/frontend/app/types/site/site.ts new file mode 100644 index 000000000..47d68b84e --- /dev/null +++ b/frontend/app/types/site/site.ts @@ -0,0 +1,43 @@ +import GDPR, { IGDPR } from './gdpr'; + +export interface ISite { + id?: number; + name: string; + host: string; + platform: string; + lastRecordedSessionAt: any; + gdpr: IGDPR; + recorded: boolean; + stackIntegrations: boolean; + projectKey?: string; + projectId?: number; + trackerVersion?: string; + saveRequestPayloads: boolean; + sampleRate: number; + conditionsCount: number; +} + +export default function Site(data: Partial): ISite { + const defaults: ISite = { + id: undefined, + name: '', + host: '', + platform: 'web', + lastRecordedSessionAt: undefined, + gdpr: GDPR(), + recorded: false, + stackIntegrations: false, + projectKey: undefined, + projectId: undefined, + trackerVersion: undefined, + saveRequestPayloads: false, + sampleRate: 0, + conditionsCount: 0, + }; + + return Object.assign({}, defaults, { + ...data, + gdpr: GDPR(data.gdpr), + host: data.name, + }); +} \ No newline at end of file