Add delete obstacle
This commit is contained in:
		
							parent
							
								
									e68cbd8469
								
							
						
					
					
						commit
						121205fa4b
					
				@ -61,7 +61,7 @@ export default function useModal () {
 | 
			
		||||
        dialogClassName={className}
 | 
			
		||||
        contentClassName={className}
 | 
			
		||||
      >
 | 
			
		||||
        <div className='d-flex flex-row'>
 | 
			
		||||
        <div className='d-flex flex-row align-self-end'>
 | 
			
		||||
          {modalOptions?.overflow &&
 | 
			
		||||
            <div className={'modal-btn modal-overflow ' + className}>
 | 
			
		||||
              <ActionDropdown>
 | 
			
		||||
 | 
			
		||||
@ -795,32 +795,6 @@ function ApiKey ({ enabled, apiKey }) {
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  )
 | 
			
		||||
  const [deleteApiKey] = useMutation(
 | 
			
		||||
    gql`
 | 
			
		||||
      mutation deleteApiKey($id: ID!) {
 | 
			
		||||
        deleteApiKey(id: $id) {
 | 
			
		||||
          id
 | 
			
		||||
        }
 | 
			
		||||
      }`,
 | 
			
		||||
    {
 | 
			
		||||
      update (cache, { data: { deleteApiKey } }) {
 | 
			
		||||
        cache.modify({
 | 
			
		||||
          id: 'ROOT_QUERY',
 | 
			
		||||
          fields: {
 | 
			
		||||
            settings (existing) {
 | 
			
		||||
              return {
 | 
			
		||||
                ...existing,
 | 
			
		||||
                privates: {
 | 
			
		||||
                  ...existing.privates,
 | 
			
		||||
                  authMethods: { ...existing.privates.authMethods, apiKey: false }
 | 
			
		||||
                }
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  )
 | 
			
		||||
  const toaster = useToast()
 | 
			
		||||
 | 
			
		||||
  const subject = '[API Key Request] <your title here>'
 | 
			
		||||
@ -846,7 +820,7 @@ I estimate that I will call the GraphQL API this many times (rough estimate is f
 | 
			
		||||
  // link to DM with ek on SimpleX
 | 
			
		||||
  const simplexLink = 'https://simplex.chat/contact#/?v=1-2&smp=smp%3A%2F%2F6iIcWT_dF2zN_w5xzZEY7HI2Prbh3ldP07YTyDexPjE%3D%40smp10.simplex.im%2FxNnPk9DkTbQJ6NckWom9mi5vheo_VPLm%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAnFUiU0M8jS1JY34LxUoPr7mdJlFZwf3pFkjRrhprdQs%253D%26srv%3Drb2pbttocvnbrngnwziclp2f4ckjq65kebafws6g4hy22cdaiv5dwjqd.onion'
 | 
			
		||||
 | 
			
		||||
  const disabled = !enabled
 | 
			
		||||
  const disabled = !enabled || apiKey
 | 
			
		||||
 | 
			
		||||
  return (
 | 
			
		||||
    <>
 | 
			
		||||
@ -854,7 +828,7 @@ I estimate that I will call the GraphQL API this many times (rough estimate is f
 | 
			
		||||
      <div className='mt-2 d-flex align-items-center'>
 | 
			
		||||
        <OverlayTrigger
 | 
			
		||||
          placement='bottom'
 | 
			
		||||
          overlay={disabled ? <Tooltip>request access to API keys in ~meta</Tooltip> : <></>}
 | 
			
		||||
          overlay={disabled ? <Tooltip>{apiKey ? 'you can have only one API key at a time' : 'request access to API keys in ~meta'}</Tooltip> : <></>}
 | 
			
		||||
          trigger={['hover', 'focus']}
 | 
			
		||||
        >
 | 
			
		||||
          <div>
 | 
			
		||||
@ -875,9 +849,9 @@ I estimate that I will call the GraphQL API this many times (rough estimate is f
 | 
			
		||||
            </Button>
 | 
			
		||||
            {apiKey &&
 | 
			
		||||
              <DeleteIcon
 | 
			
		||||
                style={{ cursor: 'pointer' }} className='fill-grey mx-1' width={24} height={24}
 | 
			
		||||
                style={{ cursor: 'pointer' }} className='fill-danger mx-1' width={24} height={24}
 | 
			
		||||
                onClick={async () => {
 | 
			
		||||
                  await deleteApiKey({ variables: { id: me.id } })
 | 
			
		||||
                  showModal((onClose) => <ApiKeyDeleteObstacle onClose={onClose} />)
 | 
			
		||||
                }}
 | 
			
		||||
              />}
 | 
			
		||||
          </div>
 | 
			
		||||
@ -924,6 +898,59 @@ function ApiKeyModal ({ apiKey }) {
 | 
			
		||||
  )
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function ApiKeyDeleteObstacle ({ onClose }) {
 | 
			
		||||
  const me = useMe()
 | 
			
		||||
  const [deleteApiKey] = useMutation(
 | 
			
		||||
    gql`
 | 
			
		||||
      mutation deleteApiKey($id: ID!) {
 | 
			
		||||
        deleteApiKey(id: $id) {
 | 
			
		||||
          id
 | 
			
		||||
        }
 | 
			
		||||
      }`,
 | 
			
		||||
    {
 | 
			
		||||
      update (cache, { data: { deleteApiKey } }) {
 | 
			
		||||
        cache.modify({
 | 
			
		||||
          id: 'ROOT_QUERY',
 | 
			
		||||
          fields: {
 | 
			
		||||
            settings (existing) {
 | 
			
		||||
              return {
 | 
			
		||||
                ...existing,
 | 
			
		||||
                privates: {
 | 
			
		||||
                  ...existing.privates,
 | 
			
		||||
                  authMethods: { ...existing.privates.authMethods, apiKey: false }
 | 
			
		||||
                }
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  )
 | 
			
		||||
  const toaster = useToast()
 | 
			
		||||
 | 
			
		||||
  return (
 | 
			
		||||
    <div className='text-center'>
 | 
			
		||||
      <p className='fw-bold'>
 | 
			
		||||
        Do you really want to delete your API key?
 | 
			
		||||
      </p>
 | 
			
		||||
      <div className='d-flex flex-row justify-content-end'>
 | 
			
		||||
        <Button
 | 
			
		||||
          variant='danger' onClick={async () => {
 | 
			
		||||
            try {
 | 
			
		||||
              await deleteApiKey({ variables: { id: me.id } })
 | 
			
		||||
              onClose()
 | 
			
		||||
            } catch (err) {
 | 
			
		||||
              console.error(err)
 | 
			
		||||
              toaster.danger('error deleting api key')
 | 
			
		||||
            }
 | 
			
		||||
          }}
 | 
			
		||||
        >do it
 | 
			
		||||
        </Button>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
  )
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const ZapUndosField = () => {
 | 
			
		||||
  const [checkboxField] = useField({ name: 'zapUndosEnabled' })
 | 
			
		||||
  return (
 | 
			
		||||
 | 
			
		||||
@ -481,6 +481,10 @@ div[contenteditable]:disabled,
 | 
			
		||||
.modal-content {
 | 
			
		||||
  background-color: var(--theme-inputBg);
 | 
			
		||||
  border-color: var(--theme-borderColor);
 | 
			
		||||
  align-items: center;
 | 
			
		||||
}
 | 
			
		||||
.modal-body {
 | 
			
		||||
  width: fit-content;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.nav-link:not(.text-success, .text-warning) {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user