refactor: remove legacy cloud (#2987)

This commit is contained in:
Alex Yang
2023-07-03 22:29:37 +08:00
committed by GitHub
parent 3d0a907b49
commit a5d2fafad6
87 changed files with 148 additions and 6383 deletions
@@ -1,16 +0,0 @@
import { WorkspaceFlavour } from '@affine/env/workspace';
import { useRouter } from 'next/router';
import { useCallback } from 'react';
import { WorkspaceAdapters } from '../../adapters/workspace';
export function useAffineLogIn() {
const router = useRouter();
return useCallback(async () => {
await WorkspaceAdapters[WorkspaceFlavour.AFFINE].Events[
'workspace:access'
]?.();
// todo: remove reload page requirement
router.reload();
}, [router]);
}
@@ -1,15 +0,0 @@
import { WorkspaceFlavour } from '@affine/env/workspace';
import { useRouter } from 'next/router';
import { useCallback } from 'react';
import { WorkspaceAdapters } from '../../adapters/workspace';
export function useAffineLogOut() {
const router = useRouter();
return useCallback(async () => {
await WorkspaceAdapters[WorkspaceFlavour.AFFINE].Events[
'workspace:revoke'
]?.();
router.reload();
}, [router]);
}
@@ -1,50 +0,0 @@
import { DebugLogger } from '@affine/debug';
import {
getLoginStorage,
isExpired,
parseIdToken,
setLoginStorage,
storageChangeSlot,
} from '@affine/workspace/affine/login';
import { affineAuth } from '@affine/workspace/affine/shared';
import useSWR from 'swr';
const logger = new DebugLogger('auth-token');
const revalidate = async () => {
const storage = getLoginStorage();
if (storage) {
try {
const tokenMessage = parseIdToken(storage.token);
logger.debug('revalidate affine user');
if (isExpired(tokenMessage)) {
logger.debug('need to refresh token');
const response = await affineAuth.refreshToken(storage);
if (response) {
setLoginStorage(response);
storageChangeSlot.emit();
}
}
} catch (e) {
return false;
}
return true;
} else {
return false;
}
};
export function useAffineRefreshAuthToken(
// every 30 seconds, check if the token is expired
refreshInterval = 30 * 1000
) {
const { data } = useSWR<boolean>('autoRefreshToken', {
suspense: true,
fetcher: revalidate,
refreshInterval,
revalidateOnFocus: true,
revalidateOnReconnect: true,
revalidateOnMount: true,
});
return data;
}
@@ -1,10 +0,0 @@
import { WorkspaceFlavour } from '@affine/env/workspace';
import { PermissionType } from '@affine/env/workspace/legacy-cloud';
import type { AffineOfficialWorkspace } from '../../shared';
export function useIsWorkspaceOwner(workspace: AffineOfficialWorkspace) {
if (workspace.flavour === WorkspaceFlavour.LOCAL) return true;
if (workspace.flavour === WorkspaceFlavour.PUBLIC) return false;
return workspace.permission === PermissionType.Owner;
}
-42
View File
@@ -1,42 +0,0 @@
import type { Member } from '@affine/env/workspace/legacy-cloud';
import { affineApis } from '@affine/workspace/affine/shared';
import { useCallback } from 'react';
import useSWR from 'swr';
import { QueryKey } from '../../adapters/affine/fetcher';
export function useMembers(workspaceId: string) {
const { data, mutate } = useSWR<Member[]>(
[QueryKey.getMembers, workspaceId],
{
fallbackData: [],
}
);
const inviteMember = useCallback(
async (email: string) => {
await affineApis.inviteMember({
id: workspaceId,
email,
});
return mutate();
},
[mutate, workspaceId]
);
const removeMember = useCallback(
async (permissionId: number) => {
await affineApis.removeMember({
permissionId,
});
return mutate();
},
[mutate]
);
return {
members: data ?? [],
inviteMember,
removeMember,
};
}
@@ -1,26 +0,0 @@
import type { AffineLegacyCloudWorkspace } from '@affine/env/workspace';
import { affineApis } from '@affine/workspace/affine/shared';
import { rootWorkspacesMetadataAtom } from '@affine/workspace/atom';
import { rootStore } from '@toeverything/plugin-infra/manager';
import { useCallback } from 'react';
import useSWR from 'swr';
import { QueryKey } from '../../adapters/affine/fetcher';
export function useToggleWorkspacePublish(
workspace: AffineLegacyCloudWorkspace
) {
const { mutate } = useSWR(QueryKey.getWorkspaces);
return useCallback(
async (isPublish: boolean) => {
await affineApis.updateWorkspace({
id: workspace.id,
public: isPublish,
});
await mutate(QueryKey.getWorkspaces);
// fixme: remove force update
await rootStore.set(rootWorkspacesMetadataAtom, ws => [...ws]);
},
[mutate, workspace.id]
);
}
@@ -1,24 +0,0 @@
import useSWR from 'swr';
import { QueryKey } from '../../adapters/affine/fetcher';
export interface QueryEmailMember {
id: string;
name: string;
email: string;
avatar_url: string;
create_at: string;
}
export function useUsersByEmail(
workspaceId: string,
email: string
): QueryEmailMember[] | null {
const { data } = useSWR<QueryEmailMember[] | null>(
[QueryKey.getUserByEmail, workspaceId, email],
{
fallbackData: null,
}
);
return data ?? null;
}
@@ -1,7 +0,0 @@
import { currentAffineUserAtom } from '@affine/workspace/affine/atom';
import type { AccessTokenMessage } from '@affine/workspace/affine/login';
import { useAtomValue } from 'jotai';
export function useCurrentUser(): AccessTokenMessage | null {
return useAtomValue(currentAffineUserAtom);
}
@@ -1,14 +1,5 @@
import type { WorkspaceRegistry } from '@affine/env/workspace';
import { WorkspaceFlavour } from '@affine/env/workspace';
import { currentAffineUserAtom } from '@affine/workspace/affine/atom';
import {
getLoginStorage,
parseIdToken,
setLoginStorage,
SignMethod,
storageChangeSlot,
} from '@affine/workspace/affine/login';
import { affineAuth } from '@affine/workspace/affine/shared';
import type { WorkspaceFlavour } from '@affine/env/workspace';
import { rootCurrentWorkspaceIdAtom } from '@affine/workspace/atom';
import { useSetAtom } from 'jotai';
import { useCallback } from 'react';
@@ -17,7 +8,6 @@ import { useTransformWorkspace } from '../use-transform-workspace';
export function useOnTransformWorkspace() {
const transformWorkspace = useTransformWorkspace();
const setUser = useSetAtom(currentAffineUserAtom);
const setWorkspaceId = useSetAtom(rootCurrentWorkspaceIdAtom);
return useCallback(
async <From extends WorkspaceFlavour, To extends WorkspaceFlavour>(
@@ -25,15 +15,6 @@ export function useOnTransformWorkspace() {
to: To,
workspace: WorkspaceRegistry[From]
): Promise<void> => {
const needRefresh = to === WorkspaceFlavour.AFFINE && !getLoginStorage();
if (needRefresh) {
const response = await affineAuth.generateToken(SignMethod.Google);
if (response) {
setLoginStorage(response);
setUser(parseIdToken(response.token));
storageChangeSlot.emit();
}
}
const workspaceId = await transformWorkspace(from, to, workspace);
window.dispatchEvent(
new CustomEvent('affine-workspace:transform', {
@@ -47,7 +28,7 @@ export function useOnTransformWorkspace() {
);
setWorkspaceId(workspaceId);
},
[setUser, setWorkspaceId, transformWorkspace]
[setWorkspaceId, transformWorkspace]
);
}