25 lines
697 B
TypeScript
25 lines
697 B
TypeScript
import { Epic } from "redux-observable";
|
|
import { login, logout } from "./authSlice";
|
|
import { filter, tap, ignoreElements, map } from "rxjs/operators";
|
|
import { fetchMetadata } from "../metadata/metadataSlice";
|
|
|
|
export const logoutRedirectEpic: Epic = action$ =>
|
|
action$.pipe(
|
|
filter(logout.fulfilled.match),
|
|
tap(() => {
|
|
// Use window.location for redirection in epics since we can't use hooks
|
|
window.location.href = "/login";
|
|
}),
|
|
ignoreElements()
|
|
);
|
|
|
|
export const onloginEpic: Epic = action$ =>
|
|
action$.pipe(
|
|
filter(login.fulfilled.match),
|
|
map(() => fetchMetadata())
|
|
);
|
|
|
|
const authEpics = [logoutRedirectEpic, onloginEpic];
|
|
|
|
export default authEpics;
|