accounts-frontend/packages/app/components/dev/apps/reducer.ts

47 lines
1.1 KiB
TypeScript
Raw Normal View History

import { OauthAppResponse } from 'app/services/api/oauth';
2019-12-07 16:58:52 +05:30
import { Action } from './actions';
2019-12-07 16:58:52 +05:30
export interface Apps {
2020-05-24 04:38:24 +05:30
available: Array<OauthAppResponse>;
2019-12-07 16:58:52 +05:30
}
const defaults: Apps = {
2020-05-24 04:38:24 +05:30
available: [],
};
export default function apps(state: Apps = defaults, action: Action): Apps {
2020-05-24 04:38:24 +05:30
switch (action.type) {
case 'apps:setAvailable':
return {
...state,
available: action.payload,
};
case 'apps:addApp': {
const { payload } = action;
const available = [...state.available];
let index = available.findIndex((app) => app.clientId === payload.clientId);
if (index === -1) {
index = available.length;
}
available[index] = action.payload;
return {
...state,
available,
};
}
case 'apps:deleteApp':
return {
...state,
available: state.available.filter((app) => app.clientId !== action.payload),
};
}
2020-05-24 04:38:24 +05:30
return state;
}