mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-22 12:36:24 +08:00
feat(server): cleanup legacy compatibility (#15239)
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user