import {
put as o,
call as t,
getContext as e,
select as s,
delay as i,
takeLatest as r,
} from "redux-saga/effects"
import { LOCAL_STORAGE_CONTEXT_KEY as a } from "../../constants"
import { taskErrorSaga as d } from "../../error"
import {
uploadsHydrateEvt as l,
clearUpload as n,
setUpload as c,
setBatchUploads as p,
updateUploadWithMetadata as m,
updateUpload as y,
updateUploadFileState as f,
startUploadingSend as u,
setProcessingFlag as g,
} from "../uploads.action"
import { getUploadsMap as S, getRoomsMap as h } from "../uploads.selectors"
import {
UPLOADS_CACHE_KEY as I,
UPLOADS_CACHE_PERSIST_DEBOUNCE as x,
} from "./uploads-cache.constant"
export function* uploadsInitData() {
try {
const s = yield e(a),
i = yield t(s.getItem, I)
if (!i) return
const r = "string" == typeof i ? JSON.parse(i) : i,
d = r.uploads || {},
c = r.rooms || {}
yield o(l({ uploads: d, rooms: c }))
const p = Object.keys(d)
for (let t = 0; t < p.length; t += 1) {
const e = p[t]
d[e] && d[e].isSending && (yield o(n({ id: e })))
}
} catch (o) {
yield d("uploadsInitData", o)
}
}
export function* uploadsPersistSaga() {
yield r([c, p, m, y, f, u, n, g, l], function* () {
yield i(x)
try {
const o = yield s(S),
i = yield s(h),
r = yield e(a)
yield t(r.setItem, I, JSON.stringify({ uploads: o, rooms: i }))
} catch (o) {
yield d("uploadsPersistSaga", o)
}
})
}