select-harlequinS
Refine2y ago
6 replies
select-harlequin

Update user's identity after user's data had been changed in AccountSettings

How do I update data from useGetIdentity when it changes after the user changed his username in account settings for example?

import { Popover, Button } from 'antd';
import React, { useState } from 'react';
import CustomAvatar from '../custom-avatar';
import { useGetIdentity } from '@refinedev/core';

import type { User } from '/graphql/schema.types';
import { Text } from '../text';
import { SettingOutlined } from '@ant-design/icons';
import { AccountSettings } from './account-settings';

const CurrentUser = () => {
  const [isOpen, setIsOpen] = useState(false);
  const { data: user } = useGetIdentity<User>();

  const content = (
    <div style={{ display: 'flex', flexDirection: 'column' }}>
      <Text strong style={{ padding: '12px 20px' }}>
        {user?.username}
      </Text>
      <div
        style={{
          borderTop: '1px solid #d9d9d9',
          padding: '4px',
          display: 'flex',
          flexDirection: 'column',
          gap: '4px',
        }}
      >
        <Button
          style={{ textAlign: 'left' }}
          icon={<SettingOutlined />}
          type="text"
          block
          onClick={() => setIsOpen(true)}
        >
          Account Settings
        </Button>
      </div>
    </div>
  );

  return (
    <>
      <Popover
        placement="bottomRight"
        trigger="click"
        overlayInnerStyle={{ padding: 0 }}
        overlayStyle={{ zIndex: 999 }}
        content={content}
      >
        <CustomAvatar
          username={user?.username}
          size="default"
          style={{ cursor: 'pointer' }}
        />
      </Popover>
      {user && (
        <AccountSettings
          opened={isOpen}
          setOpened={setIsOpen}
          userId={user.id}
        />
      )}
    </>
  );
};

export default CurrentUser;
Was this page helpful?