Skip to content

Commit 18afbba

Browse files
authored
Merge pull request #9 from saveweb/no-ai-slop
Yes ai slop
2 parents 6db5173 + 136e71a commit 18afbba

File tree

2 files changed

+50
-1
lines changed

2 files changed

+50
-1
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,4 @@ yarn-error.log*
4141
next-env.d.ts
4242

4343
.vercel
44+
package-lock.json

app/components/search-box.tsx

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,10 @@ import {
1414
SelectValue,
1515
} from "@/components/ui/select";
1616
import { Toggle } from "@/components/ui/toggle";
17-
import { Code } from "lucide-react";
17+
import { Code, Clock } from "lucide-react";
1818
import ManualDialog from "./manual-dialog";
1919
import AdvancedFilterBuilder, { getCachedFilterRule } from "./filter-sphere";
20+
import { Button } from "@/components/ui/button";
2021

2122
export interface Props {
2223
query: string;
@@ -33,6 +34,8 @@ export enum Sort {
3334
IdAsc = "id:asc",
3435
}
3536

37+
const PRE_2023_DATE_FILTER = "date < sec(2023-01-01)";
38+
3639
export default function Search(props: Props) {
3740
const [useAdvancedSearch, setUseAdvancedSearch] = React.useState(
3841
props.initAdvancedSearch
@@ -45,12 +48,57 @@ export default function Search(props: Props) {
4548
props.onSortChange(sort);
4649
}, [sort]);
4750

51+
const handlePre2023Search = () => {
52+
const currentQuery = props.query.trim();
53+
const dateFilter = `(${PRE_2023_DATE_FILTER})`;
54+
55+
// Check if the query already contains the pre-2023 date filter
56+
if (currentQuery.includes(PRE_2023_DATE_FILTER)) {
57+
// Already has the filter, no need to add again
58+
return;
59+
}
60+
61+
// Check if current query already has a filter (ends with parenthesis)
62+
if (currentQuery.endsWith(")")) {
63+
// Extract simple query and existing filter
64+
const firstParen = currentQuery.indexOf("(");
65+
if (firstParen !== -1) {
66+
const simpleQuery = currentQuery.substring(0, firstParen).trim();
67+
const existingFilter = currentQuery.substring(firstParen);
68+
// Combine filters with AND
69+
const combinedFilter = `(${existingFilter.slice(1, -1)} AND ${PRE_2023_DATE_FILTER})`;
70+
const newQuery = simpleQuery ? `${simpleQuery} ${combinedFilter}` : combinedFilter;
71+
props.onChange(newQuery);
72+
} else {
73+
// Should not happen, but fallback
74+
props.onChange(`${currentQuery} ${dateFilter}`);
75+
}
76+
} else {
77+
// Simple query or empty, append filter
78+
const newQuery = currentQuery ? `${currentQuery} ${dateFilter}` : dateFilter;
79+
props.onChange(newQuery);
80+
}
81+
82+
setUseAdvancedSearch(true);
83+
setIsQueryMode(true);
84+
};
85+
4886
return (
4987
<div className="w-full font-semibold">
5088
<div className="flex flex-row items-center justify-end mb-2">
5189
<div className="mr-auto hidden md:block">
5290
<ManualDialog />
5391
</div>
92+
<Button
93+
variant="reverse"
94+
size="sm"
95+
onClick={handlePre2023Search}
96+
className="mr-2"
97+
title="搜索 2023 年以前的内容(人类时代)"
98+
>
99+
<Clock className="h-4 w-4" />
100+
人类时代
101+
</Button>
54102
{useAdvancedSearch && (
55103
<>
56104
<Toggle

0 commit comments

Comments
 (0)