305 lines
8.3 KiB
TypeScript
305 lines
8.3 KiB
TypeScript
// Metro module 6064 (f6065).
|
|
import ChannelStore from "../../stores/ChannelStore";
|
|
import { computeThreadIdsSnapshot } from "./ForumActivePostStore";
|
|
import ForumPostMessagesStore from "./ForumPostMessagesStore";
|
|
import ForumPostRecentMessageStore from "./ForumPostRecentMessageStore";
|
|
import { Endpoints } from "../../Constants";
|
|
import Module12 from "../../_bundle/Module12";
|
|
import SnowflakeUtils from "../../utils/SnowflakeUtils";
|
|
import { useStateFromStoresObject, useStateFromStores } from "../../_bundle/Module589";
|
|
import { HTTP } from "../../_bundle/sendRequest";
|
|
import Dispatcher from "../../Dispatcher";
|
|
function $mk77684($env) {
|
|
return (a0) => {
|
|
const r3 = $env.$parent;
|
|
const message = r3[6].getMessage(a0);
|
|
const { loaded, firstMessage } = message;
|
|
if (loaded ? !loaded : firstMessage == null) {
|
|
const r10 = $env;
|
|
r3[10].request(r10[0].id, a0);
|
|
r10[1] = true;
|
|
}
|
|
};
|
|
}
|
|
function $mk77687() {
|
|
return () => new Set();
|
|
}
|
|
let loadForumPostDataForChannelId, c3845_10;
|
|
let env3845 = {};
|
|
const loadForumPostData = async function loadForumPostData() {
|
|
let c25689_2;
|
|
let c25689_3 = 0;
|
|
L15: {
|
|
try {
|
|
c25689_3 = 1;
|
|
if (c3845_10.hasNext()) {
|
|
await (0, loadForumPostDataForChannelId)(c3845_10.next());
|
|
while (true) {
|
|
if (!c3845_10.hasNext()) {
|
|
c25689_3 = 0;
|
|
env3845[11] = null;
|
|
break L15;
|
|
}
|
|
await (0, loadForumPostDataForChannelId)(c3845_10.next());
|
|
}
|
|
} else {
|
|
c25689_3 = 0;
|
|
env3845[11] = null;
|
|
}
|
|
} catch ($e) {
|
|
const r25 = $e;
|
|
let r8 = r25;
|
|
c25689_2 = r25;
|
|
if (c25689_3 !== 0) {
|
|
while (true) {
|
|
try {
|
|
const r86 = c25689_2;
|
|
c25689_3 = 0;
|
|
env3845[11] = null;
|
|
throw r86;
|
|
} catch (r83) {
|
|
r8 = r83;
|
|
c25689_2 = r83;
|
|
if (c25689_3 === 0) {
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
throw r8;
|
|
}
|
|
return void 0;
|
|
}
|
|
};
|
|
loadForumPostDataForChannelId = async function loadForumPostDataForChannelId(c25690_0) {
|
|
let c25690_3;
|
|
let c25690_4 = 0;
|
|
let c29654_0, c29654_1, c29654_2, c29654_3;
|
|
L18: {
|
|
L16: {
|
|
try {
|
|
c29654_0 = c25690_0;
|
|
c29654_1 = void 0;
|
|
c29654_2 = void 0;
|
|
c29654_3 = void 0;
|
|
const nextBatch = c3845_10.getNextBatch(c25690_0, 10);
|
|
c29654_1 = nextBatch;
|
|
c25690_4 = 2;
|
|
if (nextBatch.length === 0) {
|
|
c25690_4 = 0;
|
|
c3845_10.finishRequesting(c25690_0, nextBatch);
|
|
break L18;
|
|
}
|
|
const guild_id = ChannelStore.getChannel(c25690_0)?.guild_id;
|
|
c29654_2 = guild_id;
|
|
if (guild_id != null) {
|
|
c29654_3 = (await HTTP.post({
|
|
url: Endpoints.FORUM_POSTS(c25690_0),
|
|
body: {
|
|
thread_ids: nextBatch
|
|
},
|
|
rejectWithError: true
|
|
})).body.threads;
|
|
Dispatcher.dispatch({
|
|
type: "LOAD_FORUM_POSTS",
|
|
guildId: c29654_2,
|
|
threads: c29654_3
|
|
});
|
|
c25690_4 = 1;
|
|
c25690_4 = 0;
|
|
c3845_10.finishRequesting(c29654_0, c29654_1);
|
|
break L16;
|
|
}
|
|
c25690_4 = 0;
|
|
c3845_10.finishRequesting(c25690_0, nextBatch);
|
|
} catch ($e) {
|
|
const r29 = $e;
|
|
let r8 = r29;
|
|
c25690_3 = r29;
|
|
let r30 = c25690_4;
|
|
if (r30 !== 0) {
|
|
while (true) {
|
|
if (r30 === 1) {
|
|
try {
|
|
const r112 = c25690_3;
|
|
c25690_4 = 0;
|
|
c3845_10.finishRequesting(c29654_0, c29654_1);
|
|
throw r112;
|
|
} catch (r109) {
|
|
r8 = r109;
|
|
c25690_3 = r109;
|
|
r30 = c25690_4;
|
|
if (r30 === 0) {
|
|
break;
|
|
}
|
|
}
|
|
} else {
|
|
try {
|
|
c25690_4 = 1;
|
|
c25690_4 = 0;
|
|
c3845_10.finishRequesting(c29654_0, c29654_1);
|
|
break L16;
|
|
} catch (r97) {
|
|
r8 = r97;
|
|
c25690_3 = r97;
|
|
r30 = c25690_4;
|
|
if (r30 === 0) {
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
throw r8;
|
|
}
|
|
return void 0;
|
|
}
|
|
return void 0;
|
|
}
|
|
};
|
|
class DefaultDict {
|
|
_set = {};
|
|
constructor(a0) {
|
|
this._defaultValueFunc = a0;
|
|
}
|
|
get(a0) {
|
|
if (!this._set.hasOwnProperty(a0)) {
|
|
this._set[a0] = this._defaultValueFunc();
|
|
}
|
|
return this._set[a0];
|
|
}
|
|
delete(a0) {
|
|
delete this._set[a0];
|
|
}
|
|
hasNext() {
|
|
return !Module12.isEmpty(this._set);
|
|
}
|
|
next() {
|
|
return SnowflakeUtils.keys(this._set)[0];
|
|
}
|
|
}
|
|
class RequestQueue {
|
|
constructor() {
|
|
const prototype = new.target.prototype;
|
|
const r9 = {
|
|
__proto__: prototype
|
|
};
|
|
const _defaultValueFunc = $mk77687();
|
|
const requested = {
|
|
__proto__: DefaultDict.prototype
|
|
};
|
|
requested._set = {};
|
|
requested._defaultValueFunc = _defaultValueFunc;
|
|
r9.requested = requested;
|
|
return r9;
|
|
}
|
|
request(a0, a1) {
|
|
this.requested.get(a0).add(a1);
|
|
}
|
|
hasRequested(a0, a1) {
|
|
return this.requested.get(a0).has(a1);
|
|
}
|
|
finishRequesting(a0, a1) {
|
|
let c15436_0 = this.requested.get(a0);
|
|
a1.forEach((item) => c15436_0.delete(item));
|
|
c3845_10.compact(a0);
|
|
}
|
|
getRequested(a0) {
|
|
return this.requested.get(a0);
|
|
}
|
|
getNextBatch(a0, a1) {
|
|
return Array.from(this.requested.get(a0)).slice(0, a1);
|
|
}
|
|
hasNext() {
|
|
return this.requested.hasNext();
|
|
}
|
|
next() {
|
|
return this.requested.next();
|
|
}
|
|
compact(a0) {
|
|
if (this.requested.get(a0).size === 0) {
|
|
this.requested.delete(a0);
|
|
}
|
|
}
|
|
}
|
|
const r61 = {
|
|
__proto__: RequestQueue.prototype
|
|
};
|
|
const requested = {
|
|
__proto__: DefaultDict.prototype
|
|
};
|
|
requested._set = {};
|
|
requested._defaultValueFunc = $mk77687();
|
|
r61.requested = requested;
|
|
c3845_10 = r61;
|
|
env3845[11] = null;
|
|
export const BATCH_SIZE = 10;
|
|
export function useFirstForumPostMessage(a0) {
|
|
let r5 = arguments[1];
|
|
if (r5 === void 0) {
|
|
r5 = {};
|
|
}
|
|
const { enabled = true, allowArchived = false } = r5;
|
|
const stateFromStoresObject = useStateFromStoresObject([ForumPostMessagesStore], () => ForumPostMessagesStore.getMessage(a0.id));
|
|
const { loaded, firstMessage } = stateFromStoresObject;
|
|
const stateFromStores2 = useStateFromStores([ChannelStore], () => ChannelStore.getChannel(a0.parent_id));
|
|
if (enabled && stateFromStores2 != null && (loaded ? !loaded : firstMessage == null)) {
|
|
const id2 = a0.id;
|
|
if (allowArchived) {
|
|
let env15440;
|
|
const r61 = [id2];
|
|
const r62 = env15440 = {
|
|
$parent: env3845
|
|
};
|
|
env15440[0] = stateFromStores2;
|
|
env15440[1] = false;
|
|
r61.forEach($mk77684(r62));
|
|
if (env15440[1] && env3845[11] == null) {
|
|
env3845[11] = setTimeout(loadForumPostData, 0);
|
|
}
|
|
} else {
|
|
const stateFromStores = stateFromStores2;
|
|
const id = id2;
|
|
if (!c3845_10.hasRequested(stateFromStores.id, id)) {
|
|
let env15439;
|
|
const r38 = (0, computeThreadIdsSnapshot)(stateFromStores.id);
|
|
const r41 = r38.findIndex((item) => item === id);
|
|
const r47 = r38.slice(r41, r41 + 5).filter((item) => !c3845_10.hasRequested(stateFromStores.id, item));
|
|
const r48 = env15439 = {
|
|
$parent: env3845
|
|
};
|
|
env15439[0] = stateFromStores;
|
|
env15439[1] = false;
|
|
r47.forEach($mk77684(r48));
|
|
if (env15439[1] && env3845[11] == null) {
|
|
env3845[11] = setTimeout(loadForumPostData, 0);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return {
|
|
loaded,
|
|
firstMessage: enabled ? firstMessage : null
|
|
};
|
|
}
|
|
export function useMostRecentForumMessage(a0, c15441_0) {
|
|
const stateFromStoresObject = useStateFromStoresObject([ForumPostRecentMessageStore], () => ForumPostRecentMessageStore.getMessageState(c15441_0.id));
|
|
return {
|
|
loaded: stateFromStoresObject.loaded,
|
|
mostRecentMessage: stateFromStoresObject.message
|
|
};
|
|
}
|
|
export function preloadForumThreads(a0) {
|
|
let env15442;
|
|
const r9 = (0, computeThreadIdsSnapshot)(a0.id).slice(0, 10);
|
|
const r12 = env15442 = {
|
|
$parent: env3845
|
|
};
|
|
env15442[0] = a0;
|
|
env15442[1] = false;
|
|
r9.forEach($mk77684(r12));
|
|
if (env15442[1] && env3845[11] == null) {
|
|
env3845[11] = setTimeout(loadForumPostData, 0);
|
|
}
|
|
}
|