Added base handled for job decode and watcher start/top

This commit is contained in:
Patrick Fic
2020-10-14 11:26:10 -07:00
parent 953ea832e2
commit e7614942e5
25 changed files with 285 additions and 189 deletions

View File

@@ -1,30 +1,25 @@
import ApplicationActionTypes from "./application.types";
export const setRooms = (rooms) => ({
type: ApplicationActionTypes.SET_ROOMS,
payload: rooms,
export const setWatchedPaths = (watchedPaths) => ({
type: ApplicationActionTypes.SET_WATCHED_PATHS,
payload: watchedPaths,
});
export const addRoom = (room) => ({
type: ApplicationActionTypes.ADD_ROOM,
payload: room,
export const addWatchedPath = (path) => ({
type: ApplicationActionTypes.ADD_WATCHED_PATH,
payload: path,
});
export const addImages = ({ roomId, images }) => ({
type: ApplicationActionTypes.ADD_IMAGES_TO_ROOM,
payload: { roomId, images },
export const removeWatchedPath = (path) => ({
type: ApplicationActionTypes.REMOVE_WATCHED_PATH,
payload: path,
});
export const removeRoom = (roomId) => ({
type: ApplicationActionTypes.REMOVE_ROOM,
payload: roomId,
export const setWatcherStatus = (status) => ({
type: ApplicationActionTypes.SET_WATCHER_STATUS,
payload: status,
});
export const markNa = (roomId) => ({
type: ApplicationActionTypes.MARK_ROOM_NA,
payload: roomId,
});
export const joinRoom = (roomId) => ({
type: ApplicationActionTypes.JOIN_ROOM,
payload: roomId,
export const setWatcherError = (error) => ({
type: ApplicationActionTypes.SET_WATCHER_ERROR,
payload: error,
});

View File

@@ -1,49 +1,36 @@
import ApplicationActionTypes from "./application.types";
import _ from "lodash";
const INITIAL_STATE = {
rooms: [],
images: {
id: [],
},
watcherStatus: "Not Started",
watchedPaths: [],
watcherError: null,
};
const applicationReducer = (state = INITIAL_STATE, action) => {
switch (action.type) {
case ApplicationActionTypes.SET_ROOMS:
case ApplicationActionTypes.SET_WATCHED_PATHS:
return {
...state,
rooms: _.unionBy(state.rooms, action.payload, "id"),
watchedPaths: action.payload,
};
case ApplicationActionTypes.ADD_ROOM:
case ApplicationActionTypes.ADD_WATCHED_PATH:
return {
...state,
rooms: _.unionBy(state.rooms, [action.payload], "id"),
watchedPaths: [...state.watchedPaths, action.payload],
};
case ApplicationActionTypes.ADD_IMAGES_TO_ROOM:
case ApplicationActionTypes.REMOVE_WATCHED_PATH:
return {
...state,
images: {
...state.images,
[action.payload.roomId]: _.unionBy(
state.images[action.payload.roomId] || [],
action.payload.images,
"filename"
),
},
watchedPaths: state.watchedPaths.filter((p) => p !== action.payload),
};
case ApplicationActionTypes.REMOVE_ROOM:
case ApplicationActionTypes.SET_WATCHER_STATUS:
return {
...state,
rooms: state.rooms.filter((r) => r.id !== action.payload),
watcherStatus: action.payload,
};
case ApplicationActionTypes.MARK_ROOM_NA:
case ApplicationActionTypes.SET_WATCHER_ERROR:
return {
...state,
rooms: state.rooms.map((room) =>
room.id === action.payload ? { ...room, na: true } : room
),
watcherError: action.payload,
};
default:
return state;

View File

@@ -1,40 +1,13 @@
import { all, call, takeLatest } from "redux-saga/effects";
//import { all, call, takeLatest } from "redux-saga/effects";
import ApplicationActionTypes from "./application.types";
export function* onJoinRoom() {
yield takeLatest(ApplicationActionTypes.JOIN_ROOM, joinRoom);
}
export function* joinRoom({ payload: roomId }) {
// console.log("function*joinRoom -> roomId", roomId);
// //TH eactual function
// const state = yield select();
// const room = state.application.rooms.filter((r) => r.id === roomId)[0];
// yield put(addImages({ roomId: null, images: [] }));
// if (room) {
// socket.emit(
// "join",
// {
// roomName: room.name,
// parentRoomName: room.parentName,
// password: Math.round(Math.random() * 1000).toString(),
// },
// co.wrap(function* (payload) {
// console.log("Checking Room", payload);
// if (payload.room && payload.room.id) {
// console.log("about to put");
// yield put(
// addImages({
// roomId: payload.room.id,
// images: payload.room.medias,
// })
// );
// } else {
// yield put(markNa(room.id));
// }
// })
// );
// }
}
// export function* onJoinRoom() {
// yield takeLatest(ApplicationActionTypes.JOIN_ROOM, joinRoom);
// }
// export function* joinRoom({ payload: roomId }) {
// // console.log("function*joinRoom -> roomId", roomId);
// }
export function* applicationSagas() {
yield all([call(onJoinRoom)]);
//yield all([call(onJoinRoom)]);
}

View File

@@ -2,12 +2,17 @@ import { createSelector } from "reselect";
const selectApplication = (state) => state.application;
export const selectRooms = createSelector(
export const selectWatcherStatus = createSelector(
[selectApplication],
(application) => application.rooms
(application) => application.watcherStatus
);
export const selectImages = createSelector(
export const selectWatchedPaths = createSelector(
[selectApplication],
(application) => application.images
(application) => application.watchedPaths
);
export const selectWatcherError = createSelector(
[selectApplication],
(application) => application.watcherError
);

View File

@@ -1,9 +1,8 @@
const ApplicationActionTypes = {
SET_ROOMS: "SET_ROOMS",
ADD_ROOM: "ADD_ROOM",
ADD_IMAGES_TO_ROOM: "ADD_IMAGES_TO_ROOM",
REMOVE_ROOM: "REMOVE_ROOM",
MARK_ROOM_NA: "MARK_ROOM_NA",
JOIN_ROOM: "JOIN_ROOM",
SET_WATCHED_PATHS: "SET_WATCHED_PATHS",
ADD_WATCHED_PATH: "ADD_WATCHED_PATH",
REMOVE_WATCHED_PATH: "REMOVE_WATCHED_PATH",
SET_WATCHER_STATUS: "SET_WATCHER_STATUS",
SET_WATCHER_ERROR: "SET_WATCHER_ERROR",
};
export default ApplicationActionTypes;