OverviewFilesCommitsIssuesDocsReleasesPeers

keet-deobfuscated / @holepunchto / keet-store / store / member / reported / members-reported.saga.js

72 lines · javascript ref:
import { call as e, put as r, takeLatest as o, select as i, fork as t } from "redux-saga/effects"
import {
  updateLatestMembersReportedOrder as m,
  appendOlderMembersReportedOrder as d,
  upsertMembersReportedById as l,
  updateMembersReportedLoadingStatus as c,
  setMembersReportedInViewRange as s,
  resetMembersReported as n,
  subscribeMembersReported as a,
  loadOlderMembersReported as b,
} from "./members-reported.action"
import {
  getMembersReportedMinClock as p,
  getMembersReportedLoadingStatus as y,
  getMembersReportedAnchorClock as f,
} from "./members-reported.selectors"
import { MEMBER_REPORTED_DEFAULT_LIMIT as u } from "./members-reported.constant"
import { LOADING_STATUS as R } from "../../lib/clock-list"
import { memberWaitProfileData as g } from "../member.saga"
import { taskErrorSaga as S } from "../../error"
import { apiSubscribeSaga as L } from "../../lib"
import { getCoreBackend as E } from "../../../backend"
import { apiCall as O } from "../../../api/core"
import { getMyMemberCapabilities as k, isMemberCapabilityChanged as A } from "../member.reducer"
import { canModerate as D } from "../member.model"
function* M(e) {
  yield r(n())
  try {
    const o = E(),
      i = u
    yield L([o.subscribeReportedMembers, e, { limit: i }], (e) => r(m(e)), {
      onError: (e) => S("membersReportedLatestSubscribeSaga", e),
    })
  } catch (e) {
    ;(yield r(c(R.ERROR)), yield S("membersReportedLatestSubscribeSaga", e))
  }
}
function* h(o) {
  try {
    const t = yield i(y),
      m = yield i(p)
    if (t === R.ALL_LOADED || null == m) return
    yield r(c(R.LOADING))
    const l = E(),
      s = u,
      n = yield e(O, l.getReportedMembers, o, { clock: m, limit: s })
    yield r(d(n))
  } catch (e) {
    ;(yield r(c(R.ERROR)), yield S("loadOlderMembersReportedSaga", e))
  }
}
function* I(e) {
  const o = yield i(k(e))
  if (!D(o)) return void (yield r(n()))
  const t = yield i(f),
    m = null === t ? { limit: u } : { clock: t, limit: u }
  yield L([E().subscribeReportedMembers, e, m], (e) => r(l(e)), {
    onError: (e) => S("membersReportedAnchorDataSaga", e),
  })
}
function* x(e) {
  yield o([s, m, d, A], I, e)
}
export function* membersReportedSaga(e, i) {
  yield g({ roomId: e, memberId: i })
  try {
    ;(yield t(x, e), yield o(a, M, e), yield o(b, h, e))
  } finally {
    yield r(n())
  }
}