Compare commits

..

No commits in common. "7ec1d8ab1dc3d6f49bf387e056e15001f0831117" and "1e7915837ac10f12b24a786531835714205ae89e" have entirely different histories.

3 changed files with 23 additions and 27 deletions

View File

@ -20,7 +20,6 @@
limit?: number;
from?: number;
hash?: string;
preview?: boolean;
}): Promise<Feedback[]> {
if (!browser) return [];
@ -28,8 +27,6 @@
method: 'POST',
body: JSON.stringify({
...feedbackFilter,
preview: extendedFilter?.preview ?? true,
hash: extendedFilter?.hash ?? undefined,
limit: extendedFilter?.limit ?? feedbacksPerRequest,
from: extendedFilter?.from ?? feedbacks.length
})
@ -41,14 +38,19 @@
if (!window.location.hash) return;
const requestedHash = window.location.hash.substring(1);
const hashFeedback = await fetchFeedback({ hash: requestedHash, preview: false });
if (!hashFeedback) {
await goto(window.location.href.split('#')[0], { replaceState: true });
return;
let feedback = feedbacks.find((r) => r.url_hash === requestedHash);
if (!feedback) {
const hashFeedback = (await fetchFeedback({ hash: requestedHash }))[0];
if (hashFeedback) {
feedback = [hashFeedback, ...feedback];
feedback = hashFeedback;
} else {
await goto(window.location.href.split('#')[0], { replaceState: true });
return;
}
}
activeFeedback = hashFeedback[0];
activeFeedback = feedback;
}
onMount(async () => {
@ -82,11 +84,11 @@
<tr
class="hover [&>*]:text-sm cursor-pointer"
class:bg-base-200={activeFeedback?.url_hash === feedback.url_hash}
on:click={async () => {
await goto(`${window.location.href.split('#')[0]}#${feedback.url_hash}`, {
on:click={() => {
goto(`${window.location.href.split('#')[0]}#${feedback.url_hash}`, {
replaceState: true
});
await openHashReport();
activeFeedback = feedback;
}}
>
<td title={feedback.event}>{feedback.event}</td>

View File

@ -20,9 +20,7 @@ export const POST = (async ({ request, cookies }) => {
}
const data = parseResult.data;
let feedbackFindOptions: Attributes<Feedback> = {
content: { [Op.not]: null }
};
let feedbackFindOptions: Attributes<Feedback> = {};
if (data.event) Object.assign(feedbackFindOptions, { event: { [Op.like]: `%${data.event}%` } });
// prettier-ignore
if (data.content) Object.assign(feedbackFindOptions, { content: { [Op.like]: `%${data.content}%` } });
@ -33,21 +31,19 @@ export const POST = (async ({ request, cookies }) => {
where: { username: { [Op.like]: `%${data.username}%` } }
}).then((users) => users.map((user) => user.id))
});
if (data.hash) Object.assign(feedbackFindOptions, { url_hash: data.hash });
if (data.hash) Object.assign(feedbackFindOptions, { url_hash: data.hash, from: 0, limit: 1 });
let feedback = await Feedback.findAll({
where: feedbackFindOptions,
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
attributes: data.preview
? {
exclude: ['content'],
include: [[sequelize.literal('SUBSTR(content, 1, 50)'), 'content']]
}
: undefined,
attributes: {
exclude: ['content'],
include: [[sequelize.literal('SUBSTR(content, 0, 50)'), 'content']]
},
include: { model: User, as: 'user' },
offset: data.hash ? 0 : data.from || 0,
limit: data.hash ? 1 : data.limit || 100
offset: data.from || 0,
limit: data.limit || 100
});
return new Response(JSON.stringify(feedback));

View File

@ -9,7 +9,5 @@ export const FeedbackListSchema = z.object({
hash: z.string().nullish(),
username: z.string().nullish(),
preview: z.boolean().nullish()
username: z.string().nullish()
});