import { Checkbox, Form, Input, SubmitButton, Select } from '../components/form' import * as Yup from 'yup' import { Alert, Button, InputGroup, Modal } from 'react-bootstrap' import LayoutCenter from '../components/layout-center' import { useState } from 'react' import { gql, useMutation, useQuery } from '@apollo/client' import { getGetServerSideProps } from '../api/ssrApollo' import LoginButton from '../components/login-button' import { signIn } from 'next-auth/client' import ModalButton from '../components/modal-button' import { LightningAuth } from '../components/lightning-auth' import { SETTINGS, SET_SETTINGS } from '../fragments/users' import { useRouter } from 'next/router' import Info from '../components/info' import { CURRENCY_SYMBOLS } from '../components/price' export const getServerSideProps = getGetServerSideProps(SETTINGS) const supportedCurrencies = Object.keys(CURRENCY_SYMBOLS) export const SettingsSchema = Yup.object({ tipDefault: Yup.number().typeError('must be a number').required('required') .positive('must be positive').integer('must be whole'), fiatCurrency: Yup.string().required('required').oneOf(supportedCurrencies) }) const warningMessage = 'If I logout, even accidentally, I will never be able to access my account again' export const WarningSchema = Yup.object({ warning: Yup.string().matches(warningMessage, 'does not match').required('required') }) export default function Settings ({ data: { settings } }) { const [success, setSuccess] = useState() const [setSettings] = useMutation(SET_SETTINGS, { update (cache, { data: { setSettings } }) { cache.modify({ id: 'ROOT_QUERY', fields: { settings () { return setSettings } } }) } } ) const { data } = useQuery(SETTINGS) if (data) { ({ settings } = data) } return (

settings

{ await setSettings({ variables: { tipDefault: Number(tipDefault), ...values } }) setSuccess('settings saved') }} > {success && setSuccess(undefined)} dismissible>{success}} sats} /> do it
auth methods
{methods.lightning ? { await unlink('lightning') } } /> : ( }>
)} { if (methods.twitter) { await unlink('twitter') } else { signIn('twitter') } } } /> { if (methods.github) { await unlink('github') } else { signIn('github') } } } /> {methods.email ? (
) :
} ) } export const EmailSchema = Yup.object({ email: Yup.string().email('email is no good').required('required') }) export function EmailLinkForm ({ callbackUrl }) { const [linkUnverifiedEmail] = useMutation( gql` mutation linkUnverifiedEmail($email: String!) { linkUnverifiedEmail(email: $email) }` ) return (
{ // add email to user's account // then call signIn const { data } = await linkUnverifiedEmail({ variables: { email } }) if (data.linkUnverifiedEmail) { signIn('email', { email, callbackUrl }) } }} >
Link Email
) }