feat: 增加alpha模式,并将虚拟列表丢到alpha模式中

pull/64/head
moonrailgun 2 years ago
parent ce8ee59541
commit a202419669

@ -0,0 +1,15 @@
import React, { Fragment, PropsWithChildren } from 'react';
import { useAlphaMode } from '../hooks/useAlphaMode';
/**
* Alpha
* alpha
*/
export const AlphaContainer: React.FC<PropsWithChildren> = React.memo(
(props) => {
const { isAlphaMode } = useAlphaMode();
return isAlphaMode ? <Fragment>{props.children}</Fragment> : null;
}
);
AlphaContainer.displayName = 'AlphaContainer';

@ -1,5 +1,5 @@
import React, { Fragment, PropsWithChildren } from 'react'; import React, { Fragment, PropsWithChildren } from 'react';
import { isDevelopment } from 'tailchat-shared'; import { isDevelopment } from '../utils/environment';
/** /**
* *

@ -0,0 +1,16 @@
import { useStorage } from '../manager/storage';
const alphaModeKey = 'alphaMode';
/**
* alpha
* alpha
*/
export function useAlphaMode() {
const [isAlphaMode, { save: setAlphaMode }] = useStorage<boolean>(
alphaModeKey,
false
);
return { isAlphaMode, setAlphaMode };
}

@ -16,6 +16,8 @@ export { useCachedUserInfo, useCachedOnlineStatus } from './cache/useCache';
// components // components
export { buildPortal, DefaultEventEmitter } from './components/Portal'; export { buildPortal, DefaultEventEmitter } from './components/Portal';
export { AlphaContainer } from './components/AlphaContainer';
export { DevContainer } from './components/DevContainer';
export { TcProvider } from './components/Provider'; export { TcProvider } from './components/Provider';
// contexts // contexts
@ -56,6 +58,7 @@ export {
useUserSettings, useUserSettings,
useSingleUserSetting, useSingleUserSetting,
} from './hooks/model/useUserSettings'; } from './hooks/model/useUserSettings';
export { useAlphaMode } from './hooks/useAlphaMode';
export { useAsync } from './hooks/useAsync'; export { useAsync } from './hooks/useAsync';
export { useAsyncFn } from './hooks/useAsyncFn'; export { useAsyncFn } from './hooks/useAsyncFn';
export { useAsyncRefresh } from './hooks/useAsyncRefresh'; export { useAsyncRefresh } from './hooks/useAsyncRefresh';

@ -1,6 +1,6 @@
import React, { useState, useContext, PropsWithChildren } from 'react'; import React, { useState, useContext, PropsWithChildren } from 'react';
import _get from 'lodash/get'; import _get from 'lodash/get';
import { DevContainer } from './DevContainer'; import { DevContainer } from 'tailchat-shared';
import clsx from 'clsx'; import clsx from 'clsx';
export interface SidebarViewMenuItemType { export interface SidebarViewMenuItemType {

@ -1,4 +1,3 @@
import { DevContainer } from '@/components/DevContainer';
import { import {
DefaultFullModalInputEditorRender, DefaultFullModalInputEditorRender,
FullModalField, FullModalField,

@ -3,7 +3,13 @@ import { LanguageSelect } from '@/components/LanguageSelect';
import { pluginColorScheme } from '@/plugin/common'; import { pluginColorScheme } from '@/plugin/common';
import { Select, Switch } from 'antd'; import { Select, Switch } from 'antd';
import React from 'react'; import React from 'react';
import { t, useColorScheme, useSingleUserSetting } from 'tailchat-shared'; import {
AlphaContainer,
t,
useAlphaMode,
useColorScheme,
useSingleUserSetting,
} from 'tailchat-shared';
export const SettingsSystem: React.FC = React.memo(() => { export const SettingsSystem: React.FC = React.memo(() => {
const { colorScheme, setColorScheme } = useColorScheme(); const { colorScheme, setColorScheme } = useColorScheme();
@ -12,6 +18,7 @@ export const SettingsSystem: React.FC = React.memo(() => {
setValue: setMessageListVirtualization, setValue: setMessageListVirtualization,
loading, loading,
} = useSingleUserSetting('messageListVirtualization', false); } = useSingleUserSetting('messageListVirtualization', false);
const { isAlphaMode, setAlphaMode } = useAlphaMode();
return ( return (
<div> <div>
@ -39,15 +46,31 @@ export const SettingsSystem: React.FC = React.memo(() => {
/> />
<FullModalField <FullModalField
title={t('聊天列表虚拟化') + ' (Beta)'} title={t('Alpha测试开关')}
tip={t(
'在 Alpha 模式下会有一些尚处于测试阶段的功能将会被开放,如果出现问题欢迎反馈'
)}
content={ content={
<Switch <Switch
disabled={loading} disabled={loading}
checked={messageListVirtualization} checked={isAlphaMode}
onChange={(checked) => setMessageListVirtualization(checked)} onChange={(checked) => setAlphaMode(checked)}
/> />
} }
/> />
{isAlphaMode && (
<FullModalField
title={t('聊天列表虚拟化') + ' (Beta)'}
content={
<Switch
disabled={loading}
checked={messageListVirtualization}
onChange={(checked) => setMessageListVirtualization(checked)}
/>
}
/>
)}
</div> </div>
); );
}); });

@ -1,11 +1,15 @@
import React, { PropsWithChildren } from 'react'; import React, { PropsWithChildren } from 'react';
import { Icon } from 'tailchat-design'; import { Icon } from 'tailchat-design';
import { SidebarItem } from '../SidebarItem'; import { SidebarItem } from '../SidebarItem';
import { t, useDMConverseList, useUserInfo } from 'tailchat-shared'; import {
t,
useDMConverseList,
useUserInfo,
DevContainer,
} from 'tailchat-shared';
import { SidebarDMItem } from './SidebarDMItem'; import { SidebarDMItem } from './SidebarDMItem';
import { openModal } from '@/components/Modal'; import { openModal } from '@/components/Modal';
import { CreateDMConverse } from '@/components/modals/CreateDMConverse'; import { CreateDMConverse } from '@/components/modals/CreateDMConverse';
import { DevContainer } from '@/components/DevContainer';
import { SectionHeader } from '@/components/SectionHeader'; import { SectionHeader } from '@/components/SectionHeader';
import { CommonSidebarWrapper } from '@/components/CommonSidebarWrapper'; import { CommonSidebarWrapper } from '@/components/CommonSidebarWrapper';
import { pluginCustomPanel } from '@/plugin/common'; import { pluginCustomPanel } from '@/plugin/common';

@ -4,7 +4,7 @@ import { MobileMenuBtn } from './MobileMenuBtn';
import { SettingBtn } from './SettingBtn'; import { SettingBtn } from './SettingBtn';
import { Divider } from 'antd'; import { Divider } from 'antd';
import { PersonalNav } from './PersonalNav'; import { PersonalNav } from './PersonalNav';
import { DevContainer } from '@/components/DevContainer'; import { DevContainer } from 'tailchat-shared';
import { InboxNav } from './InboxNav'; import { InboxNav } from './InboxNav';
import { InstallBtn } from './InstallBtn'; import { InstallBtn } from './InstallBtn';
import { ReactQueryDevBtn } from './ReactQueryDevBtn'; import { ReactQueryDevBtn } from './ReactQueryDevBtn';

@ -60,6 +60,16 @@
} }
} }
.ant-switch {
&:focus {
box-shadow: none;
}
&.ant-switch-checked:focus {
box-shadow: none;
}
}
// 表单 // 表单
.ant-form { .ant-form {
// 表单 // 表单

Loading…
Cancel
Save