Add support for returning transforming activity logs on the front-end
This commit is contained in:
parent
e15985ea39
commit
a5521ecb79
9 changed files with 162 additions and 6 deletions
26
resources/scripts/api/definitions/helpers.ts
Normal file
26
resources/scripts/api/definitions/helpers.ts
Normal file
|
@ -0,0 +1,26 @@
|
|||
import { FractalResponseData, FractalResponseList } from '@/api/http';
|
||||
|
||||
type Transformer<T> = (callback: FractalResponseData) => T;
|
||||
|
||||
const isList = (data: FractalResponseList | FractalResponseData): data is FractalResponseList => data.object === 'list';
|
||||
|
||||
function transform<T, M>(data: null | undefined, transformer: Transformer<T>, missing?: M): M;
|
||||
function transform<T, M>(data: FractalResponseData | null | undefined, transformer: Transformer<T>, missing?: M): T | M;
|
||||
function transform<T, M>(data: FractalResponseList | null | undefined, transformer: Transformer<T>, missing?: M): T[] | M;
|
||||
function transform<T> (data: FractalResponseData | FractalResponseList | null | undefined, transformer: Transformer<T>, missing = undefined) {
|
||||
if (data === undefined || data === null) {
|
||||
return missing;
|
||||
}
|
||||
|
||||
if (isList(data)) {
|
||||
return data.data.map(transformer);
|
||||
}
|
||||
|
||||
if (!data || !data.attributes || data.object === 'null_resource') {
|
||||
return missing;
|
||||
}
|
||||
|
||||
return transformer(data);
|
||||
}
|
||||
|
||||
export { transform };
|
Reference in a new issue