feat: manually mirror opencoze's code from bytedance
Change-Id: I09a73aadda978ad9511264a756b2ce51f5761adf
This commit is contained in:
@@ -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();
|
||||
};
|
||||
@@ -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();
|
||||
}, []);
|
||||
};
|
||||
@@ -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]);
|
||||
};
|
||||
@@ -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]);
|
||||
};
|
||||
@@ -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]);
|
||||
};
|
||||
Reference in New Issue
Block a user