Display correct info in hover preview (#5597)

This commit is contained in:
Apoorv Mishra
2023-07-23 21:31:46 +05:30
committed by GitHub
parent 479b805613
commit 0db6f39f43
3 changed files with 19 additions and 10 deletions

View File

@@ -1,8 +1,7 @@
import { differenceInMinutes, formatDistanceToNowStrict } from "date-fns"; import { differenceInMinutes, formatDistanceToNowStrict } from "date-fns";
import { t } from "i18next"; import { t } from "i18next";
import { head, orderBy } from "lodash";
import { dateLocale } from "@shared/utils/date"; import { dateLocale } from "@shared/utils/date";
import { Document, User } from "@server/models"; import { Document, User, View } from "@server/models";
import { opts } from "@server/utils/i18n"; import { opts } from "@server/utils/i18n";
export const presentLastOnlineInfoFor = (user: User) => { export const presentLastOnlineInfoFor = (user: User) => {
@@ -26,8 +25,17 @@ export const presentLastOnlineInfoFor = (user: User) => {
return info; return info;
}; };
export const presentLastViewedInfoFor = (user: User, document: Document) => { export const presentLastViewedInfoFor = async (
const lastView = head(orderBy(document.views, ["updatedAt"], ["desc"])); user: User,
document: Document
) => {
const lastView = await View.findOne({
where: {
userId: user.id,
documentId: document.id,
},
order: [["updatedAt", "DESC"]],
});
const lastViewedAt = lastView ? lastView.updatedAt : undefined; const lastViewedAt = lastView ? lastView.updatedAt : undefined;
const locale = dateLocale(user.language); const locale = dateLocale(user.language);

View File

@@ -2,16 +2,17 @@ import { Unfurl, UnfurlType } from "@shared/types";
import { Document, User } from "@server/models"; import { Document, User } from "@server/models";
import { presentLastOnlineInfoFor, presentLastViewedInfoFor } from "./common"; import { presentLastOnlineInfoFor, presentLastViewedInfoFor } from "./common";
function presentMention( async function presentMention(
user: User, user: User,
document: Document document: Document
): Unfurl<UnfurlType.Mention> { ): Promise<Unfurl<UnfurlType.Mention>> {
const lastOnlineInfo = presentLastOnlineInfoFor(user);
const lastViewedInfo = await presentLastViewedInfoFor(user, document);
return { return {
type: UnfurlType.Mention, type: UnfurlType.Mention,
title: user.name, title: user.name,
description: `${presentLastOnlineInfoFor( description: `${lastOnlineInfo}${lastViewedInfo}`,
user
)}${presentLastViewedInfoFor(user, document)}`,
thumbnailUrl: user.avatarUrl, thumbnailUrl: user.avatarUrl,
meta: { meta: {
id: user.id, id: user.id,

View File

@@ -42,7 +42,7 @@ router.post(
authorize(actor, "read", user); authorize(actor, "read", user);
authorize(actor, "read", document); authorize(actor, "read", document);
ctx.body = presentMention(user, document); ctx.body = await presentMention(user, document);
return; return;
} }