changes for gdpr and site types

This commit is contained in:
nick-delirium 2024-09-09 16:17:49 +02:00
parent c8a7991d77
commit 98e50d0e96
No known key found for this signature in database
GPG key ID: 93ABD695DF5FDBA0
7 changed files with 63 additions and 79 deletions

View file

@ -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',

View file

@ -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)
})
);

View file

@ -1,4 +0,0 @@
import Run from './run';
export const Results = results => Run(results);

View file

@ -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;
},
},
});

View file

@ -0,0 +1,18 @@
export interface IGDPR {
id?: number;
maskEmails: boolean;
maskNumbers: boolean;
defaultInputMode: string;
sampleRate: number;
}
export default function GDPR(data?: Partial<IGDPR>): IGDPR {
const defaults: IGDPR = {
id: undefined,
maskEmails: false,
maskNumbers: false,
defaultInputMode: 'plain',
sampleRate: 0,
}
return Object.assign({}, defaults, data);
}

View file

@ -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),
}),
}
);

View file

@ -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>): 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,
});
}