@stackend/api
Version:
JS bindings to api.stackend.com
49 lines (43 loc) • 1.09 kB
text/typescript
import { ClearUserAction, ClearUsersAction, UsersReceivedAction, UsersState } from './usersReducer';
import { getUser, GetUserResult, User } from './index';
import { Thunk, XcapOptionalParameters } from '../api';
export function clearUsers(): ClearUsersAction {
return {
type: 'CLEAR_USERS'
};
}
export function clearUser(id: number): ClearUserAction {
return {
type: 'CLEAR_USER',
id
};
}
export function usersReceived(users: Array<User>): UsersReceivedAction {
return {
type: 'USERS_RECEIVED',
users
};
}
/**
* Fetch a user
* @param params
*/
export function fetchUser(
params: { id?: number; alias?: string } & XcapOptionalParameters
): Thunk<Promise<GetUserResult>> {
return async (dispatch: any): Promise<GetUserResult> => {
const r = await dispatch(getUser(params));
if (!r.error && r.user) {
dispatch(usersReceived([r.user]));
}
return r;
};
}
/**
* Get a user from the store
* @param state
* @param id
*/
export function getUserFromStore(state: UsersState, id: number): User | null {
return state[id] || null;
}