feat: manually mirror opencoze's code from bytedance

Change-Id: I09a73aadda978ad9511264a756b2ce51f5761adf
This commit is contained in:
fanlv
2025-07-20 17:36:12 +08:00
commit 890153324f
14811 changed files with 1923430 additions and 0 deletions

View File

@@ -0,0 +1,63 @@
/*
* Copyright 2025 coze-dev Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { useEffect } from 'react';
import { reporter, logger } from '@coze-arch/logger';
import { useRouteConfig } from '@coze-arch/bot-hooks';
import { useErrorCatch } from '@coze-arch/bot-error';
import slardar from '@coze-studio/default-slardar';
import { useAlertOnLogout } from '@coze-foundation/global/use-app-init';
import {
useSyncLocalStorageUid,
useCheckLogin,
} from '@coze-foundation/account-adapter';
import { useSetResponsiveBodyStyle } from './use-responsive-body-style';
import { useResetStoreOnLogout } from './use-reset-store-on-logout';
import { useInitCommonConfig } from './use-init-common-config';
/**
* 所有初始化的逻辑收敛到这里
* 注意登录态需要自行处理
*/
export const useAppInit = () => {
const { requireAuth, requireAuthOptional, loginFallbackPath } =
useRouteConfig();
useCheckLogin({
needLogin: !!(requireAuth && !requireAuthOptional),
loginFallbackPath,
});
useSyncLocalStorageUid();
useEffect(() => {
reporter.info({ message: 'Ok fine' });
reporter.init(slardar);
logger.init(slardar);
}, []);
useErrorCatch(slardar);
useInitCommonConfig();
useResetStoreOnLogout();
useSetResponsiveBodyStyle();
useAlertOnLogout();
};

View File

@@ -0,0 +1,30 @@
/*
* Copyright 2025 coze-dev Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @file 社区版暂不支持后台配置,用于未来拓展
*/
import { useEffect } from 'react';
import { useCommonConfigStore } from '@coze-foundation/global-store';
export const useInitCommonConfig = () => {
const setInitialized = useCommonConfigStore(state => state.setInitialized);
useEffect(() => {
setInitialized();
}, []);
};

View File

@@ -0,0 +1,32 @@
/*
* Copyright 2025 coze-dev Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { useEffect } from 'react';
import { userStoreService } from '@coze-studio/user-store';
import { useBotListFilterStore } from '@coze-agent-ide/space-bot/store';
import { useSpaceStore } from '@coze-arch/bot-studio-store';
export const useResetStoreOnLogout = () => {
const isSettled = userStoreService.useIsSettled();
const isLogined = userStoreService.useIsLogined();
useEffect(() => {
if (isSettled && !isLogined) {
useSpaceStore.getState().reset();
useBotListFilterStore.getState().reset();
}
}, [isLogined, isSettled]);
};

View File

@@ -0,0 +1,31 @@
/*
* Copyright 2025 coze-dev Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { useEffect } from 'react';
import { setMobileBody, setPCBody } from '@coze-arch/bot-utils';
import { useIsResponsiveByRouteConfig } from '@coze-arch/bot-hooks';
export const useSetResponsiveBodyStyle = () => {
const isResponsive = useIsResponsiveByRouteConfig();
useEffect(() => {
if (isResponsive) {
setMobileBody();
} else {
setPCBody();
}
}, [isResponsive]);
};

View File

@@ -0,0 +1,40 @@
/*
* Copyright 2025 coze-dev Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { useLocation } from 'react-router-dom';
import { useEffect } from 'react';
import { logger } from '@coze-arch/logger';
export enum CustomPerfMarkNames {
RouteChange = 'route_change',
}
export const useTrackRouteChange = () => {
const location = useLocation();
useEffect(() => {
performance.mark(CustomPerfMarkNames.RouteChange, {
detail: {
location,
},
});
logger.info({
message: 'location change',
meta: { location },
});
}, [location.pathname]);
};