94 lines
3.2 KiB
TypeScript
94 lines
3.2 KiB
TypeScript
// Metro module 11294 (f11295).
|
|
import { useEffect, useMemo } from "react";
|
|
import ApplicationFrecencyStore from "./ApplicationFrecencyStore";
|
|
import { UserSettingsTypes } from "../user_settings/UserSettingsConstants";
|
|
import { FrecencyUserSettingsActionCreators } from "../user_settings/UserSettingsProtoActionCreators";
|
|
import { useStateFromStores } from "../../_bundle/Module589";
|
|
import SnowflakeUtils from "../../utils/SnowflakeUtils";
|
|
import { getApplicationCommandSection } from "../application_commands/ApplicationCommandUtils";
|
|
export function useSortApplicationsViaFrecency(a0, a1) {
|
|
let stateFromStores, memo, memo2, memo3;
|
|
let c18719_0 = a0;
|
|
useEffect(() => {
|
|
FrecencyUserSettingsActionCreators.loadIfUncached(UserSettingsTypes.FRECENCY_AND_FAVORITES_SETTINGS);
|
|
}, []);
|
|
stateFromStores = useStateFromStores([ApplicationFrecencyStore], () => ApplicationFrecencyStore.getApplicationFrecencyWithoutLoadingLatest());
|
|
memo = useMemo(() => a1 != null && a1.length !== 0 ? c18719_0.map((a0) => {
|
|
let isUserApp = a1 == null ? void 0 : a1.some((item) => item.application.id === a0.id);
|
|
if (isUserApp == null) {
|
|
isUserApp = false;
|
|
}
|
|
return {
|
|
...a0,
|
|
isUserApp
|
|
};
|
|
}) : c18719_0, [a0, a1]);
|
|
memo2 = useMemo(() => a1 == null ? void 0 : a1.filter((c30387_0) => !c18719_0.some((item) => item.id === c30387_0.application.id)), [a0, a1]);
|
|
memo3 = useMemo(() => {
|
|
if (memo2 != null) {
|
|
memo2.forEach((item) => {
|
|
const timestamp = SnowflakeUtils.extractTimestamp(item.id);
|
|
if (stateFromStores.getEntry(item.application.id) == null) {
|
|
stateFromStores.track(item.application.id, {
|
|
timestamp
|
|
});
|
|
}
|
|
});
|
|
}
|
|
stateFromStores.compute();
|
|
let r8 = memo2 == null ? void 0 : memo2.map((item) => getApplicationCommandSection(item.application, true));
|
|
if (r8 == null) {
|
|
r8 = [];
|
|
}
|
|
const r19 = [...memo];
|
|
r19.push.apply(r19, [...r8]);
|
|
r19.sort((a, b) => {
|
|
let r5 = stateFromStores.getScore(b.id);
|
|
if (r5 == null) {
|
|
r5 = 0;
|
|
}
|
|
let r11 = stateFromStores.getScore(a.id);
|
|
if (r11 == null) {
|
|
r11 = 0;
|
|
}
|
|
let r12 = r5 - r11;
|
|
if (r12 === 0) {
|
|
r12 = a.name.localeCompare(b.name);
|
|
}
|
|
return r12;
|
|
});
|
|
return r19;
|
|
}, [memo, stateFromStores, memo2]);
|
|
return useMemo(() => {
|
|
let c27014_0, c27014_1, c27014_2;
|
|
if (a1 != null) {
|
|
a1.forEach((item) => {
|
|
const r12 = SnowflakeUtils.extractTimestamp(item.id);
|
|
if (c27014_1 == null || r12 > c27014_1) {
|
|
c27014_0 = item;
|
|
c27014_1 = r12;
|
|
}
|
|
});
|
|
}
|
|
memo.forEach((item) => {
|
|
const r8 = Math;
|
|
const max = r8.max;
|
|
let r16 = stateFromStores.getEntry(item.id)?.recentUses;
|
|
if (r16 == null) {
|
|
r16 = [];
|
|
}
|
|
const r22 = max.apply(r8, [...r16]);
|
|
if (c27014_1 == null || r22 > c27014_1) {
|
|
c27014_0 = item;
|
|
c27014_1 = r22;
|
|
}
|
|
});
|
|
let r18 = c27014_0 == null ? void 0 : c27014_0.application?.id;
|
|
if (r18 == null) {
|
|
r18 = "";
|
|
}
|
|
c27014_2 = r18;
|
|
return [...memo3.filter((item) => item.id === c27014_2), ...memo3.filter((item) => item.id !== c27014_2)];
|
|
}, [memo3, memo, stateFromStores, a1]);
|
|
}
|