62 lines
2.5 KiB
TypeScript
62 lines
2.5 KiB
TypeScript
// Metro module 15545 (f15546).
|
|
import MessageRecord from "../../../../records/MessageRecord";
|
|
import { CachedSearchResultParser } from "./CachedSearchResultParser";
|
|
import { getQueryContentString, getSearchQueryFromTokens, tokenizeQuery } from "../../SearchUtils";
|
|
import { analyze, shouldHighlight } from "../../../../lib/search/EnglishAnalyzer";
|
|
import { chain } from "../../../../_bundle/Module12";
|
|
class SearchResultMessageParser extends CachedSearchResultParser {
|
|
constructor(a0, a1) {
|
|
super();
|
|
const _this = this;
|
|
this.truncateMessage = function truncateMessage(a0, a1, r10 = 1) {
|
|
if (a0 == null) {
|
|
return null;
|
|
}
|
|
const r15 = a0.replace(/(\r\n|\n|\r)/gm, " ");
|
|
let c28077_0 = new Set(analyze(a1));
|
|
const r31 = r15.split(/(\W+)/g).find((item) => shouldHighlight(item, c28077_0));
|
|
if (r31 == null) {
|
|
return null;
|
|
}
|
|
const r41 = r15.search(new RegExp("\\b" + r31 + "\\b"));
|
|
if (r41 === -1) {
|
|
return null;
|
|
}
|
|
const r49 = Math.max(0, r41 - (30 * r10 - r31.length));
|
|
return `${r49 > 0 ? "..." : ""}${r15.substring(r49)}`;
|
|
};
|
|
this.getSearchResults = (a0) => {
|
|
if (_this.tokenizedQueryContent != null && _this.tokenizedQueryContent !== "") {
|
|
const content = _this.truncateMessage(a0.content, _this.tokenizedQueryContent, _this.lineClamp);
|
|
if (content != null) {
|
|
const messageRecord2 = new MessageRecord(a0);
|
|
messageRecord2.content = content;
|
|
return messageRecord2;
|
|
}
|
|
const content2 = chain(a0.embeds).map((item) => {
|
|
let r8 = _this.truncateMessage(item.rawTitle, _this.tokenizedQueryContent, _this.lineClamp);
|
|
if (r8 == null) {
|
|
r8 = _this.truncateMessage(item.rawDescription, _this.tokenizedQueryContent, _this.lineClamp);
|
|
}
|
|
return r8;
|
|
}).find((item) => item != null).value();
|
|
if (content2 != null) {
|
|
const messageRecord = new MessageRecord(a0);
|
|
messageRecord.content = content2;
|
|
return messageRecord;
|
|
}
|
|
return a0;
|
|
}
|
|
return a0;
|
|
};
|
|
const queryContentString = getQueryContentString(getSearchQueryFromTokens(tokenizeQuery(a0)));
|
|
let tokenizedQueryContent = queryContentString == null ? void 0 : queryContentString.trim();
|
|
if (tokenizedQueryContent == null) {
|
|
tokenizedQueryContent = "";
|
|
}
|
|
this.tokenizedQueryContent = tokenizedQueryContent;
|
|
this.lineClamp = a1;
|
|
}
|
|
}
|
|
export default SearchResultMessageParser;
|