import { css } from '@emotion/css';
import { Dropdown, Menu, Modal } from 'antd';
import React, { createContext, useState } from 'react';
import { useTranslation } from 'react-i18next';
import { useNavigate } from 'react-router-dom';
import { useACLRoleContext, useAPIClient, useCurrentUserContext } from '..';
import { useCurrentAppInfo } from '../appInfo/CurrentAppInfoProvider';
import { ChangePassword } from './ChangePassword';
import { EditProfile } from './EditProfile';
import { LanguageSettings } from './LanguageSettings';
import { SwitchRole } from './SwitchRole';
import { ThemeSettings } from './ThemeSettings';
const ApplicationVersion = () => {
const data = useCurrentAppInfo();
return (
Version {data?.data?.version}
);
};
/**
* @note If you want to change here, Note the Setting block on the mobile side
*/
export const SettingsMenu: React.FC<{
redirectUrl?: string;
}> = (props) => {
const { redirectUrl = '' } = props;
const { allowAll, snippets } = useACLRoleContext();
const appAllowed = allowAll || snippets?.includes('app');
const navigate = useNavigate();
const api = useAPIClient();
const { t } = useTranslation();
const silenceApi = useAPIClient();
const check = async () => {
return await new Promise((resolve) => {
const heartbeat = setInterval(() => {
silenceApi
.silent()
.resource('app')
.getInfo()
.then((res) => {
console.log(res);
if (res?.status === 200) {
resolve('ok');
clearInterval(heartbeat);
}
return res;
})
.catch(() => {
// ignore
});
}, 3000);
});
};
return (
);
};
export const DropdownVisibleContext = createContext(null);
export const CurrentUser = () => {
const [visible, setVisible] = useState(false);
const { data } = useCurrentUserContext();
return (
{
setVisible(visible);
}}
overlay={}
>
{data?.data?.nickname || data?.data?.email}
);
};