create permissions store and write selectors

This commit is contained in:
Maren Süwer
2018-08-23 10:16:54 +02:00
parent b84472b11c
commit f81cc096aa
5 changed files with 178 additions and 30 deletions

View File

@@ -2,7 +2,9 @@
import { apiClient } from "../../apiclient";
import * as types from "../../modules/types";
import type { Action } from "../../types/Action";
import type { Permission, Permissions } from "../types/Permissions";
import type { Permissions } from "../types/Permissions";
import { isPending } from "../../modules/pending";
import { getFailure } from "../../modules/failure";
export const FETCH_PERMISSIONS = "scm/repos/FETCH_PERMISSIONS";
export const FETCH_PERMISSIONS_PENDING = `${FETCH_PERMISSIONS}_${
@@ -88,8 +90,32 @@ export default function reducer(
switch (action.type) {
case FETCH_PERMISSIONS_SUCCESS:
return state;
return {
...state,
[action.itemId]: action.payload
};
default:
return state;
}
}
// selectors
export function getPermissionsOfRepo(
state: Object,
namespace: string,
name: string
) {
if (state.permissions && state.permissions[namespace + "/" + name]) {
const permissions = state.permissions[namespace + "/" + name];
return permissions;
}
}
export function isFetchPermissionsPending(state: Object) {
return isPending(state, FETCH_PERMISSIONS);
}
export function getFetchPermissionsFailure(state: Object) {
return getFailure(state, FETCH_PERMISSIONS);
}