Apply prettier formatting

This commit is contained in:
Michael Weimann 2022-12-12 12:24:14 +01:00
parent 1cac306093
commit 526645c791
No known key found for this signature in database
GPG key ID: 53F535A266BB9584
1576 changed files with 65385 additions and 62478 deletions

View file

@ -21,36 +21,38 @@ import { compare } from "matrix-js-sdk/src/utils";
import { Member } from "./direct-messages";
import DMRoomMap from "./DMRoomMap";
export const compareMembers = (
activityScores: Record<string, IActivityScore>,
memberScores: Record<string, IMemberScore>,
) => (a: Member | RoomMember, b: Member | RoomMember): number => {
const aActivityScore = activityScores[a.userId]?.score ?? 0;
const aMemberScore = memberScores[a.userId]?.score ?? 0;
const aScore = aActivityScore + aMemberScore;
const aNumRooms = memberScores[a.userId]?.numRooms ?? 0;
export const compareMembers =
(activityScores: Record<string, IActivityScore>, memberScores: Record<string, IMemberScore>) =>
(a: Member | RoomMember, b: Member | RoomMember): number => {
const aActivityScore = activityScores[a.userId]?.score ?? 0;
const aMemberScore = memberScores[a.userId]?.score ?? 0;
const aScore = aActivityScore + aMemberScore;
const aNumRooms = memberScores[a.userId]?.numRooms ?? 0;
const bActivityScore = activityScores[b.userId]?.score ?? 0;
const bMemberScore = memberScores[b.userId]?.score ?? 0;
const bScore = bActivityScore + bMemberScore;
const bNumRooms = memberScores[b.userId]?.numRooms ?? 0;
const bActivityScore = activityScores[b.userId]?.score ?? 0;
const bMemberScore = memberScores[b.userId]?.score ?? 0;
const bScore = bActivityScore + bMemberScore;
const bNumRooms = memberScores[b.userId]?.numRooms ?? 0;
if (aScore === bScore) {
if (aNumRooms === bNumRooms) {
return compare(a.userId, b.userId);
if (aScore === bScore) {
if (aNumRooms === bNumRooms) {
return compare(a.userId, b.userId);
}
return bNumRooms - aNumRooms;
}
return bNumRooms - aNumRooms;
}
return bScore - aScore;
};
return bScore - aScore;
};
function joinedRooms(cli: MatrixClient): Room[] {
return cli.getRooms()
.filter(r => r.getMyMembership() === 'join')
// Skip low priority rooms and DMs
.filter(r => !DMRoomMap.shared().getUserIdForRoomId(r.roomId))
.filter(r => !Object.keys(r.tags).includes("m.lowpriority"));
return (
cli
.getRooms()
.filter((r) => r.getMyMembership() === "join")
// Skip low priority rooms and DMs
.filter((r) => !DMRoomMap.shared().getUserIdForRoomId(r.roomId))
.filter((r) => !Object.keys(r.tags).includes("m.lowpriority"))
);
}
interface IActivityScore {
@ -64,16 +66,16 @@ interface IActivityScore {
// which are closer to "continue this conversation" rather than "this person exists".
export function buildActivityScores(cli: MatrixClient): { [key: string]: IActivityScore } {
const now = new Date().getTime();
const earliestAgeConsidered = now - (60 * 60 * 1000); // 1 hour ago
const earliestAgeConsidered = now - 60 * 60 * 1000; // 1 hour ago
const maxMessagesConsidered = 50; // so we don't iterate over a huge amount of traffic
const events = joinedRooms(cli)
.flatMap(room => takeRight(room.getLiveTimeline().getEvents(), maxMessagesConsidered))
.filter(ev => ev.getTs() > earliestAgeConsidered);
const senderEvents = groupBy(events, ev => ev.getSender());
return mapValues(senderEvents, events => {
const lastEvent = maxBy(events, ev => ev.getTs());
.flatMap((room) => takeRight(room.getLiveTimeline().getEvents(), maxMessagesConsidered))
.filter((ev) => ev.getTs() > earliestAgeConsidered);
const senderEvents = groupBy(events, (ev) => ev.getSender());
return mapValues(senderEvents, (events) => {
const lastEvent = maxBy(events, (ev) => ev.getTs());
const distanceFromNow = Math.abs(now - lastEvent.getTs()); // abs to account for slight future messages
const inverseTime = (now - earliestAgeConsidered) - distanceFromNow;
const inverseTime = now - earliestAgeConsidered - distanceFromNow;
return {
lastSpoke: lastEvent.getTs(),
// Scores from being in a room give a 'good' score of about 1.0-1.5, so for our
@ -92,19 +94,18 @@ interface IMemberScore {
export function buildMemberScores(cli: MatrixClient): { [key: string]: IMemberScore } {
const maxConsideredMembers = 200;
const consideredRooms = joinedRooms(cli).filter(room => room.getJoinedMemberCount() < maxConsideredMembers);
const memberPeerEntries = consideredRooms
.flatMap(room =>
room.getJoinedMembers().map(member =>
({ member, roomSize: room.getJoinedMemberCount() })));
const consideredRooms = joinedRooms(cli).filter((room) => room.getJoinedMemberCount() < maxConsideredMembers);
const memberPeerEntries = consideredRooms.flatMap((room) =>
room.getJoinedMembers().map((member) => ({ member, roomSize: room.getJoinedMemberCount() })),
);
const userMeta = groupBy(memberPeerEntries, ({ member }) => member.userId);
return mapValues(userMeta, roomMemberships => {
return mapValues(userMeta, (roomMemberships) => {
const maximumPeers = maxConsideredMembers * roomMemberships.length;
const totalPeers = sumBy(roomMemberships, entry => entry.roomSize);
const totalPeers = sumBy(roomMemberships, (entry) => entry.roomSize);
return {
member: minBy(roomMemberships, entry => entry.roomSize).member,
member: minBy(roomMemberships, (entry) => entry.roomSize).member,
numRooms: roomMemberships.length,
score: Math.max(0, Math.pow(1 - (totalPeers / maximumPeers), 5)),
score: Math.max(0, Math.pow(1 - totalPeers / maximumPeers, 5)),
};
});
}