feat(server): cleanup legacy compatibility (#15239)

This commit is contained in:
DarkSky
2026-07-15 03:01:51 +08:00
committed by GitHub
parent 00d4ab10a1
commit e145d87d56
104 changed files with 3184 additions and 8883 deletions
-12
View File
@@ -227,18 +227,6 @@
"desc": "The minimum time interval in milliseconds of creating a new history snapshot when doc get updated."
}
},
"permission": {
"readModel": {
"type": "String",
"desc": "Permission data source for Rust evaluation",
"env": "AFFINE_PERMISSION_READ_MODEL"
},
"fallbackLegacyLoader": {
"type": "Boolean",
"desc": "Fallback from projection loader to legacy loader when projection input loading fails",
"env": "AFFINE_PERMISSION_FALLBACK_LEGACY_LOADER"
}
},
"storages": {
"avatar.publicPath": {
"type": "String",
@@ -35,20 +35,6 @@ export const useColumns = () => {
<div className="w-full truncate font-mono text-xs text-muted-foreground">
{workspace.id}
</div>
<div className="flex flex-wrap gap-2 text-xxs">
{workspace.features.length ? (
workspace.features.map(feature => (
<span
key={feature}
className="rounded-md border border-border/60 bg-chip-white px-2 py-0.5"
>
{feature}
</span>
))
) : (
<span className="text-muted-foreground">No features</span>
)}
</div>
</div>
);
},
@@ -1,6 +1,5 @@
import { Button } from '@affine/admin/components/ui/button';
import { Input } from '@affine/admin/components/ui/input';
import type { FeatureType } from '@affine/graphql';
import { AdminWorkspaceSort } from '@affine/graphql';
import type { Table } from '@tanstack/react-table';
import {
@@ -11,22 +10,18 @@ import {
useState,
} from 'react';
import { FeatureFilterPopover } from '../../../components/shared/feature-filter-popover';
import {
Popover,
PopoverContent,
PopoverTrigger,
} from '../../../components/ui/popover';
import { useDebouncedValue } from '../../../hooks/use-debounced-value';
import { useServerConfig } from '../../common';
import type { WorkspaceFlagFilter } from '../schema';
interface DataTableToolbarProps<TData> {
table?: Table<TData>;
keyword: string;
onKeywordChange: (keyword: string) => void;
selectedFeatures: FeatureType[];
onFeaturesChange: (features: FeatureType[]) => void;
flags: WorkspaceFlagFilter;
onFlagsChange: (flags: WorkspaceFlagFilter) => void;
sort: AdminWorkspaceSort | undefined;
@@ -47,8 +42,6 @@ const sortOptions: { value: AdminWorkspaceSort; label: string }[] = [
export function DataTableToolbar<TData>({
keyword,
onKeywordChange,
selectedFeatures,
onFeaturesChange,
flags,
onFlagsChange,
sort,
@@ -57,8 +50,6 @@ export function DataTableToolbar<TData>({
}: DataTableToolbarProps<TData>) {
const [value, setValue] = useState(keyword);
const debouncedValue = useDebouncedValue(value, 400);
const serverConfig = useServerConfig();
const availableFeatures = serverConfig.availableWorkspaceFeatures ?? [];
useEffect(() => {
setValue(keyword);
@@ -116,15 +107,7 @@ export function DataTableToolbar<TData>({
);
return (
<div className="flex items-center justify-between gap-y-2 gap-x-4 flex-wrap">
<FeatureFilterPopover
selectedFeatures={selectedFeatures}
availableFeatures={availableFeatures}
onChange={onFeaturesChange}
align="start"
disabled={disabled}
/>
<div className="flex items-center justify-end gap-y-2 gap-x-4 flex-wrap">
<div className="flex items-center gap-y-2 flex-wrap justify-end gap-2">
<Popover open={disabled ? false : undefined}>
<PopoverTrigger asChild>
@@ -1,4 +1,4 @@
import type { AdminWorkspaceSort, FeatureType } from '@affine/graphql';
import type { AdminWorkspaceSort } from '@affine/graphql';
import type { ColumnDef, PaginationState } from '@tanstack/react-table';
import type { Dispatch, SetStateAction } from 'react';
@@ -13,8 +13,6 @@ interface DataTableProps<TData, TValue> {
workspacesCount: number;
keyword: string;
onKeywordChange: (value: string) => void;
selectedFeatures: FeatureType[];
onFeaturesChange: (features: FeatureType[]) => void;
flags: WorkspaceFlagFilter;
onFlagsChange: Dispatch<SetStateAction<WorkspaceFlagFilter>>;
sort: AdminWorkspaceSort | undefined;
@@ -35,8 +33,6 @@ export function DataTable<TData extends { id: string }, TValue>({
workspacesCount,
keyword,
onKeywordChange,
selectedFeatures,
onFeaturesChange,
flags,
onFlagsChange,
sort,
@@ -51,14 +47,12 @@ export function DataTable<TData extends { id: string }, TValue>({
totalCount={workspacesCount}
pagination={pagination}
onPaginationChange={onPaginationChange}
resetFiltersDeps={[keyword, selectedFeatures, sort, flags]}
resetFiltersDeps={[keyword, sort, flags]}
renderToolbar={table => (
<DataTableToolbar
table={table}
keyword={keyword}
onKeywordChange={onKeywordChange}
selectedFeatures={selectedFeatures}
onFeaturesChange={onFeaturesChange}
flags={flags}
onFlagsChange={onFlagsChange}
sort={sort}
@@ -1,4 +1,3 @@
import type { FeatureType } from '@affine/graphql';
import { AdminWorkspaceSort } from '@affine/graphql';
import { useState } from 'react';
@@ -10,7 +9,6 @@ import { useWorkspaceList } from './use-workspace-list';
export function WorkspacePage() {
const [keyword, setKeyword] = useState('');
const [featureFilters, setFeatureFilters] = useState<FeatureType[]>([]);
const [flagFilters, setFlagFilters] = useState<WorkspaceFlagFilter>({});
const [sort, setSort] = useState<AdminWorkspaceSort | undefined>(
AdminWorkspaceSort.CreatedAt
@@ -19,7 +17,6 @@ export function WorkspacePage() {
const { workspaces, pagination, setPagination, workspacesCount, loading } =
useWorkspaceList({
keyword,
features: featureFilters,
orderBy: sort,
flags: flagFilters,
});
@@ -38,8 +35,6 @@ export function WorkspacePage() {
onPaginationChange={setPagination}
keyword={keyword}
onKeywordChange={setKeyword}
selectedFeatures={featureFilters}
onFeaturesChange={setFeatureFilters}
flags={flagFilters}
onFlagsChange={setFlagFilters}
sort={sort}
@@ -2,7 +2,6 @@ import type {
AdminUpdateWorkspaceMutation,
AdminWorkspaceQuery,
AdminWorkspacesQuery,
FeatureType,
} from '@affine/graphql';
export type WorkspaceListItem = AdminWorkspacesQuery['adminWorkspaces'][0];
@@ -15,8 +14,6 @@ export type WorkspaceSharedLink = WorkspaceDetail['sharedLinks'][0];
export type WorkspaceUpdateInput =
AdminUpdateWorkspaceMutation['adminUpdateWorkspace'];
export type WorkspaceFeatureFilter = FeatureType[];
export type WorkspaceFlagFilter = {
public?: boolean;
enableAi?: boolean;
@@ -1,5 +1,5 @@
import { useQuery } from '@affine/admin/use-query';
import type { AdminWorkspaceSort, FeatureType } from '@affine/graphql';
import type { AdminWorkspaceSort } from '@affine/graphql';
import {
adminWorkspacesCountQuery,
adminWorkspacesQuery,
@@ -10,7 +10,6 @@ import type { WorkspaceFlagFilter } from './schema';
export const useWorkspaceList = (filter?: {
keyword?: string;
features?: FeatureType[];
orderBy?: AdminWorkspaceSort;
flags?: WorkspaceFlagFilter;
}) => {
@@ -21,9 +20,7 @@ export const useWorkspaceList = (filter?: {
const filterKey = useMemo(
() =>
`${filter?.keyword ?? ''}-${[...(filter?.features ?? [])]
.sort()
.join(',')}-${filter?.orderBy ?? ''}-${JSON.stringify(
`${filter?.keyword ?? ''}-${filter?.orderBy ?? ''}-${JSON.stringify(
filter?.flags ?? {}
)}`,
[filter]
@@ -39,10 +36,6 @@ export const useWorkspaceList = (filter?: {
first: pagination.pageSize,
skip: pagination.pageIndex * pagination.pageSize,
keyword: filter?.keyword || undefined,
features:
filter?.features && filter.features.length > 0
? filter.features
: undefined,
orderBy: filter?.orderBy,
public: filter?.flags?.public,
enableAi: filter?.flags?.enableAi,