message: Option to set public key from metamask
diff: @@ -112,9 +112,12 @@ const AccessControlForm: FC<AccessControlFormProps> = ({ provider, signedInAddre
  const [myOrganization, setMyOrganization] = useState("");
  const [myPublicKey, setMyPublicKey] = useState("");
  const [myWalletLoading, setMyWalletLoading] = useState(false);
  + const [myUseMetamask, setMyUseMetamask] = useState(false);
  const myWalletQuery = trpc.useQuery(['wallet.get', {address: signedInAddress}], {
  enabled: !!signedInAddress,
  + refetchOnWindowFocus: false,
  onSettled: (result) => {
  + console.log('query get wallet', result)
  setMyName(result?.wallet?.name || '');
  setMyOrganization(result?.wallet?.organization || '');
  setMyPublicKey(result?.wallet?.public_key || '');
  @@ -510,9 +513,31 @@ const AccessControlForm: FC<AccessControlFormProps> = ({ provider, signedInAddre
  <FloatingLabel className="mb-2" controlId="myOrganizationInput" label="Organization">
  <Form.Control type="input" placeholder="Organization" value={myOrganization} onChange={(e)=>{ setMyOrganization(e.currentTarget.value) }}/>
  </FloatingLabel>
  + <Form.Check
  + type="switch"
  + id="use-metamask-switch"
  + label="Use metamask to provide a secure key"
  + checked={myUseMetamask}
  + onChange={async(e)=>{
  + const checked = e.currentTarget.checked
  + if (checked) {
  + const accounts = await ethereum.request({ method: 'eth_requestAccounts' });
  + const encryptionPublicKey = await ethereum.request({
  + method: 'eth_getEncryptionPublicKey',
  + params: [accounts[0]],
  + });
  + console.log(encryptionPublicKey);
  + setMyPublicKey(encryptionPublicKey);
  + }
  +
  + setMyUseMetamask(checked)
  + }}
  + />
  + {!myUseMetamask &&
  <FloatingLabel className="mb-2" controlId="myPublicKeyInput" label="Public Key">
  <Form.Control as="textarea" placeholder="Public Key" value={myPublicKey} onChange={(e)=>{ setMyPublicKey(e.currentTarget.value) }}/>
  </FloatingLabel>
  + }
  <Button
  className="w-100 mb-3"
  variant="primary"
  