import { Action } from '@ngrx/store';
import { Hypermedia } from '../interfaces';

export const HypermediaActionTypes = {
    FETCH_HYPERMEDIA: '[Hypermedia] FetchHypermedia',
    RECEIVED_HYPERMEDIA: '[Hypermedia] ReceivedHypermedia'
};

export class FetchHypermedia implements Action {
    readonly type = HypermediaActionTypes.FETCH_HYPERMEDIA;

    constructor(public payload: {
        path: string,
        scope?: string,
        authorize?: boolean,
        tokenOverride?: string,
        interceptors?: {
            [key: string]: (hypermedia : Hypermedia) => void
        }
    }) { }
}

export class ReceivedHypermedia implements Action {
    readonly type = HypermediaActionTypes.RECEIVED_HYPERMEDIA;

    constructor(public payload: {
        path: string,
        scope?: string,
        authorize?: boolean,
        hypermedia: Hypermedia
    }) { }
}

export type HypermediaActions = FetchHypermedia | ReceivedHypermedia;
