feat: Add board activity log

This commit is contained in:
Maksim Eltyshev
2025-05-22 23:14:46 +02:00
parent 777ff467f3
commit 86cfd155f2
72 changed files with 833 additions and 169 deletions
+39 -8
View File
@@ -10,10 +10,10 @@ import selectors from '../../../selectors';
import actions from '../../../actions';
import api from '../../../api';
export function* fetchActivities(cardId) {
const { lastActivityId } = yield select(selectors.selectCardById, cardId);
export function* fetchActivitiesInBoard(boardId) {
const { lastActivityId } = yield select(selectors.selectBoardById, boardId);
yield put(actions.fetchActivities(cardId));
yield put(actions.fetchActivitiesInBoard(boardId));
let activities;
let users;
@@ -22,21 +22,50 @@ export function* fetchActivities(cardId) {
({
items: activities,
included: { users },
} = yield call(request, api.getActivities, cardId, {
} = yield call(request, api.getActivitiesInBoard, boardId, {
beforeId: lastActivityId || undefined,
}));
} catch (error) {
yield put(actions.fetchActivities.failure(cardId, error));
yield put(actions.fetchActivitiesInBoard.failure(boardId, error));
return;
}
yield put(actions.fetchActivities.success(cardId, activities, users));
yield put(actions.fetchActivitiesInBoard.success(boardId, activities, users));
}
export function* fetchActivitiesInCurrentBoard() {
const { boardId } = yield select(selectors.selectPath);
yield call(fetchActivitiesInBoard, boardId);
}
export function* fetchActivitiesInCard(cardId) {
const { lastActivityId } = yield select(selectors.selectCardById, cardId);
yield put(actions.fetchActivitiesInCard(cardId));
let activities;
let users;
try {
({
items: activities,
included: { users },
} = yield call(request, api.getActivitiesInCard, cardId, {
beforeId: lastActivityId || undefined,
}));
} catch (error) {
yield put(actions.fetchActivitiesInCard.failure(cardId, error));
return;
}
yield put(actions.fetchActivitiesInCard.success(cardId, activities, users));
}
export function* fetchActivitiesInCurrentCard() {
const { cardId } = yield select(selectors.selectPath);
yield call(fetchActivities, cardId);
yield call(fetchActivitiesInCard, cardId);
}
export function* handleActivityCreate(activity) {
@@ -44,7 +73,9 @@ export function* handleActivityCreate(activity) {
}
export default {
fetchActivities,
fetchActivitiesInBoard,
fetchActivitiesInCurrentBoard,
fetchActivitiesInCard,
fetchActivitiesInCurrentCard,
handleActivityCreate,
};
@@ -10,6 +10,9 @@ import EntryActionTypes from '../../../constants/EntryActionTypes';
export default function* activitiesWatchers() {
yield all([
takeEvery(EntryActionTypes.ACTIVITIES_IN_CURRENT_BOARD_FETCH, () =>
services.fetchActivitiesInCurrentBoard(),
),
takeEvery(EntryActionTypes.ACTIVITIES_IN_CURRENT_CARD_FETCH, () =>
services.fetchActivitiesInCurrentCard(),
),