2023-01-13 05:40:33 +01:00
|
|
|
import * as Acct from "calckey-js/built/acct";
|
|
|
|
import { host as localHost } from "@/config";
|
2019-04-25 00:46:39 +02:00
|
|
|
|
|
|
|
export async function genSearchQuery(v: any, q: string) {
|
|
|
|
let host: string;
|
|
|
|
let userId: string;
|
2023-01-13 05:40:33 +01:00
|
|
|
if (q.split(" ").some((x) => x.startsWith("@"))) {
|
|
|
|
for (const at of q
|
|
|
|
.split(" ")
|
|
|
|
.filter((x) => x.startsWith("@"))
|
2023-07-13 08:56:22 +02:00
|
|
|
.map((x) => x.slice(1))) {
|
2023-01-13 05:40:33 +01:00
|
|
|
if (at.includes(".")) {
|
|
|
|
if (at === localHost || at === ".") {
|
2019-04-25 00:46:39 +02:00
|
|
|
host = null;
|
|
|
|
} else {
|
|
|
|
host = at;
|
|
|
|
}
|
|
|
|
} else {
|
2023-01-13 05:40:33 +01:00
|
|
|
const user = await v.os
|
|
|
|
.api("users/show", Acct.parse(at))
|
|
|
|
.catch((x) => null);
|
2019-04-25 00:46:39 +02:00
|
|
|
if (user) {
|
|
|
|
userId = user.id;
|
|
|
|
} else {
|
|
|
|
// todo: show error
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return {
|
2023-01-13 05:40:33 +01:00
|
|
|
query: q
|
|
|
|
.split(" ")
|
|
|
|
.filter((x) => !(x.startsWith("/") || x.startsWith("@")))
|
|
|
|
.join(" "),
|
2019-04-25 00:46:39 +02:00
|
|
|
host: host,
|
2023-01-13 05:40:33 +01:00
|
|
|
userId: userId,
|
2019-04-25 00:46:39 +02:00
|
|
|
};
|
|
|
|
}
|