Update selected item color in Pass menu
[ProtonMail-WebClient.git] / packages / pass / store / sagas / items / item-history.saga.ts
blob901ca50a2c1cb2dc75e4e2a6e2bedc1f667a8398
1 import { cancelled, put, takeLatest } from 'redux-saga/effects';
3 import { parseItemRevision } from '@proton/pass/lib/items/item.parser';
4 import { getItemRevisions } from '@proton/pass/lib/items/item.requests';
5 import { itemHistoryFailure, itemHistoryIntent, itemHistorySuccess } from '@proton/pass/store/actions';
6 import type { ItemRevision, ItemRevisionListResponse } from '@proton/pass/types';
8 function* loadHistoryWorker({ payload, meta: { request } }: ReturnType<typeof itemHistoryIntent>): Generator {
9     const ctrl = new AbortController();
11     try {
12         const result = (yield getItemRevisions(payload, ctrl.signal)) as ItemRevisionListResponse;
13         const { RevisionsData, LastToken, Total } = result;
14         const revisions = (yield Promise.all(
15             RevisionsData.map((revision) => parseItemRevision(payload.shareId, revision))
16         )) as ItemRevision[];
18         yield put(itemHistorySuccess(request.id, { revisions, next: LastToken, total: Total, since: payload.since }));
19     } catch (error) {
20         yield put(itemHistoryFailure(request.id, error));
21     } finally {
22         if (yield cancelled()) ctrl.abort();
23     }
26 export default function* watcher() {
27     yield takeLatest(itemHistoryIntent.match, loadHistoryWorker);